mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
1f3a59e29b
- The POD versions are slated for execution, but are still around until llvm.org machinery is in place. llvm-svn: 156384
252 lines
4.9 KiB
ReStructuredText
252 lines
4.9 KiB
ReStructuredText
llc - LLVM static compiler
|
|
==========================
|
|
|
|
|
|
SYNOPSIS
|
|
--------
|
|
|
|
|
|
**llc** [*options*] [*filename*]
|
|
|
|
|
|
DESCRIPTION
|
|
-----------
|
|
|
|
|
|
The **llc** command compiles LLVM source inputs into assembly language for a
|
|
specified architecture. The assembly language output can then be passed through
|
|
a native assembler and linker to generate a native executable.
|
|
|
|
The choice of architecture for the output assembly code is automatically
|
|
determined from the input file, unless the **-march** option is used to override
|
|
the default.
|
|
|
|
|
|
OPTIONS
|
|
-------
|
|
|
|
|
|
If *filename* is - or omitted, **llc** reads from standard input. Otherwise, it
|
|
will from *filename*. Inputs can be in either the LLVM assembly language
|
|
format (.ll) or the LLVM bitcode format (.bc).
|
|
|
|
If the **-o** option is omitted, then **llc** will send its output to standard
|
|
output if the input is from standard input. If the **-o** option specifies -,
|
|
then the output will also be sent to standard output.
|
|
|
|
If no **-o** option is specified and an input file other than - is specified,
|
|
then **llc** creates the output filename by taking the input filename,
|
|
removing any existing *.bc* extension, and adding a *.s* suffix.
|
|
|
|
Other **llc** options are as follows:
|
|
|
|
End-user Options
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
**-help**
|
|
|
|
Print a summary of command line options.
|
|
|
|
|
|
|
|
**-O**\ =\ *uint*
|
|
|
|
Generate code at different optimization levels. These correspond to the *-O0*,
|
|
*-O1*, *-O2*, and *-O3* optimization levels used by **llvm-gcc** and
|
|
**clang**.
|
|
|
|
|
|
|
|
**-mtriple**\ =\ *target triple*
|
|
|
|
Override the target triple specified in the input file with the specified
|
|
string.
|
|
|
|
|
|
|
|
**-march**\ =\ *arch*
|
|
|
|
Specify the architecture for which to generate assembly, overriding the target
|
|
encoded in the input file. See the output of **llc -help** for a list of
|
|
valid architectures. By default this is inferred from the target triple or
|
|
autodetected to the current architecture.
|
|
|
|
|
|
|
|
**-mcpu**\ =\ *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:
|
|
**llvm-as < /dev/null | llc -march=xyz -mcpu=help**
|
|
|
|
|
|
|
|
**-mattr**\ =\ *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:
|
|
**llvm-as < /dev/null | llc -march=xyz -mattr=help**
|
|
|
|
|
|
|
|
**--disable-fp-elim**
|
|
|
|
Disable frame pointer elimination optimization.
|
|
|
|
|
|
|
|
**--disable-excess-fp-precision**
|
|
|
|
Disable optimizations that may produce excess precision for floating point.
|
|
Note that this option can dramatically slow down code on some systems
|
|
(e.g. X86).
|
|
|
|
|
|
|
|
**--enable-no-infs-fp-math**
|
|
|
|
Enable optimizations that assume no Inf values.
|
|
|
|
|
|
|
|
**--enable-no-nans-fp-math**
|
|
|
|
Enable optimizations that assume no NAN values.
|
|
|
|
|
|
|
|
**--enable-unsafe-fp-math**
|
|
|
|
Enable optimizations that make unsafe assumptions about IEEE math (e.g. that
|
|
addition is associative) or may not work for all input ranges. These
|
|
optimizations allow the code generator to make use of some instructions which
|
|
would otherwise not be usable (such as fsin on X86).
|
|
|
|
|
|
|
|
**--enable-correct-eh-support**
|
|
|
|
Instruct the **lowerinvoke** pass to insert code for correct exception handling
|
|
support. This is expensive and is by default omitted for efficiency.
|
|
|
|
|
|
|
|
**--stats**
|
|
|
|
Print statistics recorded by code-generation passes.
|
|
|
|
|
|
|
|
**--time-passes**
|
|
|
|
Record the amount of time needed for each pass and print a report to standard
|
|
error.
|
|
|
|
|
|
|
|
**--load**\ =\ *dso_path*
|
|
|
|
Dynamically load *dso_path* (a path to a dynamically shared object) that
|
|
implements an LLVM target. This will permit the target name to be used with the
|
|
**-march** option so that code can be generated for that target.
|
|
|
|
|
|
|
|
|
|
Tuning/Configuration Options
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
**--print-machineinstrs**
|
|
|
|
Print generated machine code between compilation phases (useful for debugging).
|
|
|
|
|
|
|
|
**--regalloc**\ =\ *allocator*
|
|
|
|
Specify the register allocator to use. The default *allocator* is *local*.
|
|
Valid register allocators are:
|
|
|
|
|
|
*simple*
|
|
|
|
Very simple "always spill" register allocator
|
|
|
|
|
|
|
|
*local*
|
|
|
|
Local register allocator
|
|
|
|
|
|
|
|
*linearscan*
|
|
|
|
Linear scan global register allocator
|
|
|
|
|
|
|
|
*iterativescan*
|
|
|
|
Iterative scan global register allocator
|
|
|
|
|
|
|
|
|
|
|
|
**--spiller**\ =\ *spiller*
|
|
|
|
Specify the spiller to use for register allocators that support it. Currently
|
|
this option is used only by the linear scan register allocator. The default
|
|
*spiller* is *local*. Valid spillers are:
|
|
|
|
|
|
*simple*
|
|
|
|
Simple spiller
|
|
|
|
|
|
|
|
*local*
|
|
|
|
Local spiller
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Intel IA-32-specific Options
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
**--x86-asm-syntax=att|intel**
|
|
|
|
Specify whether to emit assembly code in AT&T syntax (the default) or intel
|
|
syntax.
|
|
|
|
|
|
|
|
|
|
|
|
EXIT STATUS
|
|
-----------
|
|
|
|
|
|
If **llc** succeeds, it will exit with 0. Otherwise, if an error occurs,
|
|
it will exit with a non-zero value.
|
|
|
|
|
|
SEE ALSO
|
|
--------
|
|
|
|
|
|
lli|lli
|