[JSC] Do not use asArrayModes() with Structures because it discards TypedArray inform...
[WebKit-https.git] / JSTests / stress / big-int-right-shift-general.js
1 //@ runBigIntEnabled
2
3 // Copyright (C) 2017 Josh Wolfe. All rights reserved.
4 // This code is governed by the BSD license found in the LICENSE file.
5
6 function assert(a) {
7     if (!a)
8         throw new Error("Bad assertion");
9 }
10
11 assert.sameValue = function (input, expected, message) {
12     if (input !== expected)
13         throw new Error(message);
14 }
15
16 assert.sameValue(0n >> 0n, 0n, "0n >> 0n === 0n");
17 assert.sameValue(0b101n >> -1n, 0b1010n, "0b101n >> -1n === 0b1010n");
18 assert.sameValue(0b101n >> -2n, 0b10100n, "0b101n >> -2n === 0b10100n");
19 assert.sameValue(0b101n >> -3n, 0b101000n, "0b101n >> -3n === 0b101000n");
20 assert.sameValue(0b101n >> 1n, 0b10n, "0b101n >> 1n === 0b10n");
21 assert.sameValue(0b101n >> 2n, 1n, "0b101n >> 2n === 1n");
22 assert.sameValue(0b101n >> 3n, 0n, "0b101n >> 3n === 0n");
23 assert.sameValue(0n >> -128n, 0n, "0n >> -128n === 0n");
24 assert.sameValue(0n >> 128n, 0n, "0n >> 128n === 0n");
25 assert.sameValue(0x246n >> 0n, 0x246n, "0x246n >> 0n === 0x246n");
26 assert.sameValue(0x246n >> -127n, 0x12300000000000000000000000000000000n, "0x246n >> -127n === 0x12300000000000000000000000000000000n");
27 assert.sameValue(0x246n >> -128n, 0x24600000000000000000000000000000000n, "0x246n >> -128n === 0x24600000000000000000000000000000000n");
28 assert.sameValue(0x246n >> -129n, 0x48c00000000000000000000000000000000n, "0x246n >> -129n === 0x48c00000000000000000000000000000000n");
29 assert.sameValue(0x246n >> 128n, 0n, "0x246n >> 128n === 0n");
30 assert.sameValue(
31   0x123456789abcdef0fedcba9876543212345678n >> -64n, 0x123456789abcdef0fedcba98765432123456780000000000000000n,
32   "0x123456789abcdef0fedcba9876543212345678n >> -64n === 0x123456789abcdef0fedcba98765432123456780000000000000000n");
33 assert.sameValue(
34   0x123456789abcdef0fedcba9876543212345678n >> -32n, 0x123456789abcdef0fedcba987654321234567800000000n,
35   "0x123456789abcdef0fedcba9876543212345678n >> -32n === 0x123456789abcdef0fedcba987654321234567800000000n");
36 assert.sameValue(
37   0x123456789abcdef0fedcba9876543212345678n >> -16n, 0x123456789abcdef0fedcba98765432123456780000n,
38   "0x123456789abcdef0fedcba9876543212345678n >> -16n === 0x123456789abcdef0fedcba98765432123456780000n");
39 assert.sameValue(
40   0x123456789abcdef0fedcba9876543212345678n >> 0n, 0x123456789abcdef0fedcba9876543212345678n,
41   "0x123456789abcdef0fedcba9876543212345678n >> 0n === 0x123456789abcdef0fedcba9876543212345678n");
42 assert.sameValue(
43   0x123456789abcdef0fedcba9876543212345678n >> 16n, 0x123456789abcdef0fedcba987654321234n,
44   "0x123456789abcdef0fedcba9876543212345678n >> 16n === 0x123456789abcdef0fedcba987654321234n");
45 assert.sameValue(
46   0x123456789abcdef0fedcba9876543212345678n >> 32n, 0x123456789abcdef0fedcba98765432n,
47   "0x123456789abcdef0fedcba9876543212345678n >> 32n === 0x123456789abcdef0fedcba98765432n");
48 assert.sameValue(
49   0x123456789abcdef0fedcba9876543212345678n >> 64n, 0x123456789abcdef0fedcban,
50   "0x123456789abcdef0fedcba9876543212345678n >> 64n === 0x123456789abcdef0fedcban");
51 assert.sameValue(
52   0x123456789abcdef0fedcba9876543212345678n >> 127n, 0x2468acn,
53   "0x123456789abcdef0fedcba9876543212345678n >> 127n === 0x2468acn");
54 assert.sameValue(
55   0x123456789abcdef0fedcba9876543212345678n >> 128n, 0x123456n,
56   "0x123456789abcdef0fedcba9876543212345678n >> 128n === 0x123456n");
57 assert.sameValue(
58   0x123456789abcdef0fedcba9876543212345678n >> 129n, 0x91a2bn,
59   "0x123456789abcdef0fedcba9876543212345678n >> 129n === 0x91a2bn");
60 assert.sameValue(-5n >> -1n, -0xan, "-5n >> -1n === -0xan");
61 assert.sameValue(-5n >> -2n, -0x14n, "-5n >> -2n === -0x14n");
62 assert.sameValue(-5n >> -3n, -0x28n, "-5n >> -3n === -0x28n");
63 assert.sameValue(-5n >> 1n, -3n, "-5n >> 1n === -3n");
64 assert.sameValue(-5n >> 2n, -2n, "-5n >> 2n === -2n");
65 assert.sameValue(-5n >> 3n, -1n, "-5n >> 3n === -1n");
66 assert.sameValue(-1n >> -128n, -0x100000000000000000000000000000000n, "-1n >> -128n === -0x100000000000000000000000000000000n");
67 assert.sameValue(-1n >> 0n, -1n, "-1n >> 0n === -1n");
68 assert.sameValue(-1n >> 128n, -1n, "-1n >> 128n === -1n");
69 assert.sameValue(-0x246n >> 0n, -0x246n, "-0x246n >> 0n === -0x246n");
70 assert.sameValue(-0x246n >> -127n, -0x12300000000000000000000000000000000n, "-0x246n >> -127n === -0x12300000000000000000000000000000000n");
71 assert.sameValue(-0x246n >> -128n, -0x24600000000000000000000000000000000n, "-0x246n >> -128n === -0x24600000000000000000000000000000000n");
72 assert.sameValue(-0x246n >> -129n, -0x48c00000000000000000000000000000000n, "-0x246n >> -129n === -0x48c00000000000000000000000000000000n");
73 assert.sameValue(-0x246n >> 128n, -1n, "-0x246n >> 128n === -1n");
74 assert.sameValue(
75   -0x123456789abcdef0fedcba9876543212345678n >> -64n, -0x123456789abcdef0fedcba98765432123456780000000000000000n,
76   "-0x123456789abcdef0fedcba9876543212345678n >> -64n === -0x123456789abcdef0fedcba98765432123456780000000000000000n");
77 assert.sameValue(
78   -0x123456789abcdef0fedcba9876543212345678n >> -32n, -0x123456789abcdef0fedcba987654321234567800000000n,
79   "-0x123456789abcdef0fedcba9876543212345678n >> -32n === -0x123456789abcdef0fedcba987654321234567800000000n");
80 assert.sameValue(
81   -0x123456789abcdef0fedcba9876543212345678n >> -16n, -0x123456789abcdef0fedcba98765432123456780000n,
82   "-0x123456789abcdef0fedcba9876543212345678n >> -16n === -0x123456789abcdef0fedcba98765432123456780000n");
83 assert.sameValue(
84   -0x123456789abcdef0fedcba9876543212345678n >> 0n, -0x123456789abcdef0fedcba9876543212345678n,
85   "-0x123456789abcdef0fedcba9876543212345678n >> 0n === -0x123456789abcdef0fedcba9876543212345678n");
86 assert.sameValue(
87   -0x123456789abcdef0fedcba9876543212345678n >> 16n, -0x123456789abcdef0fedcba987654321235n,
88   "-0x123456789abcdef0fedcba9876543212345678n >> 16n === -0x123456789abcdef0fedcba987654321235n");
89 assert.sameValue(
90   -0x123456789abcdef0fedcba9876543212345678n >> 32n, -0x123456789abcdef0fedcba98765433n,
91   "-0x123456789abcdef0fedcba9876543212345678n >> 32n === -0x123456789abcdef0fedcba98765433n");
92 assert.sameValue(
93   -0x123456789abcdef0fedcba9876543212345678n >> 64n, -0x123456789abcdef0fedcbbn,
94   "-0x123456789abcdef0fedcba9876543212345678n >> 64n === -0x123456789abcdef0fedcbbn");
95 assert.sameValue(
96   -0x123456789abcdef0fedcba9876543212345678n >> 127n, -0x2468adn,
97   "-0x123456789abcdef0fedcba9876543212345678n >> 127n === -0x2468adn");
98 assert.sameValue(
99   -0x123456789abcdef0fedcba9876543212345678n >> 128n, -0x123457n,
100   "-0x123456789abcdef0fedcba9876543212345678n >> 128n === -0x123457n");
101 assert.sameValue(
102   -0x123456789abcdef0fedcba9876543212345678n >> 129n, -0x91a2cn,
103   "-0x123456789abcdef0fedcba9876543212345678n >> 129n === -0x91a2cn");
104