[AArch64][SVE] Implement lowering for SIGN_EXTEND etc. of SVE predicates.
authorEli Friedman <efriedma@quicinc.com>
Thu, 30 Apr 2020 02:05:32 +0000 (19:05 -0700)
committerEli Friedman <efriedma@quicinc.com>
Thu, 7 May 2020 00:56:32 +0000 (17:56 -0700)
commit2c8546107a91a7b9a31791452712676937df54fe
tree5492975754efc09b7162cea79e920478532285be
parent01fc85dc9618394868b795c5087d9da03df9c58b
[AArch64][SVE] Implement lowering for SIGN_EXTEND etc. of SVE predicates.

Now using patterns, since there's a single-instruction lowering. (We
could convert to VSELECT and pattern-match that, but there doesn't seem
to be much point.)

I think this might be the first instruction to use nested multiclasses
this way? It seems like a good way to reduce duplication between
different integer widths. Let me know if it seems like an improvement.

Also, while I'm here, fix the return type of SETCC so we don't try to
merge a sign-extend with a SETCC.

Differential Revision: https://reviews.llvm.org/D79193
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/lib/Target/AArch64/SVEInstrFormats.td
llvm/test/CodeGen/AArch64/sve-fcmp.ll
llvm/test/CodeGen/AArch64/sve-sext-zext.ll [new file with mode: 0644]