[AArch64] Also combine vector selects fed by non-i1 SETCCs.
authorAhmed Bougacha <ahmed.bougacha@gmail.com>
Mon, 27 Apr 2015 21:43:12 +0000 (21:43 +0000)
committerAhmed Bougacha <ahmed.bougacha@gmail.com>
Mon, 27 Apr 2015 21:43:12 +0000 (21:43 +0000)
commitae618e78734595769a96598c95cf855e60675f5a
treeefaa9e0f431800dea1d6e9616b21df0e90a95118
parent8f16251a7add6ffd3efc81301c54915e10aac015
[AArch64] Also combine vector selects fed by non-i1 SETCCs.

After legalization, scalar SETCC has an i32 result type on AArch64.
The i1 requirement seems too conservative, replace it with an assert.

This also means that we now can run after legalization. That should also
be fine, since the ops legalizer runs again after each combine, and
all types created all have the same sizes as the (legal) inputs.

Exposed by r235917; while there, robustize its tests (bsl also uses the
register it defines).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235922 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/AArch64/AArch64ISelLowering.cpp
test/CodeGen/AArch64/arm64-neon-select_cc.ll
test/CodeGen/AArch64/arm64-neon-v1i1-setcc.ll