; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 86
; Schema: 0
               OpCapability Shader
               OpMemoryModel Logical GLSL450
               OpEntryPoint GLCompute %f "f"
               OpExecutionMode %f LocalSize 1 1 1
               OpName %ssbo_block "ssbo_block"
               OpMemberName %ssbo_block 0 "inner"
               OpName %SSBO "SSBO"
               OpMemberName %SSBO 0 "m"
               OpName %strided_arr "strided_arr"
               OpMemberName %strided_arr 0 "el"
               OpName %ssbo "ssbo"
               OpName %arr_to_mat2x2_stride_16 "arr_to_mat2x2_stride_16"
               OpName %arr "arr"
               OpName %mat2x2_stride_16_to_arr "mat2x2_stride_16_to_arr"
               OpName %m "m"
               OpName %assign_and_preserve_padding_1_ssbo_m_X "assign_and_preserve_padding_1_ssbo_m_X"
               OpName %dest "dest"
               OpName %value "value"
               OpName %assign_and_preserve_padding_ssbo_m "assign_and_preserve_padding_ssbo_m"
               OpName %value_0 "value"
               OpName %i "i"
               OpName %var_for_index "var_for_index"
               OpName %f_1 "f_1"
               OpName %f "f"
               OpDecorate %ssbo_block Block
               OpMemberDecorate %ssbo_block 0 Offset 0
               OpMemberDecorate %SSBO 0 Offset 0
               OpMemberDecorate %strided_arr 0 Offset 0
               OpDecorate %_arr_strided_arr_uint_2 ArrayStride 16
               OpDecorate %ssbo DescriptorSet 0
               OpDecorate %ssbo Binding 0
               OpDecorate %_arr_uint_uint_1 ArrayStride 4
      %float = OpTypeFloat 32
    %v2float = OpTypeVector %float 2
%strided_arr = OpTypeStruct %v2float
       %uint = OpTypeInt 32 0
     %uint_2 = OpConstant %uint 2
%_arr_strided_arr_uint_2 = OpTypeArray %strided_arr %uint_2
       %SSBO = OpTypeStruct %_arr_strided_arr_uint_2
 %ssbo_block = OpTypeStruct %SSBO
%_ptr_StorageBuffer_ssbo_block = OpTypePointer StorageBuffer %ssbo_block
       %ssbo = OpVariable %_ptr_StorageBuffer_ssbo_block StorageBuffer
%mat2v2float = OpTypeMatrix %v2float 2
         %11 = OpTypeFunction %mat2v2float %_arr_strided_arr_uint_2
         %16 = OpConstantNull %uint
     %uint_1 = OpConstant %uint 1
         %23 = OpTypeFunction %_arr_strided_arr_uint_2 %mat2v2float
       %void = OpTypeVoid
%_arr_uint_uint_1 = OpTypeArray %uint %uint_1
         %32 = OpTypeFunction %void %_arr_uint_uint_1 %strided_arr
     %uint_0 = OpConstant %uint 0
        %int = OpTypeInt 32 1
         %41 = OpConstantNull %int
%_ptr_StorageBuffer_v2float = OpTypePointer StorageBuffer %v2float
         %46 = OpTypeFunction %void %_arr_strided_arr_uint_2
%_ptr_Function_uint = OpTypePointer Function %uint
       %bool = OpTypeBool
%_ptr_Function__arr_strided_arr_uint_2 = OpTypePointer Function %_arr_strided_arr_uint_2
         %64 = OpConstantNull %_arr_strided_arr_uint_2
%_ptr_Function_strided_arr = OpTypePointer Function %strided_arr
         %74 = OpTypeFunction %void
