File tree Expand file tree Collapse file tree 2 files changed +26
-0
lines changed
lib/Dialect/FIRRTL/Transforms Expand file tree Collapse file tree 2 files changed +26
-0
lines changed Original file line number Diff line number Diff line change @@ -1743,6 +1743,18 @@ struct IntegerShlOpConversion
17431743 }
17441744};
17451745
1746+ struct StringConcatOpConversion
1747+ : public OpConversionPattern<firrtl::StringConcatOp> {
1748+ using OpConversionPattern::OpConversionPattern;
1749+
1750+ LogicalResult
1751+ matchAndRewrite (firrtl::StringConcatOp op, OpAdaptor adaptor,
1752+ ConversionPatternRewriter &rewriter) const override {
1753+ rewriter.replaceOpWithNewOp <om::StringConcatOp>(op, adaptor.getOperands ());
1754+ return success ();
1755+ }
1756+ };
1757+
17461758struct PathOpConversion : public OpConversionPattern <firrtl::PathOp> {
17471759
17481760 PathOpConversion (TypeConverter &typeConverter, MLIRContext *context,
@@ -2220,6 +2232,7 @@ static void populateRewritePatterns(
22202232 patterns.add <IntegerMulOpConversion>(converter, patterns.getContext ());
22212233 patterns.add <IntegerShrOpConversion>(converter, patterns.getContext ());
22222234 patterns.add <IntegerShlOpConversion>(converter, patterns.getContext ());
2235+ patterns.add <StringConcatOpConversion>(converter, patterns.getContext ());
22232236 patterns.add <UnrealizedConversionCastOpConversion>(converter,
22242237 patterns.getContext ());
22252238 patterns.add <UnknownValueOpConversion>(converter, patterns.getContext ());
Original file line number Diff line number Diff line change @@ -409,6 +409,19 @@ firrtl.circuit "IntegerArithmetic" {
409409 }
410410}
411411
412+ // CHECK-LABEL: firrtl.circuit "StringCat"
413+ firrtl.circuit " StringCat" {
414+ firrtl.module @StringCat () {}
415+
416+ // CHECK-LABEL: om.class @StringConcatClass
417+ firrtl.class @StringConcatClass (in %a: !firrtl.string , in %b: !firrtl.string , out %c: !firrtl.string ) {
418+ // CHECK: %[[CONCAT:.+]] = om.string.concat %a, %b : !om.string
419+ %0 = firrtl.string.concat %a , %b : !firrtl.string
420+ // CHECK: om.class.fields %[[CONCAT]]
421+ firrtl.propassign %c , %0 : !firrtl.string
422+ }
423+ }
424+
412425// CHECK-LABEL: firrtl.circuit "AltBasePath"
413426firrtl.circuit " AltBasePath" {
414427 // CHECK: hw.hierpath private [[FOO_NLA:@.+]] [@AltBasePath::[[FOO_SYM:@.+]]]
You can’t perform that action at this time.
0 commit comments