diff --git a/pyopencl/elementwise.py b/pyopencl/elementwise.py
index 5878b89cf9b557c2c65bb2b9e061b5cd29813f74..0ec202ff7bcb253ce5af97d265ce0a29fd19ed31 100644
--- a/pyopencl/elementwise.py
+++ b/pyopencl/elementwise.py
@@ -863,13 +863,12 @@ def get_unary_func_kernel(context, func_name, in_dtype, out_dtype=None):
     if out_dtype is None:
         out_dtype = in_dtype
 
-    return get_elwise_kernel(context,
-            "%(tp_out)s *z, %(tp_in)s *y" % {
-                "tp_in": dtype_to_ctype(in_dtype),
-                "tp_out": dtype_to_ctype(out_dtype),
-                },
-            "z[i] = %s(y[i])" % func_name,
-            name="%s_kernel" % func_name)
+    return get_elwise_kernel(context, [
+        VectorArg(out_dtype, "z", with_offset=True),
+        VectorArg(in_dtype, "y", with_offset=True),
+        ],
+        "z[i] = %s(y[i])" % func_name,
+        name="%s_kernel" % func_name)
 
 
 @context_dependent_memoize