[Piglit] [PATCH] arb_gpu_shader_int64: allow shift tests to be generated
Ilia Mirkin
imirkin at alum.mit.edu
Sat Feb 4 21:10:28 UTC 2017
Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
---
generated_tests/builtin_function.py | 24 +++++++++++++++++++-----
1 file changed, 19 insertions(+), 5 deletions(-)
diff --git a/generated_tests/builtin_function.py b/generated_tests/builtin_function.py
index 689a805..9467ca3 100644
--- a/generated_tests/builtin_function.py
+++ b/generated_tests/builtin_function.py
@@ -406,7 +406,14 @@ def _modulus(x, y):
def _lshift(x, y):
- if not all(0 <= y_element < 32 for y_element in column_major_values(y)):
+ base = glsl_type_of(x).base_type
+ if base in (glsl_int64_t, glsl_uint64_t):
+ bits = 64
+ shift_type = glsl_int if base == glsl_int64_t else glsl_uint
+ else:
+ bits = 32
+ shift_type = base
+ if not all(0 <= y_element < bits for y_element in column_major_values(y)):
# Shifts by less than 0 or more than the number of bits in the
# type being shifted are undefined.
return None
@@ -414,7 +421,7 @@ def _lshift(x, y):
# likes to promote them to int64. To avoid this, convert y to be
# the same type as x.
y_orig = y
- if glsl_type_of(x).base_type != glsl_type_of(y).base_type:
+ if glsl_type_of(y).base_type != shift_type:
y = _change_signedness(y)
result = x << y
@@ -426,7 +433,14 @@ def _lshift(x, y):
def _rshift(x, y):
- if not all(0 <= y_element < 32 for y_element in column_major_values(y)):
+ base = glsl_type_of(x).base_type
+ if base in (glsl_int64_t, glsl_uint64_t):
+ bits = 64
+ shift_type = glsl_int if base == glsl_int64_t else glsl_uint
+ else:
+ bits = 32
+ shift_type = base
+ if not all(0 <= y_element < bits for y_element in column_major_values(y)):
# Shifts by less than 0 or more than the number of bits in the
# type being shifted are undefined.
return None
@@ -434,7 +448,7 @@ def _rshift(x, y):
# likes to promote them to int64. To avoid this, convert y to be
# the same type as x.
y_orig = y
- if glsl_type_of(x).base_type != glsl_type_of(y).base_type:
+ if glsl_type_of(y).base_type != shift_type:
y = _change_signedness(y)
result = x >> y
@@ -1111,7 +1125,7 @@ def _make_vector_or_matrix_test_vectors(test_suite_dict):
"""
x_type = glsl_type_of(x)
y_type = glsl_type_of(y)
- if x_type.base_type not in (glsl_int, glsl_uint):
+ if x_type.base_type not in (glsl_int, glsl_uint, glsl_int64_t, glsl_uint64_t):
return False
if y_type.base_type not in (glsl_int, glsl_uint):
return False
--
2.10.2
More information about the Piglit
mailing list