OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 // VMOptions=--deoptimization_counter_threshold=1000 --optimization-counter-thre
shold=10 | 4 // VMOptions=--deoptimization_counter_threshold=1000 --optimization-counter-thre
shold=10 |
5 | 5 |
6 // Library tag to be able to run in html test framework. | 6 // Library tag to be able to run in html test framework. |
7 library float32x4_test; | 7 library float32x4_test; |
8 | 8 |
9 import "package:expect/expect.dart"; | 9 import "package:expect/expect.dart"; |
10 import 'dart:typed_data'; | 10 import 'dart:typed_data'; |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 Expect.equals(-1.0, o.y); | 56 Expect.equals(-1.0, o.y); |
57 Expect.equals(-1.0, o.z); | 57 Expect.equals(-1.0, o.z); |
58 Expect.equals(-1.0, o.w); | 58 Expect.equals(-1.0, o.w); |
59 } | 59 } |
60 | 60 |
61 testComparison() { | 61 testComparison() { |
62 var m = new Float32x4(1.0, 2.0, 0.1, 0.001); | 62 var m = new Float32x4(1.0, 2.0, 0.1, 0.001); |
63 var n = new Float32x4(2.0, 2.0, 0.001, 0.1); | 63 var n = new Float32x4(2.0, 2.0, 0.001, 0.1); |
64 var cmp; | 64 var cmp; |
65 cmp = m.lessThan(n); | 65 cmp = m.lessThan(n); |
66 Expect.equals(0xFFFFFFFF, cmp.x); | 66 Expect.equals(-1, cmp.x); |
67 Expect.equals(0x0, cmp.y); | 67 Expect.equals(0x0, cmp.y); |
68 Expect.equals(0x0, cmp.z); | 68 Expect.equals(0x0, cmp.z); |
69 Expect.equals(0xFFFFFFFF, cmp.w); | 69 Expect.equals(-1, cmp.w); |
70 | 70 |
71 cmp = m.lessThanOrEqual(n); | 71 cmp = m.lessThanOrEqual(n); |
72 Expect.equals(0xFFFFFFFF, cmp.x); | 72 Expect.equals(-1, cmp.x); |
73 Expect.equals(0xFFFFFFFF, cmp.y); | 73 Expect.equals(-1, cmp.y); |
74 Expect.equals(0x0, cmp.z); | 74 Expect.equals(0x0, cmp.z); |
75 Expect.equals(0xFFFFFFFF, cmp.w); | 75 Expect.equals(-1, cmp.w); |
76 | 76 |
77 cmp = m.equal(n); | 77 cmp = m.equal(n); |
78 Expect.equals(0x0, cmp.x); | 78 Expect.equals(0x0, cmp.x); |
79 Expect.equals(0xFFFFFFFF, cmp.y); | 79 Expect.equals(-1, cmp.y); |
80 Expect.equals(0x0, cmp.z); | 80 Expect.equals(0x0, cmp.z); |
81 Expect.equals(0x0, cmp.w); | 81 Expect.equals(0x0, cmp.w); |
82 | 82 |
83 cmp = m.notEqual(n); | 83 cmp = m.notEqual(n); |
84 Expect.equals(0xFFFFFFFF, cmp.x); | 84 Expect.equals(-1, cmp.x); |
85 Expect.equals(0x0, cmp.y); | 85 Expect.equals(0x0, cmp.y); |
86 Expect.equals(0xFFFFFFFF, cmp.z); | 86 Expect.equals(-1, cmp.z); |
87 Expect.equals(0xFFFFFFFF, cmp.w); | 87 Expect.equals(-1, cmp.w); |
88 | 88 |
89 cmp = m.greaterThanOrEqual(n); | 89 cmp = m.greaterThanOrEqual(n); |
90 Expect.equals(0x0, cmp.x); | 90 Expect.equals(0x0, cmp.x); |
91 Expect.equals(0xFFFFFFFF, cmp.y); | 91 Expect.equals(-1, cmp.y); |
92 Expect.equals(0xFFFFFFFF, cmp.z); | 92 Expect.equals(-1, cmp.z); |
93 Expect.equals(0x0, cmp.w); | 93 Expect.equals(0x0, cmp.w); |
94 | 94 |
95 cmp = m.greaterThan(n); | 95 cmp = m.greaterThan(n); |
96 Expect.equals(0x0, cmp.x); | 96 Expect.equals(0x0, cmp.x); |
97 Expect.equals(0x0, cmp.y); | 97 Expect.equals(0x0, cmp.y); |
98 Expect.equals(0xFFFFFFFF, cmp.z); | 98 Expect.equals(-1, cmp.z); |
99 Expect.equals(0x0, cmp.w); | 99 Expect.equals(0x0, cmp.w); |
100 } | 100 } |
101 | 101 |
102 testAbs() { | 102 testAbs() { |
103 var m = new Float32x4(1.0, -2.0, 3.0, -4.0); | 103 var m = new Float32x4(1.0, -2.0, 3.0, -4.0); |
104 m = m.abs(); | 104 m = m.abs(); |
105 Expect.equals(1.0, m.x); | 105 Expect.equals(1.0, m.x); |
106 Expect.equals(2.0, m.y); | 106 Expect.equals(2.0, m.y); |
107 Expect.equals(3.0, m.z); | 107 Expect.equals(3.0, m.z); |
108 Expect.equals(4.0, m.w); | 108 Expect.equals(4.0, m.w); |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 testReciprocalSqrt() { | 213 testReciprocalSqrt() { |
214 var m = new Float32x4(1.0, 0.25, 0.111111, 0.0625); | 214 var m = new Float32x4(1.0, 0.25, 0.111111, 0.0625); |
215 m = m.reciprocalSqrt(); | 215 m = m.reciprocalSqrt(); |
216 Expect.approxEquals(1.0, m.x, 0.001); | 216 Expect.approxEquals(1.0, m.x, 0.001); |
217 Expect.approxEquals(2.0, m.y, 0.001); | 217 Expect.approxEquals(2.0, m.y, 0.001); |
218 Expect.approxEquals(3.0, m.z, 0.001); | 218 Expect.approxEquals(3.0, m.z, 0.001); |
219 Expect.approxEquals(4.0, m.w, 0.001); | 219 Expect.approxEquals(4.0, m.w, 0.001); |
220 } | 220 } |
221 | 221 |
222 testSelect() { | 222 testSelect() { |
223 var m = new Uint32x4.bool(true, true, false, false); | 223 var m = new Int32x4.bool(true, true, false, false); |
224 var t = new Float32x4(1.0, 2.0, 3.0, 4.0); | 224 var t = new Float32x4(1.0, 2.0, 3.0, 4.0); |
225 var f = new Float32x4(5.0, 6.0, 7.0, 8.0); | 225 var f = new Float32x4(5.0, 6.0, 7.0, 8.0); |
226 var s = m.select(t, f); | 226 var s = m.select(t, f); |
227 Expect.equals(1.0, s.x); | 227 Expect.equals(1.0, s.x); |
228 Expect.equals(2.0, s.y); | 228 Expect.equals(2.0, s.y); |
229 Expect.equals(7.0, s.z); | 229 Expect.equals(7.0, s.z); |
230 Expect.equals(8.0, s.w); | 230 Expect.equals(8.0, s.w); |
231 } | 231 } |
232 | 232 |
233 testConversions() { | 233 testConversions() { |
234 var m = new Uint32x4(0x3F800000, 0x40000000, 0x40400000, 0x40800000); | 234 var m = new Int32x4(0x3F800000, 0x40000000, 0x40400000, 0x40800000); |
235 var n = new Float32x4.fromUint32x4Bits(m); | 235 var n = new Float32x4.fromInt32x4Bits(m); |
236 Expect.equals(1.0, n.x); | 236 Expect.equals(1.0, n.x); |
237 Expect.equals(2.0, n.y); | 237 Expect.equals(2.0, n.y); |
238 Expect.equals(3.0, n.z); | 238 Expect.equals(3.0, n.z); |
239 Expect.equals(4.0, n.w); | 239 Expect.equals(4.0, n.w); |
240 n = new Float32x4(5.0, 6.0, 7.0, 8.0); | 240 n = new Float32x4(5.0, 6.0, 7.0, 8.0); |
241 m = new Uint32x4.fromFloat32x4Bits(n); | 241 m = new Int32x4.fromFloat32x4Bits(n); |
242 Expect.equals(0x40A00000, m.x); | 242 Expect.equals(0x40A00000, m.x); |
243 Expect.equals(0x40C00000, m.y); | 243 Expect.equals(0x40C00000, m.y); |
244 Expect.equals(0x40E00000, m.z); | 244 Expect.equals(0x40E00000, m.z); |
245 Expect.equals(0x41000000, m.w); | 245 Expect.equals(0x41000000, m.w); |
246 // Flip sign using bit-wise operators. | 246 // Flip sign using bit-wise operators. |
247 n = new Float32x4(9.0, 10.0, 11.0, 12.0); | 247 n = new Float32x4(9.0, 10.0, 11.0, 12.0); |
248 m = new Uint32x4(0x80000000, 0x80000000, 0x80000000, 0x80000000); | 248 m = new Int32x4(0x80000000, 0x80000000, 0x80000000, 0x80000000); |
249 var nMask = new Uint32x4.fromFloat32x4Bits(n); | 249 var nMask = new Int32x4.fromFloat32x4Bits(n); |
250 nMask = nMask ^ m; // flip sign. | 250 nMask = nMask ^ m; // flip sign. |
251 n = new Float32x4.fromUint32x4Bits(nMask); | 251 n = new Float32x4.fromInt32x4Bits(nMask); |
252 Expect.equals(-9.0, n.x); | 252 Expect.equals(-9.0, n.x); |
253 Expect.equals(-10.0, n.y); | 253 Expect.equals(-10.0, n.y); |
254 Expect.equals(-11.0, n.z); | 254 Expect.equals(-11.0, n.z); |
255 Expect.equals(-12.0, n.w); | 255 Expect.equals(-12.0, n.w); |
256 nMask = new Uint32x4.fromFloat32x4Bits(n); | 256 nMask = new Int32x4.fromFloat32x4Bits(n); |
257 nMask = nMask ^ m; // flip sign. | 257 nMask = nMask ^ m; // flip sign. |
258 n = new Float32x4.fromUint32x4Bits(nMask); | 258 n = new Float32x4.fromInt32x4Bits(nMask); |
259 Expect.equals(9.0, n.x); | 259 Expect.equals(9.0, n.x); |
260 Expect.equals(10.0, n.y); | 260 Expect.equals(10.0, n.y); |
261 Expect.equals(11.0, n.z); | 261 Expect.equals(11.0, n.z); |
262 Expect.equals(12.0, n.w); | 262 Expect.equals(12.0, n.w); |
263 } | 263 } |
264 | 264 |
265 | 265 |
266 testBitOperators() { | 266 testBitOperators() { |
267 var m = new Uint32x4(0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA); | 267 var m = new Int32x4(0xAAAAAAA, 0xAAAAAAA, 0xAAAAAAA, 0xAAAAAAA); |
268 var n = new Uint32x4(0x55555555, 0x55555555, 0x55555555, 0x55555555); | 268 var n = new Int32x4(0x5555555, 0x5555555, 0x5555555, 0x5555555); |
269 Expect.equals(0xAAAAAAAA, m.x); | 269 Expect.equals(0xAAAAAAA, m.x); |
270 Expect.equals(0xAAAAAAAA, m.y); | 270 Expect.equals(0xAAAAAAA, m.y); |
271 Expect.equals(0xAAAAAAAA, m.z); | 271 Expect.equals(0xAAAAAAA, m.z); |
272 Expect.equals(0xAAAAAAAA, m.w); | 272 Expect.equals(0xAAAAAAA, m.w); |
273 Expect.equals(0x55555555, n.x); | 273 Expect.equals(0x5555555, n.x); |
274 Expect.equals(0x55555555, n.y); | 274 Expect.equals(0x5555555, n.y); |
275 Expect.equals(0x55555555, n.z); | 275 Expect.equals(0x5555555, n.z); |
276 Expect.equals(0x55555555, n.w); | 276 Expect.equals(0x5555555, n.w); |
277 Expect.equals(true, n.flagX); | 277 Expect.equals(true, n.flagX); |
278 Expect.equals(true, n.flagY); | 278 Expect.equals(true, n.flagY); |
279 Expect.equals(true, n.flagZ); | 279 Expect.equals(true, n.flagZ); |
280 Expect.equals(true, n.flagW); | 280 Expect.equals(true, n.flagW); |
281 var o = m|n; // or | 281 var o = m|n; // or |
282 Expect.equals(0xFFFFFFFF, o.x); | 282 Expect.equals(0xFFFFFFF, o.x); |
283 Expect.equals(0xFFFFFFFF, o.y); | 283 Expect.equals(0xFFFFFFF, o.y); |
284 Expect.equals(0xFFFFFFFF, o.z); | 284 Expect.equals(0xFFFFFFF, o.z); |
285 Expect.equals(0xFFFFFFFF, o.w); | 285 Expect.equals(0xFFFFFFF, o.w); |
286 Expect.equals(true, o.flagX); | 286 Expect.equals(true, o.flagX); |
287 Expect.equals(true, o.flagY); | 287 Expect.equals(true, o.flagY); |
288 Expect.equals(true, o.flagZ); | 288 Expect.equals(true, o.flagZ); |
289 Expect.equals(true, o.flagW); | 289 Expect.equals(true, o.flagW); |
290 o = m&n; // and | 290 o = m&n; // and |
291 Expect.equals(0x0, o.x); | 291 Expect.equals(0x0, o.x); |
292 Expect.equals(0x0, o.y); | 292 Expect.equals(0x0, o.y); |
293 Expect.equals(0x0, o.z); | 293 Expect.equals(0x0, o.z); |
294 Expect.equals(0x0, o.w); | 294 Expect.equals(0x0, o.w); |
295 n = n.withX(0xAAAAAAAA); | 295 n = n.withX(0xAAAAAAA); |
296 n = n.withY(0xAAAAAAAA); | 296 n = n.withY(0xAAAAAAA); |
297 n = n.withZ(0xAAAAAAAA); | 297 n = n.withZ(0xAAAAAAA); |
298 n = n.withW(0xAAAAAAAA); | 298 n = n.withW(0xAAAAAAA); |
299 Expect.equals(0xAAAAAAAA, n.x); | 299 Expect.equals(0xAAAAAAA, n.x); |
300 Expect.equals(0xAAAAAAAA, n.y); | 300 Expect.equals(0xAAAAAAA, n.y); |
301 Expect.equals(0xAAAAAAAA, n.z); | 301 Expect.equals(0xAAAAAAA, n.z); |
302 Expect.equals(0xAAAAAAAA, n.w); | 302 Expect.equals(0xAAAAAAA, n.w); |
303 o = m^n; // xor | 303 o = m^n; // xor |
304 Expect.equals(0x0, o.x); | 304 Expect.equals(0x0, o.x); |
305 Expect.equals(0x0, o.y); | 305 Expect.equals(0x0, o.y); |
306 Expect.equals(0x0, o.z); | 306 Expect.equals(0x0, o.z); |
307 Expect.equals(0x0, o.w); | 307 Expect.equals(0x0, o.w); |
308 Expect.equals(false, o.flagX); | 308 Expect.equals(false, o.flagX); |
309 Expect.equals(false, o.flagY); | 309 Expect.equals(false, o.flagY); |
310 Expect.equals(false, o.flagZ); | 310 Expect.equals(false, o.flagZ); |
311 Expect.equals(false, o.flagW); | 311 Expect.equals(false, o.flagW); |
312 } | 312 } |
(...skipping 11 matching lines...) Expand all Loading... |
324 f = f.withZ(2.0); | 324 f = f.withZ(2.0); |
325 Expect.equals(2.0, f.z); | 325 Expect.equals(2.0, f.z); |
326 f = f.withW(1.0); | 326 f = f.withW(1.0); |
327 Expect.equals(1.0, f.w); | 327 Expect.equals(1.0, f.w); |
328 f = new Float32x4.zero(); | 328 f = new Float32x4.zero(); |
329 f = f.withX(4.0).withZ(2.0).withW(1.0).withY(3.0); | 329 f = f.withX(4.0).withZ(2.0).withW(1.0).withY(3.0); |
330 Expect.equals(4.0, f.x); | 330 Expect.equals(4.0, f.x); |
331 Expect.equals(3.0, f.y); | 331 Expect.equals(3.0, f.y); |
332 Expect.equals(2.0, f.z); | 332 Expect.equals(2.0, f.z); |
333 Expect.equals(1.0, f.w); | 333 Expect.equals(1.0, f.w); |
334 var m = new Uint32x4.bool(false, false, false, false); | 334 var m = new Int32x4.bool(false, false, false, false); |
335 Expect.equals(false, m.flagX); | 335 Expect.equals(false, m.flagX); |
336 Expect.equals(false, m.flagY); | 336 Expect.equals(false, m.flagY); |
337 Expect.equals(false, m.flagZ); | 337 Expect.equals(false, m.flagZ); |
338 Expect.equals(false, m.flagW); | 338 Expect.equals(false, m.flagW); |
339 m = m.withFlagX(true); | 339 m = m.withFlagX(true); |
340 Expect.equals(true, m.flagX); | 340 Expect.equals(true, m.flagX); |
341 Expect.equals(false, m.flagY); | 341 Expect.equals(false, m.flagY); |
342 Expect.equals(false, m.flagZ); | 342 Expect.equals(false, m.flagZ); |
343 Expect.equals(false, m.flagW); | 343 Expect.equals(false, m.flagW); |
344 m = m.withFlagY(true); | 344 m = m.withFlagY(true); |
(...skipping 12 matching lines...) Expand all Loading... |
357 Expect.equals(true, m.flagZ); | 357 Expect.equals(true, m.flagZ); |
358 Expect.equals(true, m.flagW); | 358 Expect.equals(true, m.flagW); |
359 } | 359 } |
360 | 360 |
361 testGetters() { | 361 testGetters() { |
362 var f = new Float32x4(1.0, 2.0, 3.0, 4.0); | 362 var f = new Float32x4(1.0, 2.0, 3.0, 4.0); |
363 Expect.equals(1.0, f.x); | 363 Expect.equals(1.0, f.x); |
364 Expect.equals(2.0, f.y); | 364 Expect.equals(2.0, f.y); |
365 Expect.equals(3.0, f.z); | 365 Expect.equals(3.0, f.z); |
366 Expect.equals(4.0, f.w); | 366 Expect.equals(4.0, f.w); |
367 var m = new Uint32x4.bool(false, true, true, false); | 367 var m = new Int32x4.bool(false, true, true, false); |
368 Expect.equals(false, m.flagX); | 368 Expect.equals(false, m.flagX); |
369 Expect.equals(true, m.flagY); | 369 Expect.equals(true, m.flagY); |
370 Expect.equals(true, m.flagZ); | 370 Expect.equals(true, m.flagZ); |
371 Expect.equals(false, m.flagW); | 371 Expect.equals(false, m.flagW); |
372 } | 372 } |
373 | 373 |
374 void testSplat() { | 374 void testSplat() { |
375 var f = new Float32x4.splat(2.0); | 375 var f = new Float32x4.splat(2.0); |
376 Expect.equals(2.0, f.x); | 376 Expect.equals(2.0, f.x); |
377 Expect.equals(2.0, f.y); | 377 Expect.equals(2.0, f.y); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
416 testScale(); | 416 testScale(); |
417 testClamp(); | 417 testClamp(); |
418 testAbs(); | 418 testAbs(); |
419 testMin(); | 419 testMin(); |
420 testMax(); | 420 testMax(); |
421 testSqrt(); | 421 testSqrt(); |
422 testReciprocal(); | 422 testReciprocal(); |
423 testReciprocalSqrt(); | 423 testReciprocalSqrt(); |
424 } | 424 } |
425 } | 425 } |
OLD | NEW |