[LLVMdev] Puzzle solver on LLVM 2.1
Fernando Magno Quintao Pereira
fernando at CS.UCLA.EDU
Thu Dec 13 13:10:43 PST 2007
Dear guys,
I've put the puzzle solver running on LLVM 2.1. Well, at least
partially, for it is failing three of SPEC2000 benchmarks. I will try to
debug it now. The results are not as good as before. I mean, the puzzle
solver is still the same, but the default allocator is producing very good
code now. Even though, the puzzle solver produces faster code for half the
benchmarks. It does not use instruction folding yet, nor
rematerialization. I am trying to make it more retargetable, so I've moved
all the target specific information to a single class called
X86PuzzleBoard. Also, as I could not compile the top of LLVM tree, I am
using my own algorithm to build the Machine Dominator Tree. It is a
quadratic algorithm that accounts for more than half the compilation time
of SPEC2000. I think it would be easy to add the LLVM dominator tree once
I can compile it (the compilation problem is due to gcc 3.3.3). My next
step will be:
1) debug the three benchmarks that are failing: gcc, vpr and vortex
2) add instruction folding
Just as an aside, I compared the puzzle solver with the BigBlockAllocator,
and the puzzle solver seems to be producing much fewer memory accesses for
big basic blocks. For instance, for a basic block with about 8000
instructions, the algorithms produce the following static code:
#mem accesses #Moves
puzzle 178 68
bigblock 227 34
LLVM's default 276 4
best,
Fernando
More information about the llvm-dev
mailing list