| lli - directly execute programs from LLVM bitcode | |
| ================================================= | |
| SYNOPSIS | |
| -------- | |
| :program:`lli` [*options*] [*filename*] [*program args*] | |
| DESCRIPTION | |
| ----------- | |
| :program:`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 or an | |
| interpreter. | |
| :program:`lli` is *not* an emulator. It will not execute IR of different architectures | |
| and it can only interpret (or JIT-compile) for the host architecture. | |
| The JIT compiler takes the same arguments as other tools, like :program:`llc`, | |
| but they don't necessarily work for the interpreter. | |
| If `filename` is not specified, then :program:`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 | |
| --------------- | |
| .. option:: -fake-argv0=executable | |
| Override the ``argv[0]`` value passed into the executing program. | |
| .. option:: -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. | |
| .. option:: -help | |
| Print a summary of command line options. | |
| .. option:: -load=pluginfilename | |
| Causes :program:`lli` to load the plugin (shared object) named *pluginfilename* and use | |
| it for optimization. | |
| .. option:: -stats | |
| Print statistics from the code-generation passes. This is only meaningful for | |
| the just-in-time compiler, at present. | |
| .. option:: -time-passes | |
| Record the amount of time needed for each code-generation pass and print it to | |
| standard error. | |
| .. option:: -version | |
| Print out the version of :program:`lli` and exit without doing anything else. | |
| TARGET OPTIONS | |
| -------------- | |
| .. option:: -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. | |
| .. option:: -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. | |
| .. option:: -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** | |
| .. option:: -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 | |
| ---------------------- | |
| .. option:: -disable-excess-fp-precision | |
| Disable optimizations that may increase floating point precision. | |
| .. option:: -enable-no-infs-fp-math | |
| Enable optimizations that assume no Inf values. | |
| .. option:: -enable-no-nans-fp-math | |
| Enable optimizations that assume no NAN values. | |
| .. option:: -enable-unsafe-fp-math | |
| Causes :program:`lli` to enable optimizations that may decrease floating point | |
| precision. | |
| .. option:: -soft-float | |
| Causes :program:`lli` to generate software floating point library calls instead of | |
| equivalent hardware instructions. | |
| CODE GENERATION OPTIONS | |
| ----------------------- | |
| .. option:: -code-model=model | |
| Choose the code model from: | |
| .. code-block:: text | |
| default: Target default code model | |
| small: Small code model | |
| kernel: Kernel code model | |
| medium: Medium code model | |
| large: Large code model | |
| .. option:: -disable-post-RA-scheduler | |
| Disable scheduling after register allocation. | |
| .. option:: -disable-spill-fusing | |
| Disable fusing of spill code into instructions. | |
| .. option:: -jit-enable-eh | |
| Exception handling should be enabled in the just-in-time compiler. | |
| .. option:: -join-liveintervals | |
| Coalesce copies (default=true). | |
| .. option:: -nozero-initialized-in-bss | |
| Don't place zero-initialized symbols into the BSS section. | |
| .. option:: -pre-RA-sched=scheduler | |
| Instruction schedulers available (before register allocation): | |
| .. code-block:: text | |
| =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 | |
| .. option:: -regalloc=allocator | |
| Register allocator to use (default=linearscan) | |
| .. code-block:: text | |
| =bigblock: Big-block register allocator | |
| =linearscan: linear scan register allocator =local - local register allocator | |
| =simple: simple register allocator | |
| .. option:: -relocation-model=model | |
| Choose relocation model from: | |
| .. code-block:: text | |
| =default: Target default relocation model | |
| =static: Non-relocatable code =pic - Fully relocatable, position independent code | |
| =dynamic-no-pic: Relocatable external references, non-relocatable code | |
| .. option:: -spiller | |
| Spiller to use (default=local) | |
| .. code-block:: text | |
| =simple: simple spiller | |
| =local: local spiller | |
| .. option:: -x86-asm-syntax=syntax | |
| Choose style of code to emit from X86 backend: | |
| .. code-block:: text | |
| =att: Emit AT&T-style assembly | |
| =intel: Emit Intel-style assembly | |
| EXIT STATUS | |
| ----------- | |
| If :program:`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 | |
| -------- | |
| :program:`llc` |