Merge pull request #3031 from rg3igalia/sub-group-size-arb-flat-fix
[platform/upstream/glslang.git] / Test / spv.subgroupBallotNeg.comp
1 #version 450\r
2 \r
3 #extension GL_KHR_shader_subgroup_ballot: 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     dvec4 d4;\r
13 } data[4];\r
14 \r
15 void main()\r
16 {\r
17     uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;\r
18 \r
19     uvec4 relMask = gl_SubgroupEqMask +\r
20                        gl_SubgroupGeMask +\r
21                        gl_SubgroupGtMask +\r
22                        gl_SubgroupLeMask +\r
23                        gl_SubgroupLtMask;\r
24 \r
25     uvec4 result = subgroupBallot(true);\r
26 \r
27     data[invocation].u4.x = subgroupBallotBitCount(result);\r
28     data[invocation].u4.y = subgroupBallotBitExtract(result, 0) ? 1 : 0;\r
29     data[invocation].u4.z = subgroupBallotInclusiveBitCount(result) + subgroupBallotExclusiveBitCount(result);\r
30     data[invocation].u4.w = subgroupBallotFindLSB(result) + subgroupBallotFindMSB(result);\r
31 \r
32     data[invocation].f4.x   = subgroupBroadcast(data[0].f4.x,    invocation);  // ERROR: not constant\r
33 }\r