diff --git a/doc/make_constants.py b/doc/make_constants.py
index 28eebe6cb26a9c3ef562c25cb9fcc8613cd389d3..c4919cd033b8952aec2cc3418ee8a4aa6772201a 100644
--- a/doc/make_constants.py
+++ b/doc/make_constants.py
@@ -30,6 +30,7 @@ cl_11 = ("CL_1.1", "0.92")
 cl_12 = ("CL_1.2", "2011.2")
 cl_12_2015 = ("CL_1.2", "2015.2")
 cl_20 = ("CL_2.0", "2015.2")
+cl_21_late = ("CL_2.1", "2020.3")
 cl_21 = ("CL_2.1", "2016.2")
 cl_22 = ("CL_2.1", "2020.3")
 cl_30 = ("CL_3.0", "2020.3")
@@ -268,6 +269,14 @@ const_ext_lookup = {
             "GLOBAL_WORK_SIZE": cl_12,
             },
 
+        cl.kernel_sub_group_info: {
+            "MAX_SUB_GROUP_SIZE_FOR_NDRANGE": cl_21_late,
+            "SUB_GROUP_COUNT_FOR_NDRANGE": cl_21_late,
+            "LOCAL_SIZE_FOR_SUB_GROUP_COUNT": cl_21_late,
+            "MAX_NUM_SUB_GROUPS": cl_21_late,
+            "COMPILE_NUM_SUB_GROUPS": cl_21_late,
+            },
+
         cl.addressing_mode: {
             "MIRRORED_REPEAT": cl_11,
             },
diff --git a/src/wrap_constants.cpp b/src/wrap_constants.cpp
index a5abb38aa480c92a474af217ce81269377384bd9..1c93bdf04990d87c94f93c01199e172f56d903bb 100644
--- a/src/wrap_constants.cpp
+++ b/src/wrap_constants.cpp
@@ -75,6 +75,7 @@ namespace
   class kernel_arg_access_qualifier { };
   class kernel_arg_type_qualifier { };
   class kernel_work_group_info { };
+  class kernel_sub_group_info { };
   class event_info { };
   class command_type { };
   class command_execution_status { };
@@ -966,6 +967,17 @@ void pyopencl_expose_constants(py::module &m)
 #endif
   }
 
+  {
+    py::class_<kernel_sub_group_info> cls(m, "kernel_sub_group_info");
+#if PYOPENCL_CL_VERSION >= 0x2010
+    ADD_ATTR(KERNEL_, MAX_SUB_GROUP_SIZE_FOR_NDRANGE);
+    ADD_ATTR(KERNEL_, SUB_GROUP_COUNT_FOR_NDRANGE);
+    ADD_ATTR(KERNEL_, LOCAL_SIZE_FOR_SUB_GROUP_COUNT);
+    ADD_ATTR(KERNEL_, MAX_NUM_SUB_GROUPS);
+    ADD_ATTR(KERNEL_, COMPILE_NUM_SUB_GROUPS);
+#endif
+  }
+
   {
     py::class_<event_info> cls(m, "event_info");
     ADD_ATTR(EVENT_, COMMAND_QUEUE);