Since all operands to ExtractValue must be loop-invariant when we deem
the loop vectorizable, we can consider ExtractValue to be uniform.
Details
- Reviewers
fhahn david-arm dmgreen - Commits
- rG3e47f009ff2c: [LV] Consider ExtractValue as uniform.
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
llvm/lib/Transforms/Vectorize/LoopVectorize.cpp | ||
---|---|---|
4963 | This doesn't appear to be used. |
llvm/lib/Transforms/Vectorize/LoopVectorize.cpp | ||
---|---|---|
4966 | I think we can probably hoist this out of the for loop and just create it once. | |
llvm/test/Transforms/LoopVectorize/AArch64/extractvalue-no-scalarization-required.ll | ||
4 | Could you add at least one test for an interleave > 1 either here or in the SVE test, just to prove we've got the parts right? |
- Removed unused variable.
- Hoisted ExtractValue and Splat out of the loop.
- Updated test.
since it's operands must always be scalar or loop-invariant.
At the moment, it must always be loop-invariant, right? Because instructions with struct-typed return values are not supported. Can't we just mark it as uniform?
llvm/test/Transforms/LoopVectorize/AArch64/extractvalue-no-scalarization-required.ll | ||
---|---|---|
13 | Is it worth also adding a CHECK for the debug output showing extractvalue as a uniform instruction? |
This doesn't appear to be used.