[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