#version 460
#extension GL_EXT_nonuniform_qualifier : require
#extension GL_KHR_shader_subgroup_ballot : require
#extension GL_KHR_shader_subgroup_arithmetic : require
#extension GL_KHR_shader_subgroup_vote : require
layout(local_size_x = 64, local_size_y = 1, local_size_z = 1) in;

layout(set = 0, binding = 0, std140) uniform BindlessCBV
{
    vec4 _m0[4096];
} _13[];

layout(set = 0, binding = 0, std140) uniform _29_31
{
    vec4 _m0[1024];
} _31;

layout(set = 0, binding = 1, std140) uniform _33_36
{
    vec4 _m0[1024];
} _36[2];

layout(set = 0, binding = 0) uniform usamplerBuffer _16;
layout(set = 0, binding = 1) uniform usamplerBuffer _20[2];
layout(set = 0, binding = 3) uniform samplerBuffer _23;
layout(set = 0, binding = 0, r32ui) uniform uimageBuffer _26;

void main()
{
    uint _63 = imageAtomicAdd(_26, int(1u), subgroupBroadcastFirst(floatBitsToUint(_13[0u]._m0[0u]).x));
    uint _70 = imageAtomicAdd(_26, int(0u), floatBitsToUint(_31._m0[1u]).x);
    uint _78 = imageAtomicAdd(_26, int(1u), subgroupBroadcastFirst(floatBitsToUint(_31._m0[gl_GlobalInvocationID.x]).x));
    uint _86 = imageAtomicAdd(_26, int(1u), subgroupBroadcastFirst(floatBitsToUint(_36[0u]._m0[1u]).x));
    uint _94 = imageAtomicAdd(_26, int(1u), subgroupBroadcastFirst(floatBitsToUint(_36[0u]._m0[gl_GlobalInvocationID.x]).x));
    uint _101 = imageAtomicAdd(_26, int(0u), subgroupBroadcastFirst(texelFetch(_16, int(1u)).x));
    uint _108 = imageAtomicAdd(_26, int(1u), subgroupBroadcastFirst(texelFetch(_16, int(gl_GlobalInvocationID.x)).x));
    uint _116 = imageAtomicAdd(_26, int(1u), subgroupBroadcastFirst(texelFetch(_20[0u], int(1u)).x));
    uint _123 = imageAtomicAdd(_26, int(1u), subgroupBroadcastFirst(imageLoad(_26, int(2u)).x));
    uint _131 = imageAtomicAdd(_26, int(1u), uint(subgroupBroadcastFirst(texelFetch(_23, int(0u)).x)));
    uint _134 = imageAtomicAdd(_26, int(0u), gl_WorkGroupID.x);
    uint _138 = imageAtomicAdd(_26, int(1u), subgroupBroadcastFirst(gl_GlobalInvocationID.x));
    uint _145 = imageAtomicAdd(_26, int(0u), floatBitsToUint(_31._m0[1u]).x);
    uint _153 = imageAtomicAdd(_26, int(0u), subgroupAdd(floatBitsToUint(_31._m0[gl_GlobalInvocationID.x]).x));
    uint _161 = imageAtomicAdd(_26, int(0u), subgroupOr(floatBitsToUint(_31._m0[gl_GlobalInvocationID.x]).x));
    uint _171 = imageAtomicAdd(_26, int(0u), uint(subgroupAllEqual(floatBitsToUint(_31._m0[gl_GlobalInvocationID.x]).x)));
    uint _181 = imageAtomicAdd(_26, int(0u), subgroupBallot(floatBitsToUint(_31._m0[gl_GlobalInvocationID.x]).x != 0u).x);
    uint _191 = imageAtomicAdd(_26, int(0u), uint(subgroupAny(floatBitsToUint(_31._m0[gl_GlobalInvocationID.x]).x != 0u)));
    uint _201 = imageAtomicAdd(_26, int(0u), uint(subgroupAll(floatBitsToUint(_31._m0[gl_GlobalInvocationID.x]).x != 0u)));
    uint _210 = imageAtomicAdd(_26, int(1u), subgroupBroadcastFirst(subgroupExclusiveAdd(floatBitsToUint(_31._m0[gl_GlobalInvocationID.x]).x)));
}


#if 0
// SPIR-V disassembly
// HeuristicWaveSize(32)
; SPIR-V
; Version: 1.3
; Generator: Unknown(30017); 21022
; Bound: 213
; Schema: 0
OpCapability Shader
OpCapability UniformBufferArrayDynamicIndexing
OpCapability SampledBuffer
OpCapability ImageBuffer
OpCapability GroupNonUniformVote
OpCapability GroupNonUniformArithmetic
OpCapability GroupNonUniformBallot
OpCapability RuntimeDescriptorArray
OpCapability UniformTexelBufferArrayDynamicIndexing
OpExtension "SPV_EXT_descriptor_indexing"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %3 "main" %42 %46
OpExecutionMode %3 LocalSize 64 1 1
OpName %3 "main"
OpName %10 "BindlessCBV"
OpName %29 ""
OpName %33 ""
OpDecorate %9 ArrayStride 16
OpDecorate %10 Block
OpMemberDecorate %10 0 Offset 0
OpDecorate %13 DescriptorSet 0
OpDecorate %13 Binding 0
OpDecorate %16 DescriptorSet 0
OpDecorate %16 Binding 0
OpDecorate %20 DescriptorSet 0
OpDecorate %20 Binding 1
OpDecorate %23 DescriptorSet 0
OpDecorate %23 Binding 3
OpDecorate %26 DescriptorSet 0
OpDecorate %26 Binding 0
OpDecorate %28 ArrayStride 16
OpMemberDecorate %29 0 Offset 0
OpDecorate %29 Block
OpDecorate %31 DescriptorSet 0
OpDecorate %31 Binding 0
OpDecorate %32 ArrayStride 16
OpMemberDecorate %33 0 Offset 0
OpDecorate %33 Block
OpDecorate %36 DescriptorSet 0
OpDecorate %36 Binding 1
OpDecorate %42 BuiltIn GlobalInvocationId
OpDecorate %46 BuiltIn WorkgroupId
%1 = OpTypeVoid
%2 = OpTypeFunction %1
%5 = OpTypeFloat 32
%6 = OpTypeVector %5 4
%7 = OpTypeInt 32 0
%8 = OpConstant %7 4096
%9 = OpTypeArray %6 %8
%10 = OpTypeStruct %9
%11 = OpTypeRuntimeArray %10
%12 = OpTypePointer Uniform %11
%13 = OpVariable %12 Uniform
%14 = OpTypeImage %7 Buffer 0 0 0 1 Unknown
%15 = OpTypePointer UniformConstant %14
%16 = OpVariable %15 UniformConstant
%17 = OpConstant %7 2
%18 = OpTypeArray %14 %17
%19 = OpTypePointer UniformConstant %18
%20 = OpVariable %19 UniformConstant
%21 = OpTypeImage %5 Buffer 0 0 0 1 Unknown
%22 = OpTypePointer UniformConstant %21
%23 = OpVariable %22 UniformConstant
%24 = OpTypeImage %7 Buffer 0 0 0 2 R32ui
%25 = OpTypePointer UniformConstant %24
%26 = OpVariable %25 UniformConstant
%27 = OpConstant %7 1024
%28 = OpTypeArray %6 %27
%29 = OpTypeStruct %28
%30 = OpTypePointer Uniform %29
%31 = OpVariable %30 Uniform
%32 = OpTypeArray %6 %27
%33 = OpTypeStruct %32
%34 = OpTypeArray %33 %17
%35 = OpTypePointer Uniform %34
%36 = OpVariable %35 Uniform
%37 = OpTypePointer Uniform %33
%39 = OpConstant %7 0
%40 = OpTypeVector %7 3
%41 = OpTypePointer Input %40
%42 = OpVariable %41 Input
%43 = OpTypePointer Input %7
%46 = OpVariable %41 Input
%49 = OpTypePointer Uniform %10
%51 = OpTypePointer Uniform %6
%54 = OpTypeVector %7 4
%58 = OpConstant %7 3
%60 = OpConstant %7 1
%61 = OpTypePointer Image %7
%166 = OpTypeBool
%3 = OpFunction %1 None %2
%4 = OpLabel
OpBranch %211
%211 = OpLabel
%38 = OpAccessChain %37 %36 %39
%44 = OpAccessChain %43 %42 %39
%45 = OpLoad %7 %44
%47 = OpAccessChain %43 %46 %39
%48 = OpLoad %7 %47
%50 = OpAccessChain %49 %13 %39
%52 = OpAccessChain %51 %50 %39 %39
%53 = OpLoad %6 %52
%55 = OpBitcast %54 %53
%56 = OpCompositeExtract %7 %55 0
%57 = OpGroupNonUniformBroadcastFirst %7 %58 %56
%59 = OpLoad %24 %26
%62 = OpImageTexelPointer %61 %26 %60 %39
%63 = OpAtomicIAdd %7 %62 %60 %39 %57
%64 = OpAccessChain %51 %31 %39 %60
%65 = OpLoad %6 %64
%66 = OpBitcast %54 %65
%67 = OpCompositeExtract %7 %66 0
%68 = OpLoad %24 %26
%69 = OpImageTexelPointer %61 %26 %39 %39
%70 = OpAtomicIAdd %7 %69 %60 %39 %67
%71 = OpAccessChain %51 %31 %39 %45
%72 = OpLoad %6 %71
%73 = OpBitcast %54 %72
%74 = OpCompositeExtract %7 %73 0
%75 = OpGroupNonUniformBroadcastFirst %7 %58 %74
%76 = OpLoad %24 %26
%77 = OpImageTexelPointer %61 %26 %60 %39
%78 = OpAtomicIAdd %7 %77 %60 %39 %75
%79 = OpAccessChain %51 %38 %39 %60
%80 = OpLoad %6 %79
%81 = OpBitcast %54 %80
%82 = OpCompositeExtract %7 %81 0
%83 = OpGroupNonUniformBroadcastFirst %7 %58 %82
%84 = OpLoad %24 %26
%85 = OpImageTexelPointer %61 %26 %60 %39
%86 = OpAtomicIAdd %7 %85 %60 %39 %83
%87 = OpAccessChain %51 %38 %39 %45
%88 = OpLoad %6 %87
%89 = OpBitcast %54 %88
%90 = OpCompositeExtract %7 %89 0
%91 = OpGroupNonUniformBroadcastFirst %7 %58 %90
%92 = OpLoad %24 %26
%93 = OpImageTexelPointer %61 %26 %60 %39
%94 = OpAtomicIAdd %7 %93 %60 %39 %91
%95 = OpLoad %14 %16
%96 = OpImageFetch %54 %95 %60
%97 = OpCompositeExtract %7 %96 0
%98 = OpGroupNonUniformBroadcastFirst %7 %58 %97
%99 = OpLoad %24 %26
%100 = OpImageTexelPointer %61 %26 %39 %39
%101 = OpAtomicIAdd %7 %100 %60 %39 %98
%102 = OpLoad %14 %16
%103 = OpImageFetch %54 %102 %45
%104 = OpCompositeExtract %7 %103 0
%105 = OpGroupNonUniformBroadcastFirst %7 %58 %104
%106 = OpLoad %24 %26
%107 = OpImageTexelPointer %61 %26 %60 %39
%108 = OpAtomicIAdd %7 %107 %60 %39 %105
%109 = OpAccessChain %15 %20 %39
%110 = OpLoad %14 %109
%111 = OpImageFetch %54 %110 %60
%112 = OpCompositeExtract %7 %111 0
%113 = OpGroupNonUniformBroadcastFirst %7 %58 %112
%114 = OpLoad %24 %26
%115 = OpImageTexelPointer %61 %26 %60 %39
%116 = OpAtomicIAdd %7 %115 %60 %39 %113
%117 = OpLoad %24 %26
%118 = OpImageRead %54 %117 %17
%119 = OpCompositeExtract %7 %118 0
%120 = OpGroupNonUniformBroadcastFirst %7 %58 %119
%121 = OpLoad %24 %26
%122 = OpImageTexelPointer %61 %26 %60 %39
%123 = OpAtomicIAdd %7 %122 %60 %39 %120
%124 = OpLoad %21 %23
%125 = OpImageFetch %6 %124 %39
%126 = OpCompositeExtract %5 %125 0
%127 = OpGroupNonUniformBroadcastFirst %5 %58 %126
%128 = OpConvertFToU %7 %127
%129 = OpLoad %24 %26
%130 = OpImageTexelPointer %61 %26 %60 %39
%131 = OpAtomicIAdd %7 %130 %60 %39 %128
%132 = OpLoad %24 %26
%133 = OpImageTexelPointer %61 %26 %39 %39
%134 = OpAtomicIAdd %7 %133 %60 %39 %48
%135 = OpGroupNonUniformBroadcastFirst %7 %58 %45
%136 = OpLoad %24 %26
%137 = OpImageTexelPointer %61 %26 %60 %39
%138 = OpAtomicIAdd %7 %137 %60 %39 %135
%139 = OpAccessChain %51 %31 %39 %60
%140 = OpLoad %6 %139
%141 = OpBitcast %54 %140
%142 = OpCompositeExtract %7 %141 0
%143 = OpLoad %24 %26
%144 = OpImageTexelPointer %61 %26 %39 %39
%145 = OpAtomicIAdd %7 %144 %60 %39 %142
%146 = OpAccessChain %51 %31 %39 %45
%147 = OpLoad %6 %146
%148 = OpBitcast %54 %147
%149 = OpCompositeExtract %7 %148 0
%150 = OpGroupNonUniformIAdd %7 %58 Reduce %149
%151 = OpLoad %24 %26
%152 = OpImageTexelPointer %61 %26 %39 %39
%153 = OpAtomicIAdd %7 %152 %60 %39 %150
%154 = OpAccessChain %51 %31 %39 %45
%155 = OpLoad %6 %154
%156 = OpBitcast %54 %155
%157 = OpCompositeExtract %7 %156 0
%158 = OpGroupNonUniformBitwiseOr %7 %58 Reduce %157
%159 = OpLoad %24 %26
%160 = OpImageTexelPointer %61 %26 %39 %39
%161 = OpAtomicIAdd %7 %160 %60 %39 %158
%162 = OpAccessChain %51 %31 %39 %45
%163 = OpLoad %6 %162
%164 = OpBitcast %54 %163
%165 = OpCompositeExtract %7 %164 0
%167 = OpGroupNonUniformAllEqual %166 %58 %165
%168 = OpSelect %7 %167 %60 %39
%169 = OpLoad %24 %26
%170 = OpImageTexelPointer %61 %26 %39 %39
%171 = OpAtomicIAdd %7 %170 %60 %39 %168
%172 = OpAccessChain %51 %31 %39 %45
%173 = OpLoad %6 %172
%174 = OpBitcast %54 %173
%175 = OpCompositeExtract %7 %174 0
%176 = OpINotEqual %166 %175 %39
%177 = OpGroupNonUniformBallot %54 %58 %176
%178 = OpCompositeExtract %7 %177 0
%179 = OpLoad %24 %26
%180 = OpImageTexelPointer %61 %26 %39 %39
%181 = OpAtomicIAdd %7 %180 %60 %39 %178
%182 = OpAccessChain %51 %31 %39 %45
%183 = OpLoad %6 %182
%184 = OpBitcast %54 %183
%185 = OpCompositeExtract %7 %184 0
%186 = OpINotEqual %166 %185 %39
%187 = OpGroupNonUniformAny %166 %58 %186
%188 = OpSelect %7 %187 %60 %39
%189 = OpLoad %24 %26
%190 = OpImageTexelPointer %61 %26 %39 %39
%191 = OpAtomicIAdd %7 %190 %60 %39 %188
%192 = OpAccessChain %51 %31 %39 %45
%193 = OpLoad %6 %192
%194 = OpBitcast %54 %193
%195 = OpCompositeExtract %7 %194 0
%196 = OpINotEqual %166 %195 %39
%197 = OpGroupNonUniformAll %166 %58 %196
%198 = OpSelect %7 %197 %60 %39
%199 = OpLoad %24 %26
%200 = OpImageTexelPointer %61 %26 %39 %39
%201 = OpAtomicIAdd %7 %200 %60 %39 %198
%202 = OpAccessChain %51 %31 %39 %45
%203 = OpLoad %6 %202
%204 = OpBitcast %54 %203
%205 = OpCompositeExtract %7 %204 0
%206 = OpGroupNonUniformIAdd %7 %58 ExclusiveScan %205
%207 = OpGroupNonUniformBroadcastFirst %7 %58 %206
%208 = OpLoad %24 %26
%209 = OpImageTexelPointer %61 %26 %60 %39
%210 = OpAtomicIAdd %7 %209 %60 %39 %207
OpReturn
OpFunctionEnd
#endif
