[llvm] [LV] -scalable-vectorization=preferred should not override UserVF=1 (PR #226948)
Gaƫtan Bossu via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 29 00:45:57 PDT 2026
================
@@ -132,8 +132,11 @@ LoopVectorizeHints::LoopVectorizeHints(const Loop *L,
// If the flag is set to force any use of scalable vectors, override the loop
// hints.
- if (ForceScalableVectorization.getValue() !=
- LoopVectorizeHints::SK_Unspecified)
+ // However: A preference must not turn a UserVF of 1, used by e.g.
+ // vectorize(disable) pragmas, into a vscale x 1 VF.
+ if (ForceScalableVectorization.getValue() != SK_Unspecified &&
+ (Width.Value != 1 ||
----------------
gbossu wrote:
Discussed offline, we think `-scalable-vectorization` should not override any user decision from pragmas. Regardless of the `-scalable-vectorization` flag:
- `#pragma clang loop vectorize_width(1,scalable)` means `VF = vscale x 1`
- `#pragma clang loop vectorize_width(4,fixed)` means `VF = 4`
- `#pragma clang loop vectorize(disable)` means `VF = 1`
However, for pragmas which leave "scalability" unspecified like `#pragma clang loop vectorize_width(4)`, then `-scalable-vectorization` can decide whether or not to force/prefer/disable a scalable VF.
https://github.com/llvm/llvm-project/pull/226948
More information about the llvm-commits
mailing list