| OpCapability Shader |
| %1 = OpExtInstImport "GLSL.std.450" |
| OpMemoryModel Logical GLSL450 |
| OpEntryPoint GLCompute %main "main" |
| OpExecutionMode %main LocalSize 1 1 1 |
| OpSource GLSL 430 |
| OpName %main "main" |
| OpName %result "result" |
| OpMemberName %result 0 "res0" |
| OpMemberName %result 1 "res1" |
| OpMemberName %result 2 "res2" |
| OpName %_ "" |
| OpName %block0 "block0" |
| OpMemberName %block0 0 "data0" |
| OpName %__0 "" |
| OpName %block1 "block1" |
| OpMemberName %block1 0 "data1" |
| OpName %__1 "" |
| OpName %block2 "block2" |
| OpMemberName %block2 0 "data2" |
| OpName %__2 "" |
| OpMemberDecorate %result 0 Offset 0 |
| OpMemberDecorate %result 1 Offset 4 |
| OpMemberDecorate %result 2 Offset 8 |
| OpDecorate %result Block |
| OpDecorate %_ DescriptorSet 0 |
| OpDecorate %_ Binding 3 |
| OpMemberDecorate %block0 0 Offset 0 |
| OpDecorate %block0 Block |
| OpDecorate %__0 DescriptorSet 0 |
| OpDecorate %__0 Binding 0 |
| OpMemberDecorate %block1 0 Offset 0 |
| OpDecorate %block1 Block |
| OpDecorate %__1 DescriptorSet 0 |
| OpDecorate %__1 Binding 1 |
| OpMemberDecorate %block2 0 Offset 0 |
| OpDecorate %block2 Block |
| OpDecorate %__2 DescriptorSet 0 |
| OpDecorate %__2 Binding 2 |
| %void = OpTypeVoid |
| %12 = OpTypeFunction %void |
| %int = OpTypeInt 32 1 |
| %result = OpTypeStruct %int %int %int |
| %_ptr_StorageBuffer_result = OpTypePointer StorageBuffer %result |
| %_ = OpVariable %_ptr_StorageBuffer_result StorageBuffer |
| %int_0 = OpConstant %int 0 |
| %block0 = OpTypeStruct %int |
| %_ptr_Uniform_block0 = OpTypePointer Uniform %block0 |
| %__0 = OpVariable %_ptr_Uniform_block0 Uniform |
| %_ptr_Uniform_int = OpTypePointer Uniform %int |
| %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int |
| %int_1 = OpConstant %int 1 |
| %block1 = OpTypeStruct %int |
| %_ptr_Uniform_block1 = OpTypePointer Uniform %block1 |
| %__1 = OpVariable %_ptr_Uniform_block1 Uniform |
| %int_2 = OpConstant %int 2 |
| %block2 = OpTypeStruct %int |
| %_ptr_Uniform_block2 = OpTypePointer Uniform %block2 |
| %__2 = OpVariable %_ptr_Uniform_block2 Uniform |
| %main = OpFunction %void None %12 |
| %23 = OpLabel |
| %24 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 |
| %25 = OpLoad %int %24 |
| %26 = OpAccessChain %_ptr_StorageBuffer_int %_ %int_0 |
| OpStore %26 %25 |
| %27 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 |
| %28 = OpLoad %int %27 |
| %29 = OpAccessChain %_ptr_StorageBuffer_int %_ %int_1 |
| OpStore %29 %28 |
| %30 = OpAccessChain %_ptr_Uniform_int %__2 %int_0 |
| %31 = OpLoad %int %30 |
| %32 = OpAccessChain %_ptr_StorageBuffer_int %_ %int_2 |
| OpStore %32 %31 |
| OpReturn |
| OpFunctionEnd |