%_ptr_StorageBuffer__arr_strided_arr_uint_2 = OpTypePointer StorageBuffer %_arr_strided_arr_uint_2
%arr_to_mat2x2_stride_16 = OpFunction %mat2v2float None %11
        %arr = OpFunctionParameter %_arr_strided_arr_uint_2
         %15 = OpLabel
         %17 = OpCompositeExtract %strided_arr %arr 0
         %18 = OpCompositeExtract %v2float %17 0
         %20 = OpCompositeExtract %strided_arr %arr 1
         %21 = OpCompositeExtract %v2float %20 0
         %22 = OpCompositeConstruct %mat2v2float %18 %21
               OpReturnValue %22
               OpFunctionEnd
%mat2x2_stride_16_to_arr = OpFunction %_arr_strided_arr_uint_2 None %23
          %m = OpFunctionParameter %mat2v2float
         %26 = OpLabel
         %27 = OpCompositeExtract %v2float %m 0
         %28 = OpCompositeConstruct %strided_arr %27
         %29 = OpCompositeExtract %v2float %m 1
         %30 = OpCompositeConstruct %strided_arr %29
         %31 = OpCompositeConstruct %_arr_strided_arr_uint_2 %28 %30
               OpReturnValue %31
               OpFunctionEnd
%assign_and_preserve_padding_1_ssbo_m_X = OpFunction %void None %32
       %dest = OpFunctionParameter %_arr_uint_uint_1
      %value = OpFunctionParameter %strided_arr
         %38 = OpLabel
         %42 = OpCompositeExtract %uint %dest 0
         %44 = OpAccessChain %_ptr_StorageBuffer_v2float %ssbo %uint_0 %uint_0 %42 %uint_0
         %45 = OpCompositeExtract %v2float %value 0
               OpStore %44 %45
               OpReturn
               OpFunctionEnd
%assign_and_preserve_padding_ssbo_m = OpFunction %void None %46
    %value_0 = OpFunctionParameter %_arr_strided_arr_uint_2
         %49 = OpLabel
          %i = OpVariable %_ptr_Function_uint Function %16
%var_for_index = OpVariable %_ptr_Function__arr_strided_arr_uint_2 Function %64
               OpStore %i %16
               OpBranch %52
         %52 = OpLabel
               OpLoopMerge %53 %54 None
               OpBranch %55
         %55 = OpLabel
         %57 = OpLoad %uint %i
         %58 = OpULessThan %bool %57 %uint_2
         %56 = OpLogicalNot %bool %58
               OpSelectionMerge %60 None
               OpBranchConditional %56 %61 %60
         %61 = OpLabel
               OpBranch %53
         %60 = OpLabel
               OpStore %var_for_index %value_0
         %66 = OpLoad %uint %i
         %67 = OpCompositeConstruct %_arr_uint_uint_1 %66
         %68 = OpLoad %uint %i
         %70 = OpAccessChain %_ptr_Function_strided_arr %var_for_index %68
         %71 = OpLoad %strided_arr %70
         %65 = OpFunctionCall %void %assign_and_preserve_padding_1_ssbo_m_X %67 %71
               OpBranch %54
         %54 = OpLabel
         %72 = OpLoad %uint %i
         %73 = OpIAdd %uint %72 %uint_1
               OpStore %i %73
               OpBranch %52
         %53 = OpLabel
               OpReturn
               OpFunctionEnd
        %f_1 = OpFunction %void None %74
         %76 = OpLabel
         %79 = OpAccessChain %_ptr_StorageBuffer__arr_strided_arr_uint_2 %ssbo %uint_0 %uint_0
         %80 = OpLoad %_arr_strided_arr_uint_2 %79
         %77 = OpFunctionCall %mat2v2float %arr_to_mat2x2_stride_16 %80
         %81 = OpFunctionCall %_arr_strided_arr_uint_2 %mat2x2_stride_16_to_arr %77
         %82 = OpFunctionCall %void %assign_and_preserve_padding_ssbo_m %81
               OpReturn
               OpFunctionEnd
          %f = OpFunction %void None %74
         %84 = OpLabel
         %85 = OpFunctionCall %void %f_1
               OpReturn
               OpFunctionEnd