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

execution_option()

@type execution_option() ::
  {:sequence, String.t()}
  | {:expensive_checks, boolean()}
  | {:enforce_single_top_level_transform_op, boolean()}

schedule_input()

Functions

any_op_type(opts \\ [])

Creates Transform dialect's !transform.any_op type.

any_param_type(opts \\ [])

Creates Transform dialect's !transform.any_param type.

any_value_type(opts \\ [])

Creates Transform dialect's !transform.any_value type.

apply_named_sequence(payload, schedule, opts \\ [])

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.

apply_named_sequence!(payload, schedule, opts \\ [])

Bang variant of apply_named_sequence/3.

bubble_down_memory_space_casts()

Bubbles down memory-space cast operations.

Argument name in MLIR CLI

bubble-down-memory-space-casts

Pass name in TableGen

BubbleDownMemorySpaceCasts

bubble_down_memory_space_casts(composer_or_op)

canonicalize()

Canonicalize operations

Argument name in MLIR CLI

canonicalize

Pass name in TableGen

CanonicalizerPass

canonicalize(composer_or_op)

composite_fixed_point_pass()

Composite fixed point pass

Argument name in MLIR CLI

composite-fixed-point-pass

Pass name in TableGen

CompositeFixedPointPass

composite_fixed_point_pass(composer_or_op)

control_flow_sink()

Sink operations into conditional blocks

Argument name in MLIR CLI

control-flow-sink

Pass name in TableGen

ControlFlowSinkPass

control_flow_sink(composer_or_op)

convert_elementwise_to_linalg()

Convert ElementwiseMappable ops to linalg

Argument name in MLIR CLI

convert-elementwise-to-linalg

Pass name in TableGen

ConvertElementwiseToLinalgPass

convert_elementwise_to_linalg(composer_or_op)

convert_linalg_to_affine_loops()

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

convert_linalg_to_affine_loops(composer_or_op)

convert_linalg_to_loops()

Lower the operations from the linalg dialect into loops

Argument name in MLIR CLI

convert-linalg-to-loops

Pass name in TableGen

ConvertLinalgToLoopsPass

convert_linalg_to_loops(composer_or_op)

convert_linalg_to_parallel_loops()

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

convert_linalg_to_parallel_loops(composer_or_op)

cse()

Eliminate common sub-expressions

Argument name in MLIR CLI

cse

Pass name in TableGen

CSEPass

cse(composer_or_op)

execute(payload, schedule, opts \\ [])

Alias for apply_named_sequence/3.

execute!(payload, schedule, opts \\ [])

Alias for apply_named_sequence!/3.

generate_runtime_verification()

Generate additional runtime op verification checks

Argument name in MLIR CLI

generate-runtime-verification

Pass name in TableGen

GenerateRuntimeVerificationPass

generate_runtime_verification(composer_or_op)

gpu_async_region()

Make GPU ops async

Argument name in MLIR CLI

gpu-async-region

Pass name in TableGen

GpuAsyncRegionPass

gpu_async_region(composer_or_op)

gpu_decompose_memrefs()

Decomposes memref index computation into explicit ops.

Argument name in MLIR CLI

gpu-decompose-memrefs

Pass name in TableGen

GpuDecomposeMemrefsPass

gpu_decompose_memrefs(composer_or_op)

gpu_eliminate_barriers()

Erase unnecessary barriers

Argument name in MLIR CLI

gpu-eliminate-barriers

Pass name in TableGen

GpuEliminateBarriers

gpu_eliminate_barriers(composer_or_op)

gpu_kernel_outlining()

Outline gpu.launch bodies to kernel functions

Argument name in MLIR CLI

gpu-kernel-outlining

Pass name in TableGen

GpuKernelOutliningPass

gpu_kernel_outlining(composer_or_op)

gpu_launch_sink_index_computations()

Sink index computations into gpu.launch body

Argument name in MLIR CLI

gpu-launch-sink-index-computations

Pass name in TableGen

GpuLaunchSinkIndexComputationsPass

gpu_launch_sink_index_computations(composer_or_op)

gpu_map_parallel_loops()

Greedily maps loops to GPU hardware dimensions.

Argument name in MLIR CLI

gpu-map-parallel-loops

Pass name in TableGen

GpuMapParallelLoopsPass

gpu_map_parallel_loops(composer_or_op)

gpu_module_to_binary()

Transforms a GPU module into a GPU binary.

Argument name in MLIR CLI

gpu-module-to-binary

Pass name in TableGen

GpuModuleToBinaryPass

gpu_module_to_binary(composer_or_op)

inline()

Inline function calls

Argument name in MLIR CLI

inline

Pass name in TableGen

InlinerPass

inline(composer_or_op)

linalg_block_pack_matmul()

Convert linalg matmul ops to block layout and back

Argument name in MLIR CLI

linalg-block-pack-matmul

Pass name in TableGen

LinalgBlockPackMatmul

linalg_block_pack_matmul(composer_or_op)

linalg_fold_into_elementwise()

Fold transpose and broadcast ops into elementwise consumers

Argument name in MLIR CLI

linalg-fold-into-elementwise

Pass name in TableGen

LinalgFoldIntoElementwisePass

linalg_fold_into_elementwise(composer_or_op)

linalg_fold_unit_extent_dims()

Remove unit-extent dimension in Linalg ops on tensors

Argument name in MLIR CLI

linalg-fold-unit-extent-dims

Pass name in TableGen

