diff --git a/loopy/library/reduction.py b/loopy/library/reduction.py index 8e32e417038f669b7306eda664a4f4dd12255ce1..ac749f6eff8b7e12b2376e916066218f76e4ebd2 100644 --- a/loopy/library/reduction.py +++ b/loopy/library/reduction.py @@ -188,8 +188,15 @@ def get_le_neutral(dtype): elif dtype.numpy_dtype.itemsize == 8: # 64 bit integer return var("LONG_MAX") - else: - raise NotImplementedError("less") + elif dtype.numpy_dtype.kind == "u": + if dtype.numpy_dtype.itemsize == 4: + # 32 bit integer + return var("UINT_MAX") + elif dtype.numpy_dtype.itemsize == 8: + # 64 bit integer + return var("ULONG_MAX") + + raise NotImplementedError(f"neutral element for <= and {dtype}") def get_ge_neutral(dtype): @@ -211,8 +218,10 @@ def get_ge_neutral(dtype): elif dtype.numpy_dtype.itemsize == 8: # 64 bit integer return var("LONG_MIN") - else: - raise NotImplementedError("less") + elif dtype.numpy_dtype.kind == "u": + return 0 + + raise NotImplementedError(f"neutral element for >= and {dtype}") class MaxReductionOperation(ScalarReductionOperation):