[AArch64] Sink to umull if we know tops bits are zero.
authorDavid Green <david.green@arm.com>
Mon, 16 Jan 2023 10:44:38 +0000 (10:44 +0000)
committerDavid Green <david.green@arm.com>
Mon, 16 Jan 2023 10:44:38 +0000 (10:44 +0000)
commit28de5f99bbe10d8982500abf5df24a80ab1bae79
tree39d63541a9bfbd25f88f9824d6420454103aba29
parent56ffd39c3da89dc94ed7d7122fe5765e09429289
[AArch64] Sink to umull if we know tops bits are zero.

This is an extension to the code for sinking splats to multiplies, where
if we can detect that the top bits are known-zero we can treat the
instruction like a zext. The existing code was also adjusted in the
process to make it more precise about only sinking if both operands are
zext or sext.

Differential Revision: https://reviews.llvm.org/D141275
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/test/CodeGen/AArch64/aarch64-matrix-umull-smull.ll
llvm/test/Transforms/CodeGenPrepare/AArch64/sink-free-instructions.ll