; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
; Bound: 1088
; Schema: 0
               OpCapability Shader
               OpCapability Float16
               OpCapability StorageBuffer16BitAccess
        %410 = 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 %scalar_f16 "scalar_f16"
               OpName %vec2_f32 "vec2_f32"
               OpName %vec2_i32 "vec2_i32"
               OpName %vec2_u32 "vec2_u32"
               OpName %vec2_f16 "vec2_f16"
               OpName %vec3_f32 "vec3_f32"
               OpName %vec3_i32 "vec3_i32"
               OpName %vec3_u32 "vec3_u32"
               OpName %vec3_f16 "vec3_f16"
               OpName %vec4_f32 "vec4_f32"
               OpName %vec4_i32 "vec4_i32"
               OpName %vec4_u32 "vec4_u32"
               OpName %vec4_f16 "vec4_f16"
               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 %mat2x2_f16 "mat2x2_f16"
               OpName %mat2x3_f16 "mat2x3_f16"
               OpName %mat2x4_f16 "mat2x4_f16"
               OpName %mat3x2_f16 "mat3x2_f16"
               OpName %mat3x3_f16 "mat3x3_f16"
               OpName %mat3x4_f16 "mat3x4_f16"
               OpName %mat4x2_f16 "mat4x2_f16"
               OpName %mat4x3_f16 "mat4x3_f16"
               OpName %mat4x4_f16 "mat4x4_f16"
               OpName %arr2_vec3_f32 "arr2_vec3_f32"
               OpName %arr2_mat4x2_f16 "arr2_mat4x2_f16"
               OpMemberName %Inner 0 "scalar_i32"
               OpMemberName %Inner 1 "scalar_f32"
               OpMemberName %Inner 2 "scalar_f16"
               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 %tint_f16_to_i32 "tint_f16_to_i32"
               OpName %value_0 "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 %a_1 "a"
               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"
               OpName %start_byte_offset_11 "start_byte_offset"
               OpName %start_byte_offset_12 "start_byte_offset"
               OpName %start_byte_offset_13 "start_byte_offset"
               OpName %start_byte_offset_14 "start_byte_offset"
               OpName %start_byte_offset_15 "start_byte_offset"
               OpName %start_byte_offset_16 "start_byte_offset"
               OpName %start_byte_offset_17 "start_byte_offset"
               OpName %start_byte_offset_18 "start_byte_offset"
               OpName %start_byte_offset_19 "start_byte_offset"
               OpName %start_byte_offset_20 "start_byte_offset"
               OpDecorate %_arr_v4uint_uint_55 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_55 = OpConstant %uint 55
%_arr_v4uint_uint_55 = OpTypeArray %v4uint %uint_55
%ub_block_tint_explicit_layout = OpTypeStruct %_arr_v4uint_uint_55
%_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
       %half = OpTypeFloat 16
     %v2half = OpTypeVector %half 2
     %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
     %v4half = OpTypeVector %half 4
     %v3half = OpTypeVector %half 3
     %uint_7 = OpConstant %uint 7
    %v4float = OpTypeVector %float 4
     %uint_8 = OpConstant %uint 8
      %v4int = OpTypeVector %int 4
     %uint_9 = OpConstant %uint 9
    %uint_10 = OpConstant %uint 10
%mat2v2float = OpTypeMatrix %v2float 2
   %uint_168 = OpConstant %uint 168
%mat2v3float = OpTypeMatrix %v3float 2
   %uint_192 = OpConstant %uint 192
%mat2v4float = OpTypeMatrix %v4float 2
   %uint_224 = OpConstant %uint 224
%mat3v2float = OpTypeMatrix %v2float 3
   %uint_256 = OpConstant %uint 256
%mat3v3float = OpTypeMatrix %v3float 3
   %uint_288 = OpConstant %uint 288
%mat3v4float = OpTypeMatrix %v4float 3
   %uint_336 = OpConstant %uint 336
%mat4v2float = OpTypeMatrix %v2float 4
   %uint_384 = OpConstant %uint 384
%mat4v3float = OpTypeMatrix %v3float 4
   %uint_416 = OpConstant %uint 416
%mat4v4float = OpTypeMatrix %v4float 4
   %uint_480 = OpConstant %uint 480
 %mat2v2half = OpTypeMatrix %v2half 2
   %uint_544 = OpConstant %uint 544
 %mat2v3half = OpTypeMatrix %v3half 2
   %uint_552 = OpConstant %uint 552
 %mat2v4half = OpTypeMatrix %v4half 2
   %uint_568 = OpConstant %uint 568
 %mat3v2half = OpTypeMatrix %v2half 3
   %uint_584 = OpConstant %uint 584
 %mat3v3half = OpTypeMatrix %v3half 3
   %uint_600 = OpConstant %uint 600
 %mat3v4half = OpTypeMatrix %v4half 3
   %uint_624 = OpConstant %uint 624
 %mat4v2half = OpTypeMatrix %v2half 4
   %uint_648 = OpConstant %uint 648
 %mat4v3half = OpTypeMatrix %v3half 4
   %uint_664 = OpConstant %uint 664
 %mat4v4half = OpTypeMatrix %v4half 4
   %uint_696 = OpConstant %uint 696
%_arr_v3float_uint_2 = OpTypeArray %v3float %uint_2
   %uint_736 = OpConstant %uint 736
%_arr_mat4v2half_uint_2 = OpTypeArray %mat4v2half %uint_2
   %uint_768 = OpConstant %uint 768
      %Inner = OpTypeStruct %int %float %half
   %uint_800 = OpConstant %uint 800
%_arr_Inner_uint_4 = OpTypeArray %Inner %uint_4
   %uint_816 = OpConstant %uint 816
%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
        %407 = OpTypeFunction %int %float
%float_n2_14748365e_09 = OpConstant %float -2.14748365e+09
%float_2_14748352e_09 = OpConstant %float 2.14748352e+09
        %415 = OpTypeFunction %int %half
%half_n0x1_ffcp_15 = OpConstant %half -0x1.ffcp+15
%half_0x1_ffcp_15 = OpConstant %half 0x1.ffcp+15
        %422 = OpTypeFunction %_arr_Inner_uint_4 %uint
%_ptr_Function__arr_Inner_uint_4 = OpTypePointer Function %_arr_Inner_uint_4
        %426 = OpConstantNull %_arr_Inner_uint_4
       %bool = OpTypeBool
    %uint_16 = OpConstant %uint 16
%_ptr_Function_Inner = OpTypePointer Function %Inner
        %446 = OpTypeFunction %Inner %uint
    %uint_15 = OpConstant %uint 15
        %478 = OpTypeFunction %_arr_mat4v2half_uint_2 %uint
%_ptr_Function__arr_mat4v2half_uint_2 = OpTypePointer Function %_arr_mat4v2half_uint_2
        %482 = OpConstantNull %_arr_mat4v2half_uint_2
%_ptr_Function_mat4v2half = OpTypePointer Function %mat4v2half
        %500 = OpTypeFunction %mat4v2half %uint
    %uint_12 = OpConstant %uint 12
        %536 = OpTypeFunction %_arr_v3float_uint_2 %uint
%_ptr_Function__arr_v3float_uint_2 = OpTypePointer Function %_arr_v3float_uint_2
        %540 = OpConstantNull %_arr_v3float_uint_2
