[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