Merge pull request #2913 from greg-lunarg/i2905
[platform/upstream/glslang.git] / Test / spv.shortCircuit.frag
1 #version 400\r
2 \r
3 flat in ivec4 uiv4;\r
4 in vec4 uv4;\r
5 bool ub;\r
6 bool uba;\r
7 bvec4 ub41, ub42;\r
8 in float uf;\r
9 flat in int ui;\r
10 \r
11 out float of1;\r
12 out vec4  of4;\r
13 \r
14 bool foo() { ++of1; return of1 > 10.0; }\r
15 \r
16 void main()\r
17 {\r
18     of1 = 0.0;\r
19     of4 = vec4(0.0);\r
20 \r
21     if (ub || ui > 2)  // not worth short circuiting\r
22         ++of1;\r
23 \r
24     if (ub && !uba)  // not worth short circuiting\r
25         ++of1;\r
26 \r
27     if (ub || foo())   // must short circuit\r
28         ++of1;\r
29 \r
30     if (ub && foo())   // must short circuit\r
31         ++of1;\r
32 \r
33     if (foo() || ub)   // not worth short circuiting\r
34         ++of1;\r
35 \r
36     if (foo() && ub)   // not worth short circuiting\r
37         ++of1;\r
38 \r
39     if (ub || ++of1 > 1.0)   // must short circuit\r
40         ++of4;\r
41 \r
42     if (++of1 > 1.0 || ub)   // not worth short circuiting\r
43         ++of4;\r
44 \r
45     if (ub || sin(uf) * 4.0 > of1)  // worth short circuiting\r
46         ++of1;\r
47 \r
48     if (ub && sin(uf) * 4.0 > of1)  // worth short circuiting\r
49         ++of1;\r
50 }\r