skia2/tests/sksl/shared/VectorScalarMath.asm.frag

837 lines
26 KiB
GLSL
Raw Normal View History

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 "colorRed"
OpMemberName %_UniformBuffer 1 "colorGreen"
OpMemberName %_UniformBuffer 2 "unknownInput"
OpName %_entrypoint_v "_entrypoint_v"
OpName %test_int_b "test_int_b"
OpName %ok "ok"
OpName %inputRed "inputRed"
OpName %inputGreen "inputGreen"
OpName %x "x"
OpName %main "main"
OpName %_0_ok "_0_ok"
OpName %_1_inputRed "_1_inputRed"
OpName %_2_inputGreen "_2_inputGreen"
OpName %_3_x "_3_x"
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
OpDecorate %_UniformBuffer Block
OpDecorate %11 Binding 0
OpDecorate %11 DescriptorSet 0
OpDecorate %36 RelaxedPrecision
OpDecorate %37 RelaxedPrecision
OpDecorate %39 RelaxedPrecision
OpDecorate %41 RelaxedPrecision
OpDecorate %43 RelaxedPrecision
OpDecorate %49 RelaxedPrecision
OpDecorate %50 RelaxedPrecision
OpDecorate %52 RelaxedPrecision
OpDecorate %54 RelaxedPrecision
OpDecorate %56 RelaxedPrecision
OpDecorate %65 RelaxedPrecision
OpDecorate %79 RelaxedPrecision
OpDecorate %94 RelaxedPrecision
OpDecorate %110 RelaxedPrecision
OpDecorate %125 RelaxedPrecision
OpDecorate %138 RelaxedPrecision
OpDecorate %149 RelaxedPrecision
OpDecorate %161 RelaxedPrecision
OpDecorate %174 RelaxedPrecision
OpDecorate %188 RelaxedPrecision
OpDecorate %202 RelaxedPrecision
OpDecorate %216 RelaxedPrecision
OpDecorate %236 RelaxedPrecision
OpDecorate %255 RelaxedPrecision
OpDecorate %262 RelaxedPrecision
OpDecorate %_1_inputRed RelaxedPrecision
OpDecorate %270 RelaxedPrecision
OpDecorate %_2_inputGreen RelaxedPrecision
OpDecorate %273 RelaxedPrecision
OpDecorate %_3_x RelaxedPrecision
OpDecorate %275 RelaxedPrecision
OpDecorate %277 RelaxedPrecision
OpDecorate %278 RelaxedPrecision
OpDecorate %279 RelaxedPrecision
OpDecorate %282 RelaxedPrecision
OpDecorate %284 RelaxedPrecision
OpDecorate %288 RelaxedPrecision
OpDecorate %289 RelaxedPrecision
OpDecorate %290 RelaxedPrecision
OpDecorate %291 RelaxedPrecision
OpDecorate %292 RelaxedPrecision
OpDecorate %295 RelaxedPrecision
OpDecorate %298 RelaxedPrecision
OpDecorate %302 RelaxedPrecision
OpDecorate %303 RelaxedPrecision
OpDecorate %304 RelaxedPrecision
OpDecorate %305 RelaxedPrecision
OpDecorate %306 RelaxedPrecision
OpDecorate %307 RelaxedPrecision
OpDecorate %310 RelaxedPrecision
OpDecorate %312 RelaxedPrecision
OpDecorate %316 RelaxedPrecision
OpDecorate %317 RelaxedPrecision
OpDecorate %320 RelaxedPrecision
OpDecorate %321 RelaxedPrecision
OpDecorate %322 RelaxedPrecision
OpDecorate %323 RelaxedPrecision
OpDecorate %326 RelaxedPrecision
OpDecorate %327 RelaxedPrecision
OpDecorate %331 RelaxedPrecision
OpDecorate %332 RelaxedPrecision
OpDecorate %333 RelaxedPrecision
OpDecorate %334 RelaxedPrecision
OpDecorate %335 RelaxedPrecision
OpDecorate %336 RelaxedPrecision
OpDecorate %339 RelaxedPrecision
OpDecorate %342 RelaxedPrecision
OpDecorate %346 RelaxedPrecision
OpDecorate %348 RelaxedPrecision
OpDecorate %349 RelaxedPrecision
OpDecorate %350 RelaxedPrecision
OpDecorate %353 RelaxedPrecision
OpDecorate %354 RelaxedPrecision
OpDecorate %358 RelaxedPrecision
OpDecorate %359 RelaxedPrecision
OpDecorate %360 RelaxedPrecision
OpDecorate %361 RelaxedPrecision
OpDecorate %364 RelaxedPrecision
OpDecorate %369 RelaxedPrecision
OpDecorate %370 RelaxedPrecision
OpDecorate %371 RelaxedPrecision
OpDecorate %372 RelaxedPrecision
OpDecorate %373 RelaxedPrecision
OpDecorate %376 RelaxedPrecision
OpDecorate %377 RelaxedPrecision
OpDecorate %381 RelaxedPrecision
OpDecorate %382 RelaxedPrecision
OpDecorate %383 RelaxedPrecision
OpDecorate %384 RelaxedPrecision
OpDecorate %385 RelaxedPrecision
OpDecorate %386 RelaxedPrecision
OpDecorate %389 RelaxedPrecision
OpDecorate %390 RelaxedPrecision
OpDecorate %394 RelaxedPrecision
OpDecorate %395 RelaxedPrecision
OpDecorate %396 RelaxedPrecision
OpDecorate %397 RelaxedPrecision
OpDecorate %398 RelaxedPrecision
OpDecorate %399 RelaxedPrecision
OpDecorate %402 RelaxedPrecision
OpDecorate %407 RelaxedPrecision
OpDecorate %408 RelaxedPrecision
OpDecorate %409 RelaxedPrecision
OpDecorate %410 RelaxedPrecision
OpDecorate %411 RelaxedPrecision
OpDecorate %412 RelaxedPrecision
OpDecorate %413 RelaxedPrecision
OpDecorate %416 RelaxedPrecision
OpDecorate %417 RelaxedPrecision
OpDecorate %421 RelaxedPrecision
OpDecorate %422 RelaxedPrecision
OpDecorate %423 RelaxedPrecision
OpDecorate %424 RelaxedPrecision
OpDecorate %425 RelaxedPrecision
OpDecorate %428 RelaxedPrecision
OpDecorate %429 RelaxedPrecision
OpDecorate %433 RelaxedPrecision
OpDecorate %434 RelaxedPrecision
OpDecorate %435 RelaxedPrecision
OpDecorate %436 RelaxedPrecision
OpDecorate %437 RelaxedPrecision
OpDecorate %438 RelaxedPrecision
OpDecorate %439 RelaxedPrecision
OpDecorate %440 RelaxedPrecision
OpDecorate %441 RelaxedPrecision
OpDecorate %442 RelaxedPrecision
OpDecorate %443 RelaxedPrecision
OpDecorate %444 RelaxedPrecision
OpDecorate %447 RelaxedPrecision
OpDecorate %451 RelaxedPrecision
OpDecorate %452 RelaxedPrecision
OpDecorate %453 RelaxedPrecision
OpDecorate %454 RelaxedPrecision
OpDecorate %455 RelaxedPrecision
OpDecorate %456 RelaxedPrecision
OpDecorate %457 RelaxedPrecision
OpDecorate %458 RelaxedPrecision
OpDecorate %459 RelaxedPrecision
OpDecorate %461 RelaxedPrecision
OpDecorate %462 RelaxedPrecision
OpDecorate %465 RelaxedPrecision
OpDecorate %469 RelaxedPrecision
OpDecorate %479 RelaxedPrecision
OpDecorate %481 RelaxedPrecision
OpDecorate %482 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 %float
%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer
%11 = OpVariable %_ptr_Uniform__UniformBuffer Uniform
%void = OpTypeVoid
%16 = OpTypeFunction %void
%v2float = OpTypeVector %float 2
%float_0 = OpConstant %float 0
%20 = OpConstantComposite %v2float %float_0 %float_0
%_ptr_Function_v2float = OpTypePointer Function %v2float
%24 = OpTypeFunction %bool
%_ptr_Function_bool = OpTypePointer Function %bool
%true = OpConstantTrue %bool
%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
%int_1 = OpConstant %int 1
%int_2 = OpConstant %int 2
%false = OpConstantFalse %bool
%int_3 = OpConstant %int 3
%70 = OpConstantComposite %v4int %int_3 %int_2 %int_2 %int_3
%v4bool = OpTypeVector %bool 4
%int_n1 = OpConstant %int -1
%int_n2 = OpConstant %int -2
%85 = OpConstantComposite %v4int %int_n1 %int_n1 %int_n2 %int_n2
%98 = OpConstantComposite %v4int %int_2 %int_1 %int_1 %int_2
%v3int = OpTypeVector %int 3
%int_9 = OpConstant %int 9
%114 = OpConstantComposite %v4int %int_9 %int_9 %int_9 %int_2
%v2int = OpTypeVector %int 2
%129 = OpConstantComposite %v4int %int_3 %int_0 %int_9 %int_2
%int_5 = OpConstant %int 5
%142 = OpConstantComposite %v4int %int_0 %int_5 %int_5 %int_0
%int_10 = OpConstant %int 10
%165 = OpConstantComposite %v4int %int_9 %int_9 %int_10 %int_10
%178 = OpConstantComposite %v4int %int_1 %int_2 %int_1 %int_2
%int_36 = OpConstant %int 36
%int_4 = OpConstant %int 4
%int_18 = OpConstant %int 18
%208 = OpConstantComposite %v4int %int_4 %int_18 %int_9 %int_2
%220 = OpConstantComposite %v4int %int_2 %int_9 %int_18 %int_4
%263 = OpTypeFunction %v4float %_ptr_Function_v2float
%_ptr_Function_v4float = OpTypePointer Function %v4float
%float_2 = OpConstant %float 2
%float_3 = OpConstant %float 3
%284 = OpConstantComposite %v4float %float_3 %float_2 %float_2 %float_3
%float_n1 = OpConstant %float -1
%float_n2 = OpConstant %float -2
%298 = OpConstantComposite %v4float %float_n1 %float_n1 %float_n2 %float_n2
%float_1 = OpConstant %float 1
%312 = OpConstantComposite %v4float %float_2 %float_1 %float_1 %float_2
%v3float = OpTypeVector %float 3
%float_9 = OpConstant %float 9
%327 = OpConstantComposite %v4float %float_9 %float_9 %float_9 %float_2
%float_18 = OpConstant %float 18
%float_4 = OpConstant %float 4
%342 = OpConstantComposite %v4float %float_18 %float_4 %float_9 %float_2
%float_5 = OpConstant %float 5
%354 = OpConstantComposite %v4float %float_0 %float_5 %float_5 %float_0
%float_10 = OpConstant %float 10
%377 = OpConstantComposite %v4float %float_9 %float_9 %float_10 %float_10
%390 = OpConstantComposite %v4float %float_1 %float_2 %float_1 %float_2
%float_36 = OpConstant %float 36
%417 = OpConstantComposite %v4float %float_4 %float_18 %float_9 %float_2
%429 = OpConstantComposite %v4float %float_2 %float_9 %float_18 %float_4
%float_0_5 = OpConstant %float 0.5
%_entrypoint_v = OpFunction %void None %16
%17 = OpLabel
%21 = OpVariable %_ptr_Function_v2float Function
OpStore %21 %20
%23 = OpFunctionCall %v4float %main %21
OpStore %sk_FragColor %23
OpReturn
OpFunctionEnd
%test_int_b = OpFunction %bool None %24
%25 = OpLabel
%ok = OpVariable %_ptr_Function_bool Function
%inputRed = OpVariable %_ptr_Function_v4int Function
%inputGreen = OpVariable %_ptr_Function_v4int Function
%x = OpVariable %_ptr_Function_v4int Function
OpStore %ok %true
%33 = OpAccessChain %_ptr_Uniform_v4float %11 %int_0
%36 = OpLoad %v4float %33
%37 = OpCompositeExtract %float %36 0
%38 = OpConvertFToS %int %37
%39 = OpCompositeExtract %float %36 1
%40 = OpConvertFToS %int %39
%41 = OpCompositeExtract %float %36 2
%42 = OpConvertFToS %int %41
%43 = OpCompositeExtract %float %36 3
%44 = OpConvertFToS %int %43
%45 = OpCompositeConstruct %v4int %38 %40 %42 %44
OpStore %inputRed %45
%47 = OpAccessChain %_ptr_Uniform_v4float %11 %int_1
%49 = OpLoad %v4float %47
%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 %inputGreen %58
%60 = OpLoad %v4int %inputRed
%62 = OpCompositeConstruct %v4int %int_2 %int_2 %int_2 %int_2
%63 = OpIAdd %v4int %60 %62
OpStore %x %63
%65 = OpLoad %bool %ok
OpSelectionMerge %67 None
OpBranchConditional %65 %66 %67
%66 = OpLabel
%68 = OpLoad %v4int %x
%71 = OpIEqual %v4bool %68 %70
%73 = OpAll %bool %71
OpBranch %67
%67 = OpLabel
%74 = OpPhi %bool %false %25 %73 %66
OpStore %ok %74
%75 = OpLoad %v4int %inputGreen
%76 = OpVectorShuffle %v4int %75 %75 1 3 0 2
%77 = OpCompositeConstruct %v4int %int_2 %int_2 %int_2 %int_2
%78 = OpISub %v4int %76 %77
OpStore %x %78
%79 = OpLoad %bool %ok
OpSelectionMerge %81 None
OpBranchConditional %79 %80 %81
%80 = OpLabel
%82 = OpLoad %v4int %x
%86 = OpIEqual %v4bool %82 %85
%87 = OpAll %bool %86
OpBranch %81
%81 = OpLabel
%88 = OpPhi %bool %false %67 %87 %80
OpStore %ok %88
%89 = OpLoad %v4int %inputRed
%90 = OpLoad %v4int %inputGreen
%91 = OpCompositeExtract %int %90 1
%92 = OpCompositeConstruct %v4int %91 %91 %91 %91
%93 = OpIAdd %v4int %89 %92
OpStore %x %93
%94 = OpLoad %bool %ok
OpSelectionMerge %96 None
OpBranchConditional %94 %95 %96
%95 = OpLabel
%97 = OpLoad %v4int %x
%99 = OpIEqual %v4bool %97 %98
%100 = OpAll %bool %99
OpBranch %96
%96 = OpLabel
%101 = OpPhi %bool %false %81 %100 %95
OpStore %ok %101
%102 = OpLoad %v4int %inputGreen
%103 = OpVectorShuffle %v3int %102 %102 3 1 3
%106 = OpCompositeConstruct %v3int %int_9 %int_9 %int_9
%107 = OpIMul %v3int %103 %106
%108 = OpLoad %v4int %x
%109 = OpVectorShuffle %v4int %108 %107 4 5 6 3
OpStore %x %109
%110 = OpLoad %bool %ok
OpSelectionMerge %112 None
OpBranchConditional %110 %111 %112
%111 = OpLabel
%113 = OpLoad %v4int %x
%115 = OpIEqual %v4bool %113 %114
%116 = OpAll %bool %115
OpBranch %112
%112 = OpLabel
%117 = OpPhi %bool %false %96 %116 %111
OpStore %ok %117
%118 = OpLoad %v4int %x
%119 = OpVectorShuffle %v2int %118 %118 2 3
%121 = OpCompositeConstruct %v2int %int_3 %int_3
%122 = OpSDiv %v2int %119 %121
%123 = OpLoad %v4int %x
%124 = OpVectorShuffle %v4int %123 %122 4 5 2 3
OpStore %x %124
%125 = OpLoad %bool %ok
OpSelectionMerge %127 None
OpBranchConditional %125 %126 %127
%126 = OpLabel
%128 = OpLoad %v4int %x
%130 = OpIEqual %v4bool %128 %129
%131 = OpAll %bool %130
OpBranch %127
%127 = OpLabel
%132 = OpPhi %bool %false %112 %131 %126
OpStore %ok %132
%133 = OpLoad %v4int %inputRed
%135 = OpCompositeConstruct %v4int %int_5 %int_5 %int_5 %int_5
%136 = OpIMul %v4int %133 %135
%137 = OpVectorShuffle %v4int %136 %136 1 0 3 2
OpStore %x %137
%138 = OpLoad %bool %ok
OpSelectionMerge %140 None
OpBranchConditional %138 %139 %140
%139 = OpLabel
%141 = OpLoad %v4int %x
%143 = OpIEqual %v4bool %141 %142
%144 = OpAll %bool %143
OpBranch %140
%140 = OpLabel
%145 = OpPhi %bool %false %127 %144 %139
OpStore %ok %145
%146 = OpLoad %v4int %inputRed
%147 = OpCompositeConstruct %v4int %int_2 %int_2 %int_2 %int_2
%148 = OpIAdd %v4int %147 %146
OpStore %x %148
%149 = OpLoad %bool %ok
OpSelectionMerge %151 None
OpBranchConditional %149 %150 %151
%150 = OpLabel
%152 = OpLoad %v4int %x
%153 = OpIEqual %v4bool %152 %70
%154 = OpAll %bool %153
OpBranch %151
%151 = OpLabel
%155 = OpPhi %bool %false %140 %154 %150
OpStore %ok %155
%157 = OpLoad %v4int %inputGreen
%158 = OpVectorShuffle %v4int %157 %157 1 3 0 2
%159 = OpCompositeConstruct %v4int %int_10 %int_10 %int_10 %int_10
%160 = OpISub %v4int %159 %158
OpStore %x %160
%161 = OpLoad %bool %ok
OpSelectionMerge %163 None
OpBranchConditional %161 %162 %163
%162 = OpLabel
%164 = OpLoad %v4int %x
%166 = OpIEqual %v4bool %164 %165
%167 = OpAll %bool %166
OpBranch %163
%163 = OpLabel
%168 = OpPhi %bool %false %151 %167 %162
OpStore %ok %168
%169 = OpLoad %v4int %inputRed
%170 = OpCompositeExtract %int %169 0
%171 = OpLoad %v4int %inputGreen
%172 = OpCompositeConstruct %v4int %170 %170 %170 %170
%173 = OpIAdd %v4int %172 %171
OpStore %x %173
%174 = OpLoad %bool %ok
OpSelectionMerge %176 None
OpBranchConditional %174 %175 %176
%175 = OpLabel
%177 = OpLoad %v4int %x
%179 = OpIEqual %v4bool %177 %178
%180 = OpAll %bool %179
OpBranch %176
%176 = OpLabel
%181 = OpPhi %bool %false %163 %180 %175
OpStore %ok %181
%182 = OpLoad %v4int %inputGreen
%183 = OpVectorShuffle %v3int %182 %182 3 1 3
%184 = OpCompositeConstruct %v3int %int_9 %int_9 %int_9
%185 = OpIMul %v3int %184 %183
%186 = OpLoad %v4int %x
%187 = OpVectorShuffle %v4int %186 %185 4 5 6 3
OpStore %x %187
%188 = OpLoad %bool %ok
OpSelectionMerge %190 None
OpBranchConditional %188 %189 %190
%189 = OpLabel
%191 = OpLoad %v4int %x
%192 = OpIEqual %v4bool %191 %114
%193 = OpAll %bool %192
OpBranch %190
%190 = OpLabel
%194 = OpPhi %bool %false %176 %193 %189
OpStore %ok %194
%196 = OpLoad %v4int %x
%197 = OpVectorShuffle %v2int %196 %196 2 3
%198 = OpCompositeConstruct %v2int %int_36 %int_36
%199 = OpSDiv %v2int %198 %197
%200 = OpLoad %v4int %x
%201 = OpVectorShuffle %v4int %200 %199 4 5 2 3
OpStore %x %201
%202 = OpLoad %bool %ok
OpSelectionMerge %204 None
OpBranchConditional %202 %203 %204
%203 = OpLabel
%205 = OpLoad %v4int %x
%209 = OpIEqual %v4bool %205 %208
%210 = OpAll %bool %209
OpBranch %204
%204 = OpLabel
%211 = OpPhi %bool %false %190 %210 %203
OpStore %ok %211
%212 = OpLoad %v4int %x
%213 = OpCompositeConstruct %v4int %int_36 %int_36 %int_36 %int_36
%214 = OpSDiv %v4int %213 %212
%215 = OpVectorShuffle %v4int %214 %214 1 0 3 2
OpStore %x %215
%216 = OpLoad %bool %ok
OpSelectionMerge %218 None
OpBranchConditional %216 %217 %218
%217 = OpLabel
%219 = OpLoad %v4int %x
%221 = OpIEqual %v4bool %219 %220
%222 = OpAll %bool %221
OpBranch %218
%218 = OpLabel
%223 = OpPhi %bool %false %204 %222 %217
OpStore %ok %223
%224 = OpLoad %v4int %x
%225 = OpCompositeConstruct %v4int %int_2 %int_2 %int_2 %int_2
%226 = OpIAdd %v4int %224 %225
OpStore %x %226
%227 = OpLoad %v4int %x
%228 = OpCompositeConstruct %v4int %int_2 %int_2 %int_2 %int_2
%229 = OpIMul %v4int %227 %228
OpStore %x %229
%230 = OpLoad %v4int %x
%231 = OpCompositeConstruct %v4int %int_4 %int_4 %int_4 %int_4
%232 = OpISub %v4int %230 %231
OpStore %x %232
%233 = OpLoad %v4int %x
%234 = OpCompositeConstruct %v4int %int_2 %int_2 %int_2 %int_2
%235 = OpSDiv %v4int %233 %234
OpStore %x %235
%236 = OpLoad %bool %ok
OpSelectionMerge %238 None
OpBranchConditional %236 %237 %238
%237 = OpLabel
%239 = OpLoad %v4int %x
%240 = OpIEqual %v4bool %239 %220
%241 = OpAll %bool %240
OpBranch %238
%238 = OpLabel
%242 = OpPhi %bool %false %218 %241 %237
OpStore %ok %242
%243 = OpLoad %v4int %x
%244 = OpCompositeConstruct %v4int %int_2 %int_2 %int_2 %int_2
%245 = OpIAdd %v4int %243 %244
OpStore %x %245
%246 = OpLoad %v4int %x
%247 = OpCompositeConstruct %v4int %int_2 %int_2 %int_2 %int_2
%248 = OpIMul %v4int %246 %247
OpStore %x %248
%249 = OpLoad %v4int %x
%250 = OpCompositeConstruct %v4int %int_4 %int_4 %int_4 %int_4
%251 = OpISub %v4int %249 %250
OpStore %x %251
%252 = OpLoad %v4int %x
%253 = OpCompositeConstruct %v4int %int_2 %int_2 %int_2 %int_2
%254 = OpSDiv %v4int %252 %253
OpStore %x %254
%255 = OpLoad %bool %ok
OpSelectionMerge %257 None
OpBranchConditional %255 %256 %257
%256 = OpLabel
%258 = OpLoad %v4int %x
%259 = OpIEqual %v4bool %258 %220
%260 = OpAll %bool %259
OpBranch %257
%257 = OpLabel
%261 = OpPhi %bool %false %238 %260 %256
OpStore %ok %261
%262 = OpLoad %bool %ok
OpReturnValue %262
OpFunctionEnd
%main = OpFunction %v4float None %263
%264 = OpFunctionParameter %_ptr_Function_v2float
%265 = OpLabel
%_0_ok = OpVariable %_ptr_Function_bool Function
%_1_inputRed = OpVariable %_ptr_Function_v4float Function
%_2_inputGreen = OpVariable %_ptr_Function_v4float Function
%_3_x = OpVariable %_ptr_Function_v4float Function
%474 = OpVariable %_ptr_Function_v4float Function
OpStore %_0_ok %true
%269 = OpAccessChain %_ptr_Uniform_v4float %11 %int_0
%270 = OpLoad %v4float %269
OpStore %_1_inputRed %270
%272 = OpAccessChain %_ptr_Uniform_v4float %11 %int_1
%273 = OpLoad %v4float %272
OpStore %_2_inputGreen %273
%275 = OpLoad %v4float %_1_inputRed
%277 = OpCompositeConstruct %v4float %float_2 %float_2 %float_2 %float_2
%278 = OpFAdd %v4float %275 %277
OpStore %_3_x %278
%279 = OpLoad %bool %_0_ok
OpSelectionMerge %281 None
OpBranchConditional %279 %280 %281
%280 = OpLabel
%282 = OpLoad %v4float %_3_x
%285 = OpFOrdEqual %v4bool %282 %284
%286 = OpAll %bool %285
OpBranch %281
%281 = OpLabel
%287 = OpPhi %bool %false %265 %286 %280
OpStore %_0_ok %287
%288 = OpLoad %v4float %_2_inputGreen
%289 = OpVectorShuffle %v4float %288 %288 1 3 0 2
%290 = OpCompositeConstruct %v4float %float_2 %float_2 %float_2 %float_2
%291 = OpFSub %v4float %289 %290
OpStore %_3_x %291
%292 = OpLoad %bool %_0_ok
OpSelectionMerge %294 None
OpBranchConditional %292 %293 %294
%293 = OpLabel
%295 = OpLoad %v4float %_3_x
%299 = OpFOrdEqual %v4bool %295 %298
%300 = OpAll %bool %299
OpBranch %294
%294 = OpLabel
%301 = OpPhi %bool %false %281 %300 %293
OpStore %_0_ok %301
%302 = OpLoad %v4float %_1_inputRed
%303 = OpLoad %v4float %_2_inputGreen
%304 = OpCompositeExtract %float %303 1
%305 = OpCompositeConstruct %v4float %304 %304 %304 %304
%306 = OpFAdd %v4float %302 %305
OpStore %_3_x %306
%307 = OpLoad %bool %_0_ok
OpSelectionMerge %309 None
OpBranchConditional %307 %308 %309
%308 = OpLabel
%310 = OpLoad %v4float %_3_x
%313 = OpFOrdEqual %v4bool %310 %312
%314 = OpAll %bool %313
OpBranch %309
%309 = OpLabel
%315 = OpPhi %bool %false %294 %314 %308
OpStore %_0_ok %315
%316 = OpLoad %v4float %_2_inputGreen
%317 = OpVectorShuffle %v3float %316 %316 3 1 3
%320 = OpVectorTimesScalar %v3float %317 %float_9
%321 = OpLoad %v4float %_3_x
%322 = OpVectorShuffle %v4float %321 %320 4 5 6 3
OpStore %_3_x %322
%323 = OpLoad %bool %_0_ok
OpSelectionMerge %325 None
OpBranchConditional %323 %324 %325
%324 = OpLabel
%326 = OpLoad %v4float %_3_x
%328 = OpFOrdEqual %v4bool %326 %327
%329 = OpAll %bool %328
OpBranch %325
%325 = OpLabel
%330 = OpPhi %bool %false %309 %329 %324
OpStore %_0_ok %330
%331 = OpLoad %v4float %_3_x
%332 = OpVectorShuffle %v2float %331 %331 2 3
%333 = OpVectorTimesScalar %v2float %332 %float_2
%334 = OpLoad %v4float %_3_x
%335 = OpVectorShuffle %v4float %334 %333 4 5 2 3
OpStore %_3_x %335
%336 = OpLoad %bool %_0_ok
OpSelectionMerge %338 None
OpBranchConditional %336 %337 %338
%337 = OpLabel
%339 = OpLoad %v4float %_3_x
%343 = OpFOrdEqual %v4bool %339 %342
%344 = OpAll %bool %343
OpBranch %338
%338 = OpLabel
%345 = OpPhi %bool %false %325 %344 %337
OpStore %_0_ok %345
%346 = OpLoad %v4float %_1_inputRed
%348 = OpVectorTimesScalar %v4float %346 %float_5
%349 = OpVectorShuffle %v4float %348 %348 1 0 3 2
OpStore %_3_x %349
%350 = OpLoad %bool %_0_ok
OpSelectionMerge %352 None
OpBranchConditional %350 %351 %352
%351 = OpLabel
%353 = OpLoad %v4float %_3_x
%355 = OpFOrdEqual %v4bool %353 %354
%356 = OpAll %bool %355
OpBranch %352
%352 = OpLabel
%357 = OpPhi %bool %false %338 %356 %351
OpStore %_0_ok %357
%358 = OpLoad %v4float %_1_inputRed
%359 = OpCompositeConstruct %v4float %float_2 %float_2 %float_2 %float_2
%360 = OpFAdd %v4float %359 %358
OpStore %_3_x %360
%361 = OpLoad %bool %_0_ok
OpSelectionMerge %363 None
OpBranchConditional %361 %362 %363
%362 = OpLabel
%364 = OpLoad %v4float %_3_x
%365 = OpFOrdEqual %v4bool %364 %284
%366 = OpAll %bool %365
OpBranch %363
%363 = OpLabel
%367 = OpPhi %bool %false %352 %366 %362
OpStore %_0_ok %367
%369 = OpLoad %v4float %_2_inputGreen
%370 = OpVectorShuffle %v4float %369 %369 1 3 0 2
%371 = OpCompositeConstruct %v4float %float_10 %float_10 %float_10 %float_10
%372 = OpFSub %v4float %371 %370
OpStore %_3_x %372
%373 = OpLoad %bool %_0_ok
OpSelectionMerge %375 None
OpBranchConditional %373 %374 %375
%374 = OpLabel
%376 = OpLoad %v4float %_3_x
%378 = OpFOrdEqual %v4bool %376 %377
%379 = OpAll %bool %378
OpBranch %375
%375 = OpLabel
%380 = OpPhi %bool %false %363 %379 %374
OpStore %_0_ok %380
%381 = OpLoad %v4float %_1_inputRed
%382 = OpCompositeExtract %float %381 0
%383 = OpLoad %v4float %_2_inputGreen
%384 = OpCompositeConstruct %v4float %382 %382 %382 %382
%385 = OpFAdd %v4float %384 %383
OpStore %_3_x %385
%386 = OpLoad %bool %_0_ok
OpSelectionMerge %388 None
OpBranchConditional %386 %387 %388
%387 = OpLabel
%389 = OpLoad %v4float %_3_x
%391 = OpFOrdEqual %v4bool %389 %390
%392 = OpAll %bool %391
OpBranch %388
%388 = OpLabel
%393 = OpPhi %bool %false %375 %392 %387
OpStore %_0_ok %393
%394 = OpLoad %v4float %_2_inputGreen
%395 = OpVectorShuffle %v3float %394 %394 3 1 3
%396 = OpVectorTimesScalar %v3float %395 %float_9
%397 = OpLoad %v4float %_3_x
%398 = OpVectorShuffle %v4float %397 %396 4 5 6 3
OpStore %_3_x %398
%399 = OpLoad %bool %_0_ok
OpSelectionMerge %401 None
OpBranchConditional %399 %400 %401
%400 = OpLabel
%402 = OpLoad %v4float %_3_x
%403 = OpFOrdEqual %v4bool %402 %327
%404 = OpAll %bool %403
OpBranch %401
%401 = OpLabel
%405 = OpPhi %bool %false %388 %404 %400
OpStore %_0_ok %405
%407 = OpLoad %v4float %_3_x
%408 = OpVectorShuffle %v2float %407 %407 2 3
%409 = OpCompositeConstruct %v2float %float_36 %float_36
%410 = OpFDiv %v2float %409 %408
%411 = OpLoad %v4float %_3_x
%412 = OpVectorShuffle %v4float %411 %410 4 5 2 3
OpStore %_3_x %412
%413 = OpLoad %bool %_0_ok
OpSelectionMerge %415 None
OpBranchConditional %413 %414 %415
%414 = OpLabel
%416 = OpLoad %v4float %_3_x
%418 = OpFOrdEqual %v4bool %416 %417
%419 = OpAll %bool %418
OpBranch %415
%415 = OpLabel
%420 = OpPhi %bool %false %401 %419 %414
OpStore %_0_ok %420
%421 = OpLoad %v4float %_3_x
%422 = OpCompositeConstruct %v4float %float_36 %float_36 %float_36 %float_36
%423 = OpFDiv %v4float %422 %421
%424 = OpVectorShuffle %v4float %423 %423 1 0 3 2
OpStore %_3_x %424
%425 = OpLoad %bool %_0_ok
OpSelectionMerge %427 None
OpBranchConditional %425 %426 %427
%426 = OpLabel
%428 = OpLoad %v4float %_3_x
%430 = OpFOrdEqual %v4bool %428 %429
%431 = OpAll %bool %430
OpBranch %427
%427 = OpLabel
%432 = OpPhi %bool %false %415 %431 %426
OpStore %_0_ok %432
%433 = OpLoad %v4float %_3_x
%434 = OpCompositeConstruct %v4float %float_2 %float_2 %float_2 %float_2
%435 = OpFAdd %v4float %433 %434
OpStore %_3_x %435
%436 = OpLoad %v4float %_3_x
%437 = OpVectorTimesScalar %v4float %436 %float_2
OpStore %_3_x %437
%438 = OpLoad %v4float %_3_x
%439 = OpCompositeConstruct %v4float %float_4 %float_4 %float_4 %float_4
%440 = OpFSub %v4float %438 %439
OpStore %_3_x %440
%441 = OpLoad %v4float %_3_x
%442 = OpFDiv %float %float_1 %float_2
%443 = OpVectorTimesScalar %v4float %441 %442
OpStore %_3_x %443
%444 = OpLoad %bool %_0_ok
OpSelectionMerge %446 None
OpBranchConditional %444 %445 %446
%445 = OpLabel
%447 = OpLoad %v4float %_3_x
%448 = OpFOrdEqual %v4bool %447 %429
%449 = OpAll %bool %448
OpBranch %446
%446 = OpLabel
%450 = OpPhi %bool %false %427 %449 %445
OpStore %_0_ok %450
%451 = OpLoad %v4float %_3_x
%452 = OpCompositeConstruct %v4float %float_2 %float_2 %float_2 %float_2
%453 = OpFAdd %v4float %451 %452
OpStore %_3_x %453
%454 = OpLoad %v4float %_3_x
%455 = OpVectorTimesScalar %v4float %454 %float_2
OpStore %_3_x %455
%456 = OpLoad %v4float %_3_x
%457 = OpCompositeConstruct %v4float %float_4 %float_4 %float_4 %float_4
%458 = OpFSub %v4float %456 %457
OpStore %_3_x %458
%459 = OpLoad %v4float %_3_x
%461 = OpVectorTimesScalar %v4float %459 %float_0_5
OpStore %_3_x %461
%462 = OpLoad %bool %_0_ok
OpSelectionMerge %464 None
OpBranchConditional %462 %463 %464
%463 = OpLabel
%465 = OpLoad %v4float %_3_x
%466 = OpFOrdEqual %v4bool %465 %429
%467 = OpAll %bool %466
OpBranch %464
%464 = OpLabel
%468 = OpPhi %bool %false %446 %467 %463
OpStore %_0_ok %468
%469 = OpLoad %bool %_0_ok
OpSelectionMerge %471 None
OpBranchConditional %469 %470 %471
%470 = OpLabel
%472 = OpFunctionCall %bool %test_int_b
OpBranch %471
%471 = OpLabel
%473 = OpPhi %bool %false %464 %472 %470
OpSelectionMerge %477 None
OpBranchConditional %473 %475 %476
%475 = OpLabel
%478 = OpAccessChain %_ptr_Uniform_v4float %11 %int_1
%479 = OpLoad %v4float %478
OpStore %474 %479
OpBranch %477
%476 = OpLabel
%480 = OpAccessChain %_ptr_Uniform_v4float %11 %int_0
%481 = OpLoad %v4float %480
OpStore %474 %481
OpBranch %477
%477 = OpLabel
%482 = OpLoad %v4float %474
OpReturnValue %482
OpFunctionEnd