[PATCH] D74147: [AArch64] Add BIT/BIF support.

Pavel Iliin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 12 04:23:26 PST 2020


ilinpv marked 2 inline comments as done.
ilinpv added inline comments.


================
Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:1346
   case AArch64ISD::BIT:               return "AArch64ISD::BIT";
+  case AArch64ISD::BIF:               return "AArch64ISD::BIF";
   case AArch64ISD::CBZ:               return "AArch64ISD::CBZ";
----------------
dmgreen wrote:
> Is this ever generated from anything?
> 
> AArch64ISD::BSL and AArch64ISD::BIT seem to be created from ISelLowering. Would it make sense to convert them to use BSLP as well? We could then presumably remove a lot of the explicit patterns for BSL, BIT and BIF.
It is not generated, just a manual target node name. BSL and BIF can be converted to use BSLP. However using BSLP for BIT in ISelLowering can lead to additional move generation on expansion, see vector-fcopysign as example.


================
Comment at: llvm/lib/Target/AArch64/AArch64InstrFormats.td:5213
+  : Pseudo<(outs regtype:$dst), (ins regtype:$Rd, regtype:$Rn, regtype:$Rm), pattern>,
+    Sched<[WriteV]>;
+
----------------
dmgreen wrote:
> We should make sure that the schedules have info on BSLP, if they previously had explicit info for BSP/BIT/BIF.
Schedules using explicit regex "^(BIF|BIT|BSL)". As I understand it schedules passes happen after pseudo expansion, so at schedule stage we have all BSLP expanded to BIF/BIT/BSL.



Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D74147/new/

https://reviews.llvm.org/D74147





More information about the llvm-commits mailing list