Skip to content

Commit dccdd74

Browse files
authored
split cf lowering (#186)
split `cf` lowering into a separate dialect so we can have `cf` co-exist with `scf` in decorators, some Python syntax may require `cf` such as `pass`. This gives us some more choice when we want to lower as much as possible to `scf` instead of lowering everything into `cf`.
1 parent 45b2a42 commit dccdd74

File tree

4 files changed

+24
-5
lines changed

4 files changed

+24
-5
lines changed

src/kirin/dialects/cf/__init__.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,17 @@
1+
"""Control flow dialect.
2+
3+
This dialect provides a low-level control flow representation.
4+
5+
This dialect does not provide any lowering strategies, to lowering
6+
a Python AST to this dialect, use the `kirin.dialects.lowering.cf` dialect
7+
with this dialect.
8+
"""
9+
110
from kirin.dialects.cf import (
211
emit as emit,
312
constprop as constprop,
413
typeinfer as typeinfer,
514
)
6-
from kirin.dialects.cf.lower import CfLowering as CfLowering
715
from kirin.dialects.cf.stmts import (
816
Branch as Branch,
917
ConditionalBranch as ConditionalBranch,
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
"""This module contains the dialects for choosing different lowering strategies.
2+
3+
The dialects defined inside this module do not provide any new statements, it only
4+
provide different lowering strategies for existing statements.
5+
"""
6+
7+
from . import cf as cf
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
1+
"""Lowering Python AST to cf dialect.
2+
"""
3+
14
import ast
25

36
from kirin import ir
47
from kirin.lowering import Frame, Result, FromPythonAST, LoweringState
58
from kirin.exceptions import DialectLoweringError
69
from kirin.dialects.cf import stmts as cf
7-
from kirin.dialects.cf.dialect import dialect
10+
11+
dialect = ir.Dialect("lowering.cf")
812

913

1014
@dialect.register

src/kirin/prelude.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
from kirin.ir import Method, dialect_group
99
from kirin.passes import aggressive
10-
from kirin.dialects import cf, func, math, ilist
10+
from kirin.dialects import cf, func, math, ilist, lowering
1111
from kirin.dialects.py import (
1212
cmp,
1313
len,
@@ -56,7 +56,7 @@ def run_pass(mt: Method) -> None:
5656
return run_pass
5757

5858

59-
@dialect_group(python_basic.union([list, range, slice, cf, func, math]))
59+
@dialect_group(python_basic.union([list, range, slice, cf, lowering.cf, func, math]))
6060
def python_no_opt(self):
6161
"""The Python dialect without optimization passes."""
6262

@@ -66,7 +66,7 @@ def run_pass(mt: Method) -> None:
6666
return run_pass
6767

6868

69-
@dialect_group(python_basic.union([ilist, range, slice, cf, func, math]))
69+
@dialect_group(python_basic.union([ilist, range, slice, cf, lowering.cf, func, math]))
7070
def basic_no_opt(self):
7171
"""The basic kernel without optimization passes. This is a builtin
7272
eDSL that includes the basic dialects that are commonly used in

0 commit comments

Comments
 (0)