[AArch64][SVE] Fix crash with icmp+select
authorCaroline Concatto <caroline.concatto@arm.com>
Mon, 12 Apr 2021 10:22:53 +0000 (11:22 +0100)
committerCaroline Concatto <caroline.concatto@arm.com>
Wed, 21 Apr 2021 13:16:27 +0000 (14:16 +0100)
commitca9b7e2e2f0897dade16d785dafadbf75deaf405
tree0f416acdb3e3c8b6fffc44cdd908d590ba8905b1
parent70ab76a81b982354fea7f0cee85f7001ad30b2e6
[AArch64][SVE] Fix crash with icmp+select

This patch changes the lowering of SELECT_CC from Legal to Expand for scalable
vector and adds support for scalable vectors in performSelectCombine.

When selecting the nodes to lower in visitSELECT it checks if it is possible to
use SELECT_CC in cases where SETCC is followed by SELECT. visistSELECT checks
if SELECT_CC is legal or custom to replace SELECT by SELECT_CC.
SELECT_CC used to be legal for scalable vector, so the node changes to
SELECT_CC. This used to crash the compiler as there is no support for SELECT_CC
with scalable vectors. So now the compiler lowers to VSELECT instead of
SELECT_CC.

Differential Revision: https://reviews.llvm.org/D100485
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/lib/Target/AArch64/SVEInstrFormats.td
llvm/test/CodeGen/AArch64/sve-select.ll