The two packages distributed in this page, e.g
puzzles21.tar.gz contain many files. they are arranged in the same structure of the llvm development tree, so it should not be very difficult to install. For instance, to install the 2.1 version, just replace the files in your installation of LLVM 2.1 with the files in this zip. Be aware that some files will overwrite the old LLVM files. The files that I have created have the extension
_Fer at the end of their names. Not all these files do register allocation, but they may be useful to implement passes.
This is the code of the puzzle solver for LLVM 1.9. It is the version that we have used in the experiments presented in our paper. To run the puzzle solver, try
This is the code of the puzzle solver for LLVM 2.1. This version has not been fully tested yet. To run the puzzle solver, try
|This script calls the puzzle solver and the extended linear scan, produces statistics about both codes such as number of loads, stores, moves and swaps, compiles the assembly code produced and run it to get the execution time. Finally, the output of both allocators is compared against the output of gcc. The script helps in debugging and comparing new register allocators and may be useful during development. In order to run this script, you must have this other script installed. This script works only for version 2.1 of our implementation. For 1.9, use this one.|
|This script uses grep to count the number of loads, stores, moves and swaps in the code of the assembly program produced for X86. The script has some comments that can be used to generate the same information for PowerPC, or for X86 using the assembly produced by LLVM 1.9.|
17 de Dezembro de 2007.