[MooreToCore] Support AssignedVariableOp (#7500)

This commit is contained in:
Martin Erhart 2024-08-10 16:10:36 +01:00 committed by GitHub
parent 286e73e86c
commit 9d207a3899
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 17 additions and 0 deletions

View File

@ -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,

View File

@ -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