| ; SPIR-V |
| ; Version: 1.0 |
| ; Generator: Khronos Glslang Reference Front End; 8 |
| ; Bound: 26 |
| ; Schema: 0 |
| OpCapability Shader |
| OpCapability ShaderNonUniform |
| OpCapability RuntimeDescriptorArray |
| OpCapability StorageBufferArrayNonUniformIndexing |
| OpExtension "SPV_EXT_descriptor_indexing" |
| %1 = OpExtInstImport "GLSL.std.450" |
| OpMemoryModel Logical GLSL450 |
| OpEntryPoint GLCompute %main "main" %gl_GlobalInvocationID |
| OpExecutionMode %main LocalSize 1 1 1 |
| OpSource GLSL 450 |
| OpSourceExtension "GL_EXT_nonuniform_qualifier" |
| OpName %main "main" |
| OpName %SSBO "SSBO" |
| OpMemberName %SSBO 0 "v" |
| OpName %ssbos "ssbos" |
| OpName %gl_GlobalInvocationID "gl_GlobalInvocationID" |
| OpMemberDecorate %SSBO 0 Offset 0 |
| OpDecorate %SSBO BufferBlock |
| OpDecorate %ssbos DescriptorSet 0 |
| OpDecorate %ssbos Binding 0 |
| OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId |
| OpDecorate %22 NonUniform |
| %void = OpTypeVoid |
| %3 = OpTypeFunction %void |
| %uint = OpTypeInt 32 0 |
| %SSBO = OpTypeStruct %uint |
| %_runtimearr_SSBO = OpTypeRuntimeArray %SSBO |
| %_ptr_Uniform__runtimearr_SSBO = OpTypePointer Uniform %_runtimearr_SSBO |
| %ssbos = OpVariable %_ptr_Uniform__runtimearr_SSBO Uniform |
| %v3uint = OpTypeVector %uint 3 |
| %_ptr_Input_v3uint = OpTypePointer Input %v3uint |
| %gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input |
| %uint_2 = OpConstant %uint 2 |
| %_ptr_Input_uint = OpTypePointer Input %uint |
| %int = OpTypeInt 32 1 |
| %int_0 = OpConstant %int 0 |
| %_ptr_Uniform_uint = OpTypePointer Uniform %uint |
| %uint_1 = OpConstant %uint 1 |
| %uint_0 = OpConstant %uint 0 |
| %main = OpFunction %void None %3 |
| %5 = OpLabel |
| %16 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_2 |
| %17 = OpLoad %uint %16 |
| %18 = OpCopyObject %uint %17 |
| %22 = OpAccessChain %_ptr_Uniform_uint %ssbos %18 %int_0 |
| %25 = OpAtomicIAdd %uint %22 %uint_1 %uint_0 %uint_1 |
| OpReturn |
| OpFunctionEnd |