mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-19 06:09:01 +00:00
Rename test .c sources to .cpp where necessary (#604)
Remove hacks to force language from CMake files. Closes KhronosGroup/OpenCL-CTS#25
This commit is contained in:
734
test_conformance/select/util_select.cpp
Normal file
734
test_conformance/select/util_select.cpp
Normal file
@@ -0,0 +1,734 @@
|
||||
//
|
||||
// Copyright (c) 2017 The Khronos Group Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
#include "harness/compat.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include "test_select.h"
|
||||
|
||||
|
||||
//-----------------------------------------
|
||||
// Definitions and initializations
|
||||
//-----------------------------------------
|
||||
|
||||
|
||||
const char *type_name[kTypeCount] = {
|
||||
"uchar", "char",
|
||||
"ushort", "short",
|
||||
"uint", "int",
|
||||
"float", "ulong", "long", "double" };
|
||||
|
||||
const size_t type_size[kTypeCount] = {
|
||||
sizeof(cl_uchar), sizeof(cl_char),
|
||||
sizeof(cl_ushort), sizeof(cl_short),
|
||||
sizeof(cl_uint), sizeof(cl_int),
|
||||
sizeof(cl_float), sizeof(cl_ulong), sizeof(cl_long), sizeof( cl_double ) };
|
||||
|
||||
const Type ctype[kTypeCount][2] = {
|
||||
{ kuchar, kchar }, // uchar
|
||||
{ kuchar, kchar }, // char
|
||||
{ kushort, kshort}, // ushort
|
||||
{ kushort, kshort}, // short
|
||||
{ kuint, kint }, // uint
|
||||
{ kuint, kint }, // int
|
||||
{ kuint, kint }, // float
|
||||
{ kulong, klong }, // ulong
|
||||
{ kulong, klong }, // long
|
||||
{ kulong, klong } // double
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------
|
||||
// Reference functions
|
||||
//-----------------------------------------
|
||||
|
||||
void refselect_1i8(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_char *d, *x, *y, *m;
|
||||
d = (cl_char*) dest;
|
||||
x = (cl_char*) src1;
|
||||
y = (cl_char*) src2;
|
||||
m = (cl_char*) cmp;
|
||||
for (i=0; i < count; ++i) {
|
||||
d[i] = m[i] ? y[i] : x[i];
|
||||
}
|
||||
}
|
||||
|
||||
void refselect_1u8(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_uchar *d, *x, *y;
|
||||
cl_char *m;
|
||||
d = (cl_uchar*) dest;
|
||||
x = (cl_uchar*) src1;
|
||||
y = (cl_uchar*) src2;
|
||||
m = (cl_char*) cmp;
|
||||
for (i=0; i < count; ++i) {
|
||||
d[i] = m[i] ? y[i] : x[i];
|
||||
}
|
||||
}
|
||||
|
||||
void refselect_1i16(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_short *d, *x, *y, *m;
|
||||
d = (cl_short*) dest;
|
||||
x = (cl_short*) src1;
|
||||
y = (cl_short*) src2;
|
||||
m = (cl_short*) cmp;
|
||||
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = m[i] ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void refselect_1u16(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_ushort *d, *x, *y;
|
||||
cl_short *m;
|
||||
d = (cl_ushort*) dest;
|
||||
x = (cl_ushort*) src1;
|
||||
y = (cl_ushort*) src2;
|
||||
m = (cl_short*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = m[i] ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void refselect_1i32(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_int *d, *x, *y, *m;
|
||||
d = (cl_int*)dest;
|
||||
x = (cl_int*)src1;
|
||||
y = (cl_int*)src2;
|
||||
m = (cl_int*)cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = m[i] ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void refselect_1u32(void *dest, void *src1, void *src2, void *cmp, size_t count){
|
||||
size_t i;
|
||||
cl_uint *d, *x, *y;
|
||||
cl_int *m;
|
||||
d = (cl_uint*)dest;
|
||||
x = (cl_uint*)src1;
|
||||
y = (cl_uint*)src2;
|
||||
m = (cl_int*)cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = m[i] ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void refselect_1i64(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_long *d, *x, *y, *m;
|
||||
d = (cl_long*) dest;
|
||||
x = (cl_long*) src1;
|
||||
y = (cl_long*) src2;
|
||||
m = (cl_long*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = m[i] ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void refselect_1u64(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_ulong *d, *x, *y;
|
||||
cl_long *m;
|
||||
d = (cl_ulong*) dest;
|
||||
x = (cl_ulong*) src1;
|
||||
y = (cl_ulong*) src2;
|
||||
m = (cl_long*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = m[i] ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void refselect_1i8u(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_char *d, *x, *y;
|
||||
cl_uchar *m;
|
||||
d = (cl_char*) dest;
|
||||
x = (cl_char*) src1;
|
||||
y = (cl_char*) src2;
|
||||
m = (cl_uchar*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = m[i] ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void refselect_1u8u(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_uchar *d, *x, *y, *m;
|
||||
d = (cl_uchar*) dest;
|
||||
x = (cl_uchar*) src1;
|
||||
y = (cl_uchar*) src2;
|
||||
m = (cl_uchar*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = m[i] ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void refselect_1i16u(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_short *d, *x, *y;
|
||||
cl_ushort *m;
|
||||
d = (cl_short*) dest;
|
||||
x = (cl_short*) src1;
|
||||
y = (cl_short*) src2;
|
||||
m = (cl_ushort*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = m[i] ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void refselect_1u16u(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_ushort *d, *x, *y, *m;
|
||||
d = (cl_ushort*) dest;
|
||||
x = (cl_ushort*) src1;
|
||||
y = (cl_ushort*) src2;
|
||||
m = (cl_ushort*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = m[i] ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void refselect_1i32u(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_int *d, *x, *y;
|
||||
cl_uint *m;
|
||||
d = (cl_int*) dest;
|
||||
x = (cl_int*) src1;
|
||||
y = (cl_int*) src2;
|
||||
m = (cl_uint*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = m[i] ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void refselect_1u32u(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_uint *d, *x, *y, *m;
|
||||
d = (cl_uint*) dest;
|
||||
x = (cl_uint*) src1;
|
||||
y = (cl_uint*) src2;
|
||||
m = (cl_uint*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = m[i] ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void refselect_1i64u(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_long *d, *x, *y;
|
||||
cl_ulong *m;
|
||||
d = (cl_long*) dest;
|
||||
x = (cl_long*) src1;
|
||||
y = (cl_long*) src2;
|
||||
m = (cl_ulong*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = m[i] ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void refselect_1u64u(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_ulong *d, *x, *y, *m;
|
||||
d = (cl_ulong*) dest;
|
||||
x = (cl_ulong*) src1;
|
||||
y = (cl_ulong*) src2;
|
||||
m = (cl_ulong*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = m[i] ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void refselect_ffi(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_int *d, *x, *y;
|
||||
cl_int *m;
|
||||
d = (cl_int*) dest;
|
||||
x = (cl_int*) src1;
|
||||
y = (cl_int*) src2;
|
||||
m = (cl_int*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = m[i] ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void refselect_ffu(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_uint *d, *x, *y;
|
||||
cl_uint *m;
|
||||
d = (cl_uint*) dest;
|
||||
x = (cl_uint*) src1;
|
||||
y = (cl_uint*) src2;
|
||||
m = (cl_uint*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = m[i] ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void refselect_ddi(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_long *d, *x, *y;
|
||||
cl_long *m;
|
||||
d = (cl_long*) dest;
|
||||
x = (cl_long*) src1;
|
||||
y = (cl_long*) src2;
|
||||
m = (cl_long*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = m[i] ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void refselect_ddu(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_long *d, *x, *y;
|
||||
cl_ulong *m;
|
||||
d = (cl_long*) dest;
|
||||
x = (cl_long*) src1;
|
||||
y = (cl_long*) src2;
|
||||
m = (cl_ulong*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = m[i] ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void vrefselect_1i8(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_char *d, *x, *y, *m;
|
||||
d = (cl_char*) dest;
|
||||
x = (cl_char*) src1;
|
||||
y = (cl_char*) src2;
|
||||
m = (cl_char*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = (m[i] & 0x80) ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void vrefselect_1u8(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_uchar *d, *x, *y;
|
||||
cl_char *m;
|
||||
d = (cl_uchar*) dest;
|
||||
x = (cl_uchar*) src1;
|
||||
y = (cl_uchar*) src2;
|
||||
m = (cl_char*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = (m[i] & 0x80) ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void vrefselect_1i16(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_short *d, *x, *y, *m;
|
||||
d = (cl_short*) dest;
|
||||
x = (cl_short*) src1;
|
||||
y = (cl_short*) src2;
|
||||
m = (cl_short*) cmp;
|
||||
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = (m[i] & 0x8000) ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void vrefselect_1u16(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_ushort *d, *x, *y;
|
||||
cl_short *m;
|
||||
d = (cl_ushort*) dest;
|
||||
x = (cl_ushort*)src1;
|
||||
y = (cl_ushort*)src2;
|
||||
m = (cl_short*)cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = (m[i] & 0x8000) ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void vrefselect_1i32(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_int *d, *x, *y, *m;
|
||||
d = (cl_int*) dest;
|
||||
x = (cl_int*) src1;
|
||||
y = (cl_int*) src2;
|
||||
m = (cl_int*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = (m[i] & 0x80000000) ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void vrefselect_1u32(void *dest, void *src1, void *src2, void *cmp, size_t count){
|
||||
size_t i;
|
||||
cl_uint *d, *x, *y;
|
||||
cl_int *m;
|
||||
d = (cl_uint*) dest;
|
||||
x = (cl_uint*) src1;
|
||||
y = (cl_uint*) src2;
|
||||
m = (cl_int*) cmp;
|
||||
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = (m[i] & 0x80000000) ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void vrefselect_1i64(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_long *d, *x, *y, *m;
|
||||
d = (cl_long*) dest;
|
||||
x = (cl_long*) src1;
|
||||
y = (cl_long*) src2;
|
||||
m = (cl_long*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = (m[i] & 0x8000000000000000LL) ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void vrefselect_1u64(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_ulong *d, *x, *y;
|
||||
cl_long *m;
|
||||
d = (cl_ulong*) dest;
|
||||
x = (cl_ulong*) src1;
|
||||
y = (cl_ulong*) src2;
|
||||
m = (cl_long*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = (m[i] & 0x8000000000000000LL) ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void vrefselect_1i8u(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_char *d, *x, *y;
|
||||
cl_uchar *m;
|
||||
d = (cl_char*) dest;
|
||||
x = (cl_char*) src1;
|
||||
y = (cl_char*) src2;
|
||||
m = (cl_uchar*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = (m[i] & 0x80U) ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void vrefselect_1u8u(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_uchar *d, *x, *y, *m;
|
||||
d = (cl_uchar*) dest;
|
||||
x = (cl_uchar*) src1;
|
||||
y = (cl_uchar*) src2;
|
||||
m = (cl_uchar*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = (m[i] & 0x80U) ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void vrefselect_1i16u(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_short *d, *x, *y;
|
||||
cl_ushort *m;
|
||||
d = (cl_short*) dest;
|
||||
x = (cl_short*) src1;
|
||||
y = (cl_short*) src2;
|
||||
m = (cl_ushort*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = (m[i] & 0x8000U) ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void vrefselect_1u16u(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_ushort *d, *x, *y, *m;
|
||||
d = (cl_ushort*) dest;
|
||||
x = (cl_ushort*) src1;
|
||||
y = (cl_ushort*) src2;
|
||||
m = (cl_ushort*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = (m[i] & 0x8000U) ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void vrefselect_1i32u(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_int *d, *x, *y;
|
||||
cl_uint *m;
|
||||
d = (cl_int*) dest;
|
||||
x = (cl_int*) src1;
|
||||
y = (cl_int*) src2;
|
||||
m = (cl_uint*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = (m[i] & 0x80000000U) ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void vrefselect_1u32u(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_uint *d, *x, *y, *m;
|
||||
d = (cl_uint*) dest;
|
||||
x = (cl_uint*) src1;
|
||||
y = (cl_uint*) src2;
|
||||
m = (cl_uint*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = (m[i] & 0x80000000U) ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void vrefselect_1i64u(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_long *d, *x, *y;
|
||||
cl_ulong *m;
|
||||
d = (cl_long*) dest;
|
||||
x = (cl_long*) src1;
|
||||
y = (cl_long*) src2;
|
||||
m = (cl_ulong*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = (m[i] & 0x8000000000000000ULL) ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void vrefselect_1u64u(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_ulong *d, *x, *y, *m;
|
||||
d = (cl_ulong*) dest;
|
||||
x = (cl_ulong*) src1;
|
||||
y = (cl_ulong*) src2;
|
||||
m = (cl_ulong*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = (m[i] & 0x8000000000000000ULL) ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void vrefselect_ffi(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_uint *d, *x, *y;
|
||||
cl_int *m;
|
||||
d = (cl_uint*) dest;
|
||||
x = (cl_uint*) src1;
|
||||
y = (cl_uint*) src2;
|
||||
m = (cl_int*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = (m[i] & 0x80000000) ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void vrefselect_ffu(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_uint *d, *x, *y;
|
||||
cl_uint *m;
|
||||
d = (cl_uint*) dest;
|
||||
x = (cl_uint*) src1;
|
||||
y = (cl_uint*) src2;
|
||||
m = (cl_uint*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = (m[i] & 0x80000000U) ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void vrefselect_ddi(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_ulong *d, *x, *y;
|
||||
cl_long *m;
|
||||
d = (cl_ulong*) dest;
|
||||
x = (cl_ulong*) src1;
|
||||
y = (cl_ulong*) src2;
|
||||
m = (cl_long*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = (m[i] & 0x8000000000000000LL) ? y[i] : x[i];
|
||||
}
|
||||
|
||||
void vrefselect_ddu(void *dest, void *src1, void *src2, void *cmp, size_t count) {
|
||||
size_t i;
|
||||
cl_ulong *d, *x, *y;
|
||||
cl_ulong *m;
|
||||
d = (cl_ulong*) dest;
|
||||
x = (cl_ulong*) src1;
|
||||
y = (cl_ulong*) src2;
|
||||
m = (cl_ulong*) cmp;
|
||||
for (i=0; i < count; ++i)
|
||||
d[i] = (m[i] & 0x8000000000000000ULL) ? y[i] : x[i];
|
||||
}
|
||||
|
||||
// Define refSelects
|
||||
Select refSelects[kTypeCount][2] = {
|
||||
{ refselect_1u8u, refselect_1u8 }, // cl_uchar
|
||||
{ refselect_1i8u, refselect_1i8 }, // char
|
||||
{ refselect_1u16u, refselect_1u16 }, // ushort
|
||||
{ refselect_1i16u, refselect_1i16 }, // short
|
||||
{ refselect_1u32u, refselect_1u32 }, // uint
|
||||
{ refselect_1i32u, refselect_1i32 }, // int
|
||||
{ refselect_ffu, refselect_ffi }, // float
|
||||
{ refselect_1u64u, refselect_1u64 }, // ulong
|
||||
{ refselect_1i64u, refselect_1i64 }, // long
|
||||
{ refselect_ddu, refselect_ddi } // double
|
||||
};
|
||||
|
||||
// Define vrefSelects (vector refSelects)
|
||||
Select vrefSelects[kTypeCount][2] = {
|
||||
{ vrefselect_1u8u, vrefselect_1u8 }, // cl_uchar
|
||||
{ vrefselect_1i8u, vrefselect_1i8 }, // char
|
||||
{ vrefselect_1u16u, vrefselect_1u16 }, // ushort
|
||||
{ vrefselect_1i16u, vrefselect_1i16 }, // short
|
||||
{ vrefselect_1u32u, vrefselect_1u32 }, // uint
|
||||
{ vrefselect_1i32u, vrefselect_1i32 }, // int
|
||||
{ vrefselect_ffu, vrefselect_ffi }, // float
|
||||
{ vrefselect_1u64u, vrefselect_1u64 }, // ulong
|
||||
{ vrefselect_1i64u, vrefselect_1i64 }, // long
|
||||
{ vrefselect_ddu, vrefselect_ddi } // double
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------
|
||||
// Check functions
|
||||
//-----------------------------------------
|
||||
size_t check_uchar(void *test, void *correct, size_t count, size_t vector_size) {
|
||||
const cl_uchar *t = (const cl_uchar *) test;
|
||||
const cl_uchar *c = (const cl_uchar *) correct;
|
||||
size_t i;
|
||||
|
||||
for(i = 0; i < count; i++)
|
||||
if (t[i] != c[i]) {
|
||||
log_error("\n(check_uchar) Error for vector size %ld found at 0x%8.8lx (of 0x%8.8lx): "
|
||||
"*0x%2.2x vs 0x%2.2x\n", vector_size, i, count, c[i], t[i]);
|
||||
return i + 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t check_char(void *test, void *correct, size_t count, size_t vector_size) {
|
||||
const cl_char *t = (const cl_char *) test;
|
||||
const cl_char *c = (const cl_char *) correct;
|
||||
size_t i;
|
||||
|
||||
|
||||
for( i = 0; i < count; i++ )
|
||||
if( t[i] != c[i] ) {
|
||||
log_error("\n(check_char) Error for vector size %ld found at 0x%8.8lx (of 0x%8.8lx): "
|
||||
"*0x%2.2x vs 0x%2.2x\n", vector_size, i, count, c[i], t[i] );
|
||||
return i + 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t check_ushort(void *test, void *correct, size_t count, size_t vector_size) {
|
||||
const cl_ushort *t = (const cl_ushort *) test;
|
||||
const cl_ushort *c = (const cl_ushort *) correct;
|
||||
size_t i;
|
||||
|
||||
|
||||
for( i = 0; i < count; i++ )
|
||||
if(t[i] != c[i]) {
|
||||
log_error("\n(check_ushort) Error for vector size %ld found at 0x%8.8lx (of 0x%8.8lx): "
|
||||
"*0x%4.4x vs 0x%4.4x\n", vector_size, i, count, c[i], t[i] );
|
||||
return i + 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t check_short(void *test, void *correct, size_t count, size_t vector_size) {
|
||||
const cl_short *t = (const cl_short *) test;
|
||||
const cl_short *c = (const cl_short *) correct;
|
||||
size_t i;
|
||||
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
if(t[i] != c[i]) {
|
||||
log_error("\n(check_short) Error for vector size %ld found at 0x%8.8lx (of 0x%8.8lx): "
|
||||
"*0x%8.8x vs 0x%8.8x\n", vector_size, i, count, c[i], t[i] );
|
||||
return i + 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t check_uint(void *test, void *correct, size_t count, size_t vector_size) {
|
||||
const cl_uint *t = (const cl_uint *) test;
|
||||
const cl_uint *c = (const cl_uint *) correct;
|
||||
size_t i;
|
||||
|
||||
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
if(t[i] != c[i]) {
|
||||
log_error("\n(check_uint) Error for vector size %ld found at 0x%8.8lx (of 0x%8.8lx): "
|
||||
"*0x%8.8x vs 0x%8.8x\n", vector_size, i, count, c[i], t[i] );
|
||||
return i + 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t check_int(void *test, void *correct, size_t count, size_t vector_size) {
|
||||
const cl_int *t = (const cl_int *) test;
|
||||
const cl_int *c = (const cl_int *) correct;
|
||||
size_t i;
|
||||
|
||||
|
||||
for(i = 0; i < count; i++)
|
||||
if( t[i] != c[i] ) {
|
||||
|
||||
log_error("\n(check_int) Error for vector size %ld found at 0x%8.8lx (of 0x%8.8lx): "
|
||||
"*0x%8.8x vs 0x%8.8x\n", vector_size, i, count, c[i], t[i]);
|
||||
log_error("\n(check_int) Error for vector size %ld found at 0x%8.8lx (of 0x%8.8lx): "
|
||||
"*0x%8.8x vs 0x%8.8x\n", vector_size, i+1, count,c[i+1], t[i+1]);
|
||||
log_error("\n(check_int) Error for vector size %ld found at 0x%8.8lx (of 0x%8.8lx): "
|
||||
"*0x%8.8x vs 0x%8.8x\n", vector_size, i+2, count,c[i+2], t[i+2]);
|
||||
log_error("\n(check_int) Error for vector size %ld found at 0x%8.8lx (of 0x%8.8lx): "
|
||||
"*0x%8.8x vs 0x%8.8x\n", vector_size, i+3, count,c[i+3], t[i+3]);
|
||||
if(i) {
|
||||
log_error("\n(check_int) Error for vector size %ld found just after 0x%8.8lx: "
|
||||
"*0x%8.8x vs 0x%8.8x\n", vector_size, i-1, c[i-1], t[i-1]);
|
||||
}
|
||||
return i + 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t check_ulong(void *test, void *correct, size_t count, size_t vector_size) {
|
||||
const cl_ulong *t = (const cl_ulong *) test;
|
||||
const cl_ulong *c = (const cl_ulong *) correct;
|
||||
size_t i;
|
||||
|
||||
|
||||
for( i = 0; i < count; i++ )
|
||||
if( t[i] != c[i] ) {
|
||||
log_error("\n(check_ulong) Error for vector size %ld found at 0x%8.8lx (of 0x%8.8lx): "
|
||||
"*0x%16.16llx vs 0x%16.16llx\n", vector_size, i, count, c[i], t[i] );
|
||||
return i + 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t check_long(void *test, void *correct, size_t count, size_t vector_size) {
|
||||
const cl_long *t = (const cl_long *) test;
|
||||
const cl_long *c = (const cl_long *) correct;
|
||||
size_t i;
|
||||
|
||||
|
||||
for(i = 0; i < count; i++ )
|
||||
if(t[i] != c[i]) {
|
||||
log_error("\n(check_long) Error for vector size %ld found at 0x%8.8lx (of 0x%8.8lx): "
|
||||
"*0x%16.16llx vs 0x%16.16llx\n", vector_size, i, count, c[i], t[i] );
|
||||
return i + 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t check_float( void *test, void *correct, size_t count, size_t vector_size ) {
|
||||
const cl_uint *t = (const cl_uint *) test;
|
||||
const cl_uint *c = (const cl_uint *) correct;
|
||||
size_t i;
|
||||
|
||||
|
||||
for( i = 0; i < count; i++ )
|
||||
/* Allow nans to be binary different */
|
||||
if ((t[i] != c[i]) && !(isnan(((float *)correct)[i]) && isnan(((float *)test)[i]))) {
|
||||
log_error("\n(check_float) Error for vector size %ld found at 0x%8.8lx (of 0x%8.8lx): "
|
||||
"*0x%8.8x vs 0x%8.8x\n", vector_size, i, count, c[i], t[i] );
|
||||
return i + 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t check_double( void *test, void *correct, size_t count, size_t vector_size ) {
|
||||
const cl_ulong *t = (const cl_ulong *) test;
|
||||
const cl_ulong *c = (const cl_ulong *) correct;
|
||||
size_t i;
|
||||
|
||||
|
||||
|
||||
for( i = 0; i < count; i++ )
|
||||
/* Allow nans to be binary different */
|
||||
if ((t[i] != c[i]) && !(isnan(((double *)correct)[i]) && isnan(((double *)test)[i]))) {
|
||||
log_error("\n(check_double) Error for vector size %ld found at 0x%8.8lx (of 0x%8.8lx): "
|
||||
"*0x%16.16llx vs 0x%16.16llx\n", vector_size, i, count, c[i], t[i] );
|
||||
return i + 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
CheckResults checkResults[kTypeCount] = {
|
||||
check_uchar, check_char, check_ushort, check_short, check_uint,
|
||||
check_int, check_float, check_ulong, check_long, check_double };
|
||||
Reference in New Issue
Block a user