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