diff --git a/loopy/library/reduction.py b/loopy/library/reduction.py
index 4d92316bf62eea1f1645a731fd2556294cd3f175..d03ce86b6a800d9ee5d96d94caa9053fd8b1d458 100644
--- a/loopy/library/reduction.py
+++ b/loopy/library/reduction.py
@@ -59,13 +59,13 @@ class ReductionOperation(object):
     @staticmethod
     def parse_result_type(target, op_type):
         try:
-            return np.dtype(op_type)
+            return NumpyType(np.dtype(op_type))
         except TypeError:
             pass
 
         if op_type.startswith("vec_"):
             try:
-                return target.get_or_register_dtype(op_type[4:])
+                return NumpyType(target.get_or_register_dtype(op_type[4:]))
             except AttributeError:
                 pass