generate OpLine before OpFunction
[platform/upstream/glslang.git] / Test / spv.subgroupExtendedTypesVote.comp
1 #version 450\r
2 \r
3 #extension GL_KHR_shader_subgroup_vote: enable\r
4 #extension GL_EXT_shader_subgroup_extended_types_int8: enable\r
5 #extension GL_EXT_shader_subgroup_extended_types_int16: enable\r
6 #extension GL_EXT_shader_subgroup_extended_types_int64: enable\r
7 #extension GL_EXT_shader_subgroup_extended_types_float16: enable\r
8 \r
9 layout (local_size_x = 8) in;\r
10 \r
11 layout(binding = 0) buffer Buffers\r
12 {\r
13     i8vec4 i8;\r
14     u8vec4 u8;\r
15     i16vec4 i16;\r
16     u16vec4 u16;\r
17     i64vec4 i64;\r
18     u64vec4 u64;\r
19     f16vec4 f16;\r
20     int r;\r
21 } data[4];\r
22 \r
23 void main()\r
24 {\r
25     uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;\r
26 \r
27     if (subgroupAll(data[invocation].r < 0))\r
28     {\r
29         data[invocation].r = int(subgroupAllEqual(data[0].i8.x));\r
30         data[invocation].r = int(subgroupAllEqual(data[1].i8.xy));\r
31         data[invocation].r = int(subgroupAllEqual(data[2].i8.xyz));\r
32         data[invocation].r = int(subgroupAllEqual(data[3].i8));\r
33 \r
34         data[invocation].r = int(subgroupAllEqual(data[0].u8.x));\r
35         data[invocation].r = int(subgroupAllEqual(data[1].u8.xy));\r
36         data[invocation].r = int(subgroupAllEqual(data[2].u8.xyz));\r
37         data[invocation].r = int(subgroupAllEqual(data[3].u8));\r
38 \r
39         data[invocation].r = int(subgroupAllEqual(data[0].i16.x));\r
40         data[invocation].r = int(subgroupAllEqual(data[1].i16.xy));\r
41         data[invocation].r = int(subgroupAllEqual(data[2].i16.xyz));\r
42         data[invocation].r = int(subgroupAllEqual(data[3].i16));\r
43 \r
44         data[invocation].r = int(subgroupAllEqual(data[0].u16.x));\r
45         data[invocation].r = int(subgroupAllEqual(data[1].u16.xy));\r
46         data[invocation].r = int(subgroupAllEqual(data[2].u16.xyz));\r
47         data[invocation].r = int(subgroupAllEqual(data[3].u16));\r
48     }\r
49     else if (subgroupAny(data[invocation].r < 0))\r
50     {\r
51         data[invocation].r = int(subgroupAllEqual(data[0].i64.x));\r
52         data[invocation].r = int(subgroupAllEqual(data[1].i64.xy));\r
53         data[invocation].r = int(subgroupAllEqual(data[2].i64.xyz));\r
54         data[invocation].r = int(subgroupAllEqual(data[3].i64));\r
55         \r
56         data[invocation].r = int(subgroupAllEqual(data[0].u64.x));\r
57         data[invocation].r = int(subgroupAllEqual(data[1].u64.xy));\r
58         data[invocation].r = int(subgroupAllEqual(data[2].u64.xyz));\r
59         data[invocation].r = int(subgroupAllEqual(data[3].u64));\r
60         \r
61         data[invocation].r = int(subgroupAllEqual(data[0].f16.x));\r
62         data[invocation].r = int(subgroupAllEqual(data[1].f16.xy));\r
63         data[invocation].r = int(subgroupAllEqual(data[2].f16.xyz));\r
64         data[invocation].r = int(subgroupAllEqual(data[3].f16));\r
65     }\r
66 }\r