=pod

=head1 NAME

lli - directly execute programs from LLVM bitcode

=head1 SYNOPSIS

B<lli> [I<options>] [I<filename>] [I<program args>]

=head1 DESCRIPTION

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
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.

If I<filename> is not specified, then B<lli> reads the LLVM bitcode for the
program from standard input.

The optional I<args> specified on the command line are passed to the program as
arguments.

=head1 GENERAL OPTIONS

=over

=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.

=item B<-help>

Print a summary of command line options.

=item B<-load>=I<puginfilename>

Causes B<lli> to load the plugin (shared object) named I<pluginfilename> and use
it for optimization.

=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.

=item B<-version>

Print out the version of B<lli> and exit without doing anything else.

=back 

=head1 TARGET OPTIONS

=over 

=item B<-mtriple>=I<target triple>

Override the target triple specified in the input bitcode file with the 
specified string.  This may result in a crash if you pick an
architecture which is not compatible with the current system.

=item B<-march>=I<arch>

Specify the architecture for which to generate assembly, overriding the target
encoded in the bitcode file.  See the output of B<llc --help> for a list of
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>

=back


=head1 FLOATING POINT OPTIONS

=over 

=item B<-disable-excess-fp-precision>

Disable optimizations that may increase floating point precision.

=item B<-enable-finite-only-fp-math>

Enable optimizations that assumes only finite floating point math. That is,
there is no NAN or Inf values.

=item B<-enable-unsafe-fp-math>

Causes B<lli> to enable optimizations that may decrease floating point
precision.

=item B<-soft-float>

Causes B<lli> to generate software floating point library calls instead of
equivalent hardware instructions.

=back

=head1 CODE GENERATION OPTIONS

=over

=item B<-code-model>=I<model>

Choose the code model from:

    default: Target default code model
    small: Small code model
    kernel: Kernel code model
    medium: Medium code model
    large: Large code model

=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.

=item B<-enable-eh> 

Exception handling should be emitted.

=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):

    =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

=item B<-regalloc>=I<allocator>

Register allocator to use: (default = linearscan)

    =bigblock: Big-block register allocator 
    =linearscan: linear scan register allocator =local -   local register allocator 
    =simple: simple register allocator 

=item B<-relocation-model>=I<model> 

Choose relocation model from:

    =default: Target default relocation model 
    =static: Non-relocatable code =pic -   Fully relocatable, position independent code 
    =dynamic-no-pic: Relocatable external references, non-relocatable code 

=item B<-spiller>

Spiller to use: (default: local) 

    =simple: simple spiller 
    =local: local spiller 

=item B<-x86-asm-syntax>=I<syntax>

Choose style of code to emit from X86 backend: 

    =att: Emit AT&T-style assembly 
    =intel: Emit Intel-style assembly

=back

=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

L<llc|llc>

=head1 AUTHOR

Maintained by the LLVM Team (L<http://llvm.org>).

=cut