%_ptr_Function_v3float = OpTypePointer Function %v3float
        %562 = OpTypeFunction %mat4v4half %uint
     %v2bool = OpTypeVector %bool 2
    %uint_24 = OpConstant %uint 24
        %615 = OpTypeFunction %mat4v3half %uint
        %670 = OpTypeFunction %mat3v4half %uint
        %709 = OpTypeFunction %mat3v3half %uint
        %751 = OpTypeFunction %mat3v2half %uint
        %778 = OpTypeFunction %mat2v4half %uint
        %805 = OpTypeFunction %mat2v3half %uint
        %834 = OpTypeFunction %mat2v2half %uint
        %853 = OpTypeFunction %mat4v4float %uint
    %uint_32 = OpConstant %uint 32
    %uint_48 = OpConstant %uint 48
        %878 = OpTypeFunction %mat4v3float %uint
        %905 = OpTypeFunction %mat4v2float %uint
        %956 = OpTypeFunction %mat3v4float %uint
        %974 = OpTypeFunction %mat3v3float %uint
        %995 = OpTypeFunction %mat3v2float %uint
       %1034 = OpTypeFunction %mat2v4float %uint
       %1047 = OpTypeFunction %mat2v3float %uint
       %1062 = 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_0
         %31 = OpLoad %v4uint %30 None
         %32 = OpCompositeExtract %uint %31 3
         %35 = OpBitcast %v2half %32
 %scalar_f16 = OpCompositeExtract %half %35 0
         %37 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_1
         %39 = OpLoad %v4uint %37 None
         %40 = OpVectorShuffle %v2uint %39 %39 0 1
   %vec2_f32 = OpBitcast %v2float %40
         %44 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_1
         %45 = OpLoad %v4uint %44 None
         %46 = OpVectorShuffle %v2uint %45 %45 2 3
   %vec2_i32 = OpBitcast %v2int %46
         %49 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_2
         %51 = OpLoad %v4uint %49 None
   %vec2_u32 = OpVectorShuffle %v2uint %51 %51 0 1
         %53 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_2
         %54 = OpLoad %v4uint %53 None
         %55 = OpCompositeExtract %uint %54 2
   %vec2_f16 = OpBitcast %v2half %55
         %57 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_3
         %59 = OpLoad %v4uint %57 None
         %60 = OpVectorShuffle %v3uint %59 %59 0 1 2
   %vec3_f32 = OpBitcast %v3float %60
         %64 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_4
         %66 = OpLoad %v4uint %64 None
         %67 = OpVectorShuffle %v3uint %66 %66 0 1 2
   %vec3_i32 = OpBitcast %v3int %67
         %70 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_5
         %72 = OpLoad %v4uint %70 None
   %vec3_u32 = OpVectorShuffle %v3uint %72 %72 0 1 2
         %74 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_6
         %76 = OpLoad %v4uint %74 None
         %77 = OpVectorShuffle %v2uint %76 %76 0 1
         %79 = OpBitcast %v4half %77
   %vec3_f16 = OpVectorShuffle %v3half %79 %79 0 1 2
         %82 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_7
         %84 = OpLoad %v4uint %82 None
   %vec4_f32 = OpBitcast %v4float %84
         %87 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_8
         %89 = OpLoad %v4uint %87 None
   %vec4_i32 = OpBitcast %v4int %89
         %92 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_9
   %vec4_u32 = OpLoad %v4uint %92 None
         %95 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_10
         %97 = OpLoad %v4uint %95 None
         %98 = OpVectorShuffle %v2uint %97 %97 0 1
   %vec4_f16 = OpBitcast %v4half %98
 %mat2x2_f32 = OpFunctionCall %mat2v2float %102 %uint_168
 %mat2x3_f32 = OpFunctionCall %mat2v3float %106 %uint_192
 %mat2x4_f32 = OpFunctionCall %mat2v4float %110 %uint_224
 %mat3x2_f32 = OpFunctionCall %mat3v2float %114 %uint_256
 %mat3x3_f32 = OpFunctionCall %mat3v3float %118 %uint_288
 %mat3x4_f32 = OpFunctionCall %mat3v4float %122 %uint_336
 %mat4x2_f32 = OpFunctionCall %mat4v2float %126 %uint_384
 %mat4x3_f32 = OpFunctionCall %mat4v3float %130 %uint_416
 %mat4x4_f32 = OpFunctionCall %mat4v4float %134 %uint_480
 %mat2x2_f16 = OpFunctionCall %mat2v2half %138 %uint_544
 %mat2x3_f16 = OpFunctionCall %mat2v3half %142 %uint_552
 %mat2x4_f16 = OpFunctionCall %mat2v4half %146 %uint_568
 %mat3x2_f16 = OpFunctionCall %mat3v2half %150 %uint_584
 %mat3x3_f16 = OpFunctionCall %mat3v3half %154 %uint_600
 %mat3x4_f16 = OpFunctionCall %mat3v4half %158 %uint_624
 %mat4x2_f16 = OpFunctionCall %mat4v2half %162 %uint_648
 %mat4x3_f16 = OpFunctionCall %mat4v3half %166 %uint_664
 %mat4x4_f16 = OpFunctionCall %mat4v4half %170 %uint_696
