[LLVMdev] Re: LLVM to SUIF-MACH VM binary (Chris Lattner, John Cortes)

Nikolaos Kavvadias nkavv at skiathos.physics.auth.gr
Wed Jan 19 09:00:40 PST 2005


Dear friends,

I have been using the SUIF Machine infrastructure for sometime. Some 
optimizations are available without using a target machine, i.e. at the 
SUIFvm level. At this level you have "infinite" registers. Other 
optimizations, including analyses as for profiling require the use of a 
target library, a complete backend. It is very sad, that they have 
discontinued their MIPS backend years ago, and only Alpha, and backends 
for the ugly x86. In terms of research, the most necessary backends are 
the following (personal opinion).

1. MIPS R3000, R4400, R10000
2. SPARC V7 to V9 (very close to no. 1)
3. PowerPC
4. ARM7, ARM9, ARM11
5. Alphas, but since the Alpha has very low sales in Europe, and talking 
from my point of view it is not that necessary.

If a backend is to be used you have to do at least the following:
do_gen ... with option -target_lib <my_target>
do_raga ... this does the register allocation
do_fin ... this finalizes code

Anyway usually i print out of the MachSUIF IR the information I need in 
the form of data-dependence graphs. There is no such tool in their 
02.07.15 distribution so i have written a small pass to do the job. 
Interfacing to the SUIF IR (kind of object file format) is somewhat 
complex. It would need some work to convert between LLVM IR and SUIF IR 
in their internal format.

At their SUIFvm (virtual machine instruction set) level you have some 
optimizations:

1. Passes in their distribution
Constant propagation
SSA-to-CFG and CFG-to-SSA
C backend (this is very buggy, e.g. functions returning void or struct 
types are not properly reproduced)
Peephole optim.
Libraries to use for data-flow analysis (dfa), control-flow analysis 
(cfa) based on Muchnick's book

2. A few of the available external passes (including mine)
DAG extraction tool (at http://www.geocities.com/kaveirious/) named as 
'bbpart'
Passes at EPFL (best is their unused code for local-CSE and their 
if-conversion pass)

CONCLUSIONS: MachineSUIF requires several addons that the user oughts to 
write in order to get his work done. LLVM seems much more COMPLETE and 
much more ACTIVE. MachSUIF is pretty much DEAD since late 2002-mid 2003.

LLVM can become the first widely used RISC-like VM. It has much potential.

Regards

Nikolaos Kavvadias
Aristotle University of Thessaloniki
Electronics Lab
Department of Physics
Thessaloniki, Greece





More information about the llvm-dev mailing list