diff options
Diffstat (limited to 'deps/v8/test/mjsunit/compiler/math-imul.js')
-rw-r--r-- | deps/v8/test/mjsunit/compiler/math-imul.js | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/compiler/math-imul.js b/deps/v8/test/mjsunit/compiler/math-imul.js new file mode 100644 index 0000000000..1de18a6a2d --- /dev/null +++ b/deps/v8/test/mjsunit/compiler/math-imul.js @@ -0,0 +1,76 @@ +// Copyright 2018 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. + +// Flags: --allow-natives-syntax --opt + +// Test Math.imul() with no inputs. +(function() { + function foo() { return Math.imul(); } + + assertEquals(0, foo()); + assertEquals(0, foo()); + %OptimizeFunctionOnNextCall(foo); + assertEquals(0, foo()); +})(); + +// Test Math.imul() with only one input. +(function() { + function foo(x) { return Math.imul(x); } + + assertEquals(0, foo(1)); + assertEquals(0, foo(2)); + %OptimizeFunctionOnNextCall(foo); + assertEquals(0, foo(3)); +})(); + +// Test Math.imul() with wrong types. +(function() { + function foo(x, y) { return Math.imul(x, y); } + + assertEquals(0, foo(null, 1)); + assertEquals(0, foo(2, undefined)); + %OptimizeFunctionOnNextCall(foo); + assertEquals(0, foo(null, 1)); + assertEquals(0, foo(2, undefined)); + %OptimizeFunctionOnNextCall(foo); + assertEquals(0, foo(null, 1)); + assertEquals(0, foo(2, undefined)); + assertOptimized(foo); +})(); + +// Test Math.imul() with signed integers (statically known). +(function() { + function foo(x, y) { return Math.imul(x|0, y|0); } + + assertEquals(1, foo(1, 1)); + assertEquals(2, foo(2, 1)); + %OptimizeFunctionOnNextCall(foo); + assertEquals(1, foo(1, 1)); + assertEquals(2, foo(2, 1)); + assertOptimized(foo); +})(); + +// Test Math.imul() with unsigned integers (statically known). +(function() { + function foo(x, y) { return Math.imul(x>>>0, y>>>0); } + + assertEquals(1, foo(1, 1)); + assertEquals(2, foo(2, 1)); + %OptimizeFunctionOnNextCall(foo); + assertEquals(1, foo(1, 1)); + assertEquals(2, foo(2, 1)); + assertOptimized(foo); +})(); + +// Test Math.imul() with floating-point numbers. +(function() { + function foo(x, y) { return Math.imul(x, y); } + + assertEquals(1, foo(1.1, 1.1)); + assertEquals(2, foo(2.1, 1.1)); + %OptimizeFunctionOnNextCall(foo); + assertEquals(1, foo(1.1, 1.1)); + assertEquals(2, foo(2.1, 1.1)); + assertOptimized(foo); +})(); |