%arr2_vec3_f32 = OpFunctionCall %_arr_v3float_uint_2 %174 %uint_736
%arr2_mat4x2_f16 = OpFunctionCall %_arr_mat4v2half_uint_2 %178 %uint_768
%struct_inner = OpFunctionCall %Inner %182 %uint_800
%array_struct_inner = OpFunctionCall %_arr_Inner_uint_4 %186 %uint_816
        %188 = OpFunctionCall %int %tint_f32_to_i32 %scalar_f32
        %190 = OpBitcast %uint %188
        %191 = OpBitcast %uint %scalar_i32
        %192 = OpIAdd %uint %190 %191
        %193 = OpBitcast %int %192
        %194 = OpBitcast %int %scalar_u32
        %195 = OpBitcast %uint %193
        %196 = OpBitcast %uint %194
        %197 = OpIAdd %uint %195 %196
        %198 = OpBitcast %int %197
        %199 = OpFunctionCall %int %tint_f16_to_i32 %scalar_f16
        %201 = OpBitcast %uint %198
        %202 = OpBitcast %uint %199
        %203 = OpIAdd %uint %201 %202
        %204 = OpBitcast %int %203
        %205 = OpCompositeExtract %float %vec2_f32 0
        %206 = OpFunctionCall %int %tint_f32_to_i32 %205
        %207 = OpBitcast %uint %204
        %208 = OpBitcast %uint %206
        %209 = OpIAdd %uint %207 %208
        %210 = OpBitcast %int %209
        %211 = OpCompositeExtract %int %vec2_i32 0
        %212 = OpBitcast %uint %210
        %213 = OpBitcast %uint %211
        %214 = OpIAdd %uint %212 %213
        %215 = OpBitcast %int %214
        %216 = OpCompositeExtract %uint %vec2_u32 0
        %217 = OpBitcast %int %216
        %218 = OpBitcast %uint %215
        %219 = OpBitcast %uint %217
        %220 = OpIAdd %uint %218 %219
        %221 = OpBitcast %int %220
        %222 = OpCompositeExtract %half %vec2_f16 0
        %223 = OpFunctionCall %int %tint_f16_to_i32 %222
        %224 = OpBitcast %uint %221
        %225 = OpBitcast %uint %223
        %226 = OpIAdd %uint %224 %225
        %227 = OpBitcast %int %226
        %228 = OpCompositeExtract %float %vec3_f32 1
        %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 %int %vec3_i32 1
        %235 = OpBitcast %uint %233
        %236 = OpBitcast %uint %234
        %237 = OpIAdd %uint %235 %236
        %238 = OpBitcast %int %237
        %239 = OpCompositeExtract %uint %vec3_u32 1
        %240 = OpBitcast %int %239
        %241 = OpBitcast %uint %238
        %242 = OpBitcast %uint %240
        %243 = OpIAdd %uint %241 %242
        %244 = OpBitcast %int %243
        %245 = OpCompositeExtract %half %vec3_f16 1
        %246 = OpFunctionCall %int %tint_f16_to_i32 %245
        %247 = OpBitcast %uint %244
        %248 = OpBitcast %uint %246
        %249 = OpIAdd %uint %247 %248
        %250 = OpBitcast %int %249
        %251 = OpCompositeExtract %float %vec4_f32 2
        %252 = OpFunctionCall %int %tint_f32_to_i32 %251
        %253 = OpBitcast %uint %250
        %254 = OpBitcast %uint %252
        %255 = OpIAdd %uint %253 %254
        %256 = OpBitcast %int %255
        %257 = OpCompositeExtract %int %vec4_i32 2
        %258 = OpBitcast %uint %256
        %259 = OpBitcast %uint %257
        %260 = OpIAdd %uint %258 %259
        %261 = OpBitcast %int %260
        %262 = OpCompositeExtract %uint %vec4_u32 2
        %263 = OpBitcast %int %262
        %264 = OpBitcast %uint %261
        %265 = OpBitcast %uint %263
        %266 = OpIAdd %uint %264 %265
        %267 = OpBitcast %int %266
        %268 = OpCompositeExtract %half %vec4_f16 2
        %269 = OpFunctionCall %int %tint_f16_to_i32 %268
        %270 = OpBitcast %uint %267
        %271 = OpBitcast %uint %269
        %272 = OpIAdd %uint %270 %271
        %273 = OpBitcast %int %272
        %274 = OpCompositeExtract %float %mat2x2_f32 0 0
        %275 = OpFunctionCall %int %tint_f32_to_i32 %274
        %276 = OpBitcast %uint %273
        %277 = OpBitcast %uint %275
        %278 = OpIAdd %uint %276 %277
        %279 = OpBitcast %int %278
        %280 = OpCompositeExtract %float %mat2x3_f32 0 0
        %281 = OpFunctionCall %int %tint_f32_to_i32 %280
        %282 = OpBitcast %uint %279
        %283 = OpBitcast %uint %281
        %284 = OpIAdd %uint %282 %283
        %285 = OpBitcast %int %284
        %286 = OpCompositeExtract %float %mat2x4_f32 0 0
        %287 = OpFunctionCall %int %tint_f32_to_i32 %286
        %288 = OpBitcast %uint %285
        %289 = OpBitcast %uint %287
        %290 = OpIAdd %uint %288 %289
        %291 = OpBitcast %int %290
        %292 = OpCompositeExtract %float %mat3x2_f32 0 0
        %293 = OpFunctionCall %int %tint_f32_to_i32 %292
        %294 = OpBitcast %uint %291
        %295 = OpBitcast %uint %293
        %296 = OpIAdd %uint %294 %295
        %297 = OpBitcast %int %296
        %298 = OpCompositeExtract %float %mat3x3_f32 0 0
        %299 = OpFunctionCall %int %tint_f32_to_i32 %298
        %300 = OpBitcast %uint %297
        %301 = OpBitcast %uint %299
        %302 = OpIAdd %uint %300 %301
        %303 = OpBitcast %int %302
        %304 = OpCompositeExtract %float %mat3x4_f32 0 0
        %305 = OpFunctionCall %int %tint_f32_to_i32 %304
        %306 = OpBitcast %uint %303
        %307 = OpBitcast %uint %305
        %308 = OpIAdd %uint %306 %307
        %309 = OpBitcast %int %308
        %310 = OpCompositeExtract %float %mat4x2_f32 0 0
        %311 = OpFunctionCall %int %tint_f32_to_i32 %310
        %312 = OpBitcast %uint %309
        %313 = OpBitcast %uint %311
        %314 = OpIAdd %uint %312 %313
        %315 = OpBitcast %int %314
        %316 = OpCompositeExtract %float %mat4x3_f32 0 0
        %317 = OpFunctionCall %int %tint_f32_to_i32 %316
        %318 = OpBitcast %uint %315
        %319 = OpBitcast %uint %317
        %320 = OpIAdd %uint %318 %319
        %321 = OpBitcast %int %320
        %322 = OpCompositeExtract %float %mat4x4_f32 0 0
        %323 = OpFunctionCall %int %tint_f32_to_i32 %322
        %324 = OpBitcast %uint %321
        %325 = OpBitcast %uint %323
        %326 = OpIAdd %uint %324 %325
        %327 = OpBitcast %int %326
        %328 = OpCompositeExtract %half %mat2x2_f16 0 0
        %329 = OpFunctionCall %int %tint_f16_to_i32 %328
        %330 = OpBitcast %uint %327
        %331 = OpBitcast %uint %329
        %332 = OpIAdd %uint %330 %331
        %333 = OpBitcast %int %332
        %334 = OpCompositeExtract %half %mat2x3_f16 0 0
        %335 = OpFunctionCall %int %tint_f16_to_i32 %334
        %336 = OpBitcast %uint %333
        %337 = OpBitcast %uint %335
        %338 = OpIAdd %uint %336 %337
        %339 = OpBitcast %int %338
        %340 = OpCompositeExtract %half %mat2x4_f16 0 0
        %341 = OpFunctionCall %int %tint_f16_to_i32 %340
        %342 = OpBitcast %uint %339
        %343 = OpBitcast %uint %341
        %344 = OpIAdd %uint %342 %343
        %345 = OpBitcast %int %344
        %346 = OpCompositeExtract %half %mat3x2_f16 0 0
        %347 = OpFunctionCall %int %tint_f16_to_i32 %346
        %348 = OpBitcast %uint %345
        %349 = OpBitcast %uint %347
        %350 = OpIAdd %uint %348 %349
        %351 = OpBitcast %int %350
        %352 = OpCompositeExtract %half %mat3x3_f16 0 0
        %353 = OpFunctionCall %int %tint_f16_to_i32 %352
        %354 = OpBitcast %uint %351
        %355 = OpBitcast %uint %353
        %356 = OpIAdd %uint %354 %355
        %357 = OpBitcast %int %356
        %358 = OpCompositeExtract %half %mat3x4_f16 0 0
        %359 = OpFunctionCall %int %tint_f16_to_i32 %358
        %360 = OpBitcast %uint %357
        %361 = OpBitcast %uint %359
        %362 = OpIAdd %uint %360 %361
        %363 = OpBitcast %int %362
        %364 = OpCompositeExtract %half %mat4x2_f16 0 0
        %365 = OpFunctionCall %int %tint_f16_to_i32 %364
        %366 = OpBitcast %uint %363
        %367 = OpBitcast %uint %365
        %368 = OpIAdd %uint %366 %367
        %369 = OpBitcast %int %368
        %370 = OpCompositeExtract %half %mat4x3_f16 0 0
        %371 = OpFunctionCall %int %tint_f16_to_i32 %370
        %372 = OpBitcast %uint %369
        %373 = OpBitcast %uint %371
        %374 = OpIAdd %uint %372 %373
        %375 = OpBitcast %int %374
        %376 = OpCompositeExtract %half %mat4x4_f16 0 0
        %377 = OpFunctionCall %int %tint_f16_to_i32 %376
        %378 = OpBitcast %uint %375
        %379 = OpBitcast %uint %377
        %380 = OpIAdd %uint %378 %379
        %381 = OpBitcast %int %380
        %382 = OpCompositeExtract %float %arr2_vec3_f32 0 0
        %383 = OpFunctionCall %int %tint_f32_to_i32 %382
        %384 = OpBitcast %uint %381
        %385 = OpBitcast %uint %383
        %386 = OpIAdd %uint %384 %385
        %387 = OpBitcast %int %386
        %388 = OpCompositeExtract %half %arr2_mat4x2_f16 0 0 0
        %389 = OpFunctionCall %int %tint_f16_to_i32 %388
        %390 = OpBitcast %uint %387
        %391 = OpBitcast %uint %389
        %392 = OpIAdd %uint %390 %391
        %393 = OpBitcast %int %392
        %394 = OpCompositeExtract %int %struct_inner 0
        %395 = OpBitcast %uint %393
        %396 = OpBitcast %uint %394
        %397 = OpIAdd %uint %395 %396
        %398 = OpBitcast %int %397
        %399 = OpCompositeExtract %int %array_struct_inner 0 0
        %400 = OpBitcast %uint %398
        %401 = OpBitcast %uint %399
        %402 = OpIAdd %uint %400 %401
        %403 = OpBitcast %int %402
        %404 = OpAccessChain %_ptr_StorageBuffer_int %8 %uint_0
               OpStore %404 %403 None
               OpReturn
               OpFunctionEnd
