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?