2004-05-14 21:50:33 +02:00
|
|
|
=pod
|
|
|
|
|
|
|
|
=head1 NAME
|
|
|
|
|
2007-07-09 13:24:05 +02:00
|
|
|
lli - directly execute programs from LLVM bitcode
|
2004-05-14 21:50:33 +02:00
|
|
|
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
|
2004-07-02 18:06:19 +02:00
|
|
|
B<lli> [I<options>] [I<filename>] [I<program args>]
|
2004-05-14 21:50:33 +02:00
|
|
|
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
|
2007-07-09 13:24:05 +02:00
|
|
|
B<lli> directly executes programs in LLVM bitcode format. It takes a program
|
|
|
|
in LLVM bitcode format and executes it using a just-in-time compiler, if one is
|
2004-07-02 18:06:19 +02:00
|
|
|
available for the current architecture, or an interpreter. B<lli> takes all of
|
|
|
|
the same code generator options as L<llc|llc>, but they are only effective when
|
|
|
|
B<lli> is using the just-in-time compiler.
|
2004-05-14 21:50:33 +02:00
|
|
|
|
2007-07-09 13:24:05 +02:00
|
|
|
If I<filename> is not specified, then B<lli> reads the LLVM bitcode for the
|
2004-05-14 21:50:33 +02:00
|
|
|
program from standard input.
|
|
|
|
|
|
|
|
The optional I<args> specified on the command line are passed to the program as
|
|
|
|
arguments.
|
|
|
|
|
2007-08-07 18:29:57 +02:00
|
|
|
=head1 GENERAL OPTIONS
|
2004-05-14 21:50:33 +02:00
|
|
|
|
|
|
|
=over
|
|
|
|
|
2007-08-07 18:29:57 +02:00
|
|
|
=item B<-fake-argv0>=I<executable>
|
|
|
|
|
|
|
|
Override the C<argv[0]> value passed into the executing program.
|
|
|
|
|
|
|
|
=item B<-force-interpreter>=I<{false,true}>
|
|
|
|
|
|
|
|
If set to true, use the interpreter even if a just-in-time compiler is available
|
|
|
|
for this architecture. Defaults to false.
|
|
|
|
|
2004-05-14 21:50:33 +02:00
|
|
|
=item B<-help>
|
|
|
|
|
|
|
|
Print a summary of command line options.
|
|
|
|
|
2007-08-07 18:29:57 +02:00
|
|
|
=item B<-load>=I<puginfilename>
|
|
|
|
|
|
|
|
Causes B<lli> to load the plugin (shared object) named I<pluginfilename> and use
|
|
|
|
it for optimization.
|
|
|
|
|
2004-05-14 21:50:33 +02:00
|
|
|
=item B<-stats>
|
|
|
|
|
|
|
|
Print statistics from the code-generation passes. This is only meaningful for
|
|
|
|
the just-in-time compiler, at present.
|
|
|
|
|
|
|
|
=item B<-time-passes>
|
|
|
|
|
|
|
|
Record the amount of time needed for each code-generation pass and print it to
|
|
|
|
standard error.
|
|
|
|
|
2007-08-07 19:43:48 +02:00
|
|
|
=item B<-version>
|
|
|
|
|
|
|
|
Print out the version of B<lli> and exit without doing anything else.
|
|
|
|
|
2007-08-07 18:29:57 +02:00
|
|
|
=back
|
|
|
|
|
|
|
|
=head1 TARGET OPTIONS
|
|
|
|
|
|
|
|
=over
|
|
|
|
|
2005-12-16 06:19:35 +01:00
|
|
|
=item B<-mtriple>=I<target triple>
|
2005-12-16 06:18:53 +01:00
|
|
|
|
2007-07-09 13:24:05 +02:00
|
|
|
Override the target triple specified in the input bitcode file with the
|
2005-12-16 06:18:53 +01:00
|
|
|
specified string. This may result in a crash if you pick an
|
|
|
|
architecture which is not compatible with the current system.
|
|
|
|
|
2004-05-14 21:50:33 +02:00
|
|
|
=item B<-march>=I<arch>
|
|
|
|
|
2005-12-16 06:18:53 +01:00
|
|
|
Specify the architecture for which to generate assembly, overriding the target
|
2010-02-18 15:08:13 +01:00
|
|
|
encoded in the bitcode file. See the output of B<llc -help> for a list of
|
2005-12-16 06:18:53 +01:00
|
|
|
valid architectures. By default this is inferred from the target triple or
|
|
|
|
autodetected to the current architecture.
|
|
|
|
|
|
|
|
=item B<-mcpu>=I<cpuname>
|
|
|
|
|
|
|
|
Specify a specific chip in the current architecture to generate code for.
|
|
|
|
By default this is inferred from the target triple and autodetected to
|
|
|
|
the current architecture. For a list of available CPUs, use:
|
|
|
|
B<llvm-as E<lt> /dev/null | llc -march=xyz -mcpu=help>
|
|
|
|
|
|
|
|
=item B<-mattr>=I<a1,+a2,-a3,...>
|
|
|
|
|
|
|
|
Override or control specific attributes of the target, such as whether SIMD
|
|
|
|
operations are enabled or not. The default set of attributes is set by the
|
|
|
|
current CPU. For a list of available attributes, use:
|
|
|
|
B<llvm-as E<lt> /dev/null | llc -march=xyz -mattr=help>
|
2004-05-14 21:50:33 +02:00
|
|
|
|
2007-08-07 18:29:57 +02:00
|
|
|
=back
|
2007-08-07 18:11:57 +02:00
|
|
|
|
|
|
|
|
2007-08-07 18:29:57 +02:00
|
|
|
=head1 FLOATING POINT OPTIONS
|
2004-05-14 21:50:33 +02:00
|
|
|
|
2007-08-07 18:29:57 +02:00
|
|
|
=over
|
2004-05-14 21:50:33 +02:00
|
|
|
|
2007-08-07 18:29:57 +02:00
|
|
|
=item B<-disable-excess-fp-precision>
|
2004-05-14 21:50:33 +02:00
|
|
|
|
2007-08-07 18:29:57 +02:00
|
|
|
Disable optimizations that may increase floating point precision.
|
2007-08-07 18:11:57 +02:00
|
|
|
|
2007-08-07 18:29:57 +02:00
|
|
|
=item B<-enable-finite-only-fp-math>
|
2007-08-07 18:11:57 +02:00
|
|
|
|
2007-08-07 18:29:57 +02:00
|
|
|
Enable optimizations that assumes only finite floating point math. That is,
|
|
|
|
there is no NAN or Inf values.
|
2004-05-14 21:50:33 +02:00
|
|
|
|
2007-08-07 18:21:52 +02:00
|
|
|
=item B<-enable-unsafe-fp-math>
|
|
|
|
|
|
|
|
Causes B<lli> to enable optimizations that may decrease floating point
|
|
|
|
precision.
|
|
|
|
|
2007-08-07 18:29:57 +02:00
|
|
|
=item B<-soft-float>
|
2007-08-07 18:23:42 +02:00
|
|
|
|
2007-08-07 18:29:57 +02:00
|
|
|
Causes B<lli> to generate software floating point library calls instead of
|
|
|
|
equivalent hardware instructions.
|
2007-08-07 18:23:42 +02:00
|
|
|
|
2004-05-14 21:50:33 +02:00
|
|
|
=back
|
|
|
|
|
2007-08-07 19:12:43 +02:00
|
|
|
=head1 CODE GENERATION OPTIONS
|
|
|
|
|
2007-08-07 19:57:36 +02:00
|
|
|
=over
|
2007-08-07 19:12:43 +02:00
|
|
|
|
|
|
|
=item B<-code-model>=I<model>
|
|
|
|
|
|
|
|
Choose the code model from:
|
|
|
|
|
2007-08-07 19:57:36 +02:00
|
|
|
default: Target default code model
|
|
|
|
small: Small code model
|
|
|
|
kernel: Kernel code model
|
|
|
|
medium: Medium code model
|
|
|
|
large: Large code model
|
2007-08-07 19:48:56 +02:00
|
|
|
|
2007-08-07 19:12:43 +02:00
|
|
|
=item B<-disable-post-RA-scheduler>
|
|
|
|
|
|
|
|
Disable scheduling after register allocation.
|
|
|
|
|
|
|
|
=item B<-disable-spill-fusing>
|
|
|
|
|
|
|
|
Disable fusing of spill code into instructions.
|
|
|
|
|
|
|
|
=item B<-enable-correct-eh-support>
|
|
|
|
|
|
|
|
Make the -lowerinvoke pass insert expensive, but correct, EH code.
|
|
|
|
|
2010-05-02 17:36:26 +02:00
|
|
|
=item B<-jit-enable-eh>
|
2007-08-07 19:12:43 +02:00
|
|
|
|
2010-05-02 17:36:26 +02:00
|
|
|
Exception handling should be enabled in the just-in-time compiler.
|
2007-08-07 19:12:43 +02:00
|
|
|
|
|
|
|
=item B<-join-liveintervals>
|
|
|
|
|
|
|
|
Coalesce copies (default=true).
|
|
|
|
|
|
|
|
=item B<-nozero-initialized-in-bss>
|
|
|
|
Don't place zero-initialized symbols into the BSS section.
|
|
|
|
|
|
|
|
=item B<-pre-RA-sched>=I<scheduler>
|
|
|
|
|
|
|
|
Instruction schedulers available (before register allocation):
|
|
|
|
|
2007-08-07 19:57:36 +02:00
|
|
|
=default: Best scheduler for the target
|
|
|
|
=none: No scheduling: breadth first sequencing
|
|
|
|
=simple: Simple two pass scheduling: minimize critical path and maximize processor utilization
|
|
|
|
=simple-noitin: Simple two pass scheduling: Same as simple except using generic latency
|
|
|
|
=list-burr: Bottom-up register reduction list scheduling
|
|
|
|
=list-tdrr: Top-down register reduction list scheduling
|
|
|
|
=list-td: Top-down list scheduler -print-machineinstrs - Print generated machine code
|
2007-08-07 19:48:56 +02:00
|
|
|
|
2007-08-07 19:12:43 +02:00
|
|
|
=item B<-regalloc>=I<allocator>
|
|
|
|
|
2010-02-18 15:37:52 +01:00
|
|
|
Register allocator to use (default=linearscan)
|
2007-08-07 19:12:43 +02:00
|
|
|
|
2007-08-07 19:57:36 +02:00
|
|
|
=bigblock: Big-block register allocator
|
|
|
|
=linearscan: linear scan register allocator =local - local register allocator
|
|
|
|
=simple: simple register allocator
|
2007-08-07 19:48:56 +02:00
|
|
|
|
2007-08-07 19:12:43 +02:00
|
|
|
=item B<-relocation-model>=I<model>
|
|
|
|
|
|
|
|
Choose relocation model from:
|
|
|
|
|
2007-08-07 19:57:36 +02:00
|
|
|
=default: Target default relocation model
|
|
|
|
=static: Non-relocatable code =pic - Fully relocatable, position independent code
|
|
|
|
=dynamic-no-pic: Relocatable external references, non-relocatable code
|
2007-08-07 19:48:56 +02:00
|
|
|
|
2007-08-07 19:12:43 +02:00
|
|
|
=item B<-spiller>
|
|
|
|
|
2010-02-18 15:37:52 +01:00
|
|
|
Spiller to use (default=local)
|
2007-08-07 19:12:43 +02:00
|
|
|
|
2007-08-07 19:57:36 +02:00
|
|
|
=simple: simple spiller
|
|
|
|
=local: local spiller
|
2007-08-07 19:48:56 +02:00
|
|
|
|
2007-08-07 19:12:43 +02:00
|
|
|
=item B<-x86-asm-syntax>=I<syntax>
|
|
|
|
|
|
|
|
Choose style of code to emit from X86 backend:
|
|
|
|
|
2007-08-07 19:57:36 +02:00
|
|
|
=att: Emit AT&T-style assembly
|
|
|
|
=intel: Emit Intel-style assembly
|
2007-08-07 19:12:43 +02:00
|
|
|
|
|
|
|
=back
|
|
|
|
|
2004-05-14 21:50:33 +02:00
|
|
|
=head1 EXIT STATUS
|
|
|
|
|
|
|
|
If B<lli> fails to load the program, it will exit with an exit code of 1.
|
|
|
|
Otherwise, it will return the exit code of the program it executes.
|
|
|
|
|
|
|
|
=head1 SEE ALSO
|
|
|
|
|
2004-07-02 18:06:19 +02:00
|
|
|
L<llc|llc>
|
2004-05-14 21:50:33 +02:00
|
|
|
|
|
|
|
=head1 AUTHOR
|
|
|
|
|
2006-03-14 06:42:07 +01:00
|
|
|
Maintained by the LLVM Team (L<http://llvm.org>).
|
2004-05-14 21:50:33 +02:00
|
|
|
|
|
|
|
=cut
|