diff --git a/pyopencl/tools.py b/pyopencl/tools.py
index e9a6665ca3747a117dd09b669074100f695e5a06..43a60224d349bb3f6ec960b8bc7db5d5b1d082af 100644
--- a/pyopencl/tools.py
+++ b/pyopencl/tools.py
@@ -235,10 +235,11 @@ def parse_c_arg(c_arg):
     elif tp in ["int", "signed int"]: dtype = np.int32
     elif tp in ["unsigned", "unsigned int"]: dtype = np.uint32
     elif tp in ["long", "long int"]: dtype = np.int64
-    elif tp in ["unsigned long", "unsigned long int"]:
+    elif tp in ["unsigned long", "unsigned long int", "long unsigned int"]:
         dtype = np.uint64
     elif tp in ["short", "short int"]: dtype = np.int16
-    elif tp in ["unsigned short", "unsigned short int"]: dtype = np.uint16
+    elif tp in ["unsigned short", "unsigned short int", "short unsigned int"]:
+        dtype = np.uint16
     elif tp in ["char", "signed char"]: dtype = np.int8
     elif tp in ["unsigned char"]: dtype = np.uint8
     elif tp in ["bool"]: dtype = np.bool