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 "testInputs" 11 OpName %_entrypoint_v "_entrypoint_v" 12 OpName %main "main" 13 OpName %ok "ok" 14 OpDecorate %sk_FragColor RelaxedPrecision 15 OpDecorate %sk_FragColor Location 0 16 OpDecorate %sk_FragColor Index 0 17 OpMemberDecorate %_UniformBuffer 0 Offset 0 18 OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision 19 OpMemberDecorate %_UniformBuffer 1 Offset 16 20 OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision 21 OpMemberDecorate %_UniformBuffer 2 Offset 32 22 OpMemberDecorate %_UniformBuffer 2 RelaxedPrecision 23 OpDecorate %_UniformBuffer Block 24 OpDecorate %7 Binding 0 25 OpDecorate %7 DescriptorSet 0 26 OpDecorate %34 RelaxedPrecision 27 OpDecorate %35 RelaxedPrecision 28 OpDecorate %36 RelaxedPrecision 29 OpDecorate %37 RelaxedPrecision 30 OpDecorate %38 RelaxedPrecision 31 OpDecorate %39 RelaxedPrecision 32 OpDecorate %40 RelaxedPrecision 33 OpDecorate %42 RelaxedPrecision 34 OpDecorate %50 RelaxedPrecision 35 OpDecorate %52 RelaxedPrecision 36 OpDecorate %59 RelaxedPrecision 37 OpDecorate %77 RelaxedPrecision 38 OpDecorate %78 RelaxedPrecision 39 OpDecorate %79 RelaxedPrecision 40 OpDecorate %80 RelaxedPrecision 41 OpDecorate %81 RelaxedPrecision 42 OpDecorate %82 RelaxedPrecision 43 OpDecorate %83 RelaxedPrecision 44 OpDecorate %84 RelaxedPrecision 45 OpDecorate %88 RelaxedPrecision 46 OpDecorate %90 RelaxedPrecision 47 OpDecorate %97 RelaxedPrecision 48 OpDecorate %98 RelaxedPrecision 49 OpDecorate %99 RelaxedPrecision 50 OpDecorate %100 RelaxedPrecision 51 OpDecorate %101 RelaxedPrecision 52 OpDecorate %102 RelaxedPrecision 53 OpDecorate %103 RelaxedPrecision 54 OpDecorate %104 RelaxedPrecision 55 OpDecorate %105 RelaxedPrecision 56 OpDecorate %107 RelaxedPrecision 57 OpDecorate %114 RelaxedPrecision 58 OpDecorate %115 RelaxedPrecision 59 OpDecorate %117 RelaxedPrecision 60 OpDecorate %119 RelaxedPrecision 61 OpDecorate %121 RelaxedPrecision 62 OpDecorate %126 RelaxedPrecision 63 OpDecorate %128 RelaxedPrecision 64 OpDecorate %130 RelaxedPrecision 65 OpDecorate %132 RelaxedPrecision 66 OpDecorate %133 RelaxedPrecision 67 OpDecorate %134 RelaxedPrecision 68 OpDecorate %135 RelaxedPrecision 69 OpDecorate %136 RelaxedPrecision 70 OpDecorate %137 RelaxedPrecision 71 OpDecorate %138 RelaxedPrecision 72 OpDecorate %139 RelaxedPrecision 73 OpDecorate %140 RelaxedPrecision 74 OpDecorate %141 RelaxedPrecision 75 OpDecorate %143 RelaxedPrecision 76 OpDecorate %150 RelaxedPrecision 77 OpDecorate %151 RelaxedPrecision 78 OpDecorate %152 RelaxedPrecision 79 OpDecorate %153 RelaxedPrecision 80 OpDecorate %154 RelaxedPrecision 81 OpDecorate %155 RelaxedPrecision 82 OpDecorate %156 RelaxedPrecision 83 OpDecorate %157 RelaxedPrecision 84 OpDecorate %158 RelaxedPrecision 85 OpDecorate %160 RelaxedPrecision 86 OpDecorate %167 RelaxedPrecision 87 OpDecorate %168 RelaxedPrecision 88 OpDecorate %169 RelaxedPrecision 89 OpDecorate %170 RelaxedPrecision 90 OpDecorate %171 RelaxedPrecision 91 OpDecorate %172 RelaxedPrecision 92 OpDecorate %173 RelaxedPrecision 93 OpDecorate %174 RelaxedPrecision 94 OpDecorate %175 RelaxedPrecision 95 OpDecorate %177 RelaxedPrecision 96 OpDecorate %184 RelaxedPrecision 97 OpDecorate %185 RelaxedPrecision 98 OpDecorate %187 RelaxedPrecision 99 OpDecorate %189 RelaxedPrecision 100 OpDecorate %191 RelaxedPrecision 101 OpDecorate %196 RelaxedPrecision 102 OpDecorate %198 RelaxedPrecision 103 OpDecorate %200 RelaxedPrecision 104 OpDecorate %202 RelaxedPrecision 105 OpDecorate %203 RelaxedPrecision 106 OpDecorate %204 RelaxedPrecision 107 OpDecorate %205 RelaxedPrecision 108 OpDecorate %206 RelaxedPrecision 109 OpDecorate %207 RelaxedPrecision 110 OpDecorate %208 RelaxedPrecision 111 OpDecorate %209 RelaxedPrecision 112 OpDecorate %210 RelaxedPrecision 113 OpDecorate %211 RelaxedPrecision 114 OpDecorate %213 RelaxedPrecision 115 OpDecorate %220 RelaxedPrecision 116 OpDecorate %223 RelaxedPrecision 117 OpDecorate %224 RelaxedPrecision 118 OpDecorate %225 RelaxedPrecision 119 OpDecorate %226 RelaxedPrecision 120 OpDecorate %227 RelaxedPrecision 121 OpDecorate %228 RelaxedPrecision 122 OpDecorate %229 RelaxedPrecision 123 OpDecorate %230 RelaxedPrecision 124 OpDecorate %231 RelaxedPrecision 125 OpDecorate %235 RelaxedPrecision 126 OpDecorate %237 RelaxedPrecision 127 OpDecorate %244 RelaxedPrecision 128 OpDecorate %247 RelaxedPrecision 129 OpDecorate %248 RelaxedPrecision 130 OpDecorate %249 RelaxedPrecision 131 OpDecorate %250 RelaxedPrecision 132 OpDecorate %251 RelaxedPrecision 133 OpDecorate %252 RelaxedPrecision 134 OpDecorate %253 RelaxedPrecision 135 OpDecorate %254 RelaxedPrecision 136 OpDecorate %258 RelaxedPrecision 137 OpDecorate %260 RelaxedPrecision 138 OpDecorate %270 RelaxedPrecision 139 OpDecorate %272 RelaxedPrecision 140 OpDecorate %273 RelaxedPrecision 141 %float = OpTypeFloat 32 142 %v4float = OpTypeVector %float 4 143%_ptr_Output_v4float = OpTypePointer Output %v4float 144%sk_FragColor = OpVariable %_ptr_Output_v4float Output 145%_UniformBuffer = OpTypeStruct %v4float %v4float %v4float 146%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer 147 %7 = OpVariable %_ptr_Uniform__UniformBuffer Uniform 148 %void = OpTypeVoid 149 %12 = OpTypeFunction %void 150 %float_0 = OpConstant %float 0 151 %v2float = OpTypeVector %float 2 152 %16 = OpConstantComposite %v2float %float_0 %float_0 153%_ptr_Function_v2float = OpTypePointer Function %v2float 154 %20 = OpTypeFunction %v4float %_ptr_Function_v2float 155 %bool = OpTypeBool 156%_ptr_Function_bool = OpTypePointer Function %bool 157 %true = OpConstantTrue %bool 158 %false = OpConstantFalse %bool 159%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float 160 %int = OpTypeInt 32 1 161 %int_2 = OpConstant %int 2 162%mat2v2float = OpTypeMatrix %v2float 2 163%float_n1_25 = OpConstant %float -1.25 164 %float_0_75 = OpConstant %float 0.75 165 %float_2_25 = OpConstant %float 2.25 166 %46 = OpConstantComposite %v2float %float_n1_25 %float_0 167 %47 = OpConstantComposite %v2float %float_0_75 %float_2_25 168 %48 = OpConstantComposite %mat2v2float %46 %47 169 %v2bool = OpTypeVector %bool 2 170 %int_0 = OpConstant %int 0 171 %float_1 = OpConstant %float 1 172 %86 = OpConstantComposite %v2float %float_0 %float_1 173 %87 = OpConstantComposite %mat2v2float %86 %86 174 %v4int = OpTypeVector %int 4 175 %v4bool = OpTypeVector %bool 4 176 %int_1 = OpConstant %int 1 177 %float_n1 = OpConstant %float -1 178 %233 = OpConstantComposite %v2float %float_n1 %float_1 179 %234 = OpConstantComposite %mat2v2float %233 %16 180 %float_5 = OpConstant %float 5 181 %246 = OpConstantComposite %v4float %float_5 %float_5 %float_5 %float_5 182 %float_6 = OpConstant %float 6 183 %256 = OpConstantComposite %v2float %float_5 %float_6 184 %257 = OpConstantComposite %mat2v2float %256 %256 185%_ptr_Function_v4float = OpTypePointer Function %v4float 186%_entrypoint_v = OpFunction %void None %12 187 %13 = OpLabel 188 %17 = OpVariable %_ptr_Function_v2float Function 189 OpStore %17 %16 190 %19 = OpFunctionCall %v4float %main %17 191 OpStore %sk_FragColor %19 192 OpReturn 193 OpFunctionEnd 194 %main = OpFunction %v4float None %20 195 %21 = OpFunctionParameter %_ptr_Function_v2float 196 %22 = OpLabel 197 %ok = OpVariable %_ptr_Function_bool Function 198 %264 = OpVariable %_ptr_Function_v4float Function 199 OpStore %ok %true 200 OpSelectionMerge %29 None 201 OpBranchConditional %true %28 %29 202 %28 = OpLabel 203 %30 = OpAccessChain %_ptr_Uniform_v4float %7 %int_2 204 %34 = OpLoad %v4float %30 205 %35 = OpCompositeExtract %float %34 0 206 %36 = OpCompositeExtract %float %34 1 207 %37 = OpCompositeExtract %float %34 2 208 %38 = OpCompositeExtract %float %34 3 209 %39 = OpCompositeConstruct %v2float %35 %36 210 %40 = OpCompositeConstruct %v2float %37 %38 211 %42 = OpCompositeConstruct %mat2v2float %39 %40 212 %50 = OpFOrdEqual %v2bool %39 %46 213 %51 = OpAll %bool %50 214 %52 = OpFOrdEqual %v2bool %40 %47 215 %53 = OpAll %bool %52 216 %54 = OpLogicalAnd %bool %51 %53 217 OpBranch %29 218 %29 = OpLabel 219 %55 = OpPhi %bool %false %22 %54 %28 220 OpStore %ok %55 221 OpSelectionMerge %57 None 222 OpBranchConditional %55 %56 %57 223 %56 = OpLabel 224 %58 = OpAccessChain %_ptr_Uniform_v4float %7 %int_2 225 %59 = OpLoad %v4float %58 226 %60 = OpCompositeExtract %float %59 0 227 %61 = OpCompositeExtract %float %59 1 228 %62 = OpCompositeExtract %float %59 2 229 %63 = OpCompositeExtract %float %59 3 230 %64 = OpCompositeConstruct %v2float %60 %61 231 %65 = OpCompositeConstruct %v2float %62 %63 232 %66 = OpCompositeConstruct %mat2v2float %64 %65 233 %67 = OpFOrdEqual %v2bool %64 %46 234 %68 = OpAll %bool %67 235 %69 = OpFOrdEqual %v2bool %65 %47 236 %70 = OpAll %bool %69 237 %71 = OpLogicalAnd %bool %68 %70 238 OpBranch %57 239 %57 = OpLabel 240 %72 = OpPhi %bool %false %29 %71 %56 241 OpStore %ok %72 242 OpSelectionMerge %74 None 243 OpBranchConditional %72 %73 %74 244 %73 = OpLabel 245 %75 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0 246 %77 = OpLoad %v4float %75 247 %78 = OpCompositeExtract %float %77 0 248 %79 = OpCompositeExtract %float %77 1 249 %80 = OpCompositeExtract %float %77 2 250 %81 = OpCompositeExtract %float %77 3 251 %82 = OpCompositeConstruct %v2float %78 %79 252 %83 = OpCompositeConstruct %v2float %80 %81 253 %84 = OpCompositeConstruct %mat2v2float %82 %83 254 %88 = OpFOrdEqual %v2bool %82 %86 255 %89 = OpAll %bool %88 256 %90 = OpFOrdEqual %v2bool %83 %86 257 %91 = OpAll %bool %90 258 %92 = OpLogicalAnd %bool %89 %91 259 OpBranch %74 260 %74 = OpLabel 261 %93 = OpPhi %bool %false %57 %92 %73 262 OpStore %ok %93 263 OpSelectionMerge %95 None 264 OpBranchConditional %93 %94 %95 265 %94 = OpLabel 266 %96 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0 267 %97 = OpLoad %v4float %96 268 %98 = OpCompositeExtract %float %97 0 269 %99 = OpCompositeExtract %float %97 1 270 %100 = OpCompositeExtract %float %97 2 271 %101 = OpCompositeExtract %float %97 3 272 %102 = OpCompositeConstruct %v2float %98 %99 273 %103 = OpCompositeConstruct %v2float %100 %101 274 %104 = OpCompositeConstruct %mat2v2float %102 %103 275 %105 = OpFOrdEqual %v2bool %102 %86 276 %106 = OpAll %bool %105 277 %107 = OpFOrdEqual %v2bool %103 %86 278 %108 = OpAll %bool %107 279 %109 = OpLogicalAnd %bool %106 %108 280 OpBranch %95 281 %95 = OpLabel 282 %110 = OpPhi %bool %false %74 %109 %94 283 OpStore %ok %110 284 OpSelectionMerge %112 None 285 OpBranchConditional %110 %111 %112 286 %111 = OpLabel 287 %113 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0 288 %114 = OpLoad %v4float %113 289 %115 = OpCompositeExtract %float %114 0 290 %116 = OpConvertFToS %int %115 291 %117 = OpCompositeExtract %float %114 1 292 %118 = OpConvertFToS %int %117 293 %119 = OpCompositeExtract %float %114 2 294 %120 = OpConvertFToS %int %119 295 %121 = OpCompositeExtract %float %114 3 296 %122 = OpConvertFToS %int %121 297 %124 = OpCompositeConstruct %v4int %116 %118 %120 %122 298 %125 = OpCompositeExtract %int %124 0 299 %126 = OpConvertSToF %float %125 300 %127 = OpCompositeExtract %int %124 1 301 %128 = OpConvertSToF %float %127 302 %129 = OpCompositeExtract %int %124 2 303 %130 = OpConvertSToF %float %129 304 %131 = OpCompositeExtract %int %124 3 305 %132 = OpConvertSToF %float %131 306 %133 = OpCompositeConstruct %v4float %126 %128 %130 %132 307 %134 = OpCompositeExtract %float %133 0 308 %135 = OpCompositeExtract %float %133 1 309 %136 = OpCompositeExtract %float %133 2 310 %137 = OpCompositeExtract %float %133 3 311 %138 = OpCompositeConstruct %v2float %134 %135 312 %139 = OpCompositeConstruct %v2float %136 %137 313 %140 = OpCompositeConstruct %mat2v2float %138 %139 314 %141 = OpFOrdEqual %v2bool %138 %86 315 %142 = OpAll %bool %141 316 %143 = OpFOrdEqual %v2bool %139 %86 317 %144 = OpAll %bool %143 318 %145 = OpLogicalAnd %bool %142 %144 319 OpBranch %112 320 %112 = OpLabel 321 %146 = OpPhi %bool %false %95 %145 %111 322 OpStore %ok %146 323 OpSelectionMerge %148 None 324 OpBranchConditional %146 %147 %148 325 %147 = OpLabel 326 %149 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0 327 %150 = OpLoad %v4float %149 328 %151 = OpCompositeExtract %float %150 0 329 %152 = OpCompositeExtract %float %150 1 330 %153 = OpCompositeExtract %float %150 2 331 %154 = OpCompositeExtract %float %150 3 332 %155 = OpCompositeConstruct %v2float %151 %152 333 %156 = OpCompositeConstruct %v2float %153 %154 334 %157 = OpCompositeConstruct %mat2v2float %155 %156 335 %158 = OpFOrdEqual %v2bool %155 %86 336 %159 = OpAll %bool %158 337 %160 = OpFOrdEqual %v2bool %156 %86 338 %161 = OpAll %bool %160 339 %162 = OpLogicalAnd %bool %159 %161 340 OpBranch %148 341 %148 = OpLabel 342 %163 = OpPhi %bool %false %112 %162 %147 343 OpStore %ok %163 344 OpSelectionMerge %165 None 345 OpBranchConditional %163 %164 %165 346 %164 = OpLabel 347 %166 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0 348 %167 = OpLoad %v4float %166 349 %168 = OpCompositeExtract %float %167 0 350 %169 = OpCompositeExtract %float %167 1 351 %170 = OpCompositeExtract %float %167 2 352 %171 = OpCompositeExtract %float %167 3 353 %172 = OpCompositeConstruct %v2float %168 %169 354 %173 = OpCompositeConstruct %v2float %170 %171 355 %174 = OpCompositeConstruct %mat2v2float %172 %173 356 %175 = OpFOrdEqual %v2bool %172 %86 357 %176 = OpAll %bool %175 358 %177 = OpFOrdEqual %v2bool %173 %86 359 %178 = OpAll %bool %177 360 %179 = OpLogicalAnd %bool %176 %178 361 OpBranch %165 362 %165 = OpLabel 363 %180 = OpPhi %bool %false %148 %179 %164 364 OpStore %ok %180 365 OpSelectionMerge %182 None 366 OpBranchConditional %180 %181 %182 367 %181 = OpLabel 368 %183 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0 369 %184 = OpLoad %v4float %183 370 %185 = OpCompositeExtract %float %184 0 371 %186 = OpFUnordNotEqual %bool %185 %float_0 372 %187 = OpCompositeExtract %float %184 1 373 %188 = OpFUnordNotEqual %bool %187 %float_0 374 %189 = OpCompositeExtract %float %184 2 375 %190 = OpFUnordNotEqual %bool %189 %float_0 376 %191 = OpCompositeExtract %float %184 3 377 %192 = OpFUnordNotEqual %bool %191 %float_0 378 %194 = OpCompositeConstruct %v4bool %186 %188 %190 %192 379 %195 = OpCompositeExtract %bool %194 0 380 %196 = OpSelect %float %195 %float_1 %float_0 381 %197 = OpCompositeExtract %bool %194 1 382 %198 = OpSelect %float %197 %float_1 %float_0 383 %199 = OpCompositeExtract %bool %194 2 384 %200 = OpSelect %float %199 %float_1 %float_0 385 %201 = OpCompositeExtract %bool %194 3 386 %202 = OpSelect %float %201 %float_1 %float_0 387 %203 = OpCompositeConstruct %v4float %196 %198 %200 %202 388 %204 = OpCompositeExtract %float %203 0 389 %205 = OpCompositeExtract %float %203 1 390 %206 = OpCompositeExtract %float %203 2 391 %207 = OpCompositeExtract %float %203 3 392 %208 = OpCompositeConstruct %v2float %204 %205 393 %209 = OpCompositeConstruct %v2float %206 %207 394 %210 = OpCompositeConstruct %mat2v2float %208 %209 395 %211 = OpFOrdEqual %v2bool %208 %86 396 %212 = OpAll %bool %211 397 %213 = OpFOrdEqual %v2bool %209 %86 398 %214 = OpAll %bool %213 399 %215 = OpLogicalAnd %bool %212 %214 400 OpBranch %182 401 %182 = OpLabel 402 %216 = OpPhi %bool %false %165 %215 %181 403 OpStore %ok %216 404 OpSelectionMerge %218 None 405 OpBranchConditional %216 %217 %218 406 %217 = OpLabel 407 %219 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0 408 %220 = OpLoad %v4float %219 409 %221 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1 410 %223 = OpLoad %v4float %221 411 %224 = OpFSub %v4float %220 %223 412 %225 = OpCompositeExtract %float %224 0 413 %226 = OpCompositeExtract %float %224 1 414 %227 = OpCompositeExtract %float %224 2 415 %228 = OpCompositeExtract %float %224 3 416 %229 = OpCompositeConstruct %v2float %225 %226 417 %230 = OpCompositeConstruct %v2float %227 %228 418 %231 = OpCompositeConstruct %mat2v2float %229 %230 419 %235 = OpFOrdEqual %v2bool %229 %233 420 %236 = OpAll %bool %235 421 %237 = OpFOrdEqual %v2bool %230 %16 422 %238 = OpAll %bool %237 423 %239 = OpLogicalAnd %bool %236 %238 424 OpBranch %218 425 %218 = OpLabel 426 %240 = OpPhi %bool %false %182 %239 %217 427 OpStore %ok %240 428 OpSelectionMerge %242 None 429 OpBranchConditional %240 %241 %242 430 %241 = OpLabel 431 %243 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0 432 %244 = OpLoad %v4float %243 433 %247 = OpFAdd %v4float %244 %246 434 %248 = OpCompositeExtract %float %247 0 435 %249 = OpCompositeExtract %float %247 1 436 %250 = OpCompositeExtract %float %247 2 437 %251 = OpCompositeExtract %float %247 3 438 %252 = OpCompositeConstruct %v2float %248 %249 439 %253 = OpCompositeConstruct %v2float %250 %251 440 %254 = OpCompositeConstruct %mat2v2float %252 %253 441 %258 = OpFOrdEqual %v2bool %252 %256 442 %259 = OpAll %bool %258 443 %260 = OpFOrdEqual %v2bool %253 %256 444 %261 = OpAll %bool %260 445 %262 = OpLogicalAnd %bool %259 %261 446 OpBranch %242 447 %242 = OpLabel 448 %263 = OpPhi %bool %false %218 %262 %241 449 OpStore %ok %263 450 OpSelectionMerge %268 None 451 OpBranchConditional %263 %266 %267 452 %266 = OpLabel 453 %269 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0 454 %270 = OpLoad %v4float %269 455 OpStore %264 %270 456 OpBranch %268 457 %267 = OpLabel 458 %271 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1 459 %272 = OpLoad %v4float %271 460 OpStore %264 %272 461 OpBranch %268 462 %268 = OpLabel 463 %273 = OpLoad %v4float %264 464 OpReturnValue %273 465 OpFunctionEnd 466