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