%tint_f32_to_i32 = OpFunction %int None %407
      %value = OpFunctionParameter %float
        %408 = OpLabel
        %409 = OpExtInst %float %410 NClamp %value %float_n2_14748365e_09 %float_2_14748352e_09
        %413 = OpConvertFToS %int %409
               OpReturnValue %413
               OpFunctionEnd
%tint_f16_to_i32 = OpFunction %int None %415
    %value_0 = OpFunctionParameter %half
        %416 = OpLabel
        %417 = OpExtInst %half %410 NClamp %value_0 %half_n0x1_ffcp_15 %half_0x1_ffcp_15
        %420 = OpConvertFToS %int %417
               OpReturnValue %420
               OpFunctionEnd
        %186 = OpFunction %_arr_Inner_uint_4 None %422
%start_byte_offset = OpFunctionParameter %uint
        %423 = OpLabel
          %a = OpVariable %_ptr_Function__arr_Inner_uint_4 Function
               OpStore %a %426
               OpBranch %427
        %427 = OpLabel
               OpBranch %430
        %430 = OpLabel
        %432 = OpPhi %uint %uint_0 %427 %433 %429
               OpLoopMerge %431 %429 None
               OpBranch %428
        %428 = OpLabel
        %435 = OpUGreaterThanEqual %bool %432 %uint_4
               OpSelectionMerge %437 None
               OpBranchConditional %435 %438 %437
        %438 = OpLabel
               OpBranch %431
        %437 = OpLabel
        %439 = OpIMul %uint %432 %uint_16
        %441 = OpIAdd %uint %start_byte_offset %439
        %442 = OpAccessChain %_ptr_Function_Inner %a %432
        %444 = OpFunctionCall %Inner %182 %441
               OpStore %442 %444 None
               OpBranch %429
        %429 = OpLabel
        %433 = OpIAdd %uint %432 %uint_1
               OpBranch %430
        %431 = OpLabel
        %434 = OpLoad %_arr_Inner_uint_4 %a None
               OpReturnValue %434
               OpFunctionEnd
        %182 = OpFunction %Inner None %446
%start_byte_offset_0 = OpFunctionParameter %uint
        %447 = OpLabel
        %448 = OpUDiv %uint %start_byte_offset_0 %uint_16
        %449 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %448
        %450 = OpBitwiseAnd %uint %start_byte_offset_0 %uint_15
        %452 = OpShiftRightLogical %uint %450 %uint_2
        %453 = OpLoad %v4uint %449 None
        %454 = OpVectorExtractDynamic %uint %453 %452
        %455 = OpBitcast %int %454
        %456 = OpIAdd %uint %uint_4 %start_byte_offset_0
        %457 = OpUDiv %uint %456 %uint_16
        %458 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %457
        %459 = OpBitwiseAnd %uint %456 %uint_15
        %460 = OpShiftRightLogical %uint %459 %uint_2
        %461 = OpLoad %v4uint %458 None
        %462 = OpVectorExtractDynamic %uint %461 %460
        %463 = OpBitcast %float %462
        %464 = OpIAdd %uint %uint_8 %start_byte_offset_0
        %465 = OpUDiv %uint %464 %uint_16
        %466 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %465
        %467 = OpBitwiseAnd %uint %464 %uint_15
        %468 = OpShiftRightLogical %uint %467 %uint_2
        %469 = OpLoad %v4uint %466 None
        %470 = OpVectorExtractDynamic %uint %469 %468
        %471 = OpUMod %uint %464 %uint_4
        %472 = OpIEqual %bool %471 %uint_0
        %473 = OpSelect %uint %472 %uint_0 %uint_1
        %474 = OpBitcast %v2half %470
        %475 = OpVectorExtractDynamic %half %474 %473
        %476 = OpCompositeConstruct %Inner %455 %463 %475
               OpReturnValue %476
               OpFunctionEnd
        %178 = OpFunction %_arr_mat4v2half_uint_2 None %478
%start_byte_offset_1 = OpFunctionParameter %uint
        %479 = OpLabel
        %a_0 = OpVariable %_ptr_Function__arr_mat4v2half_uint_2 Function
               OpStore %a_0 %482
               OpBranch %483
        %483 = OpLabel
               OpBranch %486
        %486 = OpLabel
        %488 = OpPhi %uint %uint_0 %483 %489 %485
               OpLoopMerge %487 %485 None
               OpBranch %484
        %484 = OpLabel
        %491 = OpUGreaterThanEqual %bool %488 %uint_2
               OpSelectionMerge %492 None
               OpBranchConditional %491 %493 %492
        %493 = OpLabel
               OpBranch %487
        %492 = OpLabel
        %494 = OpIMul %uint %488 %uint_16
        %495 = OpIAdd %uint %start_byte_offset_1 %494
        %496 = OpAccessChain %_ptr_Function_mat4v2half %a_0 %488
        %498 = OpFunctionCall %mat4v2half %162 %495
               OpStore %496 %498 None
               OpBranch %485
        %485 = OpLabel
        %489 = OpIAdd %uint %488 %uint_1
               OpBranch %486
        %487 = OpLabel
        %490 = OpLoad %_arr_mat4v2half_uint_2 %a_0 None
               OpReturnValue %490
               OpFunctionEnd
        %162 = OpFunction %mat4v2half None %500
%start_byte_offset_2 = OpFunctionParameter %uint
        %501 = OpLabel
        %502 = OpUDiv %uint %start_byte_offset_2 %uint_16
        %503 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %502
        %504 = OpLoad %v4uint %503 None
        %505 = OpBitwiseAnd %uint %start_byte_offset_2 %uint_15
        %506 = OpShiftRightLogical %uint %505 %uint_2
        %507 = OpVectorExtractDynamic %uint %504 %506
        %508 = OpBitcast %v2half %507
        %509 = OpIAdd %uint %uint_4 %start_byte_offset_2
        %510 = OpUDiv %uint %509 %uint_16
        %511 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %510
        %512 = OpLoad %v4uint %511 None
        %513 = OpBitwiseAnd %uint %509 %uint_15
        %514 = OpShiftRightLogical %uint %513 %uint_2
        %515 = OpVectorExtractDynamic %uint %512 %514
        %516 = OpBitcast %v2half %515
        %517 = OpIAdd %uint %uint_8 %start_byte_offset_2
        %518 = OpUDiv %uint %517 %uint_16
        %519 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %518
        %520 = OpLoad %v4uint %519 None
        %521 = OpBitwiseAnd %uint %517 %uint_15
        %522 = OpShiftRightLogical %uint %521 %uint_2
        %523 = OpVectorExtractDynamic %uint %520 %522
        %524 = OpBitcast %v2half %523
        %525 = OpIAdd %uint %uint_12 %start_byte_offset_2
        %527 = OpUDiv %uint %525 %uint_16
        %528 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %527
        %529 = OpLoad %v4uint %528 None
        %530 = OpBitwiseAnd %uint %525 %uint_15
        %531 = OpShiftRightLogical %uint %530 %uint_2
        %532 = OpVectorExtractDynamic %uint %529 %531
        %533 = OpBitcast %v2half %532
        %534 = OpCompositeConstruct %mat4v2half %508 %516 %524 %533
               OpReturnValue %534
               OpFunctionEnd
        %174 = OpFunction %_arr_v3float_uint_2 None %536
%start_byte_offset_3 = OpFunctionParameter %uint
        %537 = OpLabel
        %a_1 = OpVariable %_ptr_Function__arr_v3float_uint_2 Function
               OpStore %a_1 %540
               OpBranch %541
        %541 = OpLabel
               OpBranch %544
        %544 = OpLabel
        %546 = OpPhi %uint %uint_0 %541 %547 %543
               OpLoopMerge %545 %543 None
               OpBranch %542
        %542 = OpLabel
        %549 = OpUGreaterThanEqual %bool %546 %uint_2
               OpSelectionMerge %550 None
               OpBranchConditional %549 %551 %550
        %551 = OpLabel
               OpBranch %545
        %550 = OpLabel
        %552 = OpIMul %uint %546 %uint_16
        %553 = OpIAdd %uint %start_byte_offset_3 %552
        %554 = OpAccessChain %_ptr_Function_v3float %a_1 %546
        %556 = OpUDiv %uint %553 %uint_16
        %557 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %556
        %558 = OpLoad %v4uint %557 None
        %559 = OpVectorShuffle %v3uint %558 %558 0 1 2
        %560 = OpBitcast %v3float %559
               OpStore %554 %560 None
               OpBranch %543
        %543 = OpLabel
        %547 = OpIAdd %uint %546 %uint_1
               OpBranch %544
        %545 = OpLabel
        %548 = OpLoad %_arr_v3float_uint_2 %a_1 None
               OpReturnValue %548
               OpFunctionEnd
        %170 = OpFunction %mat4v4half None %562
