Meinersbur wrote: > I think there are two possible interpretations of `vectorize(disable) > vectorize_width(scalable)`, as follows: > > * It is equivalent to `vectorize(disable)` so vectorization is disabled, as > the document says: > > Pragmas setting transformation options imply the transformation is > enabled, as if it was enabled via the corresponding transformation pragma > (e.g. `vectorize(enable)`). If the transformation is disabled (e.g. > `vectorize(disable)`), that takes precedence over transformations option > pragmas implying that transformation..
This seems to be the more logical interpretation. Like `unroll(disable) unroll_count(5)` which wold also not unroll loops. > * Since `vectorize(disable)` is equivalent to `vectorize_width(1)`, it is > equivalent to `vectorize_width(1, scalable)` so that vectorization should be > performed [as previously > commented](https://github.com/llvm/llvm-project/pull/135163#discussion_r2037236948). That `llvm.loop.vectorize.width==1` disables vectorization is just a quirk of how the metadata evolved. It should not leak into the user-visible semantics. If you prefer, you can also clean up the metata and introduce a separate `llvm.loop.interleave.enable`. https://github.com/llvm/llvm-project/pull/135163 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits