1#include <clc/clc.h>
2
3uint __clc_amdgcn_get_num_groups_x(void) __asm("llvm.r600.read.ngroups.x");
4uint __clc_amdgcn_get_num_groups_y(void) __asm("llvm.r600.read.ngroups.y");
5uint __clc_amdgcn_get_num_groups_z(void) __asm("llvm.r600.read.ngroups.z");
6
7_CLC_DEF _CLC_OVERLOAD size_t get_num_groups(uint dim) {
8  switch (dim) {
9  case 0:
10    return __clc_amdgcn_get_num_groups_x();
11  case 1:
12    return __clc_amdgcn_get_num_groups_y();
13  case 2:
14    return __clc_amdgcn_get_num_groups_z();
15  default:
16    return 1;
17  }
18}
19