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 %m "m" OpName %splat_4_0 "splat_4" 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_m "_2_m" OpName %_3_splat_4 "_3_splat_4" 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 %m RelaxedPrecision OpDecorate %40 RelaxedPrecision OpDecorate %41 RelaxedPrecision OpDecorate %42 RelaxedPrecision OpDecorate %43 RelaxedPrecision OpDecorate %52 RelaxedPrecision OpDecorate %54 RelaxedPrecision OpDecorate %57 RelaxedPrecision OpDecorate %61 RelaxedPrecision OpDecorate %62 RelaxedPrecision OpDecorate %63 RelaxedPrecision OpDecorate %64 RelaxedPrecision OpDecorate %73 RelaxedPrecision OpDecorate %75 RelaxedPrecision OpDecorate %78 RelaxedPrecision OpDecorate %82 RelaxedPrecision OpDecorate %83 RelaxedPrecision OpDecorate %84 RelaxedPrecision OpDecorate %85 RelaxedPrecision OpDecorate %92 RelaxedPrecision OpDecorate %94 RelaxedPrecision OpDecorate %97 RelaxedPrecision OpDecorate %splat_4_0 RelaxedPrecision OpDecorate %m_0 RelaxedPrecision OpDecorate %111 RelaxedPrecision OpDecorate %112 RelaxedPrecision OpDecorate %113 RelaxedPrecision OpDecorate %120 RelaxedPrecision OpDecorate %122 RelaxedPrecision OpDecorate %126 RelaxedPrecision OpDecorate %127 RelaxedPrecision OpDecorate %128 RelaxedPrecision OpDecorate %134 RelaxedPrecision OpDecorate %136 RelaxedPrecision OpDecorate %142 RelaxedPrecision OpDecorate %143 RelaxedPrecision OpDecorate %144 RelaxedPrecision OpDecorate %147 RelaxedPrecision OpDecorate %149 RelaxedPrecision OpDecorate %m_1 RelaxedPrecision OpDecorate %179 RelaxedPrecision OpDecorate %180 RelaxedPrecision OpDecorate %181 RelaxedPrecision OpDecorate %182 RelaxedPrecision OpDecorate %183 RelaxedPrecision OpDecorate %189 RelaxedPrecision OpDecorate %191 RelaxedPrecision OpDecorate %194 RelaxedPrecision OpDecorate %197 RelaxedPrecision OpDecorate %m_2 RelaxedPrecision OpDecorate %221 RelaxedPrecision OpDecorate %222 RelaxedPrecision OpDecorate %223 RelaxedPrecision OpDecorate %224 RelaxedPrecision OpDecorate %225 RelaxedPrecision OpDecorate %240 RelaxedPrecision OpDecorate %242 RelaxedPrecision OpDecorate %245 RelaxedPrecision OpDecorate %248 RelaxedPrecision OpDecorate %m_3 RelaxedPrecision OpDecorate %260 RelaxedPrecision OpDecorate %261 RelaxedPrecision OpDecorate %262 RelaxedPrecision OpDecorate %269 RelaxedPrecision OpDecorate %271 RelaxedPrecision OpDecorate %m_4 RelaxedPrecision OpDecorate %283 RelaxedPrecision OpDecorate %294 RelaxedPrecision OpDecorate %295 RelaxedPrecision OpDecorate %297 RelaxedPrecision OpDecorate %298 RelaxedPrecision OpDecorate %465 RelaxedPrecision OpDecorate %468 RelaxedPrecision OpDecorate %469 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 %mat3v2float = OpTypeMatrix %v2float 3 %_ptr_Function_mat3v2float = OpTypePointer Function %mat3v2float %float_4 = OpConstant %float 4 %33 = OpConstantComposite %v2float %float_4 %float_4 %34 = OpConstantComposite %mat3v2float %33 %33 %33 %float_2 = OpConstant %float 2 %37 = OpConstantComposite %v2float %float_2 %float_0 %38 = OpConstantComposite %v2float %float_0 %float_2 %39 = OpConstantComposite %mat3v2float %37 %38 %20 %false = OpConstantFalse %bool %float_6 = OpConstant %float 6 %48 = OpConstantComposite %v2float %float_6 %float_4 %49 = OpConstantComposite %v2float %float_4 %float_6 %50 = OpConstantComposite %mat3v2float %48 %49 %33 %v2bool = OpTypeVector %bool 2 %float_n2 = OpConstant %float -2 %float_n4 = OpConstant %float -4 %69 = OpConstantComposite %v2float %float_n2 %float_n4 %70 = OpConstantComposite %v2float %float_n4 %float_n2 %71 = OpConstantComposite %v2float %float_n4 %float_n4 %72 = OpConstantComposite %mat3v2float %69 %70 %71 %float_0_5 = OpConstant %float 0.5 %89 = OpConstantComposite %v2float %float_0_5 %float_0 %90 = OpConstantComposite %v2float %float_0 %float_0_5 %91 = OpConstantComposite %mat3v2float %89 %90 %20 %v3float = OpTypeVector %float 3 %mat2v3float = OpTypeMatrix %v3float 2 %_ptr_Function_mat2v3float = OpTypePointer Function %mat2v3float %105 = OpConstantComposite %v3float %float_4 %float_4 %float_4 %106 = OpConstantComposite %mat2v3float %105 %105 %108 = OpConstantComposite %v3float %float_2 %float_0 %float_0 %109 = OpConstantComposite %v3float %float_0 %float_2 %float_0 %110 = OpConstantComposite %mat2v3float %108 %109 %116 = OpConstantComposite %v3float %float_6 %float_4 %float_4 %117 = OpConstantComposite %v3float %float_4 %float_6 %float_4 %118 = OpConstantComposite %mat2v3float %116 %117 %v3bool = OpTypeVector %bool 3 %131 = OpConstantComposite %v3float %float_2 %float_4 %float_4 %132 = OpConstantComposite %v3float %float_4 %float_2 %float_4 %133 = OpConstantComposite %mat2v3float %131 %132 %140 = OpConstantComposite %v3float %float_2 %float_2 %float_2 %141 = OpConstantComposite %mat2v3float %140 %140 %mat4v3float = OpTypeMatrix %v3float 4 %_ptr_Function_mat4v3float = OpTypePointer Function %mat4v3float %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 %165 = OpConstantComposite %v3float %float_1 %float_2 %float_3 %166 = OpConstantComposite %v3float %float_4 %float_5 %float_6 %167 = OpConstantComposite %v3float %float_7 %float_8 %float_9 %168 = OpConstantComposite %v3float %float_10 %float_11 %float_12 %169 = OpConstantComposite %mat4v3float %165 %166 %167 %168 %float_16 = OpConstant %float 16 %float_15 = OpConstant %float 15 %float_14 = OpConstant %float 14 %float_13 = OpConstant %float 13 %174 = OpConstantComposite %v3float %float_16 %float_15 %float_14 %175 = OpConstantComposite %v3float %float_13 %float_12 %float_11 %176 = OpConstantComposite %v3float %float_10 %float_9 %float_8 %177 = OpConstantComposite %v3float %float_7 %float_6 %float_5 %178 = OpConstantComposite %mat4v3float %174 %175 %176 %177 %float_17 = OpConstant %float 17 %187 = OpConstantComposite %v3float %float_17 %float_17 %float_17 %188 = OpConstantComposite %mat4v3float %187 %187 %187 %187 %mat4v2float = OpTypeMatrix %v2float 4 %_ptr_Function_mat4v2float = OpTypePointer Function %mat4v2float %float_20 = OpConstant %float 20 %float_30 = OpConstant %float 30 %float_40 = OpConstant %float 40 %float_50 = OpConstant %float 50 %float_60 = OpConstant %float 60 %float_70 = OpConstant %float 70 %float_80 = OpConstant %float 80 %211 = OpConstantComposite %v2float %float_10 %float_20 %212 = OpConstantComposite %v2float %float_30 %float_40 %213 = OpConstantComposite %v2float %float_50 %float_60 %214 = OpConstantComposite %v2float %float_70 %float_80 %215 = OpConstantComposite %mat4v2float %211 %212 %213 %214 %216 = OpConstantComposite %v2float %float_1 %float_2 %217 = OpConstantComposite %v2float %float_3 %float_4 %218 = OpConstantComposite %v2float %float_5 %float_6 %219 = OpConstantComposite %v2float %float_7 %float_8 %220 = OpConstantComposite %mat4v2float %216 %217 %218 %219 %float_18 = OpConstant %float 18 %float_27 = OpConstant %float 27 %float_36 = OpConstant %float 36 %float_45 = OpConstant %float 45 %float_54 = OpConstant %float 54 %float_63 = OpConstant %float 63 %float_72 = OpConstant %float 72 %235 = OpConstantComposite %v2float %float_9 %float_18 %236 = OpConstantComposite %v2float %float_27 %float_36 %237 = OpConstantComposite %v2float %float_45 %float_54 %238 = OpConstantComposite %v2float %float_63 %float_72 %239 = OpConstantComposite %mat4v2float %235 %236 %237 %238 %mat2v4float = OpTypeMatrix %v4float 2 %_ptr_Function_mat2v4float = OpTypePointer Function %mat2v4float %255 = OpConstantComposite %v4float %float_10 %float_20 %float_30 %float_40 %256 = OpConstantComposite %mat2v4float %255 %255 %257 = OpConstantComposite %v4float %float_10 %float_10 %float_10 %float_10 %258 = OpConstantComposite %v4float %float_5 %float_5 %float_5 %float_5 %259 = OpConstantComposite %mat2v4float %257 %258 %265 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4 %266 = OpConstantComposite %v4float %float_2 %float_4 %float_6 %float_8 %267 = OpConstantComposite %mat2v4float %265 %266 %v4bool = OpTypeVector %bool 4 %276 = OpConstantComposite %v3float %float_7 %float_9 %float_11 %277 = OpConstantComposite %v3float %float_8 %float_10 %float_12 %278 = OpConstantComposite %mat2v3float %276 %277 %279 = OpConstantComposite %v2float %float_1 %float_4 %280 = OpConstantComposite %v2float %float_2 %float_5 %mat2v2float = OpTypeMatrix %v2float 2 %282 = OpConstantComposite %mat2v2float %279 %280 %float_39 = OpConstant %float 39 %float_49 = OpConstant %float 49 %float_59 = OpConstant %float 59 %float_68 = OpConstant %float 68 %float_82 = OpConstant %float 82 %291 = OpConstantComposite %v3float %float_39 %float_49 %float_59 %292 = OpConstantComposite %v3float %float_54 %float_68 %float_82 %293 = OpConstantComposite %mat2v3float %291 %292 %302 = 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_mat3v2float Function %m = OpVariable %_ptr_Function_mat3v2float Function %splat_4_0 = OpVariable %_ptr_Function_mat2v3float Function %m_0 = OpVariable %_ptr_Function_mat2v3float Function %m_1 = OpVariable %_ptr_Function_mat4v3float Function %m_2 = OpVariable %_ptr_Function_mat4v2float Function %m_3 = OpVariable %_ptr_Function_mat2v4float Function %m_4 = OpVariable %_ptr_Function_mat2v3float Function OpStore %ok %true OpStore %splat_4 %34 OpStore %m %39 %40 = OpFAdd %v2float %37 %33 %41 = OpFAdd %v2float %38 %33 %42 = OpFAdd %v2float %20 %33 %43 = OpCompositeConstruct %mat3v2float %40 %41 %42 OpStore %m %43 OpSelectionMerge %46 None OpBranchConditional %true %45 %46 %45 = OpLabel %52 = OpFOrdEqual %v2bool %40 %48 %53 = OpAll %bool %52 %54 = OpFOrdEqual %v2bool %41 %49 %55 = OpAll %bool %54 %56 = OpLogicalAnd %bool %53 %55 %57 = OpFOrdEqual %v2bool %42 %33 %58 = OpAll %bool %57 %59 = OpLogicalAnd %bool %56 %58 OpBranch %46 %46 = OpLabel %60 = OpPhi %bool %false %25 %59 %45 OpStore %ok %60 OpStore %m %39 %61 = OpFSub %v2float %37 %33 %62 = OpFSub %v2float %38 %33 %63 = OpFSub %v2float %20 %33 %64 = OpCompositeConstruct %mat3v2float %61 %62 %63 OpStore %m %64 OpSelectionMerge %66 None OpBranchConditional %60 %65 %66 %65 = OpLabel %73 = OpFOrdEqual %v2bool %61 %69 %74 = OpAll %bool %73 %75 = OpFOrdEqual %v2bool %62 %70 %76 = OpAll %bool %75 %77 = OpLogicalAnd %bool %74 %76 %78 = OpFOrdEqual %v2bool %63 %71 %79 = OpAll %bool %78 %80 = OpLogicalAnd %bool %77 %79 OpBranch %66 %66 = OpLabel %81 = OpPhi %bool %false %46 %80 %65 OpStore %ok %81 OpStore %m %39 %82 = OpFDiv %v2float %37 %33 %83 = OpFDiv %v2float %38 %33 %84 = OpFDiv %v2float %20 %33 %85 = OpCompositeConstruct %mat3v2float %82 %83 %84 OpStore %m %85 OpSelectionMerge %87 None OpBranchConditional %81 %86 %87 %86 = OpLabel %92 = OpFOrdEqual %v2bool %82 %89 %93 = OpAll %bool %92 %94 = OpFOrdEqual %v2bool %83 %90 %95 = OpAll %bool %94 %96 = OpLogicalAnd %bool %93 %95 %97 = OpFOrdEqual %v2bool %84 %20 %98 = OpAll %bool %97 %99 = OpLogicalAnd %bool %96 %98 OpBranch %87 %87 = OpLabel %100 = OpPhi %bool %false %66 %99 %86 OpStore %ok %100 OpStore %splat_4_0 %106 OpStore %m_0 %106 %111 = OpFAdd %v3float %105 %108 %112 = OpFAdd %v3float %105 %109 %113 = OpCompositeConstruct %mat2v3float %111 %112 OpStore %m_0 %113 OpSelectionMerge %115 None OpBranchConditional %100 %114 %115 %114 = OpLabel %120 = OpFOrdEqual %v3bool %111 %116 %121 = OpAll %bool %120 %122 = OpFOrdEqual %v3bool %112 %117 %123 = OpAll %bool %122 %124 = OpLogicalAnd %bool %121 %123 OpBranch %115 %115 = OpLabel %125 = OpPhi %bool %false %87 %124 %114 OpStore %ok %125 OpStore %m_0 %106 %126 = OpFSub %v3float %105 %108 %127 = OpFSub %v3float %105 %109 %128 = OpCompositeConstruct %mat2v3float %126 %127 OpStore %m_0 %128 OpSelectionMerge %130 None OpBranchConditional %125 %129 %130 %129 = OpLabel %134 = OpFOrdEqual %v3bool %126 %131 %135 = OpAll %bool %134 %136 = OpFOrdEqual %v3bool %127 %132 %137 = OpAll %bool %136 %138 = OpLogicalAnd %bool %135 %137 OpBranch %130 %130 = OpLabel %139 = OpPhi %bool %false %115 %138 %129 OpStore %ok %139 OpStore %m_0 %106 %142 = OpFDiv %v3float %105 %140 %143 = OpFDiv %v3float %105 %140 %144 = OpCompositeConstruct %mat2v3float %142 %143 OpStore %m_0 %144 OpSelectionMerge %146 None OpBranchConditional %139 %145 %146 %145 = OpLabel %147 = OpFOrdEqual %v3bool %142 %140 %148 = OpAll %bool %147 %149 = OpFOrdEqual %v3bool %143 %140 %150 = OpAll %bool %149 %151 = OpLogicalAnd %bool %148 %150 OpBranch %146 %146 = OpLabel %152 = OpPhi %bool %false %130 %151 %145 OpStore %ok %152 OpStore %m_1 %169 %179 = OpFAdd %v3float %165 %174 %180 = OpFAdd %v3float %166 %175 %181 = OpFAdd %v3float %167 %176 %182 = OpFAdd %v3float %168 %177 %183 = OpCompositeConstruct %mat4v3float %179 %180 %181 %182 OpStore %m_1 %183 OpSelectionMerge %185 None OpBranchConditional %152 %184 %185 %184 = OpLabel %189 = OpFOrdEqual %v3bool %179 %187 %190 = OpAll %bool %189 %191 = OpFOrdEqual %v3bool %180 %187 %192 = OpAll %bool %191 %193 = OpLogicalAnd %bool %190 %192 %194 = OpFOrdEqual %v3bool %181 %187 %195 = OpAll %bool %194 %196 = OpLogicalAnd %bool %193 %195 %197 = OpFOrdEqual %v3bool %182 %187 %198 = OpAll %bool %197 %199 = OpLogicalAnd %bool %196 %198 OpBranch %185 %185 = OpLabel %200 = OpPhi %bool %false %146 %199 %184 OpStore %ok %200 OpStore %m_2 %215 %221 = OpFSub %v2float %211 %216 %222 = OpFSub %v2float %212 %217 %223 = OpFSub %v2float %213 %218 %224 = OpFSub %v2float %214 %219 %225 = OpCompositeConstruct %mat4v2float %221 %222 %223 %224 OpStore %m_2 %225 OpSelectionMerge %227 None OpBranchConditional %200 %226 %227 %226 = OpLabel %240 = OpFOrdEqual %v2bool %221 %235 %241 = OpAll %bool %240 %242 = OpFOrdEqual %v2bool %222 %236 %243 = OpAll %bool %242 %244 = OpLogicalAnd %bool %241 %243 %245 = OpFOrdEqual %v2bool %223 %237 %246 = OpAll %bool %245 %247 = OpLogicalAnd %bool %244 %246 %248 = OpFOrdEqual %v2bool %224 %238 %249 = OpAll %bool %248 %250 = OpLogicalAnd %bool %247 %249 OpBranch %227 %227 = OpLabel %251 = OpPhi %bool %false %185 %250 %226 OpStore %ok %251 OpStore %m_3 %256 %260 = OpFDiv %v4float %255 %257 %261 = OpFDiv %v4float %255 %258 %262 = OpCompositeConstruct %mat2v4float %260 %261 OpStore %m_3 %262 OpSelectionMerge %264 None OpBranchConditional %251 %263 %264 %263 = OpLabel %269 = OpFOrdEqual %v4bool %260 %265 %270 = OpAll %bool %269 %271 = OpFOrdEqual %v4bool %261 %266 %272 = OpAll %bool %271 %273 = OpLogicalAnd %bool %270 %272 OpBranch %264 %264 = OpLabel %274 = OpPhi %bool %false %227 %273 %263 OpStore %ok %274 OpStore %m_4 %278 %283 = OpMatrixTimesMatrix %mat2v3float %278 %282 OpStore %m_4 %283 OpSelectionMerge %285 None OpBranchConditional %274 %284 %285 %284 = OpLabel %294 = OpCompositeExtract %v3float %283 0 %295 = OpFOrdEqual %v3bool %294 %291 %296 = OpAll %bool %295 %297 = OpCompositeExtract %v3float %283 1 %298 = OpFOrdEqual %v3bool %297 %292 %299 = OpAll %bool %298 %300 = OpLogicalAnd %bool %296 %299 OpBranch %285 %285 = OpLabel %301 = OpPhi %bool %false %264 %300 %284 OpStore %ok %301 OpReturnValue %301 OpFunctionEnd %main = OpFunction %v4float None %302 %303 = OpFunctionParameter %_ptr_Function_v2float %304 = OpLabel %_0_ok = OpVariable %_ptr_Function_bool Function %_1_splat_4 = OpVariable %_ptr_Function_mat3v2float Function %_2_m = OpVariable %_ptr_Function_mat3v2float Function %_3_splat_4 = OpVariable %_ptr_Function_mat2v3float Function %_4_m = OpVariable %_ptr_Function_mat2v3float Function %_5_m = OpVariable %_ptr_Function_mat4v3float Function %_6_m = OpVariable %_ptr_Function_mat4v2float Function %_7_m = OpVariable %_ptr_Function_mat2v4float Function %_8_m = OpVariable %_ptr_Function_mat2v3float Function %456 = OpVariable %_ptr_Function_v4float Function OpStore %_0_ok %true OpStore %_1_splat_4 %34 OpStore %_2_m %39 %308 = OpFAdd %v2float %37 %33 %309 = OpFAdd %v2float %38 %33 %310 = OpFAdd %v2float %20 %33 %311 = OpCompositeConstruct %mat3v2float %308 %309 %310 OpStore %_2_m %311 OpSelectionMerge %313 None OpBranchConditional %true %312 %313 %312 = OpLabel %314 = OpFOrdEqual %v2bool %308 %48 %315 = OpAll %bool %314 %316 = OpFOrdEqual %v2bool %309 %49 %317 = OpAll %bool %316 %318 = OpLogicalAnd %bool %315 %317 %319 = OpFOrdEqual %v2bool %310 %33 %320 = OpAll %bool %319 %321 = OpLogicalAnd %bool %318 %320 OpBranch %313 %313 = OpLabel %322 = OpPhi %bool %false %304 %321 %312 OpStore %_0_ok %322 OpStore %_2_m %39 %323 = OpFSub %v2float %37 %33 %324 = OpFSub %v2float %38 %33 %325 = OpFSub %v2float %20 %33 %326 = OpCompositeConstruct %mat3v2float %323 %324 %325 OpStore %_2_m %326 OpSelectionMerge %328 None OpBranchConditional %322 %327 %328 %327 = OpLabel %329 = OpFOrdEqual %v2bool %323 %69 %330 = OpAll %bool %329 %331 = OpFOrdEqual %v2bool %324 %70 %332 = OpAll %bool %331 %333 = OpLogicalAnd %bool %330 %332 %334 = OpFOrdEqual %v2bool %325 %71 %335 = OpAll %bool %334 %336 = OpLogicalAnd %bool %333 %335 OpBranch %328 %328 = OpLabel %337 = OpPhi %bool %false %313 %336 %327 OpStore %_0_ok %337 OpStore %_2_m %39 %338 = OpFDiv %v2float %37 %33 %339 = OpFDiv %v2float %38 %33 %340 = OpFDiv %v2float %20 %33 %341 = OpCompositeConstruct %mat3v2float %338 %339 %340 OpStore %_2_m %341 OpSelectionMerge %343 None OpBranchConditional %337 %342 %343 %342 = OpLabel %344 = OpFOrdEqual %v2bool %338 %89 %345 = OpAll %bool %344 %346 = OpFOrdEqual %v2bool %339 %90 %347 = OpAll %bool %346 %348 = OpLogicalAnd %bool %345 %347 %349 = OpFOrdEqual %v2bool %340 %20 %350 = OpAll %bool %349 %351 = OpLogicalAnd %bool %348 %350 OpBranch %343 %343 = OpLabel %352 = OpPhi %bool %false %328 %351 %342 OpStore %_0_ok %352 OpStore %_3_splat_4 %106 OpStore %_4_m %106 %355 = OpFAdd %v3float %105 %108 %356 = OpFAdd %v3float %105 %109 %357 = OpCompositeConstruct %mat2v3float %355 %356 OpStore %_4_m %357 OpSelectionMerge %359 None OpBranchConditional %352 %358 %359 %358 = OpLabel %360 = OpFOrdEqual %v3bool %355 %116 %361 = OpAll %bool %360 %362 = OpFOrdEqual %v3bool %356 %117 %363 = OpAll %bool %362 %364 = OpLogicalAnd %bool %361 %363 OpBranch %359 %359 = OpLabel %365 = OpPhi %bool %false %343 %364 %358 OpStore %_0_ok %365 OpStore %_4_m %106 %366 = OpFSub %v3float %105 %108 %367 = OpFSub %v3float %105 %109 %368 = OpCompositeConstruct %mat2v3float %366 %367 OpStore %_4_m %368 OpSelectionMerge %370 None OpBranchConditional %365 %369 %370 %369 = OpLabel %371 = OpFOrdEqual %v3bool %366 %131 %372 = OpAll %bool %371 %373 = OpFOrdEqual %v3bool %367 %132 %374 = OpAll %bool %373 %375 = OpLogicalAnd %bool %372 %374 OpBranch %370 %370 = OpLabel %376 = OpPhi %bool %false %359 %375 %369 OpStore %_0_ok %376 OpStore %_4_m %106 %377 = OpFDiv %v3float %105 %140 %378 = OpFDiv %v3float %105 %140 %379 = OpCompositeConstruct %mat2v3float %377 %378 OpStore %_4_m %379 OpSelectionMerge %381 None OpBranchConditional %376 %380 %381 %380 = OpLabel %382 = OpFOrdEqual %v3bool %377 %140 %383 = OpAll %bool %382 %384 = OpFOrdEqual %v3bool %378 %140 %385 = OpAll %bool %384 %386 = OpLogicalAnd %bool %383 %385 OpBranch %381 %381 = OpLabel %387 = OpPhi %bool %false %370 %386 %380 OpStore %_0_ok %387 OpStore %_5_m %169 %389 = OpFAdd %v3float %165 %174 %390 = OpFAdd %v3float %166 %175 %391 = OpFAdd %v3float %167 %176 %392 = OpFAdd %v3float %168 %177 %393 = OpCompositeConstruct %mat4v3float %389 %390 %391 %392 OpStore %_5_m %393 OpSelectionMerge %395 None OpBranchConditional %387 %394 %395 %394 = OpLabel %396 = OpFOrdEqual %v3bool %389 %187 %397 = OpAll %bool %396 %398 = OpFOrdEqual %v3bool %390 %187 %399 = OpAll %bool %398 %400 = OpLogicalAnd %bool %397 %399 %401 = OpFOrdEqual %v3bool %391 %187 %402 = OpAll %bool %401 %403 = OpLogicalAnd %bool %400 %402 %404 = OpFOrdEqual %v3bool %392 %187 %405 = OpAll %bool %404 %406 = OpLogicalAnd %bool %403 %405 OpBranch %395 %395 = OpLabel %407 = OpPhi %bool %false %381 %406 %394 OpStore %_0_ok %407 OpStore %_6_m %215 %409 = OpFSub %v2float %211 %216 %410 = OpFSub %v2float %212 %217 %411 = OpFSub %v2float %213 %218 %412 = OpFSub %v2float %214 %219 %413 = OpCompositeConstruct %mat4v2float %409 %410 %411 %412 OpStore %_6_m %413 OpSelectionMerge %415 None OpBranchConditional %407 %414 %415 %414 = OpLabel %416 = OpFOrdEqual %v2bool %409 %235 %417 = OpAll %bool %416 %418 = OpFOrdEqual %v2bool %410 %236 %419 = OpAll %bool %418 %420 = OpLogicalAnd %bool %417 %419 %421 = OpFOrdEqual %v2bool %411 %237 %422 = OpAll %bool %421 %423 = OpLogicalAnd %bool %420 %422 %424 = OpFOrdEqual %v2bool %412 %238 %425 = OpAll %bool %424 %426 = OpLogicalAnd %bool %423 %425 OpBranch %415 %415 = OpLabel %427 = OpPhi %bool %false %395 %426 %414 OpStore %_0_ok %427 OpStore %_7_m %256 %429 = OpFDiv %v4float %255 %257 %430 = OpFDiv %v4float %255 %258 %431 = OpCompositeConstruct %mat2v4float %429 %430 OpStore %_7_m %431 OpSelectionMerge %433 None OpBranchConditional %427 %432 %433 %432 = OpLabel %434 = OpFOrdEqual %v4bool %429 %265 %435 = OpAll %bool %434 %436 = OpFOrdEqual %v4bool %430 %266 %437 = OpAll %bool %436 %438 = OpLogicalAnd %bool %435 %437 OpBranch %433 %433 = OpLabel %439 = OpPhi %bool %false %415 %438 %432 OpStore %_0_ok %439 OpStore %_8_m %278 %441 = OpMatrixTimesMatrix %mat2v3float %278 %282 OpStore %_8_m %441 OpSelectionMerge %443 None OpBranchConditional %439 %442 %443 %442 = OpLabel %444 = OpCompositeExtract %v3float %441 0 %445 = OpFOrdEqual %v3bool %444 %291 %446 = OpAll %bool %445 %447 = OpCompositeExtract %v3float %441 1 %448 = OpFOrdEqual %v3bool %447 %292 %449 = OpAll %bool %448 %450 = OpLogicalAnd %bool %446 %449 OpBranch %443 %443 = OpLabel %451 = OpPhi %bool %false %433 %450 %442 OpStore %_0_ok %451 OpSelectionMerge %453 None OpBranchConditional %451 %452 %453 %452 = OpLabel %454 = OpFunctionCall %bool %test_matrix_op_matrix_half_b OpBranch %453 %453 = OpLabel %455 = OpPhi %bool %false %443 %454 %452 OpSelectionMerge %460 None OpBranchConditional %455 %458 %459 %458 = OpLabel %461 = OpAccessChain %_ptr_Uniform_v4float %11 %int_1 %465 = OpLoad %v4float %461 OpStore %456 %465 OpBranch %460 %459 = OpLabel %466 = OpAccessChain %_ptr_Uniform_v4float %11 %int_0 %468 = OpLoad %v4float %466 OpStore %456 %468 OpBranch %460 %460 = OpLabel %469 = OpLoad %v4float %456 OpReturnValue %469 OpFunctionEnd