| ; SPIR-V | 
 | ; Version: 1.3 | 
 | ; Generator: Google Tint Compiler; 0 | 
 | ; Bound: 151 | 
 | ; Schema: 0 | 
 |                OpCapability Shader | 
 |                OpMemoryModel Logical GLSL450 | 
 |                OpEntryPoint GLCompute %f "f" | 
 |                OpExecutionMode %f LocalSize 1 1 1 | 
 |                OpName %s_block "s_block" | 
 |                OpMemberName %s_block 0 "inner" | 
 |                OpName %S "S" | 
 |                OpMemberName %S 0 "a" | 
 |                OpName %strided_arr_1 "strided_arr_1" | 
 |                OpMemberName %strided_arr_1 0 "el" | 
 |                OpName %strided_arr "strided_arr" | 
 |                OpMemberName %strided_arr 0 "el" | 
 |                OpName %s "s" | 
 |                OpName %assign_and_preserve_padding_4_s_a_X_el_X_X "assign_and_preserve_padding_4_s_a_X_el_X_X" | 
 |                OpName %dest "dest" | 
 |                OpName %value "value" | 
 |                OpName %assign_and_preserve_padding_3_s_a_X_el_X "assign_and_preserve_padding_3_s_a_X_el_X" | 
 |                OpName %dest_0 "dest" | 
 |                OpName %value_0 "value" | 
 |                OpName %i "i" | 
 |                OpName %var_for_index "var_for_index" | 
 |                OpName %assign_and_preserve_padding_2_s_a_X_el "assign_and_preserve_padding_2_s_a_X_el" | 
 |                OpName %dest_1 "dest" | 
 |                OpName %value_1 "value" | 
 |                OpName %i_0 "i" | 
 |                OpName %var_for_index_1 "var_for_index_1" | 
 |                OpName %assign_and_preserve_padding_1_s_a_X "assign_and_preserve_padding_1_s_a_X" | 
 |                OpName %dest_2 "dest" | 
 |                OpName %value_2 "value" | 
 |                OpName %assign_and_preserve_padding_s_a "assign_and_preserve_padding_s_a" | 
 |                OpName %value_3 "value" | 
 |                OpName %i_1 "i" | 
 |                OpName %var_for_index_2 "var_for_index_2" | 
 |                OpName %f_1 "f_1" | 
 |                OpName %f "f" | 
 |                OpDecorate %s_block Block | 
 |                OpMemberDecorate %s_block 0 Offset 0 | 
 |                OpMemberDecorate %S 0 Offset 0 | 
 |                OpMemberDecorate %strided_arr_1 0 Offset 0 | 
 |                OpMemberDecorate %strided_arr 0 Offset 0 | 
 |                OpDecorate %_arr_strided_arr_uint_2 ArrayStride 8 | 
 |                OpDecorate %_arr__arr_strided_arr_uint_2_uint_3 ArrayStride 16 | 
 |                OpDecorate %_arr_strided_arr_1_uint_4 ArrayStride 128 | 
 |                OpDecorate %s DescriptorSet 0 | 
 |                OpDecorate %s Binding 0 | 
 |                OpDecorate %_arr_uint_uint_3 ArrayStride 4 | 
 |                OpDecorate %_arr_uint_uint_2 ArrayStride 4 | 
 |                OpDecorate %_arr_uint_uint_1 ArrayStride 4 | 
 |       %float = OpTypeFloat 32 | 
 | %strided_arr = OpTypeStruct %float | 
 |        %uint = OpTypeInt 32 0 | 
 |      %uint_2 = OpConstant %uint 2 | 
 | %_arr_strided_arr_uint_2 = OpTypeArray %strided_arr %uint_2 | 
 |      %uint_3 = OpConstant %uint 3 | 
 | %_arr__arr_strided_arr_uint_2_uint_3 = OpTypeArray %_arr_strided_arr_uint_2 %uint_3 | 
 | %strided_arr_1 = OpTypeStruct %_arr__arr_strided_arr_uint_2_uint_3 | 
 |      %uint_4 = OpConstant %uint 4 | 
 | %_arr_strided_arr_1_uint_4 = OpTypeArray %strided_arr_1 %uint_4 | 
 |           %S = OpTypeStruct %_arr_strided_arr_1_uint_4 | 
 |     %s_block = OpTypeStruct %S | 
 | %_ptr_StorageBuffer_s_block = OpTypePointer StorageBuffer %s_block | 
 |           %s = OpVariable %_ptr_StorageBuffer_s_block StorageBuffer | 
 |        %void = OpTypeVoid | 
 | %_arr_uint_uint_3 = OpTypeArray %uint %uint_3 | 
 |          %15 = OpTypeFunction %void %_arr_uint_uint_3 %strided_arr | 
 |      %uint_0 = OpConstant %uint 0 | 
 |         %int = OpTypeInt 32 1 | 
 |          %24 = OpConstantNull %int | 
 |       %int_1 = OpConstant %int 1 | 
 |       %int_2 = OpConstant %int 2 | 
 | %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float | 
 | %_arr_uint_uint_2 = OpTypeArray %uint %uint_2 | 
 |          %33 = OpTypeFunction %void %_arr_uint_uint_2 %_arr_strided_arr_uint_2 | 
 |          %39 = OpConstantNull %uint | 
 | %_ptr_Function_uint = OpTypePointer Function %uint | 
 |        %bool = OpTypeBool | 
 | %_ptr_Function__arr_strided_arr_uint_2 = OpTypePointer Function %_arr_strided_arr_uint_2 | 
 |          %54 = OpConstantNull %_arr_strided_arr_uint_2 | 
 |      %uint_1 = OpConstant %uint 1 | 
 | %_ptr_Function_strided_arr = OpTypePointer Function %strided_arr | 
 | %_arr_uint_uint_1 = OpTypeArray %uint %uint_1 | 
 |          %67 = OpTypeFunction %void %_arr_uint_uint_1 %_arr__arr_strided_arr_uint_2_uint_3 | 
 | %_ptr_Function__arr__arr_strided_arr_uint_2_uint_3 = OpTypePointer Function %_arr__arr_strided_arr_uint_2_uint_3 | 
 |          %85 = OpConstantNull %_arr__arr_strided_arr_uint_2_uint_3 | 
 |          %95 = OpTypeFunction %void %_arr_uint_uint_1 %strided_arr_1 | 
 |         %104 = OpTypeFunction %void %_arr_strided_arr_1_uint_4 | 
 | %_ptr_Function__arr_strided_arr_1_uint_4 = OpTypePointer Function %_arr_strided_arr_1_uint_4 | 
 |         %120 = OpConstantNull %_arr_strided_arr_1_uint_4 | 
 | %_ptr_Function_strided_arr_1 = OpTypePointer Function %strided_arr_1 | 
 |         %130 = OpTypeFunction %void | 
 | %_ptr_StorageBuffer__arr_strided_arr_1_uint_4 = OpTypePointer StorageBuffer %_arr_strided_arr_1_uint_4 | 
 |       %int_3 = OpConstant %int 3 | 
 | %_ptr_StorageBuffer__arr__arr_strided_arr_uint_2_uint_3 = OpTypePointer StorageBuffer %_arr__arr_strided_arr_uint_2_uint_3 | 
 | %_ptr_StorageBuffer__arr_strided_arr_uint_2 = OpTypePointer StorageBuffer %_arr_strided_arr_uint_2 | 
 |     %float_5 = OpConstant %float 5 | 
 | %assign_and_preserve_padding_4_s_a_X_el_X_X = OpFunction %void None %15 | 
 |        %dest = OpFunctionParameter %_arr_uint_uint_3 | 
 |       %value = OpFunctionParameter %strided_arr | 
 |          %21 = OpLabel | 
 |          %25 = OpCompositeExtract %uint %dest 0 | 
 |          %27 = OpCompositeExtract %uint %dest 1 | 
 |          %29 = OpCompositeExtract %uint %dest 2 | 
 |          %31 = OpAccessChain %_ptr_StorageBuffer_float %s %uint_0 %uint_0 %25 %uint_0 %27 %29 %uint_0 | 
 |          %32 = OpCompositeExtract %float %value 0 | 
 |                OpStore %31 %32 | 
 |                OpReturn | 
 |                OpFunctionEnd | 
 | %assign_and_preserve_padding_3_s_a_X_el_X = OpFunction %void None %33 | 
 |      %dest_0 = OpFunctionParameter %_arr_uint_uint_2 | 
 |     %value_0 = OpFunctionParameter %_arr_strided_arr_uint_2 | 
 |          %38 = OpLabel | 
 |           %i = OpVariable %_ptr_Function_uint Function %39 | 
 | %var_for_index = OpVariable %_ptr_Function__arr_strided_arr_uint_2 Function %54 | 
 |                OpStore %i %39 | 
 |                OpBranch %42 | 
 |          %42 = OpLabel | 
 |                OpLoopMerge %43 %44 None | 
 |                OpBranch %45 | 
 |          %45 = OpLabel | 
 |          %47 = OpLoad %uint %i | 
 |          %48 = OpULessThan %bool %47 %uint_2 | 
 |          %46 = OpLogicalNot %bool %48 | 
 |                OpSelectionMerge %50 None | 
 |                OpBranchConditional %46 %51 %50 | 
 |          %51 = OpLabel | 
 |                OpBranch %43 | 
 |          %50 = OpLabel | 
 |                OpStore %var_for_index %value_0 | 
 |          %56 = OpCompositeExtract %uint %dest_0 0 | 
 |          %58 = OpCompositeExtract %uint %dest_0 1 | 
 |          %59 = OpLoad %uint %i | 
 |          %60 = OpCompositeConstruct %_arr_uint_uint_3 %56 %58 %59 | 
 |          %61 = OpLoad %uint %i | 
 |          %63 = OpAccessChain %_ptr_Function_strided_arr %var_for_index %61 | 
 |          %64 = OpLoad %strided_arr %63 | 
 |          %55 = OpFunctionCall %void %assign_and_preserve_padding_4_s_a_X_el_X_X %60 %64 | 
 |                OpBranch %44 | 
 |          %44 = OpLabel | 
 |          %65 = OpLoad %uint %i | 
 |          %66 = OpIAdd %uint %65 %uint_1 | 
 |                OpStore %i %66 | 
 |                OpBranch %42 | 
 |          %43 = OpLabel | 
 |                OpReturn | 
 |                OpFunctionEnd | 
 | %assign_and_preserve_padding_2_s_a_X_el = OpFunction %void None %67 | 
 |      %dest_1 = OpFunctionParameter %_arr_uint_uint_1 | 
 |     %value_1 = OpFunctionParameter %_arr__arr_strided_arr_uint_2_uint_3 | 
 |          %72 = OpLabel | 
 |         %i_0 = OpVariable %_ptr_Function_uint Function %39 | 
 | %var_for_index_1 = OpVariable %_ptr_Function__arr__arr_strided_arr_uint_2_uint_3 Function %85 | 
 |                OpStore %i_0 %39 | 
 |                OpBranch %74 | 
 |          %74 = OpLabel | 
 |                OpLoopMerge %75 %76 None | 
 |                OpBranch %77 | 
 |          %77 = OpLabel | 
 |          %79 = OpLoad %uint %i_0 | 
 |          %80 = OpULessThan %bool %79 %uint_3 | 
 |          %78 = OpLogicalNot %bool %80 | 
 |                OpSelectionMerge %81 None | 
 |                OpBranchConditional %78 %82 %81 | 
 |          %82 = OpLabel | 
 |                OpBranch %75 | 
 |          %81 = OpLabel | 
 |                OpStore %var_for_index_1 %value_1 | 
 |          %87 = OpCompositeExtract %uint %dest_1 0 | 
 |          %88 = OpLoad %uint %i_0 | 
 |          %89 = OpCompositeConstruct %_arr_uint_uint_2 %87 %88 | 
 |          %90 = OpLoad %uint %i_0 | 
 |          %91 = OpAccessChain %_ptr_Function__arr_strided_arr_uint_2 %var_for_index_1 %90 | 
 |          %92 = OpLoad %_arr_strided_arr_uint_2 %91 | 
 |          %86 = OpFunctionCall %void %assign_and_preserve_padding_3_s_a_X_el_X %89 %92 | 
 |                OpBranch %76 | 
 |          %76 = OpLabel | 
 |          %93 = OpLoad %uint %i_0 | 
 |          %94 = OpIAdd %uint %93 %uint_1 | 
 |                OpStore %i_0 %94 | 
 |                OpBranch %74 | 
 |          %75 = OpLabel | 
 |                OpReturn | 
 |                OpFunctionEnd | 
 | %assign_and_preserve_padding_1_s_a_X = OpFunction %void None %95 | 
 |      %dest_2 = OpFunctionParameter %_arr_uint_uint_1 | 
 |     %value_2 = OpFunctionParameter %strided_arr_1 | 
 |          %99 = OpLabel | 
 |         %101 = OpCompositeExtract %uint %dest_2 0 | 
 |         %102 = OpCompositeConstruct %_arr_uint_uint_1 %101 | 
 |         %103 = OpCompositeExtract %_arr__arr_strided_arr_uint_2_uint_3 %value_2 0 | 
 |         %100 = OpFunctionCall %void %assign_and_preserve_padding_2_s_a_X_el %102 %103 | 
 |                OpReturn | 
 |                OpFunctionEnd | 
 | %assign_and_preserve_padding_s_a = OpFunction %void None %104 | 
 |     %value_3 = OpFunctionParameter %_arr_strided_arr_1_uint_4 | 
 |         %107 = OpLabel | 
 |         %i_1 = OpVariable %_ptr_Function_uint Function %39 | 
 | %var_for_index_2 = OpVariable %_ptr_Function__arr_strided_arr_1_uint_4 Function %120 | 
 |                OpStore %i_1 %39 | 
 |                OpBranch %109 | 
 |         %109 = OpLabel | 
 |                OpLoopMerge %110 %111 None | 
 |                OpBranch %112 | 
 |         %112 = OpLabel | 
 |         %114 = OpLoad %uint %i_1 | 
 |         %115 = OpULessThan %bool %114 %uint_4 | 
 |         %113 = OpLogicalNot %bool %115 | 
 |                OpSelectionMerge %116 None | 
 |                OpBranchConditional %113 %117 %116 | 
 |         %117 = OpLabel | 
 |                OpBranch %110 | 
 |         %116 = OpLabel | 
 |                OpStore %var_for_index_2 %value_3 | 
 |         %122 = OpLoad %uint %i_1 | 
 |         %123 = OpCompositeConstruct %_arr_uint_uint_1 %122 | 
 |         %124 = OpLoad %uint %i_1 | 
 |         %126 = OpAccessChain %_ptr_Function_strided_arr_1 %var_for_index_2 %124 | 
 |         %127 = OpLoad %strided_arr_1 %126 | 
 |         %121 = OpFunctionCall %void %assign_and_preserve_padding_1_s_a_X %123 %127 | 
 |                OpBranch %111 | 
 |         %111 = OpLabel | 
 |         %128 = OpLoad %uint %i_1 | 
 |         %129 = OpIAdd %uint %128 %uint_1 | 
 |                OpStore %i_1 %129 | 
 |                OpBranch %109 | 
 |         %110 = OpLabel | 
 |                OpReturn | 
 |                OpFunctionEnd | 
 |         %f_1 = OpFunction %void None %130 | 
 |         %132 = OpLabel | 
 |         %134 = OpAccessChain %_ptr_StorageBuffer__arr_strided_arr_1_uint_4 %s %uint_0 %uint_0 | 
 |         %135 = OpLoad %_arr_strided_arr_1_uint_4 %134 | 
 |         %138 = OpAccessChain %_ptr_StorageBuffer__arr__arr_strided_arr_uint_2_uint_3 %s %uint_0 %uint_0 %int_3 %uint_0 | 
 |         %139 = OpLoad %_arr__arr_strided_arr_uint_2_uint_3 %138 | 
 |         %141 = OpAccessChain %_ptr_StorageBuffer__arr_strided_arr_uint_2 %s %uint_0 %uint_0 %int_3 %uint_0 %int_2 | 
 |         %142 = OpLoad %_arr_strided_arr_uint_2 %141 | 
 |         %143 = OpAccessChain %_ptr_StorageBuffer_float %s %uint_0 %uint_0 %int_3 %uint_0 %int_2 %int_1 %uint_0 | 
 |         %144 = OpLoad %float %143 | 
 |         %145 = OpFunctionCall %void %assign_and_preserve_padding_s_a %120 | 
 |         %146 = OpAccessChain %_ptr_StorageBuffer_float %s %uint_0 %uint_0 %int_3 %uint_0 %int_2 %int_1 %uint_0 | 
 |                OpStore %146 %float_5 | 
 |                OpReturn | 
 |                OpFunctionEnd | 
 |           %f = OpFunction %void None %130 | 
 |         %149 = OpLabel | 
 |         %150 = OpFunctionCall %void %f_1 | 
 |                OpReturn | 
 |                OpFunctionEnd |