mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-19 22:19:02 +00:00
Move code around to reduce differences (#1185)
Code is moved to reduce the differences between tests for single- and double-precision. Improve consistency in double-literal. Signed-off-by: Marco Antognini <marco.antognini@arm.com>
This commit is contained in:
@@ -126,6 +126,45 @@ static cl_int BuildKernel_FloatFn(cl_uint job_id, cl_uint thread_id UNUSED,
|
||||
info->kernels[i], info->programs + i, info->relaxedMode);
|
||||
}
|
||||
|
||||
// Thread specific data for a worker thread
|
||||
typedef struct ThreadInfo
|
||||
{
|
||||
cl_mem inBuf; // input buffer for the thread
|
||||
cl_mem inBuf2; // input buffer for the thread
|
||||
cl_mem outBuf[VECTOR_SIZE_COUNT]; // output buffers for the thread
|
||||
float maxError; // max error value. Init to 0.
|
||||
double
|
||||
maxErrorValue; // position of the max error value (param 1). Init to 0.
|
||||
double maxErrorValue2; // position of the max error value (param 2). Init
|
||||
// to 0.
|
||||
MTdata d;
|
||||
cl_command_queue tQueue; // per thread command queue to improve performance
|
||||
} ThreadInfo;
|
||||
|
||||
typedef struct TestInfo
|
||||
{
|
||||
size_t subBufferSize; // Size of the sub-buffer in elements
|
||||
const Func *f; // A pointer to the function info
|
||||
cl_program programs[VECTOR_SIZE_COUNT]; // programs for various vector sizes
|
||||
cl_kernel
|
||||
*k[VECTOR_SIZE_COUNT]; // arrays of thread-specific kernels for each
|
||||
// worker thread: k[vector_size][thread_id]
|
||||
ThreadInfo *
|
||||
tinfo; // An array of thread specific information for each worker thread
|
||||
cl_uint threadCount; // Number of worker threads
|
||||
cl_uint jobCount; // Number of jobs
|
||||
cl_uint step; // step between each chunk and the next.
|
||||
cl_uint scale; // stride between individual test values
|
||||
float ulps; // max_allowed ulps
|
||||
int ftz; // non-zero if running in flush to zero mode
|
||||
|
||||
int isFDim;
|
||||
int skipNanInf;
|
||||
int isNextafter;
|
||||
bool relaxedMode; // True if test is running in relaxed mode, false
|
||||
// otherwise.
|
||||
} TestInfo;
|
||||
|
||||
// A table of more difficult cases to get right
|
||||
static const float specialValuesFloat[] = {
|
||||
-NAN,
|
||||
@@ -226,50 +265,12 @@ static const float specialValuesFloat[] = {
|
||||
MAKE_HEX_FLOAT(+0x0.000006p-126f, +0x0000006L, -150),
|
||||
MAKE_HEX_FLOAT(+0x0.000004p-126f, +0x0000004L, -150),
|
||||
MAKE_HEX_FLOAT(+0x0.000002p-126f, +0x0000002L, -150),
|
||||
+0.0f
|
||||
+0.0f,
|
||||
};
|
||||
|
||||
static const size_t specialValuesFloatCount =
|
||||
sizeof(specialValuesFloat) / sizeof(specialValuesFloat[0]);
|
||||
|
||||
// Thread specific data for a worker thread
|
||||
typedef struct ThreadInfo
|
||||
{
|
||||
cl_mem inBuf; // input buffer for the thread
|
||||
cl_mem inBuf2; // input buffer for the thread
|
||||
cl_mem outBuf[VECTOR_SIZE_COUNT]; // output buffers for the thread
|
||||
float maxError; // max error value. Init to 0.
|
||||
double
|
||||
maxErrorValue; // position of the max error value (param 1). Init to 0.
|
||||
double maxErrorValue2; // position of the max error value (param 2). Init
|
||||
// to 0.
|
||||
MTdata d;
|
||||
cl_command_queue tQueue; // per thread command queue to improve performance
|
||||
} ThreadInfo;
|
||||
|
||||
typedef struct TestInfo
|
||||
{
|
||||
size_t subBufferSize; // Size of the sub-buffer in elements
|
||||
const Func *f; // A pointer to the function info
|
||||
cl_program programs[VECTOR_SIZE_COUNT]; // programs for various vector sizes
|
||||
cl_kernel
|
||||
*k[VECTOR_SIZE_COUNT]; // arrays of thread-specific kernels for each
|
||||
// worker thread: k[vector_size][thread_id]
|
||||
ThreadInfo *
|
||||
tinfo; // An array of thread specific information for each worker thread
|
||||
cl_uint threadCount; // Number of worker threads
|
||||
cl_uint jobCount; // Number of jobs
|
||||
cl_uint step; // step between each chunk and the next.
|
||||
cl_uint scale; // stride between individual test values
|
||||
float ulps; // max_allowed ulps
|
||||
int ftz; // non-zero if running in flush to zero mode
|
||||
|
||||
int isFDim;
|
||||
int skipNanInf;
|
||||
int isNextafter;
|
||||
bool relaxedMode; // True if test is running in relaxed mode, false
|
||||
// otherwise.
|
||||
} TestInfo;
|
||||
|
||||
static cl_int TestFloat(cl_uint job_id, cl_uint thread_id, void *p);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user