Merge pull request #2976 from jeremy-lunarg/hayes-fix-2975
[platform/upstream/glslang.git] / Test / glsl.es320.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 } data[4];\r
13 \r
14 void main()\r
15 {\r
16     uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;\r
17 \r
18     uvec4 relMask = gl_SubgroupEqMask +\r
19                        gl_SubgroupGeMask +\r
20                        gl_SubgroupGtMask +\r
21                        gl_SubgroupLeMask +\r
22                        gl_SubgroupLtMask;\r
23 \r
24     uvec4 result = subgroupBallot(true);\r
25 \r
26     data[0].u4.x = subgroupBallotBitCount(result);\r
27     data[0].u4.y = subgroupBallotBitExtract(result, 0) ? 1u : 0u;\r
28     data[0].u4.z = subgroupBallotInclusiveBitCount(result) + subgroupBallotExclusiveBitCount(result);\r
29     data[0].u4.w = subgroupBallotFindLSB(result) + subgroupBallotFindMSB(result);\r
30 \r
31     data[1].f4.x   = subgroupBroadcast(data[0].f4.x,    invocation);  // ERROR: not constant\r
32 }\r