The tests for the char/short/integer/long minimums do not properly check that the value is stored in the correct type. E.g. (-32768) actually gets parsed as an int by the preprocessor, and INT_MIN is actually stored as a long.
By subtracting a vector with value of 0 from the given defined *_MIN and then grabbing the first element of the resulting vector, we can make sure that the values are actually stored in the correct type. Reported-By: Moritz Pflanzer <[email protected]> Signed-off-by: Aaron Watry <[email protected]> --- tests/cl/program/execute/int-definitions.cl | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/cl/program/execute/int-definitions.cl b/tests/cl/program/execute/int-definitions.cl index 011599d..3d8ee63 100644 --- a/tests/cl/program/execute/int-definitions.cl +++ b/tests/cl/program/execute/int-definitions.cl @@ -36,29 +36,29 @@ kernel void test_char(global int* out) { int i = 0; out[i++] = CHAR_BIT; out[i++] = CHAR_MAX; - out[i++] = CHAR_MIN; + out[i++] = (CHAR_MIN - (char2)(0)).s0; out[i++] = SCHAR_MAX; - out[i++] = SCHAR_MIN; + out[i++] = (SCHAR_MIN - (char2)(0)).s0; out[i++] = UCHAR_MAX; } kernel void test_short(global int* out) { int i = 0; out[i++] = SHRT_MAX; - out[i++] = SHRT_MIN; + out[i++] = (SHRT_MIN - (short2)(0)).s0; out[i++] = USHRT_MAX; } kernel void test_int(global int* out) { int i = 0; out[i++] = INT_MAX; - out[i++] = INT_MIN; + out[i++] = (INT_MIN - (int2)(0)).s0; out[i++] = UINT_MAX; } kernel void test_long(global long* out) { int i = 0; out[i++] = LONG_MAX; - out[i++] = LONG_MIN; + out[i++] = (LONG_MIN - (long2)(0)).s0; out[i++] = ULONG_MAX; } -- 2.1.4 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
