[Mlir-commits] [mlir] [mlir][LLVM] Add operand bundle support (PR #108933)
Markus Böck
llvmlistbot at llvm.org
Mon Sep 23 09:31:41 PDT 2024
================
@@ -102,6 +102,40 @@ getOverloadedDeclaration(CallIntrinsicOp op, llvm::Intrinsic::ID id,
return llvm::Intrinsic::getDeclaration(module, id, overloadedArgTysRef);
}
+static llvm::OperandBundleDef
+convertOperandBundle(OperandRange bundleOperands, StringRef bundleTag,
+ LLVM::ModuleTranslation &moduleTranslation) {
+ std::vector<llvm::Value *> operands;
+ operands.reserve(bundleOperands.size());
+ for (auto bundleArg : bundleOperands)
+ operands.push_back(moduleTranslation.lookupValue(bundleArg));
+ return llvm::OperandBundleDef(bundleTag.str(), std::move(operands));
+}
+
+static SmallVector<llvm::OperandBundleDef>
+convertOperandBundles(OperandRangeRange bundleOperands,
+ ArrayRef<std::string> bundleTags,
+ LLVM::ModuleTranslation &moduleTranslation) {
+ assert(bundleOperands.size() == bundleTags.size() &&
+ "operand bundles and tags do not match");
+
+ SmallVector<llvm::OperandBundleDef> bundles;
+ bundles.reserve(bundleOperands.size());
+
+ for (auto [operands, tag] : llvm::zip(bundleOperands, bundleTags))
+ bundles.push_back(convertOperandBundle(operands, tag, moduleTranslation));
+ return bundles;
+}
+
+static SmallVector<llvm::OperandBundleDef>
+convertOperandBundles(OperandRangeRange bundleOperands,
+ std::optional<ArrayRef<std::string>> bundleTags,
+ LLVM::ModuleTranslation &moduleTranslation) {
+ if (!bundleTags.has_value())
----------------
zero9178 wrote:
```suggestion
if (!bundleTags)
```
https://github.com/llvm/llvm-project/pull/108933
More information about the Mlir-commits
mailing list