@@ -43,16 +43,6 @@ def LLVM_ZeroResultOpBuilder :
4343 }
4444 }]>;
4545
46- class LLVM_TwoBuilders<OpBuilderDAG b1, OpBuilderDAG b2> {
47- list<OpBuilderDAG> builders = [b1, b2];
48- }
49-
50- // Base class for LLVM operations with one result.
51- class LLVM_OneResultOp<string mnemonic, list<OpTrait> traits = []> :
52- LLVM_Op<mnemonic, traits>, Results<(outs LLVM_Type:$res)> {
53- let builders = [LLVM_OneResultOpBuilder];
54- }
55-
5646// Compatibility builder that takes an instance of wrapped llvm::VoidType
5747// to indicate no result.
5848def LLVM_VoidResultTypeOpBuilder :
@@ -66,10 +56,6 @@ def LLVM_VoidResultTypeOpBuilder :
6656 build($_builder, $_state, operands, attributes);
6757 }]>;
6858
69- // Base class for LLVM operations with zero results.
70- class LLVM_ZeroResultOp<string mnemonic, list<OpTrait> traits = []> :
71- LLVM_Op<mnemonic, traits>, Results<(outs)>,
72- LLVM_TwoBuilders<LLVM_VoidResultTypeOpBuilder, LLVM_ZeroResultOpBuilder>;
7359
7460// Opaque builder used for terminator operations that contain successors.
7561def LLVM_TerminatorPassthroughOpBuilder :
@@ -89,12 +75,13 @@ class LLVM_TerminatorOp<string mnemonic, list<OpTrait> traits = []> :
8975// Class for arithmetic binary operations.
9076class LLVM_ArithmeticOpBase<Type type, string mnemonic,
9177 string builderFunc, list<OpTrait> traits = []> :
92- LLVM_OneResultOp <mnemonic,
78+ LLVM_Op <mnemonic,
9379 !listconcat([NoSideEffect, SameOperandsAndResultType], traits)>,
9480 LLVM_Builder<"$res = builder." # builderFunc # "($lhs, $rhs);"> {
9581 let arguments = (ins LLVM_ScalarOrVectorOf<type>:$lhs,
9682 LLVM_ScalarOrVectorOf<type>:$rhs);
9783 let results = (outs LLVM_ScalarOrVectorOf<type>:$res);
84+ let builders = [LLVM_OneResultOpBuilder];
9885 let assemblyFormat = "$lhs `,` $rhs attr-dict `:` type($res)";
9986}
10087class LLVM_IntArithmeticOp<string mnemonic, string builderFunc,
@@ -107,11 +94,12 @@ class LLVM_FloatArithmeticOp<string mnemonic, string builderFunc,
10794// Class for arithmetic unary operations.
10895class LLVM_UnaryArithmeticOp<Type type, string mnemonic,
10996 string builderFunc, list<OpTrait> traits = []> :
110- LLVM_OneResultOp <mnemonic,
97+ LLVM_Op <mnemonic,
11198 !listconcat([NoSideEffect, SameOperandsAndResultType], traits)>,
11299 LLVM_Builder<"$res = builder." # builderFunc # "($operand);"> {
113100 let arguments = (ins type:$operand);
114101 let results = (outs type:$res);
102+ let builders = [LLVM_OneResultOpBuilder];
115103 let assemblyFormat = "$operand attr-dict `:` type($res)";
116104}
117105
@@ -151,7 +139,7 @@ def ICmpPredicate : I64EnumAttr<
151139}
152140
153141// Other integer operations.
154- def LLVM_ICmpOp : LLVM_OneResultOp <"icmp", [NoSideEffect]> {
142+ def LLVM_ICmpOp : LLVM_Op <"icmp", [NoSideEffect]> {
155143 let arguments = (ins ICmpPredicate:$predicate,
156144 LLVM_ScalarOrVectorOf<LLVM_AnyInteger>:$lhs,
157145 LLVM_ScalarOrVectorOf<LLVM_AnyInteger>:$rhs);
@@ -199,7 +187,7 @@ def FCmpPredicate : I64EnumAttr<
199187}
200188
201189// Other integer operations.
202- def LLVM_FCmpOp : LLVM_OneResultOp <"fcmp", [NoSideEffect]> {
190+ def LLVM_FCmpOp : LLVM_Op <"fcmp", [NoSideEffect]> {
203191 let arguments = (ins FCmpPredicate:$predicate,
204192 LLVM_ScalarOrVectorOf<LLVM_AnyFloat>:$lhs,
205193 LLVM_ScalarOrVectorOf<LLVM_AnyFloat>:$rhs);
@@ -252,9 +240,7 @@ class MemoryOpWithAlignmentAndAttributes : MemoryOpWithAlignmentBase {
252240}
253241
254242// Memory-related operations.
255- def LLVM_AllocaOp :
256- MemoryOpWithAlignmentBase,
257- LLVM_OneResultOp<"alloca"> {
243+ def LLVM_AllocaOp : LLVM_Op<"alloca">, MemoryOpWithAlignmentBase {
258244 let arguments = (ins LLVM_AnyInteger:$arraySize,
259245 OptionalAttr<I64Attr>:$alignment);
260246 let results = (outs LLVM_AnyPointer:$res);
@@ -277,19 +263,18 @@ def LLVM_AllocaOp :
277263 let printer = [{ printAllocaOp(p, *this); }];
278264}
279265
280- def LLVM_GEPOp : LLVM_OneResultOp <"getelementptr", [NoSideEffect]>,
266+ def LLVM_GEPOp : LLVM_Op <"getelementptr", [NoSideEffect]>,
281267 LLVM_Builder<"$res = builder.CreateGEP($base, $indices);"> {
282268 let arguments = (ins LLVM_ScalarOrVectorOf<LLVM_AnyPointer>:$base,
283269 Variadic<LLVM_ScalarOrVectorOf<LLVM_AnyInteger>>:$indices);
284270 let results = (outs LLVM_ScalarOrVectorOf<LLVM_AnyPointer>:$res);
271+ let builders = [LLVM_OneResultOpBuilder];
285272 let assemblyFormat = [{
286273 $base `[` $indices `]` attr-dict `:` functional-type(operands, results)
287274 }];
288275}
289276
290- def LLVM_LoadOp :
291- MemoryOpWithAlignmentAndAttributes,
292- LLVM_OneResultOp<"load"> {
277+ def LLVM_LoadOp : LLVM_Op<"load">, MemoryOpWithAlignmentAndAttributes {
293278 let arguments = (ins LLVM_PointerTo<LLVM_LoadableType>:$addr,
294279 OptionalAttr<I64Attr>:$alignment, UnitAttr:$volatile_,
295280 UnitAttr:$nontemporal);
@@ -312,9 +297,8 @@ def LLVM_LoadOp :
312297 let parser = [{ return parseLoadOp(parser, result); }];
313298 let printer = [{ printLoadOp(p, *this); }];
314299}
315- def LLVM_StoreOp :
316- MemoryOpWithAlignmentAndAttributes,
317- LLVM_ZeroResultOp<"store"> {
300+
301+ def LLVM_StoreOp : LLVM_Op<"store">, MemoryOpWithAlignmentAndAttributes {
318302 let arguments = (ins LLVM_LoadableType:$value,
319303 LLVM_PointerTo<LLVM_LoadableType>:$addr,
320304 OptionalAttr<I64Attr>:$alignment, UnitAttr:$volatile_,
@@ -334,11 +318,11 @@ def LLVM_StoreOp :
334318// Casts.
335319class LLVM_CastOp<string mnemonic, string builderFunc, Type type,
336320 Type resultType, list<OpTrait> traits = []> :
337- LLVM_OneResultOp<mnemonic,
338- !listconcat([NoSideEffect], traits)>,
321+ LLVM_Op<mnemonic, !listconcat([NoSideEffect], traits)>,
339322 LLVM_Builder<"$res = builder." # builderFunc # "($arg, $_resultType);"> {
340323 let arguments = (ins type:$arg);
341324 let results = (outs resultType:$res);
325+ let builders = [LLVM_OneResultOpBuilder];
342326 let parser = [{ return mlir::impl::parseCastOp(parser, result); }];
343327 let printer = [{ mlir::impl::printCastOp(this->getOperation(), p); }];
344328}
@@ -413,9 +397,10 @@ def LLVM_InvokeOp : LLVM_Op<"invoke", [
413397 let printer = [{ printInvokeOp(p, *this); }];
414398}
415399
416- def LLVM_LandingpadOp : LLVM_OneResultOp <"landingpad"> {
400+ def LLVM_LandingpadOp : LLVM_Op <"landingpad"> {
417401 let arguments = (ins UnitAttr:$cleanup, Variadic<LLVM_Type>);
418402 let results = (outs LLVM_Type:$res);
403+ let builders = [LLVM_OneResultOpBuilder];
419404 let verifier = [{ return ::verify(*this); }];
420405 let parser = [{ return parseLandingpadOp(parser, result); }];
421406 let printer = [{ printLandingpadOp(p, *this); }];
@@ -440,7 +425,7 @@ def LLVM_CallOp : LLVM_Op<"call"> {
440425 let parser = [{ return parseCallOp(parser, result); }];
441426 let printer = [{ printCallOp(p, *this); }];
442427}
443- def LLVM_ExtractElementOp : LLVM_OneResultOp <"extractelement", [NoSideEffect]> {
428+ def LLVM_ExtractElementOp : LLVM_Op <"extractelement", [NoSideEffect]> {
444429 let arguments = (ins LLVM_AnyVector:$vector, LLVM_AnyInteger:$position);
445430 let results = (outs LLVM_Type:$res);
446431 string llvmBuilder = [{
@@ -452,26 +437,28 @@ def LLVM_ExtractElementOp : LLVM_OneResultOp<"extractelement", [NoSideEffect]> {
452437 let parser = [{ return parseExtractElementOp(parser, result); }];
453438 let printer = [{ printExtractElementOp(p, *this); }];
454439}
455- def LLVM_ExtractValueOp : LLVM_OneResultOp <"extractvalue", [NoSideEffect]> {
440+ def LLVM_ExtractValueOp : LLVM_Op <"extractvalue", [NoSideEffect]> {
456441 let arguments = (ins LLVM_AnyAggregate:$container, ArrayAttr:$position);
457442 let results = (outs LLVM_Type:$res);
458443 string llvmBuilder = [{
459444 $res = builder.CreateExtractValue($container, extractPosition($position));
460445 }];
446+ let builders = [LLVM_OneResultOpBuilder];
461447 let parser = [{ return parseExtractValueOp(parser, result); }];
462448 let printer = [{ printExtractValueOp(p, *this); }];
463449}
464- def LLVM_InsertElementOp : LLVM_OneResultOp <"insertelement", [NoSideEffect]> {
450+ def LLVM_InsertElementOp : LLVM_Op <"insertelement", [NoSideEffect]> {
465451 let arguments = (ins LLVM_AnyVector:$vector, LLVM_PrimitiveType:$value,
466452 LLVM_AnyInteger:$position);
467453 let results = (outs LLVM_AnyVector:$res);
468454 string llvmBuilder = [{
469455 $res = builder.CreateInsertElement($vector, $value, $position);
470456 }];
457+ let builders = [LLVM_OneResultOpBuilder];
471458 let parser = [{ return parseInsertElementOp(parser, result); }];
472459 let printer = [{ printInsertElementOp(p, *this); }];
473460}
474- def LLVM_InsertValueOp : LLVM_OneResultOp <"insertvalue", [NoSideEffect]> {
461+ def LLVM_InsertValueOp : LLVM_Op <"insertvalue", [NoSideEffect]> {
475462 let arguments = (ins LLVM_AnyAggregate:$container, LLVM_PrimitiveType:$value,
476463 ArrayAttr:$position);
477464 let results = (outs LLVM_AnyAggregate:$res);
@@ -487,7 +474,7 @@ def LLVM_InsertValueOp : LLVM_OneResultOp<"insertvalue", [NoSideEffect]> {
487474 let parser = [{ return parseInsertValueOp(parser, result); }];
488475 let printer = [{ printInsertValueOp(p, *this); }];
489476}
490- def LLVM_ShuffleVectorOp : LLVM_OneResultOp <"shufflevector", [NoSideEffect]> {
477+ def LLVM_ShuffleVectorOp : LLVM_Op <"shufflevector", [NoSideEffect]> {
491478 let arguments = (ins LLVM_AnyVector:$v1, LLVM_AnyVector:$v2, ArrayAttr:$mask);
492479 let results = (outs LLVM_AnyVector:$res);
493480 string llvmBuilder = [{
@@ -514,7 +501,7 @@ def LLVM_ShuffleVectorOp : LLVM_OneResultOp<"shufflevector", [NoSideEffect]> {
514501
515502// Misc operations.
516503def LLVM_SelectOp
517- : LLVM_OneResultOp <"select",
504+ : LLVM_Op <"select",
518505 [NoSideEffect, AllTypesMatch<["trueValue", "falseValue", "res"]>]>,
519506 LLVM_Builder<
520507 "$res = builder.CreateSelect($condition, $trueValue, $falseValue);"> {
@@ -528,9 +515,10 @@ def LLVM_SelectOp
528515 }]>];
529516 let assemblyFormat = "operands attr-dict `:` type($condition) `,` type($res)";
530517}
531- def LLVM_FreezeOp : LLVM_OneResultOp <"freeze", [SameOperandsAndResultType]> {
518+ def LLVM_FreezeOp : LLVM_Op <"freeze", [SameOperandsAndResultType]> {
532519 let arguments = (ins LLVM_Type:$val);
533520 let results = (outs LLVM_Type:$res);
521+ let builders = [LLVM_OneResultOpBuilder];
534522 let assemblyFormat = "$val attr-dict `:` type($val)";
535523 string llvmBuilder = "builder.CreateFreeze($val);";
536524}
@@ -662,7 +650,7 @@ def Linkage : LLVM_EnumAttr<
662650}
663651
664652
665- def LLVM_AddressOfOp : LLVM_OneResultOp <"mlir.addressof"> {
653+ def LLVM_AddressOfOp : LLVM_Op <"mlir.addressof"> {
666654 let arguments = (ins FlatSymbolRefAttr:$global_name);
667655 let results = (outs LLVM_Type:$res);
668656
@@ -701,10 +689,8 @@ def LLVM_AddressOfOp : LLVM_OneResultOp<"mlir.addressof"> {
701689 let verifier = "return ::verify(*this);";
702690}
703691
704- def LLVM_GlobalOp
705- : LLVM_ZeroResultOp<"mlir.global",
706- [IsolatedFromAbove,
707- SingleBlockImplicitTerminator<"ReturnOp">, Symbol]> {
692+ def LLVM_GlobalOp : LLVM_Op<"mlir.global",
693+ [IsolatedFromAbove, SingleBlockImplicitTerminator<"ReturnOp">, Symbol]> {
708694 let arguments = (ins
709695 TypeAttr:$type,
710696 UnitAttr:$constant,
@@ -764,9 +750,8 @@ def LLVM_GlobalOp
764750 let verifier = "return ::verify(*this);";
765751}
766752
767- def LLVM_LLVMFuncOp
768- : LLVM_ZeroResultOp<"func", [AutomaticAllocationScope, IsolatedFromAbove,
769- FunctionLike, Symbol]> {
753+ def LLVM_LLVMFuncOp : LLVM_Op<"func",
754+ [AutomaticAllocationScope, IsolatedFromAbove, FunctionLike, Symbol]> {
770755 let summary = "LLVM dialect function, has wrapped LLVM IR function type";
771756
772757 let arguments = (ins DefaultValuedAttr<Linkage, "Linkage::External">:$linkage,
@@ -817,24 +802,27 @@ def LLVM_LLVMFuncOp
817802}
818803
819804def LLVM_NullOp
820- : LLVM_OneResultOp <"mlir.null", [NoSideEffect]>,
805+ : LLVM_Op <"mlir.null", [NoSideEffect]>,
821806 LLVM_Builder<"$res = llvm::ConstantPointerNull::get("
822807 " cast<llvm::PointerType>($_resultType));"> {
823808 let results = (outs LLVM_AnyPointer:$res);
809+ let builders = [LLVM_OneResultOpBuilder];
824810 let assemblyFormat = "attr-dict `:` type($res)";
825811}
826812
827- def LLVM_UndefOp : LLVM_OneResultOp <"mlir.undef", [NoSideEffect]>,
813+ def LLVM_UndefOp : LLVM_Op <"mlir.undef", [NoSideEffect]>,
828814 LLVM_Builder<"$res = llvm::UndefValue::get($_resultType);"> {
829815 let results = (outs LLVM_Type:$res);
816+ let builders = [LLVM_OneResultOpBuilder];
830817 let assemblyFormat = "attr-dict `:` type($res)";
831818}
832819def LLVM_ConstantOp
833- : LLVM_OneResultOp <"mlir.constant", [NoSideEffect]>,
820+ : LLVM_Op <"mlir.constant", [NoSideEffect]>,
834821 LLVM_Builder<"$res = getLLVMConstant($_resultType, $value, $_location);">
835822{
836823 let arguments = (ins AnyAttr:$value);
837824 let results = (outs LLVM_Type:$res);
825+ let builders = [LLVM_OneResultOpBuilder];
838826 let assemblyFormat = "`(` $value `)` attr-dict `:` type($res)";
839827 let verifier = [{ return ::verify(*this); }];
840828}
@@ -973,11 +961,11 @@ def LLVM_vector_reduce_fmul : LLVM_VectorReductionAcc<"fmul">;
973961/// isVolatile - True if the load operation is marked as volatile.
974962/// columns - Number of columns in matrix (must be a constant)
975963/// stride - Space between columns
976- def LLVM_MatrixColumnMajorLoadOp
977- : LLVM_OneResultOp<"intr.matrix.column.major.load"> {
964+ def LLVM_MatrixColumnMajorLoadOp : LLVM_Op<"intr.matrix.column.major.load"> {
978965 let arguments = (ins LLVM_Type:$data, LLVM_Type:$stride, I1Attr:$isVolatile,
979966 I32Attr:$rows, I32Attr:$columns);
980967 let results = (outs LLVM_Type:$res);
968+ let builders = [LLVM_OneResultOpBuilder];
981969 string llvmBuilder = [{
982970 llvm::MatrixBuilder<decltype(builder)> mb(builder);
983971 const llvm::DataLayout &dl =
@@ -1000,10 +988,10 @@ def LLVM_MatrixColumnMajorLoadOp
1000988/// rows - Number of rows in matrix (must be a constant)
1001989/// columns - Number of columns in matrix (must be a constant)
1002990/// stride - Space between columns
1003- def LLVM_MatrixColumnMajorStoreOp
1004- : LLVM_ZeroResultOp<"intr.matrix.column.major.store"> {
991+ def LLVM_MatrixColumnMajorStoreOp : LLVM_Op<"intr.matrix.column.major.store"> {
1005992 let arguments = (ins LLVM_Type:$matrix, LLVM_Type:$data, LLVM_Type:$stride,
1006993 I1Attr:$isVolatile, I32Attr:$rows, I32Attr:$columns);
994+ let builders = [LLVM_VoidResultTypeOpBuilder, LLVM_ZeroResultOpBuilder];
1007995 string llvmBuilder = [{
1008996 llvm::MatrixBuilder<decltype(builder)> mb(builder);
1009997 const llvm::DataLayout &dl =
@@ -1020,11 +1008,11 @@ def LLVM_MatrixColumnMajorStoreOp
10201008
10211009/// Create a llvm.matrix.multiply call, multiplying 2-D matrices LHS and RHS, as
10221010/// specified in the LLVM MatrixBuilder.
1023- def LLVM_MatrixMultiplyOp
1024- : LLVM_OneResultOp<"intr.matrix.multiply"> {
1011+ def LLVM_MatrixMultiplyOp : LLVM_Op<"intr.matrix.multiply"> {
10251012 let arguments = (ins LLVM_Type:$lhs, LLVM_Type:$rhs, I32Attr:$lhs_rows,
10261013 I32Attr:$lhs_columns, I32Attr:$rhs_columns);
10271014 let results = (outs LLVM_Type:$res);
1015+ let builders = [LLVM_OneResultOpBuilder];
10281016 string llvmBuilder = [{
10291017 llvm::MatrixBuilder<decltype(builder)> mb(builder);
10301018 $res = mb.CreateMatrixMultiply(
@@ -1037,9 +1025,10 @@ def LLVM_MatrixMultiplyOp
10371025
10381026/// Create a llvm.matrix.transpose call, transposing a `rows` x `columns` 2-D
10391027/// `matrix`, as specified in the LLVM MatrixBuilder.
1040- def LLVM_MatrixTransposeOp : LLVM_OneResultOp <"intr.matrix.transpose"> {
1028+ def LLVM_MatrixTransposeOp : LLVM_Op <"intr.matrix.transpose"> {
10411029 let arguments = (ins LLVM_Type:$matrix, I32Attr:$rows, I32Attr:$columns);
10421030 let results = (outs LLVM_Type:$res);
1031+ let builders = [LLVM_OneResultOpBuilder];
10431032 string llvmBuilder = [{
10441033 llvm::MatrixBuilder<decltype(builder)> mb(builder);
10451034 $res = mb.CreateMatrixTranspose(
@@ -1061,10 +1050,11 @@ def LLVM_GetActiveLaneMaskOp
10611050}
10621051
10631052/// Create a call to Masked Load intrinsic.
1064- def LLVM_MaskedLoadOp : LLVM_OneResultOp <"intr.masked.load"> {
1053+ def LLVM_MaskedLoadOp : LLVM_Op <"intr.masked.load"> {
10651054 let arguments = (ins LLVM_Type:$data, LLVM_Type:$mask,
10661055 Variadic<LLVM_Type>:$pass_thru, I32Attr:$alignment);
10671056 let results = (outs LLVM_Type:$res);
1057+ let builders = [LLVM_OneResultOpBuilder];
10681058 string llvmBuilder = [{
10691059 $res = $pass_thru.empty() ? builder.CreateMaskedLoad(
10701060 $data, llvm::Align($alignment), $mask) :
@@ -1076,9 +1066,10 @@ def LLVM_MaskedLoadOp : LLVM_OneResultOp<"intr.masked.load"> {
10761066}
10771067
10781068/// Create a call to Masked Store intrinsic.
1079- def LLVM_MaskedStoreOp : LLVM_ZeroResultOp <"intr.masked.store"> {
1069+ def LLVM_MaskedStoreOp : LLVM_Op <"intr.masked.store"> {
10801070 let arguments = (ins LLVM_Type:$value, LLVM_Type:$data, LLVM_Type:$mask,
10811071 I32Attr:$alignment);
1072+ let builders = [LLVM_VoidResultTypeOpBuilder, LLVM_ZeroResultOpBuilder];
10821073 string llvmBuilder = [{
10831074 builder.CreateMaskedStore(
10841075 $value, $data, llvm::Align($alignment), $mask);
@@ -1088,10 +1079,11 @@ def LLVM_MaskedStoreOp : LLVM_ZeroResultOp<"intr.masked.store"> {
10881079}
10891080
10901081/// Create a call to Masked Gather intrinsic.
1091- def LLVM_masked_gather : LLVM_OneResultOp <"intr.masked.gather"> {
1082+ def LLVM_masked_gather : LLVM_Op <"intr.masked.gather"> {
10921083 let arguments = (ins LLVM_Type:$ptrs, LLVM_Type:$mask,
10931084 Variadic<LLVM_Type>:$pass_thru, I32Attr:$alignment);
10941085 let results = (outs LLVM_Type:$res);
1086+ let builders = [LLVM_OneResultOpBuilder];
10951087 string llvmBuilder = [{
10961088 $res = $pass_thru.empty() ? builder.CreateMaskedGather(
10971089 $ptrs, llvm::Align($alignment), $mask) :
@@ -1103,9 +1095,10 @@ def LLVM_masked_gather : LLVM_OneResultOp<"intr.masked.gather"> {
11031095}
11041096
11051097/// Create a call to Masked Scatter intrinsic.
1106- def LLVM_masked_scatter : LLVM_ZeroResultOp <"intr.masked.scatter"> {
1098+ def LLVM_masked_scatter : LLVM_Op <"intr.masked.scatter"> {
11071099 let arguments = (ins LLVM_Type:$value, LLVM_Type:$ptrs, LLVM_Type:$mask,
11081100 I32Attr:$alignment);
1101+ let builders = [LLVM_VoidResultTypeOpBuilder, LLVM_ZeroResultOpBuilder];
11091102 string llvmBuilder = [{
11101103 builder.CreateMaskedScatter(
11111104 $value, $ptrs, llvm::Align($alignment), $mask);
@@ -1223,8 +1216,9 @@ def LLVM_AssumeOp : LLVM_Op<"intr.assume", []> {
12231216 }];
12241217}
12251218
1226- def LLVM_FenceOp : LLVM_ZeroResultOp <"fence", [] > {
1219+ def LLVM_FenceOp : LLVM_Op <"fence"> {
12271220 let arguments = (ins AtomicOrdering:$ordering, StrAttr:$syncscope);
1221+ let builders = [LLVM_VoidResultTypeOpBuilder, LLVM_ZeroResultOpBuilder];
12281222 let llvmBuilder = [{
12291223 llvm::LLVMContext &llvmContext = builder.getContext();
12301224 builder.CreateFence(getLLVMAtomicOrdering($ordering),
0 commit comments