Tizen 2.1 base
[platform/upstream/libbullet.git] / Extras / simdmathlibrary / spu / tests / isnand2.c
1 /* Test isnand2 for SPU
2    Copyright (C) 2006, 2007 Sony Computer Entertainment Inc.
3    All rights reserved.
4
5    Redistribution and use in source and binary forms,
6    with or without modification, are permitted provided that the
7    following conditions are met:
8     * Redistributions of source code must retain the above copyright
9       notice, this list of conditions and the following disclaimer.
10     * Redistributions in binary form must reproduce the above copyright
11       notice, this list of conditions and the following disclaimer in the
12       documentation and/or other materials provided with the distribution.
13     * Neither the name of the Sony Computer Entertainment Inc nor the names
14       of its contributors may be used to endorse or promote products derived
15       from this software without specific prior written permission.
16
17    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27    POSSIBILITY OF SUCH DAMAGE.
28  */
29
30
31
32 #include <stdio.h>
33 #include <stdlib.h>
34 #include <math.h>
35 #include <float.h>
36 #include "simdmath.h"
37 #include "common-test.h"
38 #include "testutils.h"
39
40 int main()
41 {
42    TEST_SET_START("20060830000000AAN","AAN", "isnand2");
43
44    // -QNan
45    double x0 = hide_double(-nan(""));
46    unsigned long long r0 = 0xffffffffffffffffull;
47    
48    // -Inf
49    double x1 = hide_double(-HUGE_VAL);
50    unsigned long long r1 = 0x0000000000000000ull;
51    
52    // -Dmax
53    double x2 = hide_double(-DBL_MAX);
54    unsigned long long r2 = 0x0000000000000000ull;
55
56    // -QNaN
57    double x3 = hide_double(make_double(0xFFFFFFFFFFFFFFFFull));
58    unsigned long long r3 = 0xffffffffffffffffull;
59    
60    // -SNaN
61    double x4 = hide_double(make_double(0xFFF7FFFFFFFFFFFFull));
62    unsigned long long r4 = 0xffffffffffffffffull;
63    
64    // -Denorm
65    double x5 = hide_double(-2.40e-310);
66    unsigned long long r5 = 0x0000000000000000ull;
67    
68    // -Unf
69    double x6 = hide_double(-1.0e-999);
70    unsigned long long r6 = 0x0000000000000000ull;
71    
72    // -0
73    double x7 = hide_double(-0.0);
74    unsigned long long r7 = 0x0000000000000000ull;
75
76    // 0
77    double x8 = hide_double( 0.0);
78    unsigned long long r8 = 0x0000000000000000ull;
79    
80    // +Inf
81    double x9 = hide_double( 1.0e999);
82    unsigned long long r9 = 0x0000000000000000ull;
83
84    // +QNaN
85    double x10 = hide_double(make_double(0x7FFFFFFFFFFFFFFFull));
86    unsigned long long r10 = 0xffffffffffffffffull;
87    
88    // +Dmin
89    double x11 = hide_double( DBL_MIN);
90    unsigned long long r11 = 0x0000000000000000ull;
91    
92    // +Norm
93    double x12 = hide_double(3.14152634);
94    unsigned long long r12 = 0x0000000000000000ull;
95    
96    // +SNaN
97    double x13 = hide_double(make_double(0x7FF3333333333333ull));
98    unsigned long long r13 = 0xffffffffffffffffull;
99    
100    // +Inf
101    double x14 = hide_double(HUGE_VAL);
102    unsigned long long r14 = 0x0000000000000000ull;
103    
104    //+Nan
105    double x15 = hide_double( nan(""));
106    unsigned long long r15 = 0xffffffffffffffffull;
107
108    // Compound
109    vec_double2 x16_v = (vec_double2) {make_double(0xFFF7000000000000ull), -1.0e-999 };
110    vec_ullong2 r16_v = (vec_ullong2) {0xffffffffffffffffull, 0x0000000000000000ull};
111
112    // Compound
113    vec_double2 x17_v = (vec_double2) { 345.27533, -2.40e-310 };
114    vec_ullong2 r17_v = (vec_ullong2) {0x0000000000000000ull, 0x0000000000000000ull};
115
116    // Compound
117    vec_double2 x18_v = (vec_double2) { nan(""), -3678342.8765343 };
118    vec_ullong2 r18_v = (vec_ullong2) {0xffffffffffffffffull, 0x0000000000000000ull};
119
120    // Compound
121    vec_double2 x19_v = (vec_double2) { HUGE_VAL, -nan("") };
122    vec_ullong2 r19_v = (vec_ullong2) {0x0000000000000000ull, 0xffffffffffffffffull};
123
124    // Compound
125    vec_double2 x20_v = (vec_double2) { make_double(0x7FF8000000000000ull), -HUGE_VAL} ;
126    vec_ullong2 r20_v = (vec_ullong2) {0xffffffffffffffffull, 0x0000000000000000ull};
127
128    vec_double2 x0_v = spu_splats(x0);
129    vec_ullong2  r0_v = spu_splats(r0);
130
131    vec_double2 x1_v = spu_splats(x1);
132    vec_ullong2  r1_v = spu_splats(r1);
133
134    vec_double2 x2_v = spu_splats(x2);
135    vec_ullong2  r2_v = spu_splats(r2);
136
137    vec_double2 x3_v = spu_splats(x3);
138    vec_ullong2  r3_v = spu_splats(r3);
139
140    vec_double2 x4_v = spu_splats(x4);
141    vec_ullong2  r4_v = spu_splats(r4);
142
143    vec_double2 x5_v = spu_splats(x5);
144    vec_ullong2  r5_v = spu_splats(r5);
145
146    vec_double2 x6_v = spu_splats(x6);
147    vec_ullong2  r6_v = spu_splats(r6);
148
149    vec_double2 x7_v = spu_splats(x7);
150    vec_ullong2  r7_v = spu_splats(r7);
151
152    vec_double2 x8_v = spu_splats(x8);
153    vec_ullong2  r8_v = spu_splats(r8);
154
155    vec_double2 x9_v = spu_splats(x9);
156    vec_ullong2  r9_v = spu_splats(r9);
157
158    vec_double2 x10_v = spu_splats(x10);
159    vec_ullong2  r10_v = spu_splats(r10);
160
161    vec_double2 x11_v = spu_splats(x11);
162    vec_ullong2  r11_v = spu_splats(r11);
163
164    vec_double2 x12_v = spu_splats(x12);
165    vec_ullong2  r12_v = spu_splats(r12);
166
167    vec_double2 x13_v = spu_splats(x13);
168    vec_ullong2  r13_v = spu_splats(r13);
169
170    vec_double2 x14_v = spu_splats(x14);
171    vec_ullong2  r14_v = spu_splats(r14);
172
173    vec_double2 x15_v = spu_splats(x15);
174    vec_ullong2  r15_v = spu_splats(r15);
175    
176    vec_ullong2 res_v;
177
178    TEST_START("isnand2");
179
180    res_v = (vec_ullong2)isnand2(x0_v);
181    TEST_CHECK("20060830000000AAN", allequal_ullong2( res_v, r0_v ), 0);
182    res_v = (vec_ullong2)isnand2(x1_v);
183    TEST_CHECK("20060830000001AAN", allequal_ullong2( res_v, r1_v ), 0);
184    res_v = (vec_ullong2)isnand2(x2_v);
185    TEST_CHECK("20060830000002AAN", allequal_ullong2( res_v, r2_v ), 0);
186    res_v = (vec_ullong2)isnand2(x3_v);
187    TEST_CHECK("20060830000003AAN", allequal_ullong2( res_v, r3_v ), 0);
188    res_v = (vec_ullong2)isnand2(x4_v);
189    TEST_CHECK("20060830000004AAN", allequal_ullong2( res_v, r4_v ), 0);
190    res_v = (vec_ullong2)isnand2(x5_v);
191    TEST_CHECK("20060830000005AAN", allequal_ullong2( res_v, r5_v ), 0);
192    res_v = (vec_ullong2)isnand2(x6_v);
193    TEST_CHECK("20060830000006AAN", allequal_ullong2( res_v, r6_v ), 0);
194    res_v = (vec_ullong2)isnand2(x7_v);
195    TEST_CHECK("20060830000007AAN", allequal_ullong2( res_v, r7_v ), 0);
196    res_v = (vec_ullong2)isnand2(x8_v);
197    TEST_CHECK("20060830000008AAN", allequal_ullong2( res_v, r8_v ), 0);
198    res_v = (vec_ullong2)isnand2(x9_v);
199    TEST_CHECK("20060830000009AAN", allequal_ullong2( res_v, r9_v ), 0);
200    res_v = (vec_ullong2)isnand2(x10_v);
201    TEST_CHECK("20060830000010AAN", allequal_ullong2( res_v, r10_v ), 0);
202    res_v = (vec_ullong2)isnand2(x11_v);
203    TEST_CHECK("20060830000011AAN", allequal_ullong2( res_v, r11_v ), 0);
204    res_v = (vec_ullong2)isnand2(x12_v);
205    TEST_CHECK("20060830000012AAN", allequal_ullong2( res_v, r12_v ), 0);
206    res_v = (vec_ullong2)isnand2(x13_v);
207    TEST_CHECK("20060830000013AAN", allequal_ullong2( res_v, r13_v ), 0);
208    res_v = (vec_ullong2)isnand2(x14_v);
209    TEST_CHECK("20060830000014AAN", allequal_ullong2( res_v, r14_v ), 0);
210    res_v = (vec_ullong2)isnand2(x15_v);
211    TEST_CHECK("20060830000015AAN", allequal_ullong2( res_v, r15_v ), 0);
212    res_v = (vec_ullong2)isnand2(x16_v);
213    TEST_CHECK("20060830000016AAN", allequal_ullong2( res_v, r16_v ), 0);
214    res_v = (vec_ullong2)isnand2(x17_v);
215    TEST_CHECK("20060830000017AAN", allequal_ullong2( res_v, r17_v ), 0);
216    res_v = (vec_ullong2)isnand2(x18_v);
217    TEST_CHECK("20060830000018AAN", allequal_ullong2( res_v, r18_v ), 0);
218    res_v = (vec_ullong2)isnand2(x19_v);
219    TEST_CHECK("20060830000019AAN", allequal_ullong2( res_v, r19_v ), 0);
220    res_v = (vec_ullong2)isnand2(x20_v);
221    TEST_CHECK("20060830000020AAN", allequal_ullong2( res_v, r20_v ), 0);
222    
223    TEST_SET_DONE();
224    
225    TEST_EXIT();
226 }