<div dir="ltr"><div>Now that I saw Jan/Tom's patches for generating tests for built-ins with multiple outputs, I think I'll try to rewrite these tests using that.<br><br></div>--Aaron<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Feb 1, 2016 at 10:41 PM, Aaron Watry <span dir="ltr"><<a href="mailto:awatry@gmail.com" target="_blank">awatry@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Add some non-generated float/double tests for the frexp builtin function.<br>
<br>
float frexp(float x, int* exp);<br>
<br>
The tests are in separate files so that devices that don't support doubles<br>
can still have the float variant tested.<br>
<br>
Because the function signature is so unique, I elected to not auto-generate<br>
tests for now.<br>
<br>
The double tests don't handle inf/nan, as I couldn't get piglit's CL tester<br>
to interpret those values correctly... Advice welcome.<br>
<br>
Signed-off-by: Aaron Watry <<a href="mailto:awatry@gmail.com">awatry@gmail.com</a>><br>
---<br>
 tests/cl/program/execute/builtin/math/<a href="http://frexp.cl" rel="noreferrer" target="_blank">frexp.cl</a>     | 98 ++++++++++++++++++++++<br>
 .../program/execute/builtin/math/<a href="http://frexp_double.cl" rel="noreferrer" target="_blank">frexp_double.cl</a>   | 95 +++++++++++++++++++++<br>
 2 files changed, 193 insertions(+)<br>
 create mode 100644 tests/cl/program/execute/builtin/math/<a href="http://frexp.cl" rel="noreferrer" target="_blank">frexp.cl</a><br>
 create mode 100644 tests/cl/program/execute/builtin/math/<a href="http://frexp_double.cl" rel="noreferrer" target="_blank">frexp_double.cl</a><br>
