Related articles |
---|
Where are expression trees of SUIF in MachineSUIF? kanvard@gmail.com (kanvard) (2006-11-26) |
Re: Where are expression trees of SUIF in MachineSUIF? nkavv@skiathos.physics.auth.gr (Uncle Noah) (2006-11-27) |
Re: Where are expression trees of SUIF in MachineSUIF? kanvard@gmail.com (kanvard) (2006-11-29) |
Re: Where are expression trees of SUIF in MachineSUIF? nkavv@skiathos.physics.auth.gr (Uncle Noah) (2006-11-30) |
Re: Where are expression trees of SUIF in MachineSUIF? dmaze@mit.edu (David Z Maze) (2006-12-01) |
Re: Where are expression trees of SUIF in MachineSUIF? nkavv@skiathos.physics.auth.gr (Uncle Noah) (2006-12-03) |
From: | "Uncle Noah" <nkavv@skiathos.physics.auth.gr> |
Newsgroups: | comp.compilers |
Date: | 27 Nov 2006 17:43:41 -0500 |
Organization: | Compilers Central |
References: | 06-11-107 |
Keywords: | tools, code |
Posted-Date: | 27 Nov 2006 17:43:41 EST |
kanvard wrote:
> Hi,
Hi. BTW the best place to talk about Machine-SUIF in particular would
be:
suif-talk@suif.stanford.edu
> MachineSUIF has an instruction selection pass "do_gen -target_lib" and
> a register allocation pass "do_raga".
The instruction selection pass won't do much unless you fill it with
lots of optimizations especially peepholes working on SUIFvm IR level.
Machine-SUIF has rather extensive documentation and a clean but heavy
API. It requires some time (some months) to get going.
do_raga applies "George-Appel" or "iterated-coalescing" register
allocation. Practically, it is a rather good allocator, reusing hard
regs to the maximum. This complicates instruction scheduling (i mean
narrows performance benefits that you can get from scheduling).
> I am going to build a instruction selector using iburg/lburg/olive
> and then use the register allocator of MachineSUIF.
LCC and LANCE work pretty well with these tools. Machine-SUIF would
require quite some work. I've never heard of anyone doing it (and
publicizing it).
> How to build a code generator using iburg/lburg/olive in MachineSUIF
> compiler?
You have to build clean expression trees. Unfortunately such facilities
fall on the SUIF side. SUIF (1 or 2) are kind of frontends (down to
high/low SUIF which are a form of typed expession trees).
My 2c would be on bringing Machine-SUIF closer to the APIs of the code
selection tools. Thus, you have to rebuild the required trees from
SUIFvm rather from the SUIF (frontend) dat a structures.
Still, i don't feel confident with SUIF frontend (and it's completely
unsupported) that's why i believe my 2c is more pragmatic.
> Do i need to build such a tree pattern-matcher in SUIF, use
> "do_lower, do_s2m" to transform IR from SUIF to MachineSUIF, and
> then use "do_raga" of MachineSUIF to do register allocation? Where
> are expression trees of SUIF in MachineSUIF? Do i need to build
> expression trees from MachineSUIF IR using MachineSUIF libraries?
Your last point is what i would bet on. Do your work on either SUIF or
Machine-SUIF alone. To mess with both would be more difficult. Don't
worry about "raga", it can be retargeted under small effort. Take
example of Alpha or ARM.
> Thank you!
You are welcome.
Kind regards
Nikolaos Kavvadias
Return to the
comp.compilers page.
Search the
comp.compilers archives again.