%start_byte_offset_4 = OpFunctionParameter %uint
        %563 = OpLabel
        %564 = OpUDiv %uint %start_byte_offset_4 %uint_16
        %565 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %564
        %566 = OpLoad %v4uint %565 None
        %567 = OpBitwiseAnd %uint %start_byte_offset_4 %uint_15
        %568 = OpShiftRightLogical %uint %567 %uint_2
        %569 = OpVectorShuffle %v2uint %566 %566 2 3
        %570 = OpVectorShuffle %v2uint %566 %566 0 1
        %571 = OpIEqual %bool %568 %uint_2
        %573 = OpCompositeConstruct %v2bool %571 %571
        %574 = OpSelect %v2uint %573 %569 %570
        %575 = OpBitcast %v4half %574
        %576 = OpIAdd %uint %uint_8 %start_byte_offset_4
        %577 = OpUDiv %uint %576 %uint_16
        %578 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %577
        %579 = OpLoad %v4uint %578 None
        %580 = OpBitwiseAnd %uint %576 %uint_15
        %581 = OpShiftRightLogical %uint %580 %uint_2
        %582 = OpVectorShuffle %v2uint %579 %579 2 3
        %583 = OpVectorShuffle %v2uint %579 %579 0 1
        %584 = OpIEqual %bool %581 %uint_2
        %585 = OpCompositeConstruct %v2bool %584 %584
        %586 = OpSelect %v2uint %585 %582 %583
        %587 = OpBitcast %v4half %586
        %588 = OpIAdd %uint %uint_16 %start_byte_offset_4
        %589 = OpUDiv %uint %588 %uint_16
        %590 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %589
        %591 = OpLoad %v4uint %590 None
        %592 = OpBitwiseAnd %uint %588 %uint_15
        %593 = OpShiftRightLogical %uint %592 %uint_2
        %594 = OpVectorShuffle %v2uint %591 %591 2 3
        %595 = OpVectorShuffle %v2uint %591 %591 0 1
        %596 = OpIEqual %bool %593 %uint_2
        %597 = OpCompositeConstruct %v2bool %596 %596
        %598 = OpSelect %v2uint %597 %594 %595
        %599 = OpBitcast %v4half %598
        %600 = OpIAdd %uint %uint_24 %start_byte_offset_4
        %602 = OpUDiv %uint %600 %uint_16
        %603 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %602
        %604 = OpLoad %v4uint %603 None
        %605 = OpBitwiseAnd %uint %600 %uint_15
        %606 = OpShiftRightLogical %uint %605 %uint_2
        %607 = OpVectorShuffle %v2uint %604 %604 2 3
        %608 = OpVectorShuffle %v2uint %604 %604 0 1
        %609 = OpIEqual %bool %606 %uint_2
        %610 = OpCompositeConstruct %v2bool %609 %609
        %611 = OpSelect %v2uint %610 %607 %608
        %612 = OpBitcast %v4half %611
        %613 = OpCompositeConstruct %mat4v4half %575 %587 %599 %612
               OpReturnValue %613
               OpFunctionEnd
        %166 = OpFunction %mat4v3half None %615
%start_byte_offset_5 = OpFunctionParameter %uint
        %616 = OpLabel
        %617 = OpUDiv %uint %start_byte_offset_5 %uint_16
        %618 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %617
        %619 = OpLoad %v4uint %618 None
        %620 = OpBitwiseAnd %uint %start_byte_offset_5 %uint_15
        %621 = OpShiftRightLogical %uint %620 %uint_2
        %622 = OpVectorShuffle %v2uint %619 %619 2 3
        %623 = OpVectorShuffle %v2uint %619 %619 0 1
        %624 = OpIEqual %bool %621 %uint_2
        %625 = OpCompositeConstruct %v2bool %624 %624
        %626 = OpSelect %v2uint %625 %622 %623
        %627 = OpBitcast %v4half %626
        %628 = OpVectorShuffle %v3half %627 %627 0 1 2
        %629 = OpIAdd %uint %uint_8 %start_byte_offset_5
        %630 = OpUDiv %uint %629 %uint_16
        %631 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %630
        %632 = OpLoad %v4uint %631 None
        %633 = OpBitwiseAnd %uint %629 %uint_15
        %634 = OpShiftRightLogical %uint %633 %uint_2
        %635 = OpVectorShuffle %v2uint %632 %632 2 3
        %636 = OpVectorShuffle %v2uint %632 %632 0 1
        %637 = OpIEqual %bool %634 %uint_2
        %638 = OpCompositeConstruct %v2bool %637 %637
        %639 = OpSelect %v2uint %638 %635 %636
        %640 = OpBitcast %v4half %639
        %641 = OpVectorShuffle %v3half %640 %640 0 1 2
        %642 = OpIAdd %uint %uint_16 %start_byte_offset_5
        %643 = OpUDiv %uint %642 %uint_16
        %644 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %643
        %645 = OpLoad %v4uint %644 None
        %646 = OpBitwiseAnd %uint %642 %uint_15
        %647 = OpShiftRightLogical %uint %646 %uint_2
        %648 = OpVectorShuffle %v2uint %645 %645 2 3
        %649 = OpVectorShuffle %v2uint %645 %645 0 1
        %650 = OpIEqual %bool %647 %uint_2
        %651 = OpCompositeConstruct %v2bool %650 %650
        %652 = OpSelect %v2uint %651 %648 %649
        %653 = OpBitcast %v4half %652
        %654 = OpVectorShuffle %v3half %653 %653 0 1 2
        %655 = OpIAdd %uint %uint_24 %start_byte_offset_5
        %656 = OpUDiv %uint %655 %uint_16
        %657 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %656
        %658 = OpLoad %v4uint %657 None
        %659 = OpBitwiseAnd %uint %655 %uint_15
        %660 = OpShiftRightLogical %uint %659 %uint_2
        %661 = OpVectorShuffle %v2uint %658 %658 2 3
        %662 = OpVectorShuffle %v2uint %658 %658 0 1
        %663 = OpIEqual %bool %660 %uint_2
        %664 = OpCompositeConstruct %v2bool %663 %663
        %665 = OpSelect %v2uint %664 %661 %662
        %666 = OpBitcast %v4half %665
        %667 = OpVectorShuffle %v3half %666 %666 0 1 2
        %668 = OpCompositeConstruct %mat4v3half %628 %641 %654 %667
               OpReturnValue %668
               OpFunctionEnd
        %158 = OpFunction %mat3v4half None %670
