OpCapability Shader
          %1 = OpExtInstImport "GLSL.std.450"
               OpMemoryModel Logical GLSL450
               OpEntryPoint GLCompute %main "main" %sk_LocalInvocationID
               OpExecutionMode %main LocalSize 256 1 1
               OpName %GlobalCounts "GlobalCounts"
               OpMemberName %GlobalCounts 0 "firstHalfCount"
               OpMemberName %GlobalCounts 1 "secondHalfCount"
               OpName %ssbo "ssbo"
               OpMemberName %ssbo 0 "globalCounts"
               OpName %sk_LocalInvocationID "sk_LocalInvocationID"
               OpName %localCounts "localCounts"
               OpName %main "main"
               OpName %idx "idx"
               OpMemberDecorate %GlobalCounts 0 Offset 0
               OpMemberDecorate %GlobalCounts 0 RelaxedPrecision
               OpMemberDecorate %GlobalCounts 1 Offset 4
               OpMemberDecorate %GlobalCounts 1 RelaxedPrecision
               OpMemberDecorate %ssbo 0 Offset 0
               OpMemberDecorate %ssbo 0 RelaxedPrecision
               OpDecorate %ssbo BufferBlock
               OpDecorate %3 Binding 0
               OpDecorate %3 DescriptorSet 0
               OpDecorate %sk_LocalInvocationID BuiltIn LocalInvocationId
               OpDecorate %_arr_uint_int_2 ArrayStride 16
       %uint = OpTypeInt 32 0
%GlobalCounts = OpTypeStruct %uint %uint
       %ssbo = OpTypeStruct %GlobalCounts
%_ptr_Uniform_ssbo = OpTypePointer Uniform %ssbo
          %3 = OpVariable %_ptr_Uniform_ssbo Uniform
     %v3uint = OpTypeVector %uint 3
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
%sk_LocalInvocationID = OpVariable %_ptr_Input_v3uint Input
        %int = OpTypeInt 32 1
      %int_2 = OpConstant %int 2
%_arr_uint_int_2 = OpTypeArray %uint %int_2
%_ptr_Workgroup__arr_uint_int_2 = OpTypePointer Workgroup %_arr_uint_int_2
%localCounts = OpVariable %_ptr_Workgroup__arr_uint_int_2 Workgroup
       %void = OpTypeVoid
         %17 = OpTypeFunction %void
     %uint_0 = OpConstant %uint 0
       %bool = OpTypeBool
      %int_0 = OpConstant %int 0
%_ptr_Workgroup_uint = OpTypePointer Workgroup %uint
     %uint_2 = OpConstant %uint 2
      %int_1 = OpConstant %int 1
   %uint_264 = OpConstant %uint 264
%_ptr_Function_uint = OpTypePointer Function %uint
   %uint_128 = OpConstant %uint 128
     %uint_1 = OpConstant %uint 1
%_ptr_Uniform_uint = OpTypePointer Uniform %uint
       %main = OpFunction %void None %17
         %18 = OpLabel
        %idx = OpVariable %_ptr_Function_uint Function
         %19 = OpLoad %v3uint %sk_LocalInvocationID
         %20 = OpCompositeExtract %uint %19 0
         %22 = OpIEqual %bool %20 %uint_0
               OpSelectionMerge %25 None
               OpBranchConditional %22 %24 %25
         %24 = OpLabel
         %28 = OpAccessChain %_ptr_Workgroup_uint %localCounts %int_0
               OpAtomicStore %28 %uint_2 %uint_0 %uint_0
         %33 = OpAccessChain %_ptr_Workgroup_uint %localCounts %int_1
               OpAtomicStore %33 %uint_2 %uint_0 %uint_0
               OpBranch %25
         %25 = OpLabel
               OpControlBarrier %uint_2 %uint_2 %uint_264
         %38 = OpLoad %v3uint %sk_LocalInvocationID
         %39 = OpCompositeExtract %uint %38 0
         %41 = OpULessThan %bool %39 %uint_128
         %42 = OpSelect %int %41 %int_0 %int_1
         %43 = OpBitcast %uint %42
               OpStore %idx %43
         %45 = OpAccessChain %_ptr_Workgroup_uint %localCounts %43
         %44 = OpAtomicIAdd %uint %45 %uint_2 %uint_0 %uint_1
               OpControlBarrier %uint_2 %uint_2 %uint_264
         %48 = OpLoad %v3uint %sk_LocalInvocationID
         %49 = OpCompositeExtract %uint %48 0
         %50 = OpIEqual %bool %49 %uint_0
               OpSelectionMerge %52 None
               OpBranchConditional %50 %51 %52
         %51 = OpLabel
         %54 = OpAccessChain %_ptr_Uniform_uint %3 %int_0 %int_0
         %57 = OpAccessChain %_ptr_Workgroup_uint %localCounts %int_0
         %56 = OpAtomicLoad %uint %57 %uint_2 %uint_0
         %53 = OpAtomicIAdd %uint %54 %uint_1 %uint_0 %56
         %59 = OpAccessChain %_ptr_Uniform_uint %3 %int_0 %int_1
         %61 = OpAccessChain %_ptr_Workgroup_uint %localCounts %int_1
         %60 = OpAtomicLoad %uint %61 %uint_2 %uint_0
         %58 = OpAtomicIAdd %uint %59 %uint_1 %uint_0 %60
               OpBranch %52
         %52 = OpLabel
               OpReturn
               OpFunctionEnd