@@ -226,6 +226,15 @@ static void generateOpBuilderDeclarations(irdl::detail::dictionary &dict,
226
226
stream << llvm::formatv (
227
227
R"( static void build(::mlir::OpBuilder &opBuilder, ::mlir::OperationState &opState, {0} {1} ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {{});)" ,
228
228
resultParams, operandParams);
229
+ stream << " \n " ;
230
+ stream << llvm::formatv (
231
+ R"( static {0} create(::mlir::OpBuilder &opBuilder, ::mlir::Location location, {1} {2} ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {{});)" ,
232
+ opStrings.opCppName , resultParams, operandParams);
233
+ stream << " \n " ;
234
+ stream << llvm::formatv (
235
+ R"( static {0} create(::mlir::ImplicitLocOpBuilder &opBuilder, {1} {2} ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {{});)" ,
236
+ opStrings.opCppName , resultParams, operandParams);
237
+ stream << " \n " ;
229
238
dict[" OP_BUILD_DECLS" ] = buildDecls;
230
239
}
231
240
@@ -339,9 +348,25 @@ void {0}::build(::mlir::OpBuilder &opBuilder, ::mlir::OperationState &opState, {
339
348
{3}
340
349
{4}
341
350
}
351
+
352
+ {0} {0}::create(::mlir::OpBuilder &opBuilder, ::mlir::Location location, {1} {2} ::llvm::ArrayRef<::mlir::NamedAttribute> attributes) {{
353
+ ::mlir::OperationState __state__(location, getOperationName());
354
+ build(opBuilder, __state__, {5} {6} attributes);
355
+ auto __res__ = ::llvm::dyn_cast<{0}>(opBuilder.create(__state__));
356
+ assert(__res__ && "builder didn't return the right type");
357
+ return __res__;
358
+ }
359
+
360
+ {0} {0}::create(::mlir::ImplicitLocOpBuilder &opBuilder, {1} {2} ::llvm::ArrayRef<::mlir::NamedAttribute> attributes) {{
361
+ return create(opBuilder, opBuilder.getLoc(), {5} {6} attributes);
362
+ }
342
363
)" ,
343
364
opStrings.opCppName , std::move (resultTypes), std::move (operandTypes),
344
- std::move (operandAdder), std::move (resultAdder));
365
+ std::move (operandAdder), std::move (resultAdder),
366
+ llvm::join (opStrings.opResultNames , " ," ) +
367
+ (!opStrings.opResultNames .empty () ? " ," : " " ),
368
+ llvm::join (opStrings.opOperandNames , " ," ) +
369
+ (!opStrings.opOperandNames .empty () ? " ," : " " ));
345
370
346
371
dict[" OP_BUILD_DEFS" ] = buildDefinition;
347
372
0 commit comments