1 OpCapability Shader 2 %1 = OpExtInstImport "GLSL.std.450" 3 OpMemoryModel Logical GLSL450 4 OpEntryPoint GLCompute %main "main" 5 OpExecutionMode %main LocalSize 64 1 1 6 OpName %S "S" 7 OpMemberName %S 0 "structMemberAtomic" 8 OpMemberName %S 1 "structMemberAtomicArray" 9 OpName %NestedS "NestedS" 10 OpMemberName %NestedS 0 "nestedStructWithAtomicMember" 11 OpName %ssbo "ssbo" 12 OpMemberName %ssbo 0 "ssboAtomic" 13 OpMemberName %ssbo 1 "ssboAtomicArray" 14 OpMemberName %ssbo 2 "ssboStructWithAtomicMember" 15 OpMemberName %ssbo 3 "ssboStructWithAtomicMemberArray" 16 OpMemberName %ssbo 4 "ssboNestedStructWithAtomicMember" 17 OpName %wgAtomic "wgAtomic" 18 OpName %wgAtomicArray "wgAtomicArray" 19 OpName %wgNestedStructWithAtomicMember "wgNestedStructWithAtomicMember" 20 OpName %main "main" 21 OpDecorate %_arr_uint_int_2 ArrayStride 16 22 OpMemberDecorate %S 0 Offset 0 23 OpMemberDecorate %S 0 RelaxedPrecision 24 OpMemberDecorate %S 1 Offset 16 25 OpMemberDecorate %S 1 RelaxedPrecision 26 OpDecorate %_arr_S_int_2 ArrayStride 48 27 OpMemberDecorate %NestedS 0 Offset 0 28 OpMemberDecorate %NestedS 0 RelaxedPrecision 29 OpMemberDecorate %ssbo 0 Offset 0 30 OpMemberDecorate %ssbo 0 RelaxedPrecision 31 OpMemberDecorate %ssbo 1 Offset 16 32 OpMemberDecorate %ssbo 1 RelaxedPrecision 33 OpMemberDecorate %ssbo 2 Offset 48 34 OpMemberDecorate %ssbo 2 RelaxedPrecision 35 OpMemberDecorate %ssbo 3 Offset 96 36 OpMemberDecorate %ssbo 3 RelaxedPrecision 37 OpMemberDecorate %ssbo 4 Offset 192 38 OpMemberDecorate %ssbo 4 RelaxedPrecision 39 OpDecorate %ssbo BufferBlock 40 OpDecorate %3 Binding 0 41 OpDecorate %3 DescriptorSet 0 42 %uint = OpTypeInt 32 0 43 %int = OpTypeInt 32 1 44 %int_2 = OpConstant %int 2 45%_arr_uint_int_2 = OpTypeArray %uint %int_2 46 %S = OpTypeStruct %uint %_arr_uint_int_2 47%_arr_S_int_2 = OpTypeArray %S %int_2 48 %NestedS = OpTypeStruct %S 49 %ssbo = OpTypeStruct %uint %_arr_uint_int_2 %S %_arr_S_int_2 %NestedS 50%_ptr_Uniform_ssbo = OpTypePointer Uniform %ssbo 51 %3 = OpVariable %_ptr_Uniform_ssbo Uniform 52%_ptr_Workgroup_uint = OpTypePointer Workgroup %uint 53 %wgAtomic = OpVariable %_ptr_Workgroup_uint Workgroup 54%_ptr_Workgroup__arr_uint_int_2 = OpTypePointer Workgroup %_arr_uint_int_2 55%wgAtomicArray = OpVariable %_ptr_Workgroup__arr_uint_int_2 Workgroup 56%_ptr_Workgroup_NestedS = OpTypePointer Workgroup %NestedS 57%wgNestedStructWithAtomicMember = OpVariable %_ptr_Workgroup_NestedS Workgroup 58 %void = OpTypeVoid 59 %20 = OpTypeFunction %void 60 %int_1 = OpConstant %int 1 61 %uint_2 = OpConstant %uint 2 62 %uint_0 = OpConstant %uint 0 63 %int_0 = OpConstant %int 0 64 %uint_1 = OpConstant %uint 1 65 %main = OpFunction %void None %20 66 %21 = OpLabel 67 %24 = OpAccessChain %_ptr_Workgroup_uint %wgAtomicArray %int_1 68 %27 = OpAtomicLoad %uint %wgAtomic %uint_2 %uint_0 69 %22 = OpAtomicIAdd %uint %24 %uint_2 %uint_0 %27 70 %30 = OpAccessChain %_ptr_Workgroup_uint %wgAtomicArray %int_0 71 %32 = OpAccessChain %_ptr_Workgroup_uint %wgAtomicArray %int_1 72 %31 = OpAtomicLoad %uint %32 %uint_2 %uint_0 73 %28 = OpAtomicIAdd %uint %30 %uint_2 %uint_0 %31 74 %34 = OpAccessChain %_ptr_Workgroup_uint %wgNestedStructWithAtomicMember %int_0 %int_0 75 %33 = OpAtomicIAdd %uint %34 %uint_2 %uint_0 %uint_1 76 OpReturn 77 OpFunctionEnd 78