Skip to content

Commit e75ef0e

Browse files
committed
using namespace mlir in CombToSMT.cpp
1 parent 3b4189b commit e75ef0e

File tree

1 file changed

+50
-54
lines changed

1 file changed

+50
-54
lines changed

lib/Conversion/CombToSMT/CombToSMT.cpp

Lines changed: 50 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ namespace circt {
1919
#include "circt/Conversion/Passes.h.inc"
2020
} // namespace circt
2121

22+
using namespace mlir;
2223
using namespace circt;
2324
using namespace comb;
2425

@@ -34,8 +35,8 @@ struct CombReplicateOpConversion : OpConversionPattern<ReplicateOp> {
3435
LogicalResult
3536
matchAndRewrite(ReplicateOp op, OpAdaptor adaptor,
3637
ConversionPatternRewriter &rewriter) const override {
37-
rewriter.replaceOpWithNewOp<mlir::smt::RepeatOp>(op, op.getMultiple(),
38-
adaptor.getInput());
38+
rewriter.replaceOpWithNewOp<smt::RepeatOp>(op, op.getMultiple(),
39+
adaptor.getInput());
3940
return success();
4041
}
4142
};
@@ -56,49 +57,49 @@ struct IcmpOpConversion : OpConversionPattern<ICmpOp> {
5657
"comparison predicate not supported");
5758

5859
if (adaptor.getPredicate() == ICmpPredicate::eq) {
59-
rewriter.replaceOpWithNewOp<mlir::smt::EqOp>(op, adaptor.getLhs(),
60-
adaptor.getRhs());
60+
rewriter.replaceOpWithNewOp<smt::EqOp>(op, adaptor.getLhs(),
61+
adaptor.getRhs());
6162
return success();
6263
}
6364

6465
if (adaptor.getPredicate() == ICmpPredicate::ne) {
65-
rewriter.replaceOpWithNewOp<mlir::smt::DistinctOp>(op, adaptor.getLhs(),
66-
adaptor.getRhs());
66+
rewriter.replaceOpWithNewOp<smt::DistinctOp>(op, adaptor.getLhs(),
67+
adaptor.getRhs());
6768
return success();
6869
}
6970

70-
mlir::smt::BVCmpPredicate pred;
71+
smt::BVCmpPredicate pred;
7172
switch (adaptor.getPredicate()) {
7273
case ICmpPredicate::sge:
73-
pred = mlir::smt::BVCmpPredicate::sge;
74+
pred = smt::BVCmpPredicate::sge;
7475
break;
7576
case ICmpPredicate::sgt:
76-
pred = mlir::smt::BVCmpPredicate::sgt;
77+
pred = smt::BVCmpPredicate::sgt;
7778
break;
7879
case ICmpPredicate::sle:
79-
pred = mlir::smt::BVCmpPredicate::sle;
80+
pred = smt::BVCmpPredicate::sle;
8081
break;
8182
case ICmpPredicate::slt:
82-
pred = mlir::smt::BVCmpPredicate::slt;
83+
pred = smt::BVCmpPredicate::slt;
8384
break;
8485
case ICmpPredicate::uge:
85-
pred = mlir::smt::BVCmpPredicate::uge;
86+
pred = smt::BVCmpPredicate::uge;
8687
break;
8788
case ICmpPredicate::ugt:
88-
pred = mlir::smt::BVCmpPredicate::ugt;
89+
pred = smt::BVCmpPredicate::ugt;
8990
break;
9091
case ICmpPredicate::ule:
91-
pred = mlir::smt::BVCmpPredicate::ule;
92+
pred = smt::BVCmpPredicate::ule;
9293
break;
9394
case ICmpPredicate::ult:
94-
pred = mlir::smt::BVCmpPredicate::ult;
95+
pred = smt::BVCmpPredicate::ult;
9596
break;
9697
default:
9798
llvm_unreachable("all cases handled above");
9899
}
99100

