diff --git a/pyopencl/elementwise.py b/pyopencl/elementwise.py
index 91e3774c89ad4945ffbdf5e44db61091167a4d1b..60cc88566db5f06f77971c58489b1d4be99a505d 100644
--- a/pyopencl/elementwise.py
+++ b/pyopencl/elementwise.py
@@ -245,6 +245,7 @@ class ElementwiseKernel:
 
         range_ = kwargs.pop("range", None)
         slice_ = kwargs.pop("slice", None)
+        capture_as = kwargs.pop("capture_as", None)
 
         use_range = range_ is not None or slice_ is not None
         kernel, arg_descrs = self.get_kernel(use_range)
@@ -310,6 +311,12 @@ class ElementwiseKernel:
             invocation_args.append(repr_vec.size)
             gs, ls = repr_vec.get_sizes(queue, max_wg_size)
 
+        if capture_as is not None:
+            kernel.set_args(*invocation_args)
+            kernel.capture_call(
+                    capture_as, queue,
+                    gs, ls, *invocation_args, wait_for=wait_for)
+
         kernel.set_args(*invocation_args)
         return cl.enqueue_nd_range_kernel(queue, kernel,
                 gs, ls, wait_for=wait_for)