Adding lowering support for bitreverse.
Previously, lowering bitreverse would expand it into a series of other instructions. This patch makes it so this produces a single rbit instruction instead.
| Paths 
 |  Differential  D102397  
[AArch64] Lower bitreverse in ISel ClosedPublic Authored by Rin on May 13 2021, 5:59 AM. 
Details 
 Summary Adding lowering support for bitreverse. Previously, lowering bitreverse would expand it into a series of other instructions. This patch makes it so this produces a single rbit instruction instead. 
Diff Detail 
 Event TimelineHerald added subscribers: dexonsmith, danielkiss, hiraditya, kristof.beyls.  ·  View Herald TranscriptMay 13 2021, 5:59 AM Herald added projects: Restricted Project, Restricted Project.  ·  View Herald TranscriptMay 13 2021, 5:59 AM Comment Actions Sounds good. 
 Comment Actions Thanks. LGTM 
 This revision is now accepted and ready to land.May 17 2021, 3:40 AM Closed by commit rG50511df32edf: [AArch64] Lower bitreverse in ISel (authored by Rin).  ·  Explain WhyMay 17 2021, 5:40 AM This revision was automatically updated to reflect the committed changes. 
Revision Contents 
 
 
Diff 345465 clang/lib/CodeGen/CGBuiltin.cpp
 
 clang/test/CodeGen/aarch64-neon-misc.c
 llvm/include/llvm/IR/IntrinsicsAArch64.td
 llvm/lib/IR/AutoUpgrade.cpp
 llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
 
 llvm/lib/Target/AArch64/AArch64InstrInfo.td
 
 llvm/test/CodeGen/AArch64/arm64-vbitwise.ll
 llvm/test/CodeGen/AArch64/bitreverse.llllvm/test/CodeGen/AArch64/neon_rbit.ll
 
 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Do we have a test for the autoupgrade, to show that @llvm.aarch64.neon.rbit turns into @llvm.bitreverse?