blob: e5f784d8a0b17d794dc903abaa00adb6dc3b3761 [file] [log] [blame]
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main" %sk_LocalInvocationID
OpExecutionMode %main LocalSize 64 1 1
OpName %ssbo "ssbo"
OpMemberName %ssbo 0 "globalCounter"
OpName %sk_LocalInvocationID "sk_LocalInvocationID"
OpName %localCounter "localCounter"
OpName %main "main"
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
%uint = OpTypeInt 32 0
%ssbo = OpTypeStruct %uint
%_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
%_ptr_Workgroup_uint = OpTypePointer Workgroup %uint
%localCounter = OpVariable %_ptr_Workgroup_uint Workgroup
%void = OpTypeVoid
%13 = OpTypeFunction %void
%uint_0 = OpConstant %uint 0
%bool = OpTypeBool
%uint_2 = OpConstant %uint 2
%uint_264 = OpConstant %uint 264
%uint_1 = OpConstant %uint 1
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%_ptr_Uniform_uint = OpTypePointer Uniform %uint
%main = OpFunction %void None %13
%14 = OpLabel
%15 = OpLoad %v3uint %sk_LocalInvocationID
%16 = OpCompositeExtract %uint %15 0
%18 = OpIEqual %bool %16 %uint_0
OpSelectionMerge %21 None
OpBranchConditional %18 %20 %21
%20 = OpLabel
OpAtomicStore %localCounter %uint_2 %uint_0 %uint_0
OpBranch %21
%21 = OpLabel
OpControlBarrier %uint_2 %uint_2 %uint_264
%26 = OpAtomicIAdd %uint %localCounter %uint_2 %uint_0 %uint_1
OpControlBarrier %uint_2 %uint_2 %uint_264
%29 = OpLoad %v3uint %sk_LocalInvocationID
%30 = OpCompositeExtract %uint %29 0
%31 = OpIEqual %bool %30 %uint_0
OpSelectionMerge %33 None
OpBranchConditional %31 %32 %33
%32 = OpLabel
%37 = OpAccessChain %_ptr_Uniform_uint %3 %int_0
%39 = OpAtomicLoad %uint %localCounter %uint_2 %uint_0
%34 = OpAtomicIAdd %uint %37 %uint_1 %uint_0 %39
OpBranch %33
%33 = OpLabel
OpReturn
OpFunctionEnd