LLI(1)
π LLI(1) β User Commands π
okay so bestie, welcome to the User Commands manual page for lli 15 β the llvm interpreter & dynamic compiler. We are going flag by flag, value by value, default by default. No skips, no cap. π
π NAME π
lli β manual page for lli 15
πΈ DESCRIPTION πΈ
OVERVIEW: llvm interpreter & dynamic compiler
USAGE:
lli [options] <input bitcode> <program arguments>...
OPTIONS: okay, here's the whole lineup, bestie. It's giving very technical restaurant menu. β¨
π¨ Color Options π¨
--colorβ Use colors in output (default=autodetect). autodetect is doing its little vibe check π
β¨ General options β¨
-O <char>β Optimization level.[-O0, -O1, -O2, or -O3](default ='-O2'). pick your optimization era β‘--aarch64-neon-syntax=<value>β Choose style of NEON code to emit from 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 devirtualization CGSCC repeat pass is reached.--addrsigβ Emit an address-significance table.--align-loops=<uint>β Default alignment for loops.--allow-ginsert-as-artifactβ AllowG_INSERTto 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-dpp-combineβ Enable 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-igrouplpβ Enable construction of Instruction Groups and their ordering for scheduling.--amdgpu-promote-alloca-to-vector-limit=<uint>β Maximum byte size to consider promote alloca to vector.--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 given β just a flag doing flag things π--arm-implicit-it=<value>β Allow conditional instructions outdside of an IT block (yes,outdsideβ we keep the original spelling, bestie π):=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 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 given β we move π--cfg-hide-unreachable-pathsβ No description given β we move π--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.--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 max number of processed functions per pass.--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.--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 emscriptenEMSCRIPTEN_CATCHING_ALLOWEDoptions).--emulated-tlsβ Use emulated TLS model.--enable-approx-func-fp-mathβ Enable FP math optimizations that assume approx func.--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 given β iconic mystery flag energy π--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 given β we move π--enable-load-preβ No description given β we move π--enable-loop-simplifycfg-term-foldingβ No description given β we move π--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β turns on FP math optimizations that assume the sign of 0 is insignificant. So like,-0.0and+0.0? bestie they're the same now π--enable-no-trapping-fp-mathβ enables setting the FP exceptions build attribute to not use exceptions. no traps, no drama β¨--enable-split-backedge-in-load-preβ ok so this one has literally no description in the man page and honestly? main character energy. it's giving mysterious π--enable-unsafe-fp-mathβ enables optimizations that may decrease FP precision π so like, yes it's faster but it might lie to you a little. your call, queen.--entry-function=<function>β specifies the entry function of the executable (default ='main'), because sometimesmainisn't the one calling the shots π«Ά--exception-model=<value>β picks your exception model, and there are options:=defaultβ the 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 the experimental new value-tracking variable locations π₯ it's experimental, so like, proceed with the vibes--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>β overrides the'argv[0]'value passed into the executing program. catfishing your own process, iconic π--fatal-warningsβ treats warnings as errors. no chill mode, we die like adults π--filetype=<value>β chooses a file type (and heads up: not all types are supported by all targets, ok?):=asmβ emit an assembly (.s) file=objβ emit a native object (.o) file=nullβ emit nothing at all, purely for performance testing π«₯
--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. every time. no exceptions β¨--force-interpreterβ forces interpretation, which means disables JIT. so long, speed π¦--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
--frame-pointer=<value>β specifies frame pointer elimination optimization:=allβ disable frame pointer elimination=non-leafβ disable frame pointer elimination for non-leaf frames=noneβ enable frame pointer elimination
--fs-profile-debug-bw-threshold=<uint>β only show the debug message if the source branch weight is greater than this value--fs-profile-debug-prob-diff-threshold=<uint>β only show the debug message if the branch probility is greater than this value (in percentage). (yes, "probility" β I don't make the typos, I just report them π)--function-sectionsβ emit functions into separate sections π--generate-merged-base-profilesβ when generating nested context-sensitive profiles, always generate an extra base profile for a function with all its context profiles merged into it--gpsize=<uint>β Global Pointer Addressing Size. the default size is8π--hash-based-counter-splitβ rename the counter variable of a comdat function based on cfg hash--hot-cold-splitβ enable the hot-cold splitting pass π₯π§--ignore-xcoff-visibilityβ don't emit the visibility attribute for asm in AIX OS, or give all symbols'unspecified'visibility in the XCOFF object file--import-all-indexβ import all external functions in index--incremental-linker-compatibleβ when used withfiletype=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 of 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? (asking for a friend)--instcombine-negator-max-depth=<uint>β 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, bestie, don't ship this π)--internalize-public-api-file=<filename>β a file containing a 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-modulearguments--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 π§--lower-global-dtors-via-cxa-atexitβ lowerllvm.global_dtors(global destructors) via__cxa_atexit--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
--mattr=<a1,+a2,-a3,...>β target specific attributes (-mattr=helpfor details, iykyk)--max-counter-promotions=<int>β max number of allowed counter promotions--max-counter-promotions-per-loop=<uint>β max number of counter promotions per loop, so we don't increase register pressure too much π«Ά--mc-relax-allβ when used withfiletype=obj, relax all fixups in the emitted object file--mcabacβtbd. that's it. that's the description. we love an unfinished icon π--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=helpfor details)--meabi=<value>β set the 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 (again: not my typo, I'm just the messenger π)--mhvxβ enable Hexagon Vector eXtensions--mhvx=<value>β enable Hexagon Vector eXtensions, but specific:=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
--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. that's it, that's the whole vibe β¨--mips16-hard-floatβ enables mips16 hard float. floating point but make it hardware π--mir-strip-debugify-onlyβ controls whethermir-strip-debugonly strips debug info from debugified modules by default. very niche, very demure.--misexpect-tolerance=<uint>β prevents emitting diagnostics when profile counts are within N% of the threshold.. (yes bestie, two periods, the source said what it said π)--mno-compoundβ Hexagon: stop looking for compound instructions. we're done with that π ββοΈ--mno-fixupβ Hexagon: stop fixing up resolved relocations.--mno-ldc1-sdc1β expands double precision loads and stores into their single precision counterparts. fancy little downgrade β¨--mno-pairingβ Hexagon: stop looking for duplex instructions.--mtriple=<string>β overrides the target triple for the module. main character energy for cross-compiling π--mwarn-missing-parenthesisβ warns you about a missing parenthesis around predicate registers. she notices everything π--mwarn-noncontigious-registerβ warns about register names that aren't contiguous. (the flag itself is spellednoncontigious, we don't fix it, we respect it π)--mwarn-sign-mismatchβ warns when a signed and an unsigned value don't match. red flag behavior, flagged π--no-deprecated-warnβ suppresses all deprecated warnings. ignorance is bliss, bestie.--no-discriminatorsβ disables generation of discriminator information.--no-process-symsβ do not resolvelliprocess symbols in JIT'd code.--no-type-checkβ suppresses type errors. Wasm only. yes this is giving chaos but it's right there π--no-warnβ suppresses all warnings. truly unbothered, truly fearless π--no-xray-indexβ don't emit thexray_fn_idxsection.--nozero-initialized-in-bssβ don't place zero-initialized symbols into the bss section. they can go elsewhere, they're grown π«Ά--nvptx-sched4regβ NVPTX specific: schedule for register pressure.--object-cache-dir=<string>β directory where cached object files get stored. it must be user writable, no cap π₯--opaque-pointersβ use opaque pointers.--orc-runtime=<string>β use the ORC runtime from the given path.--per-module-lazyβ lazy compilation on whole module boundaries rather than individual functions. we love a strategic nap π΄--poison-checking-function-localβ checks that returns are non-poison. for testing only, bestie π§ͺ--print-pipeline-passesβ prints a-passes-compatible string describing the pipeline. best-effort only, so manage your expectations πΈ--r600-ir-structurizeβ use theStructurizeCFGIR pass.--rdf-dumpβ no description given. she simply exists π--rdf-limit=<uint>β also no description. mysterious icon behavior π--relax-elf-relocationsβ emitGOTPCRELX/REX_GOTPCRELXinstead ofGOTPCRELon x86-64 ELF.--relocation-model=<value>β choose the 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β combination ofropiandrwpi
--remote-mcjitβ executes MCJIT'ed code in a separate process. social distancing, compiler edition π¦--runtime-counter-relocationβ enables relocating counters at runtime.--safepoint-ir-verifier-print-onlyβ no description. another silent queen π--sample-profile-check-record-coverage=<N>β emits a warning if less than N% of records in the input profile are matched to the IR.--sample-profile-check-sample-coverage=<N>β emits a warning if less than N% of samples in the input profile are matched to the IR. yes it's the samples one, read carefully bestie π--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β suppresses counter promotion if exit blocks containret.--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 is disallowed unless the promoted counter update can be further/iteratively promoted into an acyclic region. it's giving conditions on conditions π--split-machine-functionsβ splits cold basic blocks out of machine functions based on profile information. cold blocks get their own little apartment π--stack-size-sectionβ emits a section containing stack size metadata.--stack-symbol-orderingβ orders local stack symbols.--stackrealignβ forces the stack to align to the minimum alignment. posture check for your stack π§--strict-dwarfβ uses strict dwarf.--summary-file=<string>β the summary file to use for function importing.--sve-tail-folding=<string>β controls vectorisation using tail-folding for SVE πdisabledβ no loop types vectorize using tail-foldingdefaultβ uses the default tail-folding settings for the target CPUallβ all legal loop types vectorize using tail-foldingsimpleβ use tail-folding for simple loops (not reductions or recurrences)reductionsβ use tail-folding for loops containing reductionsrecurrencesβ use tail-folding for loops containing first order recurrences
--swift-async-fp=<value>β decides when the Swift async frame pointer should be set π¦=autoβ determine based on deployment target=alwaysβ always set the bit=neverβ never set the bit
--tail-predication=<value>β 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β turnsfastcccalls into tail calls by (potentially) changing the ABI. character development for your calling convention π--thinlto-assume-mergedβ assumes the input already underwent ThinLTO function importing and the other pre-optimization pipeline changes. trust fall π€--thread-entry=<string>β calls the given entry-point on a new thread. only forjit-kind=orc-lazy, bestie π§΅--thread-model=<value>β choose the threading model π=posixβ POSIX thread model=singleβ single thread model
--threads=<int>β no description in the source, just a number and a dream π--tls-size=<uint>β bit size of immediate TLS offsets.--type-based-intrinsic-costβ calculates intrinsic cost based only on argument types. no further questions β¨--unique-basic-block-section-namesβ gives every basic block section a unique name. everybody gets their own little name tag π--unique-section-namesβ gives every section a unique name.--use-ctorsβ use.ctorsinstead of.init_array. retro choice, we support it π--vec-extabiβ enables the AIX Extended Altivec ABI.--verify-region-infoβ verifies region info. it is time consuming π--vp-counters-per-site=<number>β the average number of profile counters allocated per value profiling site.--vp-static-allocβ does static counter allocation for the value profiler.--wasm-enable-ehβ WebAssembly exception handling β¨--wasm-enable-sjljβ WebAssemblysetjmp/longjmphandling.--x86-align-branch=<string>β specifies which types of branches to align, as a plus-separated list of types πjccβ indicates conditional jumpsfusedβ indicates fused conditional jumpsjmpβ indicates direct unconditional jumpscallβ indicates direct and indirect callsretβ indicates retsindirectβ indicates indirect unconditional jumps
--x86-align-branch-boundary=<uint>β this one controls how the assembler aligns branches with NOP β¨ so if the boundary's size isn't0, it has to be a power of 2 and no less than32, okay? Branches get aligned so they don't end up across or against a boundary of that specified size. The default value0means no branch alignment at all, bestie π--x86-branches-within-32B-boundariesβ aligns selected instructions to soften the negative perf hit from Intel's micro code update for errata skx102 π«Ά
β οΈ Heads up: this one may break assumptions about labels corresponding to particular instructions, so use it with caution, fr fr π
--x86-pad-max-prefix-size=<uint>β max number of prefixes to use for padding π--xcoff-traceback-tableβ emit the XCOFF traceback table π¦
π Generic Options π
--helpβ show the available options (peep--help-hiddenfor even more π)--help-listβ show the list of available options (and--help-list-hiddenfor more, iykyk π)--versionβ show the version of this program, iconic behavior honestly π
π¦ Polly Options π¦ β Configure the polly loop optimizer
--pollyβ turn the polly optimizer on (works with-O1,-O2or-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>β give extra constraints on the context parameters π--polly-dce-precise-steps=<int>β the number of precise steps between two approximating iterations. (A value of-1schedules 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, live ur life π¦--polly-detect-full-functionsβ allow the detection of full functions π--polly-dump-afterβ dump the module after Polly transformations into a file suffixed with"-after"π--polly-dump-after-file=<string>β dump the module after Polly transformations to the given file π--polly-dump-beforeβ dump the module before Polly transformations into a file suffixed with"-before"β¨--polly-dump-before-file=<string>β dump the 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>β 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, no cap π--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-target=<value>β the hardware to target:=cpuβ generate CPU code
--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 the whole page bestie, u made it to the end π«Άπ this is lli version 15, dated July 2023 β go forth and slay ur LLVM IR, periodt β¨π
π¦ where this page comes from
- ubuntu jammy: llvm-15-runtime 1:15.0.7-0ubuntu0.22.04.3 Β· APACHE-2-LLVM-EXCEPTIONS
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms