Merge pull request #2865 from alan-baker/update-license
[platform/upstream/glslang.git] / Test / glsl.es320.subgroupVote.comp
1 #version 320 es\r
2 \r
3 #extension GL_KHR_shader_subgroup_vote: enable\r
4 \r
5 layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;\r
6 \r
7 layout(binding = 0) buffer Buffers\r
8 {\r
9     vec4  f4;\r
10     ivec4 i4;\r
11     uvec4 u4;\r
12     int r;\r
13 } data[4];\r
14 \r
15 void main()\r
16 {\r
17     uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;\r
18 \r
19     if (subgroupAll(data[0].r < 0))\r
20     {\r
21         data[0].r = int(subgroupAllEqual(data[0].f4.x));\r
22         data[0].r = int(subgroupAllEqual(data[1].f4.xy));\r
23         data[0].r = int(subgroupAllEqual(data[2].f4.xyz));\r
24         data[0].r = int(subgroupAllEqual(data[3].f4));\r
25 \r
26         data[0].r = int(subgroupAllEqual(data[0].i4.x));\r
27         data[0].r = int(subgroupAllEqual(data[1].i4.xy));\r
28         data[0].r = int(subgroupAllEqual(data[2].i4.xyz));\r
29         data[0].r = int(subgroupAllEqual(data[3].i4));\r
30 \r
31         data[0].r = int(subgroupAllEqual(data[0].u4.x));\r
32         data[0].r = int(subgroupAllEqual(data[1].u4.xy));\r
33         data[0].r = int(subgroupAllEqual(data[2].u4.xyz));\r
34         data[0].r = int(subgroupAllEqual(data[3].u4));\r
35     }\r
36     else if (subgroupAny(data[1].r < 0))\r
37     {\r
38         data[1].r = int(int(subgroupAllEqual(data[0].i4.x < 0)));\r
39         data[1].r = int(ivec2(subgroupAllEqual(lessThan(data[1].i4.xy, ivec2(0)))));\r
40         data[1].r = int(ivec3(subgroupAllEqual(lessThan(data[1].i4.xyz, ivec3(0)))));\r
41         data[1].r = int(ivec4(subgroupAllEqual(lessThan(data[1].i4, ivec4(0)))));\r
42     }\r
43 }\r