LLVM-RTDYLD(1)

πŸ“¦ version 11.1.0, in ubuntu jammy

LLVM-RTDYLD(1) πŸ’– manual page for llvm-rtdyld 11 πŸ’–

NAME 🌸

llvm-rtdyld β€” manual page for llvm-rtdyld 11. That's the whole name section, bestie. πŸ’…

DESCRIPTION πŸ’«

OVERVIEW: llvm MC-JIT tool β€” yeah, it's the LLVM MC-JIT tool, periodt.

USAGE: here's the exact vibe:

llvm-rtdyld [options] <input files> --args <program arguments>...

OPTIONS βš™οΈ

Color Options 🎨

  • --color β€” use colors in output (default=autodetect). Yes, the default is autodetect, so it'll figure out the vibe check for your terminal. ✨

General options 🧰

  • --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
  • --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-global-sgpr-addr β€” enable use of SGPR regs for GLOBAL LOAD/STORE 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-verify-hsa-metadata β€” verify AMDGPU HSA Metadata
  • --amdgpu-vgpr-index-mode β€” use GPR indexing mode instead of movrel for vector indexing
  • --args <string>... β€” <program arguments>... β€” literally the program arguments, bestie.
  • --arm-add-build-attributes β€” the manpage gives this one no description at all, so we're leaving it blank. πŸ’€
  • --arm-implicit-it=<value> β€” allow conditional instructions outside of an IT block (the source says "outdside", but we know what it means 😭):
    • =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
  • --atomic-counter-update-promoted β€” do counter update using atomic fetch add for promoted counters only
  • --atomic-first-counter β€” use atomic fetch add for first counter in a function (usually the entry counter)
  • --bounds-checking-single-trap β€” use one trap block per function
  • --cfg-hide-deoptimize-paths β€” no description in the source, just vibes 🫢
  • --cfg-hide-unreachable-paths β€” also no description, iconic blank era ✨
  • --check=<string> β€” file containing RuntimeDyld verifier checks.
  • --cost-kind=<value> β€” target cost kind:
    • =throughput β€” reciprocal throughput
    • =latency β€” instruction latency
    • =code-size β€” code size
  • --cvp-dont-add-nowrap-flags β€” no description, blank as the day is long πŸ’…
  • --debugify-level=<value> β€” kind of debug info to add:
    • =locations β€” locations only
    • =location+variables β€” locations and Variables
  • --debugify-quiet β€” suppress verbose debugify output
  • --disable-promote-alloca-to-lds β€” disable promote alloca to LDS
  • --disable-promote-alloca-to-vector β€” disable promote alloca to vector
  • --do-counter-promotion β€” do counter register promotion
  • --dylib=<string> β€” add library.
  • --emscripten-cxx-exceptions-allowed=<string> β€” the list of function names in which Emscripten-style exception handling is enabled (see emscripten EMSCRIPTEN_CATCHING_ALLOWED options)
  • --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, we move πŸƒβ€β™€οΈ
  • --enable-gvn-sink β€” enable the GVN sinking pass (default = off)
  • --enable-load-in-loop-pre β€” blank description, but the option is here πŸ’–
  • --enable-load-pre β€” also blank, still valid ✨
  • --enable-loop-simplifycfg-term-folding β€” no description, but it's real πŸ¦‹
  • --enable-name-compression β€” enable name/filename string compression
  • --entry=<string> β€” function to call as entry point.
  • --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
  • --import-all-index β€” import all external functions in index.
  • --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-maxarray-size=<uint> β€” maximum array size considered when doing a combine
  • --instcombine-negator-enabled β€” should we attempt to sink negations?
  • --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.
  • --lto-embed-bitcode β€” embed LLVM bitcode in object files produced by LTO
  • --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
  • --matrix-default-layout=<value> β€” sets the default matrix layout:
    • =column-major β€” use column-major layout
    • =row-major β€” use row-major layout
  • --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
  • --mcpu=<cpu-name> β€” target a specific cpu type (-mcpu=help for details)
  • --memop-size-large=<uint> β€” set large value threshold in memory intrinsic size profiling. Value of 0 disables the large value profiling.
  • --memop-size-range=<string> β€” set the range of size in memory intrinsic calls to be profiled precisely, in a format of <start_val>:<end_val>
  • --merror-missing-parenthesis β€” error for missing parenthesis around predicate registers
  • --merror-noncontigious-register β€” error for register names that aren't contigious
  • --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
  • --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 β€” enable mips16 constant islands.
  • --mips16-hard-float β€” enable mips16 hard float.
  • --mir-strip-debugify-only β€” should mir-strip-debug only strip debug info from debugified modules by default
  • --mno-compound β€” disable looking for compound instructions for Hexagon
  • --mno-fixup β€” disable fixing up resolved relocations for Hexagon
  • --mno-ldc1-sdc1 β€” expand double precision loads and stores to their single precision counterparts
  • --mno-pairing β€” disable looking for duplex instructions for Hexagon
  • --mwarn-missing-parenthesis β€” warn for missing parenthesis around predicate registers
  • --mwarn-noncontigious-register β€” warn for register names that arent contigious
  • --mwarn-sign-mismatch β€” warn for mismatching a signed and unsigned value
  • --no-discriminators β€” disable generation of discriminator information.
  • --nvptx-sched4reg β€” NVPTX Specific: schedule for register pressue
  • --poison-checking-function-local β€” check that returns are non-poison (for testing)
  • --preallocate=<ulong> β€” allocate memory upfront rather than on-demand
  • --r600-ir-structurize β€” bestie, this one says "Use StructurizeCFG IR pass" ✨
  • --rdf-dump β€” ngl the source just has a dash here, no description, so it's giving mysterious icon energy πŸ’…
  • --rdf-limit=<uint> β€” also a dash in the source, so no extra tea, just the flag with a <uint> value 🫢
  • --runtime-counter-relocation β€” Enable relocating counters at runtime. lowkey handy for moving counters around while things are running πŸ’–
  • --safepoint-ir-verifier-print-only β€” another dash-only situation, the source gives no description, periodt πŸ™ˆ
  • --sample-profile-check-record-coverage=<N> β€” Emit a warning if less than N% of records in the input profile are matched to the IR. so if your record coverage is slacking, it will literally warn you 😭
  • --sample-profile-check-sample-coverage=<N> β€” Emit a warning if less than N% of samples in the input profile are matched to the IR. same vibe but for samples, not records πŸŽ€
  • --sample-profile-max-propagate-iterations=<uint> β€” Maximum number of iterations to go through when propagating sample block/edge weights through the CFG. it caps how many times it loops through that propagation, no cap fr fr πŸ’€
  • --show-times β€” Show times for llvm-rtdyld phases. so you can see where the time went, iconic ⏱️
  • --speculative-counter-promotion-max-exiting=<uint> β€” The max number of exiting blocks of a loop to allow speculative counter promotion. basically a limit on exiting blocks for that 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. so it's a whole conditional vibe, read it carefully bestie πŸ’…
  • --summary-file=<string> β€” The summary file to use for function importing. give it a string filename and it's the summary file for importing functions 🫢
  • --tail-predication=<value> β€” MVE tail-predication options. here are the values, each one matters:
    • =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
