summaryrefslogtreecommitdiff
path: root/utests
diff options
context:
space:
mode:
authorPan Xiuli <xiuli.pan@intel.com>2016-06-16 05:55:24 +0800
committerYang Rong <rong.r.yang@intel.com>2016-07-15 18:25:06 +0800
commite606e2da5445e3103f5d106d0582d18a755e45a9 (patch)
treecd0e223bb72493ce16949ba68243476acb583e21 /utests
parent41020e3d184117ba4f81a49d07c7e0c3bbdeddc8 (diff)
downloadbeignet-e606e2da5445e3103f5d106d0582d18a755e45a9.tar.gz
Utest: Add check for cl_intel_subgroups extension tests
These tests can only run with cl_intel_subgroups extension, add check before runing the tests. Also refine the call of the extension API with function pointer. V2: Use clGetExtensionFunctionAddress to get extension API function Signed-off-by: Pan Xiuli <xiuli.pan@intel.com> Reviewed-by: Yang Rong <rong.r.yang@intel.com>
Diffstat (limited to 'utests')
-rw-r--r--utests/builtin_max_sub_group_size.cpp4
-rw-r--r--utests/builtin_num_sub_groups.cpp4
-rw-r--r--utests/builtin_sub_group_id.cpp4
-rw-r--r--utests/builtin_sub_group_size.cpp4
-rw-r--r--utests/compiler_get_max_sub_group_size.cpp2
-rw-r--r--utests/compiler_get_sub_group_local_id.cpp2
-rw-r--r--utests/compiler_sub_group_shuffle.cpp2
-rw-r--r--utests/compiler_subgroup_broadcast.cpp8
-rw-r--r--utests/compiler_subgroup_buffer_block_read.cpp10
-rw-r--r--utests/compiler_subgroup_buffer_block_write.cpp10
-rw-r--r--utests/compiler_subgroup_image_block_read.cpp10
-rw-r--r--utests/compiler_subgroup_image_block_write.cpp10
-rw-r--r--utests/compiler_subgroup_reduce.cpp36
-rw-r--r--utests/compiler_subgroup_scan_exclusive.cpp32
-rw-r--r--utests/compiler_subgroup_scan_inclusive.cpp32
-rw-r--r--utests/utest_helper.cpp22
-rw-r--r--utests/utest_helper.hpp10
17 files changed, 189 insertions, 13 deletions
diff --git a/utests/builtin_max_sub_group_size.cpp b/utests/builtin_max_sub_group_size.cpp
index bb1423b0..310d880b 100644
--- a/utests/builtin_max_sub_group_size.cpp
+++ b/utests/builtin_max_sub_group_size.cpp
@@ -13,6 +13,8 @@ Now define local and global size as following:
#include "utest_helper.hpp"
static void builtin_max_sub_group_size(void)
{
+ if(!cl_check_subgroups())
+ return;
// Setup kernel and buffers
size_t dim, i,local_sz = 1,buf_len = 1;
@@ -40,7 +42,7 @@ static void builtin_max_sub_group_size(void)
locals[i - 1] = 0;
}
- OCL_CALL(clGetKernelSubGroupInfoKHR,kernel,device,CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR,sizeof(size_t)*dim,locals,sizeof(size_t),&sub_sz,NULL);
+ OCL_CALL(utestclGetKernelSubGroupInfoKHR,kernel,device,CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR,sizeof(size_t)*dim,locals,sizeof(size_t),&sub_sz,NULL);
// Run the kernel
OCL_NDRANGE( dim );
clFinish(queue);
diff --git a/utests/builtin_num_sub_groups.cpp b/utests/builtin_num_sub_groups.cpp
index 78acb135..dcd691a8 100644
--- a/utests/builtin_num_sub_groups.cpp
+++ b/utests/builtin_num_sub_groups.cpp
@@ -13,6 +13,8 @@ Now define local and global size as following:
#include "utest_helper.hpp"
static void builtin_num_sub_groups(void)
{
+ if(!cl_check_subgroups())
+ return;
// Setup kernel and buffers
size_t dim, i,local_sz = 1,buf_len = 1;
@@ -40,7 +42,7 @@ static void builtin_num_sub_groups(void)
locals[i - 1] = 0;
}
- OCL_CALL(clGetKernelSubGroupInfoKHR,kernel,device,CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHR ,sizeof(size_t)*dim,locals,sizeof(size_t),&num_sub,NULL);
+ OCL_CALL(utestclGetKernelSubGroupInfoKHR,kernel,device,CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHR ,sizeof(size_t)*dim,locals,sizeof(size_t),&num_sub,NULL);
// Run the kernel
OCL_NDRANGE( dim );
clFinish(queue);
diff --git a/utests/builtin_sub_group_id.cpp b/utests/builtin_sub_group_id.cpp
index e81d173a..89064bd1 100644
--- a/utests/builtin_sub_group_id.cpp
+++ b/utests/builtin_sub_group_id.cpp
@@ -13,6 +13,8 @@ Now define local and global size as following:
#include "utest_helper.hpp"
static void builtin_sub_group_id(void)
{
+ if(!cl_check_subgroups())
+ return;
// Setup kernel and buffers
size_t dim, i,local_sz = 1,buf_len = 1;
@@ -40,7 +42,7 @@ static void builtin_sub_group_id(void)
locals[i - 1] = 0;
}
- OCL_CALL(clGetKernelSubGroupInfoKHR,kernel,device,CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR,sizeof(size_t)*dim,locals,sizeof(size_t),&max_sub_sz,NULL);
+ OCL_CALL(utestclGetKernelSubGroupInfoKHR,kernel,device,CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR,sizeof(size_t)*dim,locals,sizeof(size_t),&max_sub_sz,NULL);
// Run the kernel
OCL_NDRANGE( dim );
clFinish(queue);
diff --git a/utests/builtin_sub_group_size.cpp b/utests/builtin_sub_group_size.cpp
index 1dc24edb..7f7c3e46 100644
--- a/utests/builtin_sub_group_size.cpp
+++ b/utests/builtin_sub_group_size.cpp
@@ -13,6 +13,8 @@ Now define local and global size as following:
#include "utest_helper.hpp"
static void builtin_sub_group_size(void)
{
+ if(!cl_check_subgroups())
+ return;
// Setup kernel and buffers
size_t dim, i,local_sz = 1,buf_len = 1;
@@ -40,7 +42,7 @@ static void builtin_sub_group_size(void)
locals[i - 1] = 0;
}
- OCL_CALL(clGetKernelSubGroupInfoKHR,kernel,device,CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR,sizeof(size_t)*dim,locals,sizeof(size_t),&max_sub_sz,NULL);
+ OCL_CALL(utestclGetKernelSubGroupInfoKHR,kernel,device,CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR,sizeof(size_t)*dim,locals,sizeof(size_t),&max_sub_sz,NULL);
// Run the kernel
OCL_NDRANGE( dim );
clFinish(queue);
diff --git a/utests/compiler_get_max_sub_group_size.cpp b/utests/compiler_get_max_sub_group_size.cpp
index 1a4e074b..6f56b33d 100644
--- a/utests/compiler_get_max_sub_group_size.cpp
+++ b/utests/compiler_get_max_sub_group_size.cpp
@@ -2,6 +2,8 @@
void compiler_get_max_sub_group_size(void)
{
+ if(!cl_check_subgroups())
+ return;
const size_t n = 256;
// Setup kernel and buffers
diff --git a/utests/compiler_get_sub_group_local_id.cpp b/utests/compiler_get_sub_group_local_id.cpp
index 2df4e9bd..84fbce00 100644
--- a/utests/compiler_get_sub_group_local_id.cpp
+++ b/utests/compiler_get_sub_group_local_id.cpp
@@ -2,6 +2,8 @@
void compiler_get_sub_group_local_id(void)
{
+ if(!cl_check_subgroups())
+ return;
const size_t n = 256;
// Setup kernel and buffers
diff --git a/utests/compiler_sub_group_shuffle.cpp b/utests/compiler_sub_group_shuffle.cpp
index 4ba8b998..f33e9de5 100644
--- a/utests/compiler_sub_group_shuffle.cpp
+++ b/utests/compiler_sub_group_shuffle.cpp
@@ -2,6 +2,8 @@
void compiler_sub_group_shuffle(void)
{
+ if(!cl_check_subgroups())
+ return;
const size_t n = 32;
const int32_t buf_size = 4 * n + 1;
diff --git a/utests/compiler_subgroup_broadcast.cpp b/utests/compiler_subgroup_broadcast.cpp
index f0294835..28351616 100644
--- a/utests/compiler_subgroup_broadcast.cpp
+++ b/utests/compiler_subgroup_broadcast.cpp
@@ -101,7 +101,7 @@ static void subgroup_generic(T* input,
globals[0] = WG_GLOBAL_SIZE;
locals[0] = WG_LOCAL_SIZE;
size_t SIMD_SIZE = 0;
- OCL_CALL(clGetKernelSubGroupInfoKHR,kernel,device,CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR,sizeof(size_t)*1,locals,sizeof(size_t),&SIMD_SIZE,NULL);
+ OCL_CALL(utestclGetKernelSubGroupInfoKHR,kernel,device,CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR,sizeof(size_t)*1,locals,sizeof(size_t),&SIMD_SIZE,NULL);
cl_uint SIMD_ID = 10;
/* input and expected data */
@@ -154,6 +154,8 @@ static void subgroup_generic(T* input,
*/
void compiler_subgroup_broadcast_imm_int(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_int *input = NULL;
cl_int *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_broadcast",
@@ -163,6 +165,8 @@ void compiler_subgroup_broadcast_imm_int(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_broadcast_imm_int);
void compiler_subgroup_broadcast_int(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_int *input = NULL;
cl_int *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_broadcast",
@@ -172,6 +176,8 @@ void compiler_subgroup_broadcast_int(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_broadcast_int);
void compiler_subgroup_broadcast_long(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_int *input = NULL;
cl_int *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_broadcast",
diff --git a/utests/compiler_subgroup_buffer_block_read.cpp b/utests/compiler_subgroup_buffer_block_read.cpp
index 334ec76a..9707f195 100644
--- a/utests/compiler_subgroup_buffer_block_read.cpp
+++ b/utests/compiler_subgroup_buffer_block_read.cpp
@@ -104,7 +104,7 @@ static void subgroup_generic(T* input,
globals[0] = WG_GLOBAL_SIZE;
locals[0] = WG_LOCAL_SIZE;
size_t SIMD_SIZE = 0;
- OCL_CALL(clGetKernelSubGroupInfoKHR,kernel,device,CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR,sizeof(size_t)*1,locals,sizeof(size_t),&SIMD_SIZE,NULL);
+ OCL_CALL(utestclGetKernelSubGroupInfoKHR,kernel,device,CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR,sizeof(size_t)*1,locals,sizeof(size_t),&SIMD_SIZE,NULL);
size_t buf_sz = VEC_SIZE * WG_GLOBAL_SIZE;
/* input and expected data */
@@ -158,6 +158,8 @@ static void subgroup_generic(T* input,
*/
void compiler_subgroup_buffer_block_read1(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_buffer_block_read",
@@ -167,6 +169,8 @@ void compiler_subgroup_buffer_block_read1(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_buffer_block_read1);
void compiler_subgroup_buffer_block_read2(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_buffer_block_read",
@@ -176,6 +180,8 @@ void compiler_subgroup_buffer_block_read2(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_buffer_block_read2);
void compiler_subgroup_buffer_block_read4(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_buffer_block_read",
@@ -185,6 +191,8 @@ void compiler_subgroup_buffer_block_read4(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_buffer_block_read4);
void compiler_subgroup_buffer_block_read8(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_buffer_block_read",
diff --git a/utests/compiler_subgroup_buffer_block_write.cpp b/utests/compiler_subgroup_buffer_block_write.cpp
index fb50a941..6b257c5f 100644
--- a/utests/compiler_subgroup_buffer_block_write.cpp
+++ b/utests/compiler_subgroup_buffer_block_write.cpp
@@ -104,7 +104,7 @@ static void subgroup_generic(T* input,
globals[0] = WG_GLOBAL_SIZE;
locals[0] = WG_LOCAL_SIZE;
size_t SIMD_SIZE = 0;
- OCL_CALL(clGetKernelSubGroupInfoKHR,kernel,device,CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR,sizeof(size_t)*1,locals,sizeof(size_t),&SIMD_SIZE,NULL);
+ OCL_CALL(utestclGetKernelSubGroupInfoKHR,kernel,device,CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR,sizeof(size_t)*1,locals,sizeof(size_t),&SIMD_SIZE,NULL);
size_t buf_sz = VEC_SIZE * WG_GLOBAL_SIZE;
/* input and expected data */
@@ -158,6 +158,8 @@ static void subgroup_generic(T* input,
*/
void compiler_subgroup_buffer_block_write1(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_buffer_block_write",
@@ -167,6 +169,8 @@ void compiler_subgroup_buffer_block_write1(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_buffer_block_write1);
void compiler_subgroup_buffer_block_write2(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_buffer_block_write",
@@ -176,6 +180,8 @@ void compiler_subgroup_buffer_block_write2(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_buffer_block_write2);
void compiler_subgroup_buffer_block_write4(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_buffer_block_write",
@@ -185,6 +191,8 @@ void compiler_subgroup_buffer_block_write4(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_buffer_block_write4);
void compiler_subgroup_buffer_block_write8(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_buffer_block_write",
diff --git a/utests/compiler_subgroup_image_block_read.cpp b/utests/compiler_subgroup_image_block_read.cpp
index daccaa59..02c8f07d 100644
--- a/utests/compiler_subgroup_image_block_read.cpp
+++ b/utests/compiler_subgroup_image_block_read.cpp
@@ -96,7 +96,7 @@ static void subgroup_generic(T* input,
globals[0] = WG_GLOBAL_SIZE;
locals[0] = WG_LOCAL_SIZE;
size_t SIMD_SIZE = 0;
- OCL_CALL(clGetKernelSubGroupInfoKHR,kernel,device,CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR,sizeof(size_t)*1,locals,sizeof(size_t),&SIMD_SIZE,NULL);
+ OCL_CALL(utestclGetKernelSubGroupInfoKHR,kernel,device,CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR,sizeof(size_t)*1,locals,sizeof(size_t),&SIMD_SIZE,NULL);
size_t buf_sz = VEC_SIZE * WG_GLOBAL_SIZE;
/* input and expected data */
@@ -153,6 +153,8 @@ static void subgroup_generic(T* input,
*/
void compiler_subgroup_image_block_read1(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_image_block_read",
@@ -162,6 +164,8 @@ void compiler_subgroup_image_block_read1(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_image_block_read1);
void compiler_subgroup_image_block_read2(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_image_block_read",
@@ -171,6 +175,8 @@ void compiler_subgroup_image_block_read2(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_image_block_read2);
void compiler_subgroup_image_block_read4(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_image_block_read",
@@ -180,6 +186,8 @@ void compiler_subgroup_image_block_read4(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_image_block_read4);
void compiler_subgroup_image_block_read8(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_image_block_read",
diff --git a/utests/compiler_subgroup_image_block_write.cpp b/utests/compiler_subgroup_image_block_write.cpp
index 9ef21270..2b85167c 100644
--- a/utests/compiler_subgroup_image_block_write.cpp
+++ b/utests/compiler_subgroup_image_block_write.cpp
@@ -96,7 +96,7 @@ static void subgroup_generic(T* input,
globals[0] = WG_GLOBAL_SIZE;
locals[0] = WG_LOCAL_SIZE;
size_t SIMD_SIZE = 0;
- OCL_CALL(clGetKernelSubGroupInfoKHR,kernel,device,CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR,sizeof(size_t)*1,locals,sizeof(size_t),&SIMD_SIZE,NULL);
+ OCL_CALL(utestclGetKernelSubGroupInfoKHR,kernel,device,CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR,sizeof(size_t)*1,locals,sizeof(size_t),&SIMD_SIZE,NULL);
size_t buf_sz = VEC_SIZE * WG_GLOBAL_SIZE;
/* input and expected data */
@@ -157,6 +157,8 @@ static void subgroup_generic(T* input,
*/
void compiler_subgroup_image_block_write1(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_image_block_write",
@@ -166,6 +168,8 @@ void compiler_subgroup_image_block_write1(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_image_block_write1);
void compiler_subgroup_image_block_write2(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_image_block_write",
@@ -175,6 +179,8 @@ void compiler_subgroup_image_block_write2(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_image_block_write2);
void compiler_subgroup_image_block_write4(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_image_block_write",
@@ -184,6 +190,8 @@ void compiler_subgroup_image_block_write4(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_image_block_write4);
void compiler_subgroup_image_block_write8(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_image_block_write",
diff --git a/utests/compiler_subgroup_reduce.cpp b/utests/compiler_subgroup_reduce.cpp
index 1cd8fe4c..3c3df06a 100644
--- a/utests/compiler_subgroup_reduce.cpp
+++ b/utests/compiler_subgroup_reduce.cpp
@@ -158,7 +158,7 @@ static void subgroup_generic(WG_FUNCTION wg_func,
globals[0] = WG_GLOBAL_SIZE;
locals[0] = WG_LOCAL_SIZE;
size_t SIMD_SIZE = 0;
- OCL_CALL(clGetKernelSubGroupInfoKHR,kernel,device,CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR,sizeof(size_t)*1,locals,sizeof(size_t),&SIMD_SIZE,NULL);
+ OCL_CALL(utestclGetKernelSubGroupInfoKHR,kernel,device,CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR,sizeof(size_t)*1,locals,sizeof(size_t),&SIMD_SIZE,NULL);
/* input and expected data */
generate_data(wg_func, input, expected, SIMD_SIZE);
@@ -227,6 +227,8 @@ static void subgroup_generic(WG_FUNCTION wg_func,
*/
void compiler_subgroup_any(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_int *input = NULL;
cl_int *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_reduce",
@@ -236,6 +238,8 @@ void compiler_subgroup_any(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_any);
void compiler_subgroup_all(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_int *input = NULL;
cl_int *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_reduce",
@@ -248,6 +252,8 @@ MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_all);
*/
void compiler_subgroup_reduce_add_int(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_int *input = NULL;
cl_int *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_reduce",
@@ -257,6 +263,8 @@ void compiler_subgroup_reduce_add_int(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_reduce_add_int);
void compiler_subgroup_reduce_add_uint(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_reduce",
@@ -266,6 +274,8 @@ void compiler_subgroup_reduce_add_uint(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_reduce_add_uint);
void compiler_subgroup_reduce_add_long(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_long *input = NULL;
cl_long *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_reduce",
@@ -275,6 +285,8 @@ void compiler_subgroup_reduce_add_long(void)
MAKE_UTEST_FROM_FUNCTION_WITH_ISSUE(compiler_subgroup_reduce_add_long);
void compiler_subgroup_reduce_add_ulong(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_ulong *input = NULL;
cl_ulong *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_reduce",
@@ -284,6 +296,8 @@ void compiler_subgroup_reduce_add_ulong(void)
MAKE_UTEST_FROM_FUNCTION_WITH_ISSUE(compiler_subgroup_reduce_add_ulong);
void compiler_subgroup_reduce_add_float(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_float *input = NULL;
cl_float *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_reduce",
@@ -297,6 +311,8 @@ MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_reduce_add_float);
*/
void compiler_subgroup_reduce_max_int(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_int *input = NULL;
cl_int *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_reduce",
@@ -306,6 +322,8 @@ void compiler_subgroup_reduce_max_int(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_reduce_max_int);
void compiler_subgroup_reduce_max_uint(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_reduce",
@@ -315,6 +333,8 @@ void compiler_subgroup_reduce_max_uint(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_reduce_max_uint);
void compiler_subgroup_reduce_max_long(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_long *input = NULL;
cl_long *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_reduce",
@@ -324,6 +344,8 @@ void compiler_subgroup_reduce_max_long(void)
MAKE_UTEST_FROM_FUNCTION_WITH_ISSUE(compiler_subgroup_reduce_max_long);
void compiler_subgroup_reduce_max_ulong(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_ulong *input = NULL;
cl_ulong *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_reduce",
@@ -333,6 +355,8 @@ void compiler_subgroup_reduce_max_ulong(void)
MAKE_UTEST_FROM_FUNCTION_WITH_ISSUE(compiler_subgroup_reduce_max_ulong);
void compiler_subgroup_reduce_max_float(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_float *input = NULL;
cl_float *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_reduce",
@@ -346,6 +370,8 @@ MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_reduce_max_float);
*/
void compiler_subgroup_reduce_min_int(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_int *input = NULL;
cl_int *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_reduce",
@@ -355,6 +381,8 @@ void compiler_subgroup_reduce_min_int(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_reduce_min_int);
void compiler_subgroup_reduce_min_uint(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_reduce",
@@ -364,6 +392,8 @@ void compiler_subgroup_reduce_min_uint(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_reduce_min_uint);
void compiler_subgroup_reduce_min_long(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_long *input = NULL;
cl_long *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_reduce",
@@ -373,6 +403,8 @@ void compiler_subgroup_reduce_min_long(void)
MAKE_UTEST_FROM_FUNCTION_WITH_ISSUE(compiler_subgroup_reduce_min_long);
void compiler_subgroup_reduce_min_ulong(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_ulong *input = NULL;
cl_ulong *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_reduce",
@@ -382,6 +414,8 @@ void compiler_subgroup_reduce_min_ulong(void)
MAKE_UTEST_FROM_FUNCTION_WITH_ISSUE(compiler_subgroup_reduce_min_ulong);
void compiler_subgroup_reduce_min_float(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_float *input = NULL;
cl_float *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_reduce",
diff --git a/utests/compiler_subgroup_scan_exclusive.cpp b/utests/compiler_subgroup_scan_exclusive.cpp
index 758179e5..1a21b595 100644
--- a/utests/compiler_subgroup_scan_exclusive.cpp
+++ b/utests/compiler_subgroup_scan_exclusive.cpp
@@ -140,7 +140,7 @@ static void subgroup_generic(WG_FUNCTION wg_func,
globals[0] = WG_GLOBAL_SIZE;
locals[0] = WG_LOCAL_SIZE;
size_t SIMD_SIZE = 0;
- OCL_CALL(clGetKernelSubGroupInfoKHR,kernel,device,CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR,sizeof(size_t)*1,locals,sizeof(size_t),&SIMD_SIZE,NULL);
+ OCL_CALL(utestclGetKernelSubGroupInfoKHR,kernel,device,CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR,sizeof(size_t)*1,locals,sizeof(size_t),&SIMD_SIZE,NULL);
/* input and expected data */
generate_data(wg_func, input, expected, SIMD_SIZE);
@@ -208,6 +208,8 @@ static void subgroup_generic(WG_FUNCTION wg_func,
*/
void compiler_subgroup_scan_exclusive_add_int(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_int *input = NULL;
cl_int *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_exclusive",
@@ -217,6 +219,8 @@ void compiler_subgroup_scan_exclusive_add_int(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_scan_exclusive_add_int);
void compiler_subgroup_scan_exclusive_add_uint(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_exclusive",
@@ -226,6 +230,8 @@ void compiler_subgroup_scan_exclusive_add_uint(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_scan_exclusive_add_uint);
void compiler_subgroup_scan_exclusive_add_long(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_long *input = NULL;
cl_long *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_exclusive",
@@ -235,6 +241,8 @@ void compiler_subgroup_scan_exclusive_add_long(void)
MAKE_UTEST_FROM_FUNCTION_WITH_ISSUE(compiler_subgroup_scan_exclusive_add_long);
void compiler_subgroup_scan_exclusive_add_ulong(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_ulong *input = NULL;
cl_ulong *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_exclusive",
@@ -244,6 +252,8 @@ void compiler_subgroup_scan_exclusive_add_ulong(void)
MAKE_UTEST_FROM_FUNCTION_WITH_ISSUE(compiler_subgroup_scan_exclusive_add_ulong);
void compiler_subgroup_scan_exclusive_add_float(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_float *input = NULL;
cl_float *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_exclusive",
@@ -257,6 +267,8 @@ MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_scan_exclusive_add_float);
*/
void compiler_subgroup_scan_exclusive_max_int(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_int *input = NULL;
cl_int *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_exclusive",
@@ -266,6 +278,8 @@ void compiler_subgroup_scan_exclusive_max_int(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_scan_exclusive_max_int);
void compiler_subgroup_scan_exclusive_max_uint(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_exclusive",
@@ -275,6 +289,8 @@ void compiler_subgroup_scan_exclusive_max_uint(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_scan_exclusive_max_uint);
void compiler_subgroup_scan_exclusive_max_long(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_long *input = NULL;
cl_long *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_exclusive",
@@ -284,6 +300,8 @@ void compiler_subgroup_scan_exclusive_max_long(void)
MAKE_UTEST_FROM_FUNCTION_WITH_ISSUE(compiler_subgroup_scan_exclusive_max_long);
void compiler_subgroup_scan_exclusive_max_ulong(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_ulong *input = NULL;
cl_ulong *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_exclusive",
@@ -293,6 +311,8 @@ void compiler_subgroup_scan_exclusive_max_ulong(void)
MAKE_UTEST_FROM_FUNCTION_WITH_ISSUE(compiler_subgroup_scan_exclusive_max_ulong);
void compiler_subgroup_scan_exclusive_max_float(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_float *input = NULL;
cl_float *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_exclusive",
@@ -306,6 +326,8 @@ MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_scan_exclusive_max_float);
*/
void compiler_subgroup_scan_exclusive_min_int(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_int *input = NULL;
cl_int *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_exclusive",
@@ -315,6 +337,8 @@ void compiler_subgroup_scan_exclusive_min_int(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_scan_exclusive_min_int);
void compiler_subgroup_scan_exclusive_min_uint(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_exclusive",
@@ -324,6 +348,8 @@ void compiler_subgroup_scan_exclusive_min_uint(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_scan_exclusive_min_uint);
void compiler_subgroup_scan_exclusive_min_long(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_long *input = NULL;
cl_long *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_exclusive",
@@ -333,6 +359,8 @@ void compiler_subgroup_scan_exclusive_min_long(void)
MAKE_UTEST_FROM_FUNCTION_WITH_ISSUE(compiler_subgroup_scan_exclusive_min_long);
void compiler_subgroup_scan_exclusive_min_ulong(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_ulong *input = NULL;
cl_ulong *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_exclusive",
@@ -342,6 +370,8 @@ void compiler_subgroup_scan_exclusive_min_ulong(void)
MAKE_UTEST_FROM_FUNCTION_WITH_ISSUE(compiler_subgroup_scan_exclusive_min_ulong);
void compiler_subgroup_scan_exclusive_min_float(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_float *input = NULL;
cl_float *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_exclusive",
diff --git a/utests/compiler_subgroup_scan_inclusive.cpp b/utests/compiler_subgroup_scan_inclusive.cpp
index 013d5996..fa328552 100644
--- a/utests/compiler_subgroup_scan_inclusive.cpp
+++ b/utests/compiler_subgroup_scan_inclusive.cpp
@@ -130,7 +130,7 @@ static void subgroup_generic(WG_FUNCTION wg_func,
globals[0] = WG_GLOBAL_SIZE;
locals[0] = WG_LOCAL_SIZE;
size_t SIMD_SIZE = 0;
- OCL_CALL(clGetKernelSubGroupInfoKHR,kernel,device,CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR,sizeof(size_t)*1,locals,sizeof(size_t),&SIMD_SIZE,NULL);
+ OCL_CALL(utestclGetKernelSubGroupInfoKHR,kernel,device,CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR,sizeof(size_t)*1,locals,sizeof(size_t),&SIMD_SIZE,NULL);
/* input and expected data */
generate_data(wg_func, input, expected, SIMD_SIZE);
@@ -198,6 +198,8 @@ static void subgroup_generic(WG_FUNCTION wg_func,
*/
void compiler_subgroup_scan_inclusive_add_int(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_int *input = NULL;
cl_int *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_inclusive",
@@ -207,6 +209,8 @@ void compiler_subgroup_scan_inclusive_add_int(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_scan_inclusive_add_int);
void compiler_subgroup_scan_inclusive_add_uint(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_inclusive",
@@ -216,6 +220,8 @@ void compiler_subgroup_scan_inclusive_add_uint(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_scan_inclusive_add_uint);
void compiler_subgroup_scan_inclusive_add_long(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_long *input = NULL;
cl_long *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_inclusive",
@@ -225,6 +231,8 @@ void compiler_subgroup_scan_inclusive_add_long(void)
MAKE_UTEST_FROM_FUNCTION_WITH_ISSUE(compiler_subgroup_scan_inclusive_add_long);
void compiler_subgroup_scan_inclusive_add_ulong(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_ulong *input = NULL;
cl_ulong *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_inclusive",
@@ -234,6 +242,8 @@ void compiler_subgroup_scan_inclusive_add_ulong(void)
MAKE_UTEST_FROM_FUNCTION_WITH_ISSUE(compiler_subgroup_scan_inclusive_add_ulong);
void compiler_subgroup_scan_inclusive_add_float(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_float *input = NULL;
cl_float *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_inclusive",
@@ -247,6 +257,8 @@ MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_scan_inclusive_add_float);
*/
void compiler_subgroup_scan_inclusive_max_int(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_int *input = NULL;
cl_int *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_inclusive",
@@ -256,6 +268,8 @@ void compiler_subgroup_scan_inclusive_max_int(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_scan_inclusive_max_int);
void compiler_subgroup_scan_inclusive_max_uint(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_inclusive",
@@ -265,6 +279,8 @@ void compiler_subgroup_scan_inclusive_max_uint(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_scan_inclusive_max_uint);
void compiler_subgroup_scan_inclusive_max_long(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_long *input = NULL;
cl_long *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_inclusive",
@@ -274,6 +290,8 @@ void compiler_subgroup_scan_inclusive_max_long(void)
MAKE_UTEST_FROM_FUNCTION_WITH_ISSUE(compiler_subgroup_scan_inclusive_max_long);
void compiler_subgroup_scan_inclusive_max_ulong(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_ulong *input = NULL;
cl_ulong *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_inclusive",
@@ -283,6 +301,8 @@ void compiler_subgroup_scan_inclusive_max_ulong(void)
MAKE_UTEST_FROM_FUNCTION_WITH_ISSUE(compiler_subgroup_scan_inclusive_max_ulong);
void compiler_subgroup_scan_inclusive_max_float(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_float *input = NULL;
cl_float *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_inclusive",
@@ -296,6 +316,8 @@ MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_scan_inclusive_max_float);
*/
void compiler_subgroup_scan_inclusive_min_int(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_int *input = NULL;
cl_int *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_inclusive",
@@ -305,6 +327,8 @@ void compiler_subgroup_scan_inclusive_min_int(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_scan_inclusive_min_int);
void compiler_subgroup_scan_inclusive_min_uint(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_uint *input = NULL;
cl_uint *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_inclusive",
@@ -314,6 +338,8 @@ void compiler_subgroup_scan_inclusive_min_uint(void)
MAKE_UTEST_FROM_FUNCTION(compiler_subgroup_scan_inclusive_min_uint);
void compiler_subgroup_scan_inclusive_min_long(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_long *input = NULL;
cl_long *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_inclusive",
@@ -323,6 +349,8 @@ void compiler_subgroup_scan_inclusive_min_long(void)
MAKE_UTEST_FROM_FUNCTION_WITH_ISSUE(compiler_subgroup_scan_inclusive_min_long);
void compiler_subgroup_scan_inclusive_min_ulong(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_ulong *input = NULL;
cl_ulong *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_inclusive",
@@ -332,6 +360,8 @@ void compiler_subgroup_scan_inclusive_min_ulong(void)
MAKE_UTEST_FROM_FUNCTION_WITH_ISSUE(compiler_subgroup_scan_inclusive_min_ulong);
void compiler_subgroup_scan_inclusive_min_float(void)
{
+ if(!cl_check_subgroups())
+ return;
cl_float *input = NULL;
cl_float *expected = NULL;
OCL_CREATE_KERNEL_FROM_FILE("compiler_subgroup_scan_inclusive",
diff --git a/utests/utest_helper.cpp b/utests/utest_helper.cpp
index 76993d5e..0ecbea31 100644
--- a/utests/utest_helper.cpp
+++ b/utests/utest_helper.cpp
@@ -54,6 +54,7 @@ __thread void *buf_data[MAX_BUFFER_N] = {};
__thread size_t globals[3] = {};
__thread size_t locals[3] = {};
float ULPSIZE_FAST_MATH = 10000.;
+__attribute__ ((visibility ("internal"))) clGetKernelSubGroupInfoKHR_cb* utestclGetKernelSubGroupInfoKHR = NULL;
#ifdef HAS_EGL
Display *xDisplay;
@@ -874,3 +875,24 @@ int cl_check_beignet(void)
free(device_version_str);
return 1;
}
+
+int cl_check_subgroups(void)
+{
+ std::string extStr;
+ size_t param_value_size;
+ OCL_CALL(clGetDeviceInfo, device, CL_DEVICE_EXTENSIONS, 0, 0, &param_value_size);
+ std::vector<char> param_value(param_value_size);
+ OCL_CALL(clGetDeviceInfo, device, CL_DEVICE_EXTENSIONS, param_value_size,
+ param_value.empty() ? NULL : &param_value.front(), &param_value_size);
+ if (!param_value.empty())
+ extStr = std::string(&param_value.front(), param_value_size-1);
+
+ if (std::strstr(extStr.c_str(), "cl_intel_subgroups") == NULL) {
+ printf("No cl_intel_subgroups, Skip!");
+ return 0;
+ }
+ if(utestclGetKernelSubGroupInfoKHR == NULL)
+ utestclGetKernelSubGroupInfoKHR = (clGetKernelSubGroupInfoKHR_cb*) clGetExtensionFunctionAddress("clGetKernelSubGroupInfoKHR");
+ return 1;
+}
+
diff --git a/utests/utest_helper.hpp b/utests/utest_helper.hpp
index a89f197f..7d050569 100644
--- a/utests/utest_helper.hpp
+++ b/utests/utest_helper.hpp
@@ -287,5 +287,13 @@ extern int cl_check_double(void);
/* Check is beignet device. */
extern int cl_check_beignet(void);
-#endif /* __UTEST_HELPER_HPP__ */
+/* Check is intel subgroups enabled. */
+extern int cl_check_subgroups(void);
+
+typedef cl_int(clGetKernelSubGroupInfoKHR_cb)(cl_kernel, cl_device_id,
+ cl_kernel_sub_group_info, size_t,
+ const void *, size_t, void *,
+ size_t *);
+extern clGetKernelSubGroupInfoKHR_cb* utestclGetKernelSubGroupInfoKHR;
+#endif /* __UTEST_HELPER_HPP__ */