[flang-commits] [flang] [mlir] [flang][mlir] Add support for implicit linearization in omp.simd (PR #150386)
via flang-commits
flang-commits at lists.llvm.org
Thu Dec 18 04:56:07 PST 2025
================
@@ -3025,9 +3025,36 @@ genStandaloneSimd(lower::AbstractConverter &converter, lower::SymMap &symTable,
simdArgs.priv.vars = simdClauseOps.privateVars;
simdArgs.reduction.syms = simdReductionSyms;
simdArgs.reduction.vars = simdClauseOps.reductionVars;
+
+ std::vector<mlir::Attribute> typeAttrs;
+ // If attributes from explicit `linear(...)` clause are present,
+ // carry them forward.
+ if (simdClauseOps.linearVarTypes && !simdClauseOps.linearVarTypes.empty())
+ typeAttrs.assign(simdClauseOps.linearVarTypes.begin(),
+ simdClauseOps.linearVarTypes.end());
+
+ for (auto [loopVar, loopStep] : llvm::zip(iv, loopNestClauseOps.loopSteps)) {
+ // TODO: Implicit linearization is skipped if iv is a pointer
----------------
NimishMishra wrote:
Currently, the docs note that "Linear clause is not supported" on SIMD. I think our current support of linear clause is matured (except for some corner cases of implicit linearization in loop variables when they have pointer/allocatable attributes). We can perhaps rephrase, but maybe it is prudent to tone down the current "Linear clause is not supported" documentation. What do you suggest?
https://github.com/llvm/llvm-project/pull/150386
More information about the flang-commits
mailing list