[Piglit] [PATCH] cl: Update integer/long limit tests to detect incorrect storage sizes
Aaron Watry
awatry at gmail.com
Fri Oct 2 08:32:20 PDT 2015
The tests for the integer/long minimums do not properly
check that the value is stored in the correct type.
E.g. (-2147483648) actually gets parsed as a long by the preprocessor,
and therefore INT_MIN is actually stored as long and can't be automatically
vectorized.
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.
v2: Remove char/short modifications.
Test *_MAX vectorization as well as _MIN for int/long
CC: Jan Vesely <jan.vesely at rutgers.edu>
Reported-By: Moritz Pflanzer <moritz.pflanzer14 at imperial.ac.uk>
Signed-off-by: Aaron Watry <awatry at gmail.com>
---
tests/cl/program/execute/int-definitions.cl | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/tests/cl/program/execute/int-definitions.cl b/tests/cl/program/execute/int-definitions.cl
index 011599d..75ce2ed 100644
--- a/tests/cl/program/execute/int-definitions.cl
+++ b/tests/cl/program/execute/int-definitions.cl
@@ -51,14 +51,14 @@ kernel void test_short(global int* out) {
kernel void test_int(global int* out) {
int i = 0;
- out[i++] = INT_MAX;
- out[i++] = INT_MIN;
- out[i++] = UINT_MAX;
+ out[i++] = (INT_MAX - (int2)(0)).s0;
+ out[i++] = (INT_MIN - (int2)(0)).s0;
+ out[i++] = (UINT_MAX - (uint2)(0)).s0;
}
kernel void test_long(global long* out) {
int i = 0;
- out[i++] = LONG_MAX;
- out[i++] = LONG_MIN;
- out[i++] = ULONG_MAX;
+ out[i++] = (LONG_MAX - (long2)(0)).s0;
+ out[i++] = (LONG_MIN - (long2)(0)).s0;
+ out[i++] = (ULONG_MAX - (ulong2)(0)).s0;
}
--
2.1.4
More information about the Piglit
mailing list