From c96a94619ff058ba81d798b6f4bfbe06cd273535 Mon Sep 17 00:00:00 2001 From: zy69guqi <richard.angersbach@fau.de> Date: Thu, 16 Jan 2025 13:33:12 +0100 Subject: [PATCH] Add C function selection for numeric limits functions --- src/pystencils/backend/platforms/generic_cpu.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/pystencils/backend/platforms/generic_cpu.py b/src/pystencils/backend/platforms/generic_cpu.py index affeb34d4..6e3c58e6f 100644 --- a/src/pystencils/backend/platforms/generic_cpu.py +++ b/src/pystencils/backend/platforms/generic_cpu.py @@ -3,8 +3,8 @@ from typing import Sequence from pystencils.backend.ast.expressions import PsCall -from ..functions import CFunction, PsMathFunction, MathFunctions -from ...types import PsIntegerType, PsIeeeFloatType +from ..functions import CFunction, PsMathFunction, MathFunctions, NumericLimitsFunctions +from ...types import PsIntegerType, PsIeeeFloatType, PsScalarType from .platform import Platform from ..exceptions import MaterializationError @@ -62,7 +62,10 @@ class GenericCpu(Platform): dtype = call.get_dtype() arg_types = (dtype,) * func.num_args - # TODO: numeric limits + if isinstance(dtype, PsScalarType) and func in (NumericLimitsFunctions.Min, NumericLimitsFunctions.Max): + cfunc = CFunction(f"{dtype.c_string()}_{func.function_name}".capitalize(), arg_types, dtype) + call.function = cfunc + return call if isinstance(dtype, PsIeeeFloatType) and dtype.width in (32, 64): cfunc: CFunction -- GitLab