Merge pull request #2913 from greg-lunarg/i2905
[platform/upstream/glslang.git] / Test / spv.uint.frag
1 #version 310 es\r
2 precision mediump float;\r
3 flat in uvec2 t;\r
4 in float f;\r
5 in vec2 tc;\r
6 \r
7 flat in uvec4 v;\r
8 flat in int i;\r
9 bool b;\r
10 \r
11 out uvec4 c;\r
12 \r
13 uniform mediump usampler2D usampler;\r
14 \r
15 void main()\r
16 {\r
17     int count = 1;\r
18 \r
19     uint u = t.y + 3u;\r
20     const uint cu1 = 0xFFFFFFFFU;\r
21     const uint cu2 = -1u;              // 0xFFFFFFFF\r
22     const uint cu3 = 1U;\r
23     const uint cu4 = 1u;\r
24 \r
25     if (cu1 == cu2)\r
26         count *= 2;  // 2\r
27     if (cu3 == cu4)\r
28         count *= 3;  // 6\r
29     if (cu2 == cu3)\r
30         count *= 5;  // not done\r
31 \r
32     const  int  cshiftedii      = 0xFFFFFFFF  >> 10;\r
33     const uint cushiftedui      = 0xFFFFFFFFu >> 10;\r
34     const  int  cshiftediu      = 0xFFFFFFFF  >> 10u;\r
35     const uint cushifteduu      = 0xFFFFFFFFu >> 10u;\r
36 \r
37     if (cshiftedii == cshiftediu)\r
38         count *= 7;  // 42\r
39     if (cushiftedui == cushifteduu)\r
40         count *= 11; // 462\r
41     if (cshiftedii == int(cushiftedui))\r
42         count *= 13; // not done\r
43 \r
44      int shiftedii      = 0xFFFFFFFF  >> 10;\r
45     uint shiftedui      = 0xFFFFFFFFu >> 10;\r
46      int shiftediu      = 0xFFFFFFFF  >> 10u;\r
47     uint shifteduu      = 0xFFFFFFFFu >> 10u;\r
48 \r
49     if (shiftedii == shiftediu)\r
50         c = texture(usampler, tc);\r
51     if (shiftedui == shifteduu)\r
52         c = texture(usampler, tc + float(1u));\r
53     if (shiftedii == int(shiftedui))\r
54         c = texture(usampler, tc - vec2(2u));\r
55 \r
56     if (t.x > 4u) {\r
57         float af = float(u);\r
58         bool ab = bool(u);\r
59         int ai = int(u);\r
60 \r
61         c += uvec4(uint(af), uint(ab), uint(ai), count);\r
62     }\r
63 \r
64     const uint cmask1 = 0x0A1u;\r
65     const uint cmask2 = 0xA10u;\r
66     const uint cmask3 = cmask1 << 4;\r
67     const uint cmask4 = 0xAB1u;\r
68 \r
69     if (cmask3 == cmask2)\r
70         count *= 17;  // 7854\r
71 \r
72     if ((cmask3 & cmask1) != 0u)\r
73         count *= 19; // not done\r
74 \r
75     if ((cmask1 | cmask3) == cmask4)\r
76         count *= 23; // 180642\r
77 \r
78     if ((cmask1 ^ cmask4) == 0xA10u)\r
79         count *= 27; // 4877334\r
80 \r
81     uint mask1 = 0x0A1u;\r
82     uint mask2 = 0xA10u;\r
83     uint mask3 = mask1 << 4;\r
84     uint mask4 = 0xAB1u;\r
85 \r
86     if (mask3 == mask2)\r
87         count *= 2;  // 9754668\r
88 \r
89     if ((mask3 & mask1) != 0u)\r
90         count *= 3;  // not done\r
91 \r
92     if ((mask1 | mask3) == mask4)\r
93         count *= 5;  // 48773340\r
94 \r
95     if ((mask1 ^ mask4) == 0xA10u)\r
96         count *= 7;  // 341413380\r
97 \r
98     c += uvec4(count);\r
99 \r
100     #define UINT_MAX  4294967295u\r
101     c.x += UINT_MAX;\r
102 }\r