=pod

=head1 NAME

lli - directly execute programs from LLVM bytecode

=head1 SYNOPSIS

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

=head1 DESCRIPTION

B<lli> directly executes programs in LLVM bytecode format.  It takes a program
in LLVM bytecode 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 bytecode for the
program from standard input.

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

=head1 OPTIONS

=over

=item B<-help>

Print a summary of command line options.

=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<-mtriple>=I<target triple>

Override the target triple specified in the input bytecode 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 bytecode 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>

=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<-f>=I<name>

Call the function named I<name> to start the program.  Note: The
function is assumed to have the C signature C<int> I<name> C<(int,
char **, char **)>.  If you try to use this option to call a function of
incompatible type, undefined behavior may result. Defaults to C<main>.

=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