<br>
diff --git a/tests/cl/program/execute/builtin/math/<a href="http://frexp.cl" rel="noreferrer" target="_blank">frexp.cl</a> b/tests/cl/program/execute/builtin/math/<a href="http://frexp.cl" rel="noreferrer" target="_blank">frexp.cl</a><br>
new file mode 100644<br>
index 0000000..66b0bdf<br>
--- /dev/null<br>
+++ b/tests/cl/program/execute/builtin/math/<a href="http://frexp.cl" rel="noreferrer" target="_blank">frexp.cl</a><br>
@@ -0,0 +1,98 @@<br>
+/*!<br>
+[config]<br>
+name: frexp<br>
+clc_version_min: 10<br>
+dimensions: 1<br>
+<br>
+#import struct<br>
+#def float_to_hex(f):<br>
+#    return hex(struct.unpack('<I', struct.pack('<f', f))[0])<br>
+#<br>
+<br>
+[test]<br>
+name: float scalar simple<br>
+kernel_name: frexp_float_scalar<br>
+global_size: 1 0 0<br>
+arg_out: 0 buffer float[1] 0.602783203125<br>
+arg_in: 1 buffer float[1] 1234.5<br>
+arg_out: 2 buffer int[1] 11<br>
+<br>
+[test]<br>
+name: float scalar<br>
+kernel_name: frexp_float_scalar<br>
+global_size: 7 0 0<br>
+arg_out: 0 buffer float[7] 0.602783203125 0.5 nan nan  inf -inf 0.0<br>
+arg_in: 1 buffer float[7]  1234.5         1.0 nan -nan inf -inf 0.0<br>
+arg_out: 2 buffer int[7]   11             1   0   0    0   0    0<br>
+<br>
+[test]<br>
+name: float vector 2 simple<br>
+kernel_name: frexp_float_vec2<br>
+global_size: 1 0 0<br>
+arg_out: 0 buffer float[2] repeat 0.602783203125<br>
+arg_in: 1 buffer float[2] repeat 1234.5<br>
+arg_out: 2 buffer int[2] repeat 11<br>
+<br>
+[test]<br>
+name: float vector 3 complex<br>
+kernel_name: frexp_float_vec3<br>
+global_size: 1 0 0<br>
+arg_out: 0 buffer float[3] 0.602783203125 0.0 0.5<br>
+arg_in: 1 buffer float[3] 1234.5 0.0 1.0<br>
+arg_out: 2 buffer int[3] 11 0 1<br>
+<br>
+[test]<br>
+name: float vector 4 complex<br>
+kernel_name: frexp_float_vec4<br>
+global_size: 1 0 0<br>
+arg_out: 0 buffer float[4] 0.602783203125 0.0 0.5 nan<br>
+arg_in: 1 buffer float[4] 1234.5 0.0 1.0 nan<br>
+arg_out: 2 buffer int[4] 11 0 1 0<br>
+<br>
+[test]<br>
+name: float vector 8 complex<br>
+kernel_name: frexp_float_vec8<br>
+global_size: 1 0 0<br>
+arg_out: 0 buffer float[8] 0.602783203125 0.0 0.5 nan 0.5 nan 0.602783203125 0.0<br>
+arg_in: 1 buffer float[8] 1234.5 0.0 1.0 nan 1.0 nan 1234.5 0.0<br>
+arg_out: 2 buffer int[8] 11 0 1 0 1 0 11 0<br>
+<br>
+[test]<br>
+name: float vector 16 simple<br>
+kernel_name: frexp_float_vec16<br>
+global_size: 1 0 0<br>
+arg_out: 0 buffer float[16] repeat 0.602783203125<br>
+arg_in: 1 buffer float[16] repeat 1234.5<br>
+arg_out: 2 buffer int[16] repeat 11<br>
+<br>
+!*/<br>
+<br>
+kernel void frexp_float_scalar(global float* out, global float* in1, global int* out2) {<br>
+    size_t id = get_global_id(0);<br>
+    out[id] = frexp(in1[id], &out2[id]);<br>
+}<br>
+<br>
+kernel void frexp_float_vec2(global float2* out, global float2* in1, global int2* out2) {<br>
+    size_t id = get_global_id(0);<br>
+    out[id] = frexp(in1[id], &out2[id]);<br>
+}<br>
+<br>
+kernel void frexp_float_vec3(global float3* out, global float3* in1, global int3* out2) {<br>
+    size_t id = get_global_id(0);<br>
+    out[id] = frexp(in1[id], &out2[id]);<br>
+}<br>
+<br>
+kernel void frexp_float_vec4(global float4* out, global float4* in1, global int4* out2) {<br>
+    size_t id = get_global_id(0);<br>
+    out[id] = frexp(in1[id], &out2[id]);<br>
+}<br>
+<br>
+kernel void frexp_float_vec8(global float8* out, global float8* in1, global int8* out2) {<br>
+    size_t id = get_global_id(0);<br>
+    out[id] = frexp(in1[id], &out2[id]);<br>
+}<br>
+<br>
+kernel void frexp_float_vec16(global float16* out, global float16* in1, global int16* out2) {<br>
+    size_t id = get_global_id(0);<br>
+    out[id] = frexp(in1[id], &out2[id]);<br>
+}<br>
diff --git a/tests/cl/program/execute/builtin/math/<a href="http://frexp_double.cl" rel="noreferrer" target="_blank">frexp_double.cl</a> b/tests/cl/program/execute/builtin/math/<a href="http://frexp_double.cl" rel="noreferrer" target="_blank">frexp_double.cl</a><br>
new file mode 100644<br>
index 0000000..2a3f458<br>
--- /dev/null<br>
+++ b/tests/cl/program/execute/builtin/math/<a href="http://frexp_double.cl" rel="noreferrer" target="_blank">frexp_double.cl</a><br>
@@ -0,0 +1,95 @@<br>
+#pragma OPENCL EXTENSION cl_khr_fp64: enable<br>
+/*!<br>
+[config]<br>
+name: frexp<br>
+clc_version_min: 10<br>
+dimensions: 1<br>
+require_device_extensions: cl_khr_fp64<br>
+<br>
+[test]<br>
+name: double scalar simple<br>
+kernel_name: frexp_double_scalar<br>
+global_size: 1 0 0<br>
+arg_out: 0 buffer double[1] 0.602783203125<br>
+arg_in: 1 buffer double[1] 1234.5<br>
+arg_out: 2 buffer int[1] 11<br>
+<br>
+[test]<br>
+name: double scalar<br>
+kernel_name: frexp_double_scalar<br>
+global_size: 7 0 0<br>
+arg_out: 0 buffer double[7] 0.602783203125 0.5 nan nan  inf -inf 0.0<br>
+arg_in: 1 buffer double[7]  1234.5         1.0 nan -nan inf -inf 0.0<br>
+arg_out: 2 buffer int[7]    11             1   0   0    0   0    0<br>
+<br>
+[test]<br>
+name: double vector 2 simple<br>
+kernel_name: frexp_double_vec2<br>
+global_size: 1 0 0<br>
+arg_out: 0 buffer double[2] repeat 0.602783203125<br>
+arg_in: 1 buffer double[2] repeat 1234.5<br>
+arg_out: 2 buffer int[2] repeat 11<br>
+<br>
+[test]<br>
+name: double vector 3 complex<br>
+kernel_name: frexp_double_vec3<br>
+global_size: 1 0 0<br>
+arg_out: 0 buffer double[3] 0.602783203125 0.0 0.5<br>
+arg_in: 1 buffer double[3] 1234.5 0.0 1.0<br>
+arg_out: 2 buffer int[3] 11 0 1<br>
+<br>
+[test]<br>
+name: double vector 4 complex<br>
+kernel_name: frexp_double_vec4<br>
+global_size: 1 0 0<br>
+arg_out: 0 buffer double[4] 0.602783203125 0.0 0.5 0.512500<br>
+arg_in: 1 buffer double[4] 1234.5 0.0 1.0 16.4<br>
+arg_out: 2 buffer int[4] 11 0 1 5<br>
+<br>
+[test]<br>
+name: double vector 8 complex<br>
+kernel_name: frexp_double_vec8<br>
+global_size: 1 0 0<br>
+arg_out: 0 buffer double[8] 0.602783203125 0.0 0.5 0.512500 0.5 0.512500 0.602783203125 0.0<br>
+arg_in: 1 buffer double[8] 1234.5 0.0 1.0 16.4 1.0 16.4 1234.5 0.0<br>
+arg_out: 2 buffer int[8] 11 0 1 5 1 5 11 0<br>
+<br>
+[test]<br>
+name: double vector 16 simple<br>
+kernel_name: frexp_double_vec16<br>
+global_size: 1 0 0<br>
+arg_out: 0 buffer double[16] repeat 0.602783203125<br>
+arg_in: 1 buffer double[16] repeat 1234.5<br>
+arg_out: 2 buffer int[16] repeat 11<br>
+<br>
+!*/<br>
+<br>
+kernel void frexp_double_scalar(global double* out, global double* in1, global int* out2) {<br>
+    size_t id = get_global_id(0);<br>
+    out[id] = frexp(in1[id], &out2[id]);<br>
+}<br>
+<br>
+kernel void frexp_double_vec2(global double2* out, global double2* in1, global int2* out2) {<br>
+    size_t id = get_global_id(0);<br>
+    out[id] = frexp(in1[id], &out2[id]);<br>
+}<br>
+<br>
+kernel void frexp_double_vec3(global double3* out, global double3* in1, global int3* out2) {<br>
+    size_t id = get_global_id(0);<br>
+    out[id] = frexp(in1[id], &out2[id]);<br>
+}<br>
+<br>
+kernel void frexp_double_vec4(global double4* out, global double4* in1, global int4* out2) {<br>
+    size_t id = get_global_id(0);<br>
+    out[id] = frexp(in1[id], &out2[id]);<br>
+}<br>
+<br>
+kernel void frexp_double_vec8(global double8* out, global double8* in1, global int8* out2) {<br>
+    size_t id = get_global_id(0);<br>
+    out[id] = frexp(in1[id], &out2[id]);<br>
+}<br>
+<br>
+kernel void frexp_double_vec16(global double16* out, global double16* in1, global int16* out2) {<br>
+    size_t id = get_global_id(0);<br>
+    out[id] = frexp(in1[id], &out2[id]);<br>
+}<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.5.0<br>
<br>
</font></span></blockquote></div><br></div>