OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Flags: --harmony-simd --harmony-tostring --harmony-reflect | 5 // Flags: --harmony-simd --harmony-tostring --harmony-reflect |
6 // Flags: --allow-natives-syntax --expose-natives-as natives --noalways-opt | 6 // Flags: --allow-natives-syntax --expose-natives-as natives --noalways-opt |
7 | 7 |
8 function lanesForType(typeName) { | 8 function lanesForType(typeName) { |
9 // The lane count follows the first 'x' in the type name, which begins with | 9 // The lane count follows the first 'x' in the type name, which begins with |
10 // 'float', 'int', or 'bool'. | 10 // 'float', 'int', or 'bool'. |
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
400 test(false, true); | 400 test(false, true); |
401 break; | 401 break; |
402 } | 402 } |
403 } | 403 } |
404 | 404 |
405 | 405 |
406 function TestSameValue(type, lanes) { | 406 function TestSameValue(type, lanes) { |
407 var simdFn = SIMD[type]; | 407 var simdFn = SIMD[type]; |
408 var instance = createInstance(type); | 408 var instance = createInstance(type); |
409 var sameValue = Object.is | 409 var sameValue = Object.is |
410 var sameValueZero = natives.ImportNow("SameValueZero"); | 410 var sameValueZero = function(x, y) { return %SameValue(x, y); } |
411 | 411 |
412 // SIMD values should not be the same as instances of different types. | 412 // SIMD values should not be the same as instances of different types. |
413 checkTypeMatrix(type, function(other) { | 413 checkTypeMatrix(type, function(other) { |
414 assertFalse(sameValue(instance, other)); | 414 assertFalse(sameValue(instance, other)); |
415 assertFalse(sameValueZero(instance, other)); | 415 assertFalse(sameValueZero(instance, other)); |
416 }); | 416 }); |
417 | 417 |
418 // Test that f(a, b) is the same as f(SIMD(a), SIMD(b)) for sameValue and | 418 // Test that f(a, b) is the same as f(SIMD(a), SIMD(b)) for sameValue and |
419 // sameValueZero, at every lane. | 419 // sameValueZero, at every lane. |
420 function test(a, b) { | 420 function test(a, b) { |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
625 assertEquals(expected, JSON.stringify(input, null, 0)); | 625 assertEquals(expected, JSON.stringify(input, null, 0)); |
626 } | 626 } |
627 | 627 |
628 TestStringify(undefined, SIMD.Float32x4(1, 2, 3, 4)); | 628 TestStringify(undefined, SIMD.Float32x4(1, 2, 3, 4)); |
629 TestStringify('[null]', [SIMD.Float32x4(1, 2, 3, 4)]); | 629 TestStringify('[null]', [SIMD.Float32x4(1, 2, 3, 4)]); |
630 TestStringify('[{}]', [Object(SIMD.Float32x4(1, 2, 3, 4))]); | 630 TestStringify('[{}]', [Object(SIMD.Float32x4(1, 2, 3, 4))]); |
631 var simd_wrapper = Object(SIMD.Float32x4(1, 2, 3, 4)); | 631 var simd_wrapper = Object(SIMD.Float32x4(1, 2, 3, 4)); |
632 TestStringify('{}', simd_wrapper); | 632 TestStringify('{}', simd_wrapper); |
633 simd_wrapper.a = 1; | 633 simd_wrapper.a = 1; |
634 TestStringify('{"a":1}', simd_wrapper); | 634 TestStringify('{"a":1}', simd_wrapper); |
OLD | NEW |