%start_byte_offset_6 = OpFunctionParameter %uint
        %671 = OpLabel
        %672 = OpUDiv %uint %start_byte_offset_6 %uint_16
        %673 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %672
        %674 = OpLoad %v4uint %673 None
        %675 = OpBitwiseAnd %uint %start_byte_offset_6 %uint_15
        %676 = OpShiftRightLogical %uint %675 %uint_2
        %677 = OpVectorShuffle %v2uint %674 %674 2 3
        %678 = OpVectorShuffle %v2uint %674 %674 0 1
        %679 = OpIEqual %bool %676 %uint_2
        %680 = OpCompositeConstruct %v2bool %679 %679
        %681 = OpSelect %v2uint %680 %677 %678
        %682 = OpBitcast %v4half %681
        %683 = OpIAdd %uint %uint_8 %start_byte_offset_6
        %684 = OpUDiv %uint %683 %uint_16
        %685 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %684
        %686 = OpLoad %v4uint %685 None
        %687 = OpBitwiseAnd %uint %683 %uint_15
        %688 = OpShiftRightLogical %uint %687 %uint_2
        %689 = OpVectorShuffle %v2uint %686 %686 2 3
        %690 = OpVectorShuffle %v2uint %686 %686 0 1
        %691 = OpIEqual %bool %688 %uint_2
        %692 = OpCompositeConstruct %v2bool %691 %691
        %693 = OpSelect %v2uint %692 %689 %690
        %694 = OpBitcast %v4half %693
        %695 = OpIAdd %uint %uint_16 %start_byte_offset_6
        %696 = OpUDiv %uint %695 %uint_16
        %697 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %696
        %698 = OpLoad %v4uint %697 None
        %699 = OpBitwiseAnd %uint %695 %uint_15
        %700 = OpShiftRightLogical %uint %699 %uint_2
        %701 = OpVectorShuffle %v2uint %698 %698 2 3
        %702 = OpVectorShuffle %v2uint %698 %698 0 1
        %703 = OpIEqual %bool %700 %uint_2
        %704 = OpCompositeConstruct %v2bool %703 %703
        %705 = OpSelect %v2uint %704 %701 %702
        %706 = OpBitcast %v4half %705
        %707 = OpCompositeConstruct %mat3v4half %682 %694 %706
               OpReturnValue %707
               OpFunctionEnd
        %154 = OpFunction %mat3v3half None %709
%start_byte_offset_7 = OpFunctionParameter %uint
        %710 = OpLabel
        %711 = OpUDiv %uint %start_byte_offset_7 %uint_16
        %712 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %711
        %713 = OpLoad %v4uint %712 None
        %714 = OpBitwiseAnd %uint %start_byte_offset_7 %uint_15
        %715 = OpShiftRightLogical %uint %714 %uint_2
        %716 = OpVectorShuffle %v2uint %713 %713 2 3
        %717 = OpVectorShuffle %v2uint %713 %713 0 1
        %718 = OpIEqual %bool %715 %uint_2
        %719 = OpCompositeConstruct %v2bool %718 %718
        %720 = OpSelect %v2uint %719 %716 %717
        %721 = OpBitcast %v4half %720
        %722 = OpVectorShuffle %v3half %721 %721 0 1 2
        %723 = OpIAdd %uint %uint_8 %start_byte_offset_7
        %724 = OpUDiv %uint %723 %uint_16
        %725 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %724
        %726 = OpLoad %v4uint %725 None
        %727 = OpBitwiseAnd %uint %723 %uint_15
        %728 = OpShiftRightLogical %uint %727 %uint_2
        %729 = OpVectorShuffle %v2uint %726 %726 2 3
        %730 = OpVectorShuffle %v2uint %726 %726 0 1
        %731 = OpIEqual %bool %728 %uint_2
        %732 = OpCompositeConstruct %v2bool %731 %731
        %733 = OpSelect %v2uint %732 %729 %730
        %734 = OpBitcast %v4half %733
        %735 = OpVectorShuffle %v3half %734 %734 0 1 2
        %736 = OpIAdd %uint %uint_16 %start_byte_offset_7
        %737 = OpUDiv %uint %736 %uint_16
        %738 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %737
        %739 = OpLoad %v4uint %738 None
        %740 = OpBitwiseAnd %uint %736 %uint_15
        %741 = OpShiftRightLogical %uint %740 %uint_2
        %742 = OpVectorShuffle %v2uint %739 %739 2 3
        %743 = OpVectorShuffle %v2uint %739 %739 0 1
        %744 = OpIEqual %bool %741 %uint_2
        %745 = OpCompositeConstruct %v2bool %744 %744
        %746 = OpSelect %v2uint %745 %742 %743
        %747 = OpBitcast %v4half %746
        %748 = OpVectorShuffle %v3half %747 %747 0 1 2
        %749 = OpCompositeConstruct %mat3v3half %722 %735 %748
               OpReturnValue %749
               OpFunctionEnd
        %150 = OpFunction %mat3v2half None %751
%start_byte_offset_8 = OpFunctionParameter %uint
        %752 = OpLabel
        %753 = OpUDiv %uint %start_byte_offset_8 %uint_16
        %754 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %753
        %755 = OpLoad %v4uint %754 None
        %756 = OpBitwiseAnd %uint %start_byte_offset_8 %uint_15
        %757 = OpShiftRightLogical %uint %756 %uint_2
        %758 = OpVectorExtractDynamic %uint %755 %757
        %759 = OpBitcast %v2half %758
        %760 = OpIAdd %uint %uint_4 %start_byte_offset_8
        %761 = OpUDiv %uint %760 %uint_16
        %762 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %761
        %763 = OpLoad %v4uint %762 None
        %764 = OpBitwiseAnd %uint %760 %uint_15
        %765 = OpShiftRightLogical %uint %764 %uint_2
        %766 = OpVectorExtractDynamic %uint %763 %765
        %767 = OpBitcast %v2half %766
        %768 = OpIAdd %uint %uint_8 %start_byte_offset_8
        %769 = OpUDiv %uint %768 %uint_16
        %770 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %769
        %771 = OpLoad %v4uint %770 None
        %772 = OpBitwiseAnd %uint %768 %uint_15
        %773 = OpShiftRightLogical %uint %772 %uint_2
        %774 = OpVectorExtractDynamic %uint %771 %773
        %775 = OpBitcast %v2half %774
        %776 = OpCompositeConstruct %mat3v2half %759 %767 %775
               OpReturnValue %776
               OpFunctionEnd
        %146 = OpFunction %mat2v4half None %778
%start_byte_offset_9 = OpFunctionParameter %uint
        %779 = OpLabel
        %780 = OpUDiv %uint %start_byte_offset_9 %uint_16
        %781 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %780
        %782 = OpLoad %v4uint %781 None
        %783 = OpBitwiseAnd %uint %start_byte_offset_9 %uint_15
        %784 = OpShiftRightLogical %uint %783 %uint_2
        %785 = OpVectorShuffle %v2uint %782 %782 2 3
        %786 = OpVectorShuffle %v2uint %782 %782 0 1
        %787 = OpIEqual %bool %784 %uint_2
        %788 = OpCompositeConstruct %v2bool %787 %787
        %789 = OpSelect %v2uint %788 %785 %786
        %790 = OpBitcast %v4half %789
        %791 = OpIAdd %uint %uint_8 %start_byte_offset_9
        %792 = OpUDiv %uint %791 %uint_16
        %793 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %792
        %794 = OpLoad %v4uint %793 None
        %795 = OpBitwiseAnd %uint %791 %uint_15
        %796 = OpShiftRightLogical %uint %795 %uint_2
        %797 = OpVectorShuffle %v2uint %794 %794 2 3
        %798 = OpVectorShuffle %v2uint %794 %794 0 1
        %799 = OpIEqual %bool %796 %uint_2
        %800 = OpCompositeConstruct %v2bool %799 %799
        %801 = OpSelect %v2uint %800 %797 %798
        %802 = OpBitcast %v4half %801
        %803 = OpCompositeConstruct %mat2v4half %790 %802
               OpReturnValue %803
               OpFunctionEnd
        %142 = OpFunction %mat2v3half None %805
