1; SPIR-V
2; Version: 1.0
3; Generator: Khronos Glslang Reference Front End; 8
4; Bound: 32
5; Schema: 0
6               OpCapability Shader
7               OpCapability ShaderNonUniform
8               OpCapability RuntimeDescriptorArray
9               OpCapability StorageImageArrayNonUniformIndexing
10               OpExtension "SPV_EXT_descriptor_indexing"
11          %1 = OpExtInstImport "GLSL.std.450"
12               OpMemoryModel Logical GLSL450
13               OpEntryPoint GLCompute %main "main" %gl_GlobalInvocationID
14               OpExecutionMode %main LocalSize 1 1 1
15               OpSource GLSL 450
16               OpSourceExtension "GL_EXT_nonuniform_qualifier"
17               OpName %main "main"
18               OpName %uImage "uImage"
19               OpName %gl_GlobalInvocationID "gl_GlobalInvocationID"
20               OpDecorate %uImage DescriptorSet 0
21               OpDecorate %uImage Binding 0
22               OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
23               OpDecorate %30 NonUniform
24       %void = OpTypeVoid
25          %3 = OpTypeFunction %void
26       %uint = OpTypeInt 32 0
27          %7 = OpTypeImage %uint 2D 0 0 0 2 R32ui
28%_runtimearr_7 = OpTypeRuntimeArray %7
29%_ptr_UniformConstant__runtimearr_7 = OpTypePointer UniformConstant %_runtimearr_7
30     %uImage = OpVariable %_ptr_UniformConstant__runtimearr_7 UniformConstant
31     %v3uint = OpTypeVector %uint 3
32%_ptr_Input_v3uint = OpTypePointer Input %v3uint
33%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
34     %uint_2 = OpConstant %uint 2
35%_ptr_Input_uint = OpTypePointer Input %uint
36%_ptr_UniformConstant_7 = OpTypePointer UniformConstant %7
37     %v2uint = OpTypeVector %uint 2
38        %int = OpTypeInt 32 1
39      %v2int = OpTypeVector %int 2
40     %uint_1 = OpConstant %uint 1
41     %uint_0 = OpConstant %uint 0
42%_ptr_Image_uint = OpTypePointer Image %uint
43       %main = OpFunction %void None %3
44          %5 = OpLabel
45         %16 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_2
46         %17 = OpLoad %uint %16
47         %18 = OpCopyObject %uint %17
48         %20 = OpAccessChain %_ptr_UniformConstant_7 %uImage %18
49         %22 = OpLoad %v3uint %gl_GlobalInvocationID
50         %23 = OpVectorShuffle %v2uint %22 %22 0 1
51         %26 = OpBitcast %v2int %23
52         %30 = OpImageTexelPointer %_ptr_Image_uint %20 %26 %uint_0
53         %31 = OpAtomicIAdd %uint %30 %uint_1 %uint_0 %uint_1
54               OpReturn
55               OpFunctionEnd
56