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.
Core Python Dialects
This page contains the core Python dialects that are used most frequently when designing an embedded DSL in Python.
Reference
Base
kirin.dialects.py.base
Base dialect for Python.
This dialect does not contain statements. It only contains lowering rules for ast.Name and ast.Expr.
dialect module-attribute
dialect = Dialect('py.base')
PyAttrMethod
Bases: MethodTable
flowchart TD
kirin.dialects.py.base.PyAttrMethod[PyAttrMethod]
kirin.interp.table.MethodTable[MethodTable]
kirin.interp.table.MethodTable --> kirin.dialects.py.base.PyAttrMethod
click kirin.dialects.py.base.PyAttrMethod href "" "kirin.dialects.py.base.PyAttrMethod"
click kirin.interp.table.MethodTable href "" "kirin.interp.table.MethodTable"
py_attr
py_attr(interp, frame: Frame, node: PyAttr)
Source code in src/kirin/dialects/py/base.py
36 37 38 | |
PythonLowering dataclass
PythonLowering()
Bases: FromPythonAST
flowchart TD
kirin.dialects.py.base.PythonLowering[PythonLowering]
kirin.lowering.python.dialect.FromPythonAST[FromPythonAST]
kirin.lowering.python.dialect.FromPythonAST --> kirin.dialects.py.base.PythonLowering
click kirin.dialects.py.base.PythonLowering href "" "kirin.dialects.py.base.PythonLowering"
click kirin.lowering.python.dialect.FromPythonAST href "" "kirin.lowering.python.dialect.FromPythonAST"
lower_Expr
lower_Expr(state: State, node: Expr) -> lowering.Result
Source code in src/kirin/dialects/py/base.py
29 30 | |
lower_Name
lower_Name(state: State, node: Name) -> lowering.Result
Source code in src/kirin/dialects/py/base.py
17 18 19 20 21 22 23 24 25 26 27 | |
Constant
kirin.dialects.py.constant
Constant statement for Python dialect.
This module contains the dialect for the Python constant statement, including:
- The
Constantstatement class. - The lowering pass for the
constantstatement. - The concrete implementation of the
constantstatement. - The Julia emitter for the
constantstatement.
This dialect maps ast.Constant nodes to the Constant statement.
T module-attribute
T = TypeVar('T', covariant=True)
dialect module-attribute
dialect = Dialect('py.constant')
Concrete
Bases: MethodTable
flowchart TD
kirin.dialects.py.constant.Concrete[Concrete]
kirin.interp.table.MethodTable[MethodTable]
kirin.interp.table.MethodTable --> kirin.dialects.py.constant.Concrete
click kirin.dialects.py.constant.Concrete href "" "kirin.dialects.py.constant.Concrete"
click kirin.interp.table.MethodTable href "" "kirin.interp.table.MethodTable"
constant
constant(interp, frame: Frame, stmt: Constant)
Source code in src/kirin/dialects/py/constant.py
80 81 82 | |
Constant kirin-statement
Constant(value: T | Data[T])
flowchart TD
kirin.dialects.py.constant.Constant[Constant]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.constant.Constant
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.constant.Constant href "" "kirin.dialects.py.constant.Constant"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
Source code in src/kirin/dialects/py/constant.py
35 36 37 38 39 40 41 42 43 44 45 46 | |
name class-attribute instance-attribute
name = 'constant'
result kirin-result
result: ResultValue = result()
traits class-attribute instance-attribute
traits = frozenset(
{Pure(), ConstantLike(), FromPythonCall()}
)
value kirin-attribute kw-only
value: Data[T] = attribute()
check_type
check_type() -> None
Check the types of the Block. Raises Exception if the types are not correct. This method is called by the verify_type method, which will detect the source of the error in the IR. One should always call the verify_type method to verify the types of the IR.
Note
This method is generated by the @statement decorator. But can be overridden if needed.
Source code in src/kirin/dialects/py/constant.py
59 60 61 62 63 | |
print_impl
print_impl(printer: Printer) -> None
Source code in src/kirin/dialects/py/constant.py
48 49 50 51 52 53 54 55 56 57 | |
Julia
Bases: MethodTable
flowchart TD
kirin.dialects.py.constant.Julia[Julia]
kirin.interp.table.MethodTable[MethodTable]
kirin.interp.table.MethodTable --> kirin.dialects.py.constant.Julia
click kirin.dialects.py.constant.Julia href "" "kirin.dialects.py.constant.Julia"
click kirin.interp.table.MethodTable href "" "kirin.interp.table.MethodTable"
constant
constant(emit: Julia, frame: JuliaFrame, stmt: Constant)
Source code in src/kirin/dialects/py/constant.py
88 89 90 | |
Lowering dataclass
Lowering()
Bases: FromPythonAST
flowchart TD
kirin.dialects.py.constant.Lowering[Lowering]
kirin.lowering.python.dialect.FromPythonAST[FromPythonAST]
kirin.lowering.python.dialect.FromPythonAST --> kirin.dialects.py.constant.Lowering
click kirin.dialects.py.constant.Lowering href "" "kirin.dialects.py.constant.Lowering"
click kirin.lowering.python.dialect.FromPythonAST href "" "kirin.lowering.python.dialect.FromPythonAST"
lower_Constant
lower_Constant(
state: State, node: Constant
) -> lowering.Result
Source code in src/kirin/dialects/py/constant.py
69 70 71 72 73 74 | |
UnaryOp
kirin.dialects.py.unary.stmts
T module-attribute
T = TypeVar('T')
Invert kirin-statement
Invert(value: SSAValue)
Bases: UnaryOp
flowchart TD
kirin.dialects.py.unary.stmts.Invert[Invert]
kirin.dialects.py.unary.stmts.UnaryOp[UnaryOp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.unary.stmts.UnaryOp --> kirin.dialects.py.unary.stmts.Invert
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.unary.stmts.UnaryOp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.unary.stmts.Invert href "" "kirin.dialects.py.unary.stmts.Invert"
click kirin.dialects.py.unary.stmts.UnaryOp href "" "kirin.dialects.py.unary.stmts.UnaryOp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'invert'
Not kirin-statement
Not(value: SSAValue)
Bases: UnaryOp
flowchart TD
kirin.dialects.py.unary.stmts.Not[Not]
kirin.dialects.py.unary.stmts.UnaryOp[UnaryOp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.unary.stmts.UnaryOp --> kirin.dialects.py.unary.stmts.Not
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.unary.stmts.UnaryOp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.unary.stmts.Not href "" "kirin.dialects.py.unary.stmts.Not"
click kirin.dialects.py.unary.stmts.UnaryOp href "" "kirin.dialects.py.unary.stmts.UnaryOp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'not'
UAdd kirin-statement
UAdd(value: SSAValue)
Bases: UnaryOp
flowchart TD
kirin.dialects.py.unary.stmts.UAdd[UAdd]
kirin.dialects.py.unary.stmts.UnaryOp[UnaryOp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.unary.stmts.UnaryOp --> kirin.dialects.py.unary.stmts.UAdd
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.unary.stmts.UnaryOp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.unary.stmts.UAdd href "" "kirin.dialects.py.unary.stmts.UAdd"
click kirin.dialects.py.unary.stmts.UnaryOp href "" "kirin.dialects.py.unary.stmts.UnaryOp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'uadd'
USub kirin-statement
USub(value: SSAValue)
Bases: UnaryOp
flowchart TD
kirin.dialects.py.unary.stmts.USub[USub]
kirin.dialects.py.unary.stmts.UnaryOp[UnaryOp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.unary.stmts.UnaryOp --> kirin.dialects.py.unary.stmts.USub
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.unary.stmts.UnaryOp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.unary.stmts.USub href "" "kirin.dialects.py.unary.stmts.USub"
click kirin.dialects.py.unary.stmts.UnaryOp href "" "kirin.dialects.py.unary.stmts.UnaryOp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'usub'
UnaryOp kirin-statement
UnaryOp(value: SSAValue)
Bases: Statement
flowchart TD
kirin.dialects.py.unary.stmts.UnaryOp[UnaryOp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.unary.stmts.UnaryOp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.unary.stmts.UnaryOp href "" "kirin.dialects.py.unary.stmts.UnaryOp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
result kirin-result
result: ResultValue = result(T)
traits class-attribute instance-attribute
traits = frozenset({Pure(), FromPythonCall()})
value kirin-argument
value: SSAValue = argument(T, print=False)
BinOp
kirin.dialects.py.binop.stmts
T module-attribute
T = TypeVar('T')
Add kirin-statement
Add(lhs: SSAValue, rhs: SSAValue)
Bases: BinOp
flowchart TD
kirin.dialects.py.binop.stmts.Add[Add]
kirin.dialects.py.binop.stmts.BinOp[BinOp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.binop.stmts.BinOp --> kirin.dialects.py.binop.stmts.Add
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.binop.stmts.BinOp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.binop.stmts.Add href "" "kirin.dialects.py.binop.stmts.Add"
click kirin.dialects.py.binop.stmts.BinOp href "" "kirin.dialects.py.binop.stmts.BinOp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'add'
BinOp kirin-statement
BinOp(lhs: SSAValue, rhs: SSAValue)
Bases: Statement
flowchart TD
kirin.dialects.py.binop.stmts.BinOp[BinOp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.binop.stmts.BinOp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.binop.stmts.BinOp href "" "kirin.dialects.py.binop.stmts.BinOp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
lhs kirin-argument
lhs: SSAValue = argument(T, print=False)
result kirin-result
result: ResultValue = result(T)
rhs kirin-argument
rhs: SSAValue = argument(T, print=False)
traits class-attribute instance-attribute
traits = frozenset({Pure(), FromPythonCall()})
BitAnd kirin-statement
BitAnd(lhs: SSAValue, rhs: SSAValue)
Bases: BinOp
flowchart TD
kirin.dialects.py.binop.stmts.BitAnd[BitAnd]
kirin.dialects.py.binop.stmts.BinOp[BinOp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.binop.stmts.BinOp --> kirin.dialects.py.binop.stmts.BitAnd
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.binop.stmts.BinOp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.binop.stmts.BitAnd href "" "kirin.dialects.py.binop.stmts.BitAnd"
click kirin.dialects.py.binop.stmts.BinOp href "" "kirin.dialects.py.binop.stmts.BinOp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'bitand'
BitOr kirin-statement
BitOr(lhs: SSAValue, rhs: SSAValue)
Bases: BinOp
flowchart TD
kirin.dialects.py.binop.stmts.BitOr[BitOr]
kirin.dialects.py.binop.stmts.BinOp[BinOp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.binop.stmts.BinOp --> kirin.dialects.py.binop.stmts.BitOr
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.binop.stmts.BinOp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.binop.stmts.BitOr href "" "kirin.dialects.py.binop.stmts.BitOr"
click kirin.dialects.py.binop.stmts.BinOp href "" "kirin.dialects.py.binop.stmts.BinOp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'bitor'
BitXor kirin-statement
BitXor(lhs: SSAValue, rhs: SSAValue)
Bases: BinOp
flowchart TD
kirin.dialects.py.binop.stmts.BitXor[BitXor]
kirin.dialects.py.binop.stmts.BinOp[BinOp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.binop.stmts.BinOp --> kirin.dialects.py.binop.stmts.BitXor
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.binop.stmts.BinOp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.binop.stmts.BitXor href "" "kirin.dialects.py.binop.stmts.BitXor"
click kirin.dialects.py.binop.stmts.BinOp href "" "kirin.dialects.py.binop.stmts.BinOp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'bitxor'
Div kirin-statement
Div(lhs: SSAValue, rhs: SSAValue)
Bases: BinOp
flowchart TD
kirin.dialects.py.binop.stmts.Div[Div]
kirin.dialects.py.binop.stmts.BinOp[BinOp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.binop.stmts.BinOp --> kirin.dialects.py.binop.stmts.Div
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.binop.stmts.BinOp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.binop.stmts.Div href "" "kirin.dialects.py.binop.stmts.Div"
click kirin.dialects.py.binop.stmts.BinOp href "" "kirin.dialects.py.binop.stmts.BinOp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'div'
FloorDiv kirin-statement
FloorDiv(lhs: SSAValue, rhs: SSAValue)
Bases: BinOp
flowchart TD
kirin.dialects.py.binop.stmts.FloorDiv[FloorDiv]
kirin.dialects.py.binop.stmts.BinOp[BinOp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.binop.stmts.BinOp --> kirin.dialects.py.binop.stmts.FloorDiv
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.binop.stmts.BinOp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.binop.stmts.FloorDiv href "" "kirin.dialects.py.binop.stmts.FloorDiv"
click kirin.dialects.py.binop.stmts.BinOp href "" "kirin.dialects.py.binop.stmts.BinOp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'floordiv'
LShift kirin-statement
LShift(lhs: SSAValue, rhs: SSAValue)
Bases: BinOp
flowchart TD
kirin.dialects.py.binop.stmts.LShift[LShift]
kirin.dialects.py.binop.stmts.BinOp[BinOp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.binop.stmts.BinOp --> kirin.dialects.py.binop.stmts.LShift
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.binop.stmts.BinOp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.binop.stmts.LShift href "" "kirin.dialects.py.binop.stmts.LShift"
click kirin.dialects.py.binop.stmts.BinOp href "" "kirin.dialects.py.binop.stmts.BinOp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'lshift'
MatMult kirin-statement
MatMult(lhs: SSAValue, rhs: SSAValue)
Bases: BinOp
flowchart TD
kirin.dialects.py.binop.stmts.MatMult[MatMult]
kirin.dialects.py.binop.stmts.BinOp[BinOp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.binop.stmts.BinOp --> kirin.dialects.py.binop.stmts.MatMult
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.binop.stmts.BinOp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.binop.stmts.MatMult href "" "kirin.dialects.py.binop.stmts.MatMult"
click kirin.dialects.py.binop.stmts.BinOp href "" "kirin.dialects.py.binop.stmts.BinOp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'matmult'
Mod kirin-statement
Mod(lhs: SSAValue, rhs: SSAValue)
Bases: BinOp
flowchart TD
kirin.dialects.py.binop.stmts.Mod[Mod]
kirin.dialects.py.binop.stmts.BinOp[BinOp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.binop.stmts.BinOp --> kirin.dialects.py.binop.stmts.Mod
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.binop.stmts.BinOp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.binop.stmts.Mod href "" "kirin.dialects.py.binop.stmts.Mod"
click kirin.dialects.py.binop.stmts.BinOp href "" "kirin.dialects.py.binop.stmts.BinOp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'mod'
Mult kirin-statement
Mult(lhs: SSAValue, rhs: SSAValue)
Bases: BinOp
flowchart TD
kirin.dialects.py.binop.stmts.Mult[Mult]
kirin.dialects.py.binop.stmts.BinOp[BinOp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.binop.stmts.BinOp --> kirin.dialects.py.binop.stmts.Mult
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.binop.stmts.BinOp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.binop.stmts.Mult href "" "kirin.dialects.py.binop.stmts.Mult"
click kirin.dialects.py.binop.stmts.BinOp href "" "kirin.dialects.py.binop.stmts.BinOp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'mult'
Pow kirin-statement
Pow(lhs: SSAValue, rhs: SSAValue)
Bases: BinOp
flowchart TD
kirin.dialects.py.binop.stmts.Pow[Pow]
kirin.dialects.py.binop.stmts.BinOp[BinOp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.binop.stmts.BinOp --> kirin.dialects.py.binop.stmts.Pow
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.binop.stmts.BinOp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.binop.stmts.Pow href "" "kirin.dialects.py.binop.stmts.Pow"
click kirin.dialects.py.binop.stmts.BinOp href "" "kirin.dialects.py.binop.stmts.BinOp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'pow'
RShift kirin-statement
RShift(lhs: SSAValue, rhs: SSAValue)
Bases: BinOp
flowchart TD
kirin.dialects.py.binop.stmts.RShift[RShift]
kirin.dialects.py.binop.stmts.BinOp[BinOp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.binop.stmts.BinOp --> kirin.dialects.py.binop.stmts.RShift
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.binop.stmts.BinOp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.binop.stmts.RShift href "" "kirin.dialects.py.binop.stmts.RShift"
click kirin.dialects.py.binop.stmts.BinOp href "" "kirin.dialects.py.binop.stmts.BinOp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'rshift'
Sub kirin-statement
Sub(lhs: SSAValue, rhs: SSAValue)
Bases: BinOp
flowchart TD
kirin.dialects.py.binop.stmts.Sub[Sub]
kirin.dialects.py.binop.stmts.BinOp[BinOp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.binop.stmts.BinOp --> kirin.dialects.py.binop.stmts.Sub
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.binop.stmts.BinOp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.binop.stmts.Sub href "" "kirin.dialects.py.binop.stmts.Sub"
click kirin.dialects.py.binop.stmts.BinOp href "" "kirin.dialects.py.binop.stmts.BinOp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'sub'
Assertion
kirin.dialects.py.assertion
Assertion dialect for Python.
This module contains the dialect for the Python assert statement, including:
- The
Assertstatement class. - The lowering pass for the
assertstatement. - The concrete implementation of the
assertstatement. - The type inference implementation of the
assertstatement. - The Julia emitter for the
assertstatement.
This dialect maps ast.Assert nodes to the Assert statement.
dialect module-attribute
dialect = Dialect('py.assert')
Assert kirin-statement
Assert(message: SSAValue)
Bases: Statement
flowchart TD
kirin.dialects.py.assertion.Assert[Assert]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.assertion.Assert
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.assertion.Assert href "" "kirin.dialects.py.assertion.Assert"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
condition instance-attribute
condition: SSAValue
message kirin-argument
message: SSAValue = argument(String)
print_impl
print_impl(printer: Printer) -> None
Source code in src/kirin/dialects/py/assertion.py
28 29 30 31 32 33 34 35 36 37 | |
Concrete
Bases: MethodTable
flowchart TD
kirin.dialects.py.assertion.Concrete[Concrete]
kirin.interp.table.MethodTable[MethodTable]
kirin.interp.table.MethodTable --> kirin.dialects.py.assertion.Concrete
click kirin.dialects.py.assertion.Concrete href "" "kirin.dialects.py.assertion.Concrete"
click kirin.interp.table.MethodTable href "" "kirin.interp.table.MethodTable"
assert_stmt
assert_stmt(
interp_: Interpreter, frame: Frame, stmt: Assert
)
Source code in src/kirin/dialects/py/assertion.py
60 61 62 63 64 65 66 67 68 69 70 | |
Lowering dataclass
Lowering()
Bases: FromPythonAST
flowchart TD
kirin.dialects.py.assertion.Lowering[Lowering]
kirin.lowering.python.dialect.FromPythonAST[FromPythonAST]
kirin.lowering.python.dialect.FromPythonAST --> kirin.dialects.py.assertion.Lowering
click kirin.dialects.py.assertion.Lowering href "" "kirin.dialects.py.assertion.Lowering"
click kirin.lowering.python.dialect.FromPythonAST href "" "kirin.lowering.python.dialect.FromPythonAST"
lower_Assert
lower_Assert(state: State, node: Assert) -> lowering.Result
Source code in src/kirin/dialects/py/assertion.py
43 44 45 46 47 48 49 50 51 52 53 54 | |
TypeInfer
Bases: MethodTable
flowchart TD
kirin.dialects.py.assertion.TypeInfer[TypeInfer]
kirin.interp.table.MethodTable[MethodTable]
kirin.interp.table.MethodTable --> kirin.dialects.py.assertion.TypeInfer
click kirin.dialects.py.assertion.TypeInfer href "" "kirin.dialects.py.assertion.TypeInfer"
click kirin.interp.table.MethodTable href "" "kirin.interp.table.MethodTable"
assert_stmt
assert_stmt(interp, frame, stmt: Assert)
Source code in src/kirin/dialects/py/assertion.py
76 77 78 | |
Assignment
kirin.dialects.py.assign
Assignment dialect for Python.
This module contains the dialect for the Python assignment statement, including:
- Statements:
Alias,SetItem. - The lowering pass for the assignments.
- The concrete implementation of the assignment statements.
This dialects maps Python assignment syntax.
T module-attribute
T = TypeVar('T')
dialect module-attribute
dialect = Dialect('py.assign')
Alias kirin-statement
Alias(value: SSAValue, *, target: PyAttr[str])
Bases: Statement
flowchart TD
kirin.dialects.py.assign.Alias[Alias]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.assign.Alias
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.assign.Alias href "" "kirin.dialects.py.assign.Alias"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'alias'
result kirin-result
result: ResultValue = result(T)
target kirin-attribute kw-only
target: PyAttr[str] = attribute()
traits class-attribute instance-attribute
traits = frozenset({Pure(), FromPythonCall()})
value kirin-argument
value: SSAValue = argument(T)
print_impl
print_impl(printer: Printer) -> None
Source code in src/kirin/dialects/py/assign.py
31 32 33 34 35 36 37 38 39 40 | |
Concrete
Bases: MethodTable
flowchart TD
kirin.dialects.py.assign.Concrete[Concrete]
kirin.interp.table.MethodTable[MethodTable]
kirin.interp.table.MethodTable --> kirin.dialects.py.assign.Concrete
click kirin.dialects.py.assign.Concrete href "" "kirin.dialects.py.assign.Concrete"
click kirin.interp.table.MethodTable href "" "kirin.interp.table.MethodTable"
alias
alias(interp, frame: Frame, stmt: Alias)
Source code in src/kirin/dialects/py/assign.py
80 81 82 | |
set_attribute
set_attribute(interp, frame: Frame, stmt: SetAttribute)
Source code in src/kirin/dialects/py/assign.py
88 89 90 91 92 | |
setindex
setindex(interp, frame: Frame, stmt: SetItem)
Source code in src/kirin/dialects/py/assign.py
84 85 86 | |
type_assert
type_assert(interp_, frame: Frame, stmt: TypeAssert)
Source code in src/kirin/dialects/py/assign.py
97 98 99 100 101 102 103 | |
Lowering dataclass
Lowering()
Bases: FromPythonAST
flowchart TD
kirin.dialects.py.assign.Lowering[Lowering]
kirin.lowering.python.dialect.FromPythonAST[FromPythonAST]
kirin.lowering.python.dialect.FromPythonAST --> kirin.dialects.py.assign.Lowering
click kirin.dialects.py.assign.Lowering href "" "kirin.dialects.py.assign.Lowering"
click kirin.lowering.python.dialect.FromPythonAST href "" "kirin.lowering.python.dialect.FromPythonAST"
assign_item classmethod
assign_item(state: State, target, result: Result)
Source code in src/kirin/dialects/py/assign.py
189 190 191 192 193 194 195 196 197 198 199 200 | |
assign_item_value classmethod
assign_item_value(state: State, target, value: SSAValue)
Source code in src/kirin/dialects/py/assign.py
170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 | |
lower_AnnAssign
lower_AnnAssign(
state: State, node: AnnAssign
) -> lowering.Result
Source code in src/kirin/dialects/py/assign.py
137 138 139 140 141 142 143 | |
lower_Assign
lower_Assign(state: State, node: Assign) -> lowering.Result
Source code in src/kirin/dialects/py/assign.py
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | |
lower_AugAssign
lower_AugAssign(
state: State, node: AugAssign
) -> lowering.Result
Source code in src/kirin/dialects/py/assign.py
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 | |
lower_NamedExpr
lower_NamedExpr(
state: State, node: NamedExpr
) -> lowering.Result
Source code in src/kirin/dialects/py/assign.py
163 164 165 166 167 168 | |
SetAttribute kirin-statement
SetAttribute(obj: SSAValue, value: SSAValue, *, attr: str)
Bases: Statement
flowchart TD
kirin.dialects.py.assign.SetAttribute[SetAttribute]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.assign.SetAttribute
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.assign.SetAttribute href "" "kirin.dialects.py.assign.SetAttribute"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
attr kirin-attribute kw-only
attr: str = attribute()
name class-attribute instance-attribute
name = 'setattr'
obj kirin-argument
obj: SSAValue = argument(print=False)
traits class-attribute instance-attribute
traits = frozenset({FromPythonCall()})
value kirin-argument
value: SSAValue = argument(print=False)
SetItem kirin-statement
SetItem(obj: SSAValue, value: SSAValue, index: SSAValue)
Bases: Statement
flowchart TD
kirin.dialects.py.assign.SetItem[SetItem]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.assign.SetItem
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.assign.SetItem href "" "kirin.dialects.py.assign.SetItem"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
index kirin-argument
index: SSAValue = argument(print=False)
name class-attribute instance-attribute
name = 'setitem'
obj kirin-argument
obj: SSAValue = argument(print=False)
traits class-attribute instance-attribute
traits = frozenset({FromPythonCall()})
value kirin-argument
value: SSAValue = argument(print=False)
TypeAssert kirin-statement
TypeAssert(got: SSAValue, *, expected: TypeAttribute)
Bases: Statement
flowchart TD
kirin.dialects.py.assign.TypeAssert[TypeAssert]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.assign.TypeAssert
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.assign.TypeAssert href "" "kirin.dialects.py.assign.TypeAssert"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
Source code in src/kirin/dialects/py/assign.py
68 69 70 71 72 73 74 | |
expected kirin-attribute kw-only
expected: TypeAttribute = attribute()
got kirin-argument
got: SSAValue = argument(print=False)
result kirin-result
result: ResultValue = result()
traits class-attribute instance-attribute
traits = frozenset({FromPythonCall()})
TypeInfer
Bases: MethodTable
flowchart TD
kirin.dialects.py.assign.TypeInfer[TypeInfer]
kirin.interp.table.MethodTable[MethodTable]
kirin.interp.table.MethodTable --> kirin.dialects.py.assign.TypeInfer
click kirin.dialects.py.assign.TypeInfer href "" "kirin.dialects.py.assign.TypeInfer"
click kirin.interp.table.MethodTable href "" "kirin.interp.table.MethodTable"
type_assert
type_assert(
interp_, frame: Frame[TypeAttribute], stmt: TypeAssert
)
Source code in src/kirin/dialects/py/assign.py
108 109 110 111 112 113 114 115 | |
Unpack
kirin.dialects.py.unpack
The unpack dialect for Python.
This module contains the dialect for the Python unpack semantics, including:
- The
Unpackstatement class. - The lowering pass for the unpack statement.
- The concrete implementation of the unpack statement.
- The type inference implementation of the unpack statement.
- A helper function
unpackingfor unpacking Python AST nodes during lowering.
dialect module-attribute
dialect = Dialect('py.unpack')
Concrete
Bases: MethodTable
flowchart TD
kirin.dialects.py.unpack.Concrete[Concrete]
kirin.interp.table.MethodTable[MethodTable]
kirin.interp.table.MethodTable --> kirin.dialects.py.unpack.Concrete
click kirin.dialects.py.unpack.Concrete href "" "kirin.dialects.py.unpack.Concrete"
click kirin.interp.table.MethodTable href "" "kirin.interp.table.MethodTable"
unpack
unpack(interp: Interpreter, frame: Frame, stmt: Unpack)
Source code in src/kirin/dialects/py/unpack.py
46 47 48 | |
TypeInfer
Bases: MethodTable
flowchart TD
kirin.dialects.py.unpack.TypeInfer[TypeInfer]
kirin.interp.table.MethodTable[MethodTable]
kirin.interp.table.MethodTable --> kirin.dialects.py.unpack.TypeInfer
click kirin.dialects.py.unpack.TypeInfer href "" "kirin.dialects.py.unpack.TypeInfer"
click kirin.interp.table.MethodTable href "" "kirin.interp.table.MethodTable"
unpack
unpack(interp, frame: Frame[TypeAttribute], stmt: Unpack)
Source code in src/kirin/dialects/py/unpack.py
54 55 56 57 58 59 60 61 62 63 64 | |
Unpack kirin-statement
Unpack(value: SSAValue, names: tuple[str | None, ...])
Bases: Statement
flowchart TD
kirin.dialects.py.unpack.Unpack[Unpack]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.unpack.Unpack
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.unpack.Unpack href "" "kirin.dialects.py.unpack.Unpack"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
Source code in src/kirin/dialects/py/unpack.py
26 27 28 29 30 31 32 33 34 35 | |
names kirin-attribute kw-only
names: tuple[str | None, ...] = attribute()
value kirin-argument
value: SSAValue = argument(Any)
print_impl
print_impl(printer: Printer) -> None
Source code in src/kirin/dialects/py/unpack.py
37 38 39 40 | |
unpacking
unpacking(state: State, node: expr, value: SSAValue)
Source code in src/kirin/dialects/py/unpack.py
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | |
Boolean Operation
kirin.dialects.py.boolop
Boolean operators for Python dialect.
This module contains the dialect for the Python boolean operators, including:
- The
AndandOrstatement classes. - The lowering pass for the boolean operators.
- The concrete implementation of the boolean operators.
- The Julia emitter for the boolean operators.
This dialect maps ast.BoolOp nodes to the And and Or statements.
dialect module-attribute
dialect = Dialect('py.boolop')
And kirin-statement
And(lhs: SSAValue, rhs: SSAValue)
Bases: BoolOp
flowchart TD
kirin.dialects.py.boolop.And[And]
kirin.dialects.py.boolop.BoolOp[BoolOp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.boolop.BoolOp --> kirin.dialects.py.boolop.And
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.boolop.BoolOp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.boolop.And href "" "kirin.dialects.py.boolop.And"
click kirin.dialects.py.boolop.BoolOp href "" "kirin.dialects.py.boolop.BoolOp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'and'
BoolOp kirin-statement
BoolOp(lhs: SSAValue, rhs: SSAValue)
Bases: Statement
flowchart TD
kirin.dialects.py.boolop.BoolOp[BoolOp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.boolop.BoolOp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.boolop.BoolOp href "" "kirin.dialects.py.boolop.BoolOp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
lhs kirin-argument
lhs: SSAValue = argument(print=False)
result kirin-result
result: ResultValue = result(Bool)
rhs kirin-argument
rhs: SSAValue = argument(print=False)
traits class-attribute instance-attribute
traits = frozenset({Pure(), FromPythonCall()})
BoolOpMethod
Bases: MethodTable
flowchart TD
kirin.dialects.py.boolop.BoolOpMethod[BoolOpMethod]
kirin.interp.table.MethodTable[MethodTable]
kirin.interp.table.MethodTable --> kirin.dialects.py.boolop.BoolOpMethod
click kirin.dialects.py.boolop.BoolOpMethod href "" "kirin.dialects.py.boolop.BoolOpMethod"
click kirin.interp.table.MethodTable href "" "kirin.interp.table.MethodTable"
and_
and_(interp, frame: Frame, stmt: And)
Source code in src/kirin/dialects/py/boolop.py
62 63 64 | |
or_
or_(interp, frame: Frame, stmt: Or)
Source code in src/kirin/dialects/py/boolop.py
66 67 68 | |
Or kirin-statement
Or(lhs: SSAValue, rhs: SSAValue)
Bases: BoolOp
flowchart TD
kirin.dialects.py.boolop.Or[Or]
kirin.dialects.py.boolop.BoolOp[BoolOp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.boolop.BoolOp --> kirin.dialects.py.boolop.Or
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.boolop.BoolOp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.boolop.Or href "" "kirin.dialects.py.boolop.Or"
click kirin.dialects.py.boolop.BoolOp href "" "kirin.dialects.py.boolop.BoolOp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'or'
PythonLowering dataclass
PythonLowering()
Bases: FromPythonAST
flowchart TD
kirin.dialects.py.boolop.PythonLowering[PythonLowering]
kirin.lowering.python.dialect.FromPythonAST[FromPythonAST]
kirin.lowering.python.dialect.FromPythonAST --> kirin.dialects.py.boolop.PythonLowering
click kirin.dialects.py.boolop.PythonLowering href "" "kirin.dialects.py.boolop.PythonLowering"
click kirin.lowering.python.dialect.FromPythonAST href "" "kirin.lowering.python.dialect.FromPythonAST"
lower_BoolOp
lower_BoolOp(state: State, node: BoolOp) -> lowering.Result
Source code in src/kirin/dialects/py/boolop.py
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | |
Comparison
kirin.dialects.py.cmp.stmts
Cmp kirin-statement
Cmp(lhs: SSAValue, rhs: SSAValue)
Bases: Statement
flowchart TD
kirin.dialects.py.cmp.stmts.Cmp[Cmp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.cmp.stmts.Cmp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.cmp.stmts.Cmp href "" "kirin.dialects.py.cmp.stmts.Cmp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
lhs kirin-argument
lhs: SSAValue = argument()
result kirin-result
result: ResultValue = result(Bool)
rhs kirin-argument
rhs: SSAValue = argument()
traits class-attribute instance-attribute
traits = frozenset({Pure(), FromPythonCall()})
Eq kirin-statement
Eq(lhs: SSAValue, rhs: SSAValue)
Bases: Cmp
flowchart TD
kirin.dialects.py.cmp.stmts.Eq[Eq]
kirin.dialects.py.cmp.stmts.Cmp[Cmp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.cmp.stmts.Cmp --> kirin.dialects.py.cmp.stmts.Eq
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.cmp.stmts.Cmp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.cmp.stmts.Eq href "" "kirin.dialects.py.cmp.stmts.Eq"
click kirin.dialects.py.cmp.stmts.Cmp href "" "kirin.dialects.py.cmp.stmts.Cmp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'eq'
Gt kirin-statement
Gt(lhs: SSAValue, rhs: SSAValue)
Bases: Cmp
flowchart TD
kirin.dialects.py.cmp.stmts.Gt[Gt]
kirin.dialects.py.cmp.stmts.Cmp[Cmp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.cmp.stmts.Cmp --> kirin.dialects.py.cmp.stmts.Gt
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.cmp.stmts.Cmp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.cmp.stmts.Gt href "" "kirin.dialects.py.cmp.stmts.Gt"
click kirin.dialects.py.cmp.stmts.Cmp href "" "kirin.dialects.py.cmp.stmts.Cmp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'gt'
GtE kirin-statement
GtE(lhs: SSAValue, rhs: SSAValue)
Bases: Cmp
flowchart TD
kirin.dialects.py.cmp.stmts.GtE[GtE]
kirin.dialects.py.cmp.stmts.Cmp[Cmp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.cmp.stmts.Cmp --> kirin.dialects.py.cmp.stmts.GtE
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.cmp.stmts.Cmp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.cmp.stmts.GtE href "" "kirin.dialects.py.cmp.stmts.GtE"
click kirin.dialects.py.cmp.stmts.Cmp href "" "kirin.dialects.py.cmp.stmts.Cmp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'gte'
In kirin-statement
In(lhs: SSAValue, rhs: SSAValue)
Bases: Cmp
flowchart TD
kirin.dialects.py.cmp.stmts.In[In]
kirin.dialects.py.cmp.stmts.Cmp[Cmp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.cmp.stmts.Cmp --> kirin.dialects.py.cmp.stmts.In
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.cmp.stmts.Cmp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.cmp.stmts.In href "" "kirin.dialects.py.cmp.stmts.In"
click kirin.dialects.py.cmp.stmts.Cmp href "" "kirin.dialects.py.cmp.stmts.Cmp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'in'
Is kirin-statement
Is(lhs: SSAValue, rhs: SSAValue)
Bases: Cmp
flowchart TD
kirin.dialects.py.cmp.stmts.Is[Is]
kirin.dialects.py.cmp.stmts.Cmp[Cmp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.cmp.stmts.Cmp --> kirin.dialects.py.cmp.stmts.Is
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.cmp.stmts.Cmp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.cmp.stmts.Is href "" "kirin.dialects.py.cmp.stmts.Is"
click kirin.dialects.py.cmp.stmts.Cmp href "" "kirin.dialects.py.cmp.stmts.Cmp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'is'
IsNot kirin-statement
IsNot(lhs: SSAValue, rhs: SSAValue)
Bases: Cmp
flowchart TD
kirin.dialects.py.cmp.stmts.IsNot[IsNot]
kirin.dialects.py.cmp.stmts.Cmp[Cmp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.cmp.stmts.Cmp --> kirin.dialects.py.cmp.stmts.IsNot
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.cmp.stmts.Cmp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.cmp.stmts.IsNot href "" "kirin.dialects.py.cmp.stmts.IsNot"
click kirin.dialects.py.cmp.stmts.Cmp href "" "kirin.dialects.py.cmp.stmts.Cmp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'is_not'
Lt kirin-statement
Lt(lhs: SSAValue, rhs: SSAValue)
Bases: Cmp
flowchart TD
kirin.dialects.py.cmp.stmts.Lt[Lt]
kirin.dialects.py.cmp.stmts.Cmp[Cmp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.cmp.stmts.Cmp --> kirin.dialects.py.cmp.stmts.Lt
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.cmp.stmts.Cmp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.cmp.stmts.Lt href "" "kirin.dialects.py.cmp.stmts.Lt"
click kirin.dialects.py.cmp.stmts.Cmp href "" "kirin.dialects.py.cmp.stmts.Cmp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'lt'
LtE kirin-statement
LtE(lhs: SSAValue, rhs: SSAValue)
Bases: Cmp
flowchart TD
kirin.dialects.py.cmp.stmts.LtE[LtE]
kirin.dialects.py.cmp.stmts.Cmp[Cmp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.cmp.stmts.Cmp --> kirin.dialects.py.cmp.stmts.LtE
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.cmp.stmts.Cmp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.cmp.stmts.LtE href "" "kirin.dialects.py.cmp.stmts.LtE"
click kirin.dialects.py.cmp.stmts.Cmp href "" "kirin.dialects.py.cmp.stmts.Cmp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'lte'
NotEq kirin-statement
NotEq(lhs: SSAValue, rhs: SSAValue)
Bases: Cmp
flowchart TD
kirin.dialects.py.cmp.stmts.NotEq[NotEq]
kirin.dialects.py.cmp.stmts.Cmp[Cmp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.cmp.stmts.Cmp --> kirin.dialects.py.cmp.stmts.NotEq
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.cmp.stmts.Cmp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.cmp.stmts.NotEq href "" "kirin.dialects.py.cmp.stmts.NotEq"
click kirin.dialects.py.cmp.stmts.Cmp href "" "kirin.dialects.py.cmp.stmts.Cmp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'ne'
NotIn kirin-statement
NotIn(lhs: SSAValue, rhs: SSAValue)
Bases: Cmp
flowchart TD
kirin.dialects.py.cmp.stmts.NotIn[NotIn]
kirin.dialects.py.cmp.stmts.Cmp[Cmp]
kirin.ir.nodes.stmt.Statement[Statement]
kirin.ir.nodes.base.IRNode[IRNode]
kirin.print.printable.Printable[Printable]
kirin.dialects.py.cmp.stmts.Cmp --> kirin.dialects.py.cmp.stmts.NotIn
kirin.ir.nodes.stmt.Statement --> kirin.dialects.py.cmp.stmts.Cmp
kirin.ir.nodes.base.IRNode --> kirin.ir.nodes.stmt.Statement
kirin.print.printable.Printable --> kirin.ir.nodes.base.IRNode
click kirin.dialects.py.cmp.stmts.NotIn href "" "kirin.dialects.py.cmp.stmts.NotIn"
click kirin.dialects.py.cmp.stmts.Cmp href "" "kirin.dialects.py.cmp.stmts.Cmp"
click kirin.ir.nodes.stmt.Statement href "" "kirin.ir.nodes.stmt.Statement"
click kirin.ir.nodes.base.IRNode href "" "kirin.ir.nodes.base.IRNode"
click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
name class-attribute instance-attribute
name = 'not_in'