[LLVMdev] new IA64 backend

Andrew Lenharth alenhar2 at cs.uiuc.edu
Fri Mar 18 07:39:39 PST 2005


On Thu, 2005-03-17 at 23:31 -0600, Chris Lattner wrote:
> On Fri, 18 Mar 2005, Duraid Madina wrote:
> >>> 	- No instruction scheduling/bundling of any sort
> >> 
> >> So this one needs to be coordinated.  Next week, I might see about
> >> adding MachineInstruction support to the SelectionDAG so you can load up
> >> a DAG post-ISel and then spit it back out scheduled.
> >
> > That would be much appreciated, particularly if it means that we can have 
> > scheduled MachineInstructions living alongside DAGs in such a way that 
> > changing the DAG (adding/removing a couple of instructions, say) doesn't 
> > _necessarily_ require rescheduling the whole function. I'm thinking of a 
> > future JIT here, where it would be nice to be able to sprinkle/reap 
> > instrumentation code over functions at high speed.
> 
> To me, I think the correct approach is to look at instruction selection in 
> terms of dag rewriting, not the current pattern-matching-and-machineinstr- 
> emission process we have now.
> 
> In particular, I think the only real way to handle X86 register pressure 
> is to produce a dag labeled by X86 opcodes, then have a register pressure 
> aware emission process (like the Goodman and Hsu approach).  If the other 
> backends worked this way, they could naturally do DAG-based scheduling as 
> well.
> 
> I guess I don't really see the point of going:
> 
> DAG ----select---> MachineInstrs -> DAG ----schedule----> Machineinstrs
> 
> When this should work:
> 
> DAG ----select---> DAG ----schedule----> MachineInstrs
> 
> This was in my plan to implement, but unfortunately I won't have time to 
> play with this for a while. :(

Right, but once the MI are RAed, you want to be able to do a post-pass
scheduling also.  So you need to be able to take a MBB and produce a
DAG.  A scheduler obviously wouldn't care how it came about having a
DAG.  And it is easier to do the lift from a MBB to a DAG than to change
the entire ISelPattern process at the moment.  Baby steps.

Andrew




More information about the llvm-dev mailing list