5
5
VAST_RELAX_WARNINGS
6
6
#include < mlir/Analysis/DataLayoutAnalysis.h>
7
7
#include < mlir/IR/PatternMatch.h>
8
- #include < mlir/Transforms/GreedyPatternRewriteDriver.h>
9
8
#include < mlir/Transforms/DialectConversion.h>
9
+ #include < mlir/Transforms/GreedyPatternRewriteDriver.h>
10
10
VAST_UNRELAX_WARNINGS
11
11
12
12
#include " PassesDetails.hpp"
@@ -15,67 +15,65 @@ VAST_UNRELAX_WARNINGS
15
15
#include " vast/Dialect/HighLevel/HighLevelUtils.hpp"
16
16
#include " vast/Dialect/LowLevel/LowLevelOps.hpp"
17
17
18
- #include " vast/Util/Symbols.hpp"
19
18
#include " vast/Util/DialectConversion.hpp"
19
+ #include " vast/Util/Symbols.hpp"
20
20
21
- namespace vast
22
- {
23
- namespace
24
- {
21
+ namespace vast {
22
+ namespace {
25
23
struct record_member_op : mlir::OpConversionPattern< hl::RecordMemberOp >
26
24
{
27
25
using op_t = hl::RecordMemberOp;
28
26
using base = mlir::OpConversionPattern< op_t >;
29
27
using base::base;
30
28
31
29
logical_result matchAndRewrite (
32
- op_t op, typename op_t ::Adaptor ops,
33
- conversion_rewriter &rewriter
30
+ op_t op, typename op_t ::Adaptor ops, conversion_rewriter &rewriter
34
31
) const override {
35
32
auto parent_type = ops.getRecord ().getType ();
36
33
37
34
auto mod = op->getParentOfType < vast_module >();
38
- if (!mod)
35
+ if (!mod) {
39
36
return mlir::failure ();
37
+ }
40
38
41
39
auto def = hl::definition_of (parent_type, mod);
42
- if (auto struct_decl = mlir::dyn_cast_or_null< hl::StructDeclOp >(*def))
40
+ if (auto struct_decl = mlir::dyn_cast_or_null< hl::StructDeclOp >(*def)) {
43
41
return lower (op, ops, rewriter, struct_decl);
44
- if (auto union_decl = mlir::dyn_cast_or_null< hl::UnionDeclOp >(*def))
42
+ }
43
+ if (auto union_decl = mlir::dyn_cast_or_null< hl::UnionDeclOp >(*def)) {
45
44
return lower (op, ops, rewriter, union_decl);
45
+ }
46
46
47
47
return mlir::failure ();
48
48
}
49
49
50
50
logical_result lower (
51
- op_t op, typename op_t ::Adaptor ops,
52
- conversion_rewriter &rewriter, hl::StructDeclOp struct_decl) const
53
- {
51
+ op_t op, typename op_t ::Adaptor ops, conversion_rewriter &rewriter,
52
+ hl::StructDeclOp struct_decl
53
+ ) const {
54
54
auto idx = hl::field_idx (op.getName (), struct_decl);
55
- if (!idx)
55
+ if (!idx) {
56
56
return mlir::failure ();
57
+ }
57
58
58
59
return replace (op, ops, rewriter, *idx);
59
60
}
60
61
61
62
logical_result lower (
62
- op_t op, typename op_t ::Adaptor ops,
63
- conversion_rewriter &rewriter, hl::UnionDeclOp union_decl
63
+ op_t op, typename op_t ::Adaptor ops, conversion_rewriter &rewriter,
64
+ hl::UnionDeclOp union_decl
64
65
) const {
65
66
// After lowered, union will only have one member.
66
67
return replace (op, ops, rewriter, 0 );
67
68
}
68
69
69
70
logical_result replace (
70
- op_t op, typename op_t ::Adaptor ops,
71
- conversion_rewriter &rewriter, auto idx
71
+ op_t op, typename op_t ::Adaptor ops, conversion_rewriter &rewriter, auto idx
72
72
) const {
73
73
auto gep = rewriter.create < ll::StructGEPOp >(
74
- op.getLoc (),
75
- op.getType (),
76
- ops.getRecord (),
77
- rewriter.getI32IntegerAttr (idx),
78
- op.getNameAttr ());
74
+ op.getLoc (), op.getType (), ops.getRecord (), rewriter.getI32IntegerAttr (idx),
75
+ op.getNameAttr ()
76
+ );
79
77
rewriter.replaceOp (op, gep);
80
78
return mlir::success ();
81
79
}
@@ -85,29 +83,25 @@ namespace vast
85
83
86
84
struct HLToLLGEPsPass : HLToLLGEPsBase< HLToLLGEPsPass >
87
85
{
88
- void runOnOperation () override
89
- {
90
- auto op = this ->getOperation ();
86
+ void runOnOperation () override {
87
+ auto op = this ->getOperation ();
91
88
auto &mctx = this ->getContext ();
92
89
93
- {
94
- mlir::ConversionTarget trg (mctx);
95
- trg.markUnknownOpDynamicallyLegal ( [](auto ) { return true ; } );
96
- trg.addIllegalOp < hl::RecordMemberOp >();
90
+ mlir::ConversionTarget trg (mctx);
91
+ trg.markUnknownOpDynamicallyLegal ([](auto ) { return true ; });
92
+ trg.addIllegalOp < hl::RecordMemberOp >();
97
93
98
- mlir::RewritePatternSet patterns (&mctx);
94
+ mlir::RewritePatternSet patterns (&mctx);
99
95
100
- patterns.add < record_member_op >(&mctx);
96
+ patterns.add < record_member_op >(&mctx);
101
97
102
- if (mlir::failed (mlir::applyPartialConversion (op, trg, std::move (patterns))))
103
- return signalPassFailure ();
98
+ if (mlir::failed (mlir::applyPartialConversion (op, trg, std::move (patterns)))) {
99
+ return signalPassFailure ();
104
100
}
105
101
}
106
102
};
107
103
} // namespace vast
108
104
109
-
110
- std::unique_ptr< mlir::Pass > vast::createHLToLLGEPsPass ()
111
- {
105
+ std::unique_ptr< mlir::Pass > vast::createHLToLLGEPsPass () {
112
106
return std::make_unique< vast::HLToLLGEPsPass >();
113
107
}
0 commit comments