LLI(1)

๐Ÿ“ฆ
version 13.0.1 ยท 5 versions
, in ubuntu jammy

๐ŸŒˆ LLI(1) โ€” User Commands ๐ŸŒˆ

๐Ÿ’– NAME ๐Ÿ’–

lli โ€” manual page for lli 13 ๐Ÿ’…

๐ŸŽ€ DESCRIPTION ๐ŸŽ€

Okay bestie, so this is the manual page for lli 13, and the vibe is llvm interpreter & dynamic compiler. Literally iconic.

OVERVIEW: llvm interpreter & dynamic compiler

USAGE: lli [options] <input bitcode> <program arguments>...

OPTIONS:

๐ŸŽจ Color Options: ๐ŸŽจ

  • --color โ€” use colors in output ๐Ÿ’… (default=autodetect)

โœจ General options: โœจ

  • -O=<char> โ€” optimization level, bestie. [-O0, -O1, -O2, or -O3] (default = '-O2')
  • --aarch64-neon-syntax=<value> โ€” choose the style of NEON code to emit from the AArch64 backend:
    • =generic โ€” emit generic NEON assembly
    • =apple โ€” emit Apple-style NEON assembly
  • --aarch64-use-aa โ€” enable the use of AA during codegen.
  • --abort-on-max-devirt-iterations-reached โ€” abort when the max iterations for the devirtualization CGSCC repeat pass is reached
  • --addrsig โ€” emit an address-significance table
  • --allow-ginsert-as-artifact โ€” allow G_INSERT to be considered an artifact. Hack around AMDGPU test infinite loops.
  • --amdgpu-bypass-slow-div โ€” skip 64-bit divide for dynamic 32-bit values
  • --amdgpu-disable-loop-alignment โ€” do not align and prefetch loops
  • --amdgpu-disable-power-sched โ€” disable scheduling to minimize mAI power bursts
  • --amdgpu-dpp-combine โ€” enable DPP combiner
  • --amdgpu-dump-hsa-metadata โ€” dump AMDGPU HSA Metadata
  • --amdgpu-enable-flat-scratch โ€” use flat scratch instructions
  • --amdgpu-enable-merge-m0 โ€” merge and hoist M0 initializations
  • --amdgpu-promote-alloca-to-vector-limit=<uint> โ€” maximum byte size to consider promote alloca to vector
  • --amdgpu-reserve-vgpr-for-sgpr-spill โ€” allocates one VGPR for future SGPR spill
  • --amdgpu-sdwa-peephole โ€” enable SDWA peepholer
  • --amdgpu-use-aa-in-codegen โ€” enable the use of AA during codegen.
  • --amdgpu-verify-hsa-metadata โ€” verify AMDGPU HSA Metadata
  • --amdgpu-vgpr-index-mode โ€” use GPR indexing mode instead of movrel for vector indexing
  • --arm-add-build-attributes โ€” no description in this page, bestie ๐Ÿซถ
  • --arm-implicit-it=<value> โ€” allow conditional instructions outdside of an IT block:
    • =always โ€” accept in both ISAs, emit implicit ITs in Thumb
    • =never โ€” warn in ARM, reject in Thumb
    • =arm โ€” accept in ARM, reject in Thumb
    • =thumb โ€” warn in ARM, emit implicit ITs in Thumb
  • --asm-show-inst โ€” emit internal instruction representation to assembly file
  • --atomic-counter-update-promoted โ€” do counter update using atomic fetch add for promoted counters only
  • --atomic-first-counter โ€” use atomic fetch add for the first counter in a function (usually the entry counter)
  • --basic-block-sections=<all | <function list (file)> | labels | none> โ€” emit basic blocks into separate sections
  • --bounds-checking-single-trap โ€” use one trap block per function
  • --cfg-hide-cold-paths=<number> โ€” hide blocks with relative frequency below the given value
  • --cfg-hide-deoptimize-paths โ€” no description in this page, bestie ๐Ÿซถ
  • --cfg-hide-unreachable-paths โ€” no description in this page, bestie ๐Ÿซถ
  • --code-model=<value> โ€” choose code model:
    • =tiny โ€” tiny code model
    • =small โ€” small code model
    • =kernel โ€” kernel code model
    • =medium โ€” medium code model
    • =large โ€” large code model
  • --compile-threads=<uint> โ€” choose the number of compile threads (jit-kind=orc-lazy only)
  • --cost-kind=<value> โ€” target cost kind:
    • =throughput โ€” reciprocal throughput
    • =latency โ€” instruction latency
    • =code-size โ€” code size
    • =size-latency โ€” code size and latency
  • --data-sections โ€” emit data into separate sections
  • --debug-entry-values โ€” enable debug info for the debug entry values.
  • --debugger-tune=<value> โ€” tune debug info for a particular debugger:
    • =gdb โ€” gdb
    • =lldb โ€” lldb
    • =dbx โ€” dbx
    • =sce โ€” SCE targets (e.g. PS4)
  • --debugify-level=<value> โ€” kind of debug info to add:
    • =locations โ€” locations only
    • =location+variables โ€” locations and variables
  • --debugify-quiet โ€” suppress verbose debugify output
  • --denormal-fp-math=<value> โ€” select which denormal numbers the code is permitted to require:
    • =ieee โ€” IEEE 754 denormal numbers
    • =preserve-sign โ€” the sign of a flushed-to-zero number is preserved in the sign of 0
    • =positive-zero โ€” denormals are flushed to positive zero
  • --denormal-fp-math-f32=<value> โ€” select which denormal numbers the code is permitted to require for float:
    • =ieee โ€” IEEE 754 denormal numbers
    • =preserve-sign โ€” the sign of a flushed-to-zero number is preserved in the sign of 0
    • =positive-zero โ€” denormals are flushed to positive zero
  • --disable-i2p-p2i-opt โ€” disables inttoptr/ptrtoint roundtrip optimization
  • --disable-lazy-compilation โ€” disable JIT lazy compilation
  • --disable-promote-alloca-to-lds โ€” disable promote alloca to LDS
  • --disable-promote-alloca-to-vector โ€” disable promote alloca to vector
  • --disable-tail-calls โ€” never emit tail calls
  • --dlopen=<string> โ€” dynamic libraries to load before linking
  • --do-counter-promotion โ€” do counter register promotion
  • --dot-cfg-mssa=<file name for generated dot file> โ€” file name for generated dot file
  • --dwarf-version=<int> โ€” Dwarf version
  • --dwarf64 โ€” generate debugging info in the 64-bit DWARF format
  • --emit-call-site-info โ€” emit call site debug information, if debug information is enabled.
  • --emscripten-cxx-exceptions-allowed=<string> โ€” the list of function names in which Emscripten-style exception handling is enabled (see emscripten EMSCRIPTEN_CATCHING_ALLOWED options)
  • --emulated-tls โ€” use emulated TLS model
  • --enable-cache-manager โ€” use cache manager to save/load modules
  • --enable-cse-in-irtranslator โ€” should enable CSE in irtranslator
  • --enable-cse-in-legalizer โ€” should enable CSE in Legalizer
  • --enable-emscripten-cxx-exceptions โ€” WebAssembly Emscripten-style exception handling
  • --enable-emscripten-sjlj โ€” WebAssembly Emscripten-style setjmp/longjmp handling
  • --enable-gvn-hoist โ€” enable the GVN hoisting pass (default = off)
  • --enable-gvn-memdep โ€” no description in this page, bestie ๐Ÿซถ
  • --enable-gvn-sink โ€” enable the GVN sinking pass (default = off)
  • --enable-load-in-loop-pre โ€” no description in this page, bestie ๐Ÿซถ
  • --enable-load-pre โ€” no description in this page, bestie ๐Ÿซถ
  • --enable-loop-simplifycfg-term-folding โ€” no description in this page, bestie ๐Ÿซถ
  • --enable-name-compression โ€” enable name/filename string compression
  • --enable-no-infs-fp-math โ€” enable FP math optimizations that assume no +-Infs
  • --enable-no-nans-fp-math โ€” enable FP math optimizations that assume no NaNs
  • --enable-no-signed-zeros-fp-math โ€” enable FP math optimizations that assume the sign of 0 is insignificant
  • --enable-no-trapping-fp-math โ€” enable setting the FP exceptions build attribute not to use exceptions
  • --enable-split-backedge-in-load-pre โ€” no description in this page, bestie ๐Ÿซถ
  • --enable-unsafe-fp-math โ€” enable optimizations that may decrease FP precision
  • --entry-function=<function> โ€” specify the entry function (default = 'main') of the executable
  • --exception-model=<value> โ€” exception model:
    • =default โ€” default exception handling model
    • =dwarf โ€” DWARF-like CFI based exception handling
    • =sjlj โ€” SjLj exception handling
    • =arm โ€” ARM EHABI exceptions
    • =wineh โ€” Windows exception model
    • =wasm โ€” WebAssembly exception handling
  • --experimental-debug-variable-locations โ€” uses the experimental new value-tracking variable locations ๐Ÿงช lowkey bleeding-edge, bestie, tread carefully.
  • --extra-archive=<input archive> โ€” extra archive files to be loaded ๐Ÿ“ฆ pile 'em on.
  • --extra-module=<input bitcode> โ€” extra modules to be loaded โœจ more bitcode, more problems (jk ily).
  • --extra-object=<input object> โ€” extra object files to be loaded ๐Ÿงฉ.
  • --fake-argv0=<executable> โ€” overrides the 'argv[0]' value that gets passed into the executing program ๐ŸŽญ your program thinks it's someone else. iconic behaviour honestly.
  • --fatal-warnings โ€” treats warnings as errors ๐Ÿ’€ one tiny warning and the whole thing folds. dramatic? yes. effective? also yes.
  • --filetype=<value> โ€” picks a file type for you (heads up: not all types are supported by all targets):
    • =asm โ€” emit an assembly ('.s') file โœ๏ธ
    • =obj โ€” emit a native object ('.o') file ๐Ÿ”ง
    • =null โ€” emit nothing, for performance testing ๐Ÿซฅ ghost output, giving nothing and slaying while doing it.
  • --float-abi=<value> โ€” chooses the float ABI type ๐ŸŽ€:
    • =default โ€” target default float ABI type
    • =soft โ€” soft float ABI (implied by -soft-float)
    • =hard โ€” hard float ABI (uses FP registers) ๐Ÿ’ช
  • --force-dwarf-frame-section โ€” ALWAYS emit a debug frame section ๐Ÿฆ‹ no exceptions, no vibes-based skipping.
  • --force-interpreter โ€” forces interpretation: disables JIT ๐ŸŒ walking so the JIT can't run.
  • --force-opaque-pointers โ€” forces all pointers to be opaque pointers ๐Ÿ•ถ๏ธ no peeking at the pointee type, we're mysterious here.
  • --fp-contract=<value> โ€” enables aggressive formation of fused FP ops ๐Ÿ”ฅ:
    • =fast โ€” fuse FP ops whenever profitable
    • =on โ€” only fuse 'blessed' FP ops ๐Ÿ˜‡
    • =off โ€” only fuse FP ops when the result won't be affected ๐Ÿ™…โ€โ™€๏ธ safest option, ngl.
  • --frame-pointer=<value> โ€” specifies the frame pointer elimination optimization ๐Ÿ–ผ๏ธ:
    • =all โ€” disable frame pointer elimination
    • =non-leaf โ€” disable frame pointer elimination for non-leaf frame
    • =none โ€” enable frame pointer elimination (so you keep all of them)
  • --function-sections โ€” emits functions into separate sections ๐Ÿ—‚๏ธ one function, one little home.
  • --gpsize=<uint> โ€” Global Pointer Addressing Size ๐ŸŽฏ the default size is 8.
  • --hash-based-counter-split โ€” renames the counter variable of a comdat function based on cfg hash #๏ธโƒฃ hashing my way through the counter situation.
  • --hot-cold-split โ€” enables the hot-cold splitting pass ๐ŸŒก๏ธ๐Ÿ”ฅโ„๏ธ hot code over here, cold code over there.
  • --ignore-xcoff-visibility โ€” doesn't emit the visibility attribute for asm in AIX OS, or gives all symbols 'unspecified' visibility in XCOFF object file ๐Ÿ™ˆ we simply do not perceive the visibility.
  • --import-all-index โ€” imports all external functions in index ๐Ÿ“ฅ every single one, no picksies.
  • --incremental-linker-compatible โ€” when used with filetype=obj, emits an object file that can be used with an incremental linker ๐Ÿ” future-proofed for your little linky-linker.
  • --instcombine-code-sinking โ€” enables code sinking ๐Ÿงœโ€โ™€๏ธ sunk, but make it optimization.
  • --instcombine-guard-widening-window=<uint> โ€” how wide an instruction window to bypass looking for another guard ๐ŸชŸ.
  • --instcombine-max-iterations=<uint> โ€” limits the maximum number of instruction combining iterations ๐ŸŒ€ don't loop forever bestie, we have plans.
  • --instcombine-max-num-phis=<uint> โ€” maximum phis to handle in intptr/ptrint folding ๐ŸŒฟ phi phi phi.
  • --instcombine-maxarray-size=<uint> โ€” maximum array size considered when doing a combine ๐Ÿ“.
  • --instcombine-negator-enabled โ€” should we attempt to sink negations? ๐Ÿค” genuinely a whole question.
  • --instcombine-negator-max-depth=<uint> โ€” the maximal lookup depth when checking for viability of negation sinking ๐Ÿ•ณ๏ธ deep dive but make it negations.
  • --instrprof-atomic-counter-update-all โ€” makes all profile counter updates atomic (for testing only) โš›๏ธ literally says testing only, so yk. testing only.
  • --internalize-public-api-file=<filename> โ€” a file containing a list of symbol names to preserve ๐Ÿ›ก๏ธ protect these symbols at all costs.
  • --internalize-public-api-list=<list> โ€” a list of symbol names to preserve ๐Ÿ“‹ same energy, but inline.
  • --iterative-counter-promotion โ€” allows counter promotion across the whole loop nest ๐Ÿ”„ the whole nest, not just the vibes.
  • --jd=<string> โ€” specifies the JITDylib to be used for any subsequent -extra-module arguments ๐Ÿท๏ธ sets the stage for what comes next.
  • --jit-kind=<value> โ€” chooses the underlying JIT kind ๐ŸŽ›๏ธ:
    • =mcjit โ€” MCJIT
    • =orc โ€” Orc JIT
    • =orc-lazy โ€” Orc-based lazy JIT ๐Ÿ›‹๏ธ
  • --jit-linker=<value> โ€” chooses the dynamic linker/loader ๐Ÿ”—:
    • =default โ€” default for platform and JIT-kind
    • =rtdyld โ€” RuntimeDyld
    • =jitlink โ€” Orc-specific linker
  • --load=<pluginfilename> โ€” loads the specified plugin ๐Ÿ”Œ plug it in, plug it in.
  • --lto-embed-bitcode=<value> โ€” embeds LLVM bitcode in object files produced by LTO ๐Ÿซถ lil bitcode keepsake inside your object file:
    • =none โ€” do not embed
    • =optimized โ€” embed after all optimization passes โœจ
    • =post-merge-pre-opt โ€” embed post merge, but before optimizations
  • --lto-pass-remarks-filter=<regex> โ€” only records optimization remarks from passes whose names match the given regular expression ๐ŸŽฏ filtered, curated, on-brand.
  • --lto-pass-remarks-format=<format> โ€” the format used for serializing remarks (default: YAML) ๐Ÿ“.
  • --lto-pass-remarks-output=<filename> โ€” output filename for pass remarks ๐Ÿ“„.
  • --march=<string> โ€” architecture to generate code for (see --version) ๐Ÿ—๏ธ.
  • --matrix-default-layout=<value> โ€” sets the default matrix layout ๐Ÿงฎ:
    • =column-major โ€” use column-major layout
    • =row-major โ€” use row-major layout
  • --mattr=<a1,+a2,-a3,...> โ€” target specific attributes (-mattr=help for details) ๐ŸŽš๏ธ plus for on, minus for off, that's the whole bit.
  • --max-counter-promotions=<int> โ€” max number of allowed counter promotions ๐Ÿšฆ.
  • --max-counter-promotions-per-loop=<uint> โ€” max number of counter promotions per loop, to avoid increasing register pressure too much ๐Ÿ˜ค protect the registers at all costs.
  • --mc-relax-all โ€” when used with filetype=obj, relaxes all fixups in the emitted object file ๐Ÿ˜Œ๐Ÿง˜โ€โ™€๏ธ everything's fine, everything's relaxed.
  • --mcjit-remote-process=<filename> โ€” specifies the filename of the process to launch for remote MCJIT execution ๐ŸŒ if none is specified, remote execution will be simulated in-process.
  • --mcpu=<cpu-name> โ€” targets a specific cpu type (-mcpu=help for details) ๐Ÿ’ป.
  • --meabi=<value> โ€” sets EABI type (default depends on triple) ๐Ÿงฌ:
    • =default โ€” triple default EABI version
    • =4 โ€” EABI version 4
    • =5 โ€” EABI version 5
    • =gnu โ€” EABI GNU
  • --merror-missing-parenthesis โ€” errors for missing parenthesis around predicate registers ๐Ÿ˜ฑ the parenthesis police have arrived.
  • --merror-noncontigious-register โ€” errors for register names that aren't contigious ๐Ÿšจ (yes, spelled exactly like that, she's quirky).
  • --mhvx โ€” enables Hexagon Vector eXtensions ๐Ÿ.
  • --mhvx=<value> โ€” enables Hexagon Vector eXtensions, but pick your version ๐Ÿโœจ:
    • =v60 โ€” build for HVX v60
    • =v62 โ€” build for HVX v62
    • =v65 โ€” build for HVX v65
    • =v66 โ€” build for HVX v66
    • =v67 โ€” build for HVX v67
    • =v68 โ€” build for HVX v68
  • --mips-compact-branches=<value> โ€” MIPS specific: compact branch policy ๐ŸŒด:
    • =never โ€” do not use compact branches if possible
    • =optimal โ€” use compact branches where appropriate (default) ๐Ÿ‘‘
    • =always โ€” always use compact branches if possible
  • --mips16-constant-islands โ€” enables mips16 constant islands ๐Ÿ๏ธ.
  • --mips16-hard-float โ€” enables mips16 hard float ๐Ÿ’ช.
  • --mir-strip-debugify-only โ€” should mir-strip-debug only strip debug info from debugified modules by default ๐Ÿคทโ€โ™€๏ธ the eternal question.
  • --mno-compound โ€” disables looking for compound instructions for Hexagon ๐Ÿšซ.
  • --mno-fixup โ€” disables fixing up resolved relocations for Hexagon ๐Ÿ”ง๐Ÿšซ.
  • --mno-ldc1-sdc1 โ€” expands double precision loads and stores to their single precision counterparts โž— double becomes two singles, math is mathing.
  • --mno-pairing โ€” disables looking for duplex instructions for Hexagon ๐Ÿ‘ฏโ€โ™€๏ธ no pairing, we're independent.
  • --mtriple=<string> โ€” overrides target triple for module ๐ŸŽฏ.
  • --mwarn-missing-parenthesis โ€” warns for missing parenthesis around predicate registers โš ๏ธ.
  • --mwarn-noncontigious-register โ€” warns for register names that arent contigious โš ๏ธ (again, exact spelling, she's committed to the bit).
  • --mwarn-sign-mismatch โ€” warns for mismatching a signed and unsigned value โš ๏ธ signed vs unsigned beef, and honestly valid.
  • --no-deprecated-warn โ€” suppresses all deprecated warnings ๐Ÿคซ we do not wish to hear it.
  • --no-discriminators โ€” disables generation of discriminator information ๐Ÿšซ๐Ÿท๏ธ.
  • --no-process-syms โ€” does not resolve lli process symbols in JIT'd code ๐Ÿซฅ.
  • --no-type-check โ€” suppresses type errors (Wasm) ๐Ÿ™ˆ type errors? never heard of her.
  • --no-warn โ€” Suppress all warnings. Every single one. Periodt. ๐Ÿ”‡
  • --no-xray-index โ€” Don't emit the xray_fn_idx section. Simple. ๐Ÿšซ
  • --nozero-initialized-in-bss โ€” Don't place zero-initialized symbols into the bss section. Keep those zeros out of bss, bestie. โœจ
  • --nvptx-sched4reg โ€” NVPTX Specific: schedule for register pressue. (Yes, that spelling is in the original. ๐Ÿ’…)
  • --object-cache-dir=<string> โ€” Directory to store cached object files. It must be user writable. ๐Ÿ“
  • --per-module-lazy โ€” Performs lazy compilation on whole module boundaries rather than individual functions.
  • --poison-checking-function-local โ€” Check that returns are non-poison. This one is for testing. ๐Ÿงช
  • --pseudo-probe-for-profiling โ€” Emit pseudo probes for AutoFDO.
  • --r600-ir-structurize โ€” Use StructurizeCFG IR pass.
  • --rdf-dump โ€” No description given โ€” it's just the flag. ๐Ÿซฅ
  • --rdf-limit=<uint> โ€” No description given either. The uint is right there, though. ๐Ÿ˜ญ
  • --relax-elf-relocations โ€” Emit GOTPCRELX/REX_GOTPCRELX instead of GOTPCREL on x86-64 ELF.
  • --relocation-model=<value> โ€” Choose relocation model. Pick your fighter:
    • static โ€” Non-relocatable code.
    • pic โ€” Fully relocatable, position independent code.
    • dynamic-no-pic โ€” Relocatable external references, non-relocatable code.
    • ropi โ€” Code and read-only data relocatable, accessed PC-relative.
    • rwpi โ€” Read-write data relocatable, accessed relative to static base.
    • ropi-rwpi โ€” Combination of ropi and rwpi.
  • --remote-mcjit โ€” Execute MCJIT'ed code in a separate process.
  • --runtime-counter-relocation โ€” Enable relocating counters at runtime.
  • --safepoint-ir-verifier-print-only โ€” No description given. Just vibes and a very long flag name. ๐Ÿซ 
  • --sample-profile-check-record-coverage=<N> โ€” Emit a warning if less than N% of records in the input profile are matched to the IR.
  • --sample-profile-check-sample-coverage=<N> โ€” Emit a warning if less than N% of samples in the input profile are matched to the IR.
  • --sample-profile-max-propagate-iterations=<uint> โ€” Maximum number of iterations to go through when propagating sample block/edge weights through the CFG.
  • --skip-ret-exit-block โ€” Suppress counter promotion if exit blocks contain ret.
  • --soft-float โ€” Generate software floating point library calls.
  • --speculative-counter-promotion-max-exiting=<uint> โ€” The max number of exiting blocks of a loop to allow speculative counter promotion.
  • --speculative-counter-promotion-to-loop โ€” When the option is false, if the target block is in a loop, the promotion will be disallowed unless the promoted counter update can be further/iteratively promoted into an acyclic region.
  • --split-machine-functions โ€” Split out cold basic blocks from machine functions based on profile information.
  • --stack-size-section โ€” Emit a section containing stack size metadata.
  • --stack-symbol-ordering โ€” Order local stack symbols.
  • --stackrealign โ€” Force align the stack to the minimum alignment.
  • --strict-dwarf โ€” use strict dwarf.
  • --summary-file=<string> โ€” The summary file to use for function importing.
  • --tail-predication=<value> โ€” MVE tail-predication pass options. Pick one:
    • disabled โ€” Don't tail-predicate loops.
    • enabled-no-reductions โ€” Enable tail-predication, but not for reduction loops.
    • enabled โ€” Enable tail-predication, including reduction loops.
    • force-enabled-no-reductions โ€” Enable tail-predication, but not for reduction loops, and force this which might be unsafe.
    • force-enabled โ€” Enable tail-predication, including reduction loops, and force this which might be unsafe.
  • --tailcallopt โ€” Turn fastcc calls into tail calls by (potentially) changing ABI.
  • --thinlto-assume-merged โ€” Assume the input has already undergone ThinLTO function importing and the other pre-optimization pipeline changes.
  • --thread-entry=<string> โ€” calls the given entry-point on a new thread (jit-kind=orc-lazy only).
  • --thread-model=<value> โ€” Choose threading model:
    • posix โ€” POSIX thread model.
    • single โ€” Single thread model.
  • --threads=<int> โ€” No description given. It's just --threads=<int>. ๐Ÿซฅ
  • --tls-size=<uint> โ€” Bit size of immediate TLS offsets.
  • --unique-basic-block-section-names โ€” Give unique names to every basic block section.
  • --unique-section-names โ€” Give unique names to every section.
  • --use-ctors โ€” Use .ctors instead of .init_array.
  • --vec-extabi โ€” Enable the AIX Extended Altivec ABI.
  • --verify-region-info โ€” Verify region info. Heads up: this one is time consuming.
  • --vp-counters-per-site=<number> โ€” The average number of profile counters allocated per value profiling site.
  • --vp-static-alloc โ€” Do static counter allocation for value profiler.
  • --x86-align-branch=<string> โ€” Specify types of branches to align (plus separated list of types):
    • jcc โ€” indicates conditional jumps
    • fused โ€” indicates fused conditional jumps
    • jmp โ€” indicates direct unconditional jumps
    • call โ€” indicates direct and indirect calls
    • ret โ€” indicates rets
    • indirect โ€” indicates indirect unconditional jumps
  • --x86-align-branch-boundary=<uint> โ€” Control how the assembler should align branches with NOP. If the boundary's size is not 0, it should be a power of 2 and no less than 32. Branches will be aligned to prevent from being across or against the boundary of specified size. The default value 0 does not align branches.
  • --x86-branches-within-32B-boundaries โ€” Align selected instructions to mitigate negative performance impact of Intel's micro code update for errata skx102. May break assumptions about labels corresponding to particular instructions, and should be used with caution.
  • --x86-pad-max-prefix-size=<uint> โ€” Maximum number of prefixes to use for padding.
  • --xcoff-traceback-table โ€” Emit the XCOFF traceback table.

๐Ÿงธ Generic Options ๐Ÿงธ

  • --help โ€” Display available options (--help-hidden for more).
  • --help-list โ€” Display list of available options (--help-list-hidden for more).
  • --version โ€” Display the version of this program.

๐Ÿชฉ Polly Options: Configure the polly loop optimizer ๐Ÿชฉ

  • --polly โ€” Enable the polly optimizer (with -O1, -O2 or -O3).
  • --polly-2nd-level-tiling โ€” Enable a 2nd level loop of loop tiling.
  • --polly-ast-print-accesses โ€” Print memory access functions.
  • --polly-context=<isl parameter set> โ€” Provide additional constraints on the context parameters.
  • --polly-dce-precise-steps=<int> โ€” The number of precise steps between two approximating iterations. A value of -1 schedules another approximation stage before the actual dead code elimination.
  • --polly-delicm-max-ops=<int> โ€” Maximum number of isl operations to invest for lifetime analysis; 0=no limit.
  • --polly-detect-full-functions โ€” Allow the detection of full functions.
  • --polly-dump-after โ€” Dump module after Polly transformations into a file suffixed with -after.
  • --polly-dump-after-file=<string> โ€” Dump module after Polly transformations to the given file.
  • --polly-dump-before โ€” Dump module before Polly transformations into a file suffixed with -before.
  • --polly-dump-before-file=<string> โ€” Dump module before Polly transformations to the given file.
  • --polly-enable-simplify โ€” Simplify SCoP after optimizations.
  • --polly-ignore-func=<string> โ€” Ignore functions that match a regex. Multiple regexes can be comma separated. Scop detection will ignore all functions that match ANY of the regexes provided.
  • --polly-isl-arg=<argument> โ€” Option passed to ISL.
  • --polly-on-isl-error-abort โ€” Abort if an isl error is encountered.
  • --polly-only-func=<string> โ€” ok so this one means Polly only touches functions that match a regex ๐ŸŽฏ and yes bestie you can comma-separate multiple regexes. Scop detection still runs on every function that matches ANY of the regexes you handed it.
  • --polly-only-region=<identifier> โ€” restrict the whole thing to certain regions. The identifier you pass has to show up in the name of that region's entry block, no exceptions โœจ
  • --polly-only-scop-detection โ€” scop detection and literally nothing else. No other optimizations, we're just looking ๐Ÿ‘€
  • --polly-optimized-scops โ€” Polly dumps the polyhedral description of the Scops that got optimized with the isl scheduling optimizer, plus the set of post-scheduling transformations applied on the schedule tree ๐Ÿฆ‹ (yes it's a mouthful, it's giving compiler-internals realness)
  • --polly-parallel โ€” generate thread parallel code. isl codegen only, so don't come for me ๐Ÿ™ˆ
  • --polly-parallel-force โ€” force that thread parallel code out the door, ignoring any cost model whatsoever ๐Ÿ’…
  • --polly-pattern-matching-based-opts โ€” do optimizations based on pattern matching ๐Ÿ”
  • --polly-pragma-based-opts โ€” apply user-directed transformation from metadata โœจ
  • --polly-process-unprofitable โ€” go ahead and process scops that are unlikely to benefit from Polly optimizations. Like, they're probably not gonna pop off, but you can try anyway ๐Ÿ˜ญ
  • --polly-register-tiling โ€” enable register tiling ๐ŸŽ€
  • --polly-report โ€” print info about what Polly's been up to. Basically Polly's storytime ๐ŸŒธ
  • --polly-show โ€” highlight the code regions that will be optimized, in a CFG (BBs and LLVM-IR instructions) ๐Ÿ”ฅ
  • --polly-show-only โ€” same highlight energy, but CFG only (BBs) ๐Ÿซถ
  • --polly-stmt-granularity=<value> โ€” picks the algorithm used for splitting basic blocks into multiple statements. The values are:
    • bb โ€” one statement per basic block
    • scalar-indep โ€” scalar independence heuristic
    • store โ€” store-level granularity
  • --polly-target=<value> โ€” the hardware you're targeting ๐Ÿ’ป
    • cpu โ€” generate CPU code
  • --polly-tiling โ€” enable loop tiling โญ
  • --polly-vectorizer=<value> โ€” select the vectorization strategy. Your choices, bestie:
    • none โ€” no vectorization
    • polly โ€” Polly's internal vectorizer
    • stripmine โ€” strip-mine outer loops so the loop-vectorizer triggers

okay that's the whole page, we did it ๐ŸŽ‰ go forth and lli responsibly, mwah ๐Ÿ’–

this was lli 13 from July 2023, page LLI(1) โ€” see you in the next one, bestie ๐ŸŽ€

๐Ÿ“ฆ where this page comes from