LLI(1)

πŸ“¦
version 16.0.6 Β· 3 versions
, in ubuntu noble

✨ NAME ✨

lli β€” the manual page for lli 16, bestie πŸ’–


πŸ¦‹ DESCRIPTION πŸ¦‹

OVERVIEW: llvm interpreter & dynamic compiler β€” yeah it literally interprets your bitcode and dynamically compiles it, main character energy fr fr πŸ‘‘

USAGE:

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

OPTIONS:

πŸŽ€ Color Options πŸŽ€

  • --color β€” do we want colors in the output? (default=autodetect) πŸŒˆπŸ’…

πŸ’œ General options πŸ’œ

  • -O <char> β€” picks your optimization level, and the only valid chars are [-O0, -O1, -O2, or -O3] (default = '-O2') πŸ”₯
  • --aarch64-neon-syntax=<value> β€” chooses which style of NEON code the AArch64 backend emits, obsessed:
    • =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
  • --align-loops=<uint> β€” the default alignment for loops
  • --allow-ginsert-as-artifact β€” allow G_INSERT to be considered an artifact. It's a hack around AMDGPU test infinite loops, iykyk πŸ™ˆ
  • --amdgpu-bypass-slow-div β€” skip the 64-bit divide for dynamic 32-bit values
  • --amdgpu-disable-loop-alignment β€” do not align and prefetch loops
  • --amdgpu-dpp-combine β€” enable the DPP combiner
  • --amdgpu-dump-hsa-metadata β€” dump AMDGPU HSA Metadata
  • --amdgpu-enable-merge-m0 β€” merge and hoist M0 initializations
  • --amdgpu-enable-power-sched β€” enable scheduling to minimize mAI power bursts
  • --amdgpu-promote-alloca-to-vector-limit=<uint> β€” the maximum byte size to consider when promoting alloca to vector
  • --amdgpu-sdwa-peephole β€” enable the 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 β€” (the page gives no description for this one bestie, it's just mysterious like that πŸ’€)
  • --arm-implicit-it=<value> β€” allow conditional instructions outside 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 the internal instruction representation to the assembly file
  • --atomic-counter-update-promoted β€” do counter update using atomic fetch add, but only for promoted counters
  • --atomic-first-counter β€” use atomic fetch add for the first counter in a function (usually that's 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 on the page, she's quiet 🀫)
  • --cfg-hide-unreachable-paths β€” (also no description, we love a low-key option)
  • --code-model=<value> β€” choose your code model, iconic:
    • =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
  • --cs-profile-generate β€” perform context sensitive PGO instrumentation
  • --cs-profile-path=<string> β€” context sensitive profile file path
  • --data-sections β€” emit data into separate sections
  • --debug-entry-values β€” enable debug info for the debug entry values.
  • --debug-info-correlate β€” use debug info to correlate profiles.
  • --debugger-tune=<value> β€” tune debug info for a particular debugger:
    • =gdb β€” gdb
    • =lldb β€” lldb
    • =dbx β€” dbx
    • =sce β€” SCE targets (e.g. PS4)
  • --debugify-func-limit=<ulong> β€” set the max number of processed functions per pass.
  • --debugify-level=<value> β€” the 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> β€” same deal as above, but 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 the 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, periodt 🚫
  • --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 the 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.
  • --emit-dwarf-unwind=<value> β€” whether to emit DWARF EH frame entries:
    • =always β€” Always emit EH frame entries
    • =no-compact-unwind β€” Only emit EH frame entries when compact unwind is not available
    • =default β€” Use target platform default
  • --emscripten-cxx-exceptions-allowed=<string> β€” the list of function names in which Emscripten-style exception handling is enabled (see the emscripten EMSCRIPTEN_CATCHING_ALLOWED options)
  • --emulated-tls β€” use the emulated TLS model
  • --enable-approx-func-fp-math β€” enable FP math optimizations that assume approx func
  • --enable-cache-manager β€” use the 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 given, she's keeping it cute and cryptic πŸ’…)
  • --enable-gvn-sink β€” enable the GVN sinking pass (default = off)
  • --enable-jmc-instrument β€” instrument functions with a call to __CheckForDebuggerJustMyCode
  • --enable-load-in-loop-pre β€” (no description on the page 🌸)
  • --enable-load-pre β€” (also no description, iconic minimalism)
  • --enable-loop-simplifycfg-term-folding β€” (no description, just vibes ✨)
  • --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

okay bestie that's not even all of it β€” more options are literally coming, keep scrolling πŸ’–

  • --enable-no-signed-zeros-fp-math β€” turns on FP math optimizations that assume the sign of 0 is insignificant. She's assuming, bestie. ✨
  • --enable-no-trapping-fp-math β€” enables setting the FP exceptions build attribute not to use exceptions.
  • --enable-split-backedge-in-load-pre β€” the original leaves this one blank, so I'm not inventing tea. πŸ’…
  • --enable-unsafe-fp-math β€” enables optimizations that may decrease FP precision. You've been warned, babes.
  • --entry-function=<function> β€” specify the entry function (default = 'main') of the executable.
  • --exception-model=<value> β€” exception model. Pick your fighter:
    • =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 β€” use experimental new value-tracking variable locations. Experimental, so it's giving beta energy. πŸ§ͺ
  • --extra-archive=<input archive> β€” extra archive files to be loaded.
  • --extra-module=<input bitcode> β€” extra modules to be loaded.
  • --extra-object=<input object> β€” extra object files to be loaded.
  • --fake-argv0=<executable> β€” override the 'argv[0]' value passed into the executing program.
  • --fatal-warnings β€” treat warnings as errors. Periodt. πŸ’…
  • --filetype=<value> β€” choose a file type (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
  • --float-abi=<value> β€” choose 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.
  • --force-interpreter β€” force interpretation: disable JIT.
  • --fp-contract=<value> β€” enable 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.
  • --frame-pointer=<value> β€” specify frame pointer elimination optimization:
    • =all β€” disable frame pointer elimination
    • =non-leaf β€” disable frame pointer elimination for non-leaf frame
    • =none β€” enable frame pointer elimination
  • --fs-profile-debug-bw-threshold=<uint> β€” only show debug message if the source branch weight is greater than this value.
  • --fs-profile-debug-prob-diff-threshold=<uint> β€” only show debug message if the branch probility is greater than this value (in percentage). (Keeping the original spelling, bestie πŸ’œ)
  • --function-sections β€” emit functions into separate sections.
  • --generate-merged-base-profiles β€” when generating nested context-sensitive profiles, always generate extra base profile for function with all its context profiles merged into it.
  • --gpsize=<uint> β€” Global Pointer Addressing Size. The default size is 8.
  • --hash-based-counter-split β€” rename counter variable of a comdat function based on cfg hash.
  • --hot-cold-split β€” enable hot-cold splitting pass.
  • --ignore-xcoff-visibility β€” not emit the visibility attribute for asm in AIX OS or give all symbols 'unspecified' visibility in XCOFF object file.
  • --import-all-index β€” import all external functions in index.
  • --incremental-linker-compatible β€” when used with filetype=obj, emit an object file which can be used with an incremental linker.
  • --instcombine-code-sinking β€” enable code sinking.
  • --instcombine-guard-widening-window=<uint> β€” how wide an instruction window to bypass looking for another guard.
  • --instcombine-max-iterations=<uint> β€” limit the maximum number of instruction combining iterations.
  • --instcombine-max-num-phis=<uint> β€” maximum number phis to handle in intptr/ptrint folding.
  • --instcombine-max-sink-users=<uint> β€” maximum number of undroppable users for instruction sinking.
  • --instcombine-maxarray-size=<uint> β€” maximum array size considered when doing a combine.
  • --instcombine-negator-enabled β€” should we attempt to sink negations? (Yes, bestie, yes.)
  • --instcombine-negator-max-depth=<uint> β€” what is the maximal lookup depth when trying to check for viability of negation sinking.
  • --instrprof-atomic-counter-update-all β€” make all profile counter updates atomic (for testing only).
  • --internalize-public-api-file=<filename> β€” a file containing list of symbol names to preserve.
  • --internalize-public-api-list=<list> β€” a list of symbol names to preserve.
  • --iterative-counter-promotion β€” allow counter promotion across the whole loop nest.
  • --jd=<string> β€” specifies the JITDylib to be used for any subsequent -extra-module arguments.
  • --jit-kind=<value> β€” choose underlying JIT kind:
    • =mcjit β€” MCJIT
    • =orc β€” Orc JIT
    • =orc-lazy β€” Orc-based lazy JIT.
  • --jit-linker=<value> β€” choose the dynamic linker/loader:
    • =default β€” default for platform and JIT-kind
    • =rtdyld β€” RuntimeDyld
    • =jitlink β€” Orc-specific linker
  • --load=<pluginfilename> β€” load the specified plugin.
  • --lower-global-dtors-via-cxa-atexit β€” lower llvm.global_dtors (global destructors) via __cxa_atexit.
  • --lto-aix-system-assembler=<path> β€” path to a system assembler, picked up on AIX only.
  • --lto-embed-bitcode=<value> β€” embed LLVM bitcode in object files produced by LTO:
    • =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 record optimization remarks from passes whose names match the given regular expression.
  • --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
  • --matrix-print-after-transpose-opt β€” the original just leaves this blank, so no extra lore from me πŸ’…
  • --mattr=<a1,+a2,-a3,...> β€” target specific attributes (-mattr=help for details).
  • --max-counter-promotions=<int> β€” max number of allowed counter promotions.
  • --max-counter-promotions-per-loop=<uint> β€” max number counter promotions per loop to avoid increasing register pressure too much.
  • --mc-relax-all β€” when used with filetype=obj, relax all fixups in the emitted object file.
  • --mcabac β€” tbd. (That's literally what it says, bestie πŸ’€)
  • --mcjit-remote-process=<filename> β€” specify 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> β€” target a specific cpu type (-mcpu=help for details).
  • --meabi=<value> β€” set 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 β€” error for missing parenthesis around predicate registers.
  • --merror-noncontigious-register β€” error for register names that aren't contigious. (Spelling kept exactly as the manpage gave it πŸ’œ)
  • --mhvx β€” enable Hexagon Vector eXtensions.
  • --mhvx=<value> β€” enable Hexagon Vector eXtensions:
    • =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
    • =v69 β€” build for HVX v69
    • =v71 β€” build for HVX v71
    • =v73 β€” build for HVX v73
  • --mips-compact-branches=<value> β€” MIPS Specific: Compact branch policy.

(okay so we're still in the middle of the option buffet, and this first little trio is the tail end of the compact-branches option from before β€” carry on 🫢)

  • =never β€” bestie, do not use compact branches if you can possibly help it.
  • =optimal β€” use compact branches where it actually makes sense (this is the default, btw πŸ’…).
  • =always β€” always use compact branches whenever possible, no thoughts, head empty.

  • --mips16-constant-islands β€” turn on mips16 constant islands ✨
  • --mips16-hard-float β€” turn on mips16 hard float.
  • --mir-strip-debugify-only β€” should mir-strip-debug only strip debug info from debugified modules by default? πŸ‘€
  • --misexpect-tolerance=<uint> β€” stops diagnostics from being emitted when profile counts are within N% of the threshold.
  • --mno-compound β€” for Hexagon: stop looking for compound instructions.
  • --mno-fixup β€” for Hexagon: stop fixing up resolved relocations.
  • --mno-ldc1-sdc1 β€” expand double precision loads and stores into their single precision counterparts πŸ“
  • --mno-pairing β€” for Hexagon: stop looking for duplex instructions.
  • --mtriple=<string> β€” override the target triple for the module. main character energy for your build config.
  • --mwarn-missing-parenthesis β€” warn when there's a missing parenthesis around predicate registers.
  • --mwarn-noncontigious-register β€” warn when register names aren't contiguous.
  • --mwarn-sign-mismatch β€” warn when a signed value and an unsigned value don't match up 😭
  • --no-deprecated-warn β€” suppress all deprecated warnings.
  • --no-discriminators β€” stop generating discriminator information.
  • --no-process-syms β€” don't resolve lli process symbols inside JIT'd code.
  • --no-type-check β€” suppress type errors (this one's for Wasm).
  • --no-warn β€” suppress all warnings. silence, iconic, periodt.
  • --no-xray-index β€” don't emit the xray_fn_idx section.
  • --nozero-initialized-in-bss β€” don't put zero-initialized symbols into the bss section.
  • --nvptx-sched4reg β€” NVPTX specific: schedule for register pressure.
  • --object-cache-dir=<string> β€” the directory where cached object files live (and it must be user writable, okay?).
  • --opaque-pointers β€” use opaque pointers ✨
  • --orc-runtime=<string> β€” use the ORC runtime from the path you give it.
  • --per-module-lazy β€” lazy compilation across whole module boundaries instead of individual functions.
  • --poison-checking-function-local β€” check that returns are non-poison (this one's for testing πŸ§ͺ).
  • --print-pipeline-passes β€” print a -passes compatible string describing the pipeline (best-effort only, so don't @ me).
  • --r600-ir-structurize β€” use the StructurizeCFG IR pass.
  • --rdf-dump β€” no description in the source, bestie, it simply exists πŸ™ˆ
  • --rdf-limit=<uint> β€” also no description. mystery behaviour, we love that for it πŸ’€
  • --relax-elf-relocations β€” emit GOTPCRELX/REX_GOTPCRELX instead of GOTPCREL on x86-64 ELF.
  • --relocation-model=<value> β€” pick your relocation model πŸŽ€
    • =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 β€” the combo meal: ropi plus 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, it's giving enigma 🌈
  • --sample-profile-check-record-coverage=<N> β€” emit a warning if less than N% of the records in the input profile actually get matched to the IR.
  • --sample-profile-check-sample-coverage=<N> β€” emit a warning if less than N% of the samples in the input profile actually get matched to the IR.
  • --sample-profile-max-propagate-iterations=<uint> β€” the max number of iterations to go through when propagating sample block/edge weights through the CFG.
  • --skip-ret-exit-block β€” suppress counter promotion when 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 that's allowed to get speculative counter promotion.
  • --speculative-counter-promotion-to-loop β€” when this option is false, and the target block is in a loop, the promotion gets disallowed unless the promoted counter update can be further/iteratively promoted into an acyclic region.
  • --split-machine-functions β€” split cold basic blocks out of 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 the stack to align to the minimum alignment.
  • --strict-dwarf β€” use strict dwarf.
  • --summary-file=<string> β€” the summary file to use for function importing.
  • --sve-tail-folding=<string> β€” control the use of vectorisation using tail-folding for SVE πŸ¦‹
    • disabled β€” no loop types will vectorize using tail-folding.
    • default β€” uses the default tail-folding settings for the target CPU.
    • all β€” all legal loop types will vectorize using tail-folding.
    • simple β€” use tail-folding for simple loops (not reductions or recurrences).
    • reductions β€” use tail-folding for loops containing reductions.
    • recurrences β€” use tail-folding for loops containing fixed order recurrences.
  • --swift-async-fp=<value> β€” decide when the Swift async frame pointer gets set.
    • =auto β€” decide based on the deployment target.
    • =always β€” always set the bit.
    • =never β€” never set the bit.
  • --tail-predication=<value> β€” the MVE tail-predication pass options πŸ‘‘
    • =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 it β€” which might be unsafe.
    • =force-enabled β€” enable tail-predication, including reduction loops, and force it β€” which might be unsafe.
  • --tailcallopt β€” turn fastcc calls into tail calls by (potentially) changing the ABI. yes, the ABI. buckle up.
  • --thinlto-assume-merged β€” assume the input has already been through ThinLTO function importing and the other pre-optimization pipeline changes.
  • --thread-entry=<string> β€” calls the given entry-point on a new thread (only when jit-kind=orc-lazy).
  • --thread-model=<value> β€” choose your threading model πŸ’œ
    • =posix β€” POSIX thread model.
    • =single β€” single thread model.
  • --threads=<int> β€” no description, just vibes πŸ™ˆ
  • --tls-size=<uint> β€” the bit size of immediate TLS offsets.
  • --type-based-intrinsic-cost β€” calculate intrinsics cost based only on argument types.
  • --unique-basic-block-section-names β€” give every single basic block section a unique name ✨
  • --unique-section-names β€” give every single section a unique name ✨
  • --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 the value profiler.
  • --wasm-enable-eh β€” WebAssembly exception handling.
  • --wasm-enable-sjlj β€” WebAssembly setjmp/longjmp handling.
  • --x86-align-branch=<string> β€” ok so this one is all about telling the assembler which branches to align. You pass in a plus separated list of types, and here's what each type means:
    • 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 isn't 0, it has to be a power of 2 and no less than 32. Branches get aligned to stop them from being across or against the boundary of that specified size. The default value 0 means no branch alignment at all.
  • --x86-branches-within-32B-boundaries β€” Align selected instructions to mitigate the negative performance impact of Intel's micro code update for errata skx102.
Heads up bestie: this 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. That's it, that's the whole vibe.
  • --xcoff-traceback-table β€” Emit the XCOFF traceback table. Slay.

Generic Options

  • --help β€” Display available options (and --help-hidden for more).
  • --help-list β€” Display list of available options (and --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-matmul-opt β€” Perform optimizations of matrix multiplications based on pattern matching.
  • --polly-on-isl-error-abort β€” Abort if an isl error is encountered.
  • --polly-only-func=<string> β€” Only run on functions that match a regex. Multiple regexes can be comma separated. Scop detection will run on all functions that match ANY of the regexes provided.
  • --polly-only-region=<identifier> β€” Only run on certain regions (The provided identifier must appear in the name of the region's entry block
  • --polly-only-scop-detection β€” Only run scop detection, but no other optimizations.
  • --polly-optimized-scops β€” Polly - Dump polyhedral description of Scops optimized with the isl scheduling optimizer and the set of post-scheduling transformations is applied on the schedule tree.
  • --polly-parallel β€” Generate thread parallel code (isl codegen only).
  • --polly-parallel-force β€” Force generation of thread parallel code ignoring any cost model.
  • --polly-pattern-matching-based-opts β€” Perform optimizations based on pattern matching.
  • --polly-postopts β€” Apply post-rescheduling optimizations such as tiling (requires -polly-reschedule).
  • --polly-pragma-based-opts β€” Apply user-directed transformation from metadata.
  • --polly-pragma-ignore-depcheck β€” Skip the dependency check for pragma-based transformations.
  • --polly-process-unprofitable β€” Process scops that are unlikely to benefit from Polly optimizations.
  • --polly-register-tiling β€” Enable register tiling.
  • --polly-report β€” Print information about the activities of Polly.
  • --polly-reschedule β€” Optimize SCoPs using ISL.
  • --polly-show β€” Highlight the code regions that will be optimized in a (CFG BBs and LLVM-IR instructions).
  • --polly-show-only β€” Highlight the code regions that will be optimized in a (CFG only BBs).
  • --polly-stmt-granularity=<value> β€” Algorithm to use for splitting basic blocks into multiple statements.
    • =bb β€” One statement per basic block
    • =scalar-indep β€” Scalar independence heuristic
    • =store β€” Store-level granularity
  • --polly-tc-opt β€” Perform optimizations of tensor contractions based on pattern matching.
  • --polly-tiling β€” Enable loop tiling.
  • --polly-vectorizer=<value> β€” Select the vectorization strategy.
    • =none β€” No Vectorization
    • =polly β€” Polly internal vectorizer
    • =stripmine β€” Strip-mine outer loops for the loop-vectorizer to trigger

That's a wrap bestie! This whole page is from lli 16, dated April 2024. Mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from