the force- ones literally say "might be unsafe", so don't be reckless, bestie 😭
  • --threads=<int> β€” the source gives no description, just a dash, so it's a mystery number of threads 🧚
  • --triple=<string> β€” Target triple for disassembler. you pass a string triple and it's for the disassembler ✨

🎬 Action to perform:

  • --execute β€” Load, link, and execute the inputs. it's giving full send energy πŸ”₯
  • --printline β€” Load, link, and print line information for each function. line info for every function, slay πŸ’–
  • --printdebugline β€” Load, link, and print line information for each function using the debug object. same but with the debug object, no cap πŸŽ€
  • --printobjline β€” Like -printlineinfo but does not load the object first. note it says -printlineinfo in the original, keep that exact spelling even though it's different from --printline above, bestie don't @ me πŸ’…
  • --verify β€” Load, link and verify the resulting memory image. verification era βœ…
  • --verify-region-info β€” Verify region info (time consuming). it's literally marked time consuming, so budget your patience 😭
  • --vp-counters-per-site=<number> β€” The average number of profile counters allocated per value profiling site. average number, per site, periodt πŸ’œ
  • --vp-static-alloc β€” Do static counter allocation for value profiler. static allocation for value profiler, iconic ✨
  • --x86-align-branch=<string> β€” Specify types of branches to align (plus separated list of types): here's the type list:
    • 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. so default is 0, no alignment, and if you set it, power of 2 and >= 32, fr fr πŸ”₯
  • --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. this one literally warns about breaking assumptions, so be careful bestie 😭
  • --x86-pad-max-prefix-size=<uint> β€” Maximum number of prefixes to use for padding. caps the prefixes for padding πŸ’…

