mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-19 06:09:01 +00:00
Fix test_printf - any nan format is allowed by OpenCL C spec (#2298)
OpenCL C says that printing nan is implementation-defined for floating-point numbers - https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_C.html#printf-format-string
This commit is contained in:
committed by
GitHub
parent
5930d45fc6
commit
42b4bca510
@@ -19,7 +19,7 @@
|
|||||||
#include "test_printf.h"
|
#include "test_printf.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <CL/cl_half.h>
|
#include <CL/cl_half.h>
|
||||||
|
#include <regex>
|
||||||
|
|
||||||
// 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);
|
||||||
@@ -1743,10 +1743,14 @@ size_t verifyOutputBuffer(char *analysisBuffer,testCase* pTestCase,size_t testId
|
|||||||
else if (pTestCase->_correctBuffer[testId] == "INF")
|
else if (pTestCase->_correctBuffer[testId] == "INF")
|
||||||
return strcmp(analysisBuffer, "INF")
|
return strcmp(analysisBuffer, "INF")
|
||||||
&& strcmp(analysisBuffer, "INFINITY");
|
&& strcmp(analysisBuffer, "INFINITY");
|
||||||
else if (pTestCase->_correctBuffer[testId] == "nan")
|
else if (pTestCase->_correctBuffer[testId] == "nan"
|
||||||
return strcmp(analysisBuffer, "nan") && strcmp(analysisBuffer, "-nan");
|
|| pTestCase->_correctBuffer[testId] == "NAN")
|
||||||
else if (pTestCase->_correctBuffer[testId] == "NAN")
|
{
|
||||||
return strcmp(analysisBuffer, "NAN") && strcmp(analysisBuffer, "-NAN");
|
std::string pattern =
|
||||||
|
R"(-?)" + pTestCase->_correctBuffer[testId] + R"((\(.*\))?)";
|
||||||
|
std::regex nanRegex(pattern);
|
||||||
|
return !std::regex_match(analysisBuffer, nanRegex);
|
||||||
|
}
|
||||||
|
|
||||||
return strcmp(analysisBuffer, pTestCase->_correctBuffer[testId].c_str());
|
return strcmp(analysisBuffer, pTestCase->_correctBuffer[testId].c_str());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user