Recommit "[AArch64] Select SMULL for zero extended vectors when top bit is zero"
authorZain Jaffal <z_jaffal@apple.com>
Thu, 8 Dec 2022 06:21:53 +0000 (08:21 +0200)
committerZain Jaffal <z_jaffal@apple.com>
Mon, 12 Dec 2022 14:45:54 +0000 (14:45 +0000)
commitebae917294e680132fe1a3bc586a332dd47de8d0
tree66e205005c8116ddc2ca26db3b894e0c5b7fa9f1
parentdfc8ab2e25dac2baddb36023991e6f88e12eb4bb
Recommit "[AArch64] Select SMULL for zero extended vectors when top bit is zero"

This is a recommit of f9e0390751cb5eefbbbc191f851c52422acacab1
The previous commit failed to handle cases where the zero extended operand is an extended `BUILD_VECTOR`.
We don't replace zext with a sext operand to select smull if any operand is `BUILD_VECTOR`

Original commit message:

we can safely replace a `zext` instruction with `sext` if the top bit is zero. This is useful because we can select `smull` when both operands are sign extended.

Reviewed By: fhahn, dmgreen

Differential Revision: https://reviews.llvm.org/D134711
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/test/CodeGen/AArch64/aarch64-smull.ll