| ; SPIR-V |
| ; Version: 1.3 |
| ; Generator: Google Tint Compiler; 0 |
| ; Bound: 414 |
| ; Schema: 0 |
| OpCapability Shader |
| OpMemoryModel Logical GLSL450 |
| OpEntryPoint GLCompute %main "main" |
| OpExecutionMode %main LocalSize 1 1 1 |
| OpName %buffer0_block "buffer0_block" |
| OpMemberName %buffer0_block 0 "inner" |
| OpName %buffer0 "buffer0" |
| OpName %buffer1_block "buffer1_block" |
| OpMemberName %buffer1_block 0 "inner" |
| OpName %S "S" |
| OpMemberName %S 0 "m" |
| OpName %buffer1 "buffer1" |
| OpName %buffer2_block "buffer2_block" |
| OpMemberName %buffer2_block 0 "inner" |
| OpName %S2 "S2" |
| OpMemberName %S2 0 "m" |
| OpName %buffer2 "buffer2" |
| OpName %buffer3_block "buffer3_block" |
| OpMemberName %buffer3_block 0 "inner" |
| OpName %S3 "S3" |
| OpMemberName %S3 0 "s" |
| OpName %buffer3 "buffer3" |
| OpName %buffer4_block "buffer4_block" |
| OpMemberName %buffer4_block 0 "inner" |
| OpName %S4 "S4" |
| OpMemberName %S4 0 "s" |
| OpName %buffer4 "buffer4" |
| OpName %buffer5_block "buffer5_block" |
| OpMemberName %buffer5_block 0 "inner" |
| OpName %buffer5 "buffer5" |
| OpName %buffer6_block "buffer6_block" |
| OpMemberName %buffer6_block 0 "inner" |
| OpName %buffer6 "buffer6" |
| OpName %buffer7_block "buffer7_block" |
| OpMemberName %buffer7_block 0 "inner" |
| OpName %buffer7 "buffer7" |
| OpName %assign_and_preserve_padding_buffer0 "assign_and_preserve_padding_buffer0" |
| OpName %value "value" |
| OpName %assign_and_preserve_padding_buffer5_X "assign_and_preserve_padding_buffer5_X" |
| OpName %dest "dest" |
| OpName %value_0 "value" |
| OpName %assign_and_preserve_padding_buffer2_m_X "assign_and_preserve_padding_buffer2_m_X" |
| OpName %dest_0 "dest" |
| OpName %value_1 "value" |
| OpName %assign_and_preserve_padding_buffer7_X_m_X "assign_and_preserve_padding_buffer7_X_m_X" |
| OpName %dest_1 "dest" |
| OpName %value_2 "value" |
| OpName %assign_and_preserve_padding_buffer1_m "assign_and_preserve_padding_buffer1_m" |
| OpName %value_3 "value" |
| OpName %assign_and_preserve_padding_buffer6_X_m "assign_and_preserve_padding_buffer6_X_m" |
| OpName %dest_2 "dest" |
| OpName %value_4 "value" |
| OpName %assign_and_preserve_padding_buffer4_s_X_m "assign_and_preserve_padding_buffer4_s_X_m" |
| OpName %dest_3 "dest" |
| OpName %value_5 "value" |
| OpName %assign_and_preserve_padding_buffer3_s_m "assign_and_preserve_padding_buffer3_s_m" |
| OpName %value_6 "value" |
| OpName %assign_and_preserve_padding_1_buffer1 "assign_and_preserve_padding_1_buffer1" |
| OpName %value_7 "value" |
| OpName %assign_and_preserve_padding_1_buffer6_X "assign_and_preserve_padding_1_buffer6_X" |
| OpName %dest_4 "dest" |
| OpName %value_8 "value" |
| OpName %assign_and_preserve_padding_1_buffer4_s_X "assign_and_preserve_padding_1_buffer4_s_X" |
| OpName %dest_5 "dest" |
| OpName %value_9 "value" |
| OpName %assign_and_preserve_padding_1_buffer3_s "assign_and_preserve_padding_1_buffer3_s" |
| OpName %value_10 "value" |
| OpName %assign_and_preserve_padding_3_buffer5 "assign_and_preserve_padding_3_buffer5" |
| OpName %value_11 "value" |
| OpName %i "i" |
| OpName %var_for_index "var_for_index" |
| OpName %assign_and_preserve_padding_3_buffer2_m "assign_and_preserve_padding_3_buffer2_m" |
| OpName %value_12 "value" |
| OpName %i_0 "i" |
| OpName %var_for_index_1 "var_for_index_1" |
| OpName %assign_and_preserve_padding_3_buffer7_X_m "assign_and_preserve_padding_3_buffer7_X_m" |
| OpName %dest_6 "dest" |
| OpName %value_13 "value" |
| OpName %i_1 "i" |
| OpName %var_for_index_2 "var_for_index_2" |
| OpName %assign_and_preserve_padding_2_buffer2 "assign_and_preserve_padding_2_buffer2" |
| OpName %value_14 "value" |
| OpName %assign_and_preserve_padding_2_buffer7_X "assign_and_preserve_padding_2_buffer7_X" |
| OpName %dest_7 "dest" |
| OpName %value_15 "value" |
| OpName %assign_and_preserve_padding_4_buffer3 "assign_and_preserve_padding_4_buffer3" |
| OpName %value_16 "value" |
| OpName %assign_and_preserve_padding_6_buffer6 "assign_and_preserve_padding_6_buffer6" |
| OpName %value_17 "value" |
| OpName %i_2 "i" |
| OpName %var_for_index_3 "var_for_index_3" |
| OpName %assign_and_preserve_padding_6_buffer4_s "assign_and_preserve_padding_6_buffer4_s" |
| OpName %value_18 "value" |
| OpName %i_3 "i" |
| OpName %var_for_index_4 "var_for_index_4" |
| OpName %assign_and_preserve_padding_5_buffer4 "assign_and_preserve_padding_5_buffer4" |
| OpName %value_19 "value" |
| OpName %assign_and_preserve_padding_7_buffer7 "assign_and_preserve_padding_7_buffer7" |
| OpName %value_20 "value" |
| OpName %i_4 "i" |
| OpName %var_for_index_5 "var_for_index_5" |
| OpName %main "main" |
| OpName %m "m" |
| OpName %c "c" |
| OpDecorate %buffer0_block Block |
| OpMemberDecorate %buffer0_block 0 Offset 0 |
| OpMemberDecorate %buffer0_block 0 ColMajor |
| OpMemberDecorate %buffer0_block 0 MatrixStride 16 |
| OpDecorate %buffer0 DescriptorSet 0 |
| OpDecorate %buffer0 Binding 0 |
| OpDecorate %buffer1_block Block |
| OpMemberDecorate %buffer1_block 0 Offset 0 |
| OpMemberDecorate %S 0 Offset 0 |
| OpMemberDecorate %S 0 ColMajor |
| OpMemberDecorate %S 0 MatrixStride 16 |
| OpDecorate %buffer1 DescriptorSet 0 |
| OpDecorate %buffer1 Binding 1 |
| OpDecorate %buffer2_block Block |
| OpMemberDecorate %buffer2_block 0 Offset 0 |
| OpMemberDecorate %S2 0 Offset 0 |
| OpMemberDecorate %S2 0 ColMajor |
| OpMemberDecorate %S2 0 MatrixStride 16 |
| OpDecorate %_arr_mat3v3float_uint_1 ArrayStride 48 |
| OpDecorate %buffer2 DescriptorSet 0 |
| OpDecorate %buffer2 Binding 2 |
| OpDecorate %buffer3_block Block |
| OpMemberDecorate %buffer3_block 0 Offset 0 |
| OpMemberDecorate %S3 0 Offset 0 |
| OpDecorate %buffer3 DescriptorSet 0 |
| OpDecorate %buffer3 Binding 3 |
| OpDecorate %buffer4_block Block |
| OpMemberDecorate %buffer4_block 0 Offset 0 |
| OpMemberDecorate %S4 0 Offset 0 |
| OpDecorate %_arr_S_uint_1 ArrayStride 48 |
| OpDecorate %buffer4 DescriptorSet 0 |
| OpDecorate %buffer4 Binding 4 |
| OpDecorate %buffer5_block Block |
| OpMemberDecorate %buffer5_block 0 Offset 0 |
| OpMemberDecorate %buffer5_block 0 ColMajor |
| OpMemberDecorate %buffer5_block 0 MatrixStride 16 |
| OpDecorate %buffer5 DescriptorSet 0 |
| OpDecorate %buffer5 Binding 5 |
| OpDecorate %buffer6_block Block |
| OpMemberDecorate %buffer6_block 0 Offset 0 |
| OpDecorate %buffer6 DescriptorSet 0 |
| OpDecorate %buffer6 Binding 6 |
| OpDecorate %buffer7_block Block |
| OpMemberDecorate %buffer7_block 0 Offset 0 |
| OpDecorate %_arr_S2_uint_1 ArrayStride 48 |
| OpDecorate %buffer7 DescriptorSet 0 |
| OpDecorate %buffer7 Binding 7 |
| OpDecorate %_arr_uint_uint_1 ArrayStride 4 |
| OpDecorate %_arr_uint_uint_2 ArrayStride 4 |
| %float = OpTypeFloat 32 |
| %v3float = OpTypeVector %float 3 |
| %mat3v3float = OpTypeMatrix %v3float 3 |
| %buffer0_block = OpTypeStruct %mat3v3float |
| %_ptr_StorageBuffer_buffer0_block = OpTypePointer StorageBuffer %buffer0_block |
| %buffer0 = OpVariable %_ptr_StorageBuffer_buffer0_block StorageBuffer |
| %S = OpTypeStruct %mat3v3float |
| %buffer1_block = OpTypeStruct %S |
| %_ptr_StorageBuffer_buffer1_block = OpTypePointer StorageBuffer %buffer1_block |
| %buffer1 = OpVariable %_ptr_StorageBuffer_buffer1_block StorageBuffer |
| %uint = OpTypeInt 32 0 |
| %uint_1 = OpConstant %uint 1 |
| %_arr_mat3v3float_uint_1 = OpTypeArray %mat3v3float %uint_1 |
| %S2 = OpTypeStruct %_arr_mat3v3float_uint_1 |
| %buffer2_block = OpTypeStruct %S2 |
| %_ptr_StorageBuffer_buffer2_block = OpTypePointer StorageBuffer %buffer2_block |
| %buffer2 = OpVariable %_ptr_StorageBuffer_buffer2_block StorageBuffer |
| %S3 = OpTypeStruct %S |
| %buffer3_block = OpTypeStruct %S3 |
| %_ptr_StorageBuffer_buffer3_block = OpTypePointer StorageBuffer %buffer3_block |
| %buffer3 = OpVariable %_ptr_StorageBuffer_buffer3_block StorageBuffer |
| %_arr_S_uint_1 = OpTypeArray %S %uint_1 |
| %S4 = OpTypeStruct %_arr_S_uint_1 |
| %buffer4_block = OpTypeStruct %S4 |
| %_ptr_StorageBuffer_buffer4_block = OpTypePointer StorageBuffer %buffer4_block |
| %buffer4 = OpVariable %_ptr_StorageBuffer_buffer4_block StorageBuffer |
| %buffer5_block = OpTypeStruct %_arr_mat3v3float_uint_1 |
| %_ptr_StorageBuffer_buffer5_block = OpTypePointer StorageBuffer %buffer5_block |
| %buffer5 = OpVariable %_ptr_StorageBuffer_buffer5_block StorageBuffer |
| %buffer6_block = OpTypeStruct %_arr_S_uint_1 |
| %_ptr_StorageBuffer_buffer6_block = OpTypePointer StorageBuffer %buffer6_block |
| %buffer6 = OpVariable %_ptr_StorageBuffer_buffer6_block StorageBuffer |
| %_arr_S2_uint_1 = OpTypeArray %S2 %uint_1 |
| %buffer7_block = OpTypeStruct %_arr_S2_uint_1 |
| %_ptr_StorageBuffer_buffer7_block = OpTypePointer StorageBuffer %buffer7_block |
| %buffer7 = OpVariable %_ptr_StorageBuffer_buffer7_block StorageBuffer |
| %void = OpTypeVoid |
| %37 = OpTypeFunction %void %mat3v3float |
| %uint_0 = OpConstant %uint 0 |
| %int = OpTypeInt 32 1 |
| %44 = OpConstantNull %int |
| %_ptr_StorageBuffer_v3float = OpTypePointer StorageBuffer %v3float |
| %47 = OpConstantNull %uint |
| %int_1 = OpConstant %int 1 |
| %int_2 = OpConstant %int 2 |
| %uint_2 = OpConstant %uint 2 |
| %_arr_uint_uint_1 = OpTypeArray %uint %uint_1 |
| %56 = OpTypeFunction %void %_arr_uint_uint_1 %mat3v3float |
| %_arr_uint_uint_2 = OpTypeArray %uint %uint_2 |
| %84 = OpTypeFunction %void %_arr_uint_uint_2 %mat3v3float |
| %146 = OpTypeFunction %void %S |
| %152 = OpTypeFunction %void %_arr_uint_uint_1 %S |
| %174 = OpTypeFunction %void %_arr_mat3v3float_uint_1 |
| %_ptr_Function_uint = OpTypePointer Function %uint |
| %bool = OpTypeBool |
| %_ptr_Function__arr_mat3v3float_uint_1 = OpTypePointer Function %_arr_mat3v3float_uint_1 |
| %192 = OpConstantNull %_arr_mat3v3float_uint_1 |
| %_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float |
| %224 = OpTypeFunction %void %_arr_uint_uint_1 %_arr_mat3v3float_uint_1 |
| %249 = OpTypeFunction %void %S2 |
| %255 = OpTypeFunction %void %_arr_uint_uint_1 %S2 |
| %264 = OpTypeFunction %void %S3 |
| %270 = OpTypeFunction %void %_arr_S_uint_1 |
| %_ptr_Function__arr_S_uint_1 = OpTypePointer Function %_arr_S_uint_1 |
| %286 = OpConstantNull %_arr_S_uint_1 |
| %_ptr_Function_S = OpTypePointer Function %S |
| %318 = OpTypeFunction %void %S4 |
| %324 = OpTypeFunction %void %_arr_S2_uint_1 |
| %_ptr_Function__arr_S2_uint_1 = OpTypePointer Function %_arr_S2_uint_1 |
| %340 = OpConstantNull %_arr_S2_uint_1 |
| %_ptr_Function_S2 = OpTypePointer Function %S2 |
| %350 = OpTypeFunction %void |
| %354 = OpConstantNull %mat3v3float |
| %uint_3 = OpConstant %uint 3 |
| %_ptr_Function_v3float = OpTypePointer Function %v3float |
| %assign_and_preserve_padding_buffer0 = OpFunction %void None %37 |
| %value = OpFunctionParameter %mat3v3float |
| %41 = OpLabel |
| %46 = OpAccessChain %_ptr_StorageBuffer_v3float %buffer0 %uint_0 %44 |
| %48 = OpCompositeExtract %v3float %value 0 |
| OpStore %46 %48 |
| %50 = OpAccessChain %_ptr_StorageBuffer_v3float %buffer0 %uint_0 %int_1 |
| %51 = OpCompositeExtract %v3float %value 1 |
| OpStore %50 %51 |
| %53 = OpAccessChain %_ptr_StorageBuffer_v3float %buffer0 %uint_0 %int_2 |
| %55 = OpCompositeExtract %v3float %value 2 |
| OpStore %53 %55 |
| OpReturn |
| OpFunctionEnd |
| %assign_and_preserve_padding_buffer5_X = OpFunction %void None %56 |
| %dest = OpFunctionParameter %_arr_uint_uint_1 |
| %value_0 = OpFunctionParameter %mat3v3float |
| %61 = OpLabel |
| %62 = OpCompositeExtract %uint %dest 0 |
| %63 = OpAccessChain %_ptr_StorageBuffer_v3float %buffer5 %uint_0 %62 %44 |
| %64 = OpCompositeExtract %v3float %value_0 0 |
| OpStore %63 %64 |
| %65 = OpCompositeExtract %uint %dest 0 |
| %66 = OpAccessChain %_ptr_StorageBuffer_v3float %buffer5 %uint_0 %65 %int_1 |
| %67 = OpCompositeExtract %v3float %value_0 1 |
| OpStore %66 %67 |
| %68 = OpCompositeExtract %uint %dest 0 |
| %69 = OpAccessChain %_ptr_StorageBuffer_v3float %buffer5 %uint_0 %68 %int_2 |
| %70 = OpCompositeExtract %v3float %value_0 2 |
| OpStore %69 %70 |
| OpReturn |
| OpFunctionEnd |
| %assign_and_preserve_padding_buffer2_m_X = OpFunction %void None %56 |
| %dest_0 = OpFunctionParameter %_arr_uint_uint_1 |
| %value_1 = OpFunctionParameter %mat3v3float |
| %74 = OpLabel |
| %75 = OpCompositeExtract %uint %dest_0 0 |
| %76 = OpAccessChain %_ptr_StorageBuffer_v3float %buffer2 %uint_0 %uint_0 %75 %44 |
| %77 = OpCompositeExtract %v3float %value_1 0 |
| OpStore %76 %77 |
| %78 = OpCompositeExtract %uint %dest_0 0 |
| %79 = OpAccessChain %_ptr_StorageBuffer_v3float %buffer2 %uint_0 %uint_0 %78 %int_1 |
| %80 = OpCompositeExtract %v3float %value_1 1 |
| OpStore %79 %80 |
| %81 = OpCompositeExtract %uint %dest_0 0 |
| %82 = OpAccessChain %_ptr_StorageBuffer_v3float %buffer2 %uint_0 %uint_0 %81 %int_2 |
| %83 = OpCompositeExtract %v3float %value_1 2 |
| OpStore %82 %83 |
| OpReturn |
| OpFunctionEnd |
| %assign_and_preserve_padding_buffer7_X_m_X = OpFunction %void None %84 |
| %dest_1 = OpFunctionParameter %_arr_uint_uint_2 |
| %value_2 = OpFunctionParameter %mat3v3float |
| %89 = OpLabel |
| %90 = OpCompositeExtract %uint %dest_1 0 |
| %91 = OpCompositeExtract %uint %dest_1 0 |
| %92 = OpAccessChain %_ptr_StorageBuffer_v3float %buffer7 %uint_0 %90 %uint_0 %91 %44 |
| %93 = OpCompositeExtract %v3float %value_2 0 |
| OpStore %92 %93 |
| %94 = OpCompositeExtract %uint %dest_1 0 |
| %95 = OpCompositeExtract %uint %dest_1 0 |
| %96 = OpAccessChain %_ptr_StorageBuffer_v3float %buffer7 %uint_0 %94 %uint_0 %95 %int_1 |
| %97 = OpCompositeExtract %v3float %value_2 1 |
| OpStore %96 %97 |
| %98 = OpCompositeExtract %uint %dest_1 0 |
| %99 = OpCompositeExtract %uint %dest_1 0 |
| %100 = OpAccessChain %_ptr_StorageBuffer_v3float %buffer7 %uint_0 %98 %uint_0 %99 %int_2 |
| %101 = OpCompositeExtract %v3float %value_2 2 |
| OpStore %100 %101 |
| OpReturn |
| OpFunctionEnd |
| %assign_and_preserve_padding_buffer1_m = OpFunction %void None %37 |
| %value_3 = OpFunctionParameter %mat3v3float |
| %104 = OpLabel |
| %105 = OpAccessChain %_ptr_StorageBuffer_v3float %buffer1 %uint_0 %uint_0 %44 |
| %106 = OpCompositeExtract %v3float %value_3 0 |
| OpStore %105 %106 |
| %107 = OpAccessChain %_ptr_StorageBuffer_v3float %buffer1 %uint_0 %uint_0 %int_1 |
| %108 = OpCompositeExtract %v3float %value_3 1 |
| OpStore %107 %108 |
| %109 = OpAccessChain %_ptr_StorageBuffer_v3float %buffer1 %uint_0 %uint_0 %int_2 |
| %110 = OpCompositeExtract %v3float %value_3 2 |
| OpStore %109 %110 |
| OpReturn |
| OpFunctionEnd |
| %assign_and_preserve_padding_buffer6_X_m = OpFunction %void None %56 |
| %dest_2 = OpFunctionParameter %_arr_uint_uint_1 |
| %value_4 = OpFunctionParameter %mat3v3float |
| %114 = OpLabel |
| %115 = OpCompositeExtract %uint %dest_2 0 |
| %116 = OpAccessChain %_ptr_StorageBuffer_v3float %buffer6 %uint_0 %115 %uint_0 %44 |
| %117 = OpCompositeExtract %v3float %value_4 0 |
| OpStore %116 %117 |
| %118 = OpCompositeExtract %uint %dest_2 0 |
| %119 = OpAccessChain %_ptr_StorageBuffer_v3float %buffer6 %uint_0 %118 %uint_0 %int_1 |
| %120 = OpCompositeExtract %v3float %value_4 1 |
| OpStore %119 %120 |
| %121 = OpCompositeExtract %uint %dest_2 0 |
| %122 = OpAccessChain %_ptr_StorageBuffer_v3float %buffer6 %uint_0 %121 %uint_0 %int_2 |
| %123 = OpCompositeExtract %v3float %value_4 2 |
| OpStore %122 %123 |
| OpReturn |
| OpFunctionEnd |
| %assign_and_preserve_padding_buffer4_s_X_m = OpFunction %void None %56 |
| %dest_3 = OpFunctionParameter %_arr_uint_uint_1 |
| %value_5 = OpFunctionParameter %mat3v3float |
| %127 = OpLabel |
| %128 = OpCompositeExtract %uint %dest_3 0 |
| %129 = OpAccessChain %_ptr_StorageBuffer_v3float %buffer4 %uint_0 %uint_0 %128 %uint_0 %44 |
| %130 = OpCompositeExtract %v3float %value_5 0 |
| OpStore %129 %130 |
| %131 = OpCompositeExtract %uint %dest_3 0 |
| %132 = OpAccessChain %_ptr_StorageBuffer_v3float %buffer4 %uint_0 %uint_0 %131 %uint_0 %int_1 |
| %133 = OpCompositeExtract %v3float %value_5 1 |
| OpStore %132 %133 |
| %134 = OpCompositeExtract %uint %dest_3 0 |
| %135 = OpAccessChain %_ptr_StorageBuffer_v3float %buffer4 %uint_0 %uint_0 %134 %uint_0 %int_2 |
| %136 = OpCompositeExtract %v3float %value_5 2 |
| OpStore %135 %136 |
| OpReturn |
| OpFunctionEnd |
| %assign_and_preserve_padding_buffer3_s_m = OpFunction %void None %37 |
| %value_6 = OpFunctionParameter %mat3v3float |
| %139 = OpLabel |
| %140 = OpAccessChain %_ptr_StorageBuffer_v3float %buffer3 %uint_0 %uint_0 %uint_0 %44 |
| %141 = OpCompositeExtract %v3float %value_6 0 |
| OpStore %140 %141 |
| %142 = OpAccessChain %_ptr_StorageBuffer_v3float %buffer3 %uint_0 %uint_0 %uint_0 %int_1 |
| %143 = OpCompositeExtract %v3float %value_6 1 |
| OpStore %142 %143 |
| %144 = OpAccessChain %_ptr_StorageBuffer_v3float %buffer3 %uint_0 %uint_0 %uint_0 %int_2 |
| %145 = OpCompositeExtract %v3float %value_6 2 |
| OpStore %144 %145 |
| OpReturn |
| OpFunctionEnd |
| %assign_and_preserve_padding_1_buffer1 = OpFunction %void None %146 |
| %value_7 = OpFunctionParameter %S |
| %149 = OpLabel |
| %151 = OpCompositeExtract %mat3v3float %value_7 0 |
| %150 = OpFunctionCall %void %assign_and_preserve_padding_buffer1_m %151 |
| OpReturn |
| OpFunctionEnd |
| %assign_and_preserve_padding_1_buffer6_X = OpFunction %void None %152 |
| %dest_4 = OpFunctionParameter %_arr_uint_uint_1 |
| %value_8 = OpFunctionParameter %S |
| %156 = OpLabel |
| %158 = OpCompositeExtract %uint %dest_4 0 |
| %159 = OpCompositeConstruct %_arr_uint_uint_1 %158 |
| %160 = OpCompositeExtract %mat3v3float %value_8 0 |
| %157 = OpFunctionCall %void %assign_and_preserve_padding_buffer6_X_m %159 %160 |
| OpReturn |
| OpFunctionEnd |
| %assign_and_preserve_padding_1_buffer4_s_X = OpFunction %void None %152 |
| %dest_5 = OpFunctionParameter %_arr_uint_uint_1 |
| %value_9 = OpFunctionParameter %S |
| %164 = OpLabel |
| %166 = OpCompositeExtract %uint %dest_5 0 |
| %167 = OpCompositeConstruct %_arr_uint_uint_1 %166 |
| %168 = OpCompositeExtract %mat3v3float %value_9 0 |
| %165 = OpFunctionCall %void %assign_and_preserve_padding_buffer4_s_X_m %167 %168 |
| OpReturn |
| OpFunctionEnd |
| %assign_and_preserve_padding_1_buffer3_s = OpFunction %void None %146 |
| %value_10 = OpFunctionParameter %S |
| %171 = OpLabel |
| %173 = OpCompositeExtract %mat3v3float %value_10 0 |
| %172 = OpFunctionCall %void %assign_and_preserve_padding_buffer3_s_m %173 |
| OpReturn |
| OpFunctionEnd |
| %assign_and_preserve_padding_3_buffer5 = OpFunction %void None %174 |
| %value_11 = OpFunctionParameter %_arr_mat3v3float_uint_1 |
| %177 = OpLabel |
| %i = OpVariable %_ptr_Function_uint Function %47 |
| %var_for_index = OpVariable %_ptr_Function__arr_mat3v3float_uint_1 Function %192 |
| OpStore %i %47 |
| OpBranch %180 |
| %180 = OpLabel |
| OpLoopMerge %181 %182 None |
| OpBranch %183 |
| %183 = OpLabel |
| %185 = OpLoad %uint %i |
| %186 = OpULessThan %bool %185 %uint_1 |
| %184 = OpLogicalNot %bool %186 |
| OpSelectionMerge %188 None |
| OpBranchConditional %184 %189 %188 |
| %189 = OpLabel |
| OpBranch %181 |
| %188 = OpLabel |
| OpStore %var_for_index %value_11 |
| %194 = OpLoad %uint %i |
| %195 = OpCompositeConstruct %_arr_uint_uint_1 %194 |
| %196 = OpLoad %uint %i |
| %198 = OpAccessChain %_ptr_Function_mat3v3float %var_for_index %196 |
| %199 = OpLoad %mat3v3float %198 |
| %193 = OpFunctionCall %void %assign_and_preserve_padding_buffer5_X %195 %199 |
| OpBranch %182 |
| %182 = OpLabel |
| %200 = OpLoad %uint %i |
| %201 = OpIAdd %uint %200 %uint_1 |
| OpStore %i %201 |
| OpBranch %180 |
| %181 = OpLabel |
| OpReturn |
| OpFunctionEnd |
| %assign_and_preserve_padding_3_buffer2_m = OpFunction %void None %174 |
| %value_12 = OpFunctionParameter %_arr_mat3v3float_uint_1 |
| %204 = OpLabel |
| %i_0 = OpVariable %_ptr_Function_uint Function %47 |
| %var_for_index_1 = OpVariable %_ptr_Function__arr_mat3v3float_uint_1 Function %192 |
| OpStore %i_0 %47 |
| OpBranch %206 |
| %206 = OpLabel |
| OpLoopMerge %207 %208 None |
| OpBranch %209 |
| %209 = OpLabel |
| %211 = OpLoad %uint %i_0 |
| %212 = OpULessThan %bool %211 %uint_1 |
| %210 = OpLogicalNot %bool %212 |
| OpSelectionMerge %213 None |
| OpBranchConditional %210 %214 %213 |
| %214 = OpLabel |
| OpBranch %207 |
| %213 = OpLabel |
| OpStore %var_for_index_1 %value_12 |
| %217 = OpLoad %uint %i_0 |
| %218 = OpCompositeConstruct %_arr_uint_uint_1 %217 |
| %219 = OpLoad %uint %i_0 |
| %220 = OpAccessChain %_ptr_Function_mat3v3float %var_for_index_1 %219 |
| %221 = OpLoad %mat3v3float %220 |
| %216 = OpFunctionCall %void %assign_and_preserve_padding_buffer2_m_X %218 %221 |
| OpBranch %208 |
| %208 = OpLabel |
| %222 = OpLoad %uint %i_0 |
| %223 = OpIAdd %uint %222 %uint_1 |
| OpStore %i_0 %223 |
| OpBranch %206 |
| %207 = OpLabel |
| OpReturn |
| OpFunctionEnd |
| %assign_and_preserve_padding_3_buffer7_X_m = OpFunction %void None %224 |
| %dest_6 = OpFunctionParameter %_arr_uint_uint_1 |
| %value_13 = OpFunctionParameter %_arr_mat3v3float_uint_1 |
| %228 = OpLabel |
| %i_1 = OpVariable %_ptr_Function_uint Function %47 |
| %var_for_index_2 = OpVariable %_ptr_Function__arr_mat3v3float_uint_1 Function %192 |
| OpStore %i_1 %47 |
| OpBranch %230 |
| %230 = OpLabel |
| OpLoopMerge %231 %232 None |
| OpBranch %233 |
| %233 = OpLabel |
| %235 = OpLoad %uint %i_1 |
| %236 = OpULessThan %bool %235 %uint_1 |
| %234 = OpLogicalNot %bool %236 |
| OpSelectionMerge %237 None |
| OpBranchConditional %234 %238 %237 |
| %238 = OpLabel |
| OpBranch %231 |
| %237 = OpLabel |
| OpStore %var_for_index_2 %value_13 |
| %241 = OpCompositeExtract %uint %dest_6 0 |
| %242 = OpLoad %uint %i_1 |
| %243 = OpCompositeConstruct %_arr_uint_uint_2 %241 %242 |
| %244 = OpLoad %uint %i_1 |
| %245 = OpAccessChain %_ptr_Function_mat3v3float %var_for_index_2 %244 |
| %246 = OpLoad %mat3v3float %245 |
| %240 = OpFunctionCall %void %assign_and_preserve_padding_buffer7_X_m_X %243 %246 |
| OpBranch %232 |
| %232 = OpLabel |
| %247 = OpLoad %uint %i_1 |
| %248 = OpIAdd %uint %247 %uint_1 |
| OpStore %i_1 %248 |
| OpBranch %230 |
| %231 = OpLabel |
| OpReturn |
| OpFunctionEnd |
| %assign_and_preserve_padding_2_buffer2 = OpFunction %void None %249 |
| %value_14 = OpFunctionParameter %S2 |
| %252 = OpLabel |
| %254 = OpCompositeExtract %_arr_mat3v3float_uint_1 %value_14 0 |
| %253 = OpFunctionCall %void %assign_and_preserve_padding_3_buffer2_m %254 |
| OpReturn |
| OpFunctionEnd |
| %assign_and_preserve_padding_2_buffer7_X = OpFunction %void None %255 |
| %dest_7 = OpFunctionParameter %_arr_uint_uint_1 |
| %value_15 = OpFunctionParameter %S2 |
| %259 = OpLabel |
| %261 = OpCompositeExtract %uint %dest_7 0 |
| %262 = OpCompositeConstruct %_arr_uint_uint_1 %261 |
| %263 = OpCompositeExtract %_arr_mat3v3float_uint_1 %value_15 0 |
| %260 = OpFunctionCall %void %assign_and_preserve_padding_3_buffer7_X_m %262 %263 |
| OpReturn |
| OpFunctionEnd |
| %assign_and_preserve_padding_4_buffer3 = OpFunction %void None %264 |
| %value_16 = OpFunctionParameter %S3 |
| %267 = OpLabel |
| %269 = OpCompositeExtract %S %value_16 0 |
| %268 = OpFunctionCall %void %assign_and_preserve_padding_1_buffer3_s %269 |
| OpReturn |
| OpFunctionEnd |
| %assign_and_preserve_padding_6_buffer6 = OpFunction %void None %270 |
| %value_17 = OpFunctionParameter %_arr_S_uint_1 |
| %273 = OpLabel |
| %i_2 = OpVariable %_ptr_Function_uint Function %47 |
| %var_for_index_3 = OpVariable %_ptr_Function__arr_S_uint_1 Function %286 |
| OpStore %i_2 %47 |
| OpBranch %275 |
| %275 = OpLabel |
| OpLoopMerge %276 %277 None |
| OpBranch %278 |
| %278 = OpLabel |
| %280 = OpLoad %uint %i_2 |
| %281 = OpULessThan %bool %280 %uint_1 |
| %279 = OpLogicalNot %bool %281 |
| OpSelectionMerge %282 None |
| OpBranchConditional %279 %283 %282 |
| %283 = OpLabel |
| OpBranch %276 |
| %282 = OpLabel |
| OpStore %var_for_index_3 %value_17 |
| %288 = OpLoad %uint %i_2 |
| %289 = OpCompositeConstruct %_arr_uint_uint_1 %288 |
| %290 = OpLoad %uint %i_2 |
| %292 = OpAccessChain %_ptr_Function_S %var_for_index_3 %290 |
| %293 = OpLoad %S %292 |
| %287 = OpFunctionCall %void %assign_and_preserve_padding_1_buffer6_X %289 %293 |
| OpBranch %277 |
| %277 = OpLabel |
| %294 = OpLoad %uint %i_2 |
| %295 = OpIAdd %uint %294 %uint_1 |
| OpStore %i_2 %295 |
| OpBranch %275 |
| %276 = OpLabel |
| OpReturn |
| OpFunctionEnd |
| %assign_and_preserve_padding_6_buffer4_s = OpFunction %void None %270 |
| %value_18 = OpFunctionParameter %_arr_S_uint_1 |
| %298 = OpLabel |
| %i_3 = OpVariable %_ptr_Function_uint Function %47 |
| %var_for_index_4 = OpVariable %_ptr_Function__arr_S_uint_1 Function %286 |
| OpStore %i_3 %47 |
| OpBranch %300 |
| %300 = OpLabel |
| OpLoopMerge %301 %302 None |
| OpBranch %303 |
| %303 = OpLabel |
| %305 = OpLoad %uint %i_3 |
| %306 = OpULessThan %bool %305 %uint_1 |
| %304 = OpLogicalNot %bool %306 |
| OpSelectionMerge %307 None |
| OpBranchConditional %304 %308 %307 |
| %308 = OpLabel |
| OpBranch %301 |
| %307 = OpLabel |
| OpStore %var_for_index_4 %value_18 |
| %311 = OpLoad %uint %i_3 |
| %312 = OpCompositeConstruct %_arr_uint_uint_1 %311 |
| %313 = OpLoad %uint %i_3 |
| %314 = OpAccessChain %_ptr_Function_S %var_for_index_4 %313 |
| %315 = OpLoad %S %314 |
| %310 = OpFunctionCall %void %assign_and_preserve_padding_1_buffer4_s_X %312 %315 |
| OpBranch %302 |
| %302 = OpLabel |
| %316 = OpLoad %uint %i_3 |
| %317 = OpIAdd %uint %316 %uint_1 |
| OpStore %i_3 %317 |
| OpBranch %300 |
| %301 = OpLabel |
| OpReturn |
| OpFunctionEnd |
| %assign_and_preserve_padding_5_buffer4 = OpFunction %void None %318 |
| %value_19 = OpFunctionParameter %S4 |
| %321 = OpLabel |
| %323 = OpCompositeExtract %_arr_S_uint_1 %value_19 0 |
| %322 = OpFunctionCall %void %assign_and_preserve_padding_6_buffer4_s %323 |
| OpReturn |
| OpFunctionEnd |
| %assign_and_preserve_padding_7_buffer7 = OpFunction %void None %324 |
| %value_20 = OpFunctionParameter %_arr_S2_uint_1 |
| %327 = OpLabel |
| %i_4 = OpVariable %_ptr_Function_uint Function %47 |
| %var_for_index_5 = OpVariable %_ptr_Function__arr_S2_uint_1 Function %340 |
| OpStore %i_4 %47 |
| OpBranch %329 |
| %329 = OpLabel |
| OpLoopMerge %330 %331 None |
| OpBranch %332 |
| %332 = OpLabel |
| %334 = OpLoad %uint %i_4 |
| %335 = OpULessThan %bool %334 %uint_1 |
| %333 = OpLogicalNot %bool %335 |
| OpSelectionMerge %336 None |
| OpBranchConditional %333 %337 %336 |
| %337 = OpLabel |
| OpBranch %330 |
| %336 = OpLabel |
| OpStore %var_for_index_5 %value_20 |
| %342 = OpLoad %uint %i_4 |
| %343 = OpCompositeConstruct %_arr_uint_uint_1 %342 |
| %344 = OpLoad %uint %i_4 |
| %346 = OpAccessChain %_ptr_Function_S2 %var_for_index_5 %344 |
| %347 = OpLoad %S2 %346 |
| %341 = OpFunctionCall %void %assign_and_preserve_padding_2_buffer7_X %343 %347 |
| OpBranch %331 |
| %331 = OpLabel |
| %348 = OpLoad %uint %i_4 |
| %349 = OpIAdd %uint %348 %uint_1 |
| OpStore %i_4 %349 |
| OpBranch %329 |
| %330 = OpLabel |
| OpReturn |
| OpFunctionEnd |
| %main = OpFunction %void None %350 |
| %352 = OpLabel |
| %m = OpVariable %_ptr_Function_mat3v3float Function %354 |
| %c = OpVariable %_ptr_Function_uint Function %47 |
| OpStore %c %47 |
| OpBranch %356 |
| %356 = OpLabel |
| OpLoopMerge %357 %358 None |
| OpBranch %359 |
| %359 = OpLabel |
| %361 = OpLoad %uint %c |
| %363 = OpULessThan %bool %361 %uint_3 |
| %360 = OpLogicalNot %bool %363 |
| OpSelectionMerge %364 None |
| OpBranchConditional %360 %365 %364 |
| %365 = OpLabel |
| OpBranch %357 |
| %364 = OpLabel |
| %366 = OpLoad %uint %c |
| %368 = OpAccessChain %_ptr_Function_v3float %m %366 |
| %370 = OpLoad %uint %c |
| %371 = OpIMul %uint %370 %uint_3 |
| %372 = OpIAdd %uint %371 %uint_1 |
| %369 = OpConvertUToF %float %372 |
| %374 = OpLoad %uint %c |
| %375 = OpIMul %uint %374 %uint_3 |
| %376 = OpIAdd %uint %375 %uint_2 |
| %373 = OpConvertUToF %float %376 |
| %378 = OpLoad %uint %c |
| %379 = OpIMul %uint %378 %uint_3 |
| %380 = OpIAdd %uint %379 %uint_3 |
| %377 = OpConvertUToF %float %380 |
| %381 = OpCompositeConstruct %v3float %369 %373 %377 |
| OpStore %368 %381 |
| OpBranch %358 |
| %358 = OpLabel |
| %382 = OpLoad %uint %c |
| %383 = OpIAdd %uint %382 %uint_1 |
| OpStore %c %383 |
| OpBranch %356 |
| %357 = OpLabel |
| %384 = OpLoad %mat3v3float %m |
| %385 = OpFunctionCall %void %assign_and_preserve_padding_buffer0 %384 |
| %386 = OpLoad %mat3v3float %m |
| %387 = OpCompositeConstruct %S %386 |
| %388 = OpFunctionCall %void %assign_and_preserve_padding_1_buffer1 %387 |
| %389 = OpLoad %mat3v3float %m |
| %390 = OpCompositeConstruct %_arr_mat3v3float_uint_1 %389 |
| %391 = OpCompositeConstruct %S2 %390 |
| %392 = OpFunctionCall %void %assign_and_preserve_padding_2_buffer2 %391 |
| %393 = OpLoad %mat3v3float %m |
| %394 = OpCompositeConstruct %S %393 |
| %395 = OpCompositeConstruct %S3 %394 |
| %396 = OpFunctionCall %void %assign_and_preserve_padding_4_buffer3 %395 |
| %397 = OpLoad %mat3v3float %m |
| %398 = OpCompositeConstruct %S %397 |
| %399 = OpCompositeConstruct %_arr_S_uint_1 %398 |
| %400 = OpCompositeConstruct %S4 %399 |
| %401 = OpFunctionCall %void %assign_and_preserve_padding_5_buffer4 %400 |
| %402 = OpLoad %mat3v3float %m |
| %403 = OpCompositeConstruct %_arr_mat3v3float_uint_1 %402 |
| %404 = OpFunctionCall %void %assign_and_preserve_padding_3_buffer5 %403 |
| %405 = OpLoad %mat3v3float %m |
| %406 = OpCompositeConstruct %S %405 |
| %407 = OpCompositeConstruct %_arr_S_uint_1 %406 |
| %408 = OpFunctionCall %void %assign_and_preserve_padding_6_buffer6 %407 |
| %409 = OpLoad %mat3v3float %m |
| %410 = OpCompositeConstruct %_arr_mat3v3float_uint_1 %409 |
| %411 = OpCompositeConstruct %S2 %410 |
| %412 = OpCompositeConstruct %_arr_S2_uint_1 %411 |
| %413 = OpFunctionCall %void %assign_and_preserve_padding_7_buffer7 %412 |
| OpReturn |
| OpFunctionEnd |