@@ -120,7 +120,8 @@ def LLVM_Log2Op : LLVM_UnaryIntrOpF<"log2">;
120120def LLVM_LogOp : LLVM_UnaryIntrOpF<"log">;
121121def LLVM_Prefetch : LLVM_ZeroResultIntrOp<"prefetch", [0],
122122 /*traits=*/[], /*requiresAccessGroup=*/0, /*requiresAliasAnalysis=*/0,
123- /*immArgPositions=*/[1, 2, 3], /*immArgAttrNames=*/["rw", "hint", "cache"]
123+ /*requiresOpBundles=*/0, /*immArgPositions=*/[1, 2, 3],
124+ /*immArgAttrNames=*/["rw", "hint", "cache"]
124125> {
125126 let arguments = (ins LLVM_AnyPointer:$addr, I32Attr:$rw, I32Attr:$hint, I32Attr:$cache);
126127}
@@ -173,7 +174,8 @@ class LLVM_MemcpyIntrOpBase<string name> :
173174 DeclareOpInterfaceMethods<DestructurableAccessorOpInterface>,
174175 DeclareOpInterfaceMethods<SafeMemorySlotAccessOpInterface>],
175176 /*requiresAccessGroup=*/1, /*requiresAliasAnalysis=*/1,
176- /*immArgPositions=*/[3], /*immArgAttrNames=*/["isVolatile"]> {
177+ /*requiresOpBundles=*/0, /*immArgPositions=*/[3],
178+ /*immArgAttrNames=*/["isVolatile"]> {
177179 dag args = (ins Arg<LLVM_AnyPointer,"",[MemWrite]>:$dst,
178180 Arg<LLVM_AnyPointer,"",[MemRead]>:$src,
179181 AnySignlessInteger:$len, I1Attr:$isVolatile);
@@ -203,7 +205,8 @@ def LLVM_MemcpyInlineOp :
203205 DeclareOpInterfaceMethods<DestructurableAccessorOpInterface>,
204206 DeclareOpInterfaceMethods<SafeMemorySlotAccessOpInterface>],
205207 /*requiresAccessGroup=*/1, /*requiresAliasAnalysis=*/1,
206- /*immArgPositions=*/[2, 3], /*immArgAttrNames=*/["len", "isVolatile"]> {
208+ /*requiresOpBundles=*/0, /*immArgPositions=*/[2, 3],
209+ /*immArgAttrNames=*/["len", "isVolatile"]> {
207210 dag args = (ins Arg<LLVM_AnyPointer,"",[MemWrite]>:$dst,
208211 Arg<LLVM_AnyPointer,"",[MemRead]>:$src,
209212 APIntAttr:$len, I1Attr:$isVolatile);
@@ -229,7 +232,8 @@ def LLVM_MemsetOp : LLVM_ZeroResultIntrOp<"memset", [0, 2],
229232 DeclareOpInterfaceMethods<DestructurableAccessorOpInterface>,
230233 DeclareOpInterfaceMethods<SafeMemorySlotAccessOpInterface>],
231234 /*requiresAccessGroup=*/1, /*requiresAliasAnalysis=*/1,
232- /*immArgPositions=*/[3], /*immArgAttrNames=*/["isVolatile"]> {
235+ /*requiresOpBundles=*/0, /*immArgPositions=*/[3],
236+ /*immArgAttrNames=*/["isVolatile"]> {
233237 dag args = (ins Arg<LLVM_AnyPointer,"",[MemWrite]>:$dst,
234238 I8:$val, AnySignlessInteger:$len, I1Attr:$isVolatile);
235239 // Append the alias attributes defined by LLVM_IntrOpBase.
@@ -283,7 +287,8 @@ def LLVM_NoAliasScopeDeclOp
283287class LLVM_LifetimeBaseOp<string opName> : LLVM_ZeroResultIntrOp<opName, [1],
284288 [DeclareOpInterfaceMethods<PromotableOpInterface>],
285289 /*requiresAccessGroup=*/0, /*requiresAliasAnalysis=*/0,
286- /*immArgPositions=*/[0], /*immArgAttrNames=*/["size"]> {
290+ /*requiresOpBundles=*/0, /*immArgPositions=*/[0],
291+ /*immArgAttrNames=*/["size"]> {
287292 let arguments = (ins I64Attr:$size, LLVM_AnyPointer:$ptr);
288293 let assemblyFormat = "$size `,` $ptr attr-dict `:` qualified(type($ptr))";
289294}
@@ -303,7 +308,8 @@ def LLVM_InvariantStartOp : LLVM_OneResultIntrOp<"invariant.start", [], [1],
303308def LLVM_InvariantEndOp : LLVM_ZeroResultIntrOp<"invariant.end", [2],
304309 [DeclareOpInterfaceMethods<PromotableOpInterface>],
305310 /*requiresAccessGroup=*/0, /*requiresAliasAnalysis=*/0,
306- /*immArgPositions=*/[1], /*immArgAttrNames=*/["size"]> {
311+ /*requiresOpBundles=*/0, /*immArgPositions=*/[1],
312+ /*immArgAttrNames=*/["size"]> {
307313 let arguments = (ins LLVM_DefaultPointer:$start,
308314 I64Attr:$size,
309315 LLVM_AnyPointer:$ptr);
@@ -365,7 +371,7 @@ class LLVM_ConstrainedIntr<string mnem, int numArgs,
365371 SmallVector<Value> mlirOperands;
366372 SmallVector<NamedAttribute> mlirAttrs;
367373 if (failed(moduleImport.convertIntrinsicArguments(
368- llvmOperands.take_front( }] # numArgs # [{),
374+ llvmOperands.take_front( }] # numArgs # [{), {}, false,
369375 {}, {}, mlirOperands, mlirAttrs))) {
370376 return failure();
371377 }
@@ -426,7 +432,26 @@ def LLVM_USHLSat : LLVM_BinarySameArgsIntrOpI<"ushl.sat">;
426432//
427433
428434def LLVM_AssumeOp
429- : LLVM_ZeroResultIntrOp<"assume", []>, Arguments<(ins I1:$cond)>;
435+ : LLVM_ZeroResultIntrOp<"assume", /*overloadedOperands=*/[], /*traits=*/[],
436+ /*requiresAccessGroup=*/0,
437+ /*requiresAliasAnalysis=*/0,
438+ /*requiresOpBundles=*/1> {
439+ dag args = (ins I1:$cond);
440+ let arguments = !con(args, opBundleArgs);
441+
442+ let assemblyFormat = [{
443+ $cond
444+ ( custom<OpBundles>($op_bundle_operands, type($op_bundle_operands),
445+ $op_bundle_tags)^ )?
446+ `:` type($cond) attr-dict
447+ }];
448+
449+ let builders = [
450+ OpBuilder<(ins "Value":$cond)>
451+ ];
452+
453+ let hasVerifier = 1;
454+ }
430455
431456def LLVM_SSACopyOp : LLVM_OneResultIntrOp<"ssa.copy", [], [0],
432457 [Pure, SameOperandsAndResultType]> {
@@ -989,7 +1014,8 @@ def LLVM_DebugTrap : LLVM_ZeroResultIntrOp<"debugtrap">;
9891014def LLVM_UBSanTrap : LLVM_ZeroResultIntrOp<"ubsantrap",
9901015 /*overloadedOperands=*/[], /*traits=*/[],
9911016 /*requiresAccessGroup=*/0, /*requiresAliasAnalysis=*/0,
992- /*immArgPositions=*/[0], /*immArgAttrNames=*/["failureKind"]> {
1017+ /*requiresOpBundles=*/0, /*immArgPositions=*/[0],
1018+ /*immArgAttrNames=*/["failureKind"]> {
9931019 let arguments = (ins I8Attr:$failureKind);
9941020}
9951021
0 commit comments