blob: 4c40ec493135a66e08f4ba8bab025fe164a0ff98 [file] [log] [blame]
; 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