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