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
Event Timeline
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp | ||
---|---|---|
11933–11941 | 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 | ||
---|---|---|
11933–11941 | 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 | ||
---|---|---|
11933–11941 | Thanks! I don't see the smull_nonsplat in the diff though. |
llvm/test/CodeGen/AArch64/sinksplat.ll | ||
---|---|---|
333–334 | 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?