blob: 79b926f1677c1d8fbf2087d81df233a6334da816 [file] [log] [blame]
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 64 1 1
OpName %S "S"
OpMemberName %S 0 "structMemberAtomic"
OpMemberName %S 1 "structMemberAtomicArray"
OpName %NestedS "NestedS"
OpMemberName %NestedS 0 "nestedStructWithAtomicMember"
OpName %ssbo "ssbo"
OpMemberName %ssbo 0 "ssboAtomic"
OpMemberName %ssbo 1 "ssboAtomicArray"
OpMemberName %ssbo 2 "ssboStructWithAtomicMember"
OpMemberName %ssbo 3 "ssboStructWithAtomicMemberArray"
OpMemberName %ssbo 4 "ssboNestedStructWithAtomicMember"
OpName %wgAtomic "wgAtomic"
OpName %wgAtomicArray "wgAtomicArray"
OpName %wgNestedStructWithAtomicMember "wgNestedStructWithAtomicMember"
OpName %main "main"
OpDecorate %_arr_uint_int_2 ArrayStride 4
OpMemberDecorate %S 0 Offset 0
OpMemberDecorate %S 0 RelaxedPrecision
OpMemberDecorate %S 1 Offset 4
OpMemberDecorate %S 1 RelaxedPrecision
OpDecorate %_arr_S_int_2 ArrayStride 12
OpMemberDecorate %NestedS 0 Offset 0
OpMemberDecorate %NestedS 0 RelaxedPrecision
OpMemberDecorate %ssbo 0 Offset 0
OpMemberDecorate %ssbo 0 RelaxedPrecision
OpMemberDecorate %ssbo 1 Offset 4
OpMemberDecorate %ssbo 1 RelaxedPrecision
OpMemberDecorate %ssbo 2 Offset 12
OpMemberDecorate %ssbo 2 RelaxedPrecision
OpMemberDecorate %ssbo 3 Offset 24
OpMemberDecorate %ssbo 3 RelaxedPrecision
OpMemberDecorate %ssbo 4 Offset 48
OpMemberDecorate %ssbo 4 RelaxedPrecision
OpDecorate %ssbo BufferBlock
OpDecorate %3 Binding 0
OpDecorate %3 DescriptorSet 0
OpDecorate %_arr_uint_int_2_0 ArrayStride 16
%uint = OpTypeInt 32 0
%int = OpTypeInt 32 1
%int_2 = OpConstant %int 2
%_arr_uint_int_2 = OpTypeArray %uint %int_2
%S = OpTypeStruct %uint %_arr_uint_int_2
%_arr_S_int_2 = OpTypeArray %S %int_2
%NestedS = OpTypeStruct %S
%ssbo = OpTypeStruct %uint %_arr_uint_int_2 %S %_arr_S_int_2 %NestedS
%_ptr_Uniform_ssbo = OpTypePointer Uniform %ssbo
%3 = OpVariable %_ptr_Uniform_ssbo Uniform
%_ptr_Workgroup_uint = OpTypePointer Workgroup %uint
%wgAtomic = OpVariable %_ptr_Workgroup_uint Workgroup
%_arr_uint_int_2_0 = OpTypeArray %uint %int_2
%_ptr_Workgroup__arr_uint_int_2_0 = OpTypePointer Workgroup %_arr_uint_int_2_0
%wgAtomicArray = OpVariable %_ptr_Workgroup__arr_uint_int_2_0 Workgroup
%_ptr_Workgroup_NestedS = OpTypePointer Workgroup %NestedS
%wgNestedStructWithAtomicMember = OpVariable %_ptr_Workgroup_NestedS Workgroup
%void = OpTypeVoid
%21 = OpTypeFunction %void
%int_1 = OpConstant %int 1
%uint_2 = OpConstant %uint 2
%uint_0 = OpConstant %uint 0
%int_0 = OpConstant %int 0
%uint_1 = OpConstant %uint 1
%main = OpFunction %void None %21
%22 = OpLabel
%25 = OpAccessChain %_ptr_Workgroup_uint %wgAtomicArray %int_1
%28 = OpAtomicLoad %uint %wgAtomic %uint_2 %uint_0
%23 = OpAtomicIAdd %uint %25 %uint_2 %uint_0 %28
%31 = OpAccessChain %_ptr_Workgroup_uint %wgAtomicArray %int_0
%33 = OpAccessChain %_ptr_Workgroup_uint %wgAtomicArray %int_1
%32 = OpAtomicLoad %uint %33 %uint_2 %uint_0
%29 = OpAtomicIAdd %uint %31 %uint_2 %uint_0 %32
%35 = OpAccessChain %_ptr_Workgroup_uint %wgNestedStructWithAtomicMember %int_0 %int_0
%34 = OpAtomicIAdd %uint %35 %uint_2 %uint_0 %uint_1
OpReturn
OpFunctionEnd