Skip to content

Control Flow

Warning

This page is under construction. The content may be incomplete or incorrect. Submit an issue on GitHub if you need help or want to contribute.

Branch krin-statement

Branch(*, successor: Block)

Bases: Statement

arguments instance-attribute

arguments: tuple[SSAValue, ...]

name class-attribute instance-attribute

name = 'br'

successor kirin-block kw-only

successor: Block = block()

traits class-attribute instance-attribute

traits = frozenset({IsTerminator()})

print_impl

print_impl(printer: Printer) -> None
Source code in src/kirin/dialects/cf/stmts.py
19
20
21
22
23
24
25
26
27
28
29
30
def print_impl(self, printer: Printer) -> None:
    with printer.rich(style="keyword"):
        printer.print_name(self)

    printer.plain_print(" ")
    printer.plain_print(printer.state.block_id[self.successor])
    printer.print_seq(
        self.arguments,
        delim=", ",
        prefix="(",
        suffix=")",
    )

verify

verify() -> None

run mandatory validation checks. This is not same as typecheck, which may be optional.

Source code in src/kirin/dialects/cf/stmts.py
16
17
def verify(self) -> None:
    return

ConditionalBranch krin-statement

ConditionalBranch(
    cond: SSAValue,
    *,
    then_successor: Block,
    else_successor: Block
)

Bases: Statement

cond kirin-argument

cond: SSAValue = argument(Bool)

else_arguments instance-attribute

else_arguments: tuple[SSAValue, ...]

else_successor kirin-block kw-only

else_successor: Block = block()

name class-attribute instance-attribute

name = 'cond_br'

then_arguments instance-attribute

then_arguments: tuple[SSAValue, ...]

then_successor kirin-block kw-only

then_successor: Block = block()

traits class-attribute instance-attribute

traits = frozenset({IsTerminator()})

print_impl

print_impl(printer: Printer) -> None
Source code in src/kirin/dialects/cf/stmts.py
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
def print_impl(self, printer: Printer) -> None:
    with printer.rich(style="keyword"):
        printer.print_name(self)

    printer.plain_print(" ")
    printer.print(self.cond)

    with printer.rich(style="keyword"):
        printer.plain_print(" goto ")

    printer.plain_print(printer.state.block_id[self.then_successor])
    printer.plain_print("(")
    printer.print_seq(self.then_arguments, delim=", ")
    printer.plain_print(")")

    with printer.rich(style="keyword"):
        printer.plain_print(" else ")

    printer.plain_print(printer.state.block_id[self.else_successor])
    printer.plain_print("(")
    printer.print_seq(self.else_arguments, delim=", ")
    printer.plain_print(")")

verify

verify() -> None

run mandatory validation checks. This is not same as typecheck, which may be optional.

Source code in src/kirin/dialects/cf/stmts.py
68
69
def verify(self) -> None:
    return