Skip to content

Canonicalize dmp

canonicalize_dmp

CanonicalizeDmpSwap

Bases: RewritePattern

Source code in xdsl/transforms/canonicalize_dmp.py
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class CanonicalizeDmpSwap(RewritePattern):
    @op_type_rewrite_pattern
    def match_and_rewrite(self, op: dmp.SwapOp, rewriter: PatternRewriter, /):
        keeps: list[dmp.ExchangeDeclarationAttr] = []
        for swap in op.swaps:
            if swap.elem_count > 0:
                keeps.append(swap)
        if len(keeps) == 0:
            new_result = (
                op.input_stencil
                if isinstance(op.input_stencil.type, stencil.TempType)
                else None
            )
            rewriter.replace_op(op, [], [new_result])
        else:
            op.swaps = builtin.ArrayAttr(keeps)

match_and_rewrite(op: dmp.SwapOp, rewriter: PatternRewriter)

Source code in xdsl/transforms/canonicalize_dmp.py
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
@op_type_rewrite_pattern
def match_and_rewrite(self, op: dmp.SwapOp, rewriter: PatternRewriter, /):
    keeps: list[dmp.ExchangeDeclarationAttr] = []
    for swap in op.swaps:
        if swap.elem_count > 0:
            keeps.append(swap)
    if len(keeps) == 0:
        new_result = (
            op.input_stencil
            if isinstance(op.input_stencil.type, stencil.TempType)
            else None
        )
        rewriter.replace_op(op, [], [new_result])
    else:
        op.swaps = builtin.ArrayAttr(keeps)

CanonicalizeDmpPass dataclass

Bases: ModulePass

Source code in xdsl/transforms/canonicalize_dmp.py
30
31
32
33
34
class CanonicalizeDmpPass(ModulePass):
    name = "canonicalize-dmp"

    def apply(self, ctx: Context, op: builtin.ModuleOp) -> None:
        PatternRewriteWalker(CanonicalizeDmpSwap()).rewrite_module(op)

name = 'canonicalize-dmp' class-attribute instance-attribute

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

Source code in xdsl/transforms/canonicalize_dmp.py
33
34
def apply(self, ctx: Context, op: builtin.ModuleOp) -> None:
    PatternRewriteWalker(CanonicalizeDmpSwap()).rewrite_module(op)