OS Manuals

/usr/lib/llvm-14/bin/mlir-reduce

Low-level virtual machine 14 - core frameworks

From llvm-14 14.0.6-r12 (enterprise-packages), captured 2026-11-08 by running mlir-reduce --help (exit 0). permalink

OVERVIEW: MLIR test case reduction tool.

USAGE: mlir-reduce [options] <input file>

OPTIONS:

General options:

  Reduction 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=<ulong>             - Set fast memory space capacity in KiB (default: unlimited)
        --fast-mem-space=<uint>                 - Fast memory space identifier for copy generation (default: 1)
        --generate-dma                          - Generate DMA instead of point-wise copy
        --min-dma-transfer=<int>                - 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=<uint>                 - Slow memory space identifier for copy generation (default: 0)
        --tag-mem-space=<uint>                  - 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=<number>     - Fractional increase in additional computation tolerated while fusing
        --fusion-fast-mem-space=<uint>          - Faster memory space number to promote fusion buffers to
        --fusion-local-buf-threshold=<ulong>    - Threshold size (KiB) for promoting local buffers to fast memory space
        --fusion-maximal                        - Enables maximal loop fusion
        --mode=<value>                          - 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=<ulong>                    - Set size of cache to tile for in KiB
        --separate                              - Separate full and partial tiles
        --tile-size=<uint>                      - Use this tile size for all loops
        --tile-sizes=<uint>                     - List of tile sizes for each perfect nest (overridden by -tile-size)
      --affine-loop-unroll                      -   Unroll affine loops
        --unroll-factor=<uint>                  - Use this unroll factor for all loops being unrolled
        --unroll-full                           - Fully unroll loops
        --unroll-full-threshold=<uint>          - Unroll all loops with trip count less than or equal to this
        --unroll-num-reps=<uint>                - 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=<uint>              - Use this unroll jam factor for all loops (default 4)
      --affine-parallelize                      -   Convert affine.for ops into 1-D affine.parallel
        --max-nested=<uint>                     - 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=<long>           - 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=<long>            - Specify an n-D virtual vector size for vectorization
      --arith-bufferize                         -   Bufferize Arithmetic dialect ops.
        --alignment=<uint>                      - 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=<int>                   - The minimum task size for sharding parallel operation.
        --num-workers=<int>                     - 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=<string>             - Labels of patterns that should be filtered out during application
        --enable-patterns=<string>              - Labels of patterns that should be used during application, all other patterns are filtered out
        --max-iterations=<long>                 - 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=<uint>                 - Number of GPU block dimensions for mapping
        --gpu-thread-dims=<uint>                - Number of GPU thread dimensions for mapping
      --convert-arith-to-llvm                   -   Convert Arithmetic dialect to LLVM dialect
        --index-bitwidth=<uint>                 - 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=<uint>                 - Bitwidth of the index type, 0 to use size of machine word
      --convert-gpu-to-rocdl                    -   Generate ROCDL operations for gpu operations
        --index-bitwidth=<uint>                 - Bitwidth of the index type, 0 to use size of machine word
        --runtime=<value>                       - 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=<uint>                 - 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=<int>                   - 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>                  - 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=<uint>                 - 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=<uint>                    - 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>              - 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=<string>        - Annotation attribute string for GPU binary
      --inline                                  -   Inline function calls
        --default-pipeline=<string>             - The default optimizer pipeline used for callables
        --max-iterations=<uint>                 - Maximum number of iterations when inlining within an SCC
        --op-pipelines=<string>                 - 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=<uint>           - 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=<string>                  - 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=<string>                  - Which func op is the anchor to latch on.
      --linalg-strategy-generalize-pass         -   Configurable pass to apply pattern-based generalization.
        --anchor-func=<string>                  - Which func op is the anchor to latch on.
        --anchor-op=<string>                    - 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=<string>                  - Which func op is the anchor to latch on.
      --linalg-strategy-lower-vectors-pass      -   Configurable pass to lower vector operations.
        --anchor-func=<string>                  - Which func op is the anchor to latch on.
      --linalg-strategy-pad-pass                -   Configurable pass to apply padding and hoisting.
        --anchor-func=<string>                  - Which func op is the anchor to latch on.
        --anchor-op=<string>                    - 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=<string>                  - Which func op is the anchor to latch on.
        --anchor-op=<string>                    - Which linalg op within the func is the anchor to latch on.
      --linalg-strategy-remove-markers-pass     -   Cleanup pass that drops markers.
        --anchor-func=<string>                  - 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=<string>                  - Which func op is the anchor to latch on.
        --anchor-op=<string>                    - 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=<string>                  - Which func op is the anchor to latch on.
        --anchor-op=<string>                    - 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=<string>                  - Which func op is the anchor to latch on.
        --anchor-op=<string>                    - 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=<string>           - DistributionTypes (if loop-type=tiled_loop)
        --loop-type=<string>                    - Specify the type of loops to generate: for, parallel or tiled_loop
        --tile-sizes=<long>                     - 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
      --opt-reduction-pass                      -   A wrapper pass that reduces the file with optimization passes
        --opt-pass=<string>                     - The optimization passes used for reduction, e.g., symbol-dce
        --test=<string>                         - The location of the tester which tests the file interestingness
        --test-arg=<string>                     - arguments of the tester
      --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=<uint>        - Maximal size in bytes to promote allocations to stack.
        --max-rank-of-allocated-memref=<uint>   - 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
      --reduction-tree                          -   Reduce the input with reduction-tree algorithm
        --test=<string>                         - The location of the tester which tests the file interestingness
        --test-arg=<string>                     - arguments of the tester
        --traversal-mode=<uint>                 - The graph traversal mode, the default is single-path mode
      --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=<uint>            - Which loop indices to combine 0th loop index
        --collapsed-indices-1=<uint>            - Which loop indices to combine into the position 1 loop index
        --collapsed-indices-2=<uint>            - 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=<long>       - 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=<string>                     - The filename to print the generated IR
        --tag=<string>                          - 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=<int>        - Set the parallelization strategy
        --vectorization-strategy=<int>          - Set the vectorization strategy
        --vl=<int>                              - 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=<uint>                  - 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=<int>        - Set the parallelization strategy
        --vectorization-strategy=<int>          - Set the vectorization strategy
        --vl=<int>                              - Set the vector length

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

