Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(388)

Side by Side Diff: runtime/tests/vm/dart/simd128float32_test.dart

Issue 12303013: Simd128Float32, Simd128Mask, and Simd128Float32List additions for dart:scalarlist (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Remove commented out code used for testing Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 import 'dart:scalarlist';
kasperl 2013/02/21 11:28:15 Add copyright notice.
Cutch 2013/02/21 18:45:16 Done.
2
3 testAdd() {
4 var m = new Simd128Float32x4(-1.0, -2.0, -3.0, -4.0);
5 var n = new Simd128Float32x4(1.0, 2.0, 3.0, 4.0);
6 var o = m + n;
7 Expect.equals(0.0, o.x);
8 Expect.equals(0.0, o.y);
9 Expect.equals(0.0, o.z);
10 Expect.equals(0.0, o.w);
11 }
12
13 testNegate() {
14 var m = new Simd128Float32x4(1.0, 2.0, -3.0, -4.0);
15 m = -m;
16 Expect.equals(-1.0, m.x);
17 Expect.equals(-2.0, m.y);
18 Expect.equals(3.0, m.z);
19 Expect.equals(4.0, m.w);
20 }
21
22 testSub() {
23 var m = new Simd128Float32x4(-1.0, -2.0, -3.0, -4.0);
24 var n = new Simd128Float32x4(1.0, 2.0, 3.0, 4.0);
25 var o = m - n;
26 Expect.equals(-2.0, o.x);
27 Expect.equals(-4.0, o.y);
28 Expect.equals(-6.0, o.z);
29 Expect.equals(-8.0, o.w);
30 }
31
32 testMul() {
33 var m = new Simd128Float32x4(-1.0, -2.0, -3.0, -4.0);
34 var n = new Simd128Float32x4(1.0, 2.0, 3.0, 4.0);
35 var o = m * n;
36 Expect.equals(-1.0, o.x);
37 Expect.equals(-4.0, o.y);
38 Expect.equals(-9.0, o.z);
39 Expect.equals(-16.0, o.w);
40 }
41
42 testDiv() {
43 var m = new Simd128Float32x4(-1.0, -2.0, -3.0, -4.0);
44 var n = new Simd128Float32x4(1.0, 2.0, 3.0, 4.0);
45 var o = m / n;
46 Expect.equals(-1.0, o.x);
47 Expect.equals(-1.0, o.y);
48 Expect.equals(-1.0, o.z);
49 Expect.equals(-1.0, o.w);
50 }
51
52 testComparison() {
53 var m = new Simd128Float32x4(1.0, 2.0, 0.1, 0.001);
54 var n = new Simd128Float32x4(2.0, 2.0, 0.001, 0.1);
55 var cmp;
56 cmp = m.lessThan(n);
57 Expect.equals(0xFFFFFFFF, cmp.x);
58 Expect.equals(0x0, cmp.y);
59 Expect.equals(0x0, cmp.z);
60 Expect.equals(0xFFFFFFFF, cmp.w);
61
62 cmp = m.lessThanOrEqual(n);
63 Expect.equals(0xFFFFFFFF, cmp.x);
64 Expect.equals(0xFFFFFFFF, cmp.y);
65 Expect.equals(0x0, cmp.z);
66 Expect.equals(0xFFFFFFFF, cmp.w);
67
68 cmp = m.equal(n);
69 Expect.equals(0x0, cmp.x);
70 Expect.equals(0xFFFFFFFF, cmp.y);
71 Expect.equals(0x0, cmp.z);
72 Expect.equals(0x0, cmp.w);
73
74 cmp = m.notEqual(n);
75 Expect.equals(0xFFFFFFFF, cmp.x);
76 Expect.equals(0x0, cmp.y);
77 Expect.equals(0xFFFFFFFF, cmp.z);
78 Expect.equals(0xFFFFFFFF, cmp.w);
79
80 cmp = m.greaterThanOrEqual(n);
81 Expect.equals(0x0, cmp.x);
82 Expect.equals(0xFFFFFFFF, cmp.y);
83 Expect.equals(0xFFFFFFFF, cmp.z);
84 Expect.equals(0x0, cmp.w);
85
86 cmp = m.greaterThan(n);
87 Expect.equals(0x0, cmp.x);
88 Expect.equals(0x0, cmp.y);
89 Expect.equals(0xFFFFFFFF, cmp.z);
90 Expect.equals(0x0, cmp.w);
91 }
92
93 testAbs() {
94 var m = new Simd128Float32x4(1.0, -2.0, 3.0, -4.0);
95 m = m.abs();
96 Expect.equals(1.0, m.x);
97 Expect.equals(2.0, m.y);
98 Expect.equals(3.0, m.z);
99 Expect.equals(4.0, m.w);
100 }
101
102 testScale() {
103 var m = new Simd128Float32x4(1.0, -2.0, 3.0, -4.0);
104 m = m.scale(20.0);
105 Expect.equals(20.0, m.x);
106 Expect.equals(-40.0, m.y);
107 Expect.equals(60.0, m.z);
108 Expect.equals(-80.0, m.w);
109 }
110
111 testClamp() {
112 var m = new Simd128Float32x4(1.0, -2.0, 3.0, -4.0);
113 var lo = new Simd128Float32x4(0.0, 0.0, 0.0, 0.0);
114 var hi = new Simd128Float32x4(2.0, 2.0, 2.0, 2.0);
115 m = m.clamp(lo, hi);
116 Expect.equals(1.0, m.x);
117 Expect.equals(0.0, m.y);
118 Expect.equals(2.0, m.z);
119 Expect.equals(0.0, m.w);
120 }
121
122 testShuffle() {
123 var m = new Simd128Float32x4(1.0, 2.0, 3.0, 4.0);
124 var xxxx = m.xxxx;
125 Expect.equals(1.0, xxxx.x);
126 Expect.equals(1.0, xxxx.y);
127 Expect.equals(1.0, xxxx.z);
128 Expect.equals(1.0, xxxx.w);
129 var yyyy = m.yyyy;
130 Expect.equals(2.0, yyyy.x);
131 Expect.equals(2.0, yyyy.y);
132 Expect.equals(2.0, yyyy.z);
133 Expect.equals(2.0, yyyy.w);
134 var zzzz = m.zzzz;
135 Expect.equals(3.0, zzzz.x);
136 Expect.equals(3.0, zzzz.y);
137 Expect.equals(3.0, zzzz.z);
138 Expect.equals(3.0, zzzz.w);
139 var wwww = m.wwww;
140 Expect.equals(4.0, wwww.x);
141 Expect.equals(4.0, wwww.y);
142 Expect.equals(4.0, wwww.z);
143 Expect.equals(4.0, wwww.w);
144 }
145
146 testMin() {
147 var m = new Simd128Float32x4(1.0, 2.0, 3.0, 4.0);
148 var n = new Simd128Float32x4(1.0, 0.0, 2.5, 5.0);
149 m = m.min(n);
150 Expect.equals(1.0, m.x);
151 Expect.equals(0.0, m.y);
152 Expect.equals(2.5, m.z);
153 Expect.equals(4.0, m.w);
154 }
155
156 testMax() {
157 var m = new Simd128Float32x4(1.0, 2.0, 3.0, 4.0);
158 var n = new Simd128Float32x4(1.0, 0.0, 2.5, 5.0);
159 m = m.max(n);
160 Expect.equals(1.0, m.x);
161 Expect.equals(2.0, m.y);
162 Expect.equals(3.0, m.z);
163 Expect.equals(5.0, m.w);
164 }
165
166 testSqrt() {
167 var m = new Simd128Float32x4(1.0, 4.0, 9.0, 16.0);
168 m = m.sqrt();
169 Expect.equals(1.0, m.x);
170 Expect.equals(2.0, m.y);
171 Expect.equals(3.0, m.z);
172 Expect.equals(4.0, m.w);
173 }
174
175 testReciprocal() {
176 var m = new Simd128Float32x4(1.0, 4.0, 9.0, 16.0);
177 m = m.reciprocal();
178 Expect.approxEquals(1.0, m.x);
179 Expect.approxEquals(0.25, m.y);
180 Expect.approxEquals(0.1111111, m.z);
181 Expect.approxEquals(0.0625, m.w);
182 }
183
184 testReciprocalSqrt() {
185 var m = new Simd128Float32x4(1.0, 0.25, 0.111111, 0.0625);
186 m = m.reciprocalSqrt();
187 Expect.approxEquals(1.0, m.x);
188 Expect.approxEquals(2.0, m.y);
189 Expect.approxEquals(3.0, m.z);
190 Expect.approxEquals(4.0, m.w);
191 }
192
193 testSelect() {
194 var m = new Simd128Mask.bool(true, true, false, false);
195 var t = new Simd128Float32x4(1.0, 2.0, 3.0, 4.0);
196 var f = new Simd128Float32x4(5.0, 6.0, 7.0, 8.0);
197 var s = m.select(t, f);
198 Expect.equals(1.0, s.x);
199 Expect.equals(2.0, s.y);
200 Expect.equals(7.0, s.z);
201 Expect.equals(8.0, s.w);
202 }
203
204 testConversions() {
205 var m = new Simd128Mask(0x3F800000, 0x40000000, 0x40400000, 0x40800000);
206 var n = m.toSimd128Float32x4();
207 Expect.equals(1.0, n.x);
208 Expect.equals(2.0, n.y);
209 Expect.equals(3.0, n.z);
210 Expect.equals(4.0, n.w);
211 n = new Simd128Float32x4(5.0, 6.0, 7.0, 8.0);
212 m = n.toSimd128Mask();
213 Expect.equals(0x40A00000, m.x);
214 Expect.equals(0x40C00000, m.y);
215 Expect.equals(0x40E00000, m.z);
216 Expect.equals(0x41000000, m.w);
217 // Flip sign using bit-wise operators.
218 n = new Simd128Float32x4(9.0, 10.0, 11.0, 12.0);
219 m = new Simd128Mask(0x80000000, 0x80000000, 0x80000000, 0x80000000);
220 var nMask = n.toSimd128Mask();
221 nMask = nMask ^ m; // flip sign.
222 n = nMask.toSimd128Float32x4();
223 Expect.equals(-9.0, n.x);
224 Expect.equals(-10.0, n.y);
225 Expect.equals(-11.0, n.z);
226 Expect.equals(-12.0, n.w);
227 nMask = n.toSimd128Mask();
228 nMask = nMask ^ m; // flip sign.
229 n = nMask.toSimd128Float32x4();
230 Expect.equals(9.0, n.x);
231 Expect.equals(10.0, n.y);
232 Expect.equals(11.0, n.z);
233 Expect.equals(12.0, n.w);
234 }
235
236
237 testBitOperators() {
238 var m = new Simd128Mask(0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA);
239 var n = new Simd128Mask(0x55555555, 0x55555555, 0x55555555, 0x55555555);
240 Expect.equals(0xAAAAAAAA, m.x);
241 Expect.equals(0xAAAAAAAA, m.y);
242 Expect.equals(0xAAAAAAAA, m.z);
243 Expect.equals(0xAAAAAAAA, m.w);
244 Expect.equals(0x55555555, n.x);
245 Expect.equals(0x55555555, n.y);
246 Expect.equals(0x55555555, n.z);
247 Expect.equals(0x55555555, n.w);
248 Expect.equals(true, n.flagX);
249 Expect.equals(true, n.flagY);
250 Expect.equals(true, n.flagZ);
251 Expect.equals(true, n.flagW);
252 var o = m|n; // or
253 Expect.equals(0xFFFFFFFF, o.x);
254 Expect.equals(0xFFFFFFFF, o.y);
255 Expect.equals(0xFFFFFFFF, o.z);
256 Expect.equals(0xFFFFFFFF, o.w);
257 Expect.equals(true, o.flagX);
258 Expect.equals(true, o.flagY);
259 Expect.equals(true, o.flagZ);
260 Expect.equals(true, o.flagW);
261 o = m&n; // and
262 Expect.equals(0x0, o.x);
263 Expect.equals(0x0, o.y);
264 Expect.equals(0x0, o.z);
265 Expect.equals(0x0, o.w);
266 n = n.withX(0xAAAAAAAA);
267 n = n.withY(0xAAAAAAAA);
268 n = n.withZ(0xAAAAAAAA);
269 n = n.withW(0xAAAAAAAA);
270 Expect.equals(0xAAAAAAAA, n.x);
271 Expect.equals(0xAAAAAAAA, n.y);
272 Expect.equals(0xAAAAAAAA, n.z);
273 Expect.equals(0xAAAAAAAA, n.w);
274 o = m^n; // xor
275 Expect.equals(0x0, o.x);
276 Expect.equals(0x0, o.y);
277 Expect.equals(0x0, o.z);
278 Expect.equals(0x0, o.w);
279 Expect.equals(false, o.flagX);
280 Expect.equals(false, o.flagY);
281 Expect.equals(false, o.flagZ);
282 Expect.equals(false, o.flagW);
283 }
284
285 testSetters() {
286 var f = new Simd128Float32x4.zero();
287 Expect.equals(0.0, f.x);
288 Expect.equals(0.0, f.y);
289 Expect.equals(0.0, f.z);
290 Expect.equals(0.0, f.w);
291 f = f.withX(4.0);
292 Expect.equals(4.0, f.x);
293 f = f.withY(3.0);
294 Expect.equals(3.0, f.y);
295 f = f.withZ(2.0);
296 Expect.equals(2.0, f.z);
297 f = f.withW(1.0);
298 Expect.equals(1.0, f.w);
299 f = new Simd128Float32x4.zero();
300 f = f.withX(4.0).withZ(2.0).withW(1.0).withY(3.0);
301 Expect.equals(4.0, f.x);
302 Expect.equals(3.0, f.y);
303 Expect.equals(2.0, f.z);
304 Expect.equals(1.0, f.w);
305 var m = new Simd128Mask.bool(false, false, false, false);
306 Expect.equals(false, m.flagX);
307 Expect.equals(false, m.flagY);
308 Expect.equals(false, m.flagZ);
309 Expect.equals(false, m.flagW);
310 m = m.withFlagX(true);
311 Expect.equals(true, m.flagX);
312 Expect.equals(false, m.flagY);
313 Expect.equals(false, m.flagZ);
314 Expect.equals(false, m.flagW);
315 m = m.withFlagY(true);
316 Expect.equals(true, m.flagX);
317 Expect.equals(true, m.flagY);
318 Expect.equals(false, m.flagZ);
319 Expect.equals(false, m.flagW);
320 m = m.withFlagZ(true);
321 Expect.equals(true, m.flagX);
322 Expect.equals(true, m.flagY);
323 Expect.equals(true, m.flagZ);
324 Expect.equals(false, m.flagW);
325 m = m.withFlagW(true);
326 Expect.equals(true, m.flagX);
327 Expect.equals(true, m.flagY);
328 Expect.equals(true, m.flagZ);
329 Expect.equals(true, m.flagW);
330 }
331
332 testGetters() {
333 var f = new Simd128Float32x4(1.0, 2.0, 3.0, 4.0);
334 Expect.equals(1.0, f.x);
335 Expect.equals(2.0, f.y);
336 Expect.equals(3.0, f.z);
337 Expect.equals(4.0, f.w);
338 var m = new Simd128Mask.bool(false, true, true, false);
339 Expect.equals(false, m.flagX);
340 Expect.equals(true, m.flagY);
341 Expect.equals(true, m.flagZ);
342 Expect.equals(false, m.flagW);
343 }
344
345 main() {
346 for (int i = 0; i < 3000; i++) {
347 testGetters();
348 testSetters();
349 testBitOperators();
350 testConversions();
351 testSelect();
352 testShuffle();
353 testAdd();
354 testSub();
355 testNegate();
356 testMul();
357 testDiv();
358 testComparison();
359 testScale();
360 testClamp();
361 testAbs();
362 testMin();
363 testMax();
364 testSqrt();
365 testReciprocal();
366 testReciprocalSqrt();
367 }
368 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698