mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-19 06:09:01 +00:00
Added printf test for long type cases (#2037)
according to work plan for issue https://github.com/KhronosGroup/OpenCL-CTS/issues/1058
This commit is contained in:
@@ -698,6 +698,12 @@ int doTest(cl_command_queue queue, cl_context context,
|
|||||||
return TEST_SKIPPED_ITSELF;
|
return TEST_SKIPPED_ITSELF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((allTestCase[testId]->_type == TYPE_LONG) && !isLongSupported(device))
|
||||||
|
{
|
||||||
|
log_info("Skipping long because long is not supported.\n");
|
||||||
|
return TEST_SKIPPED_ITSELF;
|
||||||
|
}
|
||||||
|
|
||||||
if ((allTestCase[testId]->_type == TYPE_DOUBLE
|
if ((allTestCase[testId]->_type == TYPE_DOUBLE
|
||||||
|| allTestCase[testId]->_type == TYPE_DOUBLE_LIMITS)
|
|| allTestCase[testId]->_type == TYPE_DOUBLE_LIMITS)
|
||||||
&& !is_extension_available(device, "cl_khr_fp64"))
|
&& !is_extension_available(device, "cl_khr_fp64"))
|
||||||
@@ -927,6 +933,12 @@ int test_int(cl_device_id deviceID, cl_context context, cl_command_queue queue,
|
|||||||
return doTest(gQueue, gContext, TYPE_INT, deviceID);
|
return doTest(gQueue, gContext, TYPE_INT, deviceID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int test_long(cl_device_id deviceID, cl_context context, cl_command_queue queue,
|
||||||
|
int num_elements)
|
||||||
|
{
|
||||||
|
return doTest(gQueue, gContext, TYPE_LONG, deviceID);
|
||||||
|
}
|
||||||
|
|
||||||
int test_half(cl_device_id deviceID, cl_context context, cl_command_queue queue,
|
int test_half(cl_device_id deviceID, cl_context context, cl_command_queue queue,
|
||||||
int num_elements)
|
int num_elements)
|
||||||
{
|
{
|
||||||
@@ -1043,23 +1055,15 @@ int test_buffer_size(cl_device_id deviceID, cl_context context,
|
|||||||
}
|
}
|
||||||
|
|
||||||
test_definition test_list[] = {
|
test_definition test_list[] = {
|
||||||
ADD_TEST(int),
|
ADD_TEST(int), ADD_TEST(long),
|
||||||
ADD_TEST(half),
|
ADD_TEST(half), ADD_TEST(half_limits),
|
||||||
ADD_TEST(half_limits),
|
ADD_TEST(float), ADD_TEST(float_limits),
|
||||||
ADD_TEST(float),
|
ADD_TEST(double), ADD_TEST(double_limits),
|
||||||
ADD_TEST(float_limits),
|
ADD_TEST(octal), ADD_TEST(unsigned),
|
||||||
ADD_TEST(double),
|
ADD_TEST(hexadecimal), ADD_TEST(char),
|
||||||
ADD_TEST(double_limits),
|
ADD_TEST(string), ADD_TEST(format_string),
|
||||||
ADD_TEST(octal),
|
ADD_TEST(vector), ADD_TEST(address_space),
|
||||||
ADD_TEST(unsigned),
|
ADD_TEST(buffer_size), ADD_TEST(mixed_format_random),
|
||||||
ADD_TEST(hexadecimal),
|
|
||||||
ADD_TEST(char),
|
|
||||||
ADD_TEST(string),
|
|
||||||
ADD_TEST(format_string),
|
|
||||||
ADD_TEST(vector),
|
|
||||||
ADD_TEST(address_space),
|
|
||||||
ADD_TEST(buffer_size),
|
|
||||||
ADD_TEST(mixed_format_random),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const int test_num = ARRAY_SIZE( test_list );
|
const int test_num = ARRAY_SIZE( test_list );
|
||||||
|
|||||||
@@ -46,6 +46,7 @@
|
|||||||
enum PrintfTestType
|
enum PrintfTestType
|
||||||
{
|
{
|
||||||
TYPE_INT,
|
TYPE_INT,
|
||||||
|
TYPE_LONG,
|
||||||
TYPE_HALF,
|
TYPE_HALF,
|
||||||
TYPE_HALF_LIMITS,
|
TYPE_HALF_LIMITS,
|
||||||
TYPE_FLOAT,
|
TYPE_FLOAT,
|
||||||
@@ -80,6 +81,7 @@ struct printDataGenParameters
|
|||||||
|
|
||||||
// Reference results - filled out at run-time
|
// Reference results - filled out at run-time
|
||||||
static std::vector<std::string> correctBufferInt;
|
static std::vector<std::string> correctBufferInt;
|
||||||
|
static std::vector<std::string> correctBufferLong;
|
||||||
static std::vector<std::string> correctBufferHalf;
|
static std::vector<std::string> correctBufferHalf;
|
||||||
static std::vector<std::string> correctBufferFloat;
|
static std::vector<std::string> correctBufferFloat;
|
||||||
static std::vector<std::string> correctBufferDouble;
|
static std::vector<std::string> correctBufferDouble;
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
// Helpers for generating runtime reference results
|
// Helpers for generating runtime reference results
|
||||||
static void intRefBuilder(printDataGenParameters&, char*, const size_t);
|
static void intRefBuilder(printDataGenParameters&, char*, const size_t);
|
||||||
|
static void longRefBuilder(printDataGenParameters&, char*, const size_t);
|
||||||
static void halfRefBuilder(printDataGenParameters&, char* rResult,
|
static void halfRefBuilder(printDataGenParameters&, char* rResult,
|
||||||
const size_t);
|
const size_t);
|
||||||
static void floatRefBuilder(printDataGenParameters&, char* rResult, const size_t);
|
static void floatRefBuilder(printDataGenParameters&, char* rResult, const size_t);
|
||||||
@@ -111,6 +112,73 @@ testCase testCaseInt = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
//==================================
|
||||||
|
|
||||||
|
// long
|
||||||
|
|
||||||
|
//==================================
|
||||||
|
|
||||||
|
//------------------------------------------------------
|
||||||
|
|
||||||
|
// [string] format | [string] int-data representation |
|
||||||
|
|
||||||
|
//------------------------------------------------------
|
||||||
|
|
||||||
|
std::vector<printDataGenParameters> printLongGenParameters = {
|
||||||
|
|
||||||
|
//(Minimum) fifteen-wide,default(right)-justified
|
||||||
|
|
||||||
|
{ { "%5ld" }, "10000000000L" },
|
||||||
|
|
||||||
|
//(Minimum) fifteen-wide,left-justified
|
||||||
|
|
||||||
|
{ { "%-15ld" }, "-10000000000L" },
|
||||||
|
|
||||||
|
//(Minimum) fifteen-wide,default(right)-justified,zero-filled
|
||||||
|
|
||||||
|
{ { "%015ld" }, "10000000000L" },
|
||||||
|
|
||||||
|
//(Minimum) fifteen-wide,default(right)-justified,with sign
|
||||||
|
|
||||||
|
{ { "%+15ld" }, "-10000000000L" },
|
||||||
|
|
||||||
|
//(Minimum) fifteen-wide ,left-justified,with sign
|
||||||
|
|
||||||
|
{ { "%-+15ld" }, "10000000000L" },
|
||||||
|
|
||||||
|
//(Minimum) fifteen-digit(zero-filled in absent
|
||||||
|
// digits),default(right)-justified
|
||||||
|
|
||||||
|
{ { "%.15li" }, "10000000000L" },
|
||||||
|
|
||||||
|
//(Minimum)Sixteen-wide, fifteen-digit(zero-filled in absent
|
||||||
|
// digits),default(right)-justified
|
||||||
|
|
||||||
|
{ { "%-+16.15li" }, "-10000000000L" },
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
//-----------------------------------------------
|
||||||
|
|
||||||
|
// test case for long |
|
||||||
|
|
||||||
|
//-----------------------------------------------
|
||||||
|
|
||||||
|
testCase testCaseLong = {
|
||||||
|
|
||||||
|
TYPE_LONG,
|
||||||
|
|
||||||
|
correctBufferLong,
|
||||||
|
|
||||||
|
printLongGenParameters,
|
||||||
|
|
||||||
|
longRefBuilder,
|
||||||
|
|
||||||
|
klong
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
//==============================================
|
//==============================================
|
||||||
|
|
||||||
// half
|
// half
|
||||||
@@ -1404,12 +1472,12 @@ testCase testCaseMixedFormat = { TYPE_MIXED_FORMAT_RANDOM,
|
|||||||
//-------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------
|
||||||
|
|
||||||
std::vector<testCase*> allTestCase = {
|
std::vector<testCase*> allTestCase = {
|
||||||
&testCaseInt, &testCaseHalf, &testCaseHalfLimits,
|
&testCaseInt, &testCaseLong, &testCaseHalf,
|
||||||
&testCaseFloat, &testCaseFloatLimits, &testCaseDouble,
|
&testCaseHalfLimits, &testCaseFloat, &testCaseFloatLimits,
|
||||||
&testCaseDoubleLimits, &testCaseOctal, &testCaseUnsigned,
|
&testCaseDouble, &testCaseDoubleLimits, &testCaseOctal,
|
||||||
&testCaseHexadecimal, &testCaseChar, &testCaseString,
|
&testCaseUnsigned, &testCaseHexadecimal, &testCaseChar,
|
||||||
&testCaseFormatString, &testCaseVector, &testCaseAddrSpace,
|
&testCaseString, &testCaseFormatString, &testCaseVector,
|
||||||
&testCaseMixedFormat
|
&testCaseAddrSpace, &testCaseMixedFormat
|
||||||
};
|
};
|
||||||
|
|
||||||
//-----------------------------------------
|
//-----------------------------------------
|
||||||
@@ -1526,6 +1594,13 @@ static void intRefBuilder(printDataGenParameters& params, char* refResult, const
|
|||||||
atoi(params.dataRepresentation));
|
atoi(params.dataRepresentation));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void longRefBuilder(printDataGenParameters& params, char* refResult,
|
||||||
|
const size_t refSize)
|
||||||
|
{
|
||||||
|
snprintf(refResult, refSize, params.genericFormats.front().c_str(),
|
||||||
|
atoll(params.dataRepresentation));
|
||||||
|
}
|
||||||
|
|
||||||
static void halfRefBuilder(printDataGenParameters& params, char* refResult,
|
static void halfRefBuilder(printDataGenParameters& params, char* refResult,
|
||||||
const size_t refSize)
|
const size_t refSize)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user