blob: 2355739d5aed01bfcfe29ad0149e11e9fc71e04c [file] [log] [blame]
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %main "main" %_GLF_pos %frag_color %__0
OpSource ESSL 310
OpName %main "main"
OpName %swap_i1_i1_ "swap(i1;i1;"
OpName %i "i"
OpName %j "j"
OpName %performPartition_i1_i1_ "performPartition(i1;i1;"
OpName %l "l"
OpName %h "h"
OpName %quicksort_ "quicksort("
OpName %temp "temp"
OpName %QuicksortObject "QuicksortObject"
OpMemberName %QuicksortObject 0 "numbers"
OpName %obj "obj"
OpName %pivot "pivot"
OpName %i_0 "i"
OpName %j_0 "j"
OpName %param "param"
OpName %param_0 "param"
OpName %param_1 "param"
OpName %param_2 "param"
OpName %l_0 "l"
OpName %h_0 "h"
OpName %top "top"
OpName %stack "stack"
OpName %p "p"
OpName %param_3 "param"
OpName %param_4 "param"
OpName %_GLF_FragCoord "_GLF_FragCoord"
OpName %_GLF_pos "_GLF_pos"
OpName %i_1 "i"
OpName %uv "uv"
OpName %buf0 "buf0"
OpMemberName %buf0 0 "resolution"
OpName %_ ""
OpName %color "color"
OpName %frag_color "frag_color"
OpName %gl_PerVertex "gl_PerVertex"
OpMemberName %gl_PerVertex 0 "gl_Position"
OpMemberName %gl_PerVertex 1 "gl_PointSize"
OpName %__0 ""
OpDecorate %_GLF_pos Location 0
OpMemberDecorate %buf0 0 Offset 0
OpDecorate %buf0 Block
OpDecorate %_ DescriptorSet 0
OpDecorate %_ Binding 0
OpDecorate %frag_color Location 0
OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
OpDecorate %gl_PerVertex Block
%void = OpTypeVoid
%38 = OpTypeFunction %void
%int = OpTypeInt 32 1
%_ptr_Function_int = OpTypePointer Function %int
%41 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
%42 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
%uint = OpTypeInt 32 0
%uint_10 = OpConstant %uint 10
%_arr_int_uint_10 = OpTypeArray %int %uint_10
%QuicksortObject = OpTypeStruct %_arr_int_uint_10
%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
%obj = OpVariable %_ptr_Private_QuicksortObject Private
%int_0 = OpConstant %int 0
%_ptr_Private_int = OpTypePointer Private %int
%int_1 = OpConstant %int 1
%bool = OpTypeBool
%false = OpConstantFalse %bool
%int_9 = OpConstant %int 9
%int_n1 = OpConstant %int -1
%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Private_v4float = OpTypePointer Private %v4float
%_GLF_FragCoord = OpVariable %_ptr_Private_v4float Private
%_ptr_Input_v4float = OpTypePointer Input %v4float
%_GLF_pos = OpVariable %_ptr_Input_v4float Input
%float_1 = OpConstant %float 1
%float_0 = OpConstant %float 0
%61 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_0
%float_128 = OpConstant %float 128
%63 = OpConstantComposite %v4float %float_128 %float_128 %float_1 %float_1
%int_10 = OpConstant %int 10
%v2float = OpTypeVector %float 2
%_ptr_Function_v2float = OpTypePointer Function %v2float
%buf0 = OpTypeStruct %v2float
%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
%_ = OpVariable %_ptr_Uniform_buf0 Uniform
%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
%v3float = OpTypeVector %float 3
%_ptr_Function_v3float = OpTypePointer Function %v3float
%float_2 = OpConstant %float 2
%float_3 = OpConstant %float 3
%73 = OpConstantComposite %v3float %float_1 %float_2 %float_3
%uint_0 = OpConstant %uint 0
%_ptr_Function_float = OpTypePointer Function %float
%float_0_25 = OpConstant %float 0.25
%float_0_5 = OpConstant %float 0.5
%int_2 = OpConstant %int 2
%uint_1 = OpConstant %uint 1
%float_0_75 = OpConstant %float 0.75
%int_3 = OpConstant %int 3
%uint_2 = OpConstant %uint 2
%int_4 = OpConstant %int 4
%int_5 = OpConstant %int 5
%int_6 = OpConstant %int 6
%int_7 = OpConstant %int 7
%int_8 = OpConstant %int 8
%_ptr_Output_v4float = OpTypePointer Output %v4float
%frag_color = OpVariable %_ptr_Output_v4float Output
%gl_PerVertex = OpTypeStruct %v4float %float
%_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex
%__0 = OpVariable %_ptr_Output_gl_PerVertex Output
%main = OpFunction %void None %38
%90 = OpLabel
%91 = OpVariable %_ptr_Function_int Function
%92 = OpVariable %_ptr_Function_int Function
%93 = OpVariable %_ptr_Function_int Function
%94 = OpVariable %_ptr_Function__arr_int_uint_10 Function
%95 = OpVariable %_ptr_Function_int Function
%96 = OpVariable %_ptr_Function_int Function
%97 = OpVariable %_ptr_Function_int Function
%i_1 = OpVariable %_ptr_Function_int Function
%uv = OpVariable %_ptr_Function_v2float Function
%color = OpVariable %_ptr_Function_v3float Function
%98 = OpLoad %v4float %_GLF_pos
%99 = OpFAdd %v4float %98 %61
%100 = OpFMul %v4float %99 %63
OpStore %_GLF_FragCoord %100
OpStore %i_1 %int_0
OpBranch %101
%101 = OpLabel
OpLoopMerge %102 %103 None
OpBranch %104
%104 = OpLabel
%105 = OpLoad %int %i_1
%106 = OpSLessThan %bool %105 %int_10
OpBranchConditional %106 %107 %102
%107 = OpLabel
%108 = OpLoad %int %i_1
%109 = OpLoad %int %i_1
%110 = OpISub %int %int_10 %109
%111 = OpAccessChain %_ptr_Private_int %obj %int_0 %108
OpStore %111 %110
%112 = OpLoad %int %i_1
%113 = OpLoad %int %i_1
%114 = OpAccessChain %_ptr_Private_int %obj %int_0 %113
%115 = OpLoad %int %114
%116 = OpLoad %int %i_1
%117 = OpAccessChain %_ptr_Private_int %obj %int_0 %116
%118 = OpLoad %int %117
%119 = OpIMul %int %115 %118
%120 = OpAccessChain %_ptr_Private_int %obj %int_0 %112
OpStore %120 %119
OpBranch %103
%103 = OpLabel
%121 = OpLoad %int %i_1
%122 = OpIAdd %int %121 %int_1
OpStore %i_1 %122
OpBranch %101
%102 = OpLabel
OpStore %91 %int_0
OpStore %92 %int_9
OpStore %93 %int_n1
%123 = OpLoad %int %93
%124 = OpIAdd %int %123 %int_1
OpStore %93 %124
%125 = OpLoad %int %91
%126 = OpAccessChain %_ptr_Function_int %94 %124
OpStore %126 %125
%127 = OpLoad %int %93
%128 = OpIAdd %int %127 %int_1
OpStore %93 %128
%129 = OpLoad %int %92
%130 = OpAccessChain %_ptr_Function_int %94 %128
OpStore %130 %129
OpBranch %131
%131 = OpLabel
OpLoopMerge %132 %133 None
OpBranch %134
%134 = OpLabel
%135 = OpLoad %int %93
%136 = OpSGreaterThanEqual %bool %135 %int_0
OpBranchConditional %136 %137 %132
%137 = OpLabel
%138 = OpLoad %int %93
%139 = OpISub %int %138 %int_1
OpStore %93 %139
%140 = OpAccessChain %_ptr_Function_int %94 %138
%141 = OpLoad %int %140
OpStore %92 %141
%142 = OpLoad %int %93
%143 = OpISub %int %142 %int_1
OpStore %93 %143
%144 = OpAccessChain %_ptr_Function_int %94 %142
%145 = OpLoad %int %144
OpStore %91 %145
%146 = OpLoad %int %91
OpStore %96 %146
%147 = OpLoad %int %92
OpStore %97 %147
%148 = OpFunctionCall %int %performPartition_i1_i1_ %96 %97
OpStore %95 %148
%149 = OpLoad %int %95
%150 = OpISub %int %149 %int_1
%151 = OpLoad %int %91
%152 = OpSGreaterThan %bool %150 %151
OpSelectionMerge %153 None
OpBranchConditional %152 %154 %153
%154 = OpLabel
%155 = OpLoad %int %93
%156 = OpIAdd %int %155 %int_1
OpStore %93 %156
%157 = OpLoad %int %91
%158 = OpAccessChain %_ptr_Function_int %94 %156
OpStore %158 %157
%159 = OpLoad %int %93
%160 = OpIAdd %int %159 %int_1
OpStore %93 %160
%161 = OpLoad %int %95
%162 = OpISub %int %161 %int_1
%163 = OpAccessChain %_ptr_Function_int %94 %160
OpStore %163 %162
OpBranch %153
%153 = OpLabel
%164 = OpLoad %int %95
%165 = OpIAdd %int %164 %int_1
%166 = OpLoad %int %92
%167 = OpSLessThan %bool %165 %166
OpSelectionMerge %168 None
OpBranchConditional %167 %169 %168
%169 = OpLabel
%170 = OpLoad %int %93
%171 = OpIAdd %int %170 %int_1
OpStore %93 %171
%172 = OpLoad %int %95
%173 = OpIAdd %int %172 %int_1
%174 = OpAccessChain %_ptr_Function_int %94 %171
OpStore %174 %173
%175 = OpLoad %int %93
%176 = OpIAdd %int %175 %int_1
OpStore %93 %176
%177 = OpLoad %int %92
%178 = OpAccessChain %_ptr_Function_int %94 %176
OpStore %178 %177
OpBranch %168
%168 = OpLabel
OpBranch %133
%133 = OpLabel
OpBranch %131
%132 = OpLabel
%179 = OpLoad %v4float %_GLF_FragCoord
%180 = OpVectorShuffle %v2float %179 %179 0 1
%181 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
%182 = OpLoad %v2float %181
%183 = OpFDiv %v2float %180 %182
OpStore %uv %183
OpStore %color %73
%184 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_0
%185 = OpLoad %int %184
%186 = OpConvertSToF %float %185
%187 = OpAccessChain %_ptr_Function_float %color %uint_0
%188 = OpLoad %float %187
%189 = OpFAdd %float %188 %186
%190 = OpAccessChain %_ptr_Function_float %color %uint_0
OpStore %190 %189
%191 = OpAccessChain %_ptr_Function_float %uv %uint_0
%192 = OpLoad %float %191
%193 = OpFOrdGreaterThan %bool %192 %float_0_25
OpSelectionMerge %194 None
OpBranchConditional %193 %195 %194
%195 = OpLabel
%196 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_1
%197 = OpLoad %int %196
%198 = OpConvertSToF %float %197
%199 = OpAccessChain %_ptr_Function_float %color %uint_0
%200 = OpLoad %float %199
%201 = OpFAdd %float %200 %198
%202 = OpAccessChain %_ptr_Function_float %color %uint_0
OpStore %202 %201
OpBranch %194
%194 = OpLabel
%203 = OpAccessChain %_ptr_Function_float %uv %uint_0
%204 = OpLoad %float %203
%205 = OpFOrdGreaterThan %bool %204 %float_0_5
OpSelectionMerge %206 None
OpBranchConditional %205 %207 %206
%207 = OpLabel
%208 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_2
%209 = OpLoad %int %208
%210 = OpConvertSToF %float %209
%211 = OpAccessChain %_ptr_Function_float %color %uint_1
%212 = OpLoad %float %211
%213 = OpFAdd %float %212 %210
%214 = OpAccessChain %_ptr_Function_float %color %uint_1
OpStore %214 %213
OpBranch %206
%206 = OpLabel
%215 = OpAccessChain %_ptr_Function_float %uv %uint_0
%216 = OpLoad %float %215
%217 = OpFOrdGreaterThan %bool %216 %float_0_75
OpSelectionMerge %218 None
OpBranchConditional %217 %219 %218
%219 = OpLabel
%220 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_3
%221 = OpLoad %int %220
%222 = OpConvertSToF %float %221
%223 = OpAccessChain %_ptr_Function_float %color %uint_2
%224 = OpLoad %float %223
%225 = OpFAdd %float %224 %222
%226 = OpAccessChain %_ptr_Function_float %color %uint_2
OpStore %226 %225
OpBranch %218
%218 = OpLabel
%227 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_4
%228 = OpLoad %int %227
%229 = OpConvertSToF %float %228
%230 = OpAccessChain %_ptr_Function_float %color %uint_1
%231 = OpLoad %float %230
%232 = OpFAdd %float %231 %229
%233 = OpAccessChain %_ptr_Function_float %color %uint_1
OpStore %233 %232
%234 = OpAccessChain %_ptr_Function_float %uv %uint_1
%235 = OpLoad %float %234
%236 = OpFOrdGreaterThan %bool %235 %float_0_25
OpSelectionMerge %237 None
OpBranchConditional %236 %238 %237
%238 = OpLabel
%239 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_5
%240 = OpLoad %int %239
%241 = OpConvertSToF %float %240
%242 = OpAccessChain %_ptr_Function_float %color %uint_0
%243 = OpLoad %float %242
%244 = OpFAdd %float %243 %241
%245 = OpAccessChain %_ptr_Function_float %color %uint_0
OpStore %245 %244
OpBranch %237
%237 = OpLabel
%246 = OpAccessChain %_ptr_Function_float %uv %uint_1
%247 = OpLoad %float %246
%248 = OpFOrdGreaterThan %bool %247 %float_0_5
OpSelectionMerge %249 None
OpBranchConditional %248 %250 %249
%250 = OpLabel
%251 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_6
%252 = OpLoad %int %251
%253 = OpConvertSToF %float %252
%254 = OpAccessChain %_ptr_Function_float %color %uint_1
%255 = OpLoad %float %254
%256 = OpFAdd %float %255 %253
%257 = OpAccessChain %_ptr_Function_float %color %uint_1
OpStore %257 %256
OpBranch %249
%249 = OpLabel
%258 = OpAccessChain %_ptr_Function_float %uv %uint_1
%259 = OpLoad %float %258
%260 = OpFOrdGreaterThan %bool %259 %float_0_75
OpSelectionMerge %261 None
OpBranchConditional %260 %262 %261
%262 = OpLabel
%263 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_7
%264 = OpLoad %int %263
%265 = OpConvertSToF %float %264
%266 = OpAccessChain %_ptr_Function_float %color %uint_2
%267 = OpLoad %float %266
%268 = OpFAdd %float %267 %265
%269 = OpAccessChain %_ptr_Function_float %color %uint_2
OpStore %269 %268
OpBranch %261
%261 = OpLabel
%270 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_8
%271 = OpLoad %int %270
%272 = OpConvertSToF %float %271
%273 = OpAccessChain %_ptr_Function_float %color %uint_2
%274 = OpLoad %float %273
%275 = OpFAdd %float %274 %272
%276 = OpAccessChain %_ptr_Function_float %color %uint_2
OpStore %276 %275
%277 = OpAccessChain %_ptr_Function_float %uv %uint_0
%278 = OpLoad %float %277
%279 = OpAccessChain %_ptr_Function_float %uv %uint_1
%280 = OpLoad %float %279
%281 = OpFSub %float %278 %280
%282 = OpExtInst %float %1 FAbs %281
%283 = OpFOrdLessThan %bool %282 %float_0_25
OpSelectionMerge %284 None
OpBranchConditional %283 %285 %284
%285 = OpLabel
%286 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_9
%287 = OpLoad %int %286
%288 = OpConvertSToF %float %287
%289 = OpAccessChain %_ptr_Function_float %color %uint_0
%290 = OpLoad %float %289
%291 = OpFAdd %float %290 %288
%292 = OpAccessChain %_ptr_Function_float %color %uint_0
OpStore %292 %291
OpBranch %284
%284 = OpLabel
%293 = OpLoad %v3float %color
%294 = OpExtInst %v3float %1 Normalize %293
%295 = OpCompositeExtract %float %294 0
%296 = OpCompositeExtract %float %294 1
%297 = OpCompositeExtract %float %294 2
%298 = OpCompositeConstruct %v4float %295 %296 %297 %float_1
OpStore %frag_color %298
%299 = OpLoad %v4float %_GLF_pos
%300 = OpAccessChain %_ptr_Output_v4float %__0 %int_0
OpStore %300 %299
OpReturn
OpFunctionEnd
%swap_i1_i1_ = OpFunction %void None %41
%i = OpFunctionParameter %_ptr_Function_int
%j = OpFunctionParameter %_ptr_Function_int
%301 = OpLabel
%temp = OpVariable %_ptr_Function_int Function
%302 = OpLoad %int %i
%303 = OpAccessChain %_ptr_Private_int %obj %int_0 %302
%304 = OpLoad %int %303
OpStore %temp %304
%305 = OpLoad %int %i
%306 = OpLoad %int %j
%307 = OpAccessChain %_ptr_Private_int %obj %int_0 %306
%308 = OpLoad %int %307
%309 = OpAccessChain %_ptr_Private_int %obj %int_0 %305
OpStore %309 %308
%310 = OpLoad %int %j
%311 = OpLoad %int %temp
%312 = OpAccessChain %_ptr_Private_int %obj %int_0 %310
OpStore %312 %311
OpReturn
OpFunctionEnd
%performPartition_i1_i1_ = OpFunction %int None %42
%l = OpFunctionParameter %_ptr_Function_int
%h = OpFunctionParameter %_ptr_Function_int
%313 = OpLabel
%314 = OpVariable %_ptr_Function_int Function
%315 = OpVariable %_ptr_Function_int Function
%pivot = OpVariable %_ptr_Function_int Function
%i_0 = OpVariable %_ptr_Function_int Function
%j_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
%param_2 = OpVariable %_ptr_Function_int Function
%316 = OpLoad %int %h
%317 = OpAccessChain %_ptr_Private_int %obj %int_0 %316
%318 = OpLoad %int %317
OpStore %pivot %318
%319 = OpLoad %int %l
%320 = OpISub %int %319 %int_1
OpStore %i_0 %320
%321 = OpLoad %int %l
OpStore %j_0 %321
OpBranch %322
%322 = OpLabel
OpLoopMerge %323 %324 None
OpBranch %325
%325 = OpLabel
%326 = OpLoad %int %j_0
%327 = OpLoad %int %h
%328 = OpISub %int %327 %int_1
%329 = OpSLessThanEqual %bool %326 %328
OpBranchConditional %329 %330 %323
%330 = OpLabel
%331 = OpLoad %int %j_0
%332 = OpAccessChain %_ptr_Private_int %obj %int_0 %331
%333 = OpLoad %int %332
%334 = OpLoad %int %pivot
%335 = OpSLessThanEqual %bool %333 %334
OpSelectionMerge %336 None
OpBranchConditional %335 %337 %336
%337 = OpLabel
%338 = OpLoad %int %i_0
%339 = OpIAdd %int %338 %int_1
OpStore %i_0 %339
%340 = OpLoad %int %i_0
OpStore %param %340
%341 = OpLoad %int %j_0
OpStore %param_0 %341
%342 = OpLoad %int %param
%343 = OpAccessChain %_ptr_Private_int %obj %int_0 %342
%344 = OpLoad %int %343
OpStore %315 %344
%345 = OpLoad %int %param
%346 = OpLoad %int %param_0
%347 = OpAccessChain %_ptr_Private_int %obj %int_0 %346
%348 = OpLoad %int %347
%349 = OpAccessChain %_ptr_Private_int %obj %int_0 %345
OpStore %349 %348
%350 = OpLoad %int %param_0
%351 = OpLoad %int %315
%352 = OpAccessChain %_ptr_Private_int %obj %int_0 %350
OpStore %352 %351
OpBranch %336
%336 = OpLabel
OpBranch %324
%324 = OpLabel
%353 = OpLoad %int %j_0
%354 = OpIAdd %int %353 %int_1
OpStore %j_0 %354
OpBranch %322
%323 = OpLabel
%355 = OpLoad %int %i_0
%356 = OpIAdd %int %355 %int_1
OpStore %param_1 %356
%357 = OpLoad %int %h
OpStore %param_2 %357
%358 = OpLoad %int %param_1
%359 = OpAccessChain %_ptr_Private_int %obj %int_0 %358
%360 = OpLoad %int %359
OpStore %314 %360
%361 = OpLoad %int %param_1
%362 = OpLoad %int %param_2
%363 = OpAccessChain %_ptr_Private_int %obj %int_0 %362
%364 = OpLoad %int %363
%365 = OpAccessChain %_ptr_Private_int %obj %int_0 %361
OpStore %365 %364
%366 = OpLoad %int %param_2
%367 = OpLoad %int %314
%368 = OpAccessChain %_ptr_Private_int %obj %int_0 %366
OpStore %368 %367
OpSelectionMerge %369 None
OpBranchConditional %false %370 %371
%370 = OpLabel
OpBranch %369
%371 = OpLabel
%372 = OpLoad %int %i_0
%373 = OpIAdd %int %372 %int_1
OpReturnValue %373
%369 = OpLabel
%374 = OpUndef %int
OpReturnValue %374
OpFunctionEnd
%quicksort_ = OpFunction %void None %38
%375 = OpLabel
%l_0 = OpVariable %_ptr_Function_int Function
%h_0 = OpVariable %_ptr_Function_int Function
%top = OpVariable %_ptr_Function_int Function
%stack = OpVariable %_ptr_Function__arr_int_uint_10 Function
%p = OpVariable %_ptr_Function_int Function
%param_3 = OpVariable %_ptr_Function_int Function
%param_4 = OpVariable %_ptr_Function_int Function
OpStore %l_0 %int_0
OpStore %h_0 %int_9
OpStore %top %int_n1
%376 = OpLoad %int %top
%377 = OpIAdd %int %376 %int_1
OpStore %top %377
%378 = OpLoad %int %l_0
%379 = OpAccessChain %_ptr_Function_int %stack %377
OpStore %379 %378
%380 = OpLoad %int %top
%381 = OpIAdd %int %380 %int_1
OpStore %top %381
%382 = OpLoad %int %h_0
%383 = OpAccessChain %_ptr_Function_int %stack %381
OpStore %383 %382
OpBranch %384
%384 = OpLabel
OpLoopMerge %385 %386 None
OpBranch %387
%387 = OpLabel
%388 = OpLoad %int %top
%389 = OpSGreaterThanEqual %bool %388 %int_0
OpBranchConditional %389 %390 %385
%390 = OpLabel
%391 = OpLoad %int %top
%392 = OpISub %int %391 %int_1
OpStore %top %392
%393 = OpAccessChain %_ptr_Function_int %stack %391
%394 = OpLoad %int %393
OpStore %h_0 %394
%395 = OpLoad %int %top
%396 = OpISub %int %395 %int_1
OpStore %top %396
%397 = OpAccessChain %_ptr_Function_int %stack %395
%398 = OpLoad %int %397
OpStore %l_0 %398
%399 = OpLoad %int %l_0
OpStore %param_3 %399
%400 = OpLoad %int %h_0
OpStore %param_4 %400
%401 = OpFunctionCall %int %performPartition_i1_i1_ %param_3 %param_4
OpStore %p %401
%402 = OpLoad %int %p
%403 = OpISub %int %402 %int_1
%404 = OpLoad %int %l_0
%405 = OpSGreaterThan %bool %403 %404
OpSelectionMerge %406 None
OpBranchConditional %405 %407 %406
%407 = OpLabel
%408 = OpLoad %int %top
%409 = OpIAdd %int %408 %int_1
OpStore %top %409
%410 = OpLoad %int %l_0
%411 = OpAccessChain %_ptr_Function_int %stack %409
OpStore %411 %410
%412 = OpLoad %int %top
%413 = OpIAdd %int %412 %int_1
OpStore %top %413
%414 = OpLoad %int %p
%415 = OpISub %int %414 %int_1
%416 = OpAccessChain %_ptr_Function_int %stack %413
OpStore %416 %415
OpBranch %406
%406 = OpLabel
%417 = OpLoad %int %p
%418 = OpIAdd %int %417 %int_1
%419 = OpLoad %int %h_0
%420 = OpSLessThan %bool %418 %419
OpSelectionMerge %421 None
OpBranchConditional %420 %422 %421
%422 = OpLabel
%423 = OpLoad %int %top
%424 = OpIAdd %int %423 %int_1
OpStore %top %424
%425 = OpLoad %int %p
%426 = OpIAdd %int %425 %int_1
%427 = OpAccessChain %_ptr_Function_int %stack %424
OpStore %427 %426
%428 = OpLoad %int %top
%429 = OpIAdd %int %428 %int_1
OpStore %top %429
%430 = OpLoad %int %h_0
%431 = OpAccessChain %_ptr_Function_int %stack %429
OpStore %431 %430
OpBranch %421
%421 = OpLabel
OpBranch %386
%386 = OpLabel
OpBranch %384
%385 = OpLabel
OpReturn
OpFunctionEnd