[LLVMdev] new IA64 backend

Chris Lattner sabre at nondot.org
Thu Mar 17 21:31:09 PST 2005


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. :(

-Chris

-- 
http://nondot.org/sabre/
http://llvm.cs.uiuc.edu/




More information about the llvm-dev mailing list