summaryrefslogtreecommitdiff
path: root/generated_tests
diff options
context:
space:
mode:
authorIan Romanick <ian.d.romanick@intel.com>2018-09-15 00:11:53 -0700
committerIan Romanick <ian.d.romanick@intel.com>2020-01-07 09:43:15 -0800
commit6f8afffab7f00581fd585aa0b990121d5787ea2b (patch)
tree0813a7636884118317d83dd15c93a01894cad8f8 /generated_tests
parent8dc0e98aac085109399385d1a0f649a367b6a092 (diff)
intel_shader_integer_functions2: Add generated execution tests for average
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
Diffstat (limited to 'generated_tests')
-rw-r--r--generated_tests/gen_intel_shader_integer_functions2_tests.py72
-rw-r--r--generated_tests/templates/gen_intel_shader_integer_functions2_tests/absoluteDifference.shader_test.mako8
2 files changed, 80 insertions, 0 deletions
diff --git a/generated_tests/gen_intel_shader_integer_functions2_tests.py b/generated_tests/gen_intel_shader_integer_functions2_tests.py
index 9d892669f..8a6bbc356 100644
--- a/generated_tests/gen_intel_shader_integer_functions2_tests.py
+++ b/generated_tests/gen_intel_shader_integer_functions2_tests.py
@@ -192,6 +192,34 @@ def usub_sat64(_a, _b):
return a - b if a > b else np.uint64(0)
+def u_hadd32(_a, _b):
+ a = np.uint32(_a)
+ b = np.uint32(_b)
+
+ return (a >> 1) + (b >> 1) + ((a & b) & 1)
+
+
+def s_hadd32(_a, _b):
+ a = np.int32(_a)
+ b = np.int32(_b)
+
+ return (a >> 1) + (b >> 1) + ((a & b) & 1)
+
+
+def u_hadd64(_a, _b):
+ a = np.uint64(_a)
+ b = np.uint64(_b)
+
+ return (a >> np.uint64(1)) + (b >> np.uint64(1)) + ((a & b) & np.uint64(1))
+
+
+def s_hadd64(_a, _b):
+ a = np.int64(_a)
+ b = np.int64(_b)
+
+ return (a >> np.int64(1)) + (b >> np.int64(1)) + ((a & b) & np.int64(1))
+
+
def absoluteDifference32_sources():
srcs = []
for x in range(0, 32, 4):
@@ -512,6 +540,50 @@ FUNCS = {
'version': '4.00', # GL_ARB_gpu_shader_int64 requires 4.0.
'extensions': 'GL_ARB_gpu_shader_int64',
},
+ 'average-int': {
+ 'input': 'int',
+ 'output': 'int',
+ 'sources': absoluteDifference32_sources,
+ 'results': generate_results_commutative,
+ 'template': 'absoluteDifference.shader_test.mako',
+ 'func': 'average',
+ 'operator': s_hadd32,
+ 'version': '1.30',
+ 'extensions': None,
+ },
+ 'average-uint': {
+ 'input': 'uint',
+ 'output': 'uint',
+ 'sources': absoluteDifference32_sources,
+ 'results': generate_results_commutative,
+ 'template': 'absoluteDifference.shader_test.mako',
+ 'func': 'average',
+ 'operator': u_hadd32,
+ 'version': '1.30',
+ 'extensions': None,
+ },
+ 'average-int64': {
+ 'input': 'int64_t',
+ 'output': 'int64_t',
+ 'sources': absoluteDifference64_sources,
+ 'results': generate_results_commutative,
+ 'template': 'absoluteDifference.shader_test.mako',
+ 'func': 'average',
+ 'operator': s_hadd64,
+ 'version': '4.00', # GL_ARB_gpu_shader_int64 requires 4.0.
+ 'extensions': 'GL_ARB_gpu_shader_int64',
+ },
+ 'average-uint64': {
+ 'input': 'uint64_t',
+ 'output': 'uint64_t',
+ 'sources': absoluteDifference64_sources,
+ 'results': generate_results_commutative,
+ 'template': 'absoluteDifference.shader_test.mako',
+ 'func': 'average',
+ 'operator': u_hadd64,
+ 'version': '4.00', # GL_ARB_gpu_shader_int64 requires 4.0.
+ 'extensions': 'GL_ARB_gpu_shader_int64',
+ },
'subtractSaturate-int': {
'input': 'int',
'output': 'int',
diff --git a/generated_tests/templates/gen_intel_shader_integer_functions2_tests/absoluteDifference.shader_test.mako b/generated_tests/templates/gen_intel_shader_integer_functions2_tests/absoluteDifference.shader_test.mako
index 9a42bd9aa..606d66af9 100644
--- a/generated_tests/templates/gen_intel_shader_integer_functions2_tests/absoluteDifference.shader_test.mako
+++ b/generated_tests/templates/gen_intel_shader_integer_functions2_tests/absoluteDifference.shader_test.mako
@@ -64,7 +64,11 @@ in vec4 piglit_vertex;
${output_type} get_expected_result(uint i, uint j)
{
if (i == j)
+ % if func == "absoluteDifference":
return ${output_type}(0);
+ % else:
+ return ${output_type}(src[i]);
+ % endif
uint row = min(i, j);
uint col = max(i, j) - row;
@@ -145,7 +149,11 @@ uniform Expected { u64vec2 expected[(int(SUM_N_to_1(src.length())) - src.length(
${output_type} get_expected_result(uint i, uint j)
{
if (i == j)
+ % if func == "absoluteDifference":
return ${output_type}(0);
+ % else:
+ return ${output_type}(src[i]);
+ % endif
uint row = min(i, j);
uint col = max(i, j) - row;