Skip to content

Ptr

ptr

RedundantFromPtr

Bases: RewritePattern

Source code in xdsl/transforms/canonicalization_patterns/ptr.py
10
11
12
13
14
15
16
17
class RedundantFromPtr(RewritePattern):
    @op_type_rewrite_pattern
    def match_and_rewrite(self, op: ptr.FromPtrOp, rewriter: PatternRewriter, /):
        if not isinstance(origin := op.source.owner, ptr.ToPtrOp):
            return

        if origin.source.type == op.res.type:
            rewriter.replace_op(op, (), (origin.source,))

match_and_rewrite(op: ptr.FromPtrOp, rewriter: PatternRewriter)

Source code in xdsl/transforms/canonicalization_patterns/ptr.py
11
12
13
14
15
16
17
@op_type_rewrite_pattern
def match_and_rewrite(self, op: ptr.FromPtrOp, rewriter: PatternRewriter, /):
    if not isinstance(origin := op.source.owner, ptr.ToPtrOp):
        return

    if origin.source.type == op.res.type:
        rewriter.replace_op(op, (), (origin.source,))

RedundantToPtr

Bases: RewritePattern

Source code in xdsl/transforms/canonicalization_patterns/ptr.py
20
21
22
23
24
25
26
27
class RedundantToPtr(RewritePattern):
    @op_type_rewrite_pattern
    def match_and_rewrite(self, op: ptr.ToPtrOp, rewriter: PatternRewriter, /):
        if not isinstance(origin := op.source.owner, ptr.FromPtrOp):
            return

        if origin.source.type == op.res.type:
            rewriter.replace_op(op, (), (origin.source,))

match_and_rewrite(op: ptr.ToPtrOp, rewriter: PatternRewriter)

Source code in xdsl/transforms/canonicalization_patterns/ptr.py
21
22
23
24
25
26
27
@op_type_rewrite_pattern
def match_and_rewrite(self, op: ptr.ToPtrOp, rewriter: PatternRewriter, /):
    if not isinstance(origin := op.source.owner, ptr.FromPtrOp):
        return

    if origin.source.type == op.res.type:
        rewriter.replace_op(op, (), (origin.source,))

PtrAddZero

Bases: RewritePattern

Source code in xdsl/transforms/canonicalization_patterns/ptr.py
30
31
32
33
34
35
36
37
38
class PtrAddZero(RewritePattern):
    @op_type_rewrite_pattern
    def match_and_rewrite(self, op: ptr.PtrAddOp, rewriter: PatternRewriter, /):
        if (
            (isinstance(offset_op := op.offset.owner, arith.ConstantOp))
            and isinstance(offset_op.value, IntegerAttr)
            and offset_op.value.value.data == 0
        ):
            rewriter.replace_op(op, (), (op.addr,))

match_and_rewrite(op: ptr.PtrAddOp, rewriter: PatternRewriter)

Source code in xdsl/transforms/canonicalization_patterns/ptr.py
31
32
33
34
35
36
37
38
@op_type_rewrite_pattern
def match_and_rewrite(self, op: ptr.PtrAddOp, rewriter: PatternRewriter, /):
    if (
        (isinstance(offset_op := op.offset.owner, arith.ConstantOp))
        and isinstance(offset_op.value, IntegerAttr)
        and offset_op.value.value.data == 0
    ):
        rewriter.replace_op(op, (), (op.addr,))