[PATCH] D49671: [SchedModel] Propagate read advance cycles to implicit operands outside instruction descriptor
    Matthias Braun via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Fri Oct  5 15:00:17 PDT 2018
    
    
  
MatzeB accepted this revision.
MatzeB added a comment.
This revision is now accepted and ready to land.
Sorry for slow response. LGTM, some nitpicks below but feel free to fix testcases and nitpicks at your own discretion.
================
Comment at: lib/CodeGen/ScheduleDAGInstrs.cpp:240-241
+  const MCInstrDesc *DefMIDesc = &SU->getInstr()->getDesc();
+  bool DescriptorDef = (OperIdx < DefMIDesc->getNumOperands() ||
+                        DefMIDesc->hasImplicitDefOfPhysReg(MO.getReg()));
   for (MCRegAliasIterator Alias(MO.getReg(), TRI, true);
----------------
How about reversing the condition and calling this:
```
bool ImplicitPseudoDef = (OperIdx >= DefMIDesc->getNumOperands() &&
                          !DefMIDesc->hasImplicitDefOfPhysReg(MO.getReg()));
```
================
Comment at: lib/CodeGen/ScheduleDAGInstrs.cpp:267-269
+      bool DescriptorUse =
+          (!UseMIDesc || (UseOp < UseMIDesc->getNumOperands() ||
+                          UseMIDesc->hasImplicitUseOfPhysReg(*Alias)));
----------------
similar here:
```
bool ImplicitPseudoUse = UseMIDesc && UseOp >= UseMIDesc->getNumOperands() && !UseMIDesc->hasImplicitUseOfPhysReg(*Alias);
```
================
Comment at: test/CodeGen/SystemZ/misched-readadvances.mir:1
+# Check that the latency adjustment (ReadAdvance) for the MSY register operand
+# is also used on the extra operand for the full register added by RegAlloc.
----------------
If you have the time look at: https://llvm.org/docs/MIRLangRef.html#simplifying-mir-files
This smells like you can do things like dropping the IR part, not listing the successor blocks (at least for the blocks that don't use the jumptable)...
https://reviews.llvm.org/D49671
    
    
More information about the llvm-commits
mailing list