From b5d6fcdb3150ea5f9df7edd030b6f9b360fe547f Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Mon, 14 Sep 2020 21:54:21 -0500
Subject: [PATCH] Add cl_kernel_subgroup_info (CL 2.1)

---
 doc/make_constants.py  |  9 +++++++++
 src/wrap_constants.cpp | 12 ++++++++++++
 2 files changed, 21 insertions(+)

diff --git a/doc/make_constants.py b/doc/make_constants.py
index 28eebe6c..c4919cd0 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 a5abb38a..1c93bdf0 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);
-- 
GitLab