| lli - directly execute programs from LLVM bitcode |
| ================================================= |
| |
| |
| SYNOPSIS |
| -------- |
| |
| |
| **lli** [*options*] [*filename*] [*program args*] |
| |
| |
| DESCRIPTION |
| ----------- |
| |
| |
| **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. **lli** takes all of |
| the same code generator options as llc|llc, but they are only effective when |
| **lli** is using the just-in-time compiler. |
| |
| If *filename* is not specified, then **lli** reads the LLVM bitcode for the |
| program from standard input. |
| |
| The optional *args* specified on the command line are passed to the program as |
| arguments. |
| |
| |
| GENERAL OPTIONS |
| --------------- |
| |
| |
| |
| **-fake-argv0**\ =\ *executable* |
| |
| Override the ``argv[0]`` value passed into the executing program. |
| |
| |
| |
| **-force-interpreter**\ =\ *{false,true}* |
| |
| If set to true, use the interpreter even if a just-in-time compiler is available |
| for this architecture. Defaults to false. |
| |
| |
| |
| **-help** |
| |
| Print a summary of command line options. |
| |
| |
| |
| **-load**\ =\ *puginfilename* |
| |
| Causes **lli** to load the plugin (shared object) named *pluginfilename* and use |
| it for optimization. |
| |
| |
| |
| **-stats** |
| |
| Print statistics from the code-generation passes. This is only meaningful for |
| the just-in-time compiler, at present. |
| |
| |
| |
| **-time-passes** |
| |
| Record the amount of time needed for each code-generation pass and print it to |
| standard error. |
| |
| |
| |
| **-version** |
| |
| Print out the version of **lli** and exit without doing anything else. |
| |
| |
| |
| |
| TARGET OPTIONS |
| -------------- |
| |
| |
| |
| **-mtriple**\ =\ *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. |
| |
| |
| |
| **-march**\ =\ *arch* |
| |
| Specify the architecture for which to generate assembly, overriding the target |
| encoded in the bitcode 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** |
| |
| |
| |
| |
| FLOATING POINT OPTIONS |
| ---------------------- |
| |
| |
| |
| **-disable-excess-fp-precision** |
| |
| Disable optimizations that may increase floating point precision. |
| |
| |
| |
| **-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** |
| |
| Causes **lli** to enable optimizations that may decrease floating point |
| precision. |
| |
| |
| |
| **-soft-float** |
| |
| Causes **lli** to generate software floating point library calls instead of |
| equivalent hardware instructions. |
| |
| |
| |
| |
| CODE GENERATION OPTIONS |
| ----------------------- |
| |
| |
| |
| **-code-model**\ =\ *model* |
| |
| Choose the code model from: |
| |
| |
| .. code-block:: perl |
| |
| default: Target default code model |
| small: Small code model |
| kernel: Kernel code model |
| medium: Medium code model |
| large: Large code model |
| |
| |
| |
| |
| **-disable-post-RA-scheduler** |
| |
| Disable scheduling after register allocation. |
| |
| |
| |
| **-disable-spill-fusing** |
| |
| Disable fusing of spill code into instructions. |
| |
| |
| |
| **-enable-correct-eh-support** |
| |
| Make the -lowerinvoke pass insert expensive, but correct, EH code. |
| |
| |
| |
| **-jit-enable-eh** |
| |
| Exception handling should be enabled in the just-in-time compiler. |
| |
| |
| |
| **-join-liveintervals** |
| |
| Coalesce copies (default=true). |
| |
| |
| |
| **-nozero-initialized-in-bss** Don't place zero-initialized symbols into the BSS section. |
| |
| |
| |
| **-pre-RA-sched**\ =\ *scheduler* |
| |
| Instruction schedulers available (before register allocation): |
| |
| |
| .. code-block:: perl |
| |
| =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 |
| |
| |
| |
| |
| **-regalloc**\ =\ *allocator* |
| |
| Register allocator to use (default=linearscan) |
| |
| |
| .. code-block:: perl |
| |
| =bigblock: Big-block register allocator |
| =linearscan: linear scan register allocator =local - local register allocator |
| =simple: simple register allocator |
| |
| |
| |
| |
| **-relocation-model**\ =\ *model* |
| |
| Choose relocation model from: |
| |
| |
| .. code-block:: perl |
| |
| =default: Target default relocation model |
| =static: Non-relocatable code =pic - Fully relocatable, position independent code |
| =dynamic-no-pic: Relocatable external references, non-relocatable code |
| |
| |
| |
| |
| **-spiller** |
| |
| Spiller to use (default=local) |
| |
| |
| .. code-block:: perl |
| |
| =simple: simple spiller |
| =local: local spiller |
| |
| |
| |
| |
| **-x86-asm-syntax**\ =\ *syntax* |
| |
| Choose style of code to emit from X86 backend: |
| |
| |
| .. code-block:: perl |
| |
| =att: Emit AT&T-style assembly |
| =intel: Emit Intel-style assembly |
| |
| |
| |
| |
| |
| EXIT STATUS |
| ----------- |
| |
| |
| If **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. |
| |
| |
| SEE ALSO |
| -------- |
| |
| |
| llc|llc |