[PATCH] D72509: [ARM][LowOverheadLoops] Allow all MVE instrs.
Sam Parker via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jan 14 01:51:28 PST 2020
samparker marked an inline comment as done.
samparker added inline comments.
================
Comment at: llvm/lib/Target/ARM/ARMLowOverheadLoops.cpp:525
+ if ((Flags & ARMII::DomainMask) != ARMII::DomainMVE)
+ return true;
+
----------------
dmgreen wrote:
> samparker wrote:
> > dmgreen wrote:
> > > What if we had something like a `VMOV s0 s1`. I know that's not anything to do with this patch, but is that outlawed anywhere at the moment?
> > It's not outlawed., why do we need to be concerned about it?
> If we did `VMOV s7, s0; VMOV s6, s1; VMOV s5, s2; VMOV s4, s3`, that would be a reverse shuffle of a i32 vector. I would presume that would be trouble for tail prediction as it can no longer really be sure about what lanes are and are not predicated.
The conversion has to be about predication conversion, just making sure that it is equivalent, so these shouldn't be a problem. What needs to happen though is checking for values live in and out.... and then checking whether these scalar regs are aliasing the Q regs. I'm currently working on this.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D72509/new/
https://reviews.llvm.org/D72509
More information about the llvm-commits
mailing list