[PATCH] D87753: [ARM] Add more validForTailPredication

Sam Parker via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 17 23:35:24 PDT 2020


samparker added inline comments.


================
Comment at: llvm/lib/Target/ARM/ARMInstrVFP.td:2494
+ let Predicates = [HasV8_1MMainline, HasMVEInt],
+                   D=MVEDomain, validForTailPredication=1 in {
    // System level VPR/P0 -> GPR
----------------
dmgreen wrote:
> samparker wrote:
> > dmgreen wrote:
> > > Can you explain what ramifications making these validForTailPredication has? And why it helps to make these part of the MVEDomain? (The are really just VFP instructions. They are unpredictable for non-mve, but given the options I think I would move these and scalar shifts out of the MVE domain!)
> > > 
> > > They sound like they would need to be handled specially in the backend pass anyway, but that pass is a bit complex for me to follow at this point.
> > It makes checking for instructions easier, as we ignore any non-mve instructions as they shouldn't affect anything with tail predication. These load/store/move can have an affect because they access VPR/P0. All these require MVE so I'm not sure I understand why you'd prefer them out of the MVEDomain?
> It is useful to have a list of instructions that are all the beatwise MVE instructions. We use it for that (downstream) in scheduling, which will need an adjustment for this. We essentially get to choose what goes into the domain (as far as I understand), so treating it for just the set of instructions that work like MVE instructions sounds more useful to me.
> 
> The ARMLowOverheadLoops pass presumably has to look at VFP instructions anyway (and anything that could touch vfp regs).
This sounds fair enough, maybe MVEBeatDomain or something should be used for clarity. I can have a helper which looks for this domain and/or vpr operands. We don't explicitly track vfp regs, but they should be considered as use/defs of their q-reg. Are there are instructions that you are particularly concerned with?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D87753



More information about the llvm-commits mailing list