[LLVMdev] Use of LLVM in a Machine Simulator.

Chris Lattner sabre at nondot.org
Tue Apr 18 09:25:38 PDT 2006

On Tue, 18 Apr 2006, Ralph Corderoy wrote:
>> Of interest may be this thesis.  It talks about converting alpha code
>> to LLVM (among other things):
>> http://llvm.org/pubs/2004-05-JoshiMSThesis.html
> Thanks, it was of interest.  I didn't spot its relevance from the title.

Note that the approach is still sound, but the paper is a bit dated (like 
anything talking about LLVM published more than 3 months ago :) ).  In 
particular, the spirit of this:

"Certain Alpha instructions have no direct and easy mapping to the LLVM 
IR. One option is to represent such instructions by complex pieces of LLVM 
code. For example, a ctpop instructions counts the number of set bits in a 
registers. Although it can be converted into a loop in LLVM, it would be 
very difficult for the back end to recognize such loops and regenerate the 
ctpop instructions. Secondly, such detailed translation is not required 
for optimizations like dead code elimination. Hence, we chose to represent 
such instructions in a simpler manner using function calls. These function 
calls can be easily recognized by the back end and translated to a single 

... is right, but the details are no longer true (LLVM does now have 
support for ctpop).  Likewise, the spirit of this is correct:

"The LLVM compiler framework has the ability to define intrinsic 
functions: functions about which the compiler knows nothing and hence 
makes conservative transformations. One drawback of using such intrinsics 
is that they interfere with the dead code elimination process: because of 
conservative assumptions, LLVM cannot eliminate such function calls. 
Specifically, these functions can, in theory, write to memory and hence 
cannot be eliminated."

... but the details are no longer right.  In particular, you can specify 
whether intrinsics have side effects, etc now, which allows them to be 
DCE'd, CSE'd, hoisted out of loops, etc.

Also, note that the alpha backend described in the paper is quite 
different than the current alpha backend.

If you have any specific questions, this list is the place to ask. :)



More information about the llvm-dev mailing list