Merge pull request #3031 from rg3igalia/sub-group-size-arb-flat-fix
[platform/upstream/glslang.git] / Test / 400.vert
1 #version 400 core
2
3 in double d;   // ERROR, no doubles
4 in dvec3 d3;   // ERROR, no doubles
5 in dmat4 dm4;  // ERROR, no doubles
6
7 // function selection under type conversion
8 void foo1(double a, uint b)  {}\r
9 void foo1(double a, int b)   {}\r
10 void foo1(double a, float b) {}\r
11 void foo1(double a, double b){}\r
12 \r
13 void foo2(double a, float b) {}\r
14 void foo2(double a, double b){}\r
15 \r
16 void foo3(double a, float b) {}\r
17 void foo3(float a, double b) {}\r
18 \r
19 void ftd(  int,  float, double) {}\r
20 void ftd( uint,  float, double) {}\r
21 void ftd(float, double, double) {}\r
22 \r
23 void main()\r
24 {\r
25     double d;\r
26         uint u;\r
27         int i;\r
28         float f;\r
29 \r
30         foo1(d, d);\r
31         foo1(d, u);\r
32         foo1(d, i);\r
33         foo1(d, f);\r
34 \r
35         foo1(f, d);\r
36         foo1(f, u);\r
37         foo1(f, i);\r
38         foo1(f, f);\r
39 \r
40         foo1(u, d);\r
41         foo1(u, u);\r
42         foo1(u, i);\r
43         foo1(u, f);\r
44 \r
45         foo1(i, d);\r
46         foo1(i, u);\r
47         foo1(i, i);\r
48         foo1(i, f);\r
49 \r
50         foo2(d, d);\r
51         foo2(d, u);\r
52         foo2(d, i);\r
53         foo2(d, f);\r
54 \r
55         foo2(f, d);\r
56         foo2(f, u);\r
57         foo2(f, i);\r
58         foo2(f, f);\r
59 \r
60         foo2(u, d);\r
61         foo2(u, u);\r
62         foo2(u, i);\r
63         foo2(u, f);\r
64 \r
65         foo2(i, d);\r
66         foo2(i, u);\r
67         foo2(i, i);\r
68         foo2(i, f);\r
69 \r
70         foo3(d, d);  // ERROR, no match\r
71         foo3(d, u);\r
72         foo3(d, i);\r
73         foo3(d, f);\r
74 \r
75         foo3(f, d);\r
76         foo3(f, u); // ERROR, ambiguous\r
77         foo3(f, i); // ERROR, ambiguous\r
78         foo3(f, f); // ERROR, ambiguous\r
79 \r
80         foo3(u, d);\r
81         foo3(u, u); // ERROR, ambiguous\r
82         foo3(u, i); // ERROR, ambiguous\r
83         foo3(u, f); // ERROR, ambiguous\r
84 \r
85         foo3(i, d);\r
86         foo3(i, u); // ERROR, ambiguous\r
87         foo3(i, i); // ERROR, ambiguous\r
88         foo3(i, f); // ERROR, ambiguous\r
89 \r
90         ftd(i, f, f);\r
91         ftd(u, f, f);\r
92 }
93
94 void itf(int, float, int);
95 void itf(int, double, int);
96
97 void tf()
98 {
99     double d;\r
100         uint u;\r
101         int i;\r
102         float f;\r
103         
104         itf(i, i, i);
105         itf(i, u, i);
106 }