<html>
-<title>
-llc
-</title>
+<title>LLVM: llc tool</title>
-<body>
+<body bgcolor=white>
-<center>
-<h1>Low Level Virtual Machine</h1>
-</center>
+<center><h1>LLVM: <tt>llc</tt> tool</h1></center>
<HR>
-<h3>
-NAME
-</h3>
+<h3>NAME</h3>
+<tt>llc</tt>
-llc
+<h3>SYNOPSIS</h3>
+<tt>llc [options] [filename]</tt>
-<h3>
-SYNOPSIS
-</h3>
+<h3>DESCRIPTION</h3>
-llc [options] < filename>
-<h3>
-DESCRIPTION
-</h3>
+The <tt>llc</tt> command compiles LLVM bytecode into assembly language for a
+specified architecture. The assembly language output can then be passed through
+a native assembler and linker to generate native code.
+<p>
+The choice of architecture for the output assembly code is determined as
+follows:
+
+<ul>
+ <li>
+ If the user has specified an architecture with the -m option, use that
+ architecture.
+ <p>
+
+ <li>
+ Examine the input LLVM bytecode file:
+ <ul>
+ <li>
+ If it specifies little endian and a pointer size of 32 bits, select the
+ x86 architecture.
+ <p>
+
+ <li>
+ If it specifies big endian and a pointer size of 64 bit pointers,
+ select the SparcV9 architecture.
+ </ul>
+ <p>
+
+ <li>
+ If <tt>llc</tt> was compiled on an architecture for which it can
+ generate code, select the architecture upon which <tt>llc</tt> was
+ compiled.
+ <p>
+
+ <li>
+ Print a message to the user asking him or her to specify the output
+ architecture explicitly.
+</ul>
+
+<p>
-The llc command compiles LLVM bytecode into assembly language for a specified
-architecture. The assembly language output can then be passed through a native
-assembler and linker to generate native code.
+If filename is not specified, or if filename is -, <tt>llc</tt> reads its input
+from standard input. Otherwise, it will read its input from filename.
+<p>
+
+If the -o option is left unspecified, then <tt>llc</tt> will send its output to standard
+output if the input is from standard input. If the -o option specifies -, then
+the output will also be sent to standard output.
+<p>
+
+If no -o option is specified and an input file other than - is specified, then
+<tt>llc</tt> creates the output filename as follows:
+
+<ul>
+ <li>
+ If the file ends in .bc, then the .bc suffix is removed, and the .s suffix
+ is appended.
+ <p>
+ <li>
+ Otherwise, the .s suffix is appended to the input filename.
+</ul>
<h3>
OPTIONS
</h3>
-
<ul>
- <li>-disable-fp-elim
+ <li>-f
<br>
- Disable frame pointer elimination optimization
+ Overwrite output files
<p>
- <li>-disable-local-ra
+ <li>-m<arch>
<br>
- Use Simple RA instead of Local RegAlloc
- <p>
+ Specify the architecture for which to generate assembly. Valid
+ architectures are:
- <li>-disable-pattern-isel
- <br>
- Use the 'simple' X86 instruction selector
- <p>
+ <dl compact>
+ <di> x86
+ <dd>IA-32 (Pentium and above)</dd>
- <li>-disable-peephole
- <br>
- Disable peephole optimization pass
+ <di> sparc
+ <dd>SPARC V9</dd>
+ </dl>
<p>
- <li>-disable-preopt
+ <li>-o <filename>
<br>
- Disable optimizations prior to instruction selection
+ Specify the output filename.
<p>
- <li>-disable-sched
+ <li> -help
<br>
- Disable local scheduling pass
+ Print a summary of command line options.
<p>
- <li>-disable-strip
+ <li> -stats
<br>
- Do not strip the LLVM bytecode included in executable
+ Print statistics.
<p>
- <li>-enable-maps
+ <li> -time-passes
<br>
- Emit LLVM-to-MachineCode mapping info to assembly
+ Record the amount of time needed for each pass and print it to standard
+ error.
<p>
- <li>-f
+</ul>
+<h4>X86 Specific Options</h4>
+<ul>
+ <li>-disable-fp-elim
<br>
- Overwrite output files
+ Disable frame pointer elimination optimization.
<p>
- <li>-load=<plugin.so>
+ <li>-disable-pattern-isel
<br>
- Load the specified plugin
+ Use the 'simple' X86 instruction selector (the default).
<p>
- <li>-m<arch>
+ <li>-print-machineinstrs
<br>
- Specify the architecture for which to generate assembly. Valid
+ Print generated machine code.
<p>
- architectures are:
+ <li>-regalloc=<ra>
+ <br>
+ Specify the register allocator to use. The default is <i>simple</i>.
+ Valid register allocators are:
<dl compact>
- <di> x86
- <dd>
- IA-32 (Pentium and above)
- <p>
+ <di> simple
+ <dd>Very simple register allocator</dd>
- <di> sparc
- <dd>SPARC V9
+ <di> local
+ <dd>Local register allocator</dd>
</dl>
<p>
- <li>-o <filename>
+</ul>
+
+<h4>Sparc Specific Options</h4>
+<ul>
+ <li>-disable-peephole
<br>
- Output filename
+ Disable peephole optimization pass.
<p>
- <li>-print-machineinstrs
+ <li>-disable-preopt
<br>
- Print generated machine code
+ Disable optimizations prior to instruction selection.
<p>
- <li> -help
+ <li>-disable-sched
<br>
- Print a summary of command line options.
+ Disable local scheduling pass.
<p>
- <li> -stats
+ <li>-disable-strip
<br>
- Print statistics.
+ Do not strip the LLVM bytecode included in executable.
<p>
- <li> -time-passes
+ <li>-enable-maps
<br>
- Record the amount of time needed for each pass and print it to standard
- error.
+ Emit LLVM-to-MachineCode mapping info to assembly.
<p>
</ul>
-<h3>
-EXIT STATUS
-</h3>
-If llc succeeds, it will exit with 0. Otherwise, if an error occurs, it
-will exit with a non-zero value.
+<h3>EXIT STATUS</h3>
+
+If <tt>llc</tt> succeeds, it will exit with 0. Otherwise, if an error occurs,
+it will exit with a non-zero value.
<h3>
SEE ALSO
</h3>
-llvm-dis, lli
+<a href="lli.html"><tt>lli</tt></a>
<HR>
-<a href="http://llvm.cs.uiuc.edu">LLVM Team</a>
+Maintained by the <a href="http://llvm.cs.uiuc.edu">LLVM Team</a>.
</body>
</html>