Skip to content

Test lower linalg to snitch

test_lower_linalg_to_snitch

OPTIMISE_MEMREF_STREAM_PASSES: tuple[ModulePass, ...] = (canonicalize.CanonicalizePass(), memref_stream_infer_fill.MemRefStreamInferFillPass(), memref_stream_unnest_out_parameters.MemRefStreamUnnestOutParametersPass(), memref_stream_fold_fill.MemRefStreamFoldFillPass(), memref_stream_generalize_fill.MemRefStreamGeneralizeFillPass(), memref_stream_interleave.MemRefStreamInterleavePass(), memref_stream_tile_outer_loops.MemRefStreamTileOuterLoopsPass(target_rank=4), memref_streamify.MemRefStreamifyPass(), convert_memref_stream_to_loops.ConvertMemRefStreamToLoopsPass(), canonicalize.CanonicalizePass(), scf_for_loop_flatten.ScfForLoopFlattenPass()) module-attribute

LOWER_MEMREF_STREAM_TO_SNITCH_STREAM_PASSES: tuple[ModulePass, ...] = (canonicalize.CanonicalizePass(), convert_memref_to_riscv.ConvertMemRefToRiscvPass(), lower_affine.LowerAffinePass(), convert_scf_to_riscv_scf.ConvertScfToRiscvPass(), convert_arith_to_riscv_snitch.ConvertArithToRiscvSnitchPass(), convert_arith_to_riscv.ConvertArithToRiscvPass(), convert_func_to_riscv_func.ConvertFuncToRiscvFuncPass(), convert_memref_stream_to_snitch_stream.ConvertMemRefStreamToSnitchStreamPass(), reconcile_unrealized_casts.ReconcileUnrealizedCastsPass()) module-attribute

LOWER_SNITCH_STREAM_TO_ASM_PASSES: tuple[ModulePass, ...] = (canonicalize.CanonicalizePass(), convert_riscv_scf_for_to_frep.ConvertRiscvScfForToFrepPass(), snitch_allocate_registers.SnitchAllocateRegistersPass(), convert_snitch_stream_to_snitch.ConvertSnitchStreamToSnitch(), lower_snitch.LowerSnitchPass(), canonicalize.CanonicalizePass(), riscv_scf_loop_range_folding.RiscvScfLoopRangeFoldingPass(), canonicalize.CanonicalizePass(), riscv_allocate_registers.RISCVAllocateRegistersPass(add_regalloc_stats=True), canonicalize.CanonicalizePass(), convert_riscv_scf_to_riscv_cf.ConvertRiscvScfToRiscvCfPass(), canonicalize.CanonicalizePass(), riscv_lower_parallel_mov.RISCVLowerParallelMovPass(), canonicalize.CanonicalizePass()) module-attribute

TEST_LOWER_LINALG_TO_SNITCH_PASSES: tuple[ModulePass, ...] = (canonicalize.CanonicalizePass(), convert_linalg_to_memref_stream.ConvertLinalgToMemRefStreamPass(), memref_stream_legalize.MemRefStreamLegalizePass(), *OPTIMISE_MEMREF_STREAM_PASSES, *LOWER_MEMREF_STREAM_TO_SNITCH_STREAM_PASSES, *LOWER_SNITCH_STREAM_TO_ASM_PASSES) module-attribute

TestLowerLinalgToSnitchPass dataclass

Bases: ModulePass

A compiler pass used for testing lowering microkernels from linalg generic to snitch assembly.

Source code in xdsl/transforms/test_lower_linalg_to_snitch.py
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
@dataclass(frozen=True)
class TestLowerLinalgToSnitchPass(ModulePass):
    """
    A compiler pass used for testing lowering microkernels from linalg generic to snitch
    assembly.
    """

    name = "test-lower-linalg-to-snitch"

    def apply(self, ctx: Context, op: builtin.ModuleOp) -> None:
        for p in TEST_LOWER_LINALG_TO_SNITCH_PASSES:
            p.apply(ctx, op)

name = 'test-lower-linalg-to-snitch' class-attribute instance-attribute

__init__() -> None

apply(ctx: Context, op: builtin.ModuleOp) -> None

Source code in xdsl/transforms/test_lower_linalg_to_snitch.py
101
102
103
def apply(self, ctx: Context, op: builtin.ModuleOp) -> None:
    for p in TEST_LOWER_LINALG_TO_SNITCH_PASSES:
        p.apply(ctx, op)