mirror of https://github.com/llvm/circt.git
[MooreToCore] Struct extract lowering support (#7475)
This commit is contained in:
parent
1c8abbced3
commit
2f869728d5
|
@ -288,6 +288,18 @@ struct DynExtractOpConversion : public OpConversionPattern<DynExtractOp> {
|
|||
}
|
||||
};
|
||||
|
||||
struct StructExtractOpConversion : public OpConversionPattern<StructExtractOp> {
|
||||
using OpConversionPattern::OpConversionPattern;
|
||||
|
||||
LogicalResult
|
||||
matchAndRewrite(StructExtractOp op, OpAdaptor adaptor,
|
||||
ConversionPatternRewriter &rewriter) const override {
|
||||
rewriter.replaceOpWithNewOp<hw::StructExtractOp>(
|
||||
op, adaptor.getInput(), adaptor.getFieldNameAttr());
|
||||
return success();
|
||||
}
|
||||
};
|
||||
|
||||
struct ReduceAndOpConversion : public OpConversionPattern<ReduceAndOp> {
|
||||
using OpConversionPattern::OpConversionPattern;
|
||||
LogicalResult
|
||||
|
@ -741,7 +753,7 @@ static void populateOpConversion(RewritePatternSet &patterns,
|
|||
// Patterns of miscellaneous operations.
|
||||
ConstantOpConv, ConcatOpConversion, ReplicateOpConversion,
|
||||
ExtractOpConversion, DynExtractOpConversion, ConversionOpConversion,
|
||||
ReadOpConversion, NamedConstantOpConv,
|
||||
ReadOpConversion, NamedConstantOpConv, StructExtractOpConversion,
|
||||
|
||||
// Patterns of unary operations.
|
||||
ReduceAndOpConversion, ReduceOrOpConversion, ReduceXorOpConversion,
|
||||
|
|
|
@ -311,3 +311,10 @@ moore.module @Variable() {
|
|||
// CHECK: hw.output
|
||||
moore.output
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @Struct
|
||||
func.func @Struct(%arg0: !moore.struct<{exp_bits: i32, man_bits: i32}>) -> !moore.i32 {
|
||||
// CHECK: hw.struct_extract %arg0["exp_bits"] : !hw.struct<exp_bits: i32, man_bits: i32>
|
||||
%0 = moore.struct_extract %arg0, "exp_bits" : !moore.struct<{exp_bits: i32, man_bits: i32}> -> i32
|
||||
return %0 : !moore.i32
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue