Merge pull request #2976 from jeremy-lunarg/hayes-fix-2975
[platform/upstream/glslang.git] / Test / glsl.es320.subgroupClusteredNeg.comp
1 #version 320 es\r
2 \r
3 #extension GL_KHR_shader_subgroup_clustered: enable\r
4 \r
5 layout (local_size_x = 8) 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     int a = 1;\r
17     const int aConst = 1;\r
18 \r
19     uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;\r
20 \r
21     data[0].f4.xy  = subgroupClusteredAdd(data[1].f4.xy, 0u);          // ERROR, less than 1\r
22 \r
23     data[0].f4.x   = subgroupClusteredMul(data[0].f4.x, 3u);           // ERROR, not a power of 2\r
24 \r
25     data[1].i4.xy  = subgroupClusteredMin(data[1].i4.xy, 8u);\r
26     data[1].i4.xyz = subgroupClusteredMin(data[2].i4.xyz, 6u);         // ERROR, not a power of 2\r
27 \r
28     data[3].i4.x   = subgroupClusteredOr(data[0].i4.x, uint(a));            // ERROR, not constant\r
29     data[3].i4.xy  = subgroupClusteredOr(data[1].i4.xy, uint(aConst));\r
30 \r
31     data[0].i4.x   = subgroupClusteredXor(data[0].i4.x, uint(1 + a));       // ERROR, not constant\r
32     data[0].i4.xy  = subgroupClusteredXor(data[1].i4.xy, uint(aConst + a)); // ERROR, not constant\r
33     data[0].i4.xyz = subgroupClusteredXor(data[2].i4.xyz, uint(1 + aConst));\r
34 }\r