LinalgFoldUnitExtentDimsPass

linalg_fold_unit_extent_dims(composer_or_op)

linalg_fuse_elementwise_ops()

Fuse elementwise operations on tensors

Argument name in MLIR CLI

linalg-fuse-elementwise-ops

Pass name in TableGen

LinalgElementwiseOpFusionPass

linalg_fuse_elementwise_ops(composer_or_op)

linalg_generalize_named_ops()

Convert named ops into generic ops

Argument name in MLIR CLI

linalg-generalize-named-ops

Pass name in TableGen

LinalgGeneralizeNamedOpsPass

linalg_generalize_named_ops(composer_or_op)

linalg_inline_scalar_operands()

Inline scalar operands into linalg generic ops

Argument name in MLIR CLI

linalg-inline-scalar-operands

Pass name in TableGen

LinalgInlineScalarOperandsPass

linalg_inline_scalar_operands(composer_or_op)

linalg_morph_ops()

Convert linalg ops between forms

Argument name in MLIR CLI

linalg-morph-ops

Pass name in TableGen

LinalgMorphOpsPass

linalg_morph_ops(composer_or_op)

linalg_specialize_generic_ops()

Convert generic ops back to named ops

Argument name in MLIR CLI

linalg-specialize-generic-ops

Pass name in TableGen

LinalgSpecializeGenericOpsPass

linalg_specialize_generic_ops(composer_or_op)

loop_invariant_code_motion()

Hoist loop invariant instructions outside of the loop

Argument name in MLIR CLI

loop-invariant-code-motion

Pass name in TableGen

LoopInvariantCodeMotionPass

loop_invariant_code_motion(composer_or_op)

loop_invariant_subset_hoisting()

Hoist loop invariant subset ops outside of the loop

Argument name in MLIR CLI

loop-invariant-subset-hoisting

Pass name in TableGen

LoopInvariantSubsetHoistingPass

loop_invariant_subset_hoisting(composer_or_op)

mem2reg()

Promotes memory slots into values.

Argument name in MLIR CLI

mem2reg

Pass name in TableGen

Mem2Reg

mem2reg(composer_or_op)

nvvm_attach_target()

Attaches an NVVM target attribute to a GPU Module.

Argument name in MLIR CLI

nvvm-attach-target

Pass name in TableGen

GpuNVVMAttachTarget

nvvm_attach_target(composer_or_op)

operation_type(operation_name, opts \\ [])

Creates an operation-specific Transform handle type.

param_type(type)

Creates a Transform parameter type wrapping an MLIR type.

remove_dead_values()

Remove dead values

Argument name in MLIR CLI

remove-dead-values

Pass name in TableGen

RemoveDeadValuesPass

remove_dead_values(composer_or_op)

rocdl_attach_target()

Attaches a ROCDL target attribute to a GPU Module.

Argument name in MLIR CLI

rocdl-attach-target

Pass name in TableGen

GpuROCDLAttachTarget

rocdl_attach_target(composer_or_op)

sccp()

Sparse Conditional Constant Propagation

Argument name in MLIR CLI

sccp

Pass name in TableGen

SCCPPass

sccp(composer_or_op)

simplify_depthwise_conv()

Simplify depthwise convolution.

Argument name in MLIR CLI

simplify-depthwise-conv

Pass name in TableGen

SimplifyDepthwiseConvPass

simplify_depthwise_conv(composer_or_op)

snapshot_op_locations()

Generate new locations from the current IR

Argument name in MLIR CLI

snapshot-op-locations

Pass name in TableGen

LocationSnapshot

snapshot_op_locations(composer_or_op)

spirv_attach_target()

Attaches an SPIR-V target attribute to a GPU Module.

Argument name in MLIR CLI

spirv-attach-target

Pass name in TableGen

GpuSPIRVAttachTarget

spirv_attach_target(composer_or_op)

sroa()

Scalar Replacement of Aggregates

Argument name in MLIR CLI

sroa

Pass name in TableGen

SROA

sroa(composer_or_op)

strip_debuginfo()

Strip debug info from all operations

Argument name in MLIR CLI

strip-debuginfo

Pass name in TableGen

StripDebugInfoPass

strip_debuginfo(composer_or_op)

symbol_dce()

Eliminate dead symbols

Argument name in MLIR CLI

symbol-dce

Pass name in TableGen

SymbolDCEPass

symbol_dce(composer_or_op)

symbol_privatize()

Mark symbols private

Argument name in MLIR CLI

symbol-privatize

Pass name in TableGen

SymbolPrivatizePass

symbol_privatize(composer_or_op)

topological_sort()

Sort regions without SSA dominance in topological order

Argument name in MLIR CLI

topological-sort

Pass name in TableGen

TopologicalSortPass

topological_sort(composer_or_op)

trivial_dce()

Remove trivially dead operations and blocks

Argument name in MLIR CLI

trivial-dce

Pass name in TableGen

TrivialDeadCodeEliminationPass

trivial_dce(composer_or_op)

view_op_graph()

Print Graphviz visualization of an operation

Argument name in MLIR CLI

view-op-graph

Pass name in TableGen

ViewOpGraphPass

view_op_graph(composer_or_op)

xevm_attach_target()

Attaches a XeVM target attribute to a GPU Module.

Argument name in MLIR CLI

xevm-attach-target

Pass name in TableGen

GpuXeVMAttachTarget

xevm_attach_target(composer_or_op)