OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color OpExecutionMode %main OriginUpperLeft OpSource ESSL 320 OpName %main "main" OpName %merge_i1_i1_i1_ "merge(i1;i1;i1;" OpName %from "from" OpName %mid "mid" OpName %to "to" OpName %mergeSort_ "mergeSort(" OpName %k "k" OpName %i "i" OpName %j "j" OpName %data "data" OpName %temp "temp" OpName %i_0 "i" OpName %low "low" OpName %high "high" OpName %m "m" OpName %i_1 "i" OpName %from_0 "from" OpName %mid_0 "mid" OpName %to_0 "to" OpName %param "param" OpName %param_0 "param" OpName %param_1 "param" OpName %i_2 "i" OpName %buf0 "buf0" OpMemberName %buf0 0 "injectionSwitch" OpName %_ "" OpName %j_0 "j" OpName %gl_FragCoord "gl_FragCoord" OpName %grey "grey" OpName %_GLF_color "_GLF_color" OpMemberDecorate %buf0 0 Offset 0 OpDecorate %buf0 Block OpDecorate %_ DescriptorSet 0 OpDecorate %_ Binding 0 OpDecorate %gl_FragCoord BuiltIn FragCoord OpDecorate %_GLF_color Location 0 %void = OpTypeVoid %32 = OpTypeFunction %void %int = OpTypeInt 32 1 %_ptr_Function_int = OpTypePointer Function %int %35 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int %int_1 = OpConstant %int 1 %bool = OpTypeBool %uint = OpTypeInt 32 0 %uint_10 = OpConstant %uint 10 %_arr_int_uint_10 = OpTypeArray %int %uint_10 %_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10 %data = OpVariable %_ptr_Private__arr_int_uint_10 Private %_ptr_Private_int = OpTypePointer Private %int %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private %int_10 = OpConstant %int 10 %int_0 = OpConstant %int 0 %int_9 = OpConstant %int 9 %int_2 = OpConstant %int 2 %float = OpTypeFloat 32 %v2float = OpTypeVector %float 2 %buf0 = OpTypeStruct %v2float %_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0 %_ = OpVariable %_ptr_Uniform_buf0 Uniform %uint_0 = OpConstant %uint 0 %_ptr_Uniform_float = OpTypePointer Uniform %float %int_4 = OpConstant %int 4 %int_3 = OpConstant %int 3 %int_n1 = OpConstant %int -1 %int_n2 = OpConstant %int -2 %int_n3 = OpConstant %int -3 %int_n4 = OpConstant %int -4 %int_n5 = OpConstant %int -5 %v4float = OpTypeVector %float 4 %_ptr_Input_v4float = OpTypePointer Input %v4float %gl_FragCoord = OpVariable %_ptr_Input_v4float Input %uint_1 = OpConstant %uint 1 %_ptr_Input_float = OpTypePointer Input %float %int_30 = OpConstant %int 30 %_ptr_Function_float = OpTypePointer Function %float %float_0_5 = OpConstant %float 0.5 %float_10 = OpConstant %float 10 %int_60 = OpConstant %int 60 %int_90 = OpConstant %int 90 %int_120 = OpConstant %int 120 %int_150 = OpConstant %int 150 %int_180 = OpConstant %int 180 %int_5 = OpConstant %int 5 %int_210 = OpConstant %int 210 %int_6 = OpConstant %int 6 %int_240 = OpConstant %int 240 %int_7 = OpConstant %int 7 %int_270 = OpConstant %int 270 %int_8 = OpConstant %int 8 %_ptr_Output_v4float = OpTypePointer Output %v4float %_GLF_color = OpVariable %_ptr_Output_v4float Output %v3float = OpTypeVector %float 3 %float_1 = OpConstant %float 1 %int_0_0 = OpConstant %int 0 %83 = OpConstantComposite %_arr_int_uint_10 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %main = OpFunction %void None %32 %84 = OpLabel %85 = OpVariable %_ptr_Function_int Function %86 = OpVariable %_ptr_Function_int Function %87 = OpVariable %_ptr_Function_int Function %88 = OpVariable %_ptr_Function_int Function %89 = OpVariable %_ptr_Function_int Function %90 = OpVariable %_ptr_Function_int Function %91 = OpVariable %_ptr_Function_int Function %92 = OpVariable %_ptr_Function_int Function %93 = OpVariable %_ptr_Function_int Function %94 = OpVariable %_ptr_Function_int Function %i_2 = OpVariable %_ptr_Function_int Function %j_0 = OpVariable %_ptr_Function_int Function %grey = OpVariable %_ptr_Function_float Function %95 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0 %96 = OpLoad %float %95 %97 = OpConvertFToS %int %96 OpStore %i_2 %97 OpBranch %98 %98 = OpLabel OpLoopMerge %99 %100 None OpBranch %101 %101 = OpLabel %102 = OpLoad %int %i_2 OpSelectionMerge %103 None OpSwitch %102 %103 0 %104 1 %105 2 %106 3 %107 4 %108 5 %109 6 %110 7 %111 8 %112 9 %113 %104 = OpLabel %114 = OpLoad %int %i_2 %115 = OpAccessChain %_ptr_Private_int %data %114 OpStore %115 %int_4 OpBranch %103 %105 = OpLabel %116 = OpLoad %int %i_2 %117 = OpAccessChain %_ptr_Private_int %data %116 OpStore %117 %int_3 OpBranch %103 %106 = OpLabel %118 = OpLoad %int %i_2 %119 = OpAccessChain %_ptr_Private_int %data %118 OpStore %119 %int_2 OpBranch %103 %107 = OpLabel %120 = OpLoad %int %i_2 %121 = OpAccessChain %_ptr_Private_int %data %120 OpStore %121 %int_1 OpBranch %103 %108 = OpLabel %122 = OpLoad %int %i_2 %123 = OpAccessChain %_ptr_Private_int %data %122 OpStore %123 %int_0 OpBranch %103 %109 = OpLabel %124 = OpLoad %int %i_2 %125 = OpAccessChain %_ptr_Private_int %data %124 OpStore %125 %int_n1 OpBranch %103 %110 = OpLabel %126 = OpLoad %int %i_2 %127 = OpAccessChain %_ptr_Private_int %data %126 OpStore %127 %int_n2 OpBranch %103 %111 = OpLabel %128 = OpLoad %int %i_2 %129 = OpAccessChain %_ptr_Private_int %data %128 OpStore %129 %int_n3 OpBranch %103 %112 = OpLabel %130 = OpLoad %int %i_2 %131 = OpAccessChain %_ptr_Private_int %data %130 OpStore %131 %int_n4 OpBranch %103 %113 = OpLabel %132 = OpLoad %int %i_2 %133 = OpAccessChain %_ptr_Private_int %data %132 OpStore %133 %int_n5 OpBranch %103 %103 = OpLabel %134 = OpLoad %int %i_2 %135 = OpIAdd %int %134 %int_1 OpStore %i_2 %135 OpBranch %100 %100 = OpLabel %136 = OpLoad %int %i_2 %137 = OpSLessThan %bool %136 %int_10 OpBranchConditional %137 %98 %99 %99 = OpLabel OpStore %j_0 %int_0 OpBranch %138 %138 = OpLabel OpLoopMerge %139 %140 None OpBranch %141 %141 = OpLabel %142 = OpLoad %int %j_0 %143 = OpSLessThan %bool %142 %int_10 OpBranchConditional %143 %144 %139 %144 = OpLabel %145 = OpLoad %int %j_0 %146 = OpLoad %int %j_0 %147 = OpAccessChain %_ptr_Private_int %data %146 %148 = OpLoad %int %147 %149 = OpAccessChain %_ptr_Private_int %temp %145 OpStore %149 %148 OpBranch %140 %140 = OpLabel %150 = OpLoad %int %j_0 %151 = OpIAdd %int %150 %int_1 OpStore %j_0 %151 OpBranch %138 %139 = OpLabel OpStore %94 %int_0 OpStore %93 %int_9 OpStore %92 %int_1 OpBranch %152 %152 = OpLabel OpLoopMerge %153 %154 None OpBranch %155 %155 = OpLabel %156 = OpLoad %int %92 %157 = OpLoad %int %93 %158 = OpSLessThanEqual %bool %156 %157 OpBranchConditional %158 %159 %153 %159 = OpLabel %160 = OpLoad %int %94 OpStore %91 %160 OpBranch %161 %161 = OpLabel OpLoopMerge %162 %163 None OpBranch %164 %164 = OpLabel %165 = OpLoad %int %91 %166 = OpLoad %int %93 %167 = OpSLessThan %bool %165 %166 OpBranchConditional %167 %168 %162 %168 = OpLabel %169 = OpLoad %int %91 OpStore %90 %169 %170 = OpLoad %int %91 %171 = OpLoad %int %92 %172 = OpIAdd %int %170 %171 %173 = OpLoad %_arr_int_uint_10 %data OpStore %data %83 OpStore %data %173 %174 = OpISub %int %172 %int_1 OpStore %89 %174 %175 = OpLoad %int %91 %176 = OpLoad %int %92 %177 = OpIMul %int %int_2 %176 %178 = OpIAdd %int %175 %177 %179 = OpISub %int %178 %int_1 %180 = OpLoad %int %93 %181 = OpExtInst %int %1 SMin %179 %180 OpStore %88 %181 %182 = OpLoad %int %90 OpStore %87 %182 %183 = OpLoad %int %89 OpStore %86 %183 %184 = OpLoad %int %88 OpStore %85 %184 %185 = OpFunctionCall %void %merge_i1_i1_i1_ %87 %86 %85 OpBranch %163 %163 = OpLabel %186 = OpLoad %int %92 %187 = OpIMul %int %int_2 %186 %188 = OpLoad %int %91 %189 = OpIAdd %int %188 %187 OpStore %91 %189 OpBranch %161 %162 = OpLabel OpBranch %154 %154 = OpLabel %190 = OpLoad %int %92 %191 = OpIMul %int %int_2 %190 OpStore %92 %191 OpBranch %152 %153 = OpLabel OpBranch %192 %192 = OpLabel %193 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1 %194 = OpLoad %float %193 %195 = OpConvertFToS %int %194 %196 = OpSLessThan %bool %195 %int_30 OpSelectionMerge %197 None OpBranchConditional %196 %198 %199 %198 = OpLabel %200 = OpAccessChain %_ptr_Private_int %data %int_0 %201 = OpLoad %int %200 %202 = OpConvertSToF %float %201 %203 = OpFDiv %float %202 %float_10 %204 = OpFAdd %float %float_0_5 %203 OpStore %grey %204 OpBranch %197 %199 = OpLabel %205 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1 %206 = OpLoad %float %205 %207 = OpConvertFToS %int %206 %208 = OpSLessThan %bool %207 %int_60 OpSelectionMerge %209 None OpBranchConditional %208 %210 %211 %210 = OpLabel %212 = OpAccessChain %_ptr_Private_int %data %int_1 %213 = OpLoad %int %212 %214 = OpConvertSToF %float %213 %215 = OpFDiv %float %214 %float_10 %216 = OpFAdd %float %float_0_5 %215 OpStore %grey %216 OpBranch %209 %211 = OpLabel %217 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1 %218 = OpLoad %float %217 %219 = OpConvertFToS %int %218 %220 = OpSLessThan %bool %219 %int_90 OpSelectionMerge %221 None OpBranchConditional %220 %222 %223 %222 = OpLabel %224 = OpAccessChain %_ptr_Private_int %data %int_2 %225 = OpLoad %int %224 %226 = OpConvertSToF %float %225 %227 = OpFDiv %float %226 %float_10 %228 = OpFAdd %float %float_0_5 %227 OpStore %grey %228 OpBranch %221 %223 = OpLabel %229 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1 %230 = OpLoad %float %229 %231 = OpConvertFToS %int %230 %232 = OpSLessThan %bool %231 %int_120 OpSelectionMerge %233 None OpBranchConditional %232 %234 %235 %234 = OpLabel %236 = OpAccessChain %_ptr_Private_int %data %int_3 %237 = OpLoad %int %236 %238 = OpConvertSToF %float %237 %239 = OpFDiv %float %238 %float_10 %240 = OpFAdd %float %float_0_5 %239 OpStore %grey %240 OpBranch %233 %235 = OpLabel %241 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1 %242 = OpLoad %float %241 %243 = OpConvertFToS %int %242 %244 = OpSLessThan %bool %243 %int_150 OpSelectionMerge %245 None OpBranchConditional %244 %246 %247 %246 = OpLabel OpKill %247 = OpLabel %248 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1 %249 = OpLoad %float %248 %250 = OpConvertFToS %int %249 %251 = OpSLessThan %bool %250 %int_180 OpSelectionMerge %252 None OpBranchConditional %251 %253 %254 %253 = OpLabel %255 = OpAccessChain %_ptr_Private_int %data %int_5 %256 = OpLoad %int %255 %257 = OpConvertSToF %float %256 %258 = OpFDiv %float %257 %float_10 %259 = OpFAdd %float %float_0_5 %258 OpStore %grey %259 OpBranch %252 %254 = OpLabel %260 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1 %261 = OpLoad %float %260 %262 = OpConvertFToS %int %261 %263 = OpSLessThan %bool %262 %int_210 OpSelectionMerge %264 None OpBranchConditional %263 %265 %266 %265 = OpLabel %267 = OpAccessChain %_ptr_Private_int %data %int_6 %268 = OpLoad %int %267 %269 = OpConvertSToF %float %268 %270 = OpFDiv %float %269 %float_10 %271 = OpFAdd %float %float_0_5 %270 OpStore %grey %271 OpBranch %264 %266 = OpLabel %272 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1 %273 = OpLoad %float %272 %274 = OpConvertFToS %int %273 %275 = OpSLessThan %bool %274 %int_240 OpSelectionMerge %276 None OpBranchConditional %275 %277 %278 %277 = OpLabel %279 = OpAccessChain %_ptr_Private_int %data %int_7 %280 = OpLoad %int %279 %281 = OpConvertSToF %float %280 %282 = OpFDiv %float %281 %float_10 %283 = OpFAdd %float %float_0_5 %282 OpStore %grey %283 OpBranch %276 %278 = OpLabel %284 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1 %285 = OpLoad %float %284 %286 = OpConvertFToS %int %285 %287 = OpSLessThan %bool %286 %int_270 OpSelectionMerge %288 None OpBranchConditional %287 %289 %290 %289 = OpLabel %291 = OpAccessChain %_ptr_Private_int %data %int_8 %292 = OpLoad %int %291 %293 = OpConvertSToF %float %292 %294 = OpFDiv %float %293 %float_10 %295 = OpFAdd %float %float_0_5 %294 OpStore %grey %295 OpBranch %288 %290 = OpLabel OpKill %288 = OpLabel OpBranch %276 %276 = OpLabel OpBranch %264 %264 = OpLabel OpBranch %252 %252 = OpLabel OpBranch %245 %245 = OpLabel OpBranch %233 %233 = OpLabel OpBranch %221 %221 = OpLabel OpBranch %209 %209 = OpLabel OpBranch %197 %197 = OpLabel %296 = OpLoad %float %grey %297 = OpCompositeConstruct %v3float %296 %296 %296 %298 = OpCompositeExtract %float %297 0 %299 = OpCompositeExtract %float %297 1 %300 = OpCompositeExtract %float %297 2 %301 = OpCompositeConstruct %v4float %298 %299 %300 %float_1 OpStore %_GLF_color %301 OpReturn OpFunctionEnd %merge_i1_i1_i1_ = OpFunction %void None %35 %from = OpFunctionParameter %_ptr_Function_int %mid = OpFunctionParameter %_ptr_Function_int %to = OpFunctionParameter %_ptr_Function_int %302 = OpLabel %k = OpVariable %_ptr_Function_int Function %i = OpVariable %_ptr_Function_int Function %j = OpVariable %_ptr_Function_int Function %i_0 = OpVariable %_ptr_Function_int Function %303 = OpLoad %int %from OpStore %k %303 %304 = OpLoad %int %from OpStore %i %304 %305 = OpLoad %int %mid %306 = OpIAdd %int %305 %int_1 OpStore %j %306 OpBranch %307 %307 = OpLabel OpLoopMerge %308 %309 None OpBranch %310 %310 = OpLabel %311 = OpLoad %int %i %312 = OpLoad %int %mid %313 = OpSLessThanEqual %bool %311 %312 %314 = OpLoad %int %j %315 = OpLoad %int %to %316 = OpSLessThanEqual %bool %314 %315 %317 = OpLogicalAnd %bool %313 %316 OpBranchConditional %317 %318 %308 %318 = OpLabel %319 = OpLoad %int %i %320 = OpAccessChain %_ptr_Private_int %data %319 %321 = OpLoad %int %320 %322 = OpLoad %int %j %323 = OpAccessChain %_ptr_Private_int %data %322 %324 = OpLoad %int %323 %325 = OpSLessThan %bool %321 %324 OpSelectionMerge %326 None OpBranchConditional %325 %327 %328 %327 = OpLabel %329 = OpLoad %int %k %330 = OpIAdd %int %329 %int_1 OpStore %k %330 %331 = OpLoad %int %i %332 = OpIAdd %int %331 %int_1 OpStore %i %332 %333 = OpAccessChain %_ptr_Private_int %data %331 %334 = OpLoad %int %333 %335 = OpAccessChain %_ptr_Private_int %temp %329 OpStore %335 %334 OpBranch %326 %328 = OpLabel %336 = OpLoad %int %k %337 = OpIAdd %int %336 %int_1 OpStore %k %337 %338 = OpLoad %int %j %339 = OpIAdd %int %338 %int_1 OpStore %j %339 %340 = OpAccessChain %_ptr_Private_int %data %338 %341 = OpLoad %int %340 %342 = OpAccessChain %_ptr_Private_int %temp %336 OpStore %342 %341 OpBranch %326 %326 = OpLabel OpBranch %309 %309 = OpLabel OpBranch %307 %308 = OpLabel OpBranch %343 %343 = OpLabel OpLoopMerge %344 %345 None OpBranch %346 %346 = OpLabel %347 = OpLoad %int %i %348 = OpSLessThan %bool %347 %int_10 %349 = OpLoad %int %i %350 = OpLoad %int %mid %351 = OpSLessThanEqual %bool %349 %350 %352 = OpLogicalAnd %bool %348 %351 OpBranchConditional %352 %353 %344 %353 = OpLabel %354 = OpLoad %int %k %355 = OpIAdd %int %354 %int_1 OpStore %k %355 %356 = OpLoad %int %i %357 = OpIAdd %int %356 %int_1 OpStore %i %357 %358 = OpAccessChain %_ptr_Private_int %data %356 %359 = OpLoad %int %358 %360 = OpAccessChain %_ptr_Private_int %temp %354 OpStore %360 %359 OpBranch %345 %345 = OpLabel OpBranch %343 %344 = OpLabel %361 = OpLoad %int %from OpStore %i_0 %361 OpBranch %362 %362 = OpLabel OpLoopMerge %363 %364 None OpBranch %365 %365 = OpLabel %366 = OpLoad %int %i_0 %367 = OpLoad %int %to %368 = OpSLessThanEqual %bool %366 %367 OpBranchConditional %368 %369 %363 %369 = OpLabel %370 = OpLoad %int %i_0 %371 = OpLoad %int %i_0 %372 = OpAccessChain %_ptr_Private_int %temp %371 %373 = OpLoad %int %372 %374 = OpAccessChain %_ptr_Private_int %data %370 OpStore %374 %373 OpBranch %364 %364 = OpLabel %375 = OpLoad %int %i_0 %376 = OpIAdd %int %375 %int_1 OpStore %i_0 %376 OpBranch %362 %363 = OpLabel OpReturn OpFunctionEnd %mergeSort_ = OpFunction %void None %32 %377 = OpLabel %low = OpVariable %_ptr_Function_int Function %high = OpVariable %_ptr_Function_int Function %m = OpVariable %_ptr_Function_int Function %i_1 = OpVariable %_ptr_Function_int Function %from_0 = OpVariable %_ptr_Function_int Function %mid_0 = OpVariable %_ptr_Function_int Function %to_0 = OpVariable %_ptr_Function_int Function %param = OpVariable %_ptr_Function_int Function %param_0 = OpVariable %_ptr_Function_int Function %param_1 = OpVariable %_ptr_Function_int Function OpStore %low %int_0 OpStore %high %int_9 OpStore %m %int_1 OpBranch %378 %378 = OpLabel OpLoopMerge %379 %380 None OpBranch %381 %381 = OpLabel %382 = OpLoad %int %m %383 = OpLoad %int %high %384 = OpSLessThanEqual %bool %382 %383 OpBranchConditional %384 %385 %379 %385 = OpLabel %386 = OpLoad %int %low OpStore %i_1 %386 OpBranch %387 %387 = OpLabel OpLoopMerge %388 %389 None OpBranch %390 %390 = OpLabel %391 = OpLoad %int %i_1 %392 = OpLoad %int %high %393 = OpSLessThan %bool %391 %392 OpBranchConditional %393 %394 %388 %394 = OpLabel %395 = OpLoad %int %i_1 OpStore %from_0 %395 %396 = OpLoad %int %i_1 %397 = OpLoad %int %m %398 = OpIAdd %int %396 %397 %399 = OpISub %int %398 %int_1 OpStore %mid_0 %399 %400 = OpLoad %int %i_1 %401 = OpLoad %int %m %402 = OpIMul %int %int_2 %401 %403 = OpIAdd %int %400 %402 %404 = OpISub %int %403 %int_1 %405 = OpLoad %int %high %406 = OpExtInst %int %1 SMin %404 %405 OpStore %to_0 %406 %407 = OpLoad %int %from_0 OpStore %param %407 %408 = OpLoad %int %mid_0 OpStore %param_0 %408 %409 = OpLoad %int %to_0 OpStore %param_1 %409 %410 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_0 %param_1 OpBranch %389 %389 = OpLabel %411 = OpLoad %int %m %412 = OpIMul %int %int_2 %411 %413 = OpLoad %int %i_1 %414 = OpIAdd %int %413 %412 OpStore %i_1 %414 OpBranch %387 %388 = OpLabel OpBranch %380 %380 = OpLabel %415 = OpLoad %int %m %416 = OpIMul %int %int_2 %415 OpStore %m %416 OpBranch %378 %379 = OpLabel OpReturn OpFunctionEnd