skia2/tests/sksl/intrinsics/MixBool.asm.frag
John Stiles 8c2a505432 Replace scalar/vector ID caches with op cache.
The output changes here are almost entirely a wash, because we already
had support for caching scalars and vectors. Almost all changes are just
inconsequential reorderings of IDs, and the removal of RelaxedPrecision
decorators on constants (which were not meaningful).

Change-Id: I45340c4a240cb504b7c4a934b3db178d2f39ec99
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/528709
Reviewed-by: Arman Uguray <armansito@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2022-04-12 21:33:50 +00:00

717 lines
24 KiB
JavaScript

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