Skip to content

Commit 549bdfa

Browse files
author
git apple-llvm automerger
committed
Merge commit 'dd4466a285b5' from apple/main into swift/next
2 parents b12a64a + dd4466a commit 549bdfa

File tree

1 file changed

+55
-61
lines changed

1 file changed

+55
-61
lines changed

mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td

Lines changed: 55 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -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.
5848
def 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.
7561
def LLVM_TerminatorPassthroughOpBuilder :
@@ -89,12 +75,13 @@ class LLVM_TerminatorOp<string mnemonic, list<OpTrait> traits = []> :
8975
// Class for arithmetic binary operations.
9076
class 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
}
10087
class LLVM_IntArithmeticOp<string mnemonic, string builderFunc,
@@ -107,11 +94,12 @@ class LLVM_FloatArithmeticOp<string mnemonic, string builderFunc,
10794
// Class for arithmetic unary operations.
10895
class 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.
335319
class 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.
516503
def 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

819804
def 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
}
832819
def 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

Comments
 (0)