Discard cached processes when clearing website data store
[WebKit-https.git] / PerformanceTests / BigIntBench / big-int-cse.js
1 function assert(a, e) {
2     if (a !== e)
3         throw new Error("Expected " + e + " but got: " + a);
4 }
5
6 function bigIntAdd(a, b) {
7     let c = a + b;
8     return b + a + c;
9 }
10 noInline(bigIntAdd);
11
12 for (let i = 0; i < 100000; i++) {
13     assert(bigIntAdd(3n, 5n), 16n);
14 }
15
16 for (let i = 0; i < 100000; i++) {
17     assert(bigIntAdd(0xffffffffffffffffffn, 0xaaffffffffffffffffffn), 1624494070107157953511420n);
18 }
19
20 function bigIntMul(a, b) {
21     let c = a * b;
22     return b * a + c;
23 }
24 noInline(bigIntMul);
25
26 for (let i = 0; i < 100000; i++) {
27     assert(bigIntMul(3n, 5n), 30n);
28 }
29
30 for (let i = 0; i < 100000; i++) {
31     assert(bigIntMul(0xffffffffffffffffffn, 0xaaffffffffffffffffffn), 7626854857897473114403591155175632477091790850n);
32 }
33
34 function bigIntDiv(a, b) {
35     let c = a / b;
36     return a / b + c;
37 }
38 noInline(bigIntDiv);
39
40 for (let i = 0; i < 100000; i++) {
41     assert(bigIntDiv(15n, 5n), 6n);
42 }
43
44 for (let i = 0; i < 100000; i++) {
45     assert(bigIntDiv(0xaaffffffffffffffffffn, 0xffffffffffffffffffn), 342n);
46 }
47
48 function bigIntSub(a, b) {
49     let c = a - b;
50     return a - b + c;
51 }
52 noInline(bigIntSub);
53
54 for (let i = 0; i < 100000; i++) {
55     assert(bigIntSub(15n, 5n), 20n);
56 }
57
58 for (let i = 0; i < 100000; i++) {
59     assert(bigIntSub(0xaaffffffffffffffffffn, 0xffffffffffffffffffn), 1605604604175679372656640n);
60 }
61
62 function bigIntBitOr(a, b) {
63     let c = a | b;
64     return (b | a) + c;
65 }
66 noInline(bigIntBitOr);
67
68 for (let i = 0; i < 100000; i++) {
69     assert(bigIntBitOr(0b1101n, 0b0010n), 30n);
70 }
71
72 for (let i = 0; i < 100000; i++) {
73     assert(bigIntBitOr(0xaaffffffffffffffffffn, 0xffffffffffffffffffn), 1615049337141418663084030n);
74 }
75
76 function bigIntBitAnd(a, b) {
77     let c = a & b;
78     return (b & a) + c;
79 }
80 noInline(bigIntBitAnd);
81
82 for (let i = 0; i < 100000; i++) {
83     assert(bigIntBitAnd(0b1101n, 0b0010n), 0n);
84 }
85
86 for (let i = 0; i < 100000; i++) {
87     assert(bigIntBitAnd(0xaaffffffffffffffffffn, 0xffffffffffffffffffn), 9444732965739290427390n);
88 }
89
90 function bigIntBitXor(a, b) {
91     let c = a ^ b;
92     return (b ^ a) + c;
93 }
94 noInline(bigIntBitXor);
95
96 for (let i = 0; i < 100000; i++) {
97     assert(bigIntBitXor(0b1101n, 0b0010n), 30n);
98 }
99
100 for (let i = 0; i < 100000; i++) {
101     assert(bigIntBitXor(0xaaffffffffffffffffffn, 0xffffffffffffffffffn), 1605604604175679372656640n);
102 }
103