diff --git a/src/wrap_cl.hpp b/src/wrap_cl.hpp
index ad5b7ab80c167ccfadbe3e4d5c7673859528a7b1..7ffcc983d7bdf6e5d03871a4a02ee92b9922d5d5 100644
--- a/src/wrap_cl.hpp
+++ b/src/wrap_cl.hpp
@@ -4343,6 +4343,13 @@ namespace pyopencl
               sizeof(cl_mem), &m));
       }
 
+      template <typename T>
+      void set_arg_pod(cl_uint arg_index, T pod_value)
+      {
+        PYOPENCL_CALL_GUARDED(clSetKernelArg, (m_kernel, arg_index,
+              sizeof(T), &pod_value));
+      }
+
       void set_arg_mem(cl_uint arg_index, memory_object_holder &moh)
       {
         cl_mem m = moh.data();
diff --git a/src/wrap_cl_part_2.cpp b/src/wrap_cl_part_2.cpp
index e68c785128dda3da644a9dbd76c5feb06d7dd591..2c98671803dd4e76674fc270b2e466e75019e824 100644
--- a/src/wrap_cl_part_2.cpp
+++ b/src/wrap_cl_part_2.cpp
@@ -467,6 +467,13 @@ void pyopencl_expose_part_2(py::module &m)
 #endif
       .def("_set_arg_null", &cls::set_arg_null)
       .def("_set_arg_buf", &cls::set_arg_buf)
+      .def("_set_arg_mem", &cls::set_arg_mem)
+      .def("_set_arg_i32", &cls::set_arg_pod<int32_t>)
+      .def("_set_arg_i64", &cls::set_arg_pod<int64_t>)
+      .def("_set_arg_u32", &cls::set_arg_pod<uint32_t>)
+      .def("_set_arg_u64", &cls::set_arg_pod<uint64_t>)
+      .def("_set_arg_f32", &cls::set_arg_pod<float>)
+      .def("_set_arg_f64", &cls::set_arg_pod<double>)
 #if PYOPENCL_CL_VERSION >= 0x2000
       .def("_set_arg_svm", &cls::set_arg_svm)
 #endif