[PATCH] D149842: Scalarizer: limit scalarization for small element types
Nicolai Hähnle via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri May 5 02:52:25 PDT 2023
nhaehnle marked 2 inline comments as done.
nhaehnle added inline comments.
================
Comment at: llvm/lib/Transforms/Scalar/Scalarizer.cpp:67-69
+ "scalarize-min-bits", cl::init(0), cl::Hidden,
+ cl::desc("Instruct the scalarizer pass to attempt to keep values of a "
+ "minimum number of bits"));
----------------
arsenm wrote:
> Should this go based on legal vector operations from TTI?
>
> Alternatively, would we just scalarize everything and then run SLPVectorizer?
I wouldn't want to rely on SLPVectorizer. Even assuming that it is able to undo all the scalarization (which would need to be investigated), I expect that it would increase compile-time cost.
As for TTI -- I'm not a fan of it in general. Going by legal instructions is tricky, because which legal instructions do you look at? And adding yet another hook isn't great. Also, the ScalarizerPass is not included in any default pass builder pipeline as far as I can see. We use it in LLPC, where we are well aware of the target and can just explicitly pass options to the pass constructor, and I assume all other users are analogous.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D149842/new/
https://reviews.llvm.org/D149842
More information about the llvm-commits
mailing list