blob: b193ea90500c95cd598445129114e82ca5436fb0 [file]
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
; Bound: 574
; Schema: 0
OpCapability Shader
%262 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
OpMemberName %ub_block_tint_explicit_layout 0 "inner"
OpName %ub_block_tint_explicit_layout "ub_block_tint_explicit_layout"
OpMemberName %s_block 0 "inner"
OpName %s_block "s_block"
OpName %main "main"
OpName %scalar_f32 "scalar_f32"
OpName %scalar_i32 "scalar_i32"
OpName %scalar_u32 "scalar_u32"
OpName %vec2_f32 "vec2_f32"
OpName %vec2_i32 "vec2_i32"
OpName %vec2_u32 "vec2_u32"
OpName %vec3_f32 "vec3_f32"
OpName %vec3_i32 "vec3_i32"
OpName %vec3_u32 "vec3_u32"
OpName %vec4_f32 "vec4_f32"
OpName %vec4_i32 "vec4_i32"
OpName %vec4_u32 "vec4_u32"
OpName %mat2x2_f32 "mat2x2_f32"
OpName %mat2x3_f32 "mat2x3_f32"
OpName %mat2x4_f32 "mat2x4_f32"
OpName %mat3x2_f32 "mat3x2_f32"
OpName %mat3x3_f32 "mat3x3_f32"
OpName %mat3x4_f32 "mat3x4_f32"
OpName %mat4x2_f32 "mat4x2_f32"
OpName %mat4x3_f32 "mat4x3_f32"
OpName %mat4x4_f32 "mat4x4_f32"
OpName %arr2_vec3_f32 "arr2_vec3_f32"
OpMemberName %Inner 0 "scalar_i32"
OpMemberName %Inner 1 "scalar_f32"
OpName %Inner "Inner"
OpName %struct_inner "struct_inner"
OpName %array_struct_inner "array_struct_inner"
OpName %tint_f32_to_i32 "tint_f32_to_i32"
OpName %value "value"
OpName %start_byte_offset "start_byte_offset"
OpName %a "a"
OpName %start_byte_offset_0 "start_byte_offset"
OpName %start_byte_offset_1 "start_byte_offset"
OpName %a_0 "a"
OpName %start_byte_offset_2 "start_byte_offset"
OpName %start_byte_offset_3 "start_byte_offset"
OpName %start_byte_offset_4 "start_byte_offset"
OpName %start_byte_offset_5 "start_byte_offset"
OpName %start_byte_offset_6 "start_byte_offset"
OpName %start_byte_offset_7 "start_byte_offset"
OpName %start_byte_offset_8 "start_byte_offset"
OpName %start_byte_offset_9 "start_byte_offset"
OpName %start_byte_offset_10 "start_byte_offset"
OpDecorate %_arr_v4uint_uint_44 ArrayStride 16
OpMemberDecorate %ub_block_tint_explicit_layout 0 Offset 0
OpDecorate %ub_block_tint_explicit_layout Block
OpDecorate %1 DescriptorSet 0
OpDecorate %1 Binding 0
OpDecorate %1 NonWritable
OpMemberDecorate %s_block 0 Offset 0
OpDecorate %s_block Block
OpDecorate %8 DescriptorSet 0
OpDecorate %8 Binding 1
OpDecorate %8 Coherent
%uint = OpTypeInt 32 0
%v4uint = OpTypeVector %uint 4
%uint_44 = OpConstant %uint 44
%_arr_v4uint_uint_44 = OpTypeArray %v4uint %uint_44
%ub_block_tint_explicit_layout = OpTypeStruct %_arr_v4uint_uint_44
%_ptr_Uniform_ub_block_tint_explicit_layout = OpTypePointer Uniform %ub_block_tint_explicit_layout
%1 = OpVariable %_ptr_Uniform_ub_block_tint_explicit_layout Uniform
%int = OpTypeInt 32 1
%s_block = OpTypeStruct %int
%_ptr_StorageBuffer_s_block = OpTypePointer StorageBuffer %s_block
%8 = OpVariable %_ptr_StorageBuffer_s_block StorageBuffer
%void = OpTypeVoid
%14 = OpTypeFunction %void
%_ptr_Uniform_v4uint = OpTypePointer Uniform %v4uint
%uint_0 = OpConstant %uint 0
%float = OpTypeFloat 32
%uint_1 = OpConstant %uint 1
%v2uint = OpTypeVector %uint 2
%v2float = OpTypeVector %float 2
%v2int = OpTypeVector %int 2
%uint_2 = OpConstant %uint 2
%uint_3 = OpConstant %uint 3
%v3uint = OpTypeVector %uint 3
%v3float = OpTypeVector %float 3
%uint_4 = OpConstant %uint 4
%v3int = OpTypeVector %int 3
%uint_5 = OpConstant %uint 5
%uint_6 = OpConstant %uint 6
%v4float = OpTypeVector %float 4
%uint_7 = OpConstant %uint 7
%v4int = OpTypeVector %int 4
%uint_8 = OpConstant %uint 8
%mat2v2float = OpTypeMatrix %v2float 2
%uint_144 = OpConstant %uint 144
%mat2v3float = OpTypeMatrix %v3float 2
%uint_160 = OpConstant %uint 160
%mat2v4float = OpTypeMatrix %v4float 2
%uint_192 = OpConstant %uint 192
%mat3v2float = OpTypeMatrix %v2float 3
%uint_224 = OpConstant %uint 224
%mat3v3float = OpTypeMatrix %v3float 3
%uint_256 = OpConstant %uint 256
%mat3v4float = OpTypeMatrix %v4float 3
%uint_304 = OpConstant %uint 304
%mat4v2float = OpTypeMatrix %v2float 4
%uint_352 = OpConstant %uint 352
%mat4v3float = OpTypeMatrix %v3float 4
%uint_384 = OpConstant %uint 384
%mat4v4float = OpTypeMatrix %v4float 4
%uint_448 = OpConstant %uint 448
%_arr_v3float_uint_2 = OpTypeArray %v3float %uint_2
%uint_512 = OpConstant %uint 512
%Inner = OpTypeStruct %int %float
%uint_544 = OpConstant %uint 544
%_arr_Inner_uint_4 = OpTypeArray %Inner %uint_4
%uint_576 = OpConstant %uint 576
%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
%259 = OpTypeFunction %int %float
%float_n2_14748365e_09 = OpConstant %float -2.14748365e+09
%float_2_14748352e_09 = OpConstant %float 2.14748352e+09
%267 = OpTypeFunction %_arr_Inner_uint_4 %uint
%_ptr_Function__arr_Inner_uint_4 = OpTypePointer Function %_arr_Inner_uint_4
%271 = OpConstantNull %_arr_Inner_uint_4
%bool = OpTypeBool
%uint_32 = OpConstant %uint 32
%_ptr_Function_Inner = OpTypePointer Function %Inner
%291 = OpTypeFunction %Inner %uint
%uint_16 = OpConstant %uint 16
%uint_15 = OpConstant %uint 15
%312 = OpTypeFunction %_arr_v3float_uint_2 %uint
%_ptr_Function__arr_v3float_uint_2 = OpTypePointer Function %_arr_v3float_uint_2
%316 = OpConstantNull %_arr_v3float_uint_2
%_ptr_Function_v3float = OpTypePointer Function %v3float
%338 = OpTypeFunction %mat4v4float %uint
%uint_48 = OpConstant %uint 48
%362 = OpTypeFunction %mat4v3float %uint
%389 = OpTypeFunction %mat4v2float %uint
%v2bool = OpTypeVector %bool 2
%uint_24 = OpConstant %uint 24
%442 = OpTypeFunction %mat3v4float %uint
%460 = OpTypeFunction %mat3v3float %uint
%481 = OpTypeFunction %mat3v2float %uint
%520 = OpTypeFunction %mat2v4float %uint
%533 = OpTypeFunction %mat2v3float %uint
%548 = OpTypeFunction %mat2v2float %uint
%main = OpFunction %void None %14
%15 = OpLabel
%16 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_0
%19 = OpLoad %v4uint %16 None
%20 = OpCompositeExtract %uint %19 0
%scalar_f32 = OpBitcast %float %20
%23 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_0
%24 = OpLoad %v4uint %23 None
%25 = OpCompositeExtract %uint %24 1
%scalar_i32 = OpBitcast %int %25
%27 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_0
%28 = OpLoad %v4uint %27 None
%scalar_u32 = OpCompositeExtract %uint %28 2
%30 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_1
%32 = OpLoad %v4uint %30 None
%33 = OpVectorShuffle %v2uint %32 %32 0 1
%vec2_f32 = OpBitcast %v2float %33
%37 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_1
%38 = OpLoad %v4uint %37 None
%39 = OpVectorShuffle %v2uint %38 %38 2 3
%vec2_i32 = OpBitcast %v2int %39
%42 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_2
%44 = OpLoad %v4uint %42 None
%vec2_u32 = OpVectorShuffle %v2uint %44 %44 0 1
%46 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_3
%48 = OpLoad %v4uint %46 None
%49 = OpVectorShuffle %v3uint %48 %48 0 1 2
%vec3_f32 = OpBitcast %v3float %49
%53 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_4
%55 = OpLoad %v4uint %53 None
%56 = OpVectorShuffle %v3uint %55 %55 0 1 2
%vec3_i32 = OpBitcast %v3int %56
%59 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_5
%61 = OpLoad %v4uint %59 None
%vec3_u32 = OpVectorShuffle %v3uint %61 %61 0 1 2
%63 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_6
%65 = OpLoad %v4uint %63 None
%vec4_f32 = OpBitcast %v4float %65
%68 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_7
%70 = OpLoad %v4uint %68 None
%vec4_i32 = OpBitcast %v4int %70
%73 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_8
%vec4_u32 = OpLoad %v4uint %73 None
%mat2x2_f32 = OpFunctionCall %mat2v2float %78 %uint_144
%mat2x3_f32 = OpFunctionCall %mat2v3float %82 %uint_160
%mat2x4_f32 = OpFunctionCall %mat2v4float %86 %uint_192
%mat3x2_f32 = OpFunctionCall %mat3v2float %90 %uint_224
%mat3x3_f32 = OpFunctionCall %mat3v3float %94 %uint_256
%mat3x4_f32 = OpFunctionCall %mat3v4float %98 %uint_304
%mat4x2_f32 = OpFunctionCall %mat4v2float %102 %uint_352
%mat4x3_f32 = OpFunctionCall %mat4v3float %106 %uint_384
%mat4x4_f32 = OpFunctionCall %mat4v4float %110 %uint_448
%arr2_vec3_f32 = OpFunctionCall %_arr_v3float_uint_2 %114 %uint_512
%struct_inner = OpFunctionCall %Inner %118 %uint_544
%array_struct_inner = OpFunctionCall %_arr_Inner_uint_4 %122 %uint_576
%124 = OpFunctionCall %int %tint_f32_to_i32 %scalar_f32
%126 = OpBitcast %uint %124
%127 = OpBitcast %uint %scalar_i32
%128 = OpIAdd %uint %126 %127
%129 = OpBitcast %int %128
%130 = OpBitcast %int %scalar_u32
%131 = OpBitcast %uint %129
%132 = OpBitcast %uint %130
%133 = OpIAdd %uint %131 %132
%134 = OpBitcast %int %133
%135 = OpCompositeExtract %float %vec2_f32 0
%136 = OpFunctionCall %int %tint_f32_to_i32 %135
%137 = OpBitcast %uint %134
%138 = OpBitcast %uint %136
%139 = OpIAdd %uint %137 %138
%140 = OpBitcast %int %139
%141 = OpCompositeExtract %int %vec2_i32 0
%142 = OpBitcast %uint %140
%143 = OpBitcast %uint %141
%144 = OpIAdd %uint %142 %143
%145 = OpBitcast %int %144
%146 = OpCompositeExtract %uint %vec2_u32 0
%147 = OpBitcast %int %146
%148 = OpBitcast %uint %145
%149 = OpBitcast %uint %147
%150 = OpIAdd %uint %148 %149
%151 = OpBitcast %int %150
%152 = OpCompositeExtract %float %vec3_f32 1
%153 = OpFunctionCall %int %tint_f32_to_i32 %152
%154 = OpBitcast %uint %151
%155 = OpBitcast %uint %153
%156 = OpIAdd %uint %154 %155
%157 = OpBitcast %int %156
%158 = OpCompositeExtract %int %vec3_i32 1
%159 = OpBitcast %uint %157
%160 = OpBitcast %uint %158
%161 = OpIAdd %uint %159 %160
%162 = OpBitcast %int %161
%163 = OpCompositeExtract %uint %vec3_u32 1
%164 = OpBitcast %int %163
%165 = OpBitcast %uint %162
%166 = OpBitcast %uint %164
%167 = OpIAdd %uint %165 %166
%168 = OpBitcast %int %167
%169 = OpCompositeExtract %float %vec4_f32 2
%170 = OpFunctionCall %int %tint_f32_to_i32 %169
%171 = OpBitcast %uint %168
%172 = OpBitcast %uint %170
%173 = OpIAdd %uint %171 %172
%174 = OpBitcast %int %173
%175 = OpCompositeExtract %int %vec4_i32 2
%176 = OpBitcast %uint %174
%177 = OpBitcast %uint %175
%178 = OpIAdd %uint %176 %177
%179 = OpBitcast %int %178
%180 = OpCompositeExtract %uint %vec4_u32 2
%181 = OpBitcast %int %180
%182 = OpBitcast %uint %179
%183 = OpBitcast %uint %181
%184 = OpIAdd %uint %182 %183
%185 = OpBitcast %int %184
%186 = OpCompositeExtract %float %mat2x2_f32 0 0
%187 = OpFunctionCall %int %tint_f32_to_i32 %186
%188 = OpBitcast %uint %185
%189 = OpBitcast %uint %187
%190 = OpIAdd %uint %188 %189
%191 = OpBitcast %int %190
%192 = OpCompositeExtract %float %mat2x3_f32 0 0
%193 = OpFunctionCall %int %tint_f32_to_i32 %192
%194 = OpBitcast %uint %191
%195 = OpBitcast %uint %193
%196 = OpIAdd %uint %194 %195
%197 = OpBitcast %int %196
%198 = OpCompositeExtract %float %mat2x4_f32 0 0
%199 = OpFunctionCall %int %tint_f32_to_i32 %198
%200 = OpBitcast %uint %197
%201 = OpBitcast %uint %199
%202 = OpIAdd %uint %200 %201
%203 = OpBitcast %int %202
%204 = OpCompositeExtract %float %mat3x2_f32 0 0
%205 = OpFunctionCall %int %tint_f32_to_i32 %204
%206 = OpBitcast %uint %203
%207 = OpBitcast %uint %205
%208 = OpIAdd %uint %206 %207
%209 = OpBitcast %int %208
%210 = OpCompositeExtract %float %mat3x3_f32 0 0
%211 = OpFunctionCall %int %tint_f32_to_i32 %210
%212 = OpBitcast %uint %209
%213 = OpBitcast %uint %211
%214 = OpIAdd %uint %212 %213
%215 = OpBitcast %int %214
%216 = OpCompositeExtract %float %mat3x4_f32 0 0
%217 = OpFunctionCall %int %tint_f32_to_i32 %216
%218 = OpBitcast %uint %215
%219 = OpBitcast %uint %217
%220 = OpIAdd %uint %218 %219
%221 = OpBitcast %int %220
%222 = OpCompositeExtract %float %mat4x2_f32 0 0
%223 = OpFunctionCall %int %tint_f32_to_i32 %222
%224 = OpBitcast %uint %221
%225 = OpBitcast %uint %223
%226 = OpIAdd %uint %224 %225
%227 = OpBitcast %int %226
%228 = OpCompositeExtract %float %mat4x3_f32 0 0
%229 = OpFunctionCall %int %tint_f32_to_i32 %228
%230 = OpBitcast %uint %227
%231 = OpBitcast %uint %229
%232 = OpIAdd %uint %230 %231
%233 = OpBitcast %int %232
%234 = OpCompositeExtract %float %mat4x4_f32 0 0
%235 = OpFunctionCall %int %tint_f32_to_i32 %234
%236 = OpBitcast %uint %233
%237 = OpBitcast %uint %235
%238 = OpIAdd %uint %236 %237
%239 = OpBitcast %int %238
%240 = OpCompositeExtract %float %arr2_vec3_f32 0 0
%241 = OpFunctionCall %int %tint_f32_to_i32 %240
%242 = OpBitcast %uint %239
%243 = OpBitcast %uint %241
%244 = OpIAdd %uint %242 %243
%245 = OpBitcast %int %244
%246 = OpCompositeExtract %int %struct_inner 0
%247 = OpBitcast %uint %245
%248 = OpBitcast %uint %246
%249 = OpIAdd %uint %247 %248
%250 = OpBitcast %int %249
%251 = OpCompositeExtract %int %array_struct_inner 0 0
%252 = OpBitcast %uint %250
%253 = OpBitcast %uint %251
%254 = OpIAdd %uint %252 %253
%255 = OpBitcast %int %254
%256 = OpAccessChain %_ptr_StorageBuffer_int %8 %uint_0
OpStore %256 %255 None
OpReturn
OpFunctionEnd
%tint_f32_to_i32 = OpFunction %int None %259
%value = OpFunctionParameter %float
%260 = OpLabel
%261 = OpExtInst %float %262 NClamp %value %float_n2_14748365e_09 %float_2_14748352e_09
%265 = OpConvertFToS %int %261
OpReturnValue %265
OpFunctionEnd
%122 = OpFunction %_arr_Inner_uint_4 None %267
%start_byte_offset = OpFunctionParameter %uint
%268 = OpLabel
%a = OpVariable %_ptr_Function__arr_Inner_uint_4 Function
OpStore %a %271
OpBranch %272
%272 = OpLabel
OpBranch %275
%275 = OpLabel
%277 = OpPhi %uint %uint_0 %272 %278 %274
OpLoopMerge %276 %274 None
OpBranch %273
%273 = OpLabel
%280 = OpUGreaterThanEqual %bool %277 %uint_4
OpSelectionMerge %282 None
OpBranchConditional %280 %283 %282
%283 = OpLabel
OpBranch %276
%282 = OpLabel
%284 = OpIMul %uint %277 %uint_32
%286 = OpIAdd %uint %start_byte_offset %284
%287 = OpAccessChain %_ptr_Function_Inner %a %277
%289 = OpFunctionCall %Inner %118 %286
OpStore %287 %289 None
OpBranch %274
%274 = OpLabel
%278 = OpIAdd %uint %277 %uint_1
OpBranch %275
%276 = OpLabel
%279 = OpLoad %_arr_Inner_uint_4 %a None
OpReturnValue %279
OpFunctionEnd
%118 = OpFunction %Inner None %291
%start_byte_offset_0 = OpFunctionParameter %uint
%292 = OpLabel
%293 = OpUDiv %uint %start_byte_offset_0 %uint_16
%295 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %293
%296 = OpBitwiseAnd %uint %start_byte_offset_0 %uint_15
%298 = OpShiftRightLogical %uint %296 %uint_2
%299 = OpLoad %v4uint %295 None
%300 = OpVectorExtractDynamic %uint %299 %298
%301 = OpBitcast %int %300
%302 = OpIAdd %uint %uint_16 %start_byte_offset_0
%303 = OpUDiv %uint %302 %uint_16
%304 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %303
%305 = OpBitwiseAnd %uint %302 %uint_15
%306 = OpShiftRightLogical %uint %305 %uint_2
%307 = OpLoad %v4uint %304 None
%308 = OpVectorExtractDynamic %uint %307 %306
%309 = OpBitcast %float %308
%310 = OpCompositeConstruct %Inner %301 %309
OpReturnValue %310
OpFunctionEnd
%114 = OpFunction %_arr_v3float_uint_2 None %312
%start_byte_offset_1 = OpFunctionParameter %uint
%313 = OpLabel
%a_0 = OpVariable %_ptr_Function__arr_v3float_uint_2 Function
OpStore %a_0 %316
OpBranch %317
%317 = OpLabel
OpBranch %320
%320 = OpLabel
%322 = OpPhi %uint %uint_0 %317 %323 %319
OpLoopMerge %321 %319 None
OpBranch %318
%318 = OpLabel
%325 = OpUGreaterThanEqual %bool %322 %uint_2
OpSelectionMerge %326 None
OpBranchConditional %325 %327 %326
%327 = OpLabel
OpBranch %321
%326 = OpLabel
%328 = OpIMul %uint %322 %uint_16
%329 = OpIAdd %uint %start_byte_offset_1 %328
%330 = OpAccessChain %_ptr_Function_v3float %a_0 %322
%332 = OpUDiv %uint %329 %uint_16
%333 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %332
%334 = OpLoad %v4uint %333 None
%335 = OpVectorShuffle %v3uint %334 %334 0 1 2
%336 = OpBitcast %v3float %335
OpStore %330 %336 None
OpBranch %319
%319 = OpLabel
%323 = OpIAdd %uint %322 %uint_1
OpBranch %320
%321 = OpLabel
%324 = OpLoad %_arr_v3float_uint_2 %a_0 None
OpReturnValue %324
OpFunctionEnd
%110 = OpFunction %mat4v4float None %338
%start_byte_offset_2 = OpFunctionParameter %uint
%339 = OpLabel
%340 = OpUDiv %uint %start_byte_offset_2 %uint_16
%341 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %340
%342 = OpLoad %v4uint %341 None
%343 = OpBitcast %v4float %342
%344 = OpIAdd %uint %uint_16 %start_byte_offset_2
%345 = OpUDiv %uint %344 %uint_16
%346 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %345
%347 = OpLoad %v4uint %346 None
%348 = OpBitcast %v4float %347
%349 = OpIAdd %uint %uint_32 %start_byte_offset_2
%350 = OpUDiv %uint %349 %uint_16
%351 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %350
%352 = OpLoad %v4uint %351 None
%353 = OpBitcast %v4float %352
%354 = OpIAdd %uint %uint_48 %start_byte_offset_2
%356 = OpUDiv %uint %354 %uint_16
%357 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %356
%358 = OpLoad %v4uint %357 None
%359 = OpBitcast %v4float %358
%360 = OpCompositeConstruct %mat4v4float %343 %348 %353 %359
OpReturnValue %360
OpFunctionEnd
%106 = OpFunction %mat4v3float None %362
%start_byte_offset_3 = OpFunctionParameter %uint
%363 = OpLabel
%364 = OpUDiv %uint %start_byte_offset_3 %uint_16
%365 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %364
%366 = OpLoad %v4uint %365 None
%367 = OpVectorShuffle %v3uint %366 %366 0 1 2
%368 = OpBitcast %v3float %367
%369 = OpIAdd %uint %uint_16 %start_byte_offset_3
%370 = OpUDiv %uint %369 %uint_16
%371 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %370
%372 = OpLoad %v4uint %371 None
%373 = OpVectorShuffle %v3uint %372 %372 0 1 2
%374 = OpBitcast %v3float %373
%375 = OpIAdd %uint %uint_32 %start_byte_offset_3
%376 = OpUDiv %uint %375 %uint_16
%377 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %376
%378 = OpLoad %v4uint %377 None
%379 = OpVectorShuffle %v3uint %378 %378 0 1 2
%380 = OpBitcast %v3float %379
%381 = OpIAdd %uint %uint_48 %start_byte_offset_3
%382 = OpUDiv %uint %381 %uint_16
%383 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %382
%384 = OpLoad %v4uint %383 None
%385 = OpVectorShuffle %v3uint %384 %384 0 1 2
%386 = OpBitcast %v3float %385
%387 = OpCompositeConstruct %mat4v3float %368 %374 %380 %386
OpReturnValue %387
OpFunctionEnd
%102 = OpFunction %mat4v2float None %389
%start_byte_offset_4 = OpFunctionParameter %uint
%390 = OpLabel
%391 = OpUDiv %uint %start_byte_offset_4 %uint_16
%392 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %391
%393 = OpLoad %v4uint %392 None
%394 = OpBitwiseAnd %uint %start_byte_offset_4 %uint_15
%395 = OpShiftRightLogical %uint %394 %uint_2
%396 = OpVectorShuffle %v2uint %393 %393 2 3
%397 = OpVectorShuffle %v2uint %393 %393 0 1
%398 = OpIEqual %bool %395 %uint_2
%400 = OpCompositeConstruct %v2bool %398 %398
%401 = OpSelect %v2uint %400 %396 %397
%402 = OpBitcast %v2float %401
%403 = OpIAdd %uint %uint_8 %start_byte_offset_4
%404 = OpUDiv %uint %403 %uint_16
%405 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %404
%406 = OpLoad %v4uint %405 None
%407 = OpBitwiseAnd %uint %403 %uint_15
%408 = OpShiftRightLogical %uint %407 %uint_2
%409 = OpVectorShuffle %v2uint %406 %406 2 3
%410 = OpVectorShuffle %v2uint %406 %406 0 1
%411 = OpIEqual %bool %408 %uint_2
%412 = OpCompositeConstruct %v2bool %411 %411
%413 = OpSelect %v2uint %412 %409 %410
%414 = OpBitcast %v2float %413
%415 = OpIAdd %uint %uint_16 %start_byte_offset_4
%416 = OpUDiv %uint %415 %uint_16
%417 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %416
%418 = OpLoad %v4uint %417 None
%419 = OpBitwiseAnd %uint %415 %uint_15
%420 = OpShiftRightLogical %uint %419 %uint_2
%421 = OpVectorShuffle %v2uint %418 %418 2 3
%422 = OpVectorShuffle %v2uint %418 %418 0 1
%423 = OpIEqual %bool %420 %uint_2
%424 = OpCompositeConstruct %v2bool %423 %423
%425 = OpSelect %v2uint %424 %421 %422
%426 = OpBitcast %v2float %425
%427 = OpIAdd %uint %uint_24 %start_byte_offset_4
%429 = OpUDiv %uint %427 %uint_16
%430 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %429
%431 = OpLoad %v4uint %430 None
%432 = OpBitwiseAnd %uint %427 %uint_15
%433 = OpShiftRightLogical %uint %432 %uint_2
%434 = OpVectorShuffle %v2uint %431 %431 2 3
%435 = OpVectorShuffle %v2uint %431 %431 0 1
%436 = OpIEqual %bool %433 %uint_2
%437 = OpCompositeConstruct %v2bool %436 %436
%438 = OpSelect %v2uint %437 %434 %435
%439 = OpBitcast %v2float %438
%440 = OpCompositeConstruct %mat4v2float %402 %414 %426 %439
OpReturnValue %440
OpFunctionEnd
%98 = OpFunction %mat3v4float None %442
%start_byte_offset_5 = OpFunctionParameter %uint
%443 = OpLabel
%444 = OpUDiv %uint %start_byte_offset_5 %uint_16
%445 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %444
%446 = OpLoad %v4uint %445 None
%447 = OpBitcast %v4float %446
%448 = OpIAdd %uint %uint_16 %start_byte_offset_5
%449 = OpUDiv %uint %448 %uint_16
%450 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %449
%451 = OpLoad %v4uint %450 None
%452 = OpBitcast %v4float %451
%453 = OpIAdd %uint %uint_32 %start_byte_offset_5
%454 = OpUDiv %uint %453 %uint_16
%455 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %454
%456 = OpLoad %v4uint %455 None
%457 = OpBitcast %v4float %456
%458 = OpCompositeConstruct %mat3v4float %447 %452 %457
OpReturnValue %458
OpFunctionEnd
%94 = OpFunction %mat3v3float None %460
%start_byte_offset_6 = OpFunctionParameter %uint
%461 = OpLabel
%462 = OpUDiv %uint %start_byte_offset_6 %uint_16
%463 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %462
%464 = OpLoad %v4uint %463 None
%465 = OpVectorShuffle %v3uint %464 %464 0 1 2
%466 = OpBitcast %v3float %465
%467 = OpIAdd %uint %uint_16 %start_byte_offset_6
%468 = OpUDiv %uint %467 %uint_16
%469 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %468
%470 = OpLoad %v4uint %469 None
%471 = OpVectorShuffle %v3uint %470 %470 0 1 2
%472 = OpBitcast %v3float %471
%473 = OpIAdd %uint %uint_32 %start_byte_offset_6
%474 = OpUDiv %uint %473 %uint_16
%475 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %474
%476 = OpLoad %v4uint %475 None
%477 = OpVectorShuffle %v3uint %476 %476 0 1 2
%478 = OpBitcast %v3float %477
%479 = OpCompositeConstruct %mat3v3float %466 %472 %478
OpReturnValue %479
OpFunctionEnd
%90 = OpFunction %mat3v2float None %481
%start_byte_offset_7 = OpFunctionParameter %uint
%482 = OpLabel
%483 = OpUDiv %uint %start_byte_offset_7 %uint_16
%484 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %483
%485 = OpLoad %v4uint %484 None
%486 = OpBitwiseAnd %uint %start_byte_offset_7 %uint_15
%487 = OpShiftRightLogical %uint %486 %uint_2
%488 = OpVectorShuffle %v2uint %485 %485 2 3
%489 = OpVectorShuffle %v2uint %485 %485 0 1
%490 = OpIEqual %bool %487 %uint_2
%491 = OpCompositeConstruct %v2bool %490 %490
%492 = OpSelect %v2uint %491 %488 %489
%493 = OpBitcast %v2float %492
%494 = OpIAdd %uint %uint_8 %start_byte_offset_7
%495 = OpUDiv %uint %494 %uint_16
%496 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %495
%497 = OpLoad %v4uint %496 None
%498 = OpBitwiseAnd %uint %494 %uint_15
%499 = OpShiftRightLogical %uint %498 %uint_2
%500 = OpVectorShuffle %v2uint %497 %497 2 3
%501 = OpVectorShuffle %v2uint %497 %497 0 1
%502 = OpIEqual %bool %499 %uint_2
%503 = OpCompositeConstruct %v2bool %502 %502
%504 = OpSelect %v2uint %503 %500 %501
%505 = OpBitcast %v2float %504
%506 = OpIAdd %uint %uint_16 %start_byte_offset_7
%507 = OpUDiv %uint %506 %uint_16
%508 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %507
%509 = OpLoad %v4uint %508 None
%510 = OpBitwiseAnd %uint %506 %uint_15
%511 = OpShiftRightLogical %uint %510 %uint_2
%512 = OpVectorShuffle %v2uint %509 %509 2 3
%513 = OpVectorShuffle %v2uint %509 %509 0 1
%514 = OpIEqual %bool %511 %uint_2
%515 = OpCompositeConstruct %v2bool %514 %514
%516 = OpSelect %v2uint %515 %512 %513
%517 = OpBitcast %v2float %516
%518 = OpCompositeConstruct %mat3v2float %493 %505 %517
OpReturnValue %518
OpFunctionEnd
%86 = OpFunction %mat2v4float None %520
%start_byte_offset_8 = OpFunctionParameter %uint
%521 = OpLabel
%522 = OpUDiv %uint %start_byte_offset_8 %uint_16
%523 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %522
%524 = OpLoad %v4uint %523 None
%525 = OpBitcast %v4float %524
%526 = OpIAdd %uint %uint_16 %start_byte_offset_8
%527 = OpUDiv %uint %526 %uint_16
%528 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %527
%529 = OpLoad %v4uint %528 None
%530 = OpBitcast %v4float %529
%531 = OpCompositeConstruct %mat2v4float %525 %530
OpReturnValue %531
OpFunctionEnd
%82 = OpFunction %mat2v3float None %533
%start_byte_offset_9 = OpFunctionParameter %uint
%534 = OpLabel
%535 = OpUDiv %uint %start_byte_offset_9 %uint_16
%536 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %535
%537 = OpLoad %v4uint %536 None
%538 = OpVectorShuffle %v3uint %537 %537 0 1 2
%539 = OpBitcast %v3float %538
%540 = OpIAdd %uint %uint_16 %start_byte_offset_9
%541 = OpUDiv %uint %540 %uint_16
%542 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %541
%543 = OpLoad %v4uint %542 None
%544 = OpVectorShuffle %v3uint %543 %543 0 1 2
%545 = OpBitcast %v3float %544
%546 = OpCompositeConstruct %mat2v3float %539 %545
OpReturnValue %546
OpFunctionEnd
%78 = OpFunction %mat2v2float None %548
%start_byte_offset_10 = OpFunctionParameter %uint
%549 = OpLabel
%550 = OpUDiv %uint %start_byte_offset_10 %uint_16
%551 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %550
%552 = OpLoad %v4uint %551 None
%553 = OpBitwiseAnd %uint %start_byte_offset_10 %uint_15
%554 = OpShiftRightLogical %uint %553 %uint_2
%555 = OpVectorShuffle %v2uint %552 %552 2 3
%556 = OpVectorShuffle %v2uint %552 %552 0 1
%557 = OpIEqual %bool %554 %uint_2
%558 = OpCompositeConstruct %v2bool %557 %557
%559 = OpSelect %v2uint %558 %555 %556
%560 = OpBitcast %v2float %559
%561 = OpIAdd %uint %uint_8 %start_byte_offset_10
%562 = OpUDiv %uint %561 %uint_16
%563 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %562
%564 = OpLoad %v4uint %563 None
%565 = OpBitwiseAnd %uint %561 %uint_15
%566 = OpShiftRightLogical %uint %565 %uint_2
%567 = OpVectorShuffle %v2uint %564 %564 2 3
%568 = OpVectorShuffle %v2uint %564 %564 0 1
%569 = OpIEqual %bool %566 %uint_2
%570 = OpCompositeConstruct %v2bool %569 %569
%571 = OpSelect %v2uint %570 %567 %568
%572 = OpBitcast %v2float %571
%573 = OpCompositeConstruct %mat2v2float %560 %572
OpReturnValue %573
OpFunctionEnd