blob: 58481073d06996b98c0231187dbf4dba6c524f7c [file] [log] [blame]
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +00001lli - directly execute programs from LLVM bitcode
2=================================================
3
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +00004SYNOPSIS
5--------
6
Renato Goline51c1ce2015-07-28 10:24:11 +00007:program:`lli` [*options*] [*filename*] [*program args*]
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +00008
9DESCRIPTION
10-----------
11
Renato Goline51c1ce2015-07-28 10:24:11 +000012:program:`lli` directly executes programs in LLVM bitcode format. It takes a program
13in LLVM bitcode format and executes it using a just-in-time compiler or an
14interpreter.
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000015
Renato Goline51c1ce2015-07-28 10:24:11 +000016:program:`lli` is *not* an emulator. It will not execute IR of different architectures
17and it can only interpret (or JIT-compile) for the host architecture.
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000018
Renato Goline51c1ce2015-07-28 10:24:11 +000019The JIT compiler takes the same arguments as other tools, like :program:`llc`,
20but they don't necessarily work for the interpreter.
21
22If `filename` is not specified, then :program:`lli` reads the LLVM bitcode for the
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000023program from standard input.
24
25The optional *args* specified on the command line are passed to the program as
26arguments.
27
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000028GENERAL OPTIONS
29---------------
30
Renato Goline51c1ce2015-07-28 10:24:11 +000031.. option:: -fake-argv0=executable
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000032
33 Override the ``argv[0]`` value passed into the executing program.
34
Renato Goline51c1ce2015-07-28 10:24:11 +000035.. option:: -force-interpreter={false,true}
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000036
37 If set to true, use the interpreter even if a just-in-time compiler is available
38 for this architecture. Defaults to false.
39
Renato Goline51c1ce2015-07-28 10:24:11 +000040.. option:: -help
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000041
42 Print a summary of command line options.
43
Renato Goline51c1ce2015-07-28 10:24:11 +000044.. option:: -load=pluginfilename
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000045
Renato Goline51c1ce2015-07-28 10:24:11 +000046 Causes :program:`lli` to load the plugin (shared object) named *pluginfilename* and use
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000047 it for optimization.
48
Renato Goline51c1ce2015-07-28 10:24:11 +000049.. option:: -stats
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000050
51 Print statistics from the code-generation passes. This is only meaningful for
52 the just-in-time compiler, at present.
53
Renato Goline51c1ce2015-07-28 10:24:11 +000054.. option:: -time-passes
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000055
56 Record the amount of time needed for each code-generation pass and print it to
57 standard error.
58
Renato Goline51c1ce2015-07-28 10:24:11 +000059.. option:: -version
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000060
Renato Goline51c1ce2015-07-28 10:24:11 +000061 Print out the version of :program:`lli` and exit without doing anything else.
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000062
63TARGET OPTIONS
64--------------
65
Renato Goline51c1ce2015-07-28 10:24:11 +000066.. option:: -mtriple=target triple
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000067
68 Override the target triple specified in the input bitcode file with the
69 specified string. This may result in a crash if you pick an
70 architecture which is not compatible with the current system.
71
Renato Goline51c1ce2015-07-28 10:24:11 +000072.. option:: -march=arch
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000073
74 Specify the architecture for which to generate assembly, overriding the target
75 encoded in the bitcode file. See the output of **llc -help** for a list of
76 valid architectures. By default this is inferred from the target triple or
77 autodetected to the current architecture.
78
Renato Goline51c1ce2015-07-28 10:24:11 +000079.. option:: -mcpu=cpuname
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000080
81 Specify a specific chip in the current architecture to generate code for.
82 By default this is inferred from the target triple and autodetected to
83 the current architecture. For a list of available CPUs, use:
84 **llvm-as < /dev/null | llc -march=xyz -mcpu=help**
85
Renato Goline51c1ce2015-07-28 10:24:11 +000086.. option:: -mattr=a1,+a2,-a3,...
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000087
88 Override or control specific attributes of the target, such as whether SIMD
89 operations are enabled or not. The default set of attributes is set by the
90 current CPU. For a list of available attributes, use:
91 **llvm-as < /dev/null | llc -march=xyz -mattr=help**
92
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000093FLOATING POINT OPTIONS
94----------------------
95
Renato Goline51c1ce2015-07-28 10:24:11 +000096.. option:: -disable-excess-fp-precision
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000097
98 Disable optimizations that may increase floating point precision.
99
Renato Goline51c1ce2015-07-28 10:24:11 +0000100.. option:: -enable-no-infs-fp-math
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000101
102 Enable optimizations that assume no Inf values.
103
Renato Goline51c1ce2015-07-28 10:24:11 +0000104.. option:: -enable-no-nans-fp-math
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000105
106 Enable optimizations that assume no NAN values.
107
Renato Goline51c1ce2015-07-28 10:24:11 +0000108.. option:: -enable-unsafe-fp-math
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000109
Renato Goline51c1ce2015-07-28 10:24:11 +0000110 Causes :program:`lli` to enable optimizations that may decrease floating point
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000111 precision.
112
Renato Goline51c1ce2015-07-28 10:24:11 +0000113.. option:: -soft-float
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000114
Renato Goline51c1ce2015-07-28 10:24:11 +0000115 Causes :program:`lli` to generate software floating point library calls instead of
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000116 equivalent hardware instructions.
117
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000118CODE GENERATION OPTIONS
119-----------------------
120
Renato Goline51c1ce2015-07-28 10:24:11 +0000121.. option:: -code-model=model
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000122
123 Choose the code model from:
124
Jonas Devlieghereaaecdc42017-11-06 11:47:24 +0000125 .. code-block:: text
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000126
127 default: Target default code model
128 small: Small code model
129 kernel: Kernel code model
130 medium: Medium code model
131 large: Large code model
132
Renato Goline51c1ce2015-07-28 10:24:11 +0000133.. option:: -disable-post-RA-scheduler
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000134
135 Disable scheduling after register allocation.
136
Renato Goline51c1ce2015-07-28 10:24:11 +0000137.. option:: -disable-spill-fusing
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000138
139 Disable fusing of spill code into instructions.
140
Renato Goline51c1ce2015-07-28 10:24:11 +0000141.. option:: -jit-enable-eh
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000142
143 Exception handling should be enabled in the just-in-time compiler.
144
Renato Goline51c1ce2015-07-28 10:24:11 +0000145.. option:: -join-liveintervals
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000146
147 Coalesce copies (default=true).
148
Renato Goline51c1ce2015-07-28 10:24:11 +0000149.. option:: -nozero-initialized-in-bss
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000150
Renato Goline51c1ce2015-07-28 10:24:11 +0000151 Don't place zero-initialized symbols into the BSS section.
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000152
Renato Goline51c1ce2015-07-28 10:24:11 +0000153.. option:: -pre-RA-sched=scheduler
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000154
155 Instruction schedulers available (before register allocation):
156
Jonas Devlieghereaaecdc42017-11-06 11:47:24 +0000157 .. code-block:: text
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000158
159 =default: Best scheduler for the target
160 =none: No scheduling: breadth first sequencing
161 =simple: Simple two pass scheduling: minimize critical path and maximize processor utilization
162 =simple-noitin: Simple two pass scheduling: Same as simple except using generic latency
163 =list-burr: Bottom-up register reduction list scheduling
164 =list-tdrr: Top-down register reduction list scheduling
165 =list-td: Top-down list scheduler -print-machineinstrs - Print generated machine code
166
Renato Goline51c1ce2015-07-28 10:24:11 +0000167.. option:: -regalloc=allocator
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000168
169 Register allocator to use (default=linearscan)
170
Jonas Devlieghereaaecdc42017-11-06 11:47:24 +0000171 .. code-block:: text
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000172
173 =bigblock: Big-block register allocator
174 =linearscan: linear scan register allocator =local - local register allocator
175 =simple: simple register allocator
176
Renato Goline51c1ce2015-07-28 10:24:11 +0000177.. option:: -relocation-model=model
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000178
179 Choose relocation model from:
180
Jonas Devlieghereaaecdc42017-11-06 11:47:24 +0000181 .. code-block:: text
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000182
183 =default: Target default relocation model
184 =static: Non-relocatable code =pic - Fully relocatable, position independent code
185 =dynamic-no-pic: Relocatable external references, non-relocatable code
186
Renato Goline51c1ce2015-07-28 10:24:11 +0000187.. option:: -spiller
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000188
189 Spiller to use (default=local)
190
Jonas Devlieghereaaecdc42017-11-06 11:47:24 +0000191 .. code-block:: text
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000192
193 =simple: simple spiller
194 =local: local spiller
195
Renato Goline51c1ce2015-07-28 10:24:11 +0000196.. option:: -x86-asm-syntax=syntax
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000197
198 Choose style of code to emit from X86 backend:
199
Jonas Devlieghereaaecdc42017-11-06 11:47:24 +0000200 .. code-block:: text
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000201
202 =att: Emit AT&T-style assembly
203 =intel: Emit Intel-style assembly
204
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000205EXIT STATUS
206-----------
207
Renato Goline51c1ce2015-07-28 10:24:11 +0000208If :program:`lli` fails to load the program, it will exit with an exit code of 1.
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000209Otherwise, it will return the exit code of the program it executes.
210
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000211SEE ALSO
212--------
213
Renato Goline51c1ce2015-07-28 10:24:11 +0000214:program:`llc`