From 9d207a3899dbeb35d32c48aedeb6b6a950d9d326 Mon Sep 17 00:00:00 2001 From: Martin Erhart Date: Sat, 10 Aug 2024 16:10:36 +0100 Subject: [PATCH] [MooreToCore] Support AssignedVariableOp (#7500) --- lib/Conversion/MooreToCore/MooreToCore.cpp | 14 ++++++++++++++ test/Conversion/MooreToCore/basic.mlir | 3 +++ 2 files changed, 17 insertions(+) diff --git a/lib/Conversion/MooreToCore/MooreToCore.cpp b/lib/Conversion/MooreToCore/MooreToCore.cpp index 312688577046..12858f01d097 100644 --- a/lib/Conversion/MooreToCore/MooreToCore.cpp +++ b/lib/Conversion/MooreToCore/MooreToCore.cpp @@ -928,6 +928,19 @@ struct ReadOpConversion : public OpConversionPattern { } }; +struct AssignedVariableOpConversion + : public OpConversionPattern { + using OpConversionPattern::OpConversionPattern; + + LogicalResult + matchAndRewrite(AssignedVariableOp op, OpAdaptor adaptor, + ConversionPatternRewriter &rewriter) const override { + rewriter.replaceOpWithNewOp(op, adaptor.getInput(), + adaptor.getNameAttr()); + return success(); + } +}; + template struct AssignOpConversion : public OpConversionPattern { using OpConversionPattern::OpConversionPattern; @@ -1112,6 +1125,7 @@ static void populateOpConversion(RewritePatternSet &patterns, AssignOpConversion, AssignOpConversion, AssignOpConversion, + AssignedVariableOpConversion, // Patterns of branch operations. CondBranchOpConversion, BranchOpConversion, diff --git a/test/Conversion/MooreToCore/basic.mlir b/test/Conversion/MooreToCore/basic.mlir index 1ac9bfd3e1bf..af4b6b96628c 100644 --- a/test/Conversion/MooreToCore/basic.mlir +++ b/test/Conversion/MooreToCore/basic.mlir @@ -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