[SystemZ] Eliminate the need to create a zero vector by reusing the VPERM mask.
authorJonas Paulsson <paulsson@linux.vnet.ibm.com>
Wed, 13 May 2020 12:19:08 +0000 (14:19 +0200)
committerJonas Paulsson <paulsson@linux.vnet.ibm.com>
Tue, 19 May 2020 07:37:19 +0000 (09:37 +0200)
commitb3bd0c37eced4d149b44eaa9a2700c073927b543
treebf9b3d0cc0d088f33db921bdb5e0c599918de71d
parent4c09289f635c4291c41fe4396afba4ba839d265b
[SystemZ] Eliminate the need to create a zero vector by reusing the VPERM mask.

Try to avoid creating VGBMs by reusing the permutation mask if it contains a
zero. If the first byte was into (any byte of) a zero vector, then the first
byte of the mask can become zero and reused by putting the mask also as the
first operand. If there instead was a first-byte use of the other source
operand, then that zero index can be reused if the mask is placed as the
second operand.

Review: Ulrich Weigand

Differential Revision: https://reviews.llvm.org/D79925
llvm/lib/Target/SystemZ/SystemZISelLowering.cpp
llvm/test/CodeGen/SystemZ/vec-perm-14.ll