[LLVMdev] Re: dependence analyzer for machine code?

Chris Lattner sabre at nondot.org
Mon Sep 5 21:02:01 PDT 2005


On Tue, 6 Sep 2005, Tzu-Chien Chiu wrote:
> I was searching for the code could be factored out for a dependency
> analyzer. The one written by Tanya for SparcV9.
>
> The machine code dependency is necessary for some architecture which
> the (efficient) instruction scheduling could not be possible without
> the register allocation is done first. For example, the VLIW machines
> (most DSP's are). For an efficient instruction scheduling, the
> dependency information must be reconstructed after the register
> allocation, something like the DAG generated during the code selection
> phase (a graph-like data structure, with directed edges expliclitly
> representing the depedencies), and instructions without data
> dependency and structure hazard could be scheduled in a long
> instruction word which contains several instructions.

Ok, makes sense.

> The structure hazard is probably the reason why an efficient
> instruction scheduling could not be possible done in the code
> selection phase (SelectionDAG).

Yup, if you depend on the allocation of registers, doing this before 
register allocation won't make sense.

> The information exposed by the TargetInstrInfo should be able to
> engineered a target-indepent machine code dependency analyzer, right?
> (actually this is what I am doing).

Yup.  You'll have to build scheduling graphs that represent the 
dependencies between instructions (which the target instr info and 
register use/def properties can tell you) and use those to do a post-pass 
scheduler.

-Chris

-- 
http://nondot.org/sabre/
http://llvm.org/




More information about the llvm-dev mailing list