Skip to content

Convert pdl interp to eqsat pdl interp

convert_pdl_interp_to_eqsat_pdl_interp

ConvertGetResultOp

Bases: RewritePattern

Source code in xdsl/transforms/convert_pdl_interp_to_eqsat_pdl_interp.py
13
14
15
16
17
18
class ConvertGetResultOp(RewritePattern):
    @op_type_rewrite_pattern
    def match_and_rewrite(
        self, op: pdl_interp.GetResultOp, rewriter: PatternRewriter, /
    ):
        rewriter.replace_matched_op(eqsat_pdl_interp.GetResultOp(op.index, op.input_op))

match_and_rewrite(op: pdl_interp.GetResultOp, rewriter: PatternRewriter)

Source code in xdsl/transforms/convert_pdl_interp_to_eqsat_pdl_interp.py
14
15
16
17
18
@op_type_rewrite_pattern
def match_and_rewrite(
    self, op: pdl_interp.GetResultOp, rewriter: PatternRewriter, /
):
    rewriter.replace_matched_op(eqsat_pdl_interp.GetResultOp(op.index, op.input_op))

ConvertGetResultsOp

Bases: RewritePattern

Source code in xdsl/transforms/convert_pdl_interp_to_eqsat_pdl_interp.py
21
22
23
24
25
26
27
28
class ConvertGetResultsOp(RewritePattern):
    @op_type_rewrite_pattern
    def match_and_rewrite(
        self, op: pdl_interp.GetResultsOp, rewriter: PatternRewriter, /
    ):
        rewriter.replace_matched_op(
            eqsat_pdl_interp.GetResultsOp(op.index, op.input_op, op.value.type)
        )

match_and_rewrite(op: pdl_interp.GetResultsOp, rewriter: PatternRewriter)

Source code in xdsl/transforms/convert_pdl_interp_to_eqsat_pdl_interp.py
22
23
24
25
26
27
28
@op_type_rewrite_pattern
def match_and_rewrite(
    self, op: pdl_interp.GetResultsOp, rewriter: PatternRewriter, /
):
    rewriter.replace_matched_op(
        eqsat_pdl_interp.GetResultsOp(op.index, op.input_op, op.value.type)
    )

ConvertGetDefiningOpOp

Bases: RewritePattern

Source code in xdsl/transforms/convert_pdl_interp_to_eqsat_pdl_interp.py
31
32
33
34
35
36
class ConvertGetDefiningOpOp(RewritePattern):
    @op_type_rewrite_pattern
    def match_and_rewrite(
        self, op: pdl_interp.GetDefiningOpOp, rewriter: PatternRewriter, /
    ):
        rewriter.replace_matched_op(eqsat_pdl_interp.GetDefiningOpOp(op.value))

match_and_rewrite(op: pdl_interp.GetDefiningOpOp, rewriter: PatternRewriter)

Source code in xdsl/transforms/convert_pdl_interp_to_eqsat_pdl_interp.py
32
33
34
35
36
@op_type_rewrite_pattern
def match_and_rewrite(
    self, op: pdl_interp.GetDefiningOpOp, rewriter: PatternRewriter, /
):
    rewriter.replace_matched_op(eqsat_pdl_interp.GetDefiningOpOp(op.value))

ConvertReplaceOp

Bases: RewritePattern

Source code in xdsl/transforms/convert_pdl_interp_to_eqsat_pdl_interp.py
39
40
41
42
43
44
class ConvertReplaceOp(RewritePattern):
    @op_type_rewrite_pattern
    def match_and_rewrite(self, op: pdl_interp.ReplaceOp, rewriter: PatternRewriter, /):
        rewriter.replace_matched_op(
            eqsat_pdl_interp.ReplaceOp(op.input_op, list(op.repl_values))
        )

match_and_rewrite(op: pdl_interp.ReplaceOp, rewriter: PatternRewriter)

Source code in xdsl/transforms/convert_pdl_interp_to_eqsat_pdl_interp.py
40
41
42
43
44
@op_type_rewrite_pattern
def match_and_rewrite(self, op: pdl_interp.ReplaceOp, rewriter: PatternRewriter, /):
    rewriter.replace_matched_op(
        eqsat_pdl_interp.ReplaceOp(op.input_op, list(op.repl_values))
    )

ConvertCreateOperationOp

Bases: RewritePattern

Source code in xdsl/transforms/convert_pdl_interp_to_eqsat_pdl_interp.py
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
class ConvertCreateOperationOp(RewritePattern):
    @op_type_rewrite_pattern
    def match_and_rewrite(
        self, op: pdl_interp.CreateOperationOp, rewriter: PatternRewriter, /
    ):
        rewriter.replace_matched_op(
            eqsat_pdl_interp.CreateOperationOp(
                op.constraint_name,
                op.inferred_result_types,
                op.input_attribute_names,
                op.input_operands,
                op.input_attributes,
                op.input_result_types,
            )
        )

