@@ -87,21 +87,21 @@ class LLVM_TernarySameArgsIntrOpF<string func, list<Trait> traits = []> :
8787class LLVM_CountZerosIntrOp<string func, list<Trait> traits = []> :
8888 LLVM_OneResultIntrOp<func, [], [0],
8989 !listconcat([Pure, SameOperandsAndResultType], traits),
90- /*requiresFastmath=*/0,
90+ /*requiresFastmath=*/0, /*requiresArgAndResultAttrs=*/0,
9191 /*immArgPositions=*/[1], /*immArgAttrNames=*/["is_zero_poison"]> {
9292 let arguments = (ins LLVM_ScalarOrVectorOf<AnySignlessInteger>:$in,
9393 I1Attr:$is_zero_poison);
9494}
9595
9696def LLVM_AbsOp : LLVM_OneResultIntrOp<"abs", [], [0], [Pure],
97- /*requiresFastmath=*/0,
97+ /*requiresFastmath=*/0, /*requiresArgAndResultAttrs=*/0,
9898 /*immArgPositions=*/[1], /*immArgAttrNames=*/["is_int_min_poison"]> {
9999 let arguments = (ins LLVM_ScalarOrVectorOf<AnySignlessInteger>:$in,
100100 I1Attr:$is_int_min_poison);
101101}
102102
103103def LLVM_IsFPClass : LLVM_OneResultIntrOp<"is.fpclass", [], [0], [Pure],
104- /*requiresFastmath=*/0,
104+ /*requiresFastmath=*/0, /*requiresArgAndResultAttrs=*/0,
105105 /*immArgPositions=*/[1], /*immArgAttrNames=*/["bit"]> {
106106 let arguments = (ins LLVM_ScalarOrVectorOf<LLVM_AnyFloat>:$in, I32Attr:$bit);
107107}
@@ -360,8 +360,8 @@ def LLVM_LifetimeEndOp : LLVM_LifetimeBaseOp<"lifetime.end">;
360360
361361def LLVM_InvariantStartOp : LLVM_OneResultIntrOp<"invariant.start", [], [1],
362362 [DeclareOpInterfaceMethods<PromotableOpInterface>],
363- /*requiresFastmath=*/0, /*immArgPositions =*/[0] ,
364- /*immArgAttrNames=*/["size"]> {
363+ /*requiresFastmath=*/0, /*requiresArgAndResultAttrs =*/0 ,
364+ /*immArgPositions=*/[0], /* immArgAttrNames=*/["size"]> {
365365 let arguments = (ins I64Attr:$size, LLVM_AnyPointer:$ptr);
366366 let results = (outs LLVM_DefaultPointer:$res);
367367 let assemblyFormat = "$size `,` $ptr attr-dict `:` qualified(type($ptr))";
@@ -412,6 +412,7 @@ class LLVM_ConstrainedIntr<string mnem, int numArgs,
412412 !gt(hasRoundingMode, 0) : [DeclareOpInterfaceMethods<RoundingModeOpInterface>],
413413 true : []),
414414 /*requiresFastmath=*/0,
415+ /*requiresArgAndResultAttrs=*/0,
415416 /*immArgPositions=*/[],
416417 /*immArgAttrNames=*/[]> {
417418 dag regularArgs = !dag(ins, !listsplat(LLVM_Type, numArgs), !foreach(i, !range(numArgs), "arg_" #i));
@@ -589,7 +590,7 @@ def LLVM_ExpectOp
589590def LLVM_ExpectWithProbabilityOp
590591 : LLVM_OneResultIntrOp<"expect.with.probability", [], [0],
591592 [Pure, AllTypesMatch<["val", "expected", "res"]>],
592- /*requiresFastmath=*/0,
593+ /*requiresFastmath=*/0, /*requiresArgAndResultAttrs=*/0,
593594 /*immArgPositions=*/[2], /*immArgAttrNames=*/["prob"]> {
594595 let arguments = (ins AnySignlessInteger:$val,
595596 AnySignlessInteger:$expected,
@@ -825,7 +826,7 @@ class LLVM_VecReductionAccBase<string mnem, Type element>
825826 /*overloadedResults=*/[],
826827 /*overloadedOperands=*/[1],
827828 /*traits=*/[Pure, SameOperandsAndResultElementType],
828- /*equiresFastmath =*/1>,
829+ /*requiresFastmath =*/1>,
829830 Arguments<(ins element:$start_value,
830831 LLVM_VectorOf<element>:$input,
831832 DefaultValuedAttr<LLVM_FastmathFlagsAttr, "{}">:$fastmathFlags)>;
@@ -1069,14 +1070,36 @@ def LLVM_masked_scatter : LLVM_ZeroResultIntrOp<"masked.scatter"> {
10691070}
10701071
10711072/// Create a call to Masked Expand Load intrinsic.
1072- def LLVM_masked_expandload : LLVM_IntrOp<"masked.expandload", [0], [], [], 1> {
1073- let arguments = (ins LLVM_AnyPointer, LLVM_VectorOf<I1>, LLVM_AnyVector);
1073+ def LLVM_masked_expandload
1074+ : LLVM_OneResultIntrOp<"masked.expandload", [0], [],
1075+ /*traits=*/[], /*requiresFastMath=*/0, /*requiresArgAndResultAttrs=*/1,
1076+ /*immArgPositions=*/[], /*immArgAttrNames=*/[]> {
1077+ dag args = (ins LLVM_AnyPointer:$ptr,
1078+ LLVM_VectorOf<I1>:$mask,
1079+ LLVM_AnyVector:$passthru);
1080+
1081+ let arguments = !con(args, baseArgs);
1082+
1083+ let builders = [
1084+ OpBuilder<(ins "TypeRange":$resTy, "Value":$ptr, "Value":$mask, "Value":$passthru, CArg<"uint64_t", "1">:$align)>
1085+ ];
10741086}
10751087
10761088/// Create a call to Masked Compress Store intrinsic.
10771089def LLVM_masked_compressstore
1078- : LLVM_IntrOp<"masked.compressstore", [], [0], [], 0> {
1079- let arguments = (ins LLVM_AnyVector, LLVM_AnyPointer, LLVM_VectorOf<I1>);
1090+ : LLVM_ZeroResultIntrOp<"masked.compressstore", [0],
1091+ /*traits=*/[], /*requiresAccessGroup=*/0, /*requiresAliasAnalysis=*/0,
1092+ /*requiresArgAndResultAttrs=*/1, /*requiresOpBundles=*/0,
1093+ /*immArgPositions=*/[], /*immArgAttrNames=*/[]> {
1094+ dag args = (ins LLVM_AnyVector:$value,
1095+ LLVM_AnyPointer:$ptr,
1096+ LLVM_VectorOf<I1>:$mask);
1097+
1098+ let arguments = !con(args, baseArgs);
1099+
1100+ let builders = [
1101+ OpBuilder<(ins "Value":$value, "Value":$ptr, "Value":$mask, CArg<"uint64_t", "1">:$align)>
1102+ ];
10801103}
10811104
10821105//
@@ -1155,7 +1178,7 @@ def LLVM_vector_insert
11551178 PredOpTrait<"it is not inserting scalable into fixed-length vectors.",
11561179 CPred<"!isScalableVectorType($srcvec.getType()) || "
11571180 "isScalableVectorType($dstvec.getType())">>],
1158- /*requiresFastmath=*/0,
1181+ /*requiresFastmath=*/0, /*requiresArgAndResultAttrs=*/0,
11591182 /*immArgPositions=*/[2], /*immArgAttrNames=*/["pos"]> {
11601183 let arguments = (ins LLVM_AnyVector:$dstvec, LLVM_AnyVector:$srcvec,
11611184 I64Attr:$pos);
@@ -1189,7 +1212,7 @@ def LLVM_vector_extract
11891212 PredOpTrait<"it is not extracting scalable from fixed-length vectors.",
11901213 CPred<"!isScalableVectorType($res.getType()) || "
11911214 "isScalableVectorType($srcvec.getType())">>],
1192- /*requiresFastmath=*/0,
1215+ /*requiresFastmath=*/0, /*requiresArgAndResultAttrs=*/0,
11931216 /*immArgPositions=*/[1], /*immArgAttrNames=*/["pos"]> {
11941217 let arguments = (ins LLVM_AnyVector:$srcvec, I64Attr:$pos);
11951218 let results = (outs LLVM_AnyVector:$res);
0 commit comments