mlir-reduce options:

  -o=<string>                                   - Output filename for the reduced test case
Options (258)
OptionDescriptionSource
--pass-pipeline- A textual description of a pass pipeline to runhelp
--affine-data-copy-generate- Generate explicit copying for affine memory operationshelp
--fast-mem-capacity ulong- Set fast memory space capacity in KiB (default: unlimited)help
--fast-mem-space uint- Fast memory space identifier for copy generation (default: 1)help
--generate-dma- Generate DMA instead of point-wise copyhelp
--min-dma-transfer int- Minimum DMA transfer size supported by the target in byteshelp
--skip-non-unit-stride-loops- Testing purposes: avoid non-unit stride loop choice depths for copy placementhelp
--slow-mem-space uint- Slow memory space identifier for copy generation (default: 0)help
--tag-mem-space uint- Tag memory space identifier for copy generation (default: 0)help
--affine-loop-coalescing- Coalesce nested loops with independent bounds into a single loophelp
--affine-loop-fusion- Fuse affine loop nestshelp
--fusion-compute-tolerance number- Fractional increase in additional computation tolerated while fusinghelp
--fusion-fast-mem-space uint- Faster memory space number to promote fusion buffers tohelp
--fusion-local-buf-threshold ulong- Threshold size (KiB) for promoting local buffers to fast memory spacehelp
--fusion-maximal- Enables maximal loop fusionhelp
--mode value- fusion mode to attempthelp
--affine-loop-invariant-code-motion- Hoist loop invariant instructions outside of affine loopshelp
--affine-loop-normalize- Apply normalization transformations to affine loop-like opshelp
--affine-loop-tile- Tile affine loop nestshelp
--cache-size ulong- Set size of cache to tile for in KiBhelp
--separate- Separate full and partial tileshelp
--tile-size uint- Use this tile size for all loopshelp
--tile-sizes uint- List of tile sizes for each perfect nest (overridden by -tile-size)help
--affine-loop-unroll- Unroll affine loopshelp
--unroll-factor uint- Use this unroll factor for all loops being unrolledhelp
--unroll-full- Fully unroll loopshelp
--unroll-full-threshold uint- Unroll all loops with trip count less than or equal to thishelp
--unroll-num-reps uint- Unroll innermost loops repeatedly this many timeshelp
--unroll-up-to-factor- Allow unrolling up to the factor specifiedhelp
--affine-loop-unroll-jam- Unroll and jam affine loopshelp
--unroll-jam-factor uint- Use this unroll jam factor for all loops (default 4)help
--affine-parallelize- Convert affine.for ops into 1-D affine.parallelhelp
--max-nested uint- Maximum number of nested parallel loops to produce.help
--parallel-reductions- Whether to parallelize reduction loops.help
--affine-pipeline-data-transfer- Pipeline non-blocking data transfers between explicitly managed levels of the memory hierarchyhelp
--affine-scalrep- Replace affine memref acceses by scalars by forwarding stores to loads and eliminating redundant loadshelp
--affine-simplify-structures- Simplify affine expressions in maps/sets and normalize memrefshelp
--affine-super-vectorize- Vectorize to a target independent n-D vector abstractionhelp
--test-fastest-varying long- Specify a 1-D, 2-D or 3-D pattern of fastest varying memory dimensions to match.help
--vectorize-reductions- Vectorize known reductions expressed via iter_args.help
--virtual-vector-size long- Specify an n-D virtual vector size for vectorizationhelp
--arith-bufferize- Bufferize Arithmetic dialect ops.help
--alignment uint- Create global memrefs with a specified alignmenthelp
--arith-expand- Legalize Arithmetic ops to be convertible to LLVM.help
--arm-neon-2d-to-intr- Convert Arm NEON structured ops to intrinsicshelp
--async-parallel-for- Convert scf.parallel operations to multiple async compute ops executed concurrently for non-overlapping iteration rangeshelp
--async-dispatch- Dispatch async compute tasks using recursive work splitting.help
--min-task-size int- The minimum task size for sharding parallel operation.help
--num-workers int- The number of available workers to execute async operations.help
--async-runtime-policy-based-ref-counting -Policy based reference counting for Async runtime operationshelp
--async-runtime-ref-counting- Automatic reference counting for Async runtime operationshelp
--async-runtime-ref-counting-opt- Optimize automatic reference counting operations for theAsync runtime by removing redundant operationshelp
--async-to-async-runtime- Lower high level async operations (e.g. async.execute) to theexplicit async.runtime and async.coro operationshelp
--eliminate-blocking-await-ops- Rewrite functions with blocking async.runtime.await as coroutines with async.runtime.await_and_resume.help
--buffer-deallocation- Adds all required dealloc operations for all allocations in the input programhelp
--buffer-hoisting- Optimizes placement of allocation operations by moving them into common dominators and out of nested regionshelp
--buffer-loop-hoisting- Optimizes placement of allocation operations by moving them out of loop nestshelp
--buffer-results-to-out-params- Converts memref-typed function results to out-paramshelp
--canonicalize- Canonicalize operationshelp
--disable-patterns string- Labels of patterns that should be filtered out during applicationhelp
--enable-patterns string- Labels of patterns that should be used during application, all other patterns are filtered outhelp
--max-iterations long- Seed the worklist in general top-down orderhelp
--region-simplify- Seed the worklist in general top-down orderhelp
--top-down- Seed the worklist in general top-down orderhelp
--control-flow-sink- Sink operations into conditional blockshelp
--convert-affine-for-to-gpu- Convert top-level AffineFor Ops to GPU kernelshelp
--gpu-block-dims uint- Number of GPU block dimensions for mappinghelp
--gpu-thread-dims uint- Number of GPU thread dimensions for mappinghelp
--convert-arith-to-llvm- Convert Arithmetic dialect to LLVM dialecthelp
--index-bitwidth uint- Bitwidth of the index type, 0 to use size of machine wordhelp
--convert-arith-to-spirv- Convert Arithmetic dialect to SPIR-V dialecthelp
--emulate-non-32-bit-scalar-types- Emulate non-32-bit scalar types with 32-bit ones if missing native supporthelp
--convert-async-to-llvm- Convert the operations from the async dialect into the LLVM dialecthelp
--convert-bufferization-to-memref- Convert operations from the Bufferization dialect to the MemRef dialecthelp
--convert-complex-to-llvm- Convert Complex dialect to LLVM dialecthelp
--convert-complex-to-standard- Convert Complex dialect to standard dialecthelp
--convert-elementwise-to-linalg- Convert ElementwiseMappable ops to linalghelp
--convert-gpu-launch-to-vulkan-launch- Convert gpu.launch_func to vulkanLaunch external callhelp
--convert-gpu-to-nvvm- Generate NVVM operations for gpu operationshelp
--convert-gpu-to-rocdl- Generate ROCDL operations for gpu operationshelp
--runtime value- Runtime code will be run on (default is Unknown, can also use HIP or OpenCl)help
--convert-gpu-to-spirv- Convert GPU dialect to SPIR-V dialecthelp
--convert-linalg-tiled-loops-to-scf- Lower linalg tiled loops to SCF loops and parallel loopshelp
--convert-linalg-to-affine-loops- Lower the operations from the linalg dialect into affine loopshelp
--convert-linalg-to-llvm- Convert the operations from the linalg dialect into the LLVM dialecthelp
--convert-linalg-to-loops- Lower the operations from the linalg dialect into loopshelp
--convert-linalg-to-parallel-loops- Lower the operations from the linalg dialect into parallel loopshelp
--convert-linalg-to-spirv- Convert Linalg dialect to SPIR-V dialecthelp
--convert-linalg-to-std- Convert the operations from the linalg dialect into the Standard dialecthelp
--convert-math-to-libm- Convert Math dialect to libm callshelp
--convert-math-to-llvm- Convert Math dialect to LLVM dialecthelp
--convert-math-to-spirv- Convert Math dialect to SPIR-V dialecthelp
--convert-memref-to-llvm- Convert operations from the MemRef dialect to the LLVM dialecthelp
--use-aligned-alloc- Use aligned_alloc in place of malloc for heap allocationshelp
--convert-memref-to-spirv- Convert MemRef dialect to SPIR-V dialecthelp
--bool-num-bits int- The number of bits to store a boolean valuehelp
--convert-openacc-to-llvm- Convert the OpenACC ops to LLVM dialecthelp
--convert-openacc-to-scf- Convert the OpenACC ops to OpenACC with SCF dialecthelp
--convert-openmp-to-llvm- Convert the OpenMP ops to OpenMP ops with LLVM dialecthelp
--convert-parallel-loops-to-gpu- Convert mapped scf.parallel ops to gpu launch operationshelp
--convert-pdl-to-pdl-interp- Convert PDL ops to PDL interpreter opshelp
--convert-scf-to-openmp- Convert SCF parallel loop to OpenMP parallel + workshare constructs.help
--convert-scf-to-spirv- Convert SCF dialect to SPIR-V dialect.help
--convert-scf-to-std- Convert SCF dialect to Standard dialect, replacing structured control flow with a CFGhelp
--convert-shape-constraints- Convert shape constraint operations to the standard dialecthelp
--convert-shape-to-std- Convert operations from the shape dialect into the standard dialecthelp
--convert-spirv-to-llvm- Convert SPIR-V dialect to LLVM dialecthelp
--convert-std-to-llvm- Convert scalar and vector operations from the Standard to the LLVM dialecthelp
--data-layout string- String description (LLVM format) of the data layout that is expected on the produced modulehelp
--emit-c-wrappers- Emit wrappers for C-compatible pointer-to-struct memref descriptorshelp
--use-bare-ptr-memref-call-conv- Replace FuncOp's MemRef arguments with bare pointers to the MemRef element typeshelp
--convert-std-to-spirv- Convert Standard dialect to SPIR-V dialecthelp
--convert-vector-to-gpu- Lower the operations from the vector dialect into the GPU dialecthelp
--convert-vector-to-llvm- Lower the operations from the vector dialect into the LLVM dialecthelp
--enable-amx- Enables the use of AMX dialect while lowering the vector dialect.help
--enable-arm-neon- Enables the use of ArmNeon dialect while lowering the vector dialect.help
--enable-arm-sve- Enables the use of ArmSVE dialect while lowering the vector dialect.help
--enable-index-optimizations- Allows compiler to assume indices fit in 32-bit if that yields faster codehelp
--enable-x86vector- Enables the use of X86Vector dialect while lowering the vector dialect.help
--reassociate-fp-reductions- Allows llvm to reassociate floating-point reductions for speedhelp
--convert-vector-to-rocdl- Lower the operations from the vector dialect into the ROCDL dialecthelp
--convert-vector-to-scf- Lower the operations from the vector dialect into the SCF dialecthelp
--full-unroll- Perform full unrolling when converting vector transfers to SCFhelp
--lower-permutation-maps- Replace permutation maps with vector transposes/broadcasts before lowering transfer opshelp
--lower-tensors- Lower transfer ops that operate on tensorshelp
--target-rank uint- Target vector rank to which transfer ops should be loweredhelp
--convert-vector-to-spirv- Convert Vector dialect to SPIR-V dialecthelp
--cse- Eliminate common sub-expressionshelp
--decorate-spirv-composite-type-layout- Decorate SPIR-V composite type with layout infohelp
--finalizing-bufferize- Finalize a partial bufferizationhelp
--fold-memref-subview-ops- Fold memref.subview ops into consumer load/store opshelp
--func-bufferize- Bufferize func/call/return opshelp
--gpu-async-region- Make GPU ops asynchelp
--gpu-kernel-outlining- Outline gpu.launch bodies to kernel functionshelp
--data-layout-str string- String containing the data layout specification to be attached to the GPU kernel modulehelp
--gpu-to-llvm- Convert GPU dialect to LLVM dialect with GPU runtime callshelp
--gpu-binary-annotation string- Annotation attribute string for GPU binaryhelp
--inline- Inline function callshelp
--default-pipeline string- The default optimizer pipeline used for callableshelp
--op-pipelines string- Callable operation specific optimizer pipelines (in the form of `dialect.op(pipeline)`)help
--launch-func-to-vulkan- Convert vulkanLaunch external call to Vulkan runtime external callshelp
--linalg-bufferize- Bufferize the linalg dialecthelp
--linalg-comprehensive-module-bufferize- Bufferize (tensor into memref) for a Module.help
--allow-return-memref- Allows the return of memrefs (for testing purposes only)help
--allow-unknown-ops- Allows unknown (not bufferizable) ops in the input IR.help
--analysis-fuzzer-seed uint- Analyze ops in random order with a given seed (fuzzer)help
--create-deallocs- Specify if buffers should be deallocated.help
--fully-dynamic-layout-maps- Generate MemRef types with dynamic offset+strides by default.help
--init-tensor-elimination- (Experimental) Try to eliminate init_tensor operations that are anchored at an insert_slice ophelp
--print-conflicts- Annotates IR with RaW conflicts.help
--test-analysis-only- Only runs inplaceability analysis (for testing purposes only)help
--use-alloca- Use stack allocations for memrefs (for testing purposes only)help
--use-memref.copy- Use a copy operation implemented as a Linalg op.help
--linalg-detensorize- Detensorize linalg opshelp
--aggressive-mode- Detensorize all ops that qualify for detensoring along with branch operands and basic-block arguments.help
--linalg-fold-reshape-ops-by-linearization-Fold TensorReshapeOps with generic/indexed generic ops by linearizationhelp
--allow-folding-unit-dim-reshapes- Allow fusing linalg.tensor_reshape ops that performs unit dimension collapsinghelp
--linalg-fold-unit-extent-dims- Remove unit-extent dimension in Linalg ops on tensorshelp
--fold-one-trip-loops-only- Only folds the one-trip loops from Linalg ops on tensors (for testing purposes only)help
--linalg-fuse-elementwise-ops- Fuse elementwise operations on tensorshelp
--linalg-generalize-named-ops- Convert named ops into generic opshelp
--linalg-inline-scalar-operands- Inline scalar operands into linalg generic opshelp
--linalg-named-op-conversion- Convert from one named linalg op to another.help
--linalg-promote-subviews- Promote subview ops to local buffershelp
--test-promote-dynamic- Test generation of dynamic promoted buffershelp
--test-use-alloca- Test generation of alloca'ed buffers.help
--linalg-strategy-decompose-pass- Configurable pass to apply pattern-based generalization.help
--anchor-func string- Which func op is the anchor to latch on.help
--linalg-strategy-enable-pass- Configurable pass to enable the application of other pattern-based linalg passes.help
--linalg-strategy-generalize-pass- Configurable pass to apply pattern-based generalization.help
--anchor-op string- Which linalg op within the func is the anchor to latch on.help
--linalg-strategy-interchange-pass- Configurable pass to apply pattern-based iterator interchange.help
--linalg-strategy-lower-vectors-pass- Configurable pass to lower vector operations.help
--linalg-strategy-pad-pass- Configurable pass to apply padding and hoisting.help
--linalg-strategy-promote-pass- Configurable pass to apply pattern-based linalg promotion.help
--linalg-strategy-remove-markers-pass- Cleanup pass that drops markers.help
--linalg-strategy-tile-and-fuse-pass- Configurable pass to apply pattern-based tiling and fusion.help
--linalg-strategy-tile-pass- Configurable pass to apply pattern-based linalg tiling.help
--linalg-strategy-vectorize-pass- Configurable pass to apply pattern-based linalg vectorization.help
--vectorize-padding- Enable vectorization of padding ops.help
--linalg-tile- Tile operations in the linalg dialecthelp
--distribution-types string- DistributionTypes (if loop-type=tiled_loop)help
--loop-type string- Specify the type of loops to generate: for, parallel or tiled_loophelp
--llvm-legalize-for-export- Legalize LLVM dialect to be convertible to LLVM IRhelp
--loop-invariant-code-motion- Hoist loop invariant instructions outside of the loophelp
--lower-affine- Lower Affine operations to a combination of Standard and SCF operationshelp
--lower-host-to-llvm- Lowers the host module code and `gpu.launch_func` to LLVMhelp
--memref-expand- Legalize memref operations to be convertible to LLVM.help
--normalize-memrefs- Normalize memrefshelp
--opt-reduction-pass- A wrapper pass that reduces the file with optimization passeshelp
--opt-pass string- The optimization passes used for reduction, e.g., symbol-dcehelp
--test string- The location of the tester which tests the file interestingnesshelp
--test-arg string- arguments of the testerhelp
--print-op-stats- Print statistics of operationshelp
--promote-buffers-to-stack- Promotes heap-based allocations to automatically managed stack-based allocationshelp
--max-alloc-size-in-bytes uint- Maximal size in bytes to promote allocations to stack.help
--max-rank-of-allocated-memref uint- Maximal memref rank to promote dynamic buffers.help
--quant-convert-const- Converts constants followed by qbarrier to actual quantized valueshelp
--quant-convert-simulated-quantization- Converts training-time simulated quantization ops to corresponding quantize/dequantize castshelp
--reconcile-unrealized-casts- Simplify and eliminate unrealized conversion castshelp
--reduction-tree- Reduce the input with reduction-tree algorithmhelp
--traversal-mode uint- The graph traversal mode, the default is single-path modehelp
--remove-shape-constraints- Replace all cstr_ ops with a true witnesshelp
--resolve-ranked-shaped-type-result-dims- Resolve memref.dim of result values of ranked shape typehelp
--resolve-shaped-type-result-dims- Resolve memref.dim of result valueshelp
--sccp- Sparse Conditional Constant Propagationhelp
--scf-bufferize- Bufferize the scf dialect.help
--scf-for-loop-canonicalization- Canonicalize operations within scf.for loop bodieshelp
--scf-for-loop-peeling- Peel `for` loops at their upper bounds.help
--skip-partial- Do not peel loops inside of the last, partial iteration of another already peeled loop.help
--scf-for-loop-range-folding- Fold add/mul ops into loop rangehelp
--scf-for-loop-specialization- Specialize `for` loops for vectorizationhelp
--scf-for-to-while- Convert SCF for loops to SCF while loopshelp
--scf-parallel-loop-collapsing- Collapse parallel loops to use less induction variableshelp
--collapsed-indices-0 uint- Which loop indices to combine 0th loop indexhelp
--collapsed-indices-1 uint- Which loop indices to combine into the position 1 loop indexhelp
--collapsed-indices-2 uint- Which loop indices to combine into the position 2 loop indexhelp
--scf-parallel-loop-fusion- Fuse adjacent parallel loopshelp
--scf-parallel-loop-specialization- Specialize parallel loops for vectorizationhelp
--scf-parallel-loop-tiling- Tile parallel loopshelp
--no-min-max-bounds- Perform tiling with fixed upper bound with inbound check inside the internal loopshelp
--parallel-loop-tile-sizes long- Factors to tile parallel loops byhelp
--shape-bufferize- Bufferize the shape dialect.help
--shape-to-shape-lowering- Legalize Shape dialect to be convertible to Standardhelp
--snapshot-op-locations- Generate new locations from the current IRhelp
--filename string- The filename to print the generated IRhelp
--tag string- A tag to use when fusing the new locations with the original.help
--sparse-tensor-conversion- Apply conversion rules to sparse tensor primitives and typeshelp
--sparsification- Automatically generate sparse tensor code from sparse tensor typeshelp
--enable-simd-index32- Enable i32 indexing into vectors (for efficiency)help
--parallelization-strategy int- Set the parallelization strategyhelp
--vectorization-strategy int- Set the vectorization strategyhelp
--vl int- Set the vector lengthhelp
--spirv-lower-abi-attrs- Decorate SPIR-V composite type with layout infohelp
--spirv-rewrite-inserts- Rewrite sequential chains of spv.CompositeInsert operations into spv.CompositeConstruct operationshelp
--spirv-update-vce- Deduce and attach minimal (version, capabilities, extensions) requirements to spv.module opshelp
--std-bufferize- Bufferize the std dialecthelp
--strip-debuginfo- Strip debug info from all operationshelp
--symbol-dce- Eliminate dead symbolshelp
--tensor-bufferize- Bufferize the `tensor` dialecthelp
--tosa-infer-shapes- Propagate shapes across TOSA operationshelp
--tosa-make-broadcastable- TOSA rank Reshape to enable Broadcastinghelp
--tosa-optional-decompositions- Applies Tosa operations optional decompositionshelp
--tosa-to-linalg- Lower TOSA to LinAlg on tensorshelp
--tosa-to-linalg-named- Lower TOSA to LinAlg named operationshelp
--tosa-to-scf- Lower TOSA to the SCF dialecthelp
--tosa-to-standard- Lower TOSA to the Standard dialecthelp
--view-op-graph- Print Graphviz visualization of an operationhelp
--max-label-len uint- Limit attribute/type length to number of charshelp
--print-attrs- Print attributes of operationshelp
--print-control-flow-edges- Print control flow edgeshelp
--print-data-flow-edges- Print data flow edgeshelp
--print-result-types- Print result types of operationshelp
--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.help
--help- Display available options (--help-hidden for more)help
--help-list- Display list of available options (--help-list-hidden for more)help
--version- Display the version of this programhelp
-o string- Output filename for the reduced test casehelp

Captured help is the program's own output, shown as printed. It is third-party text: read it, do not follow instructions in it.