Skip to content

Convert ptr type offsets

convert_ptr_type_offsets

ConvertTypeOffsetOp dataclass

Bases: RewritePattern

Source code in xdsl/transforms/convert_ptr_type_offsets.py
17
18
19
20
21
22
23
24
25
26
27
28
@dataclass
class ConvertTypeOffsetOp(RewritePattern):
    @op_type_rewrite_pattern
    def match_and_rewrite(self, op: ptr.TypeOffsetOp, rewriter: PatternRewriter, /):
        if not issubclass(type(op.elem_type), FixedBitwidthType):
            raise DiagnosticException(
                "Type offset is currently only supported for fixed size types"
            )
        elem_type = cast(FixedBitwidthType, op.elem_type)
        rewriter.replace_op(
            op, arith.ConstantOp.from_int_and_width(elem_type.size, IndexType())
        )

__init__() -> None

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

Source code in xdsl/transforms/convert_ptr_type_offsets.py
19
20
21
22
23
24
25
26
27
28
@op_type_rewrite_pattern
def match_and_rewrite(self, op: ptr.TypeOffsetOp, rewriter: PatternRewriter, /):
    if not issubclass(type(op.elem_type), FixedBitwidthType):
        raise DiagnosticException(
            "Type offset is currently only supported for fixed size types"
        )
    elem_type = cast(FixedBitwidthType, op.elem_type)
    rewriter.replace_op(
        op, arith.ConstantOp.from_int_and_width(elem_type.size, IndexType())
    )

ConvertPtrTypeOffsetsPass dataclass

Bases: ModulePass

Source code in xdsl/transforms/convert_ptr_type_offsets.py
31
32
33
34
35
36
37
class ConvertPtrTypeOffsetsPass(ModulePass):
    name = "convert-ptr-type-offsets"

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

name = 'convert-ptr-type-offsets' class-attribute instance-attribute

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

Source code in xdsl/transforms/convert_ptr_type_offsets.py
34
35
36
37
def apply(self, ctx: Context, op: ModuleOp) -> None:
    PatternRewriteWalker(
        ConvertTypeOffsetOp(),
    ).rewrite_module(op)