Add a runtime-disabled dialog element skeleton
[WebKit-https.git] / LayoutTests / webgpu / whlsl / int-bit-math.html
1 <!DOCTYPE html>
2 <html>
3 <meta charset=utf-8>
4 <meta name="timeout" content="long">
5 <title>Test int bit math.</title>
6 <script src="js/test-harness.js"></script>
7 <script src="../js/webgpu-functions.js"></script>
8 <script src="../../resources/testharness.js"></script>
9 <script src="../../resources/testharnessreport.js"></script>
10 <script>
11 const whlslTests = {};
12
13 whlslTests.intBitAnd = async () =>
14 {
15     let program = `
16         int foo(int a, int b)
17         {
18             return a & b;
19         }
20     `;
21     assert_equals(await callIntFunction(program, "foo", [makeInt(1), makeInt(7)]), 1);
22     assert_equals(await callIntFunction(program, "foo", [makeInt(65535), makeInt(42)]), 42);
23     assert_equals(await callIntFunction(program, "foo", [makeInt(-1), makeInt(-7)]), -7);
24     assert_equals(await callIntFunction(program, "foo", [makeInt(0), makeInt(85732)]), 0);
25 }
26
27 whlslTests.intBitOr = async () =>
28 {
29     let program = `
30         int foo(int a, int b)
31         {
32             return a | b;
33         }
34     `;
35     assert_equals(await callIntFunction(program, "foo", [makeInt(1), makeInt(7)]), 7);
36     assert_equals(await callIntFunction(program, "foo", [makeInt(65535), makeInt(42)]), 65535);
37     assert_equals(await callIntFunction(program, "foo", [makeInt(-1), makeInt(-7)]), -1);
38     assert_equals(await callIntFunction(program, "foo", [makeInt(0), makeInt(85732)]), 85732);
39 }
40
41 whlslTests.intBitXor = async () =>
42 {
43     let program = `
44         int foo(int a, int b)
45         {
46             return a ^ b;
47         }
48     `;
49     assert_equals(await callIntFunction(program, "foo", [makeInt(1), makeInt(7)]), 6);
50     assert_equals(await callIntFunction(program, "foo", [makeInt(65535), makeInt(42)]), 65493);
51     assert_equals(await callIntFunction(program, "foo", [makeInt(-1), makeInt(-7)]), 6);
52     assert_equals(await callIntFunction(program, "foo", [makeInt(0), makeInt(85732)]), 85732);
53 }
54
55 whlslTests.intBitNot = async () =>
56 {
57     let program = `
58         int foo(int a)
59         {
60             return ~a;
61         }
62     `;
63     assert_equals(await callIntFunction(program, "foo", [makeInt(1)]), -2);
64     assert_equals(await callIntFunction(program, "foo", [makeInt(65535)]), -65536);
65     assert_equals(await callIntFunction(program, "foo", [makeInt(-1)]), 0);
66     assert_equals(await callIntFunction(program, "foo", [makeInt(0)]), -1);
67 }
68
69 whlslTests.intLShift = async () =>
70 {
71     let program = `
72         int foo(int a, uint b)
73         {
74             return a << b;
75         }
76     `;
77     assert_equals(await callIntFunction(program, "foo", [makeInt(1), makeUint(7)]), 128);
78     assert_equals(await callIntFunction(program, "foo", [makeInt(65535), makeUint(2)]), 262140);
79     assert_equals(await callIntFunction(program, "foo", [makeInt(-1), makeUint(5)]), -32);
80     assert_equals(await callIntFunction(program, "foo", [makeInt(0), makeUint(3)]), 0);
81 }
82
83 whlslTests.intRShift = async () =>
84 {
85     let program = `
86         int foo(int a, uint b)
87         {
88             return a >> b;
89         }
90     `;
91     assert_equals(await callIntFunction(program, "foo", [makeInt(1), makeUint(7)]), 0);
92     assert_equals(await callIntFunction(program, "foo", [makeInt(65535), makeUint(2)]), 16383);
93     assert_equals(await callIntFunction(program, "foo", [makeInt(-1), makeUint(5)]), -1);
94     assert_equals(await callIntFunction(program, "foo", [makeInt(0), makeUint(3)]), 0);
95 }
96
97 whlslTests.intSimpleMath = async () => {
98     let program = "int foo(int x, int y) { return x + y; }";
99     assert_equals(await callIntFunction(program, "foo", [makeInt(7), makeInt(5)]), 12);
100     program = "int foo(int x, int y) { return x - y; }";
101     assert_equals(await callIntFunction(program, "foo", [makeInt(7), makeInt(5)]), 2);
102     assert_equals(await callIntFunction(program, "foo", [makeInt(5), makeInt(7)]), -2);
103     program = "int foo(int x, int y) { return x * y; }";
104     assert_equals(await callIntFunction(program, "foo", [makeInt(7), makeInt(5)]), 35);
105     assert_equals(await callIntFunction(program, "foo", [makeInt(7), makeInt(-5)]), -35);
106 }
107
108 runTests(whlslTests);
109 </script>
110 </html>