diff --git a/src/pystencils/backend/kernelcreation/cpu_optimization.py b/src/pystencils/backend/kernelcreation/cpu_optimization.py index 21285a7fc9eb7a44e00dc03e7e8629071ab41f65..b0156c7e8ce0b9cac2c6f3be9f60bbeef41e1c51 100644 --- a/src/pystencils/backend/kernelcreation/cpu_optimization.py +++ b/src/pystencils/backend/kernelcreation/cpu_optimization.py @@ -3,7 +3,7 @@ from typing import cast from .context import KernelCreationContext from ..platforms import GenericCpu -from ..transformations import HoistLoopInvariantDeclarations +from ..transformations import CanonicalizeSymbols, HoistLoopInvariantDeclarations from ..ast.structural import PsBlock from ...config import CpuOptimConfig @@ -17,6 +17,9 @@ def optimize_cpu( ) -> PsBlock: """Carry out CPU-specific optimizations according to the given configuration.""" + canonicalize = CanonicalizeSymbols(ctx, True) + kernel_ast = cast(PsBlock, canonicalize(kernel_ast)) + hoist_invariants = HoistLoopInvariantDeclarations(ctx) kernel_ast = cast(PsBlock, hoist_invariants(kernel_ast)) diff --git a/src/pystencils/kernelcreation.py b/src/pystencils/kernelcreation.py index 4fa7f98cf700be7f2ae332de293a336833c22ee1..0f6941cf52ca1c3745b5af9a1f0478f269fc8e4a 100644 --- a/src/pystencils/kernelcreation.py +++ b/src/pystencils/kernelcreation.py @@ -26,7 +26,6 @@ from .backend.kernelcreation.iteration_space import ( from .backend.ast.analysis import collect_required_headers, collect_undefined_symbols from .backend.transformations import ( - CanonicalizeSymbols, EliminateConstants, EraseAnonymousStructTypes, SelectFunctions, @@ -99,9 +98,6 @@ def create_kernel( kernel_ast = platform.materialize_iteration_space(kernel_body, ispace) # Simplifying transformations - canonicalize = CanonicalizeSymbols(ctx, True) - kernel_ast = cast(PsBlock, canonicalize(kernel_ast)) - elim_constants = EliminateConstants(ctx, extract_constant_exprs=True) kernel_ast = cast(PsBlock, elim_constants(kernel_ast))