@masahi, about: 
 
> If possible, I think it is better not to introduce user facing changes, since 
> as far as an API is concerned, `s[C].vectorize(...)` is already vector-length 
> agnostic.

which I think is very closely related to an earlier inline comment:

> As I commented above, I'd like to continue using s[C].vectorize(...) and when 
> the feature is available, enable SVE by a target attribute. So I don't expect 
> any user facing work.

I think we do need a user-facing option to toggle fixed/scalable vectorisation. 
If the vectorisation strategy is selected based on an available target 
attribute, we loose control to choose fixed/scalable vectorisation. For 
architectures that do support scalable vectorisation, fixed width might still 
be preferable in some cases.

I think this is similar to Clang's loop pragmas. For example, the 
`vectorise_width` pragma has been extended with an optional second argument 
`fixed|scalable`:

`vectorize_width(_value_[, fixed|scalable]),`

see also the Clang docs 
[here](https://clang.llvm.org/docs/LanguageExtensions.html#extensions-for-loop-hint-optimizations).

So I see two approaches:
- we extend `s[C].vectorize(...)` to take an optional fixed/scalable boolean 
value, similar to Clang's loop pragma, which defaults to fixed if omitted, 
- or introduce `s[C].vectorize_scalable(...)` as proposed in this RFC.

I personally don't have any preference. But now I am wondering if extending 
`s[C].vectorize(...)`, the first option, would be better. What do you think?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/apache/tvm-rfcs/pull/18#issuecomment-910235468

Reply via email to