Merge pull request #2976 from jeremy-lunarg/hayes-fix-2975
[platform/upstream/glslang.git] / Test / spv.intOps.vert
1 #version 310 es\r
2 \r
3 in uint u1;\r
4 in uvec2 u2;\r
5 in uvec3 u3;\r
6 in uvec4 u4;\r
7 \r
8 in float v1;\r
9 in vec2 v2;\r
10 in vec3 v3;\r
11 in vec4 v4;\r
12 \r
13 in int i1;\r
14 in ivec2 i2;\r
15 in ivec3 i3;\r
16 in ivec4 i4;\r
17 \r
18 out uvec4 uout;\r
19 out ivec4 iout;\r
20 out vec4 fout;\r
21 \r
22 void main()\r
23 {\r
24     iout = ivec4(0);\r
25     uout = uvec4(0);\r
26     fout = vec4(0.0);\r
27 \r
28     uvec2 u2out;\r
29     uout.xy += uaddCarry(u2, u2, u2out);\r
30     uout.xy += u2out;\r
31 \r
32     uint u1out;\r
33     uout.x += usubBorrow(u1, u1, u1out);\r
34     uout.x += u1out;\r
35 \r
36     uvec4 u4outHi, u4outLow;\r
37     umulExtended(u4, u4, u4outHi, u4outLow);\r
38     uout += u4outHi + u4outLow;\r
39 \r
40     ivec4 i4outHi, i4outLow;\r
41     imulExtended(i4, i4, i4outHi, i4outLow);\r
42     iout += i4outLow + i4outHi;\r
43 \r
44     ivec3 i3out;\r
45     fout.xyz += frexp(v3, i3out);\r
46     iout.xyz += i3out;\r
47     int i1out;\r
48     fout.x += frexp(v1, i1out);\r
49     iout.x += i1out;\r
50 \r
51     fout.xy += ldexp(v2, i2);\r
52     fout.x += ldexp(v1, i1);\r
53 \r
54     iout.x += bitfieldExtract(i1, 4, 5);\r
55     uout.xyz += bitfieldExtract(u3, 4, 5);\r
56     iout.xyz += bitfieldInsert(i3, i3, 4, 5);\r
57     uout.x += bitfieldInsert(u1, u1, 4, 5);\r
58     iout.xy += bitfieldReverse(i2);\r
59     uout += bitfieldReverse(u4);\r
60     iout.x += bitCount(i1);\r
61     iout.xyz += bitCount(u3);\r
62 \r
63     iout.xy += findLSB(i2);\r
64     iout += findLSB(u4);\r
65     iout.x += findMSB(i1);\r
66     iout.xy += findMSB(u2);\r
67 \r
68     uout.x += packUnorm4x8(v4);\r
69     uout.x += packSnorm4x8(v4);\r
70     fout += unpackUnorm4x8(u1);\r
71     fout += unpackSnorm4x8(u1);\r
72 }\r