blob: 85d18186ccb9e93106e5bb92a7fc5c014f56c8b3 [file] [log] [blame] [edit]
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
; Bound: 140
; Schema: 0
OpCapability Shader
OpCapability Float16
OpCapability UniformAndStorageBuffer16BitAccess
OpCapability StorageBuffer16BitAccess
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %f "f"
OpExecutionMode %f LocalSize 1 1 1
OpMemberName %Inner_std140 0 "m_col0"
OpMemberName %Inner_std140 1 "m_col1"
OpName %Inner_std140 "Inner_std140"
OpMemberName %Outer_std140 0 "a"
OpName %Outer_std140 "Outer_std140"
OpMemberName %tint_symbol_1_std140 0 "tint_symbol"
OpName %tint_symbol_1_std140 "tint_symbol_1_std140"
OpName %counter "counter"
OpName %i "i"
OpName %f "f"
OpMemberName %Inner 0 "m"
OpName %Inner "Inner"
OpMemberName %Outer 0 "a"
OpName %Outer "Outer"
OpName %l_a "l_a"
OpName %l_a_i "l_a_i"
OpName %l_a_i_a "l_a_i_a"
OpName %l_a_i_a_i "l_a_i_a_i"
OpName %l_a_i_a_i_m "l_a_i_a_i_m"
OpName %l_a_i_a_i_m_i "l_a_i_a_i_m_i"
OpName %l_a_i_a_i_m_i_i "l_a_i_a_i_m_i_i"
OpName %tint_convert_Inner "tint_convert_Inner"
OpName %tint_input "tint_input"
OpName %tint_convert_Outer "tint_convert_Outer"
OpName %tint_input_0 "tint_input"
OpMemberDecorate %Inner_std140 0 Offset 0
OpMemberDecorate %Inner_std140 1 Offset 8
OpDecorate %_arr_Inner_std140_uint_4 ArrayStride 64
OpMemberDecorate %Outer_std140 0 Offset 0
OpDecorate %_arr_Outer_std140_uint_4 ArrayStride 256
OpMemberDecorate %tint_symbol_1_std140 0 Offset 0
OpDecorate %tint_symbol_1_std140 Block
OpDecorate %1 DescriptorSet 0
OpDecorate %1 Binding 0
OpDecorate %1 NonWritable
OpMemberDecorate %Inner 0 Offset 0
OpMemberDecorate %Inner 0 ColMajor
OpMemberDecorate %Inner 0 MatrixStride 8
OpDecorate %_arr_Inner_uint_4 ArrayStride 64
OpMemberDecorate %Outer 0 Offset 0
OpDecorate %_arr_Outer_uint_4 ArrayStride 256
%half = OpTypeFloat 16
%v3half = OpTypeVector %half 3
%Inner_std140 = OpTypeStruct %v3half %v3half
%uint = OpTypeInt 32 0
%uint_4 = OpConstant %uint 4
%_arr_Inner_std140_uint_4 = OpTypeArray %Inner_std140 %uint_4
%Outer_std140 = OpTypeStruct %_arr_Inner_std140_uint_4
%_arr_Outer_std140_uint_4 = OpTypeArray %Outer_std140 %uint_4
%tint_symbol_1_std140 = OpTypeStruct %_arr_Outer_std140_uint_4
%_ptr_Uniform_tint_symbol_1_std140 = OpTypePointer Uniform %tint_symbol_1_std140
%1 = OpVariable %_ptr_Uniform_tint_symbol_1_std140 Uniform
%int = OpTypeInt 32 1
%_ptr_Private_int = OpTypePointer Private %int
%int_0 = OpConstant %int 0
%counter = OpVariable %_ptr_Private_int Private %int_0
%17 = OpTypeFunction %int
%int_1 = OpConstant %int 1
%void = OpTypeVoid
%25 = OpTypeFunction %void
%_ptr_Uniform__arr_Outer_std140_uint_4 = OpTypePointer Uniform %_arr_Outer_std140_uint_4
%uint_0 = OpConstant %uint 0
%_ptr_Uniform_Outer_std140 = OpTypePointer Uniform %Outer_std140
%_ptr_Uniform__arr_Inner_std140_uint_4 = OpTypePointer Uniform %_arr_Inner_std140_uint_4
%_ptr_Uniform_Inner_std140 = OpTypePointer Uniform %Inner_std140
%_ptr_Uniform_v3half = OpTypePointer Uniform %v3half
%uint_1 = OpConstant %uint 1
%mat2v3half = OpTypeMatrix %v3half 2
%_ptr_Function_mat2v3half = OpTypePointer Function %mat2v3half
%_ptr_Function_v3half = OpTypePointer Function %v3half
%_ptr_Function__arr_Outer_std140_uint_4 = OpTypePointer Function %_arr_Outer_std140_uint_4
%Inner = OpTypeStruct %mat2v3half
%_arr_Inner_uint_4 = OpTypeArray %Inner %uint_4
%Outer = OpTypeStruct %_arr_Inner_uint_4
%_arr_Outer_uint_4 = OpTypeArray %Outer %uint_4
%_ptr_Function__arr_Outer_uint_4 = OpTypePointer Function %_arr_Outer_uint_4
%61 = OpConstantNull %_arr_Outer_uint_4
%bool = OpTypeBool
%_ptr_Function_Outer = OpTypePointer Function %Outer
%_ptr_Function_Outer_std140 = OpTypePointer Function %Outer_std140
%_ptr_Function__arr_Inner_std140_uint_4 = OpTypePointer Function %_arr_Inner_std140_uint_4
%_ptr_Function__arr_Inner_uint_4 = OpTypePointer Function %_arr_Inner_uint_4
%88 = OpConstantNull %_arr_Inner_uint_4
%_ptr_Function_Inner = OpTypePointer Function %Inner
%_ptr_Function_Inner_std140 = OpTypePointer Function %Inner_std140
%112 = OpTypeFunction %Inner %Inner_std140
%119 = OpTypeFunction %Outer %Outer_std140
%i = OpFunction %int None %17
%18 = OpLabel
%19 = OpLoad %int %counter None
%20 = OpIAdd %int %19 %int_1
OpStore %counter %20 None
%22 = OpLoad %int %counter None
OpReturnValue %22
OpFunctionEnd
%f = OpFunction %void None %25
%26 = OpLabel
%46 = OpVariable %_ptr_Function_mat2v3half Function
%53 = OpVariable %_ptr_Function__arr_Outer_std140_uint_4 Function
%55 = OpVariable %_ptr_Function__arr_Outer_uint_4 Function %61
%84 = OpVariable %_ptr_Function__arr_Inner_std140_uint_4 Function
%86 = OpVariable %_ptr_Function__arr_Inner_uint_4 Function %88
%27 = OpAccessChain %_ptr_Uniform__arr_Outer_std140_uint_4 %1 %uint_0
%30 = OpFunctionCall %int %i
%31 = OpAccessChain %_ptr_Uniform_Outer_std140 %27 %30
%33 = OpAccessChain %_ptr_Uniform__arr_Inner_std140_uint_4 %31 %uint_0
%35 = OpFunctionCall %int %i
%36 = OpAccessChain %_ptr_Uniform_Inner_std140 %33 %35
%38 = OpAccessChain %_ptr_Uniform_v3half %36 %uint_0
%40 = OpLoad %v3half %38 None
%41 = OpAccessChain %_ptr_Uniform_v3half %36 %uint_1
%43 = OpLoad %v3half %41 None
%l_a_i_a_i_m = OpCompositeConstruct %mat2v3half %40 %43
OpStore %46 %l_a_i_a_i_m
%48 = OpFunctionCall %int %i
%49 = OpAccessChain %_ptr_Function_v3half %46 %48
%l_a_i_a_i_m_i = OpLoad %v3half %49 None
%52 = OpLoad %_arr_Outer_std140_uint_4 %27 None
OpStore %53 %52
OpBranch %62
%62 = OpLabel
OpBranch %65
%65 = OpLabel
%67 = OpPhi %uint %uint_0 %62 %68 %64
OpLoopMerge %66 %64 None
OpBranch %63
%63 = OpLabel
%69 = OpUGreaterThanEqual %bool %67 %uint_4
OpSelectionMerge %71 None
OpBranchConditional %69 %72 %71
%72 = OpLabel
OpBranch %66
%71 = OpLabel
%73 = OpAccessChain %_ptr_Function_Outer %55 %67
%75 = OpAccessChain %_ptr_Function_Outer_std140 %53 %67
%77 = OpLoad %Outer_std140 %75 None
%78 = OpFunctionCall %Outer %tint_convert_Outer %77
OpStore %73 %78 None
OpBranch %64
%64 = OpLabel
%68 = OpIAdd %uint %67 %uint_1
OpBranch %65
%66 = OpLabel
%l_a = OpLoad %_arr_Outer_uint_4 %55 None
%81 = OpLoad %Outer_std140 %31 None
%l_a_i = OpFunctionCall %Outer %tint_convert_Outer %81
%83 = OpLoad %_arr_Inner_std140_uint_4 %33 None
OpStore %84 %83
OpBranch %89
%89 = OpLabel
OpBranch %92
%92 = OpLabel
%94 = OpPhi %uint %uint_0 %89 %95 %91
OpLoopMerge %93 %91 None
OpBranch %90
%90 = OpLabel
%96 = OpUGreaterThanEqual %bool %94 %uint_4
OpSelectionMerge %97 None
OpBranchConditional %96 %98 %97
%98 = OpLabel
OpBranch %93
%97 = OpLabel
%99 = OpAccessChain %_ptr_Function_Inner %86 %94
%101 = OpAccessChain %_ptr_Function_Inner_std140 %84 %94
%103 = OpLoad %Inner_std140 %101 None
%104 = OpFunctionCall %Inner %tint_convert_Inner %103
OpStore %99 %104 None
OpBranch %91
%91 = OpLabel
%95 = OpIAdd %uint %94 %uint_1
OpBranch %92
%93 = OpLabel
%l_a_i_a = OpLoad %_arr_Inner_uint_4 %86 None
%107 = OpLoad %Inner_std140 %36 None
%l_a_i_a_i = OpFunctionCall %Inner %tint_convert_Inner %107
%109 = OpFunctionCall %int %i
%l_a_i_a_i_m_i_i = OpVectorExtractDynamic %half %l_a_i_a_i_m_i %109
OpReturn
OpFunctionEnd
%tint_convert_Inner = OpFunction %Inner None %112
%tint_input = OpFunctionParameter %Inner_std140
%113 = OpLabel
%114 = OpCompositeExtract %v3half %tint_input 0
%115 = OpCompositeExtract %v3half %tint_input 1
%116 = OpCompositeConstruct %mat2v3half %114 %115
%117 = OpCompositeConstruct %Inner %116
OpReturnValue %117
OpFunctionEnd
%tint_convert_Outer = OpFunction %Outer None %119
%tint_input_0 = OpFunctionParameter %Outer_std140
%120 = OpLabel
%122 = OpVariable %_ptr_Function__arr_Inner_std140_uint_4 Function
%123 = OpVariable %_ptr_Function__arr_Inner_uint_4 Function %88
%121 = OpCompositeExtract %_arr_Inner_std140_uint_4 %tint_input_0 0
OpStore %122 %121
OpBranch %124
%124 = OpLabel
OpBranch %127
%127 = OpLabel
%129 = OpPhi %uint %uint_0 %124 %130 %126
OpLoopMerge %128 %126 None
OpBranch %125
%125 = OpLabel
%131 = OpUGreaterThanEqual %bool %129 %uint_4
OpSelectionMerge %132 None
OpBranchConditional %131 %133 %132
%133 = OpLabel
OpBranch %128
%132 = OpLabel
%134 = OpAccessChain %_ptr_Function_Inner %123 %129
%135 = OpAccessChain %_ptr_Function_Inner_std140 %122 %129
%136 = OpLoad %Inner_std140 %135 None
%137 = OpFunctionCall %Inner %tint_convert_Inner %136
OpStore %134 %137 None
OpBranch %126
%126 = OpLabel
%130 = OpIAdd %uint %129 %uint_1
OpBranch %127
%128 = OpLabel
%138 = OpLoad %_arr_Inner_uint_4 %123 None
%139 = OpCompositeConstruct %Outer %138
OpReturnValue %139
OpFunctionEnd