From 1e59801fcc70341abbadb80b82ca842762a426a3 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner <inform@tiker.net> Date: Mon, 17 Jun 2013 10:31:57 -0400 Subject: [PATCH] Add mangling for INFINITY and max/min. --- loopy/kernel/data.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/loopy/kernel/data.py b/loopy/kernel/data.py index 28e39e40c..6a4ac4038 100644 --- a/loopy/kernel/data.py +++ b/loopy/kernel/data.py @@ -462,7 +462,18 @@ def default_function_mangler(name, arg_dtypes): def opencl_function_mangler(name, arg_dtypes): - if name == "atan2" and len(arg_dtypes) == 2: + if name in ["max", "min"] and len(arg_dtypes) == 2: + dtype = np.find_common_type([], arg_dtypes) + + if dtype.kind == "c": + raise RuntimeError("min/max do not support complex numbers") + + if dtype.kind == "f": + name = "f" + name + + return dtype, name + + if name in "atan2" and len(arg_dtypes) == 2: return arg_dtypes[0], name if len(arg_dtypes) == 1: @@ -511,6 +522,8 @@ def opencl_symbol_mangler(name): return np.dtype(np.float32), name else: return np.dtype(np.float64), name + elif name == "INFINITY": + return np.dtype(np.float32), name else: return None -- GitLab