Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IR: Move expr_visitors to loki.ir #372

Merged
merged 3 commits into from
Oct 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions loki/analyse/analyse_dataflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,12 @@
"""

from contextlib import contextmanager
from loki.expression import FindVariables, Array, FindInlineCalls, ProcedureSymbol, FindTypedSymbols
from loki.expression import Array, ProcedureSymbol
from loki.tools import as_tuple, flatten
from loki.types import BasicType
from loki.ir import Visitor, Transformer
from loki.ir import (
Visitor, Transformer, FindVariables, FindInlineCalls, FindTypedSymbols
)
from loki.subroutine import Subroutine
from loki.tools.util import CaseInsensitiveDict

Expand Down
9 changes: 3 additions & 6 deletions loki/analyse/util_polyhedron.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,10 @@

from typing import List
import numpy as np
from loki.ir import Loop
from loki.ir import Loop, FindVariables
from loki.expression import (
symbols as sym,
FindVariables,
simplify,
is_constant,
accumulate_polynomial_terms,
symbols as sym, simplify, is_constant,
accumulate_polynomial_terms
)
from loki.tools import as_tuple

Expand Down
5 changes: 3 additions & 2 deletions loki/batch/item.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,11 @@
from loki.batch.configure import SchedulerConfig, ItemConfig
from loki.frontend import REGEX, RegexParserClass
from loki.expression import (
TypedSymbol, MetaSymbol, ProcedureSymbol, Variable, FindInlineCalls
TypedSymbol, MetaSymbol, ProcedureSymbol, Variable
)
from loki.ir import (
Import, CallStatement, TypeDef, ProcedureDeclaration, Interface, FindNodes
Import, CallStatement, TypeDef, ProcedureDeclaration, Interface,
FindNodes, FindInlineCalls
)
from loki.logging import warning
from loki.module import Module
Expand Down
6 changes: 2 additions & 4 deletions loki/batch/tests/test_scheduler.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,13 +66,11 @@
ProcedureBindingItem, InterfaceItem, TypeDefItem, SFilter,
ExternalItem, Transformation, Pipeline
)
from loki.expression import (
Scalar, Array, Literal, ProcedureSymbol, FindInlineCalls
)
from loki.expression import Scalar, Array, Literal, ProcedureSymbol
from loki.frontend import (
available_frontends, OMNI, OFP, FP, REGEX, HAVE_FP, HAVE_OFP, HAVE_OMNI
)
from loki.ir import nodes as ir, FindNodes
from loki.ir import nodes as ir, FindNodes, FindInlineCalls
from loki.transformations import (
DependencyTransformation, ModuleWrapTransformation
)
Expand Down
1 change: 0 additions & 1 deletion loki/expression/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
<https://github.com/inducer/pymbolic>`_.
"""

from loki.expression.expr_visitors import * # noqa
from loki.expression.symbols import * # noqa
from loki.expression.operations import * # noqa
from loki.expression.mappers import * # noqa
Expand Down
7 changes: 3 additions & 4 deletions loki/expression/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,9 @@
except ImportError:
FORTRAN_INTRINSIC_PROCEDURES = ()

from loki.tools.util import CaseInsensitiveDict
import loki.expression.symbols as sym
import loki.expression.operations as sym_ops
from loki.expression.expr_visitors import AttachScopes
from loki.expression import symbols as sym, operations as sym_ops
from loki.scope import Scope
from loki.tools.util import CaseInsensitiveDict

__all__ = ['ExpressionParser', 'parse_expr', 'FORTRAN_INTRINSIC_PROCEDURES', 'LokiEvaluationMapper']

