[Piglit] [PATCH 3/4] cl: Add a python script for generating tests for math builtins

Tom Stellard tom at stellard.net
Thu Sep 12 10:45:21 PDT 2013


From: Tom Stellard <thomas.stellard at amd.com>

This includes a test for the nextafter builtin.
---
 generated_tests/CMakeLists.txt               |  4 ++
 generated_tests/genclbuiltins.py             |  2 +-
 generated_tests/generate-cl-math-builtins.py | 66 ++++++++++++++++++++++++++++
 tests/all_cl.tests                           |  1 +
 4 files changed, 72 insertions(+), 1 deletion(-)
 create mode 100644 generated_tests/generate-cl-math-builtins.py

diff --git a/generated_tests/CMakeLists.txt b/generated_tests/CMakeLists.txt
index a0ba4b1..2a1c3ff 100644
--- a/generated_tests/CMakeLists.txt
+++ b/generated_tests/CMakeLists.txt
@@ -60,6 +60,9 @@ piglit_make_generated_tests(
 piglit_make_generated_tests(
 	cl_store_tests.list
 	generate-cl-store-tests.py)
+piglit_make_generated_tests(
+	builtin_cl_math_tests.list
+	generate-cl-math-builtins.py)
 
 # Add a "gen-tests" target that can be used to generate all the
 # tests without doing any other compilation.
@@ -68,6 +71,7 @@ add_custom_target(gen-tests ALL
 		builtin_uniform_tests.list
 		constant_array_size_tests.list
 		builtin_cl_int_tests.list
+		builtin_cl_math_tests.list
 		cl_store_tests.list
 		interpolation_tests.list
 		non-lvalue_tests.list
diff --git a/generated_tests/genclbuiltins.py b/generated_tests/genclbuiltins.py
index 29dfe39..721191e 100644
--- a/generated_tests/genclbuiltins.py
+++ b/generated_tests/genclbuiltins.py
@@ -252,7 +252,7 @@ def getValue(type, val):
                             getValue(type, val[3]), getValue(type, val[4]))
 
     # At this point, we should have been passed a number
-    if (isinstance(val, (int, long))):
+    if (isinstance(val, (int, long, float))):
         return val
 
     print('Invalid value '+repr(val)+' encountered in getValue\n')
diff --git a/generated_tests/generate-cl-math-builtins.py b/generated_tests/generate-cl-math-builtins.py
new file mode 100644
index 0000000..25143ba
--- /dev/null
+++ b/generated_tests/generate-cl-math-builtins.py
@@ -0,0 +1,66 @@
+#!/usr/bin/env python
+#
+# Copyright 2013 Advanced Micro Devices, Inc.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice (including the next
+# paragraph) shall be included in all copies or substantial portions of the
+# Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+#
+# Authors: Tom Stellard <thomas.stellard at amd.com>
+#
+
+import os
+
+from genclbuiltins import gen
+
+CLC_VERSION_MIN = {
+    'nextafter' : 10
+}
+
+DATA_TYPES = ['float']
+
+F = {
+    'float' : 'float'
+}
+
+tests = {
+    'nextafter' : {
+        'arg_types': [F, F, F],
+        'function_type': 'ttt',
+        'values': [
+            [1.401298e-45, -1.401298e-45, 1.00000011920928955078125, 0.999999940395355224609375, float("nan"), float("nan"), 5.0 ], # Result
+            [0.0,           0.0         , 1.0, 1.0, float("nan"), 2.5, 5.0], # Arg0
+            [1.0,          -1.0         , 2.0, 0.0, 3.4, float("nan"), 5.0], # Arg1
+        ]
+    }
+}
+
+
+def main():
+    dirName = os.path.join("cl", "builtin", "math")
+
+    testDefs = {}
+    functions = sorted(tests.keys())
+    for dataType in DATA_TYPES:
+        for fnName in functions:
+            testDefs[(dataType, fnName)] = tests[fnName]
+
+    gen(DATA_TYPES, CLC_VERSION_MIN, functions, testDefs, dirName)
+
+
+main()
diff --git a/tests/all_cl.tests b/tests/all_cl.tests
index 367319a..b0aa9d7 100644
--- a/tests/all_cl.tests
+++ b/tests/all_cl.tests
@@ -113,6 +113,7 @@ add_program_test_dir(program_execute, 'tests/cl/program/execute/builtin/atomic')
 program_execute_builtin = Group()
 program["Execute"]["Builtin"] = program_execute_builtin
 add_program_test_dir(program_execute_builtin, 'generated_tests/cl/builtin/int')
+add_program_test_dir(program_execute_builtin, 'generated_tests/cl/builtin/math')
 program_execute_store = Group()
 program["Execute"]["Store"] = program_execute_store
 add_program_test_dir(program_execute_store, 'generated_tests/cl/store')
-- 
1.7.11.4



More information about the Piglit mailing list