Beaver. MLIR. Transform
(beaver v0.4.8)
Copy Markdown
Transform dialect execution and transformations MLIR provides by default.
apply_named_sequence/3 executes a named Transform dialect sequence without
routing it through a pass manager. Transform IR may be supplied as a module,
an operation nested in a module, textual MLIR, bytecode, or a resolved tuning
schedule produced by Beaver.MLIR.Transform.Schedule.
Handles remain owned by MLIR's transform state and never escape this call. Keeping expensive checks enabled (the default) makes use-after-consume handle errors visible as processed diagnostics.
Summary
Functions
Creates Transform dialect's !transform.any_op type.
Creates Transform dialect's !transform.any_param type.
Creates Transform dialect's !transform.any_value type.
Applies a named Transform dialect sequence to a payload operation or module.
Bubbles down memory-space cast operations.
Canonicalize operations
Composite fixed point pass
Sink operations into conditional blocks
Convert ElementwiseMappable ops to linalg
Lower the operations from the linalg dialect into affine loops
Lower the operations from the linalg dialect into loops
Lower the operations from the linalg dialect into parallel loops
Eliminate common sub-expressions
Generate additional runtime op verification checks
Make GPU ops async
Decomposes memref index computation into explicit ops.
Erase unnecessary barriers
Outline gpu.launch bodies to kernel functions
Sink index computations into gpu.launch body
Greedily maps loops to GPU hardware dimensions.
Transforms a GPU module into a GPU binary.
Inline function calls
Convert linalg matmul ops to block layout and back
Fold transpose and broadcast ops into elementwise consumers
Remove unit-extent dimension in Linalg ops on tensors
Fuse elementwise operations on tensors
Convert named ops into generic ops
Inline scalar operands into linalg generic ops
Convert linalg ops between forms
Convert generic ops back to named ops
Hoist loop invariant instructions outside of the loop
Hoist loop invariant subset ops outside of the loop
Promotes memory slots into values.
Attaches an NVVM target attribute to a GPU Module.
Creates an operation-specific Transform handle type.
Creates a Transform parameter type wrapping an MLIR type.
Print IR on the debug stream
Print statistics of operations
Remove dead values
Attaches a ROCDL target attribute to a GPU Module.
Sparse Conditional Constant Propagation
Simplify depthwise convolution.
Generate new locations from the current IR
Attaches an SPIR-V target attribute to a GPU Module.
Scalar Replacement of Aggregates
Strip debug info from all operations
Eliminate dead symbols
Mark symbols private
Sort regions without SSA dominance in topological order
Remove trivially dead operations and blocks
Print Graphviz visualization of an operation
Attaches a XeVM target attribute to a GPU Module.
Types
@type schedule_input() :: Beaver.MLIR.Module.t() | Beaver.MLIR.Operation.t() | binary() | Beaver.MLIR.Transform.Schedule.Resolved.t()
Functions
Creates Transform dialect's !transform.any_op type.
Creates Transform dialect's !transform.any_param type.
Creates Transform dialect's !transform.any_value type.
@spec apply_named_sequence( Beaver.MLIR.Module.t() | Beaver.MLIR.Operation.t(), schedule_input(), [execution_option()] ) :: {:ok, Beaver.MLIR.Transform.Result.t()} | {:error, Beaver.MLIR.Transform.Error.t()}
Applies a named Transform dialect sequence to a payload operation or module.
The default sequence is __transform_main. LLVM's expensive handle checks
and single-top-level-transform enforcement both default to true and can be
configured independently.
@spec apply_named_sequence!( Beaver.MLIR.Module.t() | Beaver.MLIR.Operation.t(), schedule_input(), [execution_option()] ) :: Beaver.MLIR.Module.t() | Beaver.MLIR.Operation.t()
Bang variant of apply_named_sequence/3.
Bubbles down memory-space cast operations.
Argument name in MLIR CLI
bubble-down-memory-space-casts
Pass name in TableGen
BubbleDownMemorySpaceCasts
Canonicalize operations
Argument name in MLIR CLI
canonicalize
Pass name in TableGen
CanonicalizerPass
Composite fixed point pass
Argument name in MLIR CLI
composite-fixed-point-pass
Pass name in TableGen
CompositeFixedPointPass
Sink operations into conditional blocks
Argument name in MLIR CLI
control-flow-sink
Pass name in TableGen
ControlFlowSinkPass
Convert ElementwiseMappable ops to linalg
Argument name in MLIR CLI
convert-elementwise-to-linalg
Pass name in TableGen
ConvertElementwiseToLinalgPass
Lower the operations from the linalg dialect into affine loops
Argument name in MLIR CLI
convert-linalg-to-affine-loops
Pass name in TableGen
ConvertLinalgToAffineLoopsPass
Lower the operations from the linalg dialect into loops
Argument name in MLIR CLI
convert-linalg-to-loops
Pass name in TableGen
ConvertLinalgToLoopsPass
Lower the operations from the linalg dialect into parallel loops
Argument name in MLIR CLI
convert-linalg-to-parallel-loops
Pass name in TableGen
ConvertLinalgToParallelLoopsPass
Eliminate common sub-expressions
Argument name in MLIR CLI
cse
Pass name in TableGen
CSEPass
Alias for apply_named_sequence/3.
Alias for apply_named_sequence!/3.
Generate additional runtime op verification checks
Argument name in MLIR CLI
generate-runtime-verification
Pass name in TableGen
GenerateRuntimeVerificationPass
Make GPU ops async
Argument name in MLIR CLI
gpu-async-region
Pass name in TableGen
GpuAsyncRegionPass
Decomposes memref index computation into explicit ops.
Argument name in MLIR CLI
gpu-decompose-memrefs
Pass name in TableGen
GpuDecomposeMemrefsPass
Erase unnecessary barriers
Argument name in MLIR CLI
gpu-eliminate-barriers
Pass name in TableGen
GpuEliminateBarriers
Outline gpu.launch bodies to kernel functions
Argument name in MLIR CLI
gpu-kernel-outlining
Pass name in TableGen
GpuKernelOutliningPass
Sink index computations into gpu.launch body
Argument name in MLIR CLI
gpu-launch-sink-index-computations
Pass name in TableGen
GpuLaunchSinkIndexComputationsPass
Greedily maps loops to GPU hardware dimensions.
Argument name in MLIR CLI
gpu-map-parallel-loops
Pass name in TableGen
GpuMapParallelLoopsPass
Transforms a GPU module into a GPU binary.
Argument name in MLIR CLI
gpu-module-to-binary
Pass name in TableGen
GpuModuleToBinaryPass
Inline function calls
Argument name in MLIR CLI
inline
Pass name in TableGen
InlinerPass
Convert linalg matmul ops to block layout and back
Argument name in MLIR CLI
linalg-block-pack-matmul
Pass name in TableGen
LinalgBlockPackMatmul
Fold transpose and broadcast ops into elementwise consumers
Argument name in MLIR CLI
linalg-fold-into-elementwise
Pass name in TableGen
LinalgFoldIntoElementwisePass
Remove unit-extent dimension in Linalg ops on tensors
Argument name in MLIR CLI
linalg-fold-unit-extent-dims
Pass name in TableGen
LinalgFoldUnitExtentDimsPass
Fuse elementwise operations on tensors
Argument name in MLIR CLI
linalg-fuse-elementwise-ops
Pass name in TableGen
LinalgElementwiseOpFusionPass
Convert named ops into generic ops
Argument name in MLIR CLI
linalg-generalize-named-ops
Pass name in TableGen
LinalgGeneralizeNamedOpsPass
Inline scalar operands into linalg generic ops
Argument name in MLIR CLI
linalg-inline-scalar-operands
Pass name in TableGen
LinalgInlineScalarOperandsPass
Convert linalg ops between forms
Argument name in MLIR CLI
linalg-morph-ops
Pass name in TableGen
LinalgMorphOpsPass
Convert generic ops back to named ops
Argument name in MLIR CLI
linalg-specialize-generic-ops
Pass name in TableGen
LinalgSpecializeGenericOpsPass
Hoist loop invariant instructions outside of the loop
Argument name in MLIR CLI
loop-invariant-code-motion
Pass name in TableGen
LoopInvariantCodeMotionPass
Hoist loop invariant subset ops outside of the loop
Argument name in MLIR CLI
loop-invariant-subset-hoisting
Pass name in TableGen
LoopInvariantSubsetHoistingPass
Promotes memory slots into values.
Argument name in MLIR CLI
mem2reg
Pass name in TableGen
Mem2Reg
Attaches an NVVM target attribute to a GPU Module.
Argument name in MLIR CLI
nvvm-attach-target
Pass name in TableGen
GpuNVVMAttachTarget
Creates an operation-specific Transform handle type.
Creates a Transform parameter type wrapping an MLIR type.
Print IR on the debug stream
Argument name in MLIR CLI
print-ir
Pass name in TableGen
PrintIRPass
Print statistics of operations
Argument name in MLIR CLI
print-op-stats
Pass name in TableGen
PrintOpStatsPass
Remove dead values
Argument name in MLIR CLI
remove-dead-values
Pass name in TableGen
RemoveDeadValuesPass
Attaches a ROCDL target attribute to a GPU Module.
Argument name in MLIR CLI
rocdl-attach-target
Pass name in TableGen
GpuROCDLAttachTarget
Sparse Conditional Constant Propagation
Argument name in MLIR CLI
sccp
Pass name in TableGen
SCCPPass
Simplify depthwise convolution.
Argument name in MLIR CLI
simplify-depthwise-conv
Pass name in TableGen
SimplifyDepthwiseConvPass
Generate new locations from the current IR
Argument name in MLIR CLI
snapshot-op-locations
Pass name in TableGen
LocationSnapshot
Attaches an SPIR-V target attribute to a GPU Module.
Argument name in MLIR CLI
spirv-attach-target
Pass name in TableGen
GpuSPIRVAttachTarget
Scalar Replacement of Aggregates
Argument name in MLIR CLI
sroa
Pass name in TableGen
SROA
Strip debug info from all operations
Argument name in MLIR CLI
strip-debuginfo
Pass name in TableGen
StripDebugInfoPass
Eliminate dead symbols
Argument name in MLIR CLI
symbol-dce
Pass name in TableGen
SymbolDCEPass
Mark symbols private
Argument name in MLIR CLI
symbol-privatize
Pass name in TableGen
SymbolPrivatizePass
Sort regions without SSA dominance in topological order
Argument name in MLIR CLI
topological-sort
Pass name in TableGen
TopologicalSortPass
Remove trivially dead operations and blocks
Argument name in MLIR CLI
trivial-dce
Pass name in TableGen
TrivialDeadCodeEliminationPass
Print Graphviz visualization of an operation
Argument name in MLIR CLI
view-op-graph
Pass name in TableGen
ViewOpGraphPass
Attaches a XeVM target attribute to a GPU Module.
Argument name in MLIR CLI
xevm-attach-target
Pass name in TableGen
GpuXeVMAttachTarget