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 | ||
|---|---|---|
| 16 | Is it worth also adding a CHECK for the debug output showing extractvalue as a uniform instruction? | |
This doesn't appear to be used.