This teaches AArch64TargetLowering::shouldSinkOperands to sink splat shuffles to certain neon intrinsics, so that they can make use of the lane variants of the instructions that are available.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
| llvm/lib/Target/AArch64/AArch64ISelLowering.cpp | ||
|---|---|---|
| 11952–11960 | I don't know much about the sinking test coverage, but would a test for when Ops is empty here be beneficial? | |
| llvm/lib/Target/AArch64/AArch64ISelLowering.cpp | ||
|---|---|---|
| 11952–11960 | I think that would be a common case, but I'm not sure we have any specific tests for it. I've added a smull_nonsplat tests which should cover it, but won't show any codegen differences. | |
| llvm/lib/Target/AArch64/AArch64ISelLowering.cpp | ||
|---|---|---|
| 11952–11960 | Thanks! I don't see the smull_nonsplat in the diff though. | |
| llvm/test/CodeGen/AArch64/sinksplat.ll | ||
|---|---|---|
| 333 | It's here (granted not very obviously) - it didn't change because it won't be sunk if the shuffle is not a splat. | |
I don't know much about the sinking test coverage, but would a test for when Ops is empty here be beneficial?