Merge pull request #2908 from Biswa96/cmake-spirv-remap
[platform/upstream/glslang.git] / Test / spv.Operations.frag
1 #version 450\r
2 \r
3 flat in ivec4 uiv4;\r
4 in vec4 uv4;\r
5 bool ub;\r
6 bvec4 ub41, ub42;\r
7 in float uf;\r
8 flat in int ui;\r
9 flat in uvec4 uuv4;\r
10 flat in uint uui;\r
11 \r
12 out vec4 FragColor;\r
13 \r
14 void main()\r
15 {\r
16     vec4 v;\r
17         float f;\r
18         bool b;\r
19         bvec4 bv4;\r
20         int i;\r
21         uint u;\r
22 \r
23         // floating point\r
24     v = radians(uv4);\r
25     v += degrees(v);\r
26     v += (i = ui*ui, sin(v));\r
27     v += cos(v);\r
28     v += tan(v);\r
29     v += asin(v);\r
30     v += acos(v);\r
31 \r
32     v += atan(v);\r
33     v += sinh(v);\r
34     v += cosh(v);\r
35     v += tanh(v);\r
36     v += asinh(v);\r
37     v += acosh(v);\r
38     v += atanh(v);\r
39 \r
40     v += pow(v, v);\r
41     v += exp(v);\r
42     v += log(v);\r
43     v += exp2(v);\r
44     v += log2(v);\r
45     v += sqrt(v);\r
46     v += inversesqrt(v);\r
47     v += abs(v);\r
48     v += sign(v);\r
49     v += floor(v);\r
50 \r
51     v += trunc(v);\r
52     v += round(v);\r
53     v += roundEven(v);\r
54 \r
55     v += ceil(v);\r
56     v += fract(v);\r
57     v += mod(v, v);\r
58     v += mod(v, v.x);\r
59 \r
60     v += modf(v, v);\r
61     v += modf(v, v.yzxw);\r
62 \r
63     v += min(v, uv4);\r
64     v += max(v, uv4);\r
65     v += clamp(v, uv4, uv4);\r
66     v += mix(v,v,v);\r
67 \r
68     v += mix(v,v,ub41);\r
69     v += mix(v,v,f);\r
70 //spv    v += intBitsToFloat(ui);\r
71 //    v += uintBitsToFloat(uui);\r
72 //    i += floatBitsToInt(f);\r
73 //    u += floatBitsToUint(f);\r
74     v += fma(v, uv4, v);\r
75 \r
76     v += step(v,v);\r
77     v += smoothstep(v,v,v);\r
78     v += step(uf,v);\r
79     v += smoothstep(uf,uf,v);\r
80     v += normalize(v);\r
81     v += faceforward(v, v, v);\r
82     v += reflect(v, v);\r
83     v += refract(v, v, uf);\r
84     v += dFdx(v);\r
85     v += dFdy(v);\r
86     v += fwidth(v);\r
87 \r
88         // signed integer\r
89         i += abs(ui);\r
90         i += sign(i);\r
91         i += min(i, ui);\r
92         i += max(i, ui);\r
93         i += clamp(i, ui, ui);\r
94 \r
95         // unsigned integer\r
96     u += min(u, uui);\r
97     u += max(u, uui);\r
98     u += clamp(u, uui, uui);\r
99 \r
100     // multiple out operands\r
101     uvec4 msb;\r
102     uvec4 lsb;\r
103     umulExtended(uuv4.xyz, uuv4.xyz, msb.xyz, lsb.xyz);\r
104     u += msb.x + msb.y + msb.z;\r
105     u += lsb.x + lsb.y + lsb.z;\r
106 \r
107         //// bool\r
108         b = isnan(uf);\r
109     b = isinf(f);\r
110         b = any(lessThan(v, uv4));\r
111         b = (b && any(lessThanEqual(v, uv4)));\r
112     b = (b && any(greaterThan(v, uv4)));\r
113     b = (b && any(greaterThanEqual(v, uv4)));\r
114     b = (b && any(equal(ub41, ub42)));\r
115     b = (b && any(notEqual(ub41, ub42)));\r
116     b = (b && any(ub41));\r
117     b = (b && all(ub41));\r
118     b = (b && any(not(ub41)));\r
119         \r
120         i = ((i + ui) * i - ui) / i;\r
121         i = i % ui;\r
122         if (i == ui || i != ui && i == ui ^^ i != 2)\r
123             ++i;\r
124         \r
125         f = ((uf + uf) * uf - uf) / uf;\r
126 \r
127         f += length(v);\r
128     f += distance(v, v);\r
129     f += dot(v, v);\r
130     f += dot(f, uf);\r
131         f += cross(v.xyz, v.xyz).x;\r
132 \r
133         if (f == uf || f != uf && f != 2.0)\r
134             ++f;\r
135 \r
136     i &= ui;\r
137     i |= 0x42;\r
138     i ^= ui;\r
139     i %= 17;\r
140     i >>= 2;\r
141     i <<= ui;\r
142     i = ~i;\r
143     b = !b;\r
144 \r
145     FragColor = b ? vec4(i) + vec4(f) + v : v;\r
146 \r
147     mat4 m1 = mat4(1.0), m2 = mat4(0.0);\r
148     FragColor += (b ? m1 : m2)[1];\r
149 }\r