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

Reply via email to