[llvm-branch-commits] [mlir] [OpenMP][MLIR] Add thread_limit mlir->llvm lowering (PR #179608)
Sergio Afonso via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Wed Apr 8 06:02:35 PDT 2026
================
@@ -6309,18 +6332,22 @@ initTargetRuntimeAttrs(llvm::IRBuilderBase &builder,
omp::LoopNestOp loopOp = castOrGetParentOfType<omp::LoopNestOp>(capturedOp);
unsigned numLoops = loopOp ? loopOp.getNumLoops() : 0;
- Value numTeamsLower, numTeamsUpper, teamsThreadLimit;
- llvm::SmallVector<Value> numThreadsVars;
+ Value numTeamsLower, numTeamsUpper;
+ llvm::SmallVector<Value> numThreadsVars, threadLimitVars;
llvm::SmallVector<Value> lowerBounds(numLoops), upperBounds(numLoops),
steps(numLoops);
extractHostEvalClauses(targetOp, numThreadsVars, numTeamsLower, numTeamsUpper,
- teamsThreadLimit, &lowerBounds, &upperBounds, &steps);
+ threadLimitVars, &lowerBounds, &upperBounds, &steps);
// TODO: Handle constant 'if' clauses.
+ // Resize to 3 dimensions to match TargetKernelDefaultAttrs
+ attrs.TargetThreadLimit.resize(3);
if (!targetOp.getThreadLimitVars().empty()) {
- Value targetThreadLimit = targetOp.getThreadLimit(0);
- attrs.TargetThreadLimit.front() =
- moduleTranslation.lookupValue(targetThreadLimit);
+ for (auto [i, limitVar] : llvm::enumerate(targetOp.getThreadLimitVars())) {
+ if (limitVar) {
+ attrs.TargetThreadLimit[i] = moduleTranslation.lookupValue(limitVar);
+ }
+ }
----------------
skatrak wrote:
Nit: I think something like this should help with readability here and for the TeamsThreadLimit case below.
```suggestion
llvm::transform(targetOp.getThreadLimitVars(), std::back_inserter(attrs.TargetThreadLimit), [](mlir::Value limitVar) { return limitVar ? moduleTranslation.lookupValue(limitVar) : nullptr; });
```
https://github.com/llvm/llvm-project/pull/179608
More information about the llvm-branch-commits
mailing list