aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/kernel.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/core/kernel.cpp b/src/core/kernel.cpp
index e2133cf..92a0cca 100644
--- a/src/core/kernel.cpp
+++ b/src/core/kernel.cpp
@@ -723,16 +723,18 @@ boost::tuple<uint,uint,uint> Kernel::reqdWorkGroupSize(llvm::Module *module) con
if (node->getNumOperands() <= 1) return zeros;
- llvm::MDNode *meta = llvm::cast<llvm::MDNode>(node->getOperand(1));
- std::string meta_name = llvm::cast<MDString>(meta->getOperand(0))->getString().str();
- if ((meta->getNumOperands() == 4) && (meta_name == "reqd_work_group_size"))
- {
- // See comments in http://llvm.org/docs/doxygen/html/classllvm_1_1ConstantInt.html
- auto x = llvm::mdconst::dyn_extract<ConstantInt>(meta->getOperand(1))->getLimitedValue();
- auto y = llvm::mdconst::dyn_extract<ConstantInt>(meta->getOperand(2))->getLimitedValue();
- auto z = llvm::mdconst::dyn_extract<ConstantInt>(meta->getOperand(3))->getLimitedValue();
+ for (int i = 1, numOperands = node->getNumOperands(); i < numOperands; i++) {
+ llvm::MDNode *meta = llvm::cast<llvm::MDNode>(node->getOperand(i));
+ std::string meta_name = llvm::cast<MDString>(meta->getOperand(0))->getString().str();
+ if ((meta->getNumOperands() == 4) && (meta_name == "reqd_work_group_size"))
+ {
+ // See comments in http://llvm.org/docs/doxygen/html/classllvm_1_1ConstantInt.html
+ auto x = llvm::mdconst::dyn_extract<ConstantInt>(meta->getOperand(1))->getLimitedValue();
+ auto y = llvm::mdconst::dyn_extract<ConstantInt>(meta->getOperand(2))->getLimitedValue();
+ auto z = llvm::mdconst::dyn_extract<ConstantInt>(meta->getOperand(3))->getLimitedValue();
- return boost::tuple<uint,uint,uint> (x,y,z);
+ return boost::tuple<uint,uint,uint> (x,y,z);
+ }
}
return zeros;
}