diff options
author | Ian Romanick <ian.d.romanick@intel.com> | 2018-09-15 00:11:53 -0700 |
---|---|---|
committer | Ian Romanick <ian.d.romanick@intel.com> | 2020-01-07 09:43:15 -0800 |
commit | 6f8afffab7f00581fd585aa0b990121d5787ea2b (patch) | |
tree | 0813a7636884118317d83dd15c93a01894cad8f8 /generated_tests | |
parent | 8dc0e98aac085109399385d1a0f649a367b6a092 (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.py | 72 | ||||
-rw-r--r-- | generated_tests/templates/gen_intel_shader_integer_functions2_tests/absoluteDifference.shader_test.mako | 8 |
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; |