summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/SIMD/bool32x4-const.js
blob: 54bada215b8a2971d70ef007ff7fd43940aa274a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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();