[PATCH] D90935: [ARM][LowOverheadLoops] Merge VCMP and VPST across VPT blocks

Sam Tebbs via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 18 08:01:32 PST 2020


samtebbs added inline comments.


================
Comment at: llvm/lib/Target/ARM/ARMLowOverheadLoops.cpp:1621
+          assert(!IntermediateInstrsUseVPR && "Instructions between the VCMP and VPST are not expected to be predicated");
+          ReplaceVCMPWithVPT(VCMP, VPST);
+          LLVM_DEBUG(dbgs() << "ARM Loops: Removing VPST: " << *VPST);
----------------
dmgreen wrote:
> samtebbs wrote:
> > dmgreen wrote:
> > > Do we need to do the same thing to remove kill flags as D90964?
> > Hmm I'm not sure. From what I've seen of the pass' output. the kill flags are still valid when the instruction is removed.
> It would be something like:
>   VPST 4
>   VLDR $vpr
>   VCMP q0, q1, $vpr
>   VORR q2, killed q1, $noreg
>   VPST 8
>   VORR ... $vpr
> The unpredicated VORR kills the register that the VCMP will still use.
Oh I see. I thought that since the VCMP would use q1 on the next iteration it would still count as being alive.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D90935



More information about the llvm-commits mailing list