Re: Where are expression trees of SUIF in MachineSUIF?

"Uncle Noah" <nkavv@skiathos.physics.auth.gr>
27 Nov 2006 17:43:41 -0500

          From comp.compilers

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)
| List of all articles for this month |

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


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.