match_and_rewrite(op: pdl_interp.CreateOperationOp, rewriter: PatternRewriter)

Source code in xdsl/transforms/convert_pdl_interp_to_eqsat_pdl_interp.py
48
49
50
51
52
53
54
55
56
57
58
59
60
61
@op_type_rewrite_pattern
def match_and_rewrite(
    self, op: pdl_interp.CreateOperationOp, rewriter: PatternRewriter, /
):
    rewriter.replace_matched_op(
        eqsat_pdl_interp.CreateOperationOp(
            op.constraint_name,
            op.inferred_result_types,
            op.input_attribute_names,
            op.input_operands,
            op.input_attributes,
            op.input_result_types,
        )
    )

ConvertRecordMatchOp

Bases: RewritePattern

Source code in xdsl/transforms/convert_pdl_interp_to_eqsat_pdl_interp.py
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
class ConvertRecordMatchOp(RewritePattern):
    @op_type_rewrite_pattern
    def match_and_rewrite(
        self, op: pdl_interp.RecordMatchOp, rewriter: PatternRewriter, /
    ):
        rewriter.replace_matched_op(
            eqsat_pdl_interp.RecordMatchOp(
                op.rewriter,
                op.rootKind,
                op.generatedOps,
                op.benefit,
                op.inputs,
                op.matched_ops,
                op.dest,
            )
        )

match_and_rewrite(op: pdl_interp.RecordMatchOp, rewriter: PatternRewriter)

Source code in xdsl/transforms/convert_pdl_interp_to_eqsat_pdl_interp.py
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
@op_type_rewrite_pattern
def match_and_rewrite(
    self, op: pdl_interp.RecordMatchOp, rewriter: PatternRewriter, /
):
    rewriter.replace_matched_op(
        eqsat_pdl_interp.RecordMatchOp(
            op.rewriter,
            op.rootKind,
            op.generatedOps,
            op.benefit,
            op.inputs,
            op.matched_ops,
            op.dest,
        )
    )

ConvertFinalizeOp

Bases: RewritePattern

Source code in xdsl/transforms/convert_pdl_interp_to_eqsat_pdl_interp.py
82
83
84
85
86
87
class ConvertFinalizeOp(RewritePattern):
    @op_type_rewrite_pattern
    def match_and_rewrite(
        self, op: pdl_interp.FinalizeOp, rewriter: PatternRewriter, /
    ):
        rewriter.replace_matched_op(eqsat_pdl_interp.FinalizeOp())

match_and_rewrite(op: pdl_interp.FinalizeOp, rewriter: PatternRewriter)

Source code in xdsl/transforms/convert_pdl_interp_to_eqsat_pdl_interp.py
83
84
85
86
87
@op_type_rewrite_pattern
def match_and_rewrite(
    self, op: pdl_interp.FinalizeOp, rewriter: PatternRewriter, /
):
    rewriter.replace_matched_op(eqsat_pdl_interp.FinalizeOp())

ConvertPDLInterpToEqsatPDLInterpPass dataclass

Bases: ModulePass

Source code in xdsl/transforms/convert_pdl_interp_to_eqsat_pdl_interp.py
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
class ConvertPDLInterpToEqsatPDLInterpPass(ModulePass):
    name = "convert-pdl-interp-to-eqsat-pdl-interp"

    def apply(self, ctx: Context, op: builtin.ModuleOp) -> None:
        PatternRewriteWalker(
            GreedyRewritePatternApplier(
                [
                    ConvertGetResultOp(),
                    ConvertGetResultsOp(),
                    ConvertGetDefiningOpOp(),
                    ConvertReplaceOp(),
                    ConvertCreateOperationOp(),
                    ConvertRecordMatchOp(),
                    ConvertFinalizeOp(),
                ]
            )
        ).rewrite_module(op)

name = 'convert-pdl-interp-to-eqsat-pdl-interp' class-attribute instance-attribute

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

Source code in xdsl/transforms/convert_pdl_interp_to_eqsat_pdl_interp.py
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
def apply(self, ctx: Context, op: builtin.ModuleOp) -> None:
    PatternRewriteWalker(
        GreedyRewritePatternApplier(
            [
                ConvertGetResultOp(),
                ConvertGetResultsOp(),
                ConvertGetDefiningOpOp(),
                ConvertReplaceOp(),
                ConvertCreateOperationOp(),
                ConvertRecordMatchOp(),
                ConvertFinalizeOp(),
            ]
        )
    ).rewrite_module(op)