@@ -293,7 +293,9 @@ class LLVM_IntrOpBase<Dialect dialect, string opName, string enumName,
293293 bit requiresAccessGroup = 0, bit requiresAliasAnalysis = 0,
294294 bit requiresFastmath = 0,
295295 list<int> immArgPositions = [],
296- list<string> immArgAttrNames = []>
296+ list<string> immArgAttrNames = [],
297+ string opBundleSizesAttrName = "",
298+ string opBundleTagsAttrName = "">
297299 : LLVM_OpBase<dialect, opName, !listconcat(
298300 !if(!gt(requiresAccessGroup, 0),
299301 [DeclareOpInterfaceMethods<AccessGroupOpInterface>], []),
@@ -319,11 +321,14 @@ class LLVM_IntrOpBase<Dialect dialect, string opName, string enumName,
319321 string immArgPositionsCpp = "{" # !interleave(immArgPositions, ", ") # "}";
320322 string immArgAttrNamesCpp = "{" # !interleave(!foreach(name, immArgAttrNames,
321323 "StringLiteral(\"" # name # "\")"), ", ") # "}";
324+ string opBundleSizesAttrNameCpp = "StringLiteral(\"" # opBundleSizesAttrName # "\")";
325+ string opBundleTagsAttrNameCpp = "StringLiteral(\"" # opBundleTagsAttrName # "\")";
322326 string baseLlvmBuilder = [{
323327 auto *inst = LLVM::detail::createIntrinsicCall(
324328 builder, moduleTranslation, &opInst, llvm::Intrinsic::}] # !interleave([
325329 enumName, "" # numResults, overloadedResultsCpp, overloadedOperandsCpp,
326- immArgPositionsCpp, immArgAttrNamesCpp], ",") # [{);
330+ immArgPositionsCpp, immArgAttrNamesCpp, opBundleSizesAttrNameCpp], ",")
331+ # ", " # opBundleTagsAttrNameCpp # [{);
327332 (void) inst;
328333 }];
329334 string baseLlvmBuilderCoda = !if(!gt(numResults, 0), "$res = inst;", "");
@@ -336,8 +341,11 @@ class LLVM_IntrOpBase<Dialect dialect, string opName, string enumName,
336341 SmallVector<NamedAttribute> mlirAttrs;
337342 if (failed(moduleImport.convertIntrinsicArguments(
338343 llvmOperands,
344+ opBundles,
339345 }] # immArgPositionsCpp # [{,
340346 }] # immArgAttrNamesCpp # [{,
347+ }] # opBundleSizesAttrNameCpp # [{,
348+ }] # opBundleTagsAttrNameCpp # [{,
341349 mlirOperands,
342350 mlirAttrs))
343351 ) {
@@ -382,11 +390,14 @@ class LLVM_IntrOp<string mnem, list<int> overloadedResults,
382390 int numResults, bit requiresAccessGroup = 0,
383391 bit requiresAliasAnalysis = 0, bit requiresFastmath = 0,
384392 list<int> immArgPositions = [],
385- list<string> immArgAttrNames = []>
393+ list<string> immArgAttrNames = [],
394+ string opBundleSizesAttrName = "",
395+ string opBundleTagsAttrName = "">
386396 : LLVM_IntrOpBase<LLVM_Dialect, "intr." # mnem, !subst(".", "_", mnem),
387397 overloadedResults, overloadedOperands, traits,
388398 numResults, requiresAccessGroup, requiresAliasAnalysis,
389- requiresFastmath, immArgPositions, immArgAttrNames>;
399+ requiresFastmath, immArgPositions, immArgAttrNames,
400+ opBundleSizesAttrName, opBundleTagsAttrName>;
390401
391402// Base class for LLVM intrinsic operations returning no results. Places the
392403// intrinsic into the LLVM dialect and prefixes its name with "intr.".
@@ -407,10 +418,13 @@ class LLVM_ZeroResultIntrOp<string mnem, list<int> overloadedOperands = [],
407418 bit requiresAccessGroup = 0,
408419 bit requiresAliasAnalysis = 0,
409420 list<int> immArgPositions = [],
410- list<string> immArgAttrNames = []>
421+ list<string> immArgAttrNames = [],
422+ string opBundleSizesAttrName = "",
423+ string opBundleTagsAttrName = "">
411424 : LLVM_IntrOp<mnem, [], overloadedOperands, traits, /*numResults=*/0,
412425 requiresAccessGroup, requiresAliasAnalysis,
413- /*requiresFastMath=*/0, immArgPositions, immArgAttrNames>;
426+ /*requiresFastMath=*/0, immArgPositions, immArgAttrNames,
427+ opBundleSizesAttrName, opBundleTagsAttrName>;
414428
415429// Base class for LLVM intrinsic operations returning one result. Places the
416430// intrinsic into the LLVM dialect and prefixes its name with "intr.". This is
0 commit comments