@@ -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}
@@ -176,7 +177,8 @@ class LLVM_MemcpyIntrOpBase<string name> :
176177 DeclareOpInterfaceMethods<DestructurableAccessorOpInterface>,
177178 DeclareOpInterfaceMethods<SafeMemorySlotAccessOpInterface>],
178179 /*requiresAccessGroup=*/1, /*requiresAliasAnalysis=*/1,
179- /*immArgPositions=*/[3], /*immArgAttrNames=*/["isVolatile"]> {
180+ /*requiresOpBundles=*/0, /*immArgPositions=*/[3],
181+ /*immArgAttrNames=*/["isVolatile"]> {
180182 dag args = (ins Arg<LLVM_AnyPointer,"",[MemWrite]>:$dst,
181183 Arg<LLVM_AnyPointer,"",[MemRead]>:$src,
182184 AnySignlessInteger:$len, I1Attr:$isVolatile);
@@ -206,7 +208,8 @@ def LLVM_MemcpyInlineOp :
206208 DeclareOpInterfaceMethods<DestructurableAccessorOpInterface>,
207209 DeclareOpInterfaceMethods<SafeMemorySlotAccessOpInterface>],
208210 /*requiresAccessGroup=*/1, /*requiresAliasAnalysis=*/1,
209- /*immArgPositions=*/[2, 3], /*immArgAttrNames=*/["len", "isVolatile"]> {
211+ /*requiresOpBundles=*/0, /*immArgPositions=*/[2, 3],
212+ /*immArgAttrNames=*/["len", "isVolatile"]> {
210213 dag args = (ins Arg<LLVM_AnyPointer,"",[MemWrite]>:$dst,
211214 Arg<LLVM_AnyPointer,"",[MemRead]>:$src,
212215 APIntAttr:$len, I1Attr:$isVolatile);
@@ -232,7 +235,8 @@ def LLVM_MemsetOp : LLVM_ZeroResultIntrOp<"memset", [0, 2],
232235 DeclareOpInterfaceMethods<DestructurableAccessorOpInterface>,
233236 DeclareOpInterfaceMethods<SafeMemorySlotAccessOpInterface>],
234237 /*requiresAccessGroup=*/1, /*requiresAliasAnalysis=*/1,
235- /*immArgPositions=*/[3], /*immArgAttrNames=*/["isVolatile"]> {
238+ /*requiresOpBundles=*/0, /*immArgPositions=*/[3],
239+ /*immArgAttrNames=*/["isVolatile"]> {
236240 dag args = (ins Arg<LLVM_AnyPointer,"",[MemWrite]>:$dst,
237241 I8:$val, AnySignlessInteger:$len, I1Attr:$isVolatile);
238242 // Append the alias attributes defined by LLVM_IntrOpBase.
@@ -286,7 +290,8 @@ def LLVM_NoAliasScopeDeclOp
286290class LLVM_LifetimeBaseOp<string opName> : LLVM_ZeroResultIntrOp<opName, [1],
287291 [DeclareOpInterfaceMethods<PromotableOpInterface>],
288292 /*requiresAccessGroup=*/0, /*requiresAliasAnalysis=*/0,
289- /*immArgPositions=*/[0], /*immArgAttrNames=*/["size"]> {
293+ /*requiresOpBundles=*/0, /*immArgPositions=*/[0],
294+ /*immArgAttrNames=*/["size"]> {
290295 let arguments = (ins I64Attr:$size, LLVM_AnyPointer:$ptr);
291296 let assemblyFormat = "$size `,` $ptr attr-dict `:` qualified(type($ptr))";
292297}
@@ -306,7 +311,8 @@ def LLVM_InvariantStartOp : LLVM_OneResultIntrOp<"invariant.start", [], [1],
306311def LLVM_InvariantEndOp : LLVM_ZeroResultIntrOp<"invariant.end", [2],
307312 [DeclareOpInterfaceMethods<PromotableOpInterface>],
308313 /*requiresAccessGroup=*/0, /*requiresAliasAnalysis=*/0,
309- /*immArgPositions=*/[1], /*immArgAttrNames=*/["size"]> {
314+ /*requiresOpBundles=*/0, /*immArgPositions=*/[1],
315+ /*immArgAttrNames=*/["size"]> {
310316 let arguments = (ins LLVM_DefaultPointer:$start,
311317 I64Attr:$size,
312318 LLVM_AnyPointer:$ptr);
@@ -368,7 +374,7 @@ class LLVM_ConstrainedIntr<string mnem, int numArgs,
368374 SmallVector<Value> mlirOperands;
369375 SmallVector<NamedAttribute> mlirAttrs;
370376 if (failed(moduleImport.convertIntrinsicArguments(
371- llvmOperands.take_front( }] # numArgs # [{),
377+ llvmOperands.take_front( }] # numArgs # [{), {}, false,
372378 {}, {}, mlirOperands, mlirAttrs))) {
373379 return failure();
374380 }
@@ -429,7 +435,26 @@ def LLVM_USHLSat : LLVM_BinarySameArgsIntrOpI<"ushl.sat">;
429435//
430436
431437def LLVM_AssumeOp
432- : LLVM_ZeroResultIntrOp<"assume", []>, Arguments<(ins I1:$cond)>;
438+ : LLVM_ZeroResultIntrOp<"assume", /*overloadedOperands=*/[], /*traits=*/[],
439+ /*requiresAccessGroup=*/0,
440+ /*requiresAliasAnalysis=*/0,
441+ /*requiresOpBundles=*/1> {
442+ dag args = (ins I1:$cond);
443+ let arguments = !con(args, opBundleArgs);
444+
445+ let assemblyFormat = [{
446+ $cond
447+ ( custom<OpBundles>($op_bundle_operands, type($op_bundle_operands),
448+ $op_bundle_tags)^ )?
449+ `:` type($cond) attr-dict
450+ }];
451+
452+ let builders = [
453+ OpBuilder<(ins "Value":$cond)>
454+ ];
455+
456+ let hasVerifier = 1;
457+ }
433458
434459def LLVM_SSACopyOp : LLVM_OneResultIntrOp<"ssa.copy", [], [0],
435460 [Pure, SameOperandsAndResultType]> {
@@ -992,7 +1017,8 @@ def LLVM_DebugTrap : LLVM_ZeroResultIntrOp<"debugtrap">;
9921017def LLVM_UBSanTrap : LLVM_ZeroResultIntrOp<"ubsantrap",
9931018 /*overloadedOperands=*/[], /*traits=*/[],
9941019 /*requiresAccessGroup=*/0, /*requiresAliasAnalysis=*/0,
995- /*immArgPositions=*/[0], /*immArgAttrNames=*/["failureKind"]> {
1020+ /*requiresOpBundles=*/0, /*immArgPositions=*/[0],
1021+ /*immArgAttrNames=*/["failureKind"]> {
9961022 let arguments = (ins I8Attr:$failureKind);
9971023}
9981024
0 commit comments