[PATCH] [ARM] Fix vector ule zero lowering
authorDavid Green <david.green@arm.com>
Wed, 2 Nov 2022 22:34:05 +0000 (22:34 +0000)
committerGianfranco Costamagna <locutusofborg@debian.org>
Sun, 20 Nov 2022 05:54:23 +0000 (05:54 +0000)
commit30ac41f1cd9646b20a9cca1b324b03fb1160867f
tree000e9da026cd18038622ceab749655b1b1443e4b
parent048cbd54cf531496a7409c2212b25150dcc50edc
[PATCH] [ARM] Fix vector ule zero lowering

The instruction icmp ule <4 x i32> %0, zeroinitializer will usually be
simplified to icmp eq <4 x i32> %0, zeroinitializer. It is not
guaranteed though, and the code for lowering vector compares could pick
the wrong form of the instruction if this happened. I've tried to make
the code more explicit about the supported conditions.

This fixes NEON being unable to select VCMPZ with HS conditions, and
fixes some incorrect MVE patterns.

Fixes #58514.

Differential Revision: https://reviews.llvm.org/D136447

Gbp-Pq: Name fix-mesa-build.patch
llvm/lib/Target/ARM/ARMISelLowering.cpp
llvm/test/CodeGen/ARM/vcmpz.ll
llvm/test/CodeGen/Thumb2/mve-pred-and.ll
llvm/test/CodeGen/Thumb2/mve-pred-or.ll
llvm/test/CodeGen/Thumb2/mve-pred-xor.ll
llvm/test/CodeGen/Thumb2/mve-vcmpz.ll