@@ -45,49 +45,53 @@ static constexpr llvm::StringRef kGenericFree = "_mlir_memref_to_llvm_free";
45
45
static constexpr llvm::StringRef kMemRefCopy = " memrefCopy" ;
46
46
47
47
// / Generic print function lookupOrCreate helper.
48
- LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateFn (ModuleOp moduleOp, StringRef name,
48
+ LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateFn (Operation *moduleOp,
49
+ StringRef name,
49
50
ArrayRef<Type> paramTypes,
50
51
Type resultType, bool isVarArg) {
51
- auto func = moduleOp.lookupSymbol <LLVM::LLVMFuncOp>(name);
52
+ assert (moduleOp->hasTrait <OpTrait::SymbolTable>() &&
53
+ " expected SymbolTable operation" );
54
+ auto func = llvm::dyn_cast_or_null<LLVM::LLVMFuncOp>(
55
+ SymbolTable::lookupSymbolIn (moduleOp, name));
52
56
if (func)
53
57
return func;
54
- OpBuilder b (moduleOp. getBodyRegion ( ));
58
+ OpBuilder b (moduleOp-> getRegion ( 0 ));
55
59
return b.create <LLVM::LLVMFuncOp>(
56
60
moduleOp->getLoc (), name,
57
61
LLVM::LLVMFunctionType::get (resultType, paramTypes, isVarArg));
58
62
}
59
63
60
- LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintI64Fn (ModuleOp moduleOp) {
64
+ LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintI64Fn (Operation * moduleOp) {
61
65
return lookupOrCreateFn (moduleOp, kPrintI64 ,
62
66
IntegerType::get (moduleOp->getContext (), 64 ),
63
67
LLVM::LLVMVoidType::get (moduleOp->getContext ()));
64
68
}
65
69
66
- LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintU64Fn (ModuleOp moduleOp) {
70
+ LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintU64Fn (Operation * moduleOp) {
67
71
return lookupOrCreateFn (moduleOp, kPrintU64 ,
68
72
IntegerType::get (moduleOp->getContext (), 64 ),
69
73
LLVM::LLVMVoidType::get (moduleOp->getContext ()));
70
74
}
71
75
72
- LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintF16Fn (ModuleOp moduleOp) {
76
+ LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintF16Fn (Operation * moduleOp) {
73
77
return lookupOrCreateFn (moduleOp, kPrintF16 ,
74
78
IntegerType::get (moduleOp->getContext (), 16 ), // bits!
75
79
LLVM::LLVMVoidType::get (moduleOp->getContext ()));
76
80
}
77
81
78
- LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintBF16Fn (ModuleOp moduleOp) {
82
+ LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintBF16Fn (Operation * moduleOp) {
79
83
return lookupOrCreateFn (moduleOp, kPrintBF16 ,
80
84
IntegerType::get (moduleOp->getContext (), 16 ), // bits!
81
85
LLVM::LLVMVoidType::get (moduleOp->getContext ()));
82
86
}
83
87
84
- LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintF32Fn (ModuleOp moduleOp) {
88
+ LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintF32Fn (Operation * moduleOp) {
85
89
return lookupOrCreateFn (moduleOp, kPrintF32 ,
86
90
Float32Type::get (moduleOp->getContext ()),
87
91
LLVM::LLVMVoidType::get (moduleOp->getContext ()));
88
92
}
89
93
90
- LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintF64Fn (ModuleOp moduleOp) {
94
+ LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintF64Fn (Operation * moduleOp) {
91
95
return lookupOrCreateFn (moduleOp, kPrintF64 ,
92
96
Float64Type::get (moduleOp->getContext ()),
93
97
LLVM::LLVMVoidType::get (moduleOp->getContext ()));
@@ -103,72 +107,72 @@ static LLVM::LLVMPointerType getVoidPtr(MLIRContext *context) {
103
107
}
104
108
105
109
LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintStringFn (
106
- ModuleOp moduleOp, std::optional<StringRef> runtimeFunctionName) {
110
+ Operation * moduleOp, std::optional<StringRef> runtimeFunctionName) {
107
111
return lookupOrCreateFn (moduleOp, runtimeFunctionName.value_or (kPrintString ),
108
112
getCharPtr (moduleOp->getContext ()),
109
113
LLVM::LLVMVoidType::get (moduleOp->getContext ()));
110
114
}
111
115
112
- LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintOpenFn (ModuleOp moduleOp) {
116
+ LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintOpenFn (Operation * moduleOp) {
113
117
return lookupOrCreateFn (moduleOp, kPrintOpen , {},
114
118
LLVM::LLVMVoidType::get (moduleOp->getContext ()));
115
119
}
116
120
117
- LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintCloseFn (ModuleOp moduleOp) {
121
+ LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintCloseFn (Operation * moduleOp) {
118
122
return lookupOrCreateFn (moduleOp, kPrintClose , {},
119
123
LLVM::LLVMVoidType::get (moduleOp->getContext ()));
120
124
}
121
125
122
- LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintCommaFn (ModuleOp moduleOp) {
126
+ LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintCommaFn (Operation * moduleOp) {
123
127
return lookupOrCreateFn (moduleOp, kPrintComma , {},
124
128
LLVM::LLVMVoidType::get (moduleOp->getContext ()));
125
129
}
126
130
127
- LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintNewlineFn (ModuleOp moduleOp) {
131
+ LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintNewlineFn (Operation * moduleOp) {
128
132
return lookupOrCreateFn (moduleOp, kPrintNewline , {},
129
133
LLVM::LLVMVoidType::get (moduleOp->getContext ()));
130
134
}
131
135
132
- LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateMallocFn (ModuleOp moduleOp,
136
+ LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateMallocFn (Operation * moduleOp,
133
137
Type indexType) {
134
138
return LLVM::lookupOrCreateFn (moduleOp, kMalloc , indexType,
135
139
getVoidPtr (moduleOp->getContext ()));
136
140
}
137
141
138
- LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateAlignedAllocFn (ModuleOp moduleOp,
142
+ LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateAlignedAllocFn (Operation * moduleOp,
139
143
Type indexType) {
140
144
return LLVM::lookupOrCreateFn (moduleOp, kAlignedAlloc , {indexType, indexType},
141
145
getVoidPtr (moduleOp->getContext ()));
142
146
}
143
147
144
- LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateFreeFn (ModuleOp moduleOp) {
148
+ LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateFreeFn (Operation * moduleOp) {
145
149
return LLVM::lookupOrCreateFn (
146
150
moduleOp, kFree , getVoidPtr (moduleOp->getContext ()),
147
151
LLVM::LLVMVoidType::get (moduleOp->getContext ()));
148
152
}
149
153
150
- LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateGenericAllocFn (ModuleOp moduleOp,
154
+ LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateGenericAllocFn (Operation * moduleOp,
151
155
Type indexType) {
152
156
return LLVM::lookupOrCreateFn (moduleOp, kGenericAlloc , indexType,
153
157
getVoidPtr (moduleOp->getContext ()));
154
158
}
155
159
156
160
LLVM::LLVMFuncOp
157
- mlir::LLVM::lookupOrCreateGenericAlignedAllocFn (ModuleOp moduleOp,
161
+ mlir::LLVM::lookupOrCreateGenericAlignedAllocFn (Operation * moduleOp,
158
162
Type indexType) {
159
163
return LLVM::lookupOrCreateFn (moduleOp, kGenericAlignedAlloc ,
160
164
{indexType, indexType},
161
165
getVoidPtr (moduleOp->getContext ()));
162
166
}
163
167
164
- LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateGenericFreeFn (ModuleOp moduleOp) {
168
+ LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateGenericFreeFn (Operation * moduleOp) {
165
169
return LLVM::lookupOrCreateFn (
166
170
moduleOp, kGenericFree , getVoidPtr (moduleOp->getContext ()),
167
171
LLVM::LLVMVoidType::get (moduleOp->getContext ()));
168
172
}
169
173
170
174
LLVM::LLVMFuncOp
171
- mlir::LLVM::lookupOrCreateMemRefCopyFn (ModuleOp moduleOp, Type indexType,
175
+ mlir::LLVM::lookupOrCreateMemRefCopyFn (Operation * moduleOp, Type indexType,
172
176
Type unrankedDescriptorType) {
173
177
return LLVM::lookupOrCreateFn (
174
178
moduleOp, kMemRefCopy ,
0 commit comments