@@ -226,6 +226,15 @@ static void generateOpBuilderDeclarations(irdl::detail::dictionary &dict,
226226 stream << llvm::formatv (
227227 R"( static void build(::mlir::OpBuilder &opBuilder, ::mlir::OperationState &opState, {0} {1} ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {{});)" ,
228228 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 " ;
229238 dict[" OP_BUILD_DECLS" ] = buildDecls;
230239}
231240
@@ -339,9 +348,25 @@ void {0}::build(::mlir::OpBuilder &opBuilder, ::mlir::OperationState &opState, {
339348{3}
340349{4}
341350}
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+ }
342363)" ,
343364 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 () ? " ," : " " ));
345370
346371 dict[" OP_BUILD_DEFS" ] = buildDefinition;
347372
0 commit comments