1OpCapability Shader 2%1 = OpExtInstImport "GLSL.std.450" 3OpMemoryModel Logical GLSL450 4OpEntryPoint Fragment %_entrypoint_v "_entrypoint" %sk_FragColor %sk_Clockwise 5OpExecutionMode %_entrypoint_v OriginUpperLeft 6OpName %sk_FragColor "sk_FragColor" 7OpName %sk_Clockwise "sk_Clockwise" 8OpName %_UniformBuffer "_UniformBuffer" 9OpMemberName %_UniformBuffer 0 "colorGreen" 10OpMemberName %_UniformBuffer 1 "colorRed" 11OpName %_entrypoint_v "_entrypoint_v" 12OpName %test_half_b "test_half_b" 13OpName %ok "ok" 14OpName %m1 "m1" 15OpName %m3 "m3" 16OpName %m4 "m4" 17OpName %m5 "m5" 18OpName %m7 "m7" 19OpName %m9 "m9" 20OpName %m10 "m10" 21OpName %m11 "m11" 22OpName %test_comma_b "test_comma_b" 23OpName %x "x" 24OpName %y "y" 25OpName %main "main" 26OpName %_0_ok "_0_ok" 27OpName %_1_m1 "_1_m1" 28OpName %_2_m3 "_2_m3" 29OpName %_3_m4 "_3_m4" 30OpName %_4_m5 "_4_m5" 31OpName %_5_m7 "_5_m7" 32OpName %_6_m9 "_6_m9" 33OpName %_7_m10 "_7_m10" 34OpName %_8_m11 "_8_m11" 35OpDecorate %sk_FragColor RelaxedPrecision 36OpDecorate %sk_FragColor Location 0 37OpDecorate %sk_FragColor Index 0 38OpDecorate %sk_Clockwise BuiltIn FrontFacing 39OpMemberDecorate %_UniformBuffer 0 Offset 0 40OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision 41OpMemberDecorate %_UniformBuffer 1 Offset 16 42OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision 43OpDecorate %_UniformBuffer Block 44OpDecorate %12 Binding 0 45OpDecorate %12 DescriptorSet 0 46OpDecorate %m1 RelaxedPrecision 47OpDecorate %37 RelaxedPrecision 48OpDecorate %38 RelaxedPrecision 49OpDecorate %39 RelaxedPrecision 50OpDecorate %41 RelaxedPrecision 51OpDecorate %44 RelaxedPrecision 52OpDecorate %45 RelaxedPrecision 53OpDecorate %46 RelaxedPrecision 54OpDecorate %47 RelaxedPrecision 55OpDecorate %m3 RelaxedPrecision 56OpDecorate %60 RelaxedPrecision 57OpDecorate %61 RelaxedPrecision 58OpDecorate %64 RelaxedPrecision 59OpDecorate %65 RelaxedPrecision 60OpDecorate %66 RelaxedPrecision 61OpDecorate %67 RelaxedPrecision 62OpDecorate %m4 RelaxedPrecision 63OpDecorate %80 RelaxedPrecision 64OpDecorate %81 RelaxedPrecision 65OpDecorate %82 RelaxedPrecision 66OpDecorate %83 RelaxedPrecision 67OpDecorate %86 RelaxedPrecision 68OpDecorate %87 RelaxedPrecision 69OpDecorate %88 RelaxedPrecision 70OpDecorate %89 RelaxedPrecision 71OpDecorate %100 RelaxedPrecision 72OpDecorate %101 RelaxedPrecision 73OpDecorate %102 RelaxedPrecision 74OpDecorate %103 RelaxedPrecision 75OpDecorate %106 RelaxedPrecision 76OpDecorate %110 RelaxedPrecision 77OpDecorate %111 RelaxedPrecision 78OpDecorate %112 RelaxedPrecision 79OpDecorate %m5 RelaxedPrecision 80OpDecorate %127 RelaxedPrecision 81OpDecorate %128 RelaxedPrecision 82OpDecorate %129 RelaxedPrecision 83OpDecorate %130 RelaxedPrecision 84OpDecorate %131 RelaxedPrecision 85OpDecorate %132 RelaxedPrecision 86OpDecorate %135 RelaxedPrecision 87OpDecorate %136 RelaxedPrecision 88OpDecorate %137 RelaxedPrecision 89OpDecorate %138 RelaxedPrecision 90OpDecorate %149 RelaxedPrecision 91OpDecorate %150 RelaxedPrecision 92OpDecorate %151 RelaxedPrecision 93OpDecorate %152 RelaxedPrecision 94OpDecorate %153 RelaxedPrecision 95OpDecorate %154 RelaxedPrecision 96OpDecorate %155 RelaxedPrecision 97OpDecorate %156 RelaxedPrecision 98OpDecorate %157 RelaxedPrecision 99OpDecorate %158 RelaxedPrecision 100OpDecorate %161 RelaxedPrecision 101OpDecorate %164 RelaxedPrecision 102OpDecorate %165 RelaxedPrecision 103OpDecorate %166 RelaxedPrecision 104OpDecorate %m7 RelaxedPrecision 105OpDecorate %179 RelaxedPrecision 106OpDecorate %180 RelaxedPrecision 107OpDecorate %181 RelaxedPrecision 108OpDecorate %182 RelaxedPrecision 109OpDecorate %185 RelaxedPrecision 110OpDecorate %186 RelaxedPrecision 111OpDecorate %187 RelaxedPrecision 112OpDecorate %188 RelaxedPrecision 113OpDecorate %m9 RelaxedPrecision 114OpDecorate %204 RelaxedPrecision 115OpDecorate %205 RelaxedPrecision 116OpDecorate %206 RelaxedPrecision 117OpDecorate %207 RelaxedPrecision 118OpDecorate %208 RelaxedPrecision 119OpDecorate %211 RelaxedPrecision 120OpDecorate %212 RelaxedPrecision 121OpDecorate %213 RelaxedPrecision 122OpDecorate %214 RelaxedPrecision 123OpDecorate %215 RelaxedPrecision 124OpDecorate %m10 RelaxedPrecision 125OpDecorate %236 RelaxedPrecision 126OpDecorate %237 RelaxedPrecision 127OpDecorate %238 RelaxedPrecision 128OpDecorate %239 RelaxedPrecision 129OpDecorate %240 RelaxedPrecision 130OpDecorate %241 RelaxedPrecision 131OpDecorate %244 RelaxedPrecision 132OpDecorate %245 RelaxedPrecision 133OpDecorate %246 RelaxedPrecision 134OpDecorate %247 RelaxedPrecision 135OpDecorate %248 RelaxedPrecision 136OpDecorate %249 RelaxedPrecision 137OpDecorate %m11 RelaxedPrecision 138OpDecorate %273 RelaxedPrecision 139OpDecorate %274 RelaxedPrecision 140OpDecorate %275 RelaxedPrecision 141OpDecorate %276 RelaxedPrecision 142OpDecorate %277 RelaxedPrecision 143OpDecorate %278 RelaxedPrecision 144OpDecorate %279 RelaxedPrecision 145OpDecorate %280 RelaxedPrecision 146OpDecorate %281 RelaxedPrecision 147OpDecorate %282 RelaxedPrecision 148OpDecorate %283 RelaxedPrecision 149OpDecorate %284 RelaxedPrecision 150OpDecorate %285 RelaxedPrecision 151OpDecorate %286 RelaxedPrecision 152OpDecorate %287 RelaxedPrecision 153OpDecorate %288 RelaxedPrecision 154OpDecorate %289 RelaxedPrecision 155OpDecorate %290 RelaxedPrecision 156OpDecorate %291 RelaxedPrecision 157OpDecorate %292 RelaxedPrecision 158OpDecorate %293 RelaxedPrecision 159OpDecorate %296 RelaxedPrecision 160OpDecorate %297 RelaxedPrecision 161OpDecorate %298 RelaxedPrecision 162OpDecorate %299 RelaxedPrecision 163OpDecorate %300 RelaxedPrecision 164OpDecorate %301 RelaxedPrecision 165OpDecorate %322 RelaxedPrecision 166OpDecorate %353 RelaxedPrecision 167OpDecorate %372 RelaxedPrecision 168OpDecorate %393 RelaxedPrecision 169OpDecorate %413 RelaxedPrecision 170OpDecorate %437 RelaxedPrecision 171OpDecorate %463 RelaxedPrecision 172OpDecorate %484 RelaxedPrecision 173OpDecorate %506 RelaxedPrecision 174OpDecorate %535 RelaxedPrecision 175OpDecorate %585 RelaxedPrecision 176OpDecorate %614 RelaxedPrecision 177OpDecorate %631 RelaxedPrecision 178OpDecorate %633 RelaxedPrecision 179OpDecorate %634 RelaxedPrecision 180%float = OpTypeFloat 32 181%v4float = OpTypeVector %float 4 182%_ptr_Output_v4float = OpTypePointer Output %v4float 183%sk_FragColor = OpVariable %_ptr_Output_v4float Output 184%bool = OpTypeBool 185%_ptr_Input_bool = OpTypePointer Input %bool 186%sk_Clockwise = OpVariable %_ptr_Input_bool Input 187%_UniformBuffer = OpTypeStruct %v4float %v4float 188%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer 189%12 = OpVariable %_ptr_Uniform__UniformBuffer Uniform 190%void = OpTypeVoid 191%17 = OpTypeFunction %void 192%v2float = OpTypeVector %float 2 193%float_0 = OpConstant %float 0 194%21 = OpConstantComposite %v2float %float_0 %float_0 195%_ptr_Function_v2float = OpTypePointer Function %v2float 196%25 = OpTypeFunction %bool 197%_ptr_Function_bool = OpTypePointer Function %bool 198%true = OpConstantTrue %bool 199%mat2v2float = OpTypeMatrix %v2float 2 200%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float 201%float_1 = OpConstant %float 1 202%float_2 = OpConstant %float 2 203%float_3 = OpConstant %float 3 204%float_4 = OpConstant %float 4 205%false = OpConstantFalse %bool 206%v2bool = OpTypeVector %bool 2 207%float_6 = OpConstant %float 6 208%float_12 = OpConstant %float 12 209%float_18 = OpConstant %float 18 210%float_24 = OpConstant %float 24 211%int = OpTypeInt 32 1 212%int_1 = OpConstant %int 1 213%float_5 = OpConstant %float 5 214%float_8 = OpConstant %float 8 215%float_7 = OpConstant %float 7 216%v3float = OpTypeVector %float 3 217%mat3v3float = OpTypeMatrix %v3float 3 218%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float 219%float_9 = OpConstant %float 9 220%v3bool = OpTypeVector %bool 3 221%mat4v4float = OpTypeMatrix %v4float 4 222%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float 223%float_11 = OpConstant %float 11 224%v4bool = OpTypeVector %bool 4 225%float_20 = OpConstant %float 20 226%float_0_5 = OpConstant %float 0.5 227%345 = OpTypeFunction %v4float %_ptr_Function_v2float 228%_ptr_Function_v4float = OpTypePointer Function %v4float 229%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float 230%int_0 = OpConstant %int 0 231%_entrypoint_v = OpFunction %void None %17 232%18 = OpLabel 233%22 = OpVariable %_ptr_Function_v2float Function 234OpStore %22 %21 235%24 = OpFunctionCall %v4float %main %22 236OpStore %sk_FragColor %24 237OpReturn 238OpFunctionEnd 239%test_half_b = OpFunction %bool None %25 240%26 = OpLabel 241%ok = OpVariable %_ptr_Function_bool Function 242%m1 = OpVariable %_ptr_Function_mat2v2float Function 243%m3 = OpVariable %_ptr_Function_mat2v2float Function 244%m4 = OpVariable %_ptr_Function_mat2v2float Function 245%m5 = OpVariable %_ptr_Function_mat2v2float Function 246%m7 = OpVariable %_ptr_Function_mat2v2float Function 247%m9 = OpVariable %_ptr_Function_mat3v3float Function 248%m10 = OpVariable %_ptr_Function_mat4v4float Function 249%m11 = OpVariable %_ptr_Function_mat4v4float Function 250OpStore %ok %true 251%37 = OpCompositeConstruct %v2float %float_1 %float_2 252%38 = OpCompositeConstruct %v2float %float_3 %float_4 253%39 = OpCompositeConstruct %mat2v2float %37 %38 254OpStore %m1 %39 255%41 = OpLoad %bool %ok 256OpSelectionMerge %43 None 257OpBranchConditional %41 %42 %43 258%42 = OpLabel 259%44 = OpLoad %mat2v2float %m1 260%45 = OpCompositeConstruct %v2float %float_1 %float_2 261%46 = OpCompositeConstruct %v2float %float_3 %float_4 262%47 = OpCompositeConstruct %mat2v2float %45 %46 263%49 = OpCompositeExtract %v2float %44 0 264%50 = OpCompositeExtract %v2float %47 0 265%51 = OpFOrdEqual %v2bool %49 %50 266%52 = OpAll %bool %51 267%53 = OpCompositeExtract %v2float %44 1 268%54 = OpCompositeExtract %v2float %47 1 269%55 = OpFOrdEqual %v2bool %53 %54 270%56 = OpAll %bool %55 271%57 = OpLogicalAnd %bool %52 %56 272OpBranch %43 273%43 = OpLabel 274%58 = OpPhi %bool %false %26 %57 %42 275OpStore %ok %58 276%60 = OpLoad %mat2v2float %m1 277OpStore %m3 %60 278%61 = OpLoad %bool %ok 279OpSelectionMerge %63 None 280OpBranchConditional %61 %62 %63 281%62 = OpLabel 282%64 = OpLoad %mat2v2float %m3 283%65 = OpCompositeConstruct %v2float %float_1 %float_2 284%66 = OpCompositeConstruct %v2float %float_3 %float_4 285%67 = OpCompositeConstruct %mat2v2float %65 %66 286%68 = OpCompositeExtract %v2float %64 0 287%69 = OpCompositeExtract %v2float %67 0 288%70 = OpFOrdEqual %v2bool %68 %69 289%71 = OpAll %bool %70 290%72 = OpCompositeExtract %v2float %64 1 291%73 = OpCompositeExtract %v2float %67 1 292%74 = OpFOrdEqual %v2bool %72 %73 293%75 = OpAll %bool %74 294%76 = OpLogicalAnd %bool %71 %75 295OpBranch %63 296%63 = OpLabel 297%77 = OpPhi %bool %false %43 %76 %62 298OpStore %ok %77 299%81 = OpCompositeConstruct %v2float %float_6 %float_0 300%82 = OpCompositeConstruct %v2float %float_0 %float_6 301%80 = OpCompositeConstruct %mat2v2float %81 %82 302OpStore %m4 %80 303%83 = OpLoad %bool %ok 304OpSelectionMerge %85 None 305OpBranchConditional %83 %84 %85 306%84 = OpLabel 307%86 = OpLoad %mat2v2float %m4 308%87 = OpCompositeConstruct %v2float %float_6 %float_0 309%88 = OpCompositeConstruct %v2float %float_0 %float_6 310%89 = OpCompositeConstruct %mat2v2float %87 %88 311%90 = OpCompositeExtract %v2float %86 0 312%91 = OpCompositeExtract %v2float %89 0 313%92 = OpFOrdEqual %v2bool %90 %91 314%93 = OpAll %bool %92 315%94 = OpCompositeExtract %v2float %86 1 316%95 = OpCompositeExtract %v2float %89 1 317%96 = OpFOrdEqual %v2bool %94 %95 318%97 = OpAll %bool %96 319%98 = OpLogicalAnd %bool %93 %97 320OpBranch %85 321%85 = OpLabel 322%99 = OpPhi %bool %false %63 %98 %84 323OpStore %ok %99 324%100 = OpLoad %mat2v2float %m3 325%101 = OpLoad %mat2v2float %m4 326%102 = OpMatrixTimesMatrix %mat2v2float %100 %101 327OpStore %m3 %102 328%103 = OpLoad %bool %ok 329OpSelectionMerge %105 None 330OpBranchConditional %103 %104 %105 331%104 = OpLabel 332%106 = OpLoad %mat2v2float %m3 333%110 = OpCompositeConstruct %v2float %float_6 %float_12 334%111 = OpCompositeConstruct %v2float %float_18 %float_24 335%112 = OpCompositeConstruct %mat2v2float %110 %111 336%113 = OpCompositeExtract %v2float %106 0 337%114 = OpCompositeExtract %v2float %112 0 338%115 = OpFOrdEqual %v2bool %113 %114 339%116 = OpAll %bool %115 340%117 = OpCompositeExtract %v2float %106 1 341%118 = OpCompositeExtract %v2float %112 1 342%119 = OpFOrdEqual %v2bool %117 %118 343%120 = OpAll %bool %119 344%121 = OpLogicalAnd %bool %116 %120 345OpBranch %105 346%105 = OpLabel 347%122 = OpPhi %bool %false %85 %121 %104 348OpStore %ok %122 349%126 = OpAccessChain %_ptr_Function_v2float %m1 %int_1 350%127 = OpLoad %v2float %126 351%128 = OpCompositeExtract %float %127 1 352%130 = OpCompositeConstruct %v2float %128 %float_0 353%131 = OpCompositeConstruct %v2float %float_0 %128 354%129 = OpCompositeConstruct %mat2v2float %130 %131 355OpStore %m5 %129 356%132 = OpLoad %bool %ok 357OpSelectionMerge %134 None 358OpBranchConditional %132 %133 %134 359%133 = OpLabel 360%135 = OpLoad %mat2v2float %m5 361%136 = OpCompositeConstruct %v2float %float_4 %float_0 362%137 = OpCompositeConstruct %v2float %float_0 %float_4 363%138 = OpCompositeConstruct %mat2v2float %136 %137 364%139 = OpCompositeExtract %v2float %135 0 365%140 = OpCompositeExtract %v2float %138 0 366%141 = OpFOrdEqual %v2bool %139 %140 367%142 = OpAll %bool %141 368%143 = OpCompositeExtract %v2float %135 1 369%144 = OpCompositeExtract %v2float %138 1 370%145 = OpFOrdEqual %v2bool %143 %144 371%146 = OpAll %bool %145 372%147 = OpLogicalAnd %bool %142 %146 373OpBranch %134 374%134 = OpLabel 375%148 = OpPhi %bool %false %105 %147 %133 376OpStore %ok %148 377%149 = OpLoad %mat2v2float %m1 378%150 = OpLoad %mat2v2float %m5 379%151 = OpCompositeExtract %v2float %149 0 380%152 = OpCompositeExtract %v2float %150 0 381%153 = OpFAdd %v2float %151 %152 382%154 = OpCompositeExtract %v2float %149 1 383%155 = OpCompositeExtract %v2float %150 1 384%156 = OpFAdd %v2float %154 %155 385%157 = OpCompositeConstruct %mat2v2float %153 %156 386OpStore %m1 %157 387%158 = OpLoad %bool %ok 388OpSelectionMerge %160 None 389OpBranchConditional %158 %159 %160 390%159 = OpLabel 391%161 = OpLoad %mat2v2float %m1 392%164 = OpCompositeConstruct %v2float %float_5 %float_2 393%165 = OpCompositeConstruct %v2float %float_3 %float_8 394%166 = OpCompositeConstruct %mat2v2float %164 %165 395%167 = OpCompositeExtract %v2float %161 0 396%168 = OpCompositeExtract %v2float %166 0 397%169 = OpFOrdEqual %v2bool %167 %168 398%170 = OpAll %bool %169 399%171 = OpCompositeExtract %v2float %161 1 400%172 = OpCompositeExtract %v2float %166 1 401%173 = OpFOrdEqual %v2bool %171 %172 402%174 = OpAll %bool %173 403%175 = OpLogicalAnd %bool %170 %174 404OpBranch %160 405%160 = OpLabel 406%176 = OpPhi %bool %false %134 %175 %159 407OpStore %ok %176 408%179 = OpCompositeConstruct %v2float %float_5 %float_6 409%180 = OpCompositeConstruct %v2float %float_7 %float_8 410%181 = OpCompositeConstruct %mat2v2float %179 %180 411OpStore %m7 %181 412%182 = OpLoad %bool %ok 413OpSelectionMerge %184 None 414OpBranchConditional %182 %183 %184 415%183 = OpLabel 416%185 = OpLoad %mat2v2float %m7 417%186 = OpCompositeConstruct %v2float %float_5 %float_6 418%187 = OpCompositeConstruct %v2float %float_7 %float_8 419%188 = OpCompositeConstruct %mat2v2float %186 %187 420%189 = OpCompositeExtract %v2float %185 0 421%190 = OpCompositeExtract %v2float %188 0 422%191 = OpFOrdEqual %v2bool %189 %190 423%192 = OpAll %bool %191 424%193 = OpCompositeExtract %v2float %185 1 425%194 = OpCompositeExtract %v2float %188 1 426%195 = OpFOrdEqual %v2bool %193 %194 427%196 = OpAll %bool %195 428%197 = OpLogicalAnd %bool %192 %196 429OpBranch %184 430%184 = OpLabel 431%198 = OpPhi %bool %false %160 %197 %183 432OpStore %ok %198 433%205 = OpCompositeConstruct %v3float %float_9 %float_0 %float_0 434%206 = OpCompositeConstruct %v3float %float_0 %float_9 %float_0 435%207 = OpCompositeConstruct %v3float %float_0 %float_0 %float_9 436%204 = OpCompositeConstruct %mat3v3float %205 %206 %207 437OpStore %m9 %204 438%208 = OpLoad %bool %ok 439OpSelectionMerge %210 None 440OpBranchConditional %208 %209 %210 441%209 = OpLabel 442%211 = OpLoad %mat3v3float %m9 443%212 = OpCompositeConstruct %v3float %float_9 %float_0 %float_0 444%213 = OpCompositeConstruct %v3float %float_0 %float_9 %float_0 445%214 = OpCompositeConstruct %v3float %float_0 %float_0 %float_9 446%215 = OpCompositeConstruct %mat3v3float %212 %213 %214 447%217 = OpCompositeExtract %v3float %211 0 448%218 = OpCompositeExtract %v3float %215 0 449%219 = OpFOrdEqual %v3bool %217 %218 450%220 = OpAll %bool %219 451%221 = OpCompositeExtract %v3float %211 1 452%222 = OpCompositeExtract %v3float %215 1 453%223 = OpFOrdEqual %v3bool %221 %222 454%224 = OpAll %bool %223 455%225 = OpLogicalAnd %bool %220 %224 456%226 = OpCompositeExtract %v3float %211 2 457%227 = OpCompositeExtract %v3float %215 2 458%228 = OpFOrdEqual %v3bool %226 %227 459%229 = OpAll %bool %228 460%230 = OpLogicalAnd %bool %225 %229 461OpBranch %210 462%210 = OpLabel 463%231 = OpPhi %bool %false %184 %230 %209 464OpStore %ok %231 465%237 = OpCompositeConstruct %v4float %float_11 %float_0 %float_0 %float_0 466%238 = OpCompositeConstruct %v4float %float_0 %float_11 %float_0 %float_0 467%239 = OpCompositeConstruct %v4float %float_0 %float_0 %float_11 %float_0 468%240 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %float_11 469%236 = OpCompositeConstruct %mat4v4float %237 %238 %239 %240 470OpStore %m10 %236 471%241 = OpLoad %bool %ok 472OpSelectionMerge %243 None 473OpBranchConditional %241 %242 %243 474%242 = OpLabel 475%244 = OpLoad %mat4v4float %m10 476%245 = OpCompositeConstruct %v4float %float_11 %float_0 %float_0 %float_0 477%246 = OpCompositeConstruct %v4float %float_0 %float_11 %float_0 %float_0 478%247 = OpCompositeConstruct %v4float %float_0 %float_0 %float_11 %float_0 479%248 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %float_11 480%249 = OpCompositeConstruct %mat4v4float %245 %246 %247 %248 481%251 = OpCompositeExtract %v4float %244 0 482%252 = OpCompositeExtract %v4float %249 0 483%253 = OpFOrdEqual %v4bool %251 %252 484%254 = OpAll %bool %253 485%255 = OpCompositeExtract %v4float %244 1 486%256 = OpCompositeExtract %v4float %249 1 487%257 = OpFOrdEqual %v4bool %255 %256 488%258 = OpAll %bool %257 489%259 = OpLogicalAnd %bool %254 %258 490%260 = OpCompositeExtract %v4float %244 2 491%261 = OpCompositeExtract %v4float %249 2 492%262 = OpFOrdEqual %v4bool %260 %261 493%263 = OpAll %bool %262 494%264 = OpLogicalAnd %bool %259 %263 495%265 = OpCompositeExtract %v4float %244 3 496%266 = OpCompositeExtract %v4float %249 3 497%267 = OpFOrdEqual %v4bool %265 %266 498%268 = OpAll %bool %267 499%269 = OpLogicalAnd %bool %264 %268 500OpBranch %243 501%243 = OpLabel 502%270 = OpPhi %bool %false %210 %269 %242 503OpStore %ok %270 504%273 = OpCompositeConstruct %v4float %float_20 %float_20 %float_20 %float_20 505%274 = OpCompositeConstruct %v4float %float_20 %float_20 %float_20 %float_20 506%275 = OpCompositeConstruct %v4float %float_20 %float_20 %float_20 %float_20 507%276 = OpCompositeConstruct %v4float %float_20 %float_20 %float_20 %float_20 508%277 = OpCompositeConstruct %mat4v4float %273 %274 %275 %276 509OpStore %m11 %277 510%278 = OpLoad %mat4v4float %m11 511%279 = OpLoad %mat4v4float %m10 512%280 = OpCompositeExtract %v4float %278 0 513%281 = OpCompositeExtract %v4float %279 0 514%282 = OpFSub %v4float %280 %281 515%283 = OpCompositeExtract %v4float %278 1 516%284 = OpCompositeExtract %v4float %279 1 517%285 = OpFSub %v4float %283 %284 518%286 = OpCompositeExtract %v4float %278 2 519%287 = OpCompositeExtract %v4float %279 2 520%288 = OpFSub %v4float %286 %287 521%289 = OpCompositeExtract %v4float %278 3 522%290 = OpCompositeExtract %v4float %279 3 523%291 = OpFSub %v4float %289 %290 524%292 = OpCompositeConstruct %mat4v4float %282 %285 %288 %291 525OpStore %m11 %292 526%293 = OpLoad %bool %ok 527OpSelectionMerge %295 None 528OpBranchConditional %293 %294 %295 529%294 = OpLabel 530%296 = OpLoad %mat4v4float %m11 531%297 = OpCompositeConstruct %v4float %float_9 %float_20 %float_20 %float_20 532%298 = OpCompositeConstruct %v4float %float_20 %float_9 %float_20 %float_20 533%299 = OpCompositeConstruct %v4float %float_20 %float_20 %float_9 %float_20 534%300 = OpCompositeConstruct %v4float %float_20 %float_20 %float_20 %float_9 535%301 = OpCompositeConstruct %mat4v4float %297 %298 %299 %300 536%302 = OpCompositeExtract %v4float %296 0 537%303 = OpCompositeExtract %v4float %301 0 538%304 = OpFOrdEqual %v4bool %302 %303 539%305 = OpAll %bool %304 540%306 = OpCompositeExtract %v4float %296 1 541%307 = OpCompositeExtract %v4float %301 1 542%308 = OpFOrdEqual %v4bool %306 %307 543%309 = OpAll %bool %308 544%310 = OpLogicalAnd %bool %305 %309 545%311 = OpCompositeExtract %v4float %296 2 546%312 = OpCompositeExtract %v4float %301 2 547%313 = OpFOrdEqual %v4bool %311 %312 548%314 = OpAll %bool %313 549%315 = OpLogicalAnd %bool %310 %314 550%316 = OpCompositeExtract %v4float %296 3 551%317 = OpCompositeExtract %v4float %301 3 552%318 = OpFOrdEqual %v4bool %316 %317 553%319 = OpAll %bool %318 554%320 = OpLogicalAnd %bool %315 %319 555OpBranch %295 556%295 = OpLabel 557%321 = OpPhi %bool %false %243 %320 %294 558OpStore %ok %321 559%322 = OpLoad %bool %ok 560OpReturnValue %322 561OpFunctionEnd 562%test_comma_b = OpFunction %bool None %25 563%323 = OpLabel 564%x = OpVariable %_ptr_Function_mat2v2float Function 565%y = OpVariable %_ptr_Function_mat2v2float Function 566%326 = OpCompositeConstruct %v2float %float_1 %float_2 567%327 = OpCompositeConstruct %v2float %float_3 %float_4 568%328 = OpCompositeConstruct %mat2v2float %326 %327 569OpStore %x %328 570%330 = OpCompositeConstruct %v2float %float_2 %float_4 571%331 = OpCompositeConstruct %v2float %float_6 %float_8 572%332 = OpCompositeConstruct %mat2v2float %330 %331 573%333 = OpMatrixTimesScalar %mat2v2float %332 %float_0_5 574OpStore %y %333 575%334 = OpLoad %mat2v2float %x 576%335 = OpLoad %mat2v2float %y 577%336 = OpCompositeExtract %v2float %334 0 578%337 = OpCompositeExtract %v2float %335 0 579%338 = OpFOrdEqual %v2bool %336 %337 580%339 = OpAll %bool %338 581%340 = OpCompositeExtract %v2float %334 1 582%341 = OpCompositeExtract %v2float %335 1 583%342 = OpFOrdEqual %v2bool %340 %341 584%343 = OpAll %bool %342 585%344 = OpLogicalAnd %bool %339 %343 586OpReturnValue %344 587OpFunctionEnd 588%main = OpFunction %v4float None %345 589%346 = OpFunctionParameter %_ptr_Function_v2float 590%347 = OpLabel 591%_0_ok = OpVariable %_ptr_Function_bool Function 592%_1_m1 = OpVariable %_ptr_Function_mat2v2float Function 593%_2_m3 = OpVariable %_ptr_Function_mat2v2float Function 594%_3_m4 = OpVariable %_ptr_Function_mat2v2float Function 595%_4_m5 = OpVariable %_ptr_Function_mat2v2float Function 596%_5_m7 = OpVariable %_ptr_Function_mat2v2float Function 597%_6_m9 = OpVariable %_ptr_Function_mat3v3float Function 598%_7_m10 = OpVariable %_ptr_Function_mat4v4float Function 599%_8_m11 = OpVariable %_ptr_Function_mat4v4float Function 600%623 = OpVariable %_ptr_Function_v4float Function 601OpStore %_0_ok %true 602%350 = OpCompositeConstruct %v2float %float_1 %float_2 603%351 = OpCompositeConstruct %v2float %float_3 %float_4 604%352 = OpCompositeConstruct %mat2v2float %350 %351 605OpStore %_1_m1 %352 606%353 = OpLoad %bool %_0_ok 607OpSelectionMerge %355 None 608OpBranchConditional %353 %354 %355 609%354 = OpLabel 610%356 = OpLoad %mat2v2float %_1_m1 611%357 = OpCompositeConstruct %v2float %float_1 %float_2 612%358 = OpCompositeConstruct %v2float %float_3 %float_4 613%359 = OpCompositeConstruct %mat2v2float %357 %358 614%360 = OpCompositeExtract %v2float %356 0 615%361 = OpCompositeExtract %v2float %359 0 616%362 = OpFOrdEqual %v2bool %360 %361 617%363 = OpAll %bool %362 618%364 = OpCompositeExtract %v2float %356 1 619%365 = OpCompositeExtract %v2float %359 1 620%366 = OpFOrdEqual %v2bool %364 %365 621%367 = OpAll %bool %366 622%368 = OpLogicalAnd %bool %363 %367 623OpBranch %355 624%355 = OpLabel 625%369 = OpPhi %bool %false %347 %368 %354 626OpStore %_0_ok %369 627%371 = OpLoad %mat2v2float %_1_m1 628OpStore %_2_m3 %371 629%372 = OpLoad %bool %_0_ok 630OpSelectionMerge %374 None 631OpBranchConditional %372 %373 %374 632%373 = OpLabel 633%375 = OpLoad %mat2v2float %_2_m3 634%376 = OpCompositeConstruct %v2float %float_1 %float_2 635%377 = OpCompositeConstruct %v2float %float_3 %float_4 636%378 = OpCompositeConstruct %mat2v2float %376 %377 637%379 = OpCompositeExtract %v2float %375 0 638%380 = OpCompositeExtract %v2float %378 0 639%381 = OpFOrdEqual %v2bool %379 %380 640%382 = OpAll %bool %381 641%383 = OpCompositeExtract %v2float %375 1 642%384 = OpCompositeExtract %v2float %378 1 643%385 = OpFOrdEqual %v2bool %383 %384 644%386 = OpAll %bool %385 645%387 = OpLogicalAnd %bool %382 %386 646OpBranch %374 647%374 = OpLabel 648%388 = OpPhi %bool %false %355 %387 %373 649OpStore %_0_ok %388 650%391 = OpCompositeConstruct %v2float %float_6 %float_0 651%392 = OpCompositeConstruct %v2float %float_0 %float_6 652%390 = OpCompositeConstruct %mat2v2float %391 %392 653OpStore %_3_m4 %390 654%393 = OpLoad %bool %_0_ok 655OpSelectionMerge %395 None 656OpBranchConditional %393 %394 %395 657%394 = OpLabel 658%396 = OpLoad %mat2v2float %_3_m4 659%397 = OpCompositeConstruct %v2float %float_6 %float_0 660%398 = OpCompositeConstruct %v2float %float_0 %float_6 661%399 = OpCompositeConstruct %mat2v2float %397 %398 662%400 = OpCompositeExtract %v2float %396 0 663%401 = OpCompositeExtract %v2float %399 0 664%402 = OpFOrdEqual %v2bool %400 %401 665%403 = OpAll %bool %402 666%404 = OpCompositeExtract %v2float %396 1 667%405 = OpCompositeExtract %v2float %399 1 668%406 = OpFOrdEqual %v2bool %404 %405 669%407 = OpAll %bool %406 670%408 = OpLogicalAnd %bool %403 %407 671OpBranch %395 672%395 = OpLabel 673%409 = OpPhi %bool %false %374 %408 %394 674OpStore %_0_ok %409 675%410 = OpLoad %mat2v2float %_2_m3 676%411 = OpLoad %mat2v2float %_3_m4 677%412 = OpMatrixTimesMatrix %mat2v2float %410 %411 678OpStore %_2_m3 %412 679%413 = OpLoad %bool %_0_ok 680OpSelectionMerge %415 None 681OpBranchConditional %413 %414 %415 682%414 = OpLabel 683%416 = OpLoad %mat2v2float %_2_m3 684%417 = OpCompositeConstruct %v2float %float_6 %float_12 685%418 = OpCompositeConstruct %v2float %float_18 %float_24 686%419 = OpCompositeConstruct %mat2v2float %417 %418 687%420 = OpCompositeExtract %v2float %416 0 688%421 = OpCompositeExtract %v2float %419 0 689%422 = OpFOrdEqual %v2bool %420 %421 690%423 = OpAll %bool %422 691%424 = OpCompositeExtract %v2float %416 1 692%425 = OpCompositeExtract %v2float %419 1 693%426 = OpFOrdEqual %v2bool %424 %425 694%427 = OpAll %bool %426 695%428 = OpLogicalAnd %bool %423 %427 696OpBranch %415 697%415 = OpLabel 698%429 = OpPhi %bool %false %395 %428 %414 699OpStore %_0_ok %429 700%431 = OpAccessChain %_ptr_Function_v2float %_1_m1 %int_1 701%432 = OpLoad %v2float %431 702%433 = OpCompositeExtract %float %432 1 703%435 = OpCompositeConstruct %v2float %433 %float_0 704%436 = OpCompositeConstruct %v2float %float_0 %433 705%434 = OpCompositeConstruct %mat2v2float %435 %436 706OpStore %_4_m5 %434 707%437 = OpLoad %bool %_0_ok 708OpSelectionMerge %439 None 709OpBranchConditional %437 %438 %439 710%438 = OpLabel 711%440 = OpLoad %mat2v2float %_4_m5 712%441 = OpCompositeConstruct %v2float %float_4 %float_0 713%442 = OpCompositeConstruct %v2float %float_0 %float_4 714%443 = OpCompositeConstruct %mat2v2float %441 %442 715%444 = OpCompositeExtract %v2float %440 0 716%445 = OpCompositeExtract %v2float %443 0 717%446 = OpFOrdEqual %v2bool %444 %445 718%447 = OpAll %bool %446 719%448 = OpCompositeExtract %v2float %440 1 720%449 = OpCompositeExtract %v2float %443 1 721%450 = OpFOrdEqual %v2bool %448 %449 722%451 = OpAll %bool %450 723%452 = OpLogicalAnd %bool %447 %451 724OpBranch %439 725%439 = OpLabel 726%453 = OpPhi %bool %false %415 %452 %438 727OpStore %_0_ok %453 728%454 = OpLoad %mat2v2float %_1_m1 729%455 = OpLoad %mat2v2float %_4_m5 730%456 = OpCompositeExtract %v2float %454 0 731%457 = OpCompositeExtract %v2float %455 0 732%458 = OpFAdd %v2float %456 %457 733%459 = OpCompositeExtract %v2float %454 1 734%460 = OpCompositeExtract %v2float %455 1 735%461 = OpFAdd %v2float %459 %460 736%462 = OpCompositeConstruct %mat2v2float %458 %461 737OpStore %_1_m1 %462 738%463 = OpLoad %bool %_0_ok 739OpSelectionMerge %465 None 740OpBranchConditional %463 %464 %465 741%464 = OpLabel 742%466 = OpLoad %mat2v2float %_1_m1 743%467 = OpCompositeConstruct %v2float %float_5 %float_2 744%468 = OpCompositeConstruct %v2float %float_3 %float_8 745%469 = OpCompositeConstruct %mat2v2float %467 %468 746%470 = OpCompositeExtract %v2float %466 0 747%471 = OpCompositeExtract %v2float %469 0 748%472 = OpFOrdEqual %v2bool %470 %471 749%473 = OpAll %bool %472 750%474 = OpCompositeExtract %v2float %466 1 751%475 = OpCompositeExtract %v2float %469 1 752%476 = OpFOrdEqual %v2bool %474 %475 753%477 = OpAll %bool %476 754%478 = OpLogicalAnd %bool %473 %477 755OpBranch %465 756%465 = OpLabel 757%479 = OpPhi %bool %false %439 %478 %464 758OpStore %_0_ok %479 759%481 = OpCompositeConstruct %v2float %float_5 %float_6 760%482 = OpCompositeConstruct %v2float %float_7 %float_8 761%483 = OpCompositeConstruct %mat2v2float %481 %482 762OpStore %_5_m7 %483 763%484 = OpLoad %bool %_0_ok 764OpSelectionMerge %486 None 765OpBranchConditional %484 %485 %486 766%485 = OpLabel 767%487 = OpLoad %mat2v2float %_5_m7 768%488 = OpCompositeConstruct %v2float %float_5 %float_6 769%489 = OpCompositeConstruct %v2float %float_7 %float_8 770%490 = OpCompositeConstruct %mat2v2float %488 %489 771%491 = OpCompositeExtract %v2float %487 0 772%492 = OpCompositeExtract %v2float %490 0 773%493 = OpFOrdEqual %v2bool %491 %492 774%494 = OpAll %bool %493 775%495 = OpCompositeExtract %v2float %487 1 776%496 = OpCompositeExtract %v2float %490 1 777%497 = OpFOrdEqual %v2bool %495 %496 778%498 = OpAll %bool %497 779%499 = OpLogicalAnd %bool %494 %498 780OpBranch %486 781%486 = OpLabel 782%500 = OpPhi %bool %false %465 %499 %485 783OpStore %_0_ok %500 784%503 = OpCompositeConstruct %v3float %float_9 %float_0 %float_0 785%504 = OpCompositeConstruct %v3float %float_0 %float_9 %float_0 786%505 = OpCompositeConstruct %v3float %float_0 %float_0 %float_9 787%502 = OpCompositeConstruct %mat3v3float %503 %504 %505 788OpStore %_6_m9 %502 789%506 = OpLoad %bool %_0_ok 790OpSelectionMerge %508 None 791OpBranchConditional %506 %507 %508 792%507 = OpLabel 793%509 = OpLoad %mat3v3float %_6_m9 794%510 = OpCompositeConstruct %v3float %float_9 %float_0 %float_0 795%511 = OpCompositeConstruct %v3float %float_0 %float_9 %float_0 796%512 = OpCompositeConstruct %v3float %float_0 %float_0 %float_9 797%513 = OpCompositeConstruct %mat3v3float %510 %511 %512 798%514 = OpCompositeExtract %v3float %509 0 799%515 = OpCompositeExtract %v3float %513 0 800%516 = OpFOrdEqual %v3bool %514 %515 801%517 = OpAll %bool %516 802%518 = OpCompositeExtract %v3float %509 1 803%519 = OpCompositeExtract %v3float %513 1 804%520 = OpFOrdEqual %v3bool %518 %519 805%521 = OpAll %bool %520 806%522 = OpLogicalAnd %bool %517 %521 807%523 = OpCompositeExtract %v3float %509 2 808%524 = OpCompositeExtract %v3float %513 2 809%525 = OpFOrdEqual %v3bool %523 %524 810%526 = OpAll %bool %525 811%527 = OpLogicalAnd %bool %522 %526 812OpBranch %508 813%508 = OpLabel 814%528 = OpPhi %bool %false %486 %527 %507 815OpStore %_0_ok %528 816%531 = OpCompositeConstruct %v4float %float_11 %float_0 %float_0 %float_0 817%532 = OpCompositeConstruct %v4float %float_0 %float_11 %float_0 %float_0 818%533 = OpCompositeConstruct %v4float %float_0 %float_0 %float_11 %float_0 819%534 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %float_11 820%530 = OpCompositeConstruct %mat4v4float %531 %532 %533 %534 821OpStore %_7_m10 %530 822%535 = OpLoad %bool %_0_ok 823OpSelectionMerge %537 None 824OpBranchConditional %535 %536 %537 825%536 = OpLabel 826%538 = OpLoad %mat4v4float %_7_m10 827%539 = OpCompositeConstruct %v4float %float_11 %float_0 %float_0 %float_0 828%540 = OpCompositeConstruct %v4float %float_0 %float_11 %float_0 %float_0 829%541 = OpCompositeConstruct %v4float %float_0 %float_0 %float_11 %float_0 830%542 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %float_11 831%543 = OpCompositeConstruct %mat4v4float %539 %540 %541 %542 832%544 = OpCompositeExtract %v4float %538 0 833%545 = OpCompositeExtract %v4float %543 0 834%546 = OpFOrdEqual %v4bool %544 %545 835%547 = OpAll %bool %546 836%548 = OpCompositeExtract %v4float %538 1 837%549 = OpCompositeExtract %v4float %543 1 838%550 = OpFOrdEqual %v4bool %548 %549 839%551 = OpAll %bool %550 840%552 = OpLogicalAnd %bool %547 %551 841%553 = OpCompositeExtract %v4float %538 2 842%554 = OpCompositeExtract %v4float %543 2 843%555 = OpFOrdEqual %v4bool %553 %554 844%556 = OpAll %bool %555 845%557 = OpLogicalAnd %bool %552 %556 846%558 = OpCompositeExtract %v4float %538 3 847%559 = OpCompositeExtract %v4float %543 3 848%560 = OpFOrdEqual %v4bool %558 %559 849%561 = OpAll %bool %560 850%562 = OpLogicalAnd %bool %557 %561 851OpBranch %537 852%537 = OpLabel 853%563 = OpPhi %bool %false %508 %562 %536 854OpStore %_0_ok %563 855%565 = OpCompositeConstruct %v4float %float_20 %float_20 %float_20 %float_20 856%566 = OpCompositeConstruct %v4float %float_20 %float_20 %float_20 %float_20 857%567 = OpCompositeConstruct %v4float %float_20 %float_20 %float_20 %float_20 858%568 = OpCompositeConstruct %v4float %float_20 %float_20 %float_20 %float_20 859%569 = OpCompositeConstruct %mat4v4float %565 %566 %567 %568 860OpStore %_8_m11 %569 861%570 = OpLoad %mat4v4float %_8_m11 862%571 = OpLoad %mat4v4float %_7_m10 863%572 = OpCompositeExtract %v4float %570 0 864%573 = OpCompositeExtract %v4float %571 0 865%574 = OpFSub %v4float %572 %573 866%575 = OpCompositeExtract %v4float %570 1 867%576 = OpCompositeExtract %v4float %571 1 868%577 = OpFSub %v4float %575 %576 869%578 = OpCompositeExtract %v4float %570 2 870%579 = OpCompositeExtract %v4float %571 2 871%580 = OpFSub %v4float %578 %579 872%581 = OpCompositeExtract %v4float %570 3 873%582 = OpCompositeExtract %v4float %571 3 874%583 = OpFSub %v4float %581 %582 875%584 = OpCompositeConstruct %mat4v4float %574 %577 %580 %583 876OpStore %_8_m11 %584 877%585 = OpLoad %bool %_0_ok 878OpSelectionMerge %587 None 879OpBranchConditional %585 %586 %587 880%586 = OpLabel 881%588 = OpLoad %mat4v4float %_8_m11 882%589 = OpCompositeConstruct %v4float %float_9 %float_20 %float_20 %float_20 883%590 = OpCompositeConstruct %v4float %float_20 %float_9 %float_20 %float_20 884%591 = OpCompositeConstruct %v4float %float_20 %float_20 %float_9 %float_20 885%592 = OpCompositeConstruct %v4float %float_20 %float_20 %float_20 %float_9 886%593 = OpCompositeConstruct %mat4v4float %589 %590 %591 %592 887%594 = OpCompositeExtract %v4float %588 0 888%595 = OpCompositeExtract %v4float %593 0 889%596 = OpFOrdEqual %v4bool %594 %595 890%597 = OpAll %bool %596 891%598 = OpCompositeExtract %v4float %588 1 892%599 = OpCompositeExtract %v4float %593 1 893%600 = OpFOrdEqual %v4bool %598 %599 894%601 = OpAll %bool %600 895%602 = OpLogicalAnd %bool %597 %601 896%603 = OpCompositeExtract %v4float %588 2 897%604 = OpCompositeExtract %v4float %593 2 898%605 = OpFOrdEqual %v4bool %603 %604 899%606 = OpAll %bool %605 900%607 = OpLogicalAnd %bool %602 %606 901%608 = OpCompositeExtract %v4float %588 3 902%609 = OpCompositeExtract %v4float %593 3 903%610 = OpFOrdEqual %v4bool %608 %609 904%611 = OpAll %bool %610 905%612 = OpLogicalAnd %bool %607 %611 906OpBranch %587 907%587 = OpLabel 908%613 = OpPhi %bool %false %537 %612 %586 909OpStore %_0_ok %613 910%614 = OpLoad %bool %_0_ok 911OpSelectionMerge %616 None 912OpBranchConditional %614 %615 %616 913%615 = OpLabel 914%617 = OpFunctionCall %bool %test_half_b 915OpBranch %616 916%616 = OpLabel 917%618 = OpPhi %bool %false %587 %617 %615 918OpSelectionMerge %620 None 919OpBranchConditional %618 %619 %620 920%619 = OpLabel 921%621 = OpFunctionCall %bool %test_comma_b 922OpBranch %620 923%620 = OpLabel 924%622 = OpPhi %bool %false %616 %621 %619 925OpSelectionMerge %627 None 926OpBranchConditional %622 %625 %626 927%625 = OpLabel 928%628 = OpAccessChain %_ptr_Uniform_v4float %12 %int_0 929%631 = OpLoad %v4float %628 930OpStore %623 %631 931OpBranch %627 932%626 = OpLabel 933%632 = OpAccessChain %_ptr_Uniform_v4float %12 %int_1 934%633 = OpLoad %v4float %632 935OpStore %623 %633 936OpBranch %627 937%627 = OpLabel 938%634 = OpLoad %v4float %623 939OpReturnValue %634 940OpFunctionEnd 941