[AArch64][SVE] Put zeroing pseudos and patterns under flag.
authorSander de Smalen <sander.desmalen@arm.com>
Thu, 2 Jul 2020 13:14:24 +0000 (14:14 +0100)
committerSander de Smalen <sander.desmalen@arm.com>
Thu, 2 Jul 2020 13:24:33 +0000 (14:24 +0100)
commit075c440f7bc8f38b2e484a1f31c803f470dab7d4
treee682908b68348814e009c7997eb9b858e3d3fb86
parente4d178a752444453f0ab8d2b9085087208aa8296
[AArch64][SVE] Put zeroing pseudos and patterns under flag.

This patch puts the _ZERO pseudos and corresponding patterns
under the predicate 'UseExperimentalZeroingPseudos', so that they
can be enabled/disabled through compile flags.

This is done because the zeroing pseudos use MOVPRFX to do merging of
the inactive lanes, but it depends on the uarch whether this operation
is actually merged with the destructive operation. If not, it may be
more profitable to use a SELECT and to give the compiler the freedom to
schedule these instructions as normal, rather than keeping them bundled
together. Additionally, this feature is not yet fully implemented and
there are still known bugs (see D80410) that need to be resolved before
the 'experimental' can be dropped from the name.

Reviewers: paulwalker-arm, cameron.mcinally, efriedma

Reviewed By: paulwalker-arm

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D82780
llvm/lib/Target/AArch64/AArch64.td
llvm/lib/Target/AArch64/AArch64InstrInfo.td
llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
llvm/lib/Target/AArch64/AArch64Subtarget.h
llvm/lib/Target/AArch64/SVEInstrFormats.td
llvm/test/CodeGen/AArch64/sve-intrinsics-fp-arith-merging.ll
llvm/test/CodeGen/AArch64/sve-intrinsics-int-arith-merging.ll
llvm/test/CodeGen/AArch64/sve-intrinsics-shifts-merging.ll
llvm/test/CodeGen/AArch64/sve2-intrinsics-uniform-dsp-zeroing.ll