samparker added inline comments.

================
Comment at: llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp:5606
+  // candidates.
+  auto CantGuaranteeValueAcrossCall = [&TRI](outliner::Candidate &C) {
+    // If the unsafe registers in this block are all dead, then we don't need
----------------
yroux wrote:
> samparker wrote:
> > yroux wrote:
> > > yroux wrote:
> > > > samparker wrote:
> > > > > Does this code work with the DSP instructions that read/write the Q 
> > > > > and GE flags? I have a nasty feeling that we don't model their 
> > > > > register usage.
> > > > Good question, I'll test that
> > > From what I saw in my testing of DSP instructions, these flags are 
> > > handled by CPSR usage, so this code seems good to me, do you have 
> > > something else in mind ?
> > Ah, good, then could you please add a couple of tests for those 
> > instructions? I think my last concern is back with low-overhead loops and 
> > tail-predication. I think we should explicitly avoid outlining any MVE 
> > instructions and, if this pass can, then also don't move pseudo 
> > instructions too.
> OK, do you know a pretty way to check if an instruction is a MVE one or a 
> pseudo ? If not I'll add a new helper isMVEOpcode...
Sure, for pseudos there's the MachineInstr isPseudo(). For MVE, it's encoded in 
the target flags:
```
const MCInstrDesc &MCID = MI.getDesc();
uint64_t Flags = MCID.TSFlags;
if ((Flags & ARMII::DomainMask) == ARMII::DomainMVE)
```


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D76066



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to