OVERVIEW: MLIR modular optimizer driver
Available Dialects: acc, affine, amx, arith, arm_neon, arm_sve, async, bufferization, builtin, complex, dlti, emitc, gpu, linalg, llvm, math, memref, nvvm, omp, pdl, pdl_interp, quant, rocdl, scf, shape, sparse_tensor, spv, std, tensor, tosa, vector, x86vector
USAGE: mlir-opt [options]
OPTIONS:
Color Options:
--color - Use colors in output (default=autodetect)
General options:
--aarch64-neon-syntax= - 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
--allow-ginsert-as-artifact - Allow G_INSERT to be considered an artifact. Hack around AMDGPU test infinite loops.
--allow-unregistered-dialect - Allow operation with no registered dialects
--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= - 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 -
--arm-implicit-it= - 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 first counter in a function (usually the entry counter)
--bounds-checking-single-trap - Use one trap block per function
--cfg-hide-cold-paths= - Hide blocks with relative frequency below the given value
--cfg-hide-deoptimize-paths -
--cfg-hide-unreachable-paths -
--cost-kind= - Target cost kind
=throughput - Reciprocal throughput
=latency - Instruction latency
=code-size - Code size
=size-latency - Code size and latency
--debug-info-correlate - Use debug info to correlate profiles.
--debugify-level= - Kind of debug info to add
=locations - Locations only
=location+variables - Locations and Variables
--debugify-quiet - Suppress verbose debugify output
--disable-i2p-p2i-opt - Disables inttoptr/ptrtoint roundtrip optimization
--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
--dot-cfg-mssa= - file name for generated dot file
--dwarf-version= - Dwarf version
--dwarf64 - Generate debugging info in the 64-bit DWARF format
--emscripten-cxx-exceptions-allowed= - 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 -
--enable-gvn-sink - Enable the GVN sinking pass (default = off)
--enable-load-in-loop-pre -
--enable-load-pre -
--enable-loop-simplifycfg-term-folding -
--enable-name-compression - Enable name/filename string compression
--enable-split-backedge-in-load-pre -
--experimental-debug-variable-locations - Use experimental new value-tracking variable locations
--fatal-warnings - Treat warnings as errors
--fs-profile-debug-bw-threshold= - Only show debug message if the source branch weight is greater than this value.
--fs-profile-debug-prob-diff-threshold= - Only show debug message if the branch probility is greater than this value (in percentage).
--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= - 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.
--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= - How wide an instruction window to bypass looking for another guard
--instcombine-max-iterations= - Limit the maximum number of instruction combining iterations
--instcombine-max-num-phis= - Maximum number phis to handle in intptr/ptrint folding
--instcombine-maxarray-size= - Maximum array size considered when doing a combine
--instcombine-negator-enabled - Should we attempt to sink negations?
--instcombine-negator-max-depth= - 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= - A file containing list of symbol names to preserve
--internalize-public-api-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
=none - Do not embed
=optimized - Embed after all optimization passes
=post-merge-pre-opt - Embed post merge, but before optimizations
--lto-pass-remarks-filter= - Only record optimization remarks from passes whose names match the given regular expression
--lto-pass-remarks-format= - The format used for serializing remarks (default: YAML)
--lto-pass-remarks-output= - Output filename for pass remarks
--matrix-default-layout= - Sets the default matrix layout
=column-major - Use column-major layout
=row-major - Use row-major layout
--max-counter-promotions= - Max number of allowed counter promotions
--max-counter-promotions-per-loop= - 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
--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= - 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
--mips-compact-branches= - 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
--mlir-disable-threading - Disable multi-threading within MLIR, overrides any further call to MLIRContext::enableMultiThreading()
--mlir-elide-elementsattrs-if-larger= - Elide ElementsAttrs with "..." that have more elements than the given upper limit
--mlir-pretty-debuginfo - Print pretty debug info in MLIR output
--mlir-print-debuginfo - Print debug info in MLIR output
--mlir-print-elementsattrs-with-hex-if-larger= - Print DenseElementsAttrs with a hex string that have more elements than the given upper limit (use -1 to disable)
--mlir-print-local-scope - Print with local scope and inline information (eliding aliases for attributes, types, and locations
--mlir-print-op-on-diagnostic - When a diagnostic is emitted on an operation, also print the operation as an attached note
--mlir-print-stacktrace-on-diagnostic - When a diagnostic is emitted, also print the stack trace as an attached note
--mlir-timing - Display execution times
--mlir-timing-display= - Display method for timing data
=list - display the results in a list sorted by total time
=tree - display the results ina with a nested tree view
--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-deprecated-warn - Suppress all deprecated warnings
--no-discriminators - Disable generation of discriminator information.
--no-type-check - Suppress type errors (Wasm)
--no-warn - Suppress all warnings
--nvptx-sched4reg - NVPTX Specific: schedule for register pressue
-o= - Output filename
--opaque-pointers - Use opaque pointers
--pass-pipeline-crash-reproducer= - Generate a .mlir reproducer file at the given output path if the pass manager crashes or fails
--pass-pipeline-local-reproducer - When generating a crash reproducer, attempt to generated a reproducer with the smallest pipeline.
--pass-statistics - Display the statistics of each pass
--pass-statistics-display= - Display method for pass statistics
=list - display the results in a merged list sorted by pass name
=pipeline - display the results with a nested pipeline view
--poison-checking-function-local - Check that returns are non-poison (for testing)
--print-ir-after= - Print IR after specified passes
--print-ir-after-all - Print IR after each pass
--print-ir-after-change - When printing the IR after a pass, only print if the IR changed
--print-ir-after-failure - When printing the IR after a pass, only print if the pass failed
--print-ir-before= - Print IR before specified passes
--print-ir-before-all - Print IR before each pass
--print-ir-module-scope - When printing IR for print-ir-[before|after]{-all} always print the top-level operation
--print-pipeline-passes - Print a '-passes' compatible string describing the pipeline (best-effort only).
--r600-ir-structurize - Use StructurizeCFG IR pass
--rdf-dump -
--rdf-limit= -
--run-reproducer - Append the command line options of the reproducer
--runtime-counter-relocation - Enable relocating counters at runtime.
--safepoint-ir-verifier-print-only -
--sample-profile-check-record-coverage= - Emit a warning if less than N% of records in the input profile are matched to the IR.
--sample-profile-check-sample-coverage= - Emit a warning if less than N% of samples in the input profile are matched to the IR.
--sample-profile-max-propagate-iterations= - Maximum number of iterations to go through when propagating sample block/edge weights through the CFG.
Compiler passes to run
--pass-pipeline - A textual description of a pass pipeline to run
Passes:
--affine-data-copy-generate - Generate explicit copying for affine memory operations
--fast-mem-capacity= - Set fast memory space capacity in KiB (default: unlimited)
--fast-mem-space= - Fast memory space identifier for copy generation (default: 1)
--generate-dma - Generate DMA instead of point-wise copy
--min-dma-transfer= - Minimum DMA transfer size supported by the target in bytes
--skip-non-unit-stride-loops - Testing purposes: avoid non-unit stride loop choice depths for copy placement
--slow-mem-space= - Slow memory space identifier for copy generation (default: 0)
--tag-mem-space= - Tag memory space identifier for copy generation (default: 0)
--affine-loop-coalescing - Coalesce nested loops with independent bounds into a single loop
--affine-loop-fusion - Fuse affine loop nests
--fusion-compute-tolerance= - Fractional increase in additional computation tolerated while fusing
--fusion-fast-mem-space= - Faster memory space number to promote fusion buffers to
--fusion-local-buf-threshold= - Threshold size (KiB) for promoting local buffers to fast memory space
--fusion-maximal - Enables maximal loop fusion
--mode= - fusion mode to attempt
=greedy - Perform greedy (both producer-consumer and sibling) fusion
=producer - Perform only producer-consumer fusion
=sibling - Perform only sibling fusion
--affine-loop-invariant-code-motion - Hoist loop invariant instructions outside of affine loops
--affine-loop-normalize - Apply normalization transformations to affine loop-like ops
--affine-loop-tile - Tile affine loop nests
--cache-size= - Set size of cache to tile for in KiB
--separate - Separate full and partial tiles
--tile-size= - Use this tile size for all loops
--tile-sizes= - List of tile sizes for each perfect nest (overridden by -tile-size)
--affine-loop-unroll - Unroll affine loops
--unroll-factor= - Use this unroll factor for all loops being unrolled
--unroll-full - Fully unroll loops
--unroll-full-threshold= - Unroll all loops with trip count less than or equal to this
--unroll-num-reps= - Unroll innermost loops repeatedly this many times
--unroll-up-to-factor - Allow unrolling up to the factor specified
--affine-loop-unroll-jam - Unroll and jam affine loops
--unroll-jam-factor= - Use this unroll jam factor for all loops (default 4)
--affine-parallelize - Convert affine.for ops into 1-D affine.parallel
--max-nested= - Maximum number of nested parallel loops to produce. Defaults to unlimited (UINT_MAX).
--parallel-reductions - Whether to parallelize reduction loops. Defaults to false.
--affine-pipeline-data-transfer - Pipeline non-blocking data transfers between explicitly managed levels of the memory hierarchy
--affine-scalrep - Replace affine memref acceses by scalars by forwarding stores to loads and eliminating redundant loads
--affine-simplify-structures - Simplify affine expressions in maps/sets and normalize memrefs
--affine-super-vectorize - Vectorize to a target independent n-D vector abstraction
--test-fastest-varying= - Specify a 1-D, 2-D or 3-D pattern of fastest varying memory dimensions to match. See defaultPatterns in Vectorize.cpp for a description and examples. This is used for testing purposes
--vectorize-reductions - Vectorize known reductions expressed via iter_args. Switched off by default.
--virtual-vector-size= - Specify an n-D virtual vector size for vectorization
--arith-bufferize - Bufferize Arithmetic dialect ops.
--alignment= - Create global memrefs with a specified alignment
--arith-expand - Legalize Arithmetic ops to be convertible to LLVM.
--arm-neon-2d-to-intr - Convert Arm NEON structured ops to intrinsics
--async-parallel-for - Convert scf.parallel operations to multiple async compute ops executed concurrently for non-overlapping iteration ranges
--async-dispatch - Dispatch async compute tasks using recursive work splitting. If `false` async compute tasks will be launched using simple for loop in the caller thread.
--min-task-size= - The minimum task size for sharding parallel operation.
--num-workers= - The number of available workers to execute async operations. If `-1` the value will be retrieved from the runtime.
--async-runtime-policy-based-ref-counting - Policy based reference counting for Async runtime operations
--async-runtime-ref-counting - Automatic reference counting for Async runtime operations
--async-runtime-ref-counting-opt - Optimize automatic reference counting operations for theAsync runtime by removing redundant operations
--async-to-async-runtime - Lower high level async operations (e.g. async.execute) to theexplicit async.runtime and async.coro operations
--eliminate-blocking-await-ops - Rewrite functions with blocking async.runtime.await as coroutines with async.runtime.await_and_resume.
--buffer-deallocation - Adds all required dealloc operations for all allocations in the input program
--buffer-hoisting - Optimizes placement of allocation operations by moving them into common dominators and out of nested regions
--buffer-loop-hoisting - Optimizes placement of allocation operations by moving them out of loop nests
--buffer-results-to-out-params - Converts memref-typed function results to out-params
--canonicalize - Canonicalize operations
--disable-patterns= - Labels of patterns that should be filtered out during application
--enable-patterns= - Labels of patterns that should be used during application, all other patterns are filtered out
--max-iterations= - Seed the worklist in general top-down order
--region-simplify - Seed the worklist in general top-down order
--top-down - Seed the worklist in general top-down order
--control-flow-sink - Sink operations into conditional blocks
--convert-affine-for-to-gpu - Convert top-level AffineFor Ops to GPU kernels
--gpu-block-dims= - Number of GPU block dimensions for mapping
--gpu-thread-dims= - Number of GPU thread dimensions for mapping
--convert-arith-to-llvm - Convert Arithmetic dialect to LLVM dialect
--index-bitwidth= - Bitwidth of the index type, 0 to use size of machine word
--convert-arith-to-spirv - Convert Arithmetic dialect to SPIR-V dialect
--emulate-non-32-bit-scalar-types - Emulate non-32-bit scalar types with 32-bit ones if missing native support
--convert-async-to-llvm - Convert the operations from the async dialect into the LLVM dialect
--convert-bufferization-to-memref - Convert operations from the Bufferization dialect to the MemRef dialect
--convert-complex-to-llvm - Convert Complex dialect to LLVM dialect
--convert-complex-to-standard - Convert Complex dialect to standard dialect
--convert-elementwise-to-linalg - Convert ElementwiseMappable ops to linalg
--convert-gpu-launch-to-vulkan-launch - Convert gpu.launch_func to vulkanLaunch external call
--convert-gpu-to-nvvm - Generate NVVM operations for gpu operations
--index-bitwidth= - Bitwidth of the index type, 0 to use size of machine word
--convert-gpu-to-rocdl - Generate ROCDL operations for gpu operations
--index-bitwidth= - Bitwidth of the index type, 0 to use size of machine word
--runtime= - Runtime code will be run on (default is Unknown, can also use HIP or OpenCl)
=unknown - Unknown (default)
=HIP - HIP
=OpenCL - OpenCL
--convert-gpu-to-spirv - Convert GPU dialect to SPIR-V dialect
--convert-linalg-tiled-loops-to-scf - Lower linalg tiled loops to SCF loops and parallel loops
--convert-linalg-to-affine-loops - Lower the operations from the linalg dialect into affine loops
--convert-linalg-to-llvm - Convert the operations from the linalg dialect into the LLVM dialect
--convert-linalg-to-loops - Lower the operations from the linalg dialect into loops
--convert-linalg-to-parallel-loops - Lower the operations from the linalg dialect into parallel loops
--convert-linalg-to-spirv - Convert Linalg dialect to SPIR-V dialect
--convert-linalg-to-std - Convert the operations from the linalg dialect into the Standard dialect
--convert-math-to-libm - Convert Math dialect to libm calls
--convert-math-to-llvm - Convert Math dialect to LLVM dialect
--convert-math-to-spirv - Convert Math dialect to SPIR-V dialect
--convert-memref-to-llvm - Convert operations from the MemRef dialect to the LLVM dialect
--index-bitwidth= - Bitwidth of the index type, 0 to use size of machine word
--use-aligned-alloc - Use aligned_alloc in place of malloc for heap allocations
--convert-memref-to-spirv - Convert MemRef dialect to SPIR-V dialect
--bool-num-bits= - The number of bits to store a boolean value
--convert-openacc-to-llvm - Convert the OpenACC ops to LLVM dialect
--convert-openacc-to-scf - Convert the OpenACC ops to OpenACC with SCF dialect
--convert-openmp-to-llvm - Convert the OpenMP ops to OpenMP ops with LLVM dialect
--convert-parallel-loops-to-gpu - Convert mapped scf.parallel ops to gpu launch operations
--convert-pdl-to-pdl-interp - Convert PDL ops to PDL interpreter ops
--convert-scf-to-openmp - Convert SCF parallel loop to OpenMP parallel + workshare constructs.
--convert-scf-to-spirv - Convert SCF dialect to SPIR-V dialect.
--convert-scf-to-std - Convert SCF dialect to Standard dialect, replacing structured control flow with a CFG
--convert-shape-constraints - Convert shape constraint operations to the standard dialect
--convert-shape-to-std - Convert operations from the shape dialect into the standard dialect
--convert-spirv-to-llvm - Convert SPIR-V dialect to LLVM dialect
--convert-std-to-llvm - Convert scalar and vector operations from the Standard to the LLVM dialect
--data-layout= - String description (LLVM format) of the data layout that is expected on the produced module
--emit-c-wrappers - Emit wrappers for C-compatible pointer-to-struct memref descriptors
--index-bitwidth= - Bitwidth of the index type, 0 to use size of machine word
--use-bare-ptr-memref-call-conv - Replace FuncOp's MemRef arguments with bare pointers to the MemRef element types
--convert-std-to-spirv - Convert Standard dialect to SPIR-V dialect
--emulate-non-32-bit-scalar-types - Emulate non-32-bit scalar types with 32-bit ones if missing native support
--convert-vector-to-gpu - Lower the operations from the vector dialect into the GPU dialect
--convert-vector-to-llvm - Lower the operations from the vector dialect into the LLVM dialect
--enable-amx - Enables the use of AMX dialect while lowering the vector dialect.
--enable-arm-neon - Enables the use of ArmNeon dialect while lowering the vector dialect.
--enable-arm-sve - Enables the use of ArmSVE dialect while lowering the vector dialect.
--enable-index-optimizations - Allows compiler to assume indices fit in 32-bit if that yields faster code
--enable-x86vector - Enables the use of X86Vector dialect while lowering the vector dialect.
--reassociate-fp-reductions - Allows llvm to reassociate floating-point reductions for speed
--convert-vector-to-rocdl - Lower the operations from the vector dialect into the ROCDL dialect
--convert-vector-to-scf - Lower the operations from the vector dialect into the SCF dialect
--full-unroll - Perform full unrolling when converting vector transfers to SCF
--lower-permutation-maps - Replace permutation maps with vector transposes/broadcasts before lowering transfer ops
--lower-tensors - Lower transfer ops that operate on tensors
--target-rank= - Target vector rank to which transfer ops should be lowered
--convert-vector-to-spirv - Convert Vector dialect to SPIR-V dialect
--cse - Eliminate common sub-expressions
--decorate-spirv-composite-type-layout - Decorate SPIR-V composite type with layout info
--finalizing-bufferize - Finalize a partial bufferization
--fold-memref-subview-ops - Fold memref.subview ops into consumer load/store ops
--func-bufferize - Bufferize func/call/return ops
--gpu-async-region - Make GPU ops async
--gpu-kernel-outlining - Outline gpu.launch bodies to kernel functions
--data-layout-str= - String containing the data layout specification to be attached to the GPU kernel module
--gpu-to-llvm - Convert GPU dialect to LLVM dialect with GPU runtime calls
--gpu-binary-annotation= - Annotation attribute string for GPU binary
--inline - Inline function calls
--default-pipeline= - The default optimizer pipeline used for callables
--max-iterations= - Maximum number of iterations when inlining within an SCC
--op-pipelines= - Callable operation specific optimizer pipelines (in the form of `dialect.op(pipeline)`)
--launch-func-to-vulkan - Convert vulkanLaunch external call to Vulkan runtime external calls
--linalg-bufferize - Bufferize the linalg dialect
--linalg-comprehensive-module-bufferize - Bufferize (tensor into memref) for a Module.
--allow-return-memref - Allows the return of memrefs (for testing purposes only)
--allow-unknown-ops - Allows unknown (not bufferizable) ops in the input IR.
--analysis-fuzzer-seed= - Analyze ops in random order with a given seed (fuzzer)
--create-deallocs - Specify if buffers should be deallocated. For compatibility with core bufferization passes.
--fully-dynamic-layout-maps - Generate MemRef types with dynamic offset+strides by default.
--init-tensor-elimination - (Experimental) Try to eliminate init_tensor operations that are anchored at an insert_slice op
--print-conflicts - Annotates IR with RaW conflicts. Requires test-analysis-only.
--test-analysis-only - Only runs inplaceability analysis (for testing purposes only)
--use-alloca - Use stack allocations for memrefs (for testing purposes only)
--use-memref.copy - Use a copy operation implemented as a Linalg op.
--linalg-detensorize - Detensorize linalg ops
--aggressive-mode - Detensorize all ops that qualify for detensoring along with branch operands and basic-block arguments.
--linalg-fold-reshape-ops-by-linearization - Fold TensorReshapeOps with generic/indexed generic ops by linearization
--allow-folding-unit-dim-reshapes - Allow fusing linalg.tensor_reshape ops that performs unit dimension collapsing
--linalg-fold-unit-extent-dims - Remove unit-extent dimension in Linalg ops on tensors
--fold-one-trip-loops-only - Only folds the one-trip loops from Linalg ops on tensors (for testing purposes only)
--linalg-fuse-elementwise-ops - Fuse elementwise operations on tensors
--allow-folding-unit-dim-reshapes - Allow fusing linalg.tensor_reshape ops that performs unit dimension collapsing
--linalg-generalize-named-ops - Convert named ops into generic ops
--linalg-inline-scalar-operands - Inline scalar operands into linalg generic ops
--linalg-named-op-conversion - Convert from one named linalg op to another.
--linalg-promote-subviews - Promote subview ops to local buffers
--test-promote-dynamic - Test generation of dynamic promoted buffers
--test-use-alloca - Test generation of alloca'ed buffers.
--linalg-strategy-decompose-pass - Configurable pass to apply pattern-based generalization.
--anchor-func= - Which func op is the anchor to latch on.
--linalg-strategy-enable-pass - Configurable pass to enable the application of other pattern-based linalg passes.
--anchor-func= - Which func op is the anchor to latch on.
--linalg-strategy-generalize-pass - Configurable pass to apply pattern-based generalization.
--anchor-func= - Which func op is the anchor to latch on.
--anchor-op= - Which linalg op within the func is the anchor to latch on.
--linalg-strategy-interchange-pass - Configurable pass to apply pattern-based iterator interchange.
--anchor-func= - Which func op is the anchor to latch on.
--linalg-strategy-lower-vectors-pass - Configurable pass to lower vector operations.
--anchor-func= - Which func op is the anchor to latch on.
--linalg-strategy-pad-pass - Configurable pass to apply padding and hoisting.
--anchor-func= - Which func op is the anchor to latch on.
--anchor-op= - Which linalg op within the func is the anchor to latch on.
--linalg-strategy-promote-pass - Configurable pass to apply pattern-based linalg promotion.
--anchor-func= - Which func op is the anchor to latch on.
--anchor-op= - Which linalg op within the func is the anchor to latch on.
--linalg-strategy-remove-markers-pass - Cleanup pass that drops markers.
--anchor-func= - Which func op is the anchor to latch on.
--linalg-strategy-tile-and-fuse-pass - Configurable pass to apply pattern-based tiling and fusion.
--anchor-func= - Which func op is the anchor to latch on.
--anchor-op= - Which linalg op within the func is the anchor to latch on.
--linalg-strategy-tile-pass - Configurable pass to apply pattern-based linalg tiling.
--anchor-func= - Which func op is the anchor to latch on.
--anchor-op= - Which linalg op within the func is the anchor to latch on.
--linalg-strategy-vectorize-pass - Configurable pass to apply pattern-based linalg vectorization.
--anchor-func= - Which func op is the anchor to latch on.
--anchor-op= - Which linalg op within the func is the anchor to latch on.
--vectorize-padding - Enable vectorization of padding ops.
--linalg-tile - Tile operations in the linalg dialect
--distribution-types= - DistributionTypes (if loop-type=tiled_loop)
--loop-type= - Specify the type of loops to generate: for, parallel or tiled_loop
--tile-sizes= - Tile sizes
--llvm-legalize-for-export - Legalize LLVM dialect to be convertible to LLVM IR
--loop-invariant-code-motion - Hoist loop invariant instructions outside of the loop
--lower-affine - Lower Affine operations to a combination of Standard and SCF operations
--lower-host-to-llvm - Lowers the host module code and `gpu.launch_func` to LLVM
--memref-expand - Legalize memref operations to be convertible to LLVM.
--normalize-memrefs - Normalize memrefs
--print-op-stats - Print statistics of operations
--promote-buffers-to-stack - Promotes heap-based allocations to automatically managed stack-based allocations
--max-alloc-size-in-bytes= - Maximal size in bytes to promote allocations to stack.
--max-rank-of-allocated-memref= - Maximal memref rank to promote dynamic buffers.
--quant-convert-const - Converts constants followed by qbarrier to actual quantized values
--quant-convert-simulated-quantization - Converts training-time simulated quantization ops to corresponding quantize/dequantize casts
--reconcile-unrealized-casts - Simplify and eliminate unrealized conversion casts
--remove-shape-constraints - Replace all cstr_ ops with a true witness
--resolve-ranked-shaped-type-result-dims - Resolve memref.dim of result values of ranked shape type
--resolve-shaped-type-result-dims - Resolve memref.dim of result values
--sccp - Sparse Conditional Constant Propagation
--scf-bufferize - Bufferize the scf dialect.
--scf-for-loop-canonicalization - Canonicalize operations within scf.for loop bodies
--scf-for-loop-peeling - Peel `for` loops at their upper bounds.
--skip-partial - Do not peel loops inside of the last, partial iteration of another already peeled loop.
--scf-for-loop-range-folding - Fold add/mul ops into loop range
--scf-for-loop-specialization - Specialize `for` loops for vectorization
--scf-for-to-while - Convert SCF for loops to SCF while loops
--scf-parallel-loop-collapsing - Collapse parallel loops to use less induction variables
--collapsed-indices-0= - Which loop indices to combine 0th loop index
--collapsed-indices-1= - Which loop indices to combine into the position 1 loop index
--collapsed-indices-2= - Which loop indices to combine into the position 2 loop index
--scf-parallel-loop-fusion - Fuse adjacent parallel loops
--scf-parallel-loop-specialization - Specialize parallel loops for vectorization
--scf-parallel-loop-tiling - Tile parallel loops
--no-min-max-bounds - Perform tiling with fixed upper bound with inbound check inside the internal loops
--parallel-loop-tile-sizes= - Factors to tile parallel loops by
--shape-bufferize - Bufferize the shape dialect.
--shape-to-shape-lowering - Legalize Shape dialect to be convertible to Standard
--snapshot-op-locations - Generate new locations from the current IR
--filename= - The filename to print the generated IR
--tag= - A tag to use when fusing the new locations with the original. If unset, the locations are replaced.
--sparse-tensor-conversion - Apply conversion rules to sparse tensor primitives and types
--sparsification - Automatically generate sparse tensor code from sparse tensor types
--enable-simd-index32 - Enable i32 indexing into vectors (for efficiency)
--parallelization-strategy= - Set the parallelization strategy
--vectorization-strategy= - Set the vectorization strategy
--vl= - Set the vector length
--spirv-lower-abi-attrs - Decorate SPIR-V composite type with layout info
--spirv-rewrite-inserts - Rewrite sequential chains of spv.CompositeInsert operations into spv.CompositeConstruct operations
--spirv-update-vce - Deduce and attach minimal (version, capabilities, extensions) requirements to spv.module ops
--std-bufferize - Bufferize the std dialect
--strip-debuginfo - Strip debug info from all operations
--symbol-dce - Eliminate dead symbols
--tensor-bufferize - Bufferize the `tensor` dialect
--tosa-infer-shapes - Propagate shapes across TOSA operations
--tosa-make-broadcastable - TOSA rank Reshape to enable Broadcasting
--tosa-optional-decompositions - Applies Tosa operations optional decompositions
--tosa-to-linalg - Lower TOSA to LinAlg on tensors
--tosa-to-linalg-named - Lower TOSA to LinAlg named operations
--tosa-to-scf - Lower TOSA to the SCF dialect
--tosa-to-standard - Lower TOSA to the Standard dialect
--view-op-graph - Print Graphviz visualization of an operation
--max-label-len= - Limit attribute/type length to number of chars
--print-attrs - Print attributes of operations
--print-control-flow-edges - Print control flow edges
--print-data-flow-edges - Print data flow edges
--print-result-types - Print result types of operations
Pass Pipelines:
--sparse-compiler - The standard pipeline for taking sparsity-agnostic IR using the sparse-tensor type, and lowering it to LLVM IR with concrete representations and algorithms for sparse tensors.
--enable-simd-index32 - Enable i32 indexing into vectors (for efficiency)
--parallelization-strategy= - Set the parallelization strategy
--vectorization-strategy= - Set the vectorization strategy
--vl= - Set the vector length
--show-dialects - Print the list of registered dialects
--skip-ret-exit-block - Suppress counter promotion if exit blocks contain ret.
--speculative-counter-promotion-max-exiting= - 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-input-file - Split the input file into pieces and process each chunk independently
--summary-file= - The summary file to use for function importing.
--tail-predication= - 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 this which might be unsafe
=force-enabled - Enable tail-predication, including reduction loops, and force this which might be unsafe
--thinlto-assume-merged - Assume the input has already undergone ThinLTO function importing and the other pre-optimization pipeline changes.
--threads= -
--verify-diagnostics - Check that emitted diagnostics match expected-* lines on the corresponding line
--verify-each - Run the verifier after each transformation pass
--verify-region-info - Verify region info (time consuming)
--vp-counters-per-site= - The average number of profile counters allocated per value profiling site.
--vp-static-alloc - Do static counter allocation for value profiler
--wasm-enable-eh - WebAssembly exception handling
--wasm-enable-sjlj - WebAssembly setjmp/longjmp handling
--x86-align-branch= - 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= - 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= - Maximum number of prefixes to use for padding
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