Please sign in to comment.
[ARM] MVE integer compares and selects
This adds the very basics for MVE vector predication, adding integer VCMP and VSEL instruction support. This is done through predicate registers (MVT::v16i1, MVT::v8i1, MVT::v4i1), but otherwise using same mechanics as NEON to custom lower setcc's through ARMISD::VCXX nodes (VCEQ, VCGT, VCEQZ, etc). An extra VCNE was added, as this can be handled sensibly by MVE's expanded number of VCMP condition codes. (There are also VCLE and VCLT which are added later). VPSEL is also added here, simply selecting on the vselect. Original code by David Sherwood. Differential Revision: https://reviews.llvm.org/D65051 llvm-svn: 366885
- Loading branch information...
Showing with 1,058 additions and 40 deletions.
- +48 −5 llvm/lib/Target/ARM/ARMISelLowering.cpp
- +2 −0 llvm/lib/Target/ARM/ARMISelLowering.h
- +17 −0 llvm/lib/Target/ARM/ARMInstrInfo.td
- +43 −0 llvm/lib/Target/ARM/ARMInstrMVE.td
- +22 −35 llvm/lib/Target/ARM/ARMInstrNEON.td
- +449 −0 llvm/test/CodeGen/Thumb2/mve-vcmp.ll
- +424 −0 llvm/test/CodeGen/Thumb2/mve-vcmpz.ll
- +53 −0 llvm/test/CodeGen/Thumb2/mve-vpsel.ll
Oops, something went wrong.