diff options
author | Aaron Watry <awatry@gmail.com> | 2015-10-02 10:08:05 -0500 |
---|---|---|
committer | Aaron Watry <awatry@gmail.com> | 2015-10-06 14:12:30 -0500 |
commit | 1b3163a899ad9e62c1a29d68fac744adada460fb (patch) | |
tree | 408f252cbf7bc18268c7fa1607272c4e43257103 | |
parent | 063e88da2855800b76b584ebd3d4f8f7c47ccd50 (diff) |
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
Reviewed-by: Jan Vesely <jan.vesely@rutgers.edu>
Reported-By: Moritz Pflanzer <moritz.pflanzer14@imperial.ac.uk>
Signed-off-by: Aaron Watry <awatry@gmail.com>
-rw-r--r-- | tests/cl/program/execute/int-definitions.cl | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/tests/cl/program/execute/int-definitions.cl b/tests/cl/program/execute/int-definitions.cl index 011599d28..75ce2ed62 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; } |