1 OpCapability Shader 2 %1 = OpExtInstImport "GLSL.std.450" 3 OpMemoryModel Logical GLSL450 4 OpEntryPoint Fragment %_entrypoint_v "_entrypoint" %sk_FragColor 5 OpExecutionMode %_entrypoint_v OriginUpperLeft 6 OpName %sk_FragColor "sk_FragColor" 7 OpName %_UniformBuffer "_UniformBuffer" 8 OpMemberName %_UniformBuffer 0 "colorRed" 9 OpMemberName %_UniformBuffer 1 "colorGreen" 10 OpName %_entrypoint_v "_entrypoint_v" 11 OpName %test_matrix_op_matrix_half_b "test_matrix_op_matrix_half_b" 12 OpName %ok "ok" 13 OpName %splat_4 "splat_4" 14 OpName %splat_2 "splat_2" 15 OpName %m "m" 16 OpName %m_0 "m" 17 OpName %m_1 "m" 18 OpName %m_2 "m" 19 OpName %m_3 "m" 20 OpName %m_4 "m" 21 OpName %main "main" 22 OpName %_0_ok "_0_ok" 23 OpName %_1_splat_4 "_1_splat_4" 24 OpName %_2_splat_2 "_2_splat_2" 25 OpName %_3_m "_3_m" 26 OpName %_4_m "_4_m" 27 OpName %_5_m "_5_m" 28 OpName %_6_m "_6_m" 29 OpName %_7_m "_7_m" 30 OpName %_8_m "_8_m" 31 OpDecorate %sk_FragColor RelaxedPrecision 32 OpDecorate %sk_FragColor Location 0 33 OpDecorate %sk_FragColor Index 0 34 OpMemberDecorate %_UniformBuffer 0 Offset 0 35 OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision 36 OpMemberDecorate %_UniformBuffer 1 Offset 16 37 OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision 38 OpDecorate %_UniformBuffer Block 39 OpDecorate %8 Binding 0 40 OpDecorate %8 DescriptorSet 0 41 OpDecorate %splat_4 RelaxedPrecision 42 OpDecorate %splat_2 RelaxedPrecision 43 OpDecorate %m RelaxedPrecision 44 OpDecorate %43 RelaxedPrecision 45 OpDecorate %44 RelaxedPrecision 46 OpDecorate %45 RelaxedPrecision 47 OpDecorate %46 RelaxedPrecision 48 OpDecorate %56 RelaxedPrecision 49 OpDecorate %58 RelaxedPrecision 50 OpDecorate %61 RelaxedPrecision 51 OpDecorate %65 RelaxedPrecision 52 OpDecorate %66 RelaxedPrecision 53 OpDecorate %67 RelaxedPrecision 54 OpDecorate %68 RelaxedPrecision 55 OpDecorate %77 RelaxedPrecision 56 OpDecorate %79 RelaxedPrecision 57 OpDecorate %82 RelaxedPrecision 58 OpDecorate %86 RelaxedPrecision 59 OpDecorate %87 RelaxedPrecision 60 OpDecorate %88 RelaxedPrecision 61 OpDecorate %89 RelaxedPrecision 62 OpDecorate %97 RelaxedPrecision 63 OpDecorate %99 RelaxedPrecision 64 OpDecorate %102 RelaxedPrecision 65 OpDecorate %106 RelaxedPrecision 66 OpDecorate %107 RelaxedPrecision 67 OpDecorate %108 RelaxedPrecision 68 OpDecorate %109 RelaxedPrecision 69 OpDecorate %112 RelaxedPrecision 70 OpDecorate %114 RelaxedPrecision 71 OpDecorate %117 RelaxedPrecision 72 OpDecorate %121 RelaxedPrecision 73 OpDecorate %122 RelaxedPrecision 74 OpDecorate %123 RelaxedPrecision 75 OpDecorate %124 RelaxedPrecision 76 OpDecorate %131 RelaxedPrecision 77 OpDecorate %133 RelaxedPrecision 78 OpDecorate %136 RelaxedPrecision 79 OpDecorate %140 RelaxedPrecision 80 OpDecorate %141 RelaxedPrecision 81 OpDecorate %142 RelaxedPrecision 82 OpDecorate %143 RelaxedPrecision 83 OpDecorate %146 RelaxedPrecision 84 OpDecorate %148 RelaxedPrecision 85 OpDecorate %151 RelaxedPrecision 86 OpDecorate %m_0 RelaxedPrecision 87 OpDecorate %181 RelaxedPrecision 88 OpDecorate %182 RelaxedPrecision 89 OpDecorate %183 RelaxedPrecision 90 OpDecorate %184 RelaxedPrecision 91 OpDecorate %185 RelaxedPrecision 92 OpDecorate %192 RelaxedPrecision 93 OpDecorate %194 RelaxedPrecision 94 OpDecorate %197 RelaxedPrecision 95 OpDecorate %200 RelaxedPrecision 96 OpDecorate %m_1 RelaxedPrecision 97 OpDecorate %216 RelaxedPrecision 98 OpDecorate %217 RelaxedPrecision 99 OpDecorate %218 RelaxedPrecision 100 OpDecorate %228 RelaxedPrecision 101 OpDecorate %230 RelaxedPrecision 102 OpDecorate %m_2 RelaxedPrecision 103 OpDecorate %240 RelaxedPrecision 104 OpDecorate %241 RelaxedPrecision 105 OpDecorate %242 RelaxedPrecision 106 OpDecorate %247 RelaxedPrecision 107 OpDecorate %249 RelaxedPrecision 108 OpDecorate %m_3 RelaxedPrecision 109 OpDecorate %258 RelaxedPrecision 110 OpDecorate %266 RelaxedPrecision 111 OpDecorate %267 RelaxedPrecision 112 OpDecorate %269 RelaxedPrecision 113 OpDecorate %270 RelaxedPrecision 114 OpDecorate %m_4 RelaxedPrecision 115 OpDecorate %283 RelaxedPrecision 116 OpDecorate %299 RelaxedPrecision 117 OpDecorate %300 RelaxedPrecision 118 OpDecorate %302 RelaxedPrecision 119 OpDecorate %303 RelaxedPrecision 120 OpDecorate %306 RelaxedPrecision 121 OpDecorate %307 RelaxedPrecision 122 OpDecorate %493 RelaxedPrecision 123 OpDecorate %496 RelaxedPrecision 124 OpDecorate %497 RelaxedPrecision 125 %float = OpTypeFloat 32 126 %v4float = OpTypeVector %float 4 127%_ptr_Output_v4float = OpTypePointer Output %v4float 128%sk_FragColor = OpVariable %_ptr_Output_v4float Output 129%_UniformBuffer = OpTypeStruct %v4float %v4float 130%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer 131 %8 = OpVariable %_ptr_Uniform__UniformBuffer Uniform 132 %void = OpTypeVoid 133 %13 = OpTypeFunction %void 134 %float_0 = OpConstant %float 0 135 %v2float = OpTypeVector %float 2 136 %17 = OpConstantComposite %v2float %float_0 %float_0 137%_ptr_Function_v2float = OpTypePointer Function %v2float 138 %bool = OpTypeBool 139 %22 = OpTypeFunction %bool 140%_ptr_Function_bool = OpTypePointer Function %bool 141 %true = OpConstantTrue %bool 142 %v3float = OpTypeVector %float 3 143%mat3v3float = OpTypeMatrix %v3float 3 144%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float 145 %float_4 = OpConstant %float 4 146 %32 = OpConstantComposite %v3float %float_4 %float_4 %float_4 147 %33 = OpConstantComposite %mat3v3float %32 %32 %32 148 %float_2 = OpConstant %float 2 149 %36 = OpConstantComposite %v3float %float_2 %float_2 %float_2 150 %37 = OpConstantComposite %mat3v3float %36 %36 %36 151 %39 = OpConstantComposite %v3float %float_2 %float_0 %float_0 152 %40 = OpConstantComposite %v3float %float_0 %float_2 %float_0 153 %41 = OpConstantComposite %v3float %float_0 %float_0 %float_2 154 %42 = OpConstantComposite %mat3v3float %39 %40 %41 155 %false = OpConstantFalse %bool 156 %float_6 = OpConstant %float 6 157 %51 = OpConstantComposite %v3float %float_6 %float_4 %float_4 158 %52 = OpConstantComposite %v3float %float_4 %float_6 %float_4 159 %53 = OpConstantComposite %v3float %float_4 %float_4 %float_6 160 %54 = OpConstantComposite %mat3v3float %51 %52 %53 161 %v3bool = OpTypeVector %bool 3 162 %float_n2 = OpConstant %float -2 163 %float_n4 = OpConstant %float -4 164 %73 = OpConstantComposite %v3float %float_n2 %float_n4 %float_n4 165 %74 = OpConstantComposite %v3float %float_n4 %float_n2 %float_n4 166 %75 = OpConstantComposite %v3float %float_n4 %float_n4 %float_n2 167 %76 = OpConstantComposite %mat3v3float %73 %74 %75 168 %float_0_5 = OpConstant %float 0.5 169 %93 = OpConstantComposite %v3float %float_0_5 %float_0 %float_0 170 %94 = OpConstantComposite %v3float %float_0 %float_0_5 %float_0 171 %95 = OpConstantComposite %v3float %float_0 %float_0 %float_0_5 172 %96 = OpConstantComposite %mat3v3float %93 %94 %95 173 %127 = OpConstantComposite %v3float %float_2 %float_4 %float_4 174 %128 = OpConstantComposite %v3float %float_4 %float_2 %float_4 175 %129 = OpConstantComposite %v3float %float_4 %float_4 %float_2 176 %130 = OpConstantComposite %mat3v3float %127 %128 %129 177%mat4v4float = OpTypeMatrix %v4float 4 178%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float 179 %float_1 = OpConstant %float 1 180 %float_3 = OpConstant %float 3 181 %float_5 = OpConstant %float 5 182 %float_7 = OpConstant %float 7 183 %float_8 = OpConstant %float 8 184 %float_9 = OpConstant %float 9 185 %float_10 = OpConstant %float 10 186 %float_11 = OpConstant %float 11 187 %float_12 = OpConstant %float 12 188 %float_13 = OpConstant %float 13 189 %float_14 = OpConstant %float 14 190 %float_15 = OpConstant %float 15 191 %float_16 = OpConstant %float 16 192 %171 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4 193 %172 = OpConstantComposite %v4float %float_5 %float_6 %float_7 %float_8 194 %173 = OpConstantComposite %v4float %float_9 %float_10 %float_11 %float_12 195 %174 = OpConstantComposite %v4float %float_13 %float_14 %float_15 %float_16 196 %175 = OpConstantComposite %mat4v4float %171 %172 %173 %174 197 %176 = OpConstantComposite %v4float %float_16 %float_15 %float_14 %float_13 198 %177 = OpConstantComposite %v4float %float_12 %float_11 %float_10 %float_9 199 %178 = OpConstantComposite %v4float %float_8 %float_7 %float_6 %float_5 200 %179 = OpConstantComposite %v4float %float_4 %float_3 %float_2 %float_1 201 %180 = OpConstantComposite %mat4v4float %176 %177 %178 %179 202 %float_17 = OpConstant %float 17 203 %189 = OpConstantComposite %v4float %float_17 %float_17 %float_17 %float_17 204 %190 = OpConstantComposite %mat4v4float %189 %189 %189 %189 205 %v4bool = OpTypeVector %bool 4 206%mat2v2float = OpTypeMatrix %v2float 2 207%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float 208 %float_20 = OpConstant %float 20 209 %float_30 = OpConstant %float 30 210 %float_40 = OpConstant %float 40 211 %210 = OpConstantComposite %v2float %float_10 %float_20 212 %211 = OpConstantComposite %v2float %float_30 %float_40 213 %212 = OpConstantComposite %mat2v2float %210 %211 214 %213 = OpConstantComposite %v2float %float_1 %float_2 215 %214 = OpConstantComposite %v2float %float_3 %float_4 216 %215 = OpConstantComposite %mat2v2float %213 %214 217 %float_18 = OpConstant %float 18 218 %float_27 = OpConstant %float 27 219 %float_36 = OpConstant %float 36 220 %224 = OpConstantComposite %v2float %float_9 %float_18 221 %225 = OpConstantComposite %v2float %float_27 %float_36 222 %226 = OpConstantComposite %mat2v2float %224 %225 223 %v2bool = OpTypeVector %bool 2 224 %235 = OpConstantComposite %v2float %float_2 %float_4 225 %236 = OpConstantComposite %v2float %float_6 %float_8 226 %237 = OpConstantComposite %mat2v2float %235 %236 227 %238 = OpConstantComposite %v2float %float_2 %float_2 228 %239 = OpConstantComposite %mat2v2float %238 %235 229 %245 = OpConstantComposite %v2float %float_3 %float_2 230 %246 = OpConstantComposite %mat2v2float %213 %245 231 %254 = OpConstantComposite %v2float %float_7 %float_4 232 %255 = OpConstantComposite %mat2v2float %213 %254 233 %256 = OpConstantComposite %v2float %float_3 %float_5 234 %257 = OpConstantComposite %mat2v2float %256 %245 235 %float_38 = OpConstant %float 38 236 %float_26 = OpConstant %float 26 237 %263 = OpConstantComposite %v2float %float_38 %float_26 238 %264 = OpConstantComposite %v2float %float_17 %float_14 239 %265 = OpConstantComposite %mat2v2float %263 %264 240 %275 = OpConstantComposite %v3float %float_10 %float_4 %float_2 241 %276 = OpConstantComposite %v3float %float_20 %float_5 %float_3 242 %277 = OpConstantComposite %v3float %float_10 %float_6 %float_5 243 %278 = OpConstantComposite %mat3v3float %275 %276 %277 244 %279 = OpConstantComposite %v3float %float_3 %float_3 %float_4 245 %280 = OpConstantComposite %v3float %float_2 %float_3 %float_4 246 %281 = OpConstantComposite %v3float %float_4 %float_9 %float_2 247 %282 = OpConstantComposite %mat3v3float %279 %280 %281 248 %float_130 = OpConstant %float 130 249 %float_51 = OpConstant %float 51 250 %float_35 = OpConstant %float 35 251 %float_120 = OpConstant %float 120 252 %float_47 = OpConstant %float 47 253 %float_33 = OpConstant %float 33 254 %float_240 = OpConstant %float 240 255 %float_73 = OpConstant %float 73 256 %float_45 = OpConstant %float 45 257 %295 = OpConstantComposite %v3float %float_130 %float_51 %float_35 258 %296 = OpConstantComposite %v3float %float_120 %float_47 %float_33 259 %297 = OpConstantComposite %v3float %float_240 %float_73 %float_45 260 %298 = OpConstantComposite %mat3v3float %295 %296 %297 261 %311 = OpTypeFunction %v4float %_ptr_Function_v2float 262%_ptr_Function_v4float = OpTypePointer Function %v4float 263%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float 264 %int = OpTypeInt 32 1 265 %int_1 = OpConstant %int 1 266 %int_0 = OpConstant %int 0 267%_entrypoint_v = OpFunction %void None %13 268 %14 = OpLabel 269 %18 = OpVariable %_ptr_Function_v2float Function 270 OpStore %18 %17 271 %20 = OpFunctionCall %v4float %main %18 272 OpStore %sk_FragColor %20 273 OpReturn 274 OpFunctionEnd 275%test_matrix_op_matrix_half_b = OpFunction %bool None %22 276 %23 = OpLabel 277 %ok = OpVariable %_ptr_Function_bool Function 278 %splat_4 = OpVariable %_ptr_Function_mat3v3float Function 279 %splat_2 = OpVariable %_ptr_Function_mat3v3float Function 280 %m = OpVariable %_ptr_Function_mat3v3float Function 281 %m_0 = OpVariable %_ptr_Function_mat4v4float Function 282 %m_1 = OpVariable %_ptr_Function_mat2v2float Function 283 %m_2 = OpVariable %_ptr_Function_mat2v2float Function 284 %m_3 = OpVariable %_ptr_Function_mat2v2float Function 285 %m_4 = OpVariable %_ptr_Function_mat3v3float Function 286 OpStore %ok %true 287 OpStore %splat_4 %33 288 OpStore %splat_2 %37 289 OpStore %m %42 290 %43 = OpFAdd %v3float %39 %32 291 %44 = OpFAdd %v3float %40 %32 292 %45 = OpFAdd %v3float %41 %32 293 %46 = OpCompositeConstruct %mat3v3float %43 %44 %45 294 OpStore %m %46 295 OpSelectionMerge %49 None 296 OpBranchConditional %true %48 %49 297 %48 = OpLabel 298 %56 = OpFOrdEqual %v3bool %43 %51 299 %57 = OpAll %bool %56 300 %58 = OpFOrdEqual %v3bool %44 %52 301 %59 = OpAll %bool %58 302 %60 = OpLogicalAnd %bool %57 %59 303 %61 = OpFOrdEqual %v3bool %45 %53 304 %62 = OpAll %bool %61 305 %63 = OpLogicalAnd %bool %60 %62 306 OpBranch %49 307 %49 = OpLabel 308 %64 = OpPhi %bool %false %23 %63 %48 309 OpStore %ok %64 310 OpStore %m %42 311 %65 = OpFSub %v3float %39 %32 312 %66 = OpFSub %v3float %40 %32 313 %67 = OpFSub %v3float %41 %32 314 %68 = OpCompositeConstruct %mat3v3float %65 %66 %67 315 OpStore %m %68 316 OpSelectionMerge %70 None 317 OpBranchConditional %64 %69 %70 318 %69 = OpLabel 319 %77 = OpFOrdEqual %v3bool %65 %73 320 %78 = OpAll %bool %77 321 %79 = OpFOrdEqual %v3bool %66 %74 322 %80 = OpAll %bool %79 323 %81 = OpLogicalAnd %bool %78 %80 324 %82 = OpFOrdEqual %v3bool %67 %75 325 %83 = OpAll %bool %82 326 %84 = OpLogicalAnd %bool %81 %83 327 OpBranch %70 328 %70 = OpLabel 329 %85 = OpPhi %bool %false %49 %84 %69 330 OpStore %ok %85 331 OpStore %m %42 332 %86 = OpFDiv %v3float %39 %32 333 %87 = OpFDiv %v3float %40 %32 334 %88 = OpFDiv %v3float %41 %32 335 %89 = OpCompositeConstruct %mat3v3float %86 %87 %88 336 OpStore %m %89 337 OpSelectionMerge %91 None 338 OpBranchConditional %85 %90 %91 339 %90 = OpLabel 340 %97 = OpFOrdEqual %v3bool %86 %93 341 %98 = OpAll %bool %97 342 %99 = OpFOrdEqual %v3bool %87 %94 343 %100 = OpAll %bool %99 344 %101 = OpLogicalAnd %bool %98 %100 345 %102 = OpFOrdEqual %v3bool %88 %95 346 %103 = OpAll %bool %102 347 %104 = OpLogicalAnd %bool %101 %103 348 OpBranch %91 349 %91 = OpLabel 350 %105 = OpPhi %bool %false %70 %104 %90 351 OpStore %ok %105 352 OpStore %m %33 353 %106 = OpFAdd %v3float %32 %39 354 %107 = OpFAdd %v3float %32 %40 355 %108 = OpFAdd %v3float %32 %41 356 %109 = OpCompositeConstruct %mat3v3float %106 %107 %108 357 OpStore %m %109 358 OpSelectionMerge %111 None 359 OpBranchConditional %105 %110 %111 360 %110 = OpLabel 361 %112 = OpFOrdEqual %v3bool %106 %51 362 %113 = OpAll %bool %112 363 %114 = OpFOrdEqual %v3bool %107 %52 364 %115 = OpAll %bool %114 365 %116 = OpLogicalAnd %bool %113 %115 366 %117 = OpFOrdEqual %v3bool %108 %53 367 %118 = OpAll %bool %117 368 %119 = OpLogicalAnd %bool %116 %118 369 OpBranch %111 370 %111 = OpLabel 371 %120 = OpPhi %bool %false %91 %119 %110 372 OpStore %ok %120 373 OpStore %m %33 374 %121 = OpFSub %v3float %32 %39 375 %122 = OpFSub %v3float %32 %40 376 %123 = OpFSub %v3float %32 %41 377 %124 = OpCompositeConstruct %mat3v3float %121 %122 %123 378 OpStore %m %124 379 OpSelectionMerge %126 None 380 OpBranchConditional %120 %125 %126 381 %125 = OpLabel 382 %131 = OpFOrdEqual %v3bool %121 %127 383 %132 = OpAll %bool %131 384 %133 = OpFOrdEqual %v3bool %122 %128 385 %134 = OpAll %bool %133 386 %135 = OpLogicalAnd %bool %132 %134 387 %136 = OpFOrdEqual %v3bool %123 %129 388 %137 = OpAll %bool %136 389 %138 = OpLogicalAnd %bool %135 %137 390 OpBranch %126 391 %126 = OpLabel 392 %139 = OpPhi %bool %false %111 %138 %125 393 OpStore %ok %139 394 OpStore %m %33 395 %140 = OpFDiv %v3float %32 %36 396 %141 = OpFDiv %v3float %32 %36 397 %142 = OpFDiv %v3float %32 %36 398 %143 = OpCompositeConstruct %mat3v3float %140 %141 %142 399 OpStore %m %143 400 OpSelectionMerge %145 None 401 OpBranchConditional %139 %144 %145 402 %144 = OpLabel 403 %146 = OpFOrdEqual %v3bool %140 %36 404 %147 = OpAll %bool %146 405 %148 = OpFOrdEqual %v3bool %141 %36 406 %149 = OpAll %bool %148 407 %150 = OpLogicalAnd %bool %147 %149 408 %151 = OpFOrdEqual %v3bool %142 %36 409 %152 = OpAll %bool %151 410 %153 = OpLogicalAnd %bool %150 %152 411 OpBranch %145 412 %145 = OpLabel 413 %154 = OpPhi %bool %false %126 %153 %144 414 OpStore %ok %154 415 OpStore %m_0 %175 416 %181 = OpFAdd %v4float %171 %176 417 %182 = OpFAdd %v4float %172 %177 418 %183 = OpFAdd %v4float %173 %178 419 %184 = OpFAdd %v4float %174 %179 420 %185 = OpCompositeConstruct %mat4v4float %181 %182 %183 %184 421 OpStore %m_0 %185 422 OpSelectionMerge %187 None 423 OpBranchConditional %154 %186 %187 424 %186 = OpLabel 425 %192 = OpFOrdEqual %v4bool %181 %189 426 %193 = OpAll %bool %192 427 %194 = OpFOrdEqual %v4bool %182 %189 428 %195 = OpAll %bool %194 429 %196 = OpLogicalAnd %bool %193 %195 430 %197 = OpFOrdEqual %v4bool %183 %189 431 %198 = OpAll %bool %197 432 %199 = OpLogicalAnd %bool %196 %198 433 %200 = OpFOrdEqual %v4bool %184 %189 434 %201 = OpAll %bool %200 435 %202 = OpLogicalAnd %bool %199 %201 436 OpBranch %187 437 %187 = OpLabel 438 %203 = OpPhi %bool %false %145 %202 %186 439 OpStore %ok %203 440 OpStore %m_1 %212 441 %216 = OpFSub %v2float %210 %213 442 %217 = OpFSub %v2float %211 %214 443 %218 = OpCompositeConstruct %mat2v2float %216 %217 444 OpStore %m_1 %218 445 OpSelectionMerge %220 None 446 OpBranchConditional %203 %219 %220 447 %219 = OpLabel 448 %228 = OpFOrdEqual %v2bool %216 %224 449 %229 = OpAll %bool %228 450 %230 = OpFOrdEqual %v2bool %217 %225 451 %231 = OpAll %bool %230 452 %232 = OpLogicalAnd %bool %229 %231 453 OpBranch %220 454 %220 = OpLabel 455 %233 = OpPhi %bool %false %187 %232 %219 456 OpStore %ok %233 457 OpStore %m_2 %237 458 %240 = OpFDiv %v2float %235 %238 459 %241 = OpFDiv %v2float %236 %235 460 %242 = OpCompositeConstruct %mat2v2float %240 %241 461 OpStore %m_2 %242 462 OpSelectionMerge %244 None 463 OpBranchConditional %233 %243 %244 464 %243 = OpLabel 465 %247 = OpFOrdEqual %v2bool %240 %213 466 %248 = OpAll %bool %247 467 %249 = OpFOrdEqual %v2bool %241 %245 468 %250 = OpAll %bool %249 469 %251 = OpLogicalAnd %bool %248 %250 470 OpBranch %244 471 %244 = OpLabel 472 %252 = OpPhi %bool %false %220 %251 %243 473 OpStore %ok %252 474 OpStore %m_3 %255 475 %258 = OpMatrixTimesMatrix %mat2v2float %255 %257 476 OpStore %m_3 %258 477 OpSelectionMerge %260 None 478 OpBranchConditional %252 %259 %260 479 %259 = OpLabel 480 %266 = OpCompositeExtract %v2float %258 0 481 %267 = OpFOrdEqual %v2bool %266 %263 482 %268 = OpAll %bool %267 483 %269 = OpCompositeExtract %v2float %258 1 484 %270 = OpFOrdEqual %v2bool %269 %264 485 %271 = OpAll %bool %270 486 %272 = OpLogicalAnd %bool %268 %271 487 OpBranch %260 488 %260 = OpLabel 489 %273 = OpPhi %bool %false %244 %272 %259 490 OpStore %ok %273 491 OpStore %m_4 %278 492 %283 = OpMatrixTimesMatrix %mat3v3float %278 %282 493 OpStore %m_4 %283 494 OpSelectionMerge %285 None 495 OpBranchConditional %273 %284 %285 496 %284 = OpLabel 497 %299 = OpCompositeExtract %v3float %283 0 498 %300 = OpFOrdEqual %v3bool %299 %295 499 %301 = OpAll %bool %300 500 %302 = OpCompositeExtract %v3float %283 1 501 %303 = OpFOrdEqual %v3bool %302 %296 502 %304 = OpAll %bool %303 503 %305 = OpLogicalAnd %bool %301 %304 504 %306 = OpCompositeExtract %v3float %283 2 505 %307 = OpFOrdEqual %v3bool %306 %297 506 %308 = OpAll %bool %307 507 %309 = OpLogicalAnd %bool %305 %308 508 OpBranch %285 509 %285 = OpLabel 510 %310 = OpPhi %bool %false %260 %309 %284 511 OpStore %ok %310 512 OpReturnValue %310 513 OpFunctionEnd 514 %main = OpFunction %v4float None %311 515 %312 = OpFunctionParameter %_ptr_Function_v2float 516 %313 = OpLabel 517 %_0_ok = OpVariable %_ptr_Function_bool Function 518 %_1_splat_4 = OpVariable %_ptr_Function_mat3v3float Function 519 %_2_splat_2 = OpVariable %_ptr_Function_mat3v3float Function 520 %_3_m = OpVariable %_ptr_Function_mat3v3float Function 521 %_4_m = OpVariable %_ptr_Function_mat4v4float Function 522 %_5_m = OpVariable %_ptr_Function_mat2v2float Function 523 %_6_m = OpVariable %_ptr_Function_mat2v2float Function 524 %_7_m = OpVariable %_ptr_Function_mat2v2float Function 525 %_8_m = OpVariable %_ptr_Function_mat3v3float Function 526 %484 = OpVariable %_ptr_Function_v4float Function 527 OpStore %_0_ok %true 528 OpStore %_1_splat_4 %33 529 OpStore %_2_splat_2 %37 530 OpStore %_3_m %42 531 %318 = OpFAdd %v3float %39 %32 532 %319 = OpFAdd %v3float %40 %32 533 %320 = OpFAdd %v3float %41 %32 534 %321 = OpCompositeConstruct %mat3v3float %318 %319 %320 535 OpStore %_3_m %321 536 OpSelectionMerge %323 None 537 OpBranchConditional %true %322 %323 538 %322 = OpLabel 539 %324 = OpFOrdEqual %v3bool %318 %51 540 %325 = OpAll %bool %324 541 %326 = OpFOrdEqual %v3bool %319 %52 542 %327 = OpAll %bool %326 543 %328 = OpLogicalAnd %bool %325 %327 544 %329 = OpFOrdEqual %v3bool %320 %53 545 %330 = OpAll %bool %329 546 %331 = OpLogicalAnd %bool %328 %330 547 OpBranch %323 548 %323 = OpLabel 549 %332 = OpPhi %bool %false %313 %331 %322 550 OpStore %_0_ok %332 551 OpStore %_3_m %42 552 %333 = OpFSub %v3float %39 %32 553 %334 = OpFSub %v3float %40 %32 554 %335 = OpFSub %v3float %41 %32 555 %336 = OpCompositeConstruct %mat3v3float %333 %334 %335 556 OpStore %_3_m %336 557 OpSelectionMerge %338 None 558 OpBranchConditional %332 %337 %338 559 %337 = OpLabel 560 %339 = OpFOrdEqual %v3bool %333 %73 561 %340 = OpAll %bool %339 562 %341 = OpFOrdEqual %v3bool %334 %74 563 %342 = OpAll %bool %341 564 %343 = OpLogicalAnd %bool %340 %342 565 %344 = OpFOrdEqual %v3bool %335 %75 566 %345 = OpAll %bool %344 567 %346 = OpLogicalAnd %bool %343 %345 568 OpBranch %338 569 %338 = OpLabel 570 %347 = OpPhi %bool %false %323 %346 %337 571 OpStore %_0_ok %347 572 OpStore %_3_m %42 573 %348 = OpFDiv %v3float %39 %32 574 %349 = OpFDiv %v3float %40 %32 575 %350 = OpFDiv %v3float %41 %32 576 %351 = OpCompositeConstruct %mat3v3float %348 %349 %350 577 OpStore %_3_m %351 578 OpSelectionMerge %353 None 579 OpBranchConditional %347 %352 %353 580 %352 = OpLabel 581 %354 = OpFOrdEqual %v3bool %348 %93 582 %355 = OpAll %bool %354 583 %356 = OpFOrdEqual %v3bool %349 %94 584 %357 = OpAll %bool %356 585 %358 = OpLogicalAnd %bool %355 %357 586 %359 = OpFOrdEqual %v3bool %350 %95 587 %360 = OpAll %bool %359 588 %361 = OpLogicalAnd %bool %358 %360 589 OpBranch %353 590 %353 = OpLabel 591 %362 = OpPhi %bool %false %338 %361 %352 592 OpStore %_0_ok %362 593 OpStore %_3_m %33 594 %363 = OpFAdd %v3float %32 %39 595 %364 = OpFAdd %v3float %32 %40 596 %365 = OpFAdd %v3float %32 %41 597 %366 = OpCompositeConstruct %mat3v3float %363 %364 %365 598 OpStore %_3_m %366 599 OpSelectionMerge %368 None 600 OpBranchConditional %362 %367 %368 601 %367 = OpLabel 602 %369 = OpFOrdEqual %v3bool %363 %51 603 %370 = OpAll %bool %369 604 %371 = OpFOrdEqual %v3bool %364 %52 605 %372 = OpAll %bool %371 606 %373 = OpLogicalAnd %bool %370 %372 607 %374 = OpFOrdEqual %v3bool %365 %53 608 %375 = OpAll %bool %374 609 %376 = OpLogicalAnd %bool %373 %375 610 OpBranch %368 611 %368 = OpLabel 612 %377 = OpPhi %bool %false %353 %376 %367 613 OpStore %_0_ok %377 614 OpStore %_3_m %33 615 %378 = OpFSub %v3float %32 %39 616 %379 = OpFSub %v3float %32 %40 617 %380 = OpFSub %v3float %32 %41 618 %381 = OpCompositeConstruct %mat3v3float %378 %379 %380 619 OpStore %_3_m %381 620 OpSelectionMerge %383 None 621 OpBranchConditional %377 %382 %383 622 %382 = OpLabel 623 %384 = OpFOrdEqual %v3bool %378 %127 624 %385 = OpAll %bool %384 625 %386 = OpFOrdEqual %v3bool %379 %128 626 %387 = OpAll %bool %386 627 %388 = OpLogicalAnd %bool %385 %387 628 %389 = OpFOrdEqual %v3bool %380 %129 629 %390 = OpAll %bool %389 630 %391 = OpLogicalAnd %bool %388 %390 631 OpBranch %383 632 %383 = OpLabel 633 %392 = OpPhi %bool %false %368 %391 %382 634 OpStore %_0_ok %392 635 OpStore %_3_m %33 636 %393 = OpFDiv %v3float %32 %36 637 %394 = OpFDiv %v3float %32 %36 638 %395 = OpFDiv %v3float %32 %36 639 %396 = OpCompositeConstruct %mat3v3float %393 %394 %395 640 OpStore %_3_m %396 641 OpSelectionMerge %398 None 642 OpBranchConditional %392 %397 %398 643 %397 = OpLabel 644 %399 = OpFOrdEqual %v3bool %393 %36 645 %400 = OpAll %bool %399 646 %401 = OpFOrdEqual %v3bool %394 %36 647 %402 = OpAll %bool %401 648 %403 = OpLogicalAnd %bool %400 %402 649 %404 = OpFOrdEqual %v3bool %395 %36 650 %405 = OpAll %bool %404 651 %406 = OpLogicalAnd %bool %403 %405 652 OpBranch %398 653 %398 = OpLabel 654 %407 = OpPhi %bool %false %383 %406 %397 655 OpStore %_0_ok %407 656 OpStore %_4_m %175 657 %409 = OpFAdd %v4float %171 %176 658 %410 = OpFAdd %v4float %172 %177 659 %411 = OpFAdd %v4float %173 %178 660 %412 = OpFAdd %v4float %174 %179 661 %413 = OpCompositeConstruct %mat4v4float %409 %410 %411 %412 662 OpStore %_4_m %413 663 OpSelectionMerge %415 None 664 OpBranchConditional %407 %414 %415 665 %414 = OpLabel 666 %416 = OpFOrdEqual %v4bool %409 %189 667 %417 = OpAll %bool %416 668 %418 = OpFOrdEqual %v4bool %410 %189 669 %419 = OpAll %bool %418 670 %420 = OpLogicalAnd %bool %417 %419 671 %421 = OpFOrdEqual %v4bool %411 %189 672 %422 = OpAll %bool %421 673 %423 = OpLogicalAnd %bool %420 %422 674 %424 = OpFOrdEqual %v4bool %412 %189 675 %425 = OpAll %bool %424 676 %426 = OpLogicalAnd %bool %423 %425 677 OpBranch %415 678 %415 = OpLabel 679 %427 = OpPhi %bool %false %398 %426 %414 680 OpStore %_0_ok %427 681 OpStore %_5_m %212 682 %429 = OpFSub %v2float %210 %213 683 %430 = OpFSub %v2float %211 %214 684 %431 = OpCompositeConstruct %mat2v2float %429 %430 685 OpStore %_5_m %431 686 OpSelectionMerge %433 None 687 OpBranchConditional %427 %432 %433 688 %432 = OpLabel 689 %434 = OpFOrdEqual %v2bool %429 %224 690 %435 = OpAll %bool %434 691 %436 = OpFOrdEqual %v2bool %430 %225 692 %437 = OpAll %bool %436 693 %438 = OpLogicalAnd %bool %435 %437 694 OpBranch %433 695 %433 = OpLabel 696 %439 = OpPhi %bool %false %415 %438 %432 697 OpStore %_0_ok %439 698 OpStore %_6_m %237 699 %441 = OpFDiv %v2float %235 %238 700 %442 = OpFDiv %v2float %236 %235 701 %443 = OpCompositeConstruct %mat2v2float %441 %442 702 OpStore %_6_m %443 703 OpSelectionMerge %445 None 704 OpBranchConditional %439 %444 %445 705 %444 = OpLabel 706 %446 = OpFOrdEqual %v2bool %441 %213 707 %447 = OpAll %bool %446 708 %448 = OpFOrdEqual %v2bool %442 %245 709 %449 = OpAll %bool %448 710 %450 = OpLogicalAnd %bool %447 %449 711 OpBranch %445 712 %445 = OpLabel 713 %451 = OpPhi %bool %false %433 %450 %444 714 OpStore %_0_ok %451 715 OpStore %_7_m %255 716 %453 = OpMatrixTimesMatrix %mat2v2float %255 %257 717 OpStore %_7_m %453 718 OpSelectionMerge %455 None 719 OpBranchConditional %451 %454 %455 720 %454 = OpLabel 721 %456 = OpCompositeExtract %v2float %453 0 722 %457 = OpFOrdEqual %v2bool %456 %263 723 %458 = OpAll %bool %457 724 %459 = OpCompositeExtract %v2float %453 1 725 %460 = OpFOrdEqual %v2bool %459 %264 726 %461 = OpAll %bool %460 727 %462 = OpLogicalAnd %bool %458 %461 728 OpBranch %455 729 %455 = OpLabel 730 %463 = OpPhi %bool %false %445 %462 %454 731 OpStore %_0_ok %463 732 OpStore %_8_m %278 733 %465 = OpMatrixTimesMatrix %mat3v3float %278 %282 734 OpStore %_8_m %465 735 OpSelectionMerge %467 None 736 OpBranchConditional %463 %466 %467 737 %466 = OpLabel 738 %468 = OpCompositeExtract %v3float %465 0 739 %469 = OpFOrdEqual %v3bool %468 %295 740 %470 = OpAll %bool %469 741 %471 = OpCompositeExtract %v3float %465 1 742 %472 = OpFOrdEqual %v3bool %471 %296 743 %473 = OpAll %bool %472 744 %474 = OpLogicalAnd %bool %470 %473 745 %475 = OpCompositeExtract %v3float %465 2 746 %476 = OpFOrdEqual %v3bool %475 %297 747 %477 = OpAll %bool %476 748 %478 = OpLogicalAnd %bool %474 %477 749 OpBranch %467 750 %467 = OpLabel 751 %479 = OpPhi %bool %false %455 %478 %466 752 OpStore %_0_ok %479 753 OpSelectionMerge %481 None 754 OpBranchConditional %479 %480 %481 755 %480 = OpLabel 756 %482 = OpFunctionCall %bool %test_matrix_op_matrix_half_b 757 OpBranch %481 758 %481 = OpLabel 759 %483 = OpPhi %bool %false %467 %482 %480 760 OpSelectionMerge %488 None 761 OpBranchConditional %483 %486 %487 762 %486 = OpLabel 763 %489 = OpAccessChain %_ptr_Uniform_v4float %8 %int_1 764 %493 = OpLoad %v4float %489 765 OpStore %484 %493 766 OpBranch %488 767 %487 = OpLabel 768 %494 = OpAccessChain %_ptr_Uniform_v4float %8 %int_0 769 %496 = OpLoad %v4float %494 770 OpStore %484 %496 771 OpBranch %488 772 %488 = OpLabel 773 %497 = OpLoad %v4float %484 774 OpReturnValue %497 775 OpFunctionEnd 776