[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