100-
rewriter.replaceOpWithNewOp<mlir::smt::BVCmpOp>(op, pred, adaptor.getLhs(),
101-
adaptor.getRhs());
101+
rewriter.replaceOpWithNewOp<smt::BVCmpOp>(op, pred, adaptor.getLhs(),
102+
adaptor.getRhs());
102103
return success();
103104
}
104105
};
@@ -111,7 +112,7 @@ struct ExtractOpConversion : OpConversionPattern<ExtractOp> {
111112
matchAndRewrite(ExtractOp op, OpAdaptor adaptor,
112113
ConversionPatternRewriter &rewriter) const override {
113114

114-
rewriter.replaceOpWithNewOp<mlir::smt::ExtractOp>(
115+
rewriter.replaceOpWithNewOp<smt::ExtractOp>(
115116
op, typeConverter->convertType(op.getResult().getType()),
116117
adaptor.getLowBitAttr(), adaptor.getInput());
117118
return success();
@@ -126,9 +127,9 @@ struct MuxOpConversion : OpConversionPattern<MuxOp> {
126127
matchAndRewrite(MuxOp op, OpAdaptor adaptor,
127128
ConversionPatternRewriter &rewriter) const override {
128129
Value condition = typeConverter->materializeTargetConversion(
129-
rewriter, op.getLoc(), mlir::smt::BoolType::get(getContext()),
130+
rewriter, op.getLoc(), smt::BoolType::get(getContext()),
130131
adaptor.getCond());
131-
rewriter.replaceOpWithNewOp<mlir::smt::IteOp>(
132+
rewriter.replaceOpWithNewOp<smt::IteOp>(
132133
op, condition, adaptor.getTrueValue(), adaptor.getFalseValue());
133134
return success();
134135
}
@@ -141,10 +142,8 @@ struct SubOpConversion : OpConversionPattern<SubOp> {
141142
LogicalResult
142143
matchAndRewrite(SubOp op, OpAdaptor adaptor,
143144
ConversionPatternRewriter &rewriter) const override {
144-
Value negRhs =
145-
rewriter.create<mlir::smt::BVNegOp>(op.getLoc(), adaptor.getRhs());
146-
rewriter.replaceOpWithNewOp<mlir::smt::BVAddOp>(op, adaptor.getLhs(),
147-
negRhs);
145+
Value negRhs = rewriter.create<smt::BVNegOp>(op.getLoc(), adaptor.getRhs());
146+
rewriter.replaceOpWithNewOp<smt::BVAddOp>(op, adaptor.getLhs(), negRhs);
148147
return success();
149148
}
150149
};
@@ -158,17 +157,17 @@ struct ParityOpConversion : OpConversionPattern<ParityOp> {
158157
ConversionPatternRewriter &rewriter) const override {
159158
Location loc = op.getLoc();
160159
unsigned bitwidth =
161-
cast<mlir::smt::BitVectorType>(adaptor.getInput().getType()).getWidth();
160+
cast<smt::BitVectorType>(adaptor.getInput().getType()).getWidth();
162161

163162
// Note: the SMT bitvector type does not support 0 bitwidth vectors and thus
164163
// the type conversion should already fail.
165-
Type oneBitTy = mlir::smt::BitVectorType::get(getContext(), 1);
166-
Value runner = rewriter.create<mlir::smt::ExtractOp>(loc, oneBitTy, 0,
167-
adaptor.getInput());
164+
Type oneBitTy = smt::BitVectorType::get(getContext(), 1);
165+
Value runner =
166+
rewriter.create<smt::ExtractOp>(loc, oneBitTy, 0, adaptor.getInput());
168167
for (unsigned i = 1; i < bitwidth; ++i) {
169-
Value ext = rewriter.create<mlir::smt::ExtractOp>(loc, oneBitTy, i,
170-
adaptor.getInput());
171-
runner = rewriter.create<mlir::smt::BVXOrOp>(loc, runner, ext);
168+
Value ext =
169+
rewriter.create<smt::ExtractOp>(loc, oneBitTy, i, adaptor.getInput());
170+
runner = rewriter.create<smt::BVXOrOp>(loc, runner, ext);
172171
}
173172

174173
rewriter.replaceOp(op, runner);
@@ -206,22 +205,19 @@ struct DivisionOpConversion : OpConversionPattern<SourceOp> {
206205
matchAndRewrite(SourceOp op, OpAdaptor adaptor,
207206
ConversionPatternRewriter &rewriter) const override {
208207
Location loc = op.getLoc();
209-
auto type = dyn_cast<mlir::smt::BitVectorType>(adaptor.getRhs().getType());
208+
auto type = dyn_cast<smt::BitVectorType>(adaptor.getRhs().getType());
210209
if (!type)
211210
return failure();
212211

213212
auto resultType = OpConversionPattern<SourceOp>::typeConverter->convertType(
214213
op.getResult().getType());
215-
Value zero = rewriter.create<mlir::smt::BVConstantOp>(
216-
loc, APInt(type.getWidth(), 0));
217-
Value isZero =
218-
rewriter.create<mlir::smt::EqOp>(loc, adaptor.getRhs(), zero);
219-
Value symbolicVal =
220-
rewriter.create<mlir::smt::DeclareFunOp>(loc, resultType);
214+
Value zero =
215+
rewriter.create<smt::BVConstantOp>(loc, APInt(type.getWidth(), 0));
216+
Value isZero = rewriter.create<smt::EqOp>(loc, adaptor.getRhs(), zero);
217+
Value symbolicVal = rewriter.create<smt::DeclareFunOp>(loc, resultType);
221218
Value division =
222219
rewriter.create<TargetOp>(loc, resultType, adaptor.getOperands());
223-
rewriter.replaceOpWithNewOp<mlir::smt::IteOp>(op, isZero, symbolicVal,
224-
division);
220+
rewriter.replaceOpWithNewOp<smt::IteOp>(op, isZero, symbolicVal, division);
225221
return success();
226222
}
227223
};
@@ -267,19 +263,19 @@ void circt::populateCombToSMTConversionPatterns(TypeConverter &converter,
267263
RewritePatternSet &patterns) {
268264
patterns.add<CombReplicateOpConversion, IcmpOpConversion, ExtractOpConversion,
269265
SubOpConversion, MuxOpConversion, ParityOpConversion,
270-
OneToOneOpConversion<ShlOp, mlir::smt::BVShlOp>,
271-
OneToOneOpConversion<ShrUOp, mlir::smt::BVLShrOp>,
272-
OneToOneOpConversion<ShrSOp, mlir::smt::BVAShrOp>,
273-
DivisionOpConversion<DivSOp, mlir::smt::BVSDivOp>,
274-
DivisionOpConversion<DivUOp, mlir::smt::BVUDivOp>,
275-
DivisionOpConversion<ModSOp, mlir::smt::BVSRemOp>,
276-
DivisionOpConversion<ModUOp, mlir::smt::BVURemOp>,
277-
VariadicToBinaryOpConversion<ConcatOp, mlir::smt::ConcatOp>,
278-
VariadicToBinaryOpConversion<AddOp, mlir::smt::BVAddOp>,
279-
VariadicToBinaryOpConversion<MulOp, mlir::smt::BVMulOp>,
280-
VariadicToBinaryOpConversion<AndOp, mlir::smt::BVAndOp>,
281-
VariadicToBinaryOpConversion<OrOp, mlir::smt::BVOrOp>,
282-
VariadicToBinaryOpConversion<XorOp, mlir::smt::BVXOrOp>>(
266+
OneToOneOpConversion<ShlOp, smt::BVShlOp>,
267+
OneToOneOpConversion<ShrUOp, smt::BVLShrOp>,
268+
OneToOneOpConversion<ShrSOp, smt::BVAShrOp>,
269+
DivisionOpConversion<DivSOp, smt::BVSDivOp>,
270+
DivisionOpConversion<DivUOp, smt::BVUDivOp>,
271+
DivisionOpConversion<ModSOp, smt::BVSRemOp>,
272+
DivisionOpConversion<ModUOp, smt::BVURemOp>,
273+
VariadicToBinaryOpConversion<ConcatOp, smt::ConcatOp>,
274+
VariadicToBinaryOpConversion<AddOp, smt::BVAddOp>,
275+
VariadicToBinaryOpConversion<MulOp, smt::BVMulOp>,
276+
VariadicToBinaryOpConversion<AndOp, smt::BVAndOp>,
277+
VariadicToBinaryOpConversion<OrOp, smt::BVOrOp>,
278+
VariadicToBinaryOpConversion<XorOp, smt::BVXOrOp>>(
283279
converter, patterns.getContext());
284280

285281
// TODO: there are two unsupported operations in the comb dialect: 'parity'
@@ -289,7 +285,7 @@ void circt::populateCombToSMTConversionPatterns(TypeConverter &converter,
289285
void ConvertCombToSMTPass::runOnOperation() {
290286
ConversionTarget target(getContext());
291287
target.addIllegalDialect<comb::CombDialect>();
292-
target.addLegalDialect<mlir::smt::SMTDialect>();
288+
target.addLegalDialect<smt::SMTDialect>();
293289

294290
RewritePatternSet patterns(&getContext());
295291
TypeConverter converter;

0 commit comments

Comments
 (0)