Add support for lowering select nodes with fixed SVE types.
Additionally, move the existing fixed vselect tests to *-vselect.ll.
Paths
| Differential D99418
[AArch64][SVE] Improve codegen for select nodes with fixed types ClosedPublic Authored by bsmith on Mar 26 2021, 8:01 AM.
Details Summary Add support for lowering select nodes with fixed SVE types. Additionally, move the existing fixed vselect tests to *-vselect.ll.
Diff Detail
Event Timeline
bsmith marked an inline comment as done. Comment Actions
This revision is now accepted and ready to land.Mar 30 2021, 7:04 AM
Closed by commit rG2f45e632c002: [AArch64][SVE] Improve codegen for select nodes with fixed types (authored by bsmith). · Explain WhyApr 1 2021, 8:00 AM This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 334113 llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/test/CodeGen/AArch64/sve-fixed-length-fp-select.ll
llvm/test/CodeGen/AArch64/sve-fixed-length-fp-vselect.ll
llvm/test/CodeGen/AArch64/sve-fixed-length-int-select.ll
llvm/test/CodeGen/AArch64/sve-fixed-length-int-vselect.ll
|
Is this safe? I know for larger than NEON vectors we'll truncate the mask and thus only care about the bottom bit, however, you're tests show that for NEON sized vectors bif is used and so every bit of the mask is meaningful. I believe this is because it expects the mask to be extended based on setBooleanVectorContents(ZeroOrNegativeOneBooleanContent). Which means a sign extend must be used here to maintain that requirement?