Expand Down Expand Up @@ -519,6 +517,7 @@ def __call__(self, expr_str, scope=None, evaluate=False, strict=False, context=N
:any:`Expression`
The expression tree corresponding to the expression
"""
from loki.ir import AttachScopes # pylint: disable=import-outside-toplevel,cyclic-import
result = super().__call__(expr_str)
context = context or {}
context = CaseInsensitiveDict(context)
Expand Down
10 changes: 5 additions & 5 deletions loki/expression/tests/test_expression.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,14 @@
)
from loki.backend import cgen, fgen
from loki.build import jit_compile, clean_test
from loki.expression import (
symbols as sym, FindVariables, FindExpressions, FindInlineCalls,
SubstituteExpressions, AttachScopesMapper, parse_expr
)
from loki.expression import symbols as sym, parse_expr, AttachScopesMapper
from loki.frontend import (
available_frontends, OFP, OMNI, FP, HAVE_FP, parse_fparser_expression
)
from loki.ir import nodes as ir, FindNodes
from loki.ir import (
nodes as ir, FindNodes, FindVariables, FindExpressions,
FindInlineCalls, SubstituteExpressions
)
from loki.tools import (
filehash, stdchannel_redirected, stdchannel_is_captured
)
Expand Down
3 changes: 2 additions & 1 deletion loki/expression/tests/test_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,11 @@
import pymbolic.mapper as pmbl_mapper

from loki import Subroutine, Module, Scope
from loki.expression import symbols as sym, FindVariables, parse_expr
from loki.expression import symbols as sym, parse_expr
from loki.frontend import (
available_frontends, OMNI, HAVE_FP, parse_fparser_expression
)
from loki.ir import FindVariables


# utility function to test parse_expr with different case
Expand Down
5 changes: 3 additions & 2 deletions loki/frontend/fparser.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,14 @@
from loki import ir
from loki.ir import (
GenericVisitor, Transformer, FindNodes, attach_pragmas,
process_dimension_pragmas, detach_pragmas, pragmas_attached
process_dimension_pragmas, detach_pragmas, pragmas_attached,
AttachScopes
)
import loki.expression.symbols as sym
from loki.expression.operations import (
StringConcat, ParenthesisedAdd, ParenthesisedMul, ParenthesisedDiv, ParenthesisedPow
)
from loki.expression import ExpressionDimensionsMapper, AttachScopes, AttachScopesMapper
from loki.expression import ExpressionDimensionsMapper, AttachScopesMapper
from loki.logging import debug, perf, info, warning, error
from loki.tools import (
as_tuple, flatten, CaseInsensitiveDict, LazyNodeLookup, dict_override
Expand Down
3 changes: 1 addition & 2 deletions loki/frontend/tests/test_omni.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,8 @@
import pytest

from loki import Module, Subroutine
from loki.expression import FindVariables
from loki.frontend import OMNI, HAVE_OMNI
from loki.ir import nodes as ir, FindNodes
from loki.ir import nodes as ir, FindNodes, FindVariables


@pytest.mark.skipif(not HAVE_OMNI, reason='Test tequires OMNI frontend.')
Expand Down
1 change: 1 addition & 0 deletions loki/ir/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
The Loki internal representation (IR) and associated APIs for tree traversal.
"""

from loki.ir.expr_visitors import * # noqa
from loki.ir.find import * # noqa
from loki.ir.ir_graph import * # noqa
from loki.ir.nodes import * # noqa
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@
import pytest

from loki import Sourcefile, Subroutine
from loki.expression import (
symbols as sym, parse_expr, FindVariables, FindTypedSymbols,
from loki.expression import symbols as sym, parse_expr
from loki.frontend import available_frontends
from loki.ir import (
nodes as ir, FindNodes, FindVariables, FindTypedSymbols,
SubstituteExpressions, SubstituteStringExpressions
)
from loki.frontend import available_frontends
from loki.ir import nodes as ir, FindNodes


@pytest.mark.parametrize('frontend', available_frontends())
Expand Down
7 changes: 3 additions & 4 deletions loki/ir/tests/test_visitor.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,11 @@
from loki.ir import (
is_parent_of, is_child_of, FindNodes, FindScopes, Transformer,
NestedTransformer, MaskedTransformer, NestedMaskedTransformer,
Stringifier
Stringifier, FindVariables, ExpressionFinder,
SubstituteExpressions
)
from loki.expression import (
symbols as sym, FindVariables, ExpressionFinder,
ExpressionCallbackMapper, ExpressionRetriever,
SubstituteExpressions
symbols as sym, ExpressionCallbackMapper, ExpressionRetriever
)


Expand Down
2 changes: 1 addition & 1 deletion loki/scope.py
Original file line number Diff line number Diff line change
Expand Up @@ -296,7 +296,7 @@ def rescope_symbols(self):
Make sure all symbols declared and used inside this node belong
to a scope in the scope hierarchy
"""
from loki.expression import AttachScopes # pylint: disable=import-outside-toplevel,cyclic-import
from loki.ir import AttachScopes # pylint: disable=import-outside-toplevel,cyclic-import
AttachScopes().visit(self, scope=self)

def make_complete(self, **frontend_args):
Expand Down
6 changes: 4 additions & 2 deletions loki/transformations/argument_shape.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,10 @@


from loki.batch import Transformation
from loki.expression import Array, FindVariables, SubstituteExpressions
from loki.ir import FindNodes, CallStatement, Transformer
from loki.expression import Array
from loki.ir import (
FindNodes, CallStatement, Transformer, FindVariables, SubstituteExpressions
)
from loki.tools import as_tuple, CaseInsensitiveDict
from loki.types import BasicType

Expand Down
8 changes: 3 additions & 5 deletions loki/transformations/array_indexing.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,10 @@
from loki.batch import Transformation, ProcedureItem
from loki.logging import info
from loki.analyse import dataflow_analysis_attached
from loki.expression import (
symbols as sym, simplify, symbolic_op, FindVariables, SubstituteExpressions,
is_constant
)
from loki.expression import symbols as sym, simplify, symbolic_op, is_constant
from loki.ir import (
Assignment, Loop, VariableDeclaration, FindNodes, Transformer, nodes as ir
nodes as ir, Assignment, Loop, VariableDeclaration, FindNodes,
Transformer, FindVariables, SubstituteExpressions
)
from loki.tools import as_tuple, CaseInsensitiveDict
from loki.types import SymbolAttributes, BasicType
Expand Down
12 changes: 6 additions & 6 deletions loki/transformations/block_index_transformations.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,17 @@

from loki.batch import Transformation, ProcedureItem
from loki.ir import (
nodes as ir, FindNodes, Transformer, pragmas_attached,
pragma_regions_attached
nodes as ir, FindNodes, Transformer, pragmas_attached,
pragma_regions_attached, FindVariables, SubstituteExpressions,
AttachScopes
)
from loki.logging import warning
from loki.module import Module
from loki.tools import as_tuple # , CaseInsensitiveDict
from loki.tools import as_tuple
from loki.types import SymbolAttributes, BasicType
from loki.expression import (
Variable, Array, RangeIndex, FindVariables, SubstituteExpressions,
symbols as sym, AttachScopes
symbols as sym, Variable, Array, RangeIndex
)
from loki.logging import warning
from loki.transformations.sanitise import resolve_associates
from loki.transformations.utilities import (
recursive_expression_map_update, get_integer_variable,
Expand Down
5 changes: 3 additions & 2 deletions loki/transformations/build_system/dependency.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@

from loki.backend import fgen
from loki.batch import Transformation
from loki.expression import FindInlineCalls
from loki.ir import CallStatement, Import, Interface, FindNodes, Transformer
from loki.ir import (
CallStatement, Import, Interface, FindNodes, FindInlineCalls, Transformer
)
from loki.logging import warning
from loki.module import Module
from loki.scope import Scope
Expand Down
5 changes: 3 additions & 2 deletions loki/transformations/build_system/tests/test_dependency.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@

from loki import Sourcefile
from loki.batch import Scheduler, SchedulerConfig
from loki.expression import FindInlineCalls
from loki.frontend import available_frontends, OMNI, OFP
from loki.ir import FindNodes, CallStatement, Import, Interface, Intrinsic
from loki.ir import (
FindNodes, CallStatement, Import, Interface, Intrinsic, FindInlineCalls
)

from loki.transformations import (
DependencyTransformation, ModuleWrapTransformation
Expand Down
7 changes: 3 additions & 4 deletions loki/transformations/data_offload.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,11 @@

from loki.analyse import dataflow_analysis_attached
from loki.batch import Transformation, ProcedureItem, ModuleItem
from loki.expression import (
Scalar, Array, FindInlineCalls, SubstituteExpressions
)
from loki.expression import Scalar, Array
from loki.ir import (
FindNodes, PragmaRegion, CallStatement, Pragma, Import, Comment,
Transformer, pragma_regions_attached, get_pragma_parameters
Transformer, pragma_regions_attached, get_pragma_parameters,
FindInlineCalls, SubstituteExpressions
)
from loki.logging import warning
from loki.tools import as_tuple, flatten, CaseInsensitiveDict, CaseInsensitiveDefaultDict
Expand Down
8 changes: 4 additions & 4 deletions loki/transformations/extract.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
# nor does it submit to any jurisdiction.

from loki.subroutine import Subroutine
from loki.expression import (
FindVariables, FindInlineCalls, SubstituteExpressions,
DeferredTypeSymbol, Array
from loki.expression import DeferredTypeSymbol, Array
from loki.ir import (
CallStatement, Transformer, FindNodes, FindVariables,
FindInlineCalls, SubstituteExpressions
)
from loki.ir import CallStatement, Transformer, FindNodes
from loki.types import DerivedType


Expand Down
7 changes: 2 additions & 5 deletions loki/transformations/hoist_variables.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,13 +83,10 @@
from collections import defaultdict

from loki.batch import Transformation, ProcedureItem
from loki.expression import (
symbols as sym, FindVariables, FindInlineCalls,
SubstituteExpressions, is_dimension_constant
)
from loki.expression import symbols as sym, is_dimension_constant
from loki.ir import (
CallStatement, Allocation, Deallocation, Transformer, FindNodes, Comment, Import,
Assignment
Assignment, FindVariables, FindInlineCalls, SubstituteExpressions
)
from loki.tools.util import is_iterable, as_tuple, CaseInsensitiveDict, flatten

Expand Down
8 changes: 3 additions & 5 deletions loki/transformations/inline.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,10 @@
from loki.ir import (
Import, Comment, Assignment, VariableDeclaration, CallStatement,
Transformer, FindNodes, pragmas_attached, is_loki_pragma, Interface,
StatementFunction
)
from loki.expression import (
symbols as sym, FindVariables, FindInlineCalls, FindLiterals,
SubstituteExpressions, LokiIdentityMapper
StatementFunction, FindVariables, FindInlineCalls, FindLiterals,
SubstituteExpressions
)
from loki.expression import symbols as sym, LokiIdentityMapper
from loki.types import BasicType
from loki.tools import as_tuple, CaseInsensitiveDict
from loki.logging import warning, error
Expand Down
9 changes: 6 additions & 3 deletions loki/transformations/loop_blocking.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,13 @@
# nor does it submit to any jurisdiction.


from loki.ir import nodes as ir, Transformer
from loki.ir import (
nodes as ir, Transformer, FindVariables, SubstituteExpressions
)
from loki.subroutine import Subroutine
from loki.expression import symbols as sym, parse_expr, FindVariables, \
SubstituteExpressions, ceil_division, iteration_index
from loki.expression import (
symbols as sym, parse_expr, ceil_division, iteration_index
)

__all__ = ['split_loop', 'block_loop_arrays']

Expand Down
14 changes: 7 additions & 7 deletions loki/transformations/pool_allocator.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,16 @@
from loki.batch import Transformation
from loki.analyse import dataflow_analysis_attached
from loki.expression import (
FindVariables, FindInlineCalls, Quotient, IntLiteral,
LogicLiteral, Variable, Array, Sum, Literal, Product, InlineCall,
Comparison, RangeIndex, Cast, ProcedureSymbol, LogicalNot,
simplify, SubstituteExpressions, is_dimension_constant,
Quotient, IntLiteral, LogicLiteral, Variable, Array, Sum, Literal,
Product, InlineCall, Comparison, RangeIndex, Cast,
ProcedureSymbol, LogicalNot, simplify, is_dimension_constant,
DetachScopesMapper
)
from loki.ir import (
FindNodes, Transformer, Intrinsic, Assignment, Conditional,
CallStatement, Import, Allocation, Deallocation, Loop, Pragma,
Interface, get_pragma_parameters
FindNodes, FindVariables, FindInlineCalls, Transformer, Intrinsic,
Assignment, Conditional, CallStatement, Import, Allocation,
Deallocation, Loop, Pragma, Interface, get_pragma_parameters,
SubstituteExpressions
)
from loki.logging import warning, debug
from loki.tools import as_tuple
Expand Down
2 changes: 1 addition & 1 deletion loki/transformations/raw_stack_allocator.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
)
from loki.expression.symbolic import is_dimension_constant, simplify
from loki.expression.mappers import DetachScopesMapper
from loki.expression.expr_visitors import FindVariables, SubstituteExpressions
from loki.ir.expr_visitors import FindVariables, SubstituteExpressions
from loki.ir.nodes import Assignment, CallStatement, Pragma
from loki.ir.find import FindNodes
from loki.ir.transformer import Transformer
Expand Down
Loading
Loading