%start_byte_offset_10 = OpFunctionParameter %uint
        %806 = OpLabel
        %807 = OpUDiv %uint %start_byte_offset_10 %uint_16
        %808 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %807
        %809 = OpLoad %v4uint %808 None
        %810 = OpBitwiseAnd %uint %start_byte_offset_10 %uint_15
        %811 = OpShiftRightLogical %uint %810 %uint_2
        %812 = OpVectorShuffle %v2uint %809 %809 2 3
        %813 = OpVectorShuffle %v2uint %809 %809 0 1
        %814 = OpIEqual %bool %811 %uint_2
        %815 = OpCompositeConstruct %v2bool %814 %814
        %816 = OpSelect %v2uint %815 %812 %813
        %817 = OpBitcast %v4half %816
        %818 = OpVectorShuffle %v3half %817 %817 0 1 2
        %819 = OpIAdd %uint %uint_8 %start_byte_offset_10
        %820 = OpUDiv %uint %819 %uint_16
        %821 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %820
        %822 = OpLoad %v4uint %821 None
        %823 = OpBitwiseAnd %uint %819 %uint_15
        %824 = OpShiftRightLogical %uint %823 %uint_2
        %825 = OpVectorShuffle %v2uint %822 %822 2 3
        %826 = OpVectorShuffle %v2uint %822 %822 0 1
        %827 = OpIEqual %bool %824 %uint_2
        %828 = OpCompositeConstruct %v2bool %827 %827
        %829 = OpSelect %v2uint %828 %825 %826
        %830 = OpBitcast %v4half %829
        %831 = OpVectorShuffle %v3half %830 %830 0 1 2
        %832 = OpCompositeConstruct %mat2v3half %818 %831
               OpReturnValue %832
               OpFunctionEnd
        %138 = OpFunction %mat2v2half None %834
%start_byte_offset_11 = OpFunctionParameter %uint
        %835 = OpLabel
        %836 = OpUDiv %uint %start_byte_offset_11 %uint_16
        %837 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %836
        %838 = OpLoad %v4uint %837 None
        %839 = OpBitwiseAnd %uint %start_byte_offset_11 %uint_15
        %840 = OpShiftRightLogical %uint %839 %uint_2
        %841 = OpVectorExtractDynamic %uint %838 %840
        %842 = OpBitcast %v2half %841
        %843 = OpIAdd %uint %uint_4 %start_byte_offset_11
        %844 = OpUDiv %uint %843 %uint_16
        %845 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %844
        %846 = OpLoad %v4uint %845 None
        %847 = OpBitwiseAnd %uint %843 %uint_15
        %848 = OpShiftRightLogical %uint %847 %uint_2
        %849 = OpVectorExtractDynamic %uint %846 %848
        %850 = OpBitcast %v2half %849
        %851 = OpCompositeConstruct %mat2v2half %842 %850
               OpReturnValue %851
               OpFunctionEnd
        %134 = OpFunction %mat4v4float None %853
%start_byte_offset_12 = OpFunctionParameter %uint
        %854 = OpLabel
        %855 = OpUDiv %uint %start_byte_offset_12 %uint_16
        %856 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %855
        %857 = OpLoad %v4uint %856 None
        %858 = OpBitcast %v4float %857
        %859 = OpIAdd %uint %uint_16 %start_byte_offset_12
        %860 = OpUDiv %uint %859 %uint_16
        %861 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %860
        %862 = OpLoad %v4uint %861 None
        %863 = OpBitcast %v4float %862
        %864 = OpIAdd %uint %uint_32 %start_byte_offset_12
        %866 = OpUDiv %uint %864 %uint_16
        %867 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %866
        %868 = OpLoad %v4uint %867 None
        %869 = OpBitcast %v4float %868
        %870 = OpIAdd %uint %uint_48 %start_byte_offset_12
        %872 = OpUDiv %uint %870 %uint_16
        %873 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %872
        %874 = OpLoad %v4uint %873 None
        %875 = OpBitcast %v4float %874
        %876 = OpCompositeConstruct %mat4v4float %858 %863 %869 %875
               OpReturnValue %876
               OpFunctionEnd
        %130 = OpFunction %mat4v3float None %878
%start_byte_offset_13 = OpFunctionParameter %uint
        %879 = OpLabel
        %880 = OpUDiv %uint %start_byte_offset_13 %uint_16
        %881 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %880
        %882 = OpLoad %v4uint %881 None
        %883 = OpVectorShuffle %v3uint %882 %882 0 1 2
        %884 = OpBitcast %v3float %883
        %885 = OpIAdd %uint %uint_16 %start_byte_offset_13
        %886 = OpUDiv %uint %885 %uint_16
        %887 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %886
        %888 = OpLoad %v4uint %887 None
        %889 = OpVectorShuffle %v3uint %888 %888 0 1 2
        %890 = OpBitcast %v3float %889
        %891 = OpIAdd %uint %uint_32 %start_byte_offset_13
        %892 = OpUDiv %uint %891 %uint_16
        %893 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %892
        %894 = OpLoad %v4uint %893 None
        %895 = OpVectorShuffle %v3uint %894 %894 0 1 2
        %896 = OpBitcast %v3float %895
        %897 = OpIAdd %uint %uint_48 %start_byte_offset_13
        %898 = OpUDiv %uint %897 %uint_16
        %899 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %898
        %900 = OpLoad %v4uint %899 None
        %901 = OpVectorShuffle %v3uint %900 %900 0 1 2
        %902 = OpBitcast %v3float %901
        %903 = OpCompositeConstruct %mat4v3float %884 %890 %896 %902
               OpReturnValue %903
               OpFunctionEnd
        %126 = OpFunction %mat4v2float None %905
%start_byte_offset_14 = OpFunctionParameter %uint
        %906 = OpLabel
        %907 = OpUDiv %uint %start_byte_offset_14 %uint_16
        %908 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %907
        %909 = OpLoad %v4uint %908 None
        %910 = OpBitwiseAnd %uint %start_byte_offset_14 %uint_15
        %911 = OpShiftRightLogical %uint %910 %uint_2
        %912 = OpVectorShuffle %v2uint %909 %909 2 3
        %913 = OpVectorShuffle %v2uint %909 %909 0 1
        %914 = OpIEqual %bool %911 %uint_2
        %915 = OpCompositeConstruct %v2bool %914 %914
        %916 = OpSelect %v2uint %915 %912 %913
        %917 = OpBitcast %v2float %916
        %918 = OpIAdd %uint %uint_8 %start_byte_offset_14
        %919 = OpUDiv %uint %918 %uint_16
        %920 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %919
        %921 = OpLoad %v4uint %920 None
        %922 = OpBitwiseAnd %uint %918 %uint_15
        %923 = OpShiftRightLogical %uint %922 %uint_2
        %924 = OpVectorShuffle %v2uint %921 %921 2 3
        %925 = OpVectorShuffle %v2uint %921 %921 0 1
        %926 = OpIEqual %bool %923 %uint_2
        %927 = OpCompositeConstruct %v2bool %926 %926
        %928 = OpSelect %v2uint %927 %924 %925
        %929 = OpBitcast %v2float %928
        %930 = OpIAdd %uint %uint_16 %start_byte_offset_14
        %931 = OpUDiv %uint %930 %uint_16
        %932 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %931
        %933 = OpLoad %v4uint %932 None
        %934 = OpBitwiseAnd %uint %930 %uint_15
        %935 = OpShiftRightLogical %uint %934 %uint_2
        %936 = OpVectorShuffle %v2uint %933 %933 2 3
        %937 = OpVectorShuffle %v2uint %933 %933 0 1
        %938 = OpIEqual %bool %935 %uint_2
        %939 = OpCompositeConstruct %v2bool %938 %938
        %940 = OpSelect %v2uint %939 %936 %937
        %941 = OpBitcast %v2float %940
        %942 = OpIAdd %uint %uint_24 %start_byte_offset_14
        %943 = OpUDiv %uint %942 %uint_16
        %944 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %943
        %945 = OpLoad %v4uint %944 None
        %946 = OpBitwiseAnd %uint %942 %uint_15
        %947 = OpShiftRightLogical %uint %946 %uint_2
        %948 = OpVectorShuffle %v2uint %945 %945 2 3
        %949 = OpVectorShuffle %v2uint %945 %945 0 1
        %950 = OpIEqual %bool %947 %uint_2
        %951 = OpCompositeConstruct %v2bool %950 %950
        %952 = OpSelect %v2uint %951 %948 %949
        %953 = OpBitcast %v2float %952
        %954 = OpCompositeConstruct %mat4v2float %917 %929 %941 %953
               OpReturnValue %954
               OpFunctionEnd
        %122 = OpFunction %mat3v4float None %956
