Convert linalg to loops
convert_linalg_to_loops
¶
LowerLinalgStructuredOpPattern
¶
Bases: RewritePattern
Source code in xdsl/transforms/convert_linalg_to_loops.py
match_and_rewrite(op: linalg.abstract_ops.LinalgStructuredOperation, rewriter: PatternRewriter) -> None
¶
Source code in xdsl/transforms/convert_linalg_to_loops.py
ConvertLinalgToLoopsPass
dataclass
¶
Bases: ModulePass
Converts a linalg structured ops to perfectly nested loops.
Source code in xdsl/transforms/convert_linalg_to_loops.py
name = 'convert-linalg-to-loops'
class-attribute
instance-attribute
¶
materialize_loop_bound(rewriter: PatternRewriter, insertion_point: InsertPoint, operand: SSAValue[MemRefType], dim_index: int, dim_size: int) -> SSAValue
¶
Create the value used as one loop upper bound.
If the memref dimension is dynamic, use memref.dim.
If it is static, use an index constant.
Source code in xdsl/transforms/convert_linalg_to_loops.py
create_loop_bounds(rewriter: PatternRewriter, insertion_point: InsertPoint, op: linalg.abstract_ops.LinalgStructuredOperation) -> Sequence[SSAValue]
¶
Build loop upper bounds for a linalg structured operation.
This lowering only supports buffer semantics, so bound sources must come from memref operands.