mirror of https://github.com/llvm/circt.git
[MooreToCore] Support AssignedVariableOp (#7500)
This commit is contained in:
parent
286e73e86c
commit
9d207a3899
|
@ -928,6 +928,19 @@ struct ReadOpConversion : public OpConversionPattern<ReadOp> {
|
|||
}
|
||||
};
|
||||
|
||||
struct AssignedVariableOpConversion
|
||||
: public OpConversionPattern<AssignedVariableOp> {
|
||||
using OpConversionPattern::OpConversionPattern;
|
||||
|
||||
LogicalResult
|
||||
matchAndRewrite(AssignedVariableOp op, OpAdaptor adaptor,
|
||||
ConversionPatternRewriter &rewriter) const override {
|
||||
rewriter.replaceOpWithNewOp<hw::WireOp>(op, adaptor.getInput(),
|
||||
adaptor.getNameAttr());
|
||||
return success();
|
||||
}
|
||||
};
|
||||
|
||||
template <typename OpTy, unsigned DeltaTime, unsigned EpsilonTime>
|
||||
struct AssignOpConversion : public OpConversionPattern<OpTy> {
|
||||
using OpConversionPattern<OpTy>::OpConversionPattern;
|
||||
|
@ -1112,6 +1125,7 @@ static void populateOpConversion(RewritePatternSet &patterns,
|
|||
AssignOpConversion<ContinuousAssignOp, 0, 1>,
|
||||
AssignOpConversion<BlockingAssignOp, 0, 1>,
|
||||
AssignOpConversion<NonBlockingAssignOp, 1, 0>,
|
||||
AssignedVariableOpConversion,
|
||||
|
||||
// Patterns of branch operations.
|
||||
CondBranchOpConversion, BranchOpConversion,
|
||||
|
|
|
@ -57,6 +57,9 @@ func.func @Expressions(%arg0: !moore.i1, %arg1: !moore.l1, %arg2: !moore.i6, %ar
|
|||
moore.replicate %arg0 : i1 -> i2
|
||||
moore.replicate %arg1 : l1 -> l2
|
||||
|
||||
// CHECK-NEXT: %name = hw.wire %arg0 : i1
|
||||
%name = moore.assigned_variable %arg0 : !moore.i1
|
||||
|
||||
// CHECK-NEXT: %c12_i32 = hw.constant 12 : i32
|
||||
// CHECK-NEXT: %c3_i6 = hw.constant 3 : i6
|
||||
moore.constant 12 : !moore.i32
|
||||
|
|
Loading…
Reference in New Issue