%start_byte_offset_15 = OpFunctionParameter %uint
        %957 = OpLabel
        %958 = OpUDiv %uint %start_byte_offset_15 %uint_16
        %959 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %958
        %960 = OpLoad %v4uint %959 None
        %961 = OpBitcast %v4float %960
        %962 = OpIAdd %uint %uint_16 %start_byte_offset_15
        %963 = OpUDiv %uint %962 %uint_16
        %964 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %963
        %965 = OpLoad %v4uint %964 None
        %966 = OpBitcast %v4float %965
        %967 = OpIAdd %uint %uint_32 %start_byte_offset_15
        %968 = OpUDiv %uint %967 %uint_16
        %969 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %968
        %970 = OpLoad %v4uint %969 None
        %971 = OpBitcast %v4float %970
        %972 = OpCompositeConstruct %mat3v4float %961 %966 %971
               OpReturnValue %972
               OpFunctionEnd
        %118 = OpFunction %mat3v3float None %974
%start_byte_offset_16 = OpFunctionParameter %uint
        %975 = OpLabel
        %976 = OpUDiv %uint %start_byte_offset_16 %uint_16
        %977 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %976
        %978 = OpLoad %v4uint %977 None
        %979 = OpVectorShuffle %v3uint %978 %978 0 1 2
        %980 = OpBitcast %v3float %979
        %981 = OpIAdd %uint %uint_16 %start_byte_offset_16
        %982 = OpUDiv %uint %981 %uint_16
        %983 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %982
        %984 = OpLoad %v4uint %983 None
        %985 = OpVectorShuffle %v3uint %984 %984 0 1 2
        %986 = OpBitcast %v3float %985
        %987 = OpIAdd %uint %uint_32 %start_byte_offset_16
        %988 = OpUDiv %uint %987 %uint_16
        %989 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %988
        %990 = OpLoad %v4uint %989 None
        %991 = OpVectorShuffle %v3uint %990 %990 0 1 2
        %992 = OpBitcast %v3float %991
        %993 = OpCompositeConstruct %mat3v3float %980 %986 %992
               OpReturnValue %993
               OpFunctionEnd
        %114 = OpFunction %mat3v2float None %995
%start_byte_offset_17 = OpFunctionParameter %uint
        %996 = OpLabel
        %997 = OpUDiv %uint %start_byte_offset_17 %uint_16
        %998 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %997
        %999 = OpLoad %v4uint %998 None
       %1000 = OpBitwiseAnd %uint %start_byte_offset_17 %uint_15
       %1001 = OpShiftRightLogical %uint %1000 %uint_2
       %1002 = OpVectorShuffle %v2uint %999 %999 2 3
       %1003 = OpVectorShuffle %v2uint %999 %999 0 1
       %1004 = OpIEqual %bool %1001 %uint_2
       %1005 = OpCompositeConstruct %v2bool %1004 %1004
       %1006 = OpSelect %v2uint %1005 %1002 %1003
       %1007 = OpBitcast %v2float %1006
       %1008 = OpIAdd %uint %uint_8 %start_byte_offset_17
       %1009 = OpUDiv %uint %1008 %uint_16
       %1010 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %1009
       %1011 = OpLoad %v4uint %1010 None
       %1012 = OpBitwiseAnd %uint %1008 %uint_15
       %1013 = OpShiftRightLogical %uint %1012 %uint_2
       %1014 = OpVectorShuffle %v2uint %1011 %1011 2 3
       %1015 = OpVectorShuffle %v2uint %1011 %1011 0 1
       %1016 = OpIEqual %bool %1013 %uint_2
       %1017 = OpCompositeConstruct %v2bool %1016 %1016
       %1018 = OpSelect %v2uint %1017 %1014 %1015
       %1019 = OpBitcast %v2float %1018
       %1020 = OpIAdd %uint %uint_16 %start_byte_offset_17
       %1021 = OpUDiv %uint %1020 %uint_16
       %1022 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %1021
       %1023 = OpLoad %v4uint %1022 None
       %1024 = OpBitwiseAnd %uint %1020 %uint_15
       %1025 = OpShiftRightLogical %uint %1024 %uint_2
       %1026 = OpVectorShuffle %v2uint %1023 %1023 2 3
       %1027 = OpVectorShuffle %v2uint %1023 %1023 0 1
       %1028 = OpIEqual %bool %1025 %uint_2
       %1029 = OpCompositeConstruct %v2bool %1028 %1028
       %1030 = OpSelect %v2uint %1029 %1026 %1027
       %1031 = OpBitcast %v2float %1030
       %1032 = OpCompositeConstruct %mat3v2float %1007 %1019 %1031
               OpReturnValue %1032
               OpFunctionEnd
        %110 = OpFunction %mat2v4float None %1034
%start_byte_offset_18 = OpFunctionParameter %uint
       %1035 = OpLabel
       %1036 = OpUDiv %uint %start_byte_offset_18 %uint_16
       %1037 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %1036
       %1038 = OpLoad %v4uint %1037 None
       %1039 = OpBitcast %v4float %1038
       %1040 = OpIAdd %uint %uint_16 %start_byte_offset_18
       %1041 = OpUDiv %uint %1040 %uint_16
       %1042 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %1041
       %1043 = OpLoad %v4uint %1042 None
       %1044 = OpBitcast %v4float %1043
       %1045 = OpCompositeConstruct %mat2v4float %1039 %1044
               OpReturnValue %1045
               OpFunctionEnd
        %106 = OpFunction %mat2v3float None %1047
%start_byte_offset_19 = OpFunctionParameter %uint
       %1048 = OpLabel
       %1049 = OpUDiv %uint %start_byte_offset_19 %uint_16
       %1050 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %1049
       %1051 = OpLoad %v4uint %1050 None
       %1052 = OpVectorShuffle %v3uint %1051 %1051 0 1 2
       %1053 = OpBitcast %v3float %1052
       %1054 = OpIAdd %uint %uint_16 %start_byte_offset_19
       %1055 = OpUDiv %uint %1054 %uint_16
       %1056 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %1055
       %1057 = OpLoad %v4uint %1056 None
       %1058 = OpVectorShuffle %v3uint %1057 %1057 0 1 2
       %1059 = OpBitcast %v3float %1058
       %1060 = OpCompositeConstruct %mat2v3float %1053 %1059
               OpReturnValue %1060
               OpFunctionEnd
        %102 = OpFunction %mat2v2float None %1062
%start_byte_offset_20 = OpFunctionParameter %uint
       %1063 = OpLabel
       %1064 = OpUDiv %uint %start_byte_offset_20 %uint_16
       %1065 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %1064
       %1066 = OpLoad %v4uint %1065 None
       %1067 = OpBitwiseAnd %uint %start_byte_offset_20 %uint_15
       %1068 = OpShiftRightLogical %uint %1067 %uint_2
       %1069 = OpVectorShuffle %v2uint %1066 %1066 2 3
       %1070 = OpVectorShuffle %v2uint %1066 %1066 0 1
       %1071 = OpIEqual %bool %1068 %uint_2
       %1072 = OpCompositeConstruct %v2bool %1071 %1071
       %1073 = OpSelect %v2uint %1072 %1069 %1070
       %1074 = OpBitcast %v2float %1073
       %1075 = OpIAdd %uint %uint_8 %start_byte_offset_20
       %1076 = OpUDiv %uint %1075 %uint_16
       %1077 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %1076
       %1078 = OpLoad %v4uint %1077 None
       %1079 = OpBitwiseAnd %uint %1075 %uint_15
       %1080 = OpShiftRightLogical %uint %1079 %uint_2
       %1081 = OpVectorShuffle %v2uint %1078 %1078 2 3
       %1082 = OpVectorShuffle %v2uint %1078 %1078 0 1
       %1083 = OpIEqual %bool %1080 %uint_2
       %1084 = OpCompositeConstruct %v2bool %1083 %1083
       %1085 = OpSelect %v2uint %1084 %1081 %1082
       %1086 = OpBitcast %v2float %1085
       %1087 = OpCompositeConstruct %mat2v2float %1074 %1086
               OpReturnValue %1087
               OpFunctionEnd
