From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 21:33:14 +0200 Subject: Adding upstream version 115.7.0esr. Signed-off-by: Daniel Baumann --- js/src/jit-test/tests/warp/min-max-foldsTo-1.js | 47 +++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 js/src/jit-test/tests/warp/min-max-foldsTo-1.js (limited to 'js/src/jit-test/tests/warp/min-max-foldsTo-1.js') diff --git a/js/src/jit-test/tests/warp/min-max-foldsTo-1.js b/js/src/jit-test/tests/warp/min-max-foldsTo-1.js new file mode 100644 index 0000000000..accc6ea416 --- /dev/null +++ b/js/src/jit-test/tests/warp/min-max-foldsTo-1.js @@ -0,0 +1,47 @@ +with ({}); // Don't inline anything into the top-level script. + +function args() { return arguments; } + +for (let xs of [ + // Array + [[], [1, 2, 3]], + + // String + ["", "asdf"], + + // ArrayBufferView + [new Int32Array(0), new Int32Array(10)], + + // Arguments + [args(), args(1, 2, 3)], +]) { + for (let cst of [0, -1]) { + // Fold `Math.min(length ≥ 0, constant ≤ 0)` to `constant`. + let min = Function("x", `return Math.min(x.length, ${cst})`); + for (let i = 0; i < 100; ++i) { + let x = xs[i & 1]; + assertEq(min(x), cst); + } + + // Reverse operands. + min = Function("x", `return Math.min(${cst}, x.length)`); + for (let i = 0; i < 100; ++i) { + let x = xs[i & 1]; + assertEq(min(x), cst); + } + + // Fold `Math.max(length ≥ 0, constant ≤ 0)` to `length`. + let max = Function("x", `return Math.max(x.length, ${cst})`); + for (let i = 0; i < 100; ++i) { + let x = xs[i & 1]; + assertEq(max(x), x.length); + } + + // Reverse operands. + max = Function("x", `return Math.max(${cst}, x.length)`); + for (let i = 0; i < 100; ++i) { + let x = xs[i & 1]; + assertEq(max(x), x.length); + } + } +} -- cgit v1.2.3