| // Copyright 2014 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| function Module(stdlib, foreign, heap) { |
| "use asm"; |
| function f1(i) { |
| i = +i; |
| return +(i * -1); |
| } |
| function f2(i) { |
| i = +i; |
| return +(-1. * i); |
| } |
| function f3(i) { |
| i = +i; |
| return +(-i); |
| } |
| return { f1: f1, f2: f2, f3: f3 }; |
| } |
| |
| var m = Module(this, {}, new ArrayBuffer(64 * 1024)); |
| |
| assertEquals(NaN, m.f1(NaN)); |
| assertEquals(NaN, m.f2(NaN)); |
| assertEquals(NaN, m.f3(NaN)); |
| assertEquals(Infinity, 1 / m.f1(-0)); |
| assertEquals(Infinity, 1 / m.f2(-0)); |
| assertEquals(Infinity, 1 / m.f3(-0)); |
| assertEquals(Infinity, m.f1(-Infinity)); |
| assertEquals(Infinity, m.f2(-Infinity)); |
| assertEquals(Infinity, m.f3(-Infinity)); |
| assertEquals(-Infinity, 1 / m.f1(0)); |
| assertEquals(-Infinity, 1 / m.f2(0)); |
| assertEquals(-Infinity, 1 / m.f3(0)); |
| assertEquals(-Infinity, m.f1(Infinity)); |
| assertEquals(-Infinity, m.f2(Infinity)); |
| assertEquals(-Infinity, m.f3(Infinity)); |
| for (var i = -2147483648; i < 2147483648; i += 3999777) { |
| assertEquals(-i, m.f1(i)); |
| assertEquals(-i, m.f2(i)); |
| assertEquals(-i, m.f3(i)); |
| } |