Merge pull request #3031 from rg3igalia/sub-group-size-arb-flat-fix
[platform/upstream/glslang.git] / Test / spv.switch.frag
1 #version 310 es\r
2 precision mediump float;\r
3 flat in int c, d;\r
4 in float x;\r
5 out float color;\r
6 in vec4 v;\r
7 \r
8 vec4 foo1(vec4 v1, vec4 v2, int i1)\r
9 {\r
10     switch (i1)\r
11     {\r
12     case 0:\r
13         return v1;\r
14     case 2:\r
15     case 1:\r
16         return v2;\r
17     case 3:\r
18         return v1 * v2;\r
19     }\r
20 \r
21     return vec4(0.0);\r
22 }\r
23 \r
24 vec4 foo2(vec4 v1, vec4 v2, int i1)\r
25 {\r
26     switch (i1)\r
27     {\r
28     case 0:\r
29         return v1;\r
30     case 2:\r
31         return vec4(1.0);\r
32     case 1:\r
33         return v2;\r
34     case 3:\r
35         return v1 * v2;\r
36     }\r
37 \r
38     return vec4(0.0);\r
39 }\r
40 \r
41 void main()\r
42 {\r
43     float f;\r
44     int a[2];\r
45     int local = c;\r
46 \r
47     switch(++local)\r
48     {\r
49     }\r
50 \r
51     switch (c) {\r
52     case 1:\r
53         f = sin(x);\r
54         break;\r
55     case 2:\r
56         f = cos(x);\r
57         break;\r
58     default:\r
59         f = tan(x);\r
60     }\r
61 \r
62     switch (c) {\r
63     case 1:\r
64         f += sin(x);\r
65     case 2:\r
66         f += cos(x);\r
67         break;\r
68     default:\r
69         f += tan(x);\r
70     }\r
71 \r
72     switch (c) {\r
73     case 1:\r
74         f += sin(x);\r
75         break;\r
76     case 2:\r
77         f += cos(x);\r
78         break;\r
79     }\r
80 \r
81     switch (c) {\r
82     case 1:\r
83         f += sin(x);\r
84         break;\r
85     case 2:\r
86         switch (d) {\r
87         case 1:\r
88             f += x * x * x;\r
89             break;\r
90         case 2:\r
91             f += x * x;\r
92             break;\r
93         }\r
94         break;\r
95     default:\r
96         f += tan(x);\r
97     }\r
98 \r
99     for (int i = 0; i < 10; ++i) {\r
100         switch (c) {\r
101         case 1:\r
102             f += sin(x);\r
103             for (int j = 20; j < 30; ++j) {\r
104                 ++f;\r
105                 if (f < 100.2)\r
106                     break;\r
107             }\r
108             break;\r
109         case 2:\r
110             f += cos(x);\r
111             break;\r
112             break;\r
113         default:\r
114             f += tan(x);\r
115         }\r
116 \r
117         if (f < 3.43)\r
118             break;\r
119     }\r
120 \r
121     switch (c) {\r
122     case 1:\r
123         f += sin(x);\r
124         break;\r
125     case 2:\r
126         // test no statements at end\r
127     }\r
128 \r
129     color = f + float(local);\r
130 \r
131     color += foo1(v,v,c).y;\r
132     color += foo2(v,v,c).z;\r
133 \r
134     switch (c) {\r
135     case 0: break;\r
136     default:\r
137     }\r
138 \r
139     switch (c) {\r
140     default:\r
141     }\r
142 }\r