aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libclc/amdgcn-amdhsa/lib/OVERRIDES1
-rw-r--r--libclc/amdgcn-amdhsa/lib/SOURCES1
-rw-r--r--libclc/amdgcn-amdhsa/lib/workitem/get_num_groups.cl12
3 files changed, 14 insertions, 0 deletions
diff --git a/libclc/amdgcn-amdhsa/lib/OVERRIDES b/libclc/amdgcn-amdhsa/lib/OVERRIDES
index e69de29..c9bd69b 100644
--- a/libclc/amdgcn-amdhsa/lib/OVERRIDES
+++ b/libclc/amdgcn-amdhsa/lib/OVERRIDES
@@ -0,0 +1 @@
+workitem/get_num_groups.ll
diff --git a/libclc/amdgcn-amdhsa/lib/SOURCES b/libclc/amdgcn-amdhsa/lib/SOURCES
index 257942c0..7b7ea4a 100644
--- a/libclc/amdgcn-amdhsa/lib/SOURCES
+++ b/libclc/amdgcn-amdhsa/lib/SOURCES
@@ -1,2 +1,3 @@
workitem/get_global_size.ll
workitem/get_local_size.ll
+workitem/get_num_groups.cl
diff --git a/libclc/amdgcn-amdhsa/lib/workitem/get_num_groups.cl b/libclc/amdgcn-amdhsa/lib/workitem/get_num_groups.cl
new file mode 100644
index 0000000..946b526
--- /dev/null
+++ b/libclc/amdgcn-amdhsa/lib/workitem/get_num_groups.cl
@@ -0,0 +1,12 @@
+
+#include <clc/clc.h>
+
+_CLC_DEF size_t get_num_groups(uint dim) {
+ size_t global_size = get_global_size(dim);
+ size_t local_size = get_local_size(dim);
+ size_t num_groups = global_size / local_size;
+ if (global_size % local_size != 0) {
+ num_groups++;
+ }
+ return num_groups;
+}