blob: 942e9d0b7d2c6cc8a51998890a95e6fadb02becb [file] [log] [blame]
Ben Murdoch097c5b22016-05-18 11:27:45 +01001// Copyright 2016 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Flags: --allow-natives-syntax
6
7var a = new Float64Array(4);
8a[2] *= -1;
9a[3] *= -1;
10assertEquals(0, a[0]);
11assertEquals(0, a[1]);
12assertEquals(-0, a[2]);
13assertEquals(-0, a[3]);
14
15function f1() {
16 var z = a[0];
17 // Same register.
18 assertEquals(0, Math.min(z, z));
19}
20
21function f2() {
22 // Different registers.
23 assertEquals(0, Math.min(a[0], a[1]));
24}
25
26function f3() {
27 // Zero and minus zero.
28 assertEquals(-0, Math.min(a[1], a[2]));
29}
30
31function f4() {
32 // Zero and minus zero, reversed order.
33 assertEquals(-0, Math.min(a[2], a[1]));
34}
35
36function f5() {
37 // Minus zero, same register.
38 var m_z = a[2];
39 assertEquals(-0, Math.min(m_z, m_z));
40}
41
42function f6() {
43 // Minus zero, different registers.
44 assertEquals(-0, Math.min(a[2], a[3]));
45}
46
47for (var i = 0; i < 3; i++) {
48 f1();
49 f2();
50 f3();
51 f4();
52 f5();
53 f6();
54}
55%OptimizeFunctionOnNextCall(f1);
56%OptimizeFunctionOnNextCall(f2);
57%OptimizeFunctionOnNextCall(f3);
58%OptimizeFunctionOnNextCall(f4);
59%OptimizeFunctionOnNextCall(f5);
60%OptimizeFunctionOnNextCall(f6);
61f1();
62f2();
63f3();
64f4();
65f5();
66f6();