1[require] 2VK_KHR_spirv_1_4 3VK_KHR_storage_buffer_storage_class 4 5[compute shader spirv] 6OpCapability Shader 7OpMemoryModel Logical GLSL450 8OpEntryPoint GLCompute %main "main" %ssbo 9OpExecutionMode %main LocalSize 1 1 1 10 11OpDecorate %struct Block 12OpMemberDecorate %struct 0 Offset 0 13OpMemberDecorate %struct 1 Offset 16 14OpMemberDecorate %struct 2 Offset 32 15OpMemberDecorate %struct 3 Offset 48 16OpMemberDecorate %struct 4 Offset 64 17OpDecorate %ssbo DescriptorSet 0 18OpDecorate %ssbo Binding 0 19 20%void = OpTypeVoid 21%int = OpTypeInt 32 0 22%int_0 = OpConstant %int 0 23%int_1 = OpConstant %int 1 24%int_2 = OpConstant %int 2 25%int_3 = OpConstant %int 3 26%int_4 = OpConstant %int 4 27%int4 = OpTypeVector %int 4 28%ptr_ssbo_int = OpTypePointer StorageBuffer %int 29 30%struct = OpTypeStruct %int4 %int %int %int %int 31%ptr_ssbo_struct = OpTypePointer StorageBuffer %struct 32%ssbo = OpVariable %ptr_ssbo_struct StorageBuffer 33 34%void_fn = OpTypeFunction %void 35%main = OpFunction %void None %void_fn 36%entry = OpLabel 37%src_gep0 = OpAccessChain %ptr_ssbo_int %ssbo %int_0 %int_0 38%dst_gep0 = OpAccessChain %ptr_ssbo_int %ssbo %int_1 39OpCopyMemory %dst_gep0 %src_gep0 Aligned 16 Aligned 4 40%src_gep1 = OpAccessChain %ptr_ssbo_int %ssbo %int_0 %int_1 41%dst_gep1 = OpAccessChain %ptr_ssbo_int %ssbo %int_2 42OpCopyMemory %dst_gep1 %src_gep1 Aligned 16 Aligned 4 43%src_gep2 = OpAccessChain %ptr_ssbo_int %ssbo %int_0 %int_2 44%dst_gep2 = OpAccessChain %ptr_ssbo_int %ssbo %int_3 45OpCopyMemory %dst_gep2 %src_gep2 Aligned 16 Aligned 4 46%src_gep3 = OpAccessChain %ptr_ssbo_int %ssbo %int_0 %int_3 47%dst_gep3 = OpAccessChain %ptr_ssbo_int %ssbo %int_4 48OpCopyMemory %dst_gep3 %src_gep3 Aligned 16 Aligned 4 49OpReturn 50OpFunctionEnd 51 52[test] 53ssbo 0:0 68 54ssbo 0:0 subdata uint 0 1 2 3 4 55 56compute entrypoint main 57compute 1 1 1 58 59probe ssbo uint 0:0 16 == 1 60probe ssbo uint 0:0 32 == 2 61probe ssbo uint 0:0 48 == 3 62probe ssbo uint 0:0 64 == 4 63