OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Fragment %_entrypoint_v "_entrypoint" %sk_Clockwise %sk_FragColor OpExecutionMode %_entrypoint_v OriginUpperLeft OpName %sk_Clockwise "sk_Clockwise" OpName %sk_FragColor "sk_FragColor" OpName %_UniformBuffer "_UniformBuffer" OpMemberName %_UniformBuffer 0 "colorRed" OpMemberName %_UniformBuffer 1 "colorGreen" OpName %_entrypoint_v "_entrypoint_v" OpName %test_matrix_op_matrix_half_b "test_matrix_op_matrix_half_b" OpName %ok "ok" OpName %splat_4 "splat_4" OpName %splat_2 "splat_2" OpName %m "m" OpName %m_0 "m" OpName %m_1 "m" OpName %m_2 "m" OpName %m_3 "m" OpName %m_4 "m" OpName %main "main" OpName %_0_ok "_0_ok" OpName %_1_splat_4 "_1_splat_4" OpName %_2_splat_2 "_2_splat_2" OpName %_3_m "_3_m" OpName %_4_m "_4_m" OpName %_5_m "_5_m" OpName %_6_m "_6_m" OpName %_7_m "_7_m" OpName %_8_m "_8_m" OpDecorate %sk_Clockwise BuiltIn FrontFacing OpDecorate %sk_FragColor RelaxedPrecision OpDecorate %sk_FragColor Location 0 OpDecorate %sk_FragColor Index 0 OpMemberDecorate %_UniformBuffer 0 Offset 0 OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision OpMemberDecorate %_UniformBuffer 1 Offset 16 OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision OpDecorate %_UniformBuffer Block OpDecorate %11 Binding 0 OpDecorate %11 DescriptorSet 0 OpDecorate %splat_4 RelaxedPrecision OpDecorate %splat_2 RelaxedPrecision OpDecorate %m RelaxedPrecision OpDecorate %45 RelaxedPrecision OpDecorate %46 RelaxedPrecision OpDecorate %47 RelaxedPrecision OpDecorate %48 RelaxedPrecision OpDecorate %58 RelaxedPrecision OpDecorate %60 RelaxedPrecision OpDecorate %63 RelaxedPrecision OpDecorate %67 RelaxedPrecision OpDecorate %68 RelaxedPrecision OpDecorate %69 RelaxedPrecision OpDecorate %70 RelaxedPrecision OpDecorate %79 RelaxedPrecision OpDecorate %81 RelaxedPrecision OpDecorate %84 RelaxedPrecision OpDecorate %88 RelaxedPrecision OpDecorate %89 RelaxedPrecision OpDecorate %90 RelaxedPrecision OpDecorate %91 RelaxedPrecision OpDecorate %99 RelaxedPrecision OpDecorate %101 RelaxedPrecision OpDecorate %104 RelaxedPrecision OpDecorate %108 RelaxedPrecision OpDecorate %109 RelaxedPrecision OpDecorate %110 RelaxedPrecision OpDecorate %111 RelaxedPrecision OpDecorate %114 RelaxedPrecision OpDecorate %116 RelaxedPrecision OpDecorate %119 RelaxedPrecision OpDecorate %123 RelaxedPrecision OpDecorate %124 RelaxedPrecision OpDecorate %125 RelaxedPrecision OpDecorate %126 RelaxedPrecision OpDecorate %133 RelaxedPrecision OpDecorate %135 RelaxedPrecision OpDecorate %138 RelaxedPrecision OpDecorate %142 RelaxedPrecision OpDecorate %143 RelaxedPrecision OpDecorate %144 RelaxedPrecision OpDecorate %145 RelaxedPrecision OpDecorate %148 RelaxedPrecision OpDecorate %150 RelaxedPrecision OpDecorate %153 RelaxedPrecision OpDecorate %m_0 RelaxedPrecision OpDecorate %183 RelaxedPrecision OpDecorate %184 RelaxedPrecision OpDecorate %185 RelaxedPrecision OpDecorate %186 RelaxedPrecision OpDecorate %187 RelaxedPrecision OpDecorate %194 RelaxedPrecision OpDecorate %196 RelaxedPrecision OpDecorate %199 RelaxedPrecision OpDecorate %202 RelaxedPrecision OpDecorate %m_1 RelaxedPrecision OpDecorate %218 RelaxedPrecision OpDecorate %219 RelaxedPrecision OpDecorate %220 RelaxedPrecision OpDecorate %230 RelaxedPrecision OpDecorate %232 RelaxedPrecision OpDecorate %m_2 RelaxedPrecision OpDecorate %242 RelaxedPrecision OpDecorate %243 RelaxedPrecision OpDecorate %244 RelaxedPrecision OpDecorate %249 RelaxedPrecision OpDecorate %251 RelaxedPrecision OpDecorate %m_3 RelaxedPrecision OpDecorate %260 RelaxedPrecision OpDecorate %268 RelaxedPrecision OpDecorate %269 RelaxedPrecision OpDecorate %271 RelaxedPrecision OpDecorate %272 RelaxedPrecision OpDecorate %m_4 RelaxedPrecision OpDecorate %285 RelaxedPrecision OpDecorate %301 RelaxedPrecision OpDecorate %302 RelaxedPrecision OpDecorate %304 RelaxedPrecision OpDecorate %305 RelaxedPrecision OpDecorate %308 RelaxedPrecision OpDecorate %309 RelaxedPrecision OpDecorate %495 RelaxedPrecision OpDecorate %498 RelaxedPrecision OpDecorate %499 RelaxedPrecision %bool = OpTypeBool %_ptr_Input_bool = OpTypePointer Input %bool %sk_Clockwise = OpVariable %_ptr_Input_bool Input %float = OpTypeFloat 32 %v4float = OpTypeVector %float 4 %_ptr_Output_v4float = OpTypePointer Output %v4float %sk_FragColor = OpVariable %_ptr_Output_v4float Output %_UniformBuffer = OpTypeStruct %v4float %v4float %_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer %11 = OpVariable %_ptr_Uniform__UniformBuffer Uniform %void = OpTypeVoid %16 = OpTypeFunction %void %float_0 = OpConstant %float 0 %v2float = OpTypeVector %float 2 %20 = OpConstantComposite %v2float %float_0 %float_0 %_ptr_Function_v2float = OpTypePointer Function %v2float %24 = OpTypeFunction %bool %_ptr_Function_bool = OpTypePointer Function %bool %true = OpConstantTrue %bool %v3float = OpTypeVector %float 3 %mat3v3float = OpTypeMatrix %v3float 3 %_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float %float_4 = OpConstant %float 4 %34 = OpConstantComposite %v3float %float_4 %float_4 %float_4 %35 = OpConstantComposite %mat3v3float %34 %34 %34 %float_2 = OpConstant %float 2 %38 = OpConstantComposite %v3float %float_2 %float_2 %float_2 %39 = OpConstantComposite %mat3v3float %38 %38 %38 %41 = OpConstantComposite %v3float %float_2 %float_0 %float_0 %42 = OpConstantComposite %v3float %float_0 %float_2 %float_0 %43 = OpConstantComposite %v3float %float_0 %float_0 %float_2 %44 = OpConstantComposite %mat3v3float %41 %42 %43 %false = OpConstantFalse %bool %float_6 = OpConstant %float 6 %53 = OpConstantComposite %v3float %float_6 %float_4 %float_4 %54 = OpConstantComposite %v3float %float_4 %float_6 %float_4 %55 = OpConstantComposite %v3float %float_4 %float_4 %float_6 %56 = OpConstantComposite %mat3v3float %53 %54 %55 %v3bool = OpTypeVector %bool 3 %float_n2 = OpConstant %float -2 %float_n4 = OpConstant %float -4 %75 = OpConstantComposite %v3float %float_n2 %float_n4 %float_n4 %76 = OpConstantComposite %v3float %float_n4 %float_n2 %float_n4 %77 = OpConstantComposite %v3float %float_n4 %float_n4 %float_n2 %78 = OpConstantComposite %mat3v3float %75 %76 %77 %float_0_5 = OpConstant %float 0.5 %95 = OpConstantComposite %v3float %float_0_5 %float_0 %float_0 %96 = OpConstantComposite %v3float %float_0 %float_0_5 %float_0 %97 = OpConstantComposite %v3float %float_0 %float_0 %float_0_5 %98 = OpConstantComposite %mat3v3float %95 %96 %97 %129 = OpConstantComposite %v3float %float_2 %float_4 %float_4 %130 = OpConstantComposite %v3float %float_4 %float_2 %float_4 %131 = OpConstantComposite %v3float %float_4 %float_4 %float_2 %132 = OpConstantComposite %mat3v3float %129 %130 %131 %mat4v4float = OpTypeMatrix %v4float 4 %_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float %float_1 = OpConstant %float 1 %float_3 = OpConstant %float 3 %float_5 = OpConstant %float 5 %float_7 = OpConstant %float 7 %float_8 = OpConstant %float 8 %float_9 = OpConstant %float 9 %float_10 = OpConstant %float 10 %float_11 = OpConstant %float 11 %float_12 = OpConstant %float 12 %float_13 = OpConstant %float 13 %float_14 = OpConstant %float 14 %float_15 = OpConstant %float 15 %float_16 = OpConstant %float 16 %173 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4 %174 = OpConstantComposite %v4float %float_5 %float_6 %float_7 %float_8 %175 = OpConstantComposite %v4float %float_9 %float_10 %float_11 %float_12 %176 = OpConstantComposite %v4float %float_13 %float_14 %float_15 %float_16 %177 = OpConstantComposite %mat4v4float %173 %174 %175 %176 %178 = OpConstantComposite %v4float %float_16 %float_15 %float_14 %float_13 %179 = OpConstantComposite %v4float %float_12 %float_11 %float_10 %float_9 %180 = OpConstantComposite %v4float %float_8 %float_7 %float_6 %float_5 %181 = OpConstantComposite %v4float %float_4 %float_3 %float_2 %float_1 %182 = OpConstantComposite %mat4v4float %178 %179 %180 %181 %float_17 = OpConstant %float 17 %191 = OpConstantComposite %v4float %float_17 %float_17 %float_17 %float_17 %192 = OpConstantComposite %mat4v4float %191 %191 %191 %191 %v4bool = OpTypeVector %bool 4 %mat2v2float = OpTypeMatrix %v2float 2 %_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float %float_20 = OpConstant %float 20 %float_30 = OpConstant %float 30 %float_40 = OpConstant %float 40 %212 = OpConstantComposite %v2float %float_10 %float_20 %213 = OpConstantComposite %v2float %float_30 %float_40 %214 = OpConstantComposite %mat2v2float %212 %213 %215 = OpConstantComposite %v2float %float_1 %float_2 %216 = OpConstantComposite %v2float %float_3 %float_4 %217 = OpConstantComposite %mat2v2float %215 %216 %float_18 = OpConstant %float 18 %float_27 = OpConstant %float 27 %float_36 = OpConstant %float 36 %226 = OpConstantComposite %v2float %float_9 %float_18 %227 = OpConstantComposite %v2float %float_27 %float_36 %228 = OpConstantComposite %mat2v2float %226 %227 %v2bool = OpTypeVector %bool 2 %237 = OpConstantComposite %v2float %float_2 %float_4 %238 = OpConstantComposite %v2float %float_6 %float_8 %239 = OpConstantComposite %mat2v2float %237 %238 %240 = OpConstantComposite %v2float %float_2 %float_2 %241 = OpConstantComposite %mat2v2float %240 %237 %247 = OpConstantComposite %v2float %float_3 %float_2 %248 = OpConstantComposite %mat2v2float %215 %247 %256 = OpConstantComposite %v2float %float_7 %float_4 %257 = OpConstantComposite %mat2v2float %215 %256 %258 = OpConstantComposite %v2float %float_3 %float_5 %259 = OpConstantComposite %mat2v2float %258 %247 %float_38 = OpConstant %float 38 %float_26 = OpConstant %float 26 %265 = OpConstantComposite %v2float %float_38 %float_26 %266 = OpConstantComposite %v2float %float_17 %float_14 %267 = OpConstantComposite %mat2v2float %265 %266 %277 = OpConstantComposite %v3float %float_10 %float_4 %float_2 %278 = OpConstantComposite %v3float %float_20 %float_5 %float_3 %279 = OpConstantComposite %v3float %float_10 %float_6 %float_5 %280 = OpConstantComposite %mat3v3float %277 %278 %279 %281 = OpConstantComposite %v3float %float_3 %float_3 %float_4 %282 = OpConstantComposite %v3float %float_2 %float_3 %float_4 %283 = OpConstantComposite %v3float %float_4 %float_9 %float_2 %284 = OpConstantComposite %mat3v3float %281 %282 %283 %float_130 = OpConstant %float 130 %float_51 = OpConstant %float 51 %float_35 = OpConstant %float 35 %float_120 = OpConstant %float 120 %float_47 = OpConstant %float 47 %float_33 = OpConstant %float 33 %float_240 = OpConstant %float 240 %float_73 = OpConstant %float 73 %float_45 = OpConstant %float 45 %297 = OpConstantComposite %v3float %float_130 %float_51 %float_35 %298 = OpConstantComposite %v3float %float_120 %float_47 %float_33 %299 = OpConstantComposite %v3float %float_240 %float_73 %float_45 %300 = OpConstantComposite %mat3v3float %297 %298 %299 %313 = OpTypeFunction %v4float %_ptr_Function_v2float %_ptr_Function_v4float = OpTypePointer Function %v4float %_ptr_Uniform_v4float = OpTypePointer Uniform %v4float %int = OpTypeInt 32 1 %int_1 = OpConstant %int 1 %int_0 = OpConstant %int 0 %_entrypoint_v = OpFunction %void None %16 %17 = OpLabel %21 = OpVariable %_ptr_Function_v2float Function OpStore %21 %20 %23 = OpFunctionCall %v4float %main %21 OpStore %sk_FragColor %23 OpReturn OpFunctionEnd %test_matrix_op_matrix_half_b = OpFunction %bool None %24 %25 = OpLabel %ok = OpVariable %_ptr_Function_bool Function %splat_4 = OpVariable %_ptr_Function_mat3v3float Function %splat_2 = OpVariable %_ptr_Function_mat3v3float Function %m = OpVariable %_ptr_Function_mat3v3float Function %m_0 = OpVariable %_ptr_Function_mat4v4float Function %m_1 = OpVariable %_ptr_Function_mat2v2float Function %m_2 = OpVariable %_ptr_Function_mat2v2float Function %m_3 = OpVariable %_ptr_Function_mat2v2float Function %m_4 = OpVariable %_ptr_Function_mat3v3float Function OpStore %ok %true OpStore %splat_4 %35 OpStore %splat_2 %39 OpStore %m %44 %45 = OpFAdd %v3float %41 %34 %46 = OpFAdd %v3float %42 %34 %47 = OpFAdd %v3float %43 %34 %48 = OpCompositeConstruct %mat3v3float %45 %46 %47 OpStore %m %48 OpSelectionMerge %51 None OpBranchConditional %true %50 %51 %50 = OpLabel %58 = OpFOrdEqual %v3bool %45 %53 %59 = OpAll %bool %58 %60 = OpFOrdEqual %v3bool %46 %54 %61 = OpAll %bool %60 %62 = OpLogicalAnd %bool %59 %61 %63 = OpFOrdEqual %v3bool %47 %55 %64 = OpAll %bool %63 %65 = OpLogicalAnd %bool %62 %64 OpBranch %51 %51 = OpLabel %66 = OpPhi %bool %false %25 %65 %50 OpStore %ok %66 OpStore %m %44 %67 = OpFSub %v3float %41 %34 %68 = OpFSub %v3float %42 %34 %69 = OpFSub %v3float %43 %34 %70 = OpCompositeConstruct %mat3v3float %67 %68 %69 OpStore %m %70 OpSelectionMerge %72 None OpBranchConditional %66 %71 %72 %71 = OpLabel %79 = OpFOrdEqual %v3bool %67 %75 %80 = OpAll %bool %79 %81 = OpFOrdEqual %v3bool %68 %76 %82 = OpAll %bool %81 %83 = OpLogicalAnd %bool %80 %82 %84 = OpFOrdEqual %v3bool %69 %77 %85 = OpAll %bool %84 %86 = OpLogicalAnd %bool %83 %85 OpBranch %72 %72 = OpLabel %87 = OpPhi %bool %false %51 %86 %71 OpStore %ok %87 OpStore %m %44 %88 = OpFDiv %v3float %41 %34 %89 = OpFDiv %v3float %42 %34 %90 = OpFDiv %v3float %43 %34 %91 = OpCompositeConstruct %mat3v3float %88 %89 %90 OpStore %m %91 OpSelectionMerge %93 None OpBranchConditional %87 %92 %93 %92 = OpLabel %99 = OpFOrdEqual %v3bool %88 %95 %100 = OpAll %bool %99 %101 = OpFOrdEqual %v3bool %89 %96 %102 = OpAll %bool %101 %103 = OpLogicalAnd %bool %100 %102 %104 = OpFOrdEqual %v3bool %90 %97 %105 = OpAll %bool %104 %106 = OpLogicalAnd %bool %103 %105 OpBranch %93 %93 = OpLabel %107 = OpPhi %bool %false %72 %106 %92 OpStore %ok %107 OpStore %m %35 %108 = OpFAdd %v3float %34 %41 %109 = OpFAdd %v3float %34 %42 %110 = OpFAdd %v3float %34 %43 %111 = OpCompositeConstruct %mat3v3float %108 %109 %110 OpStore %m %111 OpSelectionMerge %113 None OpBranchConditional %107 %112 %113 %112 = OpLabel %114 = OpFOrdEqual %v3bool %108 %53 %115 = OpAll %bool %114 %116 = OpFOrdEqual %v3bool %109 %54 %117 = OpAll %bool %116 %118 = OpLogicalAnd %bool %115 %117 %119 = OpFOrdEqual %v3bool %110 %55 %120 = OpAll %bool %119 %121 = OpLogicalAnd %bool %118 %120 OpBranch %113 %113 = OpLabel %122 = OpPhi %bool %false %93 %121 %112 OpStore %ok %122 OpStore %m %35 %123 = OpFSub %v3float %34 %41 %124 = OpFSub %v3float %34 %42 %125 = OpFSub %v3float %34 %43 %126 = OpCompositeConstruct %mat3v3float %123 %124 %125 OpStore %m %126 OpSelectionMerge %128 None OpBranchConditional %122 %127 %128 %127 = OpLabel %133 = OpFOrdEqual %v3bool %123 %129 %134 = OpAll %bool %133 %135 = OpFOrdEqual %v3bool %124 %130 %136 = OpAll %bool %135 %137 = OpLogicalAnd %bool %134 %136 %138 = OpFOrdEqual %v3bool %125 %131 %139 = OpAll %bool %138 %140 = OpLogicalAnd %bool %137 %139 OpBranch %128 %128 = OpLabel %141 = OpPhi %bool %false %113 %140 %127 OpStore %ok %141 OpStore %m %35 %142 = OpFDiv %v3float %34 %38 %143 = OpFDiv %v3float %34 %38 %144 = OpFDiv %v3float %34 %38 %145 = OpCompositeConstruct %mat3v3float %142 %143 %144 OpStore %m %145 OpSelectionMerge %147 None OpBranchConditional %141 %146 %147 %146 = OpLabel %148 = OpFOrdEqual %v3bool %142 %38 %149 = OpAll %bool %148 %150 = OpFOrdEqual %v3bool %143 %38 %151 = OpAll %bool %150 %152 = OpLogicalAnd %bool %149 %151 %153 = OpFOrdEqual %v3bool %144 %38 %154 = OpAll %bool %153 %155 = OpLogicalAnd %bool %152 %154 OpBranch %147 %147 = OpLabel %156 = OpPhi %bool %false %128 %155 %146 OpStore %ok %156 OpStore %m_0 %177 %183 = OpFAdd %v4float %173 %178 %184 = OpFAdd %v4float %174 %179 %185 = OpFAdd %v4float %175 %180 %186 = OpFAdd %v4float %176 %181 %187 = OpCompositeConstruct %mat4v4float %183 %184 %185 %186 OpStore %m_0 %187 OpSelectionMerge %189 None OpBranchConditional %156 %188 %189 %188 = OpLabel %194 = OpFOrdEqual %v4bool %183 %191 %195 = OpAll %bool %194 %196 = OpFOrdEqual %v4bool %184 %191 %197 = OpAll %bool %196 %198 = OpLogicalAnd %bool %195 %197 %199 = OpFOrdEqual %v4bool %185 %191 %200 = OpAll %bool %199 %201 = OpLogicalAnd %bool %198 %200 %202 = OpFOrdEqual %v4bool %186 %191 %203 = OpAll %bool %202 %204 = OpLogicalAnd %bool %201 %203 OpBranch %189 %189 = OpLabel %205 = OpPhi %bool %false %147 %204 %188 OpStore %ok %205 OpStore %m_1 %214 %218 = OpFSub %v2float %212 %215 %219 = OpFSub %v2float %213 %216 %220 = OpCompositeConstruct %mat2v2float %218 %219 OpStore %m_1 %220 OpSelectionMerge %222 None OpBranchConditional %205 %221 %222 %221 = OpLabel %230 = OpFOrdEqual %v2bool %218 %226 %231 = OpAll %bool %230 %232 = OpFOrdEqual %v2bool %219 %227 %233 = OpAll %bool %232 %234 = OpLogicalAnd %bool %231 %233 OpBranch %222 %222 = OpLabel %235 = OpPhi %bool %false %189 %234 %221 OpStore %ok %235 OpStore %m_2 %239 %242 = OpFDiv %v2float %237 %240 %243 = OpFDiv %v2float %238 %237 %244 = OpCompositeConstruct %mat2v2float %242 %243 OpStore %m_2 %244 OpSelectionMerge %246 None OpBranchConditional %235 %245 %246 %245 = OpLabel %249 = OpFOrdEqual %v2bool %242 %215 %250 = OpAll %bool %249 %251 = OpFOrdEqual %v2bool %243 %247 %252 = OpAll %bool %251 %253 = OpLogicalAnd %bool %250 %252 OpBranch %246 %246 = OpLabel %254 = OpPhi %bool %false %222 %253 %245 OpStore %ok %254 OpStore %m_3 %257 %260 = OpMatrixTimesMatrix %mat2v2float %257 %259 OpStore %m_3 %260 OpSelectionMerge %262 None OpBranchConditional %254 %261 %262 %261 = OpLabel %268 = OpCompositeExtract %v2float %260 0 %269 = OpFOrdEqual %v2bool %268 %265 %270 = OpAll %bool %269 %271 = OpCompositeExtract %v2float %260 1 %272 = OpFOrdEqual %v2bool %271 %266 %273 = OpAll %bool %272 %274 = OpLogicalAnd %bool %270 %273 OpBranch %262 %262 = OpLabel %275 = OpPhi %bool %false %246 %274 %261 OpStore %ok %275 OpStore %m_4 %280 %285 = OpMatrixTimesMatrix %mat3v3float %280 %284 OpStore %m_4 %285 OpSelectionMerge %287 None OpBranchConditional %275 %286 %287 %286 = OpLabel %301 = OpCompositeExtract %v3float %285 0 %302 = OpFOrdEqual %v3bool %301 %297 %303 = OpAll %bool %302 %304 = OpCompositeExtract %v3float %285 1 %305 = OpFOrdEqual %v3bool %304 %298 %306 = OpAll %bool %305 %307 = OpLogicalAnd %bool %303 %306 %308 = OpCompositeExtract %v3float %285 2 %309 = OpFOrdEqual %v3bool %308 %299 %310 = OpAll %bool %309 %311 = OpLogicalAnd %bool %307 %310 OpBranch %287 %287 = OpLabel %312 = OpPhi %bool %false %262 %311 %286 OpStore %ok %312 OpReturnValue %312 OpFunctionEnd %main = OpFunction %v4float None %313 %314 = OpFunctionParameter %_ptr_Function_v2float %315 = OpLabel %_0_ok = OpVariable %_ptr_Function_bool Function %_1_splat_4 = OpVariable %_ptr_Function_mat3v3float Function %_2_splat_2 = OpVariable %_ptr_Function_mat3v3float Function %_3_m = OpVariable %_ptr_Function_mat3v3float Function %_4_m = OpVariable %_ptr_Function_mat4v4float Function %_5_m = OpVariable %_ptr_Function_mat2v2float Function %_6_m = OpVariable %_ptr_Function_mat2v2float Function %_7_m = OpVariable %_ptr_Function_mat2v2float Function %_8_m = OpVariable %_ptr_Function_mat3v3float Function %486 = OpVariable %_ptr_Function_v4float Function OpStore %_0_ok %true OpStore %_1_splat_4 %35 OpStore %_2_splat_2 %39 OpStore %_3_m %44 %320 = OpFAdd %v3float %41 %34 %321 = OpFAdd %v3float %42 %34 %322 = OpFAdd %v3float %43 %34 %323 = OpCompositeConstruct %mat3v3float %320 %321 %322 OpStore %_3_m %323 OpSelectionMerge %325 None OpBranchConditional %true %324 %325 %324 = OpLabel %326 = OpFOrdEqual %v3bool %320 %53 %327 = OpAll %bool %326 %328 = OpFOrdEqual %v3bool %321 %54 %329 = OpAll %bool %328 %330 = OpLogicalAnd %bool %327 %329 %331 = OpFOrdEqual %v3bool %322 %55 %332 = OpAll %bool %331 %333 = OpLogicalAnd %bool %330 %332 OpBranch %325 %325 = OpLabel %334 = OpPhi %bool %false %315 %333 %324 OpStore %_0_ok %334 OpStore %_3_m %44 %335 = OpFSub %v3float %41 %34 %336 = OpFSub %v3float %42 %34 %337 = OpFSub %v3float %43 %34 %338 = OpCompositeConstruct %mat3v3float %335 %336 %337 OpStore %_3_m %338 OpSelectionMerge %340 None OpBranchConditional %334 %339 %340 %339 = OpLabel %341 = OpFOrdEqual %v3bool %335 %75 %342 = OpAll %bool %341 %343 = OpFOrdEqual %v3bool %336 %76 %344 = OpAll %bool %343 %345 = OpLogicalAnd %bool %342 %344 %346 = OpFOrdEqual %v3bool %337 %77 %347 = OpAll %bool %346 %348 = OpLogicalAnd %bool %345 %347 OpBranch %340 %340 = OpLabel %349 = OpPhi %bool %false %325 %348 %339 OpStore %_0_ok %349 OpStore %_3_m %44 %350 = OpFDiv %v3float %41 %34 %351 = OpFDiv %v3float %42 %34 %352 = OpFDiv %v3float %43 %34 %353 = OpCompositeConstruct %mat3v3float %350 %351 %352 OpStore %_3_m %353 OpSelectionMerge %355 None OpBranchConditional %349 %354 %355 %354 = OpLabel %356 = OpFOrdEqual %v3bool %350 %95 %357 = OpAll %bool %356 %358 = OpFOrdEqual %v3bool %351 %96 %359 = OpAll %bool %358 %360 = OpLogicalAnd %bool %357 %359 %361 = OpFOrdEqual %v3bool %352 %97 %362 = OpAll %bool %361 %363 = OpLogicalAnd %bool %360 %362 OpBranch %355 %355 = OpLabel %364 = OpPhi %bool %false %340 %363 %354 OpStore %_0_ok %364 OpStore %_3_m %35 %365 = OpFAdd %v3float %34 %41 %366 = OpFAdd %v3float %34 %42 %367 = OpFAdd %v3float %34 %43 %368 = OpCompositeConstruct %mat3v3float %365 %366 %367 OpStore %_3_m %368 OpSelectionMerge %370 None OpBranchConditional %364 %369 %370 %369 = OpLabel %371 = OpFOrdEqual %v3bool %365 %53 %372 = OpAll %bool %371 %373 = OpFOrdEqual %v3bool %366 %54 %374 = OpAll %bool %373 %375 = OpLogicalAnd %bool %372 %374 %376 = OpFOrdEqual %v3bool %367 %55 %377 = OpAll %bool %376 %378 = OpLogicalAnd %bool %375 %377 OpBranch %370 %370 = OpLabel %379 = OpPhi %bool %false %355 %378 %369 OpStore %_0_ok %379 OpStore %_3_m %35 %380 = OpFSub %v3float %34 %41 %381 = OpFSub %v3float %34 %42 %382 = OpFSub %v3float %34 %43 %383 = OpCompositeConstruct %mat3v3float %380 %381 %382 OpStore %_3_m %383 OpSelectionMerge %385 None OpBranchConditional %379 %384 %385 %384 = OpLabel %386 = OpFOrdEqual %v3bool %380 %129 %387 = OpAll %bool %386 %388 = OpFOrdEqual %v3bool %381 %130 %389 = OpAll %bool %388 %390 = OpLogicalAnd %bool %387 %389 %391 = OpFOrdEqual %v3bool %382 %131 %392 = OpAll %bool %391 %393 = OpLogicalAnd %bool %390 %392 OpBranch %385 %385 = OpLabel %394 = OpPhi %bool %false %370 %393 %384 OpStore %_0_ok %394 OpStore %_3_m %35 %395 = OpFDiv %v3float %34 %38 %396 = OpFDiv %v3float %34 %38 %397 = OpFDiv %v3float %34 %38 %398 = OpCompositeConstruct %mat3v3float %395 %396 %397 OpStore %_3_m %398 OpSelectionMerge %400 None OpBranchConditional %394 %399 %400 %399 = OpLabel %401 = OpFOrdEqual %v3bool %395 %38 %402 = OpAll %bool %401 %403 = OpFOrdEqual %v3bool %396 %38 %404 = OpAll %bool %403 %405 = OpLogicalAnd %bool %402 %404 %406 = OpFOrdEqual %v3bool %397 %38 %407 = OpAll %bool %406 %408 = OpLogicalAnd %bool %405 %407 OpBranch %400 %400 = OpLabel %409 = OpPhi %bool %false %385 %408 %399 OpStore %_0_ok %409 OpStore %_4_m %177 %411 = OpFAdd %v4float %173 %178 %412 = OpFAdd %v4float %174 %179 %413 = OpFAdd %v4float %175 %180 %414 = OpFAdd %v4float %176 %181 %415 = OpCompositeConstruct %mat4v4float %411 %412 %413 %414 OpStore %_4_m %415 OpSelectionMerge %417 None OpBranchConditional %409 %416 %417 %416 = OpLabel %418 = OpFOrdEqual %v4bool %411 %191 %419 = OpAll %bool %418 %420 = OpFOrdEqual %v4bool %412 %191 %421 = OpAll %bool %420 %422 = OpLogicalAnd %bool %419 %421 %423 = OpFOrdEqual %v4bool %413 %191 %424 = OpAll %bool %423 %425 = OpLogicalAnd %bool %422 %424 %426 = OpFOrdEqual %v4bool %414 %191 %427 = OpAll %bool %426 %428 = OpLogicalAnd %bool %425 %427 OpBranch %417 %417 = OpLabel %429 = OpPhi %bool %false %400 %428 %416 OpStore %_0_ok %429 OpStore %_5_m %214 %431 = OpFSub %v2float %212 %215 %432 = OpFSub %v2float %213 %216 %433 = OpCompositeConstruct %mat2v2float %431 %432 OpStore %_5_m %433 OpSelectionMerge %435 None OpBranchConditional %429 %434 %435 %434 = OpLabel %436 = OpFOrdEqual %v2bool %431 %226 %437 = OpAll %bool %436 %438 = OpFOrdEqual %v2bool %432 %227 %439 = OpAll %bool %438 %440 = OpLogicalAnd %bool %437 %439 OpBranch %435 %435 = OpLabel %441 = OpPhi %bool %false %417 %440 %434 OpStore %_0_ok %441 OpStore %_6_m %239 %443 = OpFDiv %v2float %237 %240 %444 = OpFDiv %v2float %238 %237 %445 = OpCompositeConstruct %mat2v2float %443 %444 OpStore %_6_m %445 OpSelectionMerge %447 None OpBranchConditional %441 %446 %447 %446 = OpLabel %448 = OpFOrdEqual %v2bool %443 %215 %449 = OpAll %bool %448 %450 = OpFOrdEqual %v2bool %444 %247 %451 = OpAll %bool %450 %452 = OpLogicalAnd %bool %449 %451 OpBranch %447 %447 = OpLabel %453 = OpPhi %bool %false %435 %452 %446 OpStore %_0_ok %453 OpStore %_7_m %257 %455 = OpMatrixTimesMatrix %mat2v2float %257 %259 OpStore %_7_m %455 OpSelectionMerge %457 None OpBranchConditional %453 %456 %457 %456 = OpLabel %458 = OpCompositeExtract %v2float %455 0 %459 = OpFOrdEqual %v2bool %458 %265 %460 = OpAll %bool %459 %461 = OpCompositeExtract %v2float %455 1 %462 = OpFOrdEqual %v2bool %461 %266 %463 = OpAll %bool %462 %464 = OpLogicalAnd %bool %460 %463 OpBranch %457 %457 = OpLabel %465 = OpPhi %bool %false %447 %464 %456 OpStore %_0_ok %465 OpStore %_8_m %280 %467 = OpMatrixTimesMatrix %mat3v3float %280 %284 OpStore %_8_m %467 OpSelectionMerge %469 None OpBranchConditional %465 %468 %469 %468 = OpLabel %470 = OpCompositeExtract %v3float %467 0 %471 = OpFOrdEqual %v3bool %470 %297 %472 = OpAll %bool %471 %473 = OpCompositeExtract %v3float %467 1 %474 = OpFOrdEqual %v3bool %473 %298 %475 = OpAll %bool %474 %476 = OpLogicalAnd %bool %472 %475 %477 = OpCompositeExtract %v3float %467 2 %478 = OpFOrdEqual %v3bool %477 %299 %479 = OpAll %bool %478 %480 = OpLogicalAnd %bool %476 %479 OpBranch %469 %469 = OpLabel %481 = OpPhi %bool %false %457 %480 %468 OpStore %_0_ok %481 OpSelectionMerge %483 None OpBranchConditional %481 %482 %483 %482 = OpLabel %484 = OpFunctionCall %bool %test_matrix_op_matrix_half_b OpBranch %483 %483 = OpLabel %485 = OpPhi %bool %false %469 %484 %482 OpSelectionMerge %490 None OpBranchConditional %485 %488 %489 %488 = OpLabel %491 = OpAccessChain %_ptr_Uniform_v4float %11 %int_1 %495 = OpLoad %v4float %491 OpStore %486 %495 OpBranch %490 %489 = OpLabel %496 = OpAccessChain %_ptr_Uniform_v4float %11 %int_0 %498 = OpLoad %v4float %496 OpStore %486 %498 OpBranch %490 %490 = OpLabel %499 = OpLoad %v4float %486 OpReturnValue %499 OpFunctionEnd