summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/SIMD/bool32x4-const.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/SIMD/bool32x4-const.js')
-rw-r--r--js/src/jit-test/tests/SIMD/bool32x4-const.js65
1 files changed, 65 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/SIMD/bool32x4-const.js b/js/src/jit-test/tests/SIMD/bool32x4-const.js
new file mode 100644
index 000000000..54bada215
--- /dev/null
+++ b/js/src/jit-test/tests/SIMD/bool32x4-const.js
@@ -0,0 +1,65 @@
+load(libdir + "simd.js");
+
+setJitCompilerOption("ion.warmup.trigger", 50);
+
+// Test constant folding into the Bool32x4 constructor.
+// Verify that we get the truthiness right, c.f. the ECMA ToBoolean() function.
+function f1() {
+ var B = SIMD.Bool32x4;
+ var S = SIMD.Bool32x4.splat;
+ return [
+ B(false, false, false, true),
+ B(true),
+ B(undefined, null, "", "x"),
+ B({}, 0, 1, -0.0),
+ B(NaN, -NaN, Symbol(), objectEmulatingUndefined()),
+
+ S(false),
+ S(true),
+ S(undefined),
+ S(null),
+
+ S(""),
+ S("x"),
+ S(0),
+ S(1),
+
+ S({}),
+ S(-0.0),
+ S(NaN),
+ S(Symbol()),
+
+ S(objectEmulatingUndefined())
+ ];
+}
+
+function f() {
+ for (var i = 0; i < 100; i++) {
+ var a = f1()
+ assertEqX4(a[0], [false, false, false, true]);
+ assertEqX4(a[1], [true, false, false, false]);
+ assertEqX4(a[2], [false, false, false, true]);
+ assertEqX4(a[3], [true, false, true, false]);
+ assertEqX4(a[4], [false, false, true, false]);
+
+ // Splats.
+ assertEqX4(a[5], [false, false, false, false]);
+ assertEqX4(a[6], [true, true, true, true]);
+ assertEqX4(a[7], [false, false, false, false]);
+ assertEqX4(a[8], [false, false, false, false]);
+
+ assertEqX4(a[9], [false, false, false, false]);
+ assertEqX4(a[10], [true, true, true, true]);
+ assertEqX4(a[11], [false, false, false, false]);
+ assertEqX4(a[12], [true, true, true, true]);
+
+ assertEqX4(a[13], [true, true, true, true]);
+ assertEqX4(a[14], [false, false, false, false]);
+ assertEqX4(a[15], [false, false, false, false]);
+ assertEqX4(a[16], [true, true, true, true]);
+
+ assertEqX4(a[17], [false, false, false, false]);
+ }
+}
+
+f();