✨ Generic Options:

  • --help β€” Display available options (--help-hidden for more). the classic help, and --help-hidden for the extra hidden ones 🫢
  • --help-list β€” Display list of available options (--help-list-hidden for more). a list version, with --help-list-hidden for more ✨
  • --version β€” Display the version of this program. version check, iconic πŸ’–

🌸 Polly Options: Configure the polly loop optimizer 🌸

  • --polly β€” Enable the polly optimizer (only at -O3). only at -O3, bestie, don't forget that part πŸ’…
  • --polly-2nd-level-tiling β€” Enable a 2nd level loop of loop tiling. a second level of loop tiling, slay πŸŽ€
  • --polly-ast-print-accesses β€” Print memory access functions. prints memory access functions ✨
  • --polly-context=<isl parameter set> β€” Provide additional constraints on the context parameters. the placeholder is an isl parameter set, keep it exact 🫢
  • --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. note the original has an open parenthesis and no closing one, so we keep that exact, bestie πŸ™ˆ
  • --polly-delicm-max-ops=<int> β€” Maximum number of isl operations to invest for lifetime analysis; 0=no limit. so 0 means no limit, periodt πŸ’œ
  • --polly-detect-full-functions β€” Allow the detection of full functions. full function detection enabled βœ…
  • --polly-dump-after β€” Dump module after Polly transformations into a file suffixed with "-after". suffix is -after, exact πŸ’–
  • --polly-dump-after-file=<string> β€” Dump module after Polly transformations to the given file. give it a string file name, it dumps there ✨
  • --polly-dump-before β€” Dump module before Polly transformations into a file suffixed with "-before". suffix is -before, exact πŸŽ€
  • --polly-dump-before-file=<string> β€” Dump module before Polly transformations to the given file. string file name, dumps before πŸ’…
  • --polly-enable-simplify β€” Simplify SCoP after optimizations. SCoP simplify after optimizations, iconic 🫢
  • --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. so regex matching, comma separated, ANY match means ignore, fr fr πŸ”₯
  • --polly-isl-arg=<argument> β€” Option passed to ISL. passes an argument to ISL πŸ’œ
  • --polly-on-isl-error-abort β€” Abort if an isl error is encountered. abort on isl error, no cap 😭
  • --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. only these functions, regex, comma separated, ANY match runs, periodt ✨
  • --polly-only-region=<identifier> β€” Only run on certain regions (The provided identifier must appear in the name of the region's entry block. note the original has an open parenthesis and no closing one again, keep it exact, bestie πŸ’…
  • --polly-only-scop-detection β€” Only run scop detection, but no other optimizations. just detection, no other optimizations, that's it πŸŽ€
  • --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. long description, keep every word, it's giving detailed πŸ’–
  • --polly-parallel β€” Generate thread parallel code (isl codegen only). isl codegen only, don't forget 🫢
  • --polly-parallel-force β€” Force generation of thread parallel code ignoring any cost model. force it, ignore cost model, lowkey intense πŸ”₯
  • --polly-pattern-matching-based-opts β€” Perform optimizations based on pattern matching. pattern matching based opts, slay ✨
  • --polly-process-unprofitable β€” Process scops that are unlikely to benefit from Polly optimizations. process the unprofitable ones, iconic πŸ’…
  • --polly-register-tiling β€” Enable register tiling. register tiling enabled πŸŽ€
  • --polly-report β€” Print information about the activities of Polly. report on Polly activities, periodt πŸ’œ
  • --polly-show β€” Highlight the code regions that will be optimized in a (CFG BBs and LLVM-IR instructions). note open parenthesis and no closing, keep exact, bestie 😭
  • --polly-show-only β€” Highlight the code regions that will be optimized in a (CFG only BBs). again open parenthesis, no closing, exact πŸ’…
  • --polly-stmt-granularity=<value> β€” Algorithm to use for splitting basic blocks into multiple statements. values:
    • =bb β€” One statement per basic block
    • =scalar-indep β€” Scalar independence heuristic
    • =store β€” Store-level granularity
  • --polly-target=<value> β€” The hardware to target. values:
    • =cpu β€” generate CPU code
  • --polly-tiling β€” Enable loop tiling. loop tiling enabled ✨
  • --polly-vectorizer=<value> β€” Select the vectorization strategy. values:
    • =none β€” No Vectorization
    • =polly β€” Polly internal vectorizer
    • =stripmine β€” Strip-mine outer loops for the loop-vectorizer to trigger

llvm-rtdyld 11 β€’ January 2022 β€’ LLVM-RTDYLD(1) πŸ’– that's the whole page, bestie β€” go forth and optimize, you absolute icon 🫢✨

πŸ“¦ where this page comes from