Add simple spiller.
[oota-llvm.git] / docs / CommandGuide / llc.html
1 <html>
2 <title>LLVM: llc tool</title>
3
4 <body bgcolor=white>
5
6 <center><h1>LLVM: <tt>llc</tt> tool</h1></center>
7 <HR>
8
9 <h3>NAME</h3>
10 <tt>llc</tt>
11
12 <h3>SYNOPSIS</h3>
13 <tt>llc [options] [filename]</tt>
14
15 <h3>DESCRIPTION</h3>
16
17 The <tt>llc</tt> command compiles LLVM bytecode into assembly language for a
18 specified architecture.  The assembly language output can then be passed through
19 a native assembler and linker to generate native code.
20 <p>
21 The choice of architecture for the output assembly code is determined as
22 follows:
23
24 <ul>
25         <li>
26         If the user has specified an architecture with the -m option, use that
27         architecture.
28         <p>
29
30         <li>
31         Examine the input LLVM bytecode file:
32         <ul>
33                 <li>
34                 If it specifies little endian and a pointer size of 32 bits, select the
35                 x86 architecture.
36                 <p>
37                 
38                 <li>
39                 If it specifies big endian and a pointer size of 64 bit pointers,
40                 select the SparcV9 architecture.
41         </ul>
42         <p>
43
44         <li>
45         If <tt>llc</tt> was compiled on an architecture for which it can
46         generate code, select the architecture upon which <tt>llc</tt> was
47         compiled.
48         <p>
49
50         <li>
51         Print a message to the user asking him or her to specify the output
52         architecture explicitly.
53 </ul>
54
55 <p>
56
57 If filename is not specified, or if filename is -, <tt>llc</tt> reads its input
58 from standard input.  Otherwise, it will read its input from filename.
59 <p>
60
61 If the -o option is left unspecified, then <tt>llc</tt> will send its output to standard
62 output if the input is from standard input.  If the -o option specifies -, then
63 the output will also be sent to standard output.
64 <p>
65
66 If no -o option is specified and an input file other than - is specified, then
67 <tt>llc</tt> creates the output filename as follows:
68
69 <ul>
70         <li>
71         If the file ends in .bc, then the .bc suffix is removed, and the .s suffix
72         is appended.
73         <p>
74         <li>
75         Otherwise, the .s suffix is appended to the input filename.
76 </ul>
77
78 <h3>
79 OPTIONS
80 </h3>
81 <ul>
82         <li>-f                   
83         <br>
84         Overwrite output files
85         <p>
86
87         <li>-m&lt;arch&gt;
88         <br>
89         Specify the architecture for which to generate assembly.  Valid
90         architectures are:
91
92         <dl compact>
93                 <dt> x86 </dt>
94                 <dd>IA-32 (Pentium and above)</dd>
95
96                 <dt> sparc </dt>
97                 <dd>SPARC V9</dd>
98
99                 <dt> c </dt>
100                 <dd>Emit C code</dd>
101         </dl>
102         <p>
103
104         <li>-o &lt;filename&gt;
105         <br>
106         Specify the output filename.
107         <p>
108
109         <li> -help
110         <br>
111         Print a summary of command line options.
112         <p>
113
114         <li> -stats
115         <br>
116         Print statistics.
117         <p>
118
119         <li> -time-passes
120         <br>
121         Record the amount of time needed for each pass and print it to standard
122         error.
123         <p>
124
125 </ul>
126 <h4>X86 Specific Options</h4>
127 <ul>
128         <li>-disable-fp-elim
129         <br>
130         Disable frame pointer elimination optimization.
131         <p>
132
133         <li>-disable-pattern-isel
134         <br>
135         Use the 'simple' X86 instruction selector (the default).
136         <p>
137
138         <li>-print-machineinstrs
139         <br>
140         Print generated machine code.
141         <p>
142
143         <li>-regalloc=&lt;ra&gt;
144         <br>
145         Specify the register allocator to use. The default is <i>local</i>.
146         Valid register allocators are:
147         <p>
148         <dl compact>
149                 <dt> simple </dt>
150                 <dd>Very simple register allocator</dd>
151
152                 <dt> local </dt>
153                 <dd>Local register allocator</dd>
154
155                 <dt> linearscan </dt>
156                 <dd>Linear scan global register allocator (experimental)</dd>
157         </dl>
158
159         <li>-spiller=&lt;sp&gt;
160         <br>
161         Specify the spiller to use for register allocators that support it.
162         Currently this option is used by the linear scan register
163         allocator. The default is <i>local</i>.
164         Valid spillers are:
165         <p>
166         <dl compact>
167                 <dt> simple </dt>
168                 <dd>Simple spiller</dd>
169
170                 <dt> local </dt>
171                 <dd>Local spiller</dd>
172         </dl>
173
174 </ul>
175
176 <h4>Sparc Specific Options</h4>
177 <ul>
178         <li>-disable-peephole
179         <br>
180         Disable peephole optimization pass.
181         <p>
182
183         <li>-disable-sched
184         <br>
185         Disable local scheduling pass.
186         <p>
187
188         <li>-disable-strip
189         <br>
190         Do not strip the LLVM bytecode included in executable.
191         <p>
192
193         <li>-enable-maps
194         <br>
195         Emit LLVM-to-MachineCode mapping info to assembly.
196         <p>
197 </ul>
198
199
200 <h3>EXIT STATUS</h3>
201
202 If <tt>llc</tt> succeeds, it will exit with 0.  Otherwise, if an error occurs,
203 it will exit with a non-zero value.
204
205 <h3>
206 SEE ALSO
207 </h3>
208 <a href="lli.html"><tt>lli</tt></a>
209
210 <HR>
211 Maintained by the <a href="http://llvm.cs.uiuc.edu">LLVM Team</a>.
212 </body>
213 </html>
214