blob: c5237977a778b9c52850ec64a46d1ee5fd700a7b [file] [log] [blame]
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 %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 %int_a "int_a"
OpName %gl_FragCoord "gl_FragCoord"
OpName %clamp_a "clamp_a"
OpName %p "p"
OpName %param_3 "param"
OpName %param_4 "param"
OpName %i_1 "i"
OpName %uv "uv"
OpName %buf0 "buf0"
OpMemberName %buf0 0 "resolution"
OpName %_ ""
OpName %color "color"
OpName %_GLF_color "_GLF_color"
OpDecorate %gl_FragCoord BuiltIn FragCoord
OpMemberDecorate %buf0 0 Offset 0
OpDecorate %buf0 Block
OpDecorate %_ DescriptorSet 0
OpDecorate %_ Binding 0
OpDecorate %_GLF_color Location 0
%void = OpTypeVoid
%37 = OpTypeFunction %void
%int = OpTypeInt 32 1
%_ptr_Function_int = OpTypePointer Function %int
%40 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
%41 = 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
%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_Input_v4float = OpTypePointer Input %v4float
%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
%uint_1 = OpConstant %uint 1
%_ptr_Input_float = OpTypePointer Input %float
%float_0 = OpConstant %float 0
%false = OpConstantFalse %bool
%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_1 = OpConstant %float 1
%float_2 = OpConstant %float 2
%float_3 = OpConstant %float 3
%70 = 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
%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
%_GLF_color = OpVariable %_ptr_Output_v4float Output
%main = OpFunction %void None %37
%85 = OpLabel
%i_1 = OpVariable %_ptr_Function_int Function
%uv = OpVariable %_ptr_Function_v2float Function
%color = OpVariable %_ptr_Function_v3float Function
OpStore %i_1 %int_0
OpBranch %86
%86 = OpLabel
OpLoopMerge %87 %88 None
OpBranch %89
%89 = OpLabel
%90 = OpLoad %int %i_1
%91 = OpSLessThan %bool %90 %int_10
OpBranchConditional %91 %92 %87
%92 = OpLabel
%93 = OpLoad %int %i_1
%94 = OpLoad %int %i_1
%95 = OpISub %int %int_10 %94
%96 = OpAccessChain %_ptr_Private_int %obj %int_0 %93
OpStore %96 %95
%97 = OpLoad %int %i_1
%98 = OpLoad %int %i_1
%99 = OpAccessChain %_ptr_Private_int %obj %int_0 %98
%100 = OpLoad %int %99
%101 = OpLoad %int %i_1
%102 = OpAccessChain %_ptr_Private_int %obj %int_0 %101
%103 = OpLoad %int %102
%104 = OpIMul %int %100 %103
%105 = OpAccessChain %_ptr_Private_int %obj %int_0 %97
OpStore %105 %104
OpBranch %88
%88 = OpLabel
%106 = OpLoad %int %i_1
%107 = OpIAdd %int %106 %int_1
OpStore %i_1 %107
OpBranch %86
%87 = OpLabel
%108 = OpFunctionCall %void %quicksort_
%109 = OpLoad %v4float %gl_FragCoord
%110 = OpVectorShuffle %v2float %109 %109 0 1
%111 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
%112 = OpLoad %v2float %111
%113 = OpFDiv %v2float %110 %112
OpStore %uv %113
OpStore %color %70
%114 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_0
%115 = OpLoad %int %114
%116 = OpConvertSToF %float %115
%117 = OpAccessChain %_ptr_Function_float %color %uint_0
%118 = OpLoad %float %117
%119 = OpFAdd %float %118 %116
%120 = OpAccessChain %_ptr_Function_float %color %uint_0
OpStore %120 %119
%121 = OpAccessChain %_ptr_Function_float %uv %uint_0
%122 = OpLoad %float %121
%123 = OpFOrdGreaterThan %bool %122 %float_0_25
OpSelectionMerge %124 None
OpBranchConditional %123 %125 %124
%125 = OpLabel
%126 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_1
%127 = OpLoad %int %126
%128 = OpConvertSToF %float %127
%129 = OpAccessChain %_ptr_Function_float %color %uint_0
%130 = OpLoad %float %129
%131 = OpFAdd %float %130 %128
%132 = OpAccessChain %_ptr_Function_float %color %uint_0
OpStore %132 %131
OpBranch %124
%124 = OpLabel
%133 = OpAccessChain %_ptr_Function_float %uv %uint_0
%134 = OpLoad %float %133
%135 = OpFOrdGreaterThan %bool %134 %float_0_5
OpSelectionMerge %136 None
OpBranchConditional %135 %137 %136
%137 = OpLabel
%138 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_2
%139 = OpLoad %int %138
%140 = OpConvertSToF %float %139
%141 = OpAccessChain %_ptr_Function_float %color %uint_1
%142 = OpLoad %float %141
%143 = OpFAdd %float %142 %140
%144 = OpAccessChain %_ptr_Function_float %color %uint_1
OpStore %144 %143
OpBranch %136
%136 = OpLabel
%145 = OpAccessChain %_ptr_Function_float %uv %uint_0
%146 = OpLoad %float %145
%147 = OpFOrdGreaterThan %bool %146 %float_0_75
OpSelectionMerge %148 None
OpBranchConditional %147 %149 %148
%149 = OpLabel
%150 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_3
%151 = OpLoad %int %150
%152 = OpConvertSToF %float %151
%153 = OpAccessChain %_ptr_Function_float %color %uint_2
%154 = OpLoad %float %153
%155 = OpFAdd %float %154 %152
%156 = OpAccessChain %_ptr_Function_float %color %uint_2
OpStore %156 %155
OpBranch %148
%148 = OpLabel
%157 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_4
%158 = OpLoad %int %157
%159 = OpConvertSToF %float %158
%160 = OpAccessChain %_ptr_Function_float %color %uint_1
%161 = OpLoad %float %160
%162 = OpFAdd %float %161 %159
%163 = OpAccessChain %_ptr_Function_float %color %uint_1
OpStore %163 %162
%164 = OpAccessChain %_ptr_Function_float %uv %uint_1
%165 = OpLoad %float %164
%166 = OpFOrdGreaterThan %bool %165 %float_0_25
OpSelectionMerge %167 None
OpBranchConditional %166 %168 %167
%168 = OpLabel
%169 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_5
%170 = OpLoad %int %169
%171 = OpConvertSToF %float %170
%172 = OpAccessChain %_ptr_Function_float %color %uint_0
%173 = OpLoad %float %172
%174 = OpFAdd %float %173 %171
%175 = OpAccessChain %_ptr_Function_float %color %uint_0
OpStore %175 %174
OpBranch %167
%167 = OpLabel
%176 = OpAccessChain %_ptr_Function_float %uv %uint_1
%177 = OpLoad %float %176
%178 = OpFOrdGreaterThan %bool %177 %float_0_5
OpSelectionMerge %179 None
OpBranchConditional %178 %180 %179
%180 = OpLabel
%181 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_6
%182 = OpLoad %int %181
%183 = OpConvertSToF %float %182
%184 = OpAccessChain %_ptr_Function_float %color %uint_1
%185 = OpLoad %float %184
%186 = OpFAdd %float %185 %183
%187 = OpAccessChain %_ptr_Function_float %color %uint_1
OpStore %187 %186
OpBranch %179
%179 = OpLabel
%188 = OpAccessChain %_ptr_Function_float %uv %uint_1
%189 = OpLoad %float %188
%190 = OpFOrdGreaterThan %bool %189 %float_0_75
OpSelectionMerge %191 None
OpBranchConditional %190 %192 %191
%192 = OpLabel
%193 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_7
%194 = OpLoad %int %193
%195 = OpConvertSToF %float %194
%196 = OpAccessChain %_ptr_Function_float %color %uint_2
%197 = OpLoad %float %196
%198 = OpFAdd %float %197 %195
%199 = OpAccessChain %_ptr_Function_float %color %uint_2
OpStore %199 %198
OpBranch %191
%191 = OpLabel
%200 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_8
%201 = OpLoad %int %200
%202 = OpConvertSToF %float %201
%203 = OpAccessChain %_ptr_Function_float %color %uint_2
%204 = OpLoad %float %203
%205 = OpFAdd %float %204 %202
%206 = OpAccessChain %_ptr_Function_float %color %uint_2
OpStore %206 %205
%207 = OpAccessChain %_ptr_Function_float %uv %uint_0
%208 = OpLoad %float %207
%209 = OpAccessChain %_ptr_Function_float %uv %uint_1
%210 = OpLoad %float %209
%211 = OpFSub %float %208 %210
%212 = OpExtInst %float %1 FAbs %211
%213 = OpFOrdLessThan %bool %212 %float_0_25
OpSelectionMerge %214 None
OpBranchConditional %213 %215 %214
%215 = OpLabel
%216 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_9
%217 = OpLoad %int %216
%218 = OpConvertSToF %float %217
%219 = OpAccessChain %_ptr_Function_float %color %uint_0
%220 = OpLoad %float %219
%221 = OpFAdd %float %220 %218
%222 = OpAccessChain %_ptr_Function_float %color %uint_0
OpStore %222 %221
OpBranch %214
%214 = OpLabel
%223 = OpLoad %v3float %color
%224 = OpExtInst %v3float %1 Normalize %223
%225 = OpCompositeExtract %float %224 0
%226 = OpCompositeExtract %float %224 1
%227 = OpCompositeExtract %float %224 2
%228 = OpCompositeConstruct %v4float %225 %226 %227 %float_1
OpStore %_GLF_color %228
OpReturn
OpFunctionEnd
%swap_i1_i1_ = OpFunction %void None %40
%i = OpFunctionParameter %_ptr_Function_int
%j = OpFunctionParameter %_ptr_Function_int
%229 = OpLabel
%temp = OpVariable %_ptr_Function_int Function
%230 = OpLoad %int %i
%231 = OpAccessChain %_ptr_Private_int %obj %int_0 %230
%232 = OpLoad %int %231
OpStore %temp %232
%233 = OpLoad %int %i
%234 = OpLoad %int %j
%235 = OpAccessChain %_ptr_Private_int %obj %int_0 %234
%236 = OpLoad %int %235
%237 = OpAccessChain %_ptr_Private_int %obj %int_0 %233
OpStore %237 %236
%238 = OpLoad %int %j
%239 = OpLoad %int %temp
%240 = OpAccessChain %_ptr_Private_int %obj %int_0 %238
OpStore %240 %239
OpReturn
OpFunctionEnd
%performPartition_i1_i1_ = OpFunction %int None %41
%l = OpFunctionParameter %_ptr_Function_int
%h = OpFunctionParameter %_ptr_Function_int
%241 = OpLabel
%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
%242 = OpLoad %int %h
%243 = OpAccessChain %_ptr_Private_int %obj %int_0 %242
%244 = OpLoad %int %243
OpStore %pivot %244
%245 = OpLoad %int %l
%246 = OpISub %int %245 %int_1
OpStore %i_0 %246
%247 = OpLoad %int %l
OpStore %j_0 %247
OpBranch %248
%248 = OpLabel
OpLoopMerge %249 %250 None
OpBranch %251
%251 = OpLabel
%252 = OpLoad %int %j_0
%253 = OpLoad %int %h
%254 = OpISub %int %253 %int_1
%255 = OpSLessThanEqual %bool %252 %254
OpBranchConditional %255 %256 %249
%256 = OpLabel
%257 = OpLoad %int %j_0
%258 = OpAccessChain %_ptr_Private_int %obj %int_0 %257
%259 = OpLoad %int %258
%260 = OpLoad %int %pivot
%261 = OpSLessThanEqual %bool %259 %260
OpSelectionMerge %262 None
OpBranchConditional %261 %263 %262
%263 = OpLabel
%264 = OpLoad %int %i_0
%265 = OpIAdd %int %264 %int_1
OpStore %i_0 %265
%266 = OpLoad %int %i_0
OpStore %param %266
%267 = OpLoad %int %j_0
OpStore %param_0 %267
%268 = OpFunctionCall %void %swap_i1_i1_ %param %param_0
OpBranch %262
%262 = OpLabel
OpBranch %250
%250 = OpLabel
%269 = OpLoad %int %j_0
%270 = OpIAdd %int %269 %int_1
OpStore %j_0 %270
OpBranch %248
%249 = OpLabel
%271 = OpLoad %int %i_0
%272 = OpIAdd %int %271 %int_1
OpStore %i_0 %272
%273 = OpLoad %int %i_0
OpStore %param_1 %273
%274 = OpLoad %int %h
OpStore %param_2 %274
%275 = OpFunctionCall %void %swap_i1_i1_ %param_1 %param_2
%276 = OpLoad %int %i_0
OpReturnValue %276
OpFunctionEnd
%quicksort_ = OpFunction %void None %37
%277 = 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
%int_a = OpVariable %_ptr_Function_int Function
%278 = OpVariable %_ptr_Function_int Function
%279 = OpVariable %_ptr_Function_int Function
%clamp_a = OpVariable %_ptr_Function_int 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
%280 = OpLoad %int %top
%281 = OpIAdd %int %280 %int_1
OpStore %top %281
%282 = OpLoad %int %l_0
%283 = OpAccessChain %_ptr_Function_int %stack %281
OpStore %283 %282
%284 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
%285 = OpLoad %float %284
%286 = OpFOrdGreaterThanEqual %bool %285 %float_0
OpSelectionMerge %287 None
OpBranchConditional %286 %288 %289
%288 = OpLabel
%290 = OpLoad %int %h_0
OpSelectionMerge %291 None
OpBranchConditional %false %292 %293
%292 = OpLabel
OpStore %279 %int_1
OpBranch %291
%293 = OpLabel
%294 = OpLoad %int %h_0
%295 = OpShiftLeftLogical %int %294 %int_0
OpStore %279 %295
OpBranch %291
%291 = OpLabel
%296 = OpLoad %int %279
%297 = OpBitwiseOr %int %290 %296
OpStore %278 %297
OpBranch %287
%289 = OpLabel
OpStore %278 %int_1
OpBranch %287
%287 = OpLabel
%298 = OpLoad %int %278
OpStore %int_a %298
%299 = OpLoad %int %h_0
%300 = OpLoad %int %h_0
%301 = OpLoad %int %int_a
%302 = OpExtInst %int %1 SClamp %299 %300 %301
OpStore %clamp_a %302
%303 = OpLoad %int %top
%304 = OpIAdd %int %303 %int_1
OpStore %top %304
%305 = OpLoad %int %clamp_a
%306 = OpSDiv %int %305 %int_1
%307 = OpAccessChain %_ptr_Function_int %stack %304
OpStore %307 %306
OpBranch %308
%308 = OpLabel
OpLoopMerge %309 %310 None
OpBranch %311
%311 = OpLabel
%312 = OpLoad %int %top
%313 = OpSGreaterThanEqual %bool %312 %int_0
OpBranchConditional %313 %314 %309
%314 = OpLabel
%315 = OpLoad %int %top
%316 = OpISub %int %315 %int_1
OpStore %top %316
%317 = OpAccessChain %_ptr_Function_int %stack %315
%318 = OpLoad %int %317
OpStore %h_0 %318
%319 = OpLoad %int %top
%320 = OpISub %int %319 %int_1
OpStore %top %320
%321 = OpAccessChain %_ptr_Function_int %stack %319
%322 = OpLoad %int %321
OpStore %l_0 %322
%323 = OpLoad %int %l_0
OpStore %param_3 %323
%324 = OpLoad %int %h_0
OpStore %param_4 %324
%325 = OpFunctionCall %int %performPartition_i1_i1_ %param_3 %param_4
OpStore %p %325
%326 = OpLoad %int %p
%327 = OpISub %int %326 %int_1
%328 = OpLoad %int %l_0
%329 = OpSGreaterThan %bool %327 %328
OpSelectionMerge %330 None
OpBranchConditional %329 %331 %330
%331 = OpLabel
%332 = OpLoad %int %top
%333 = OpIAdd %int %332 %int_1
OpStore %top %333
%334 = OpLoad %int %l_0
%335 = OpAccessChain %_ptr_Function_int %stack %333
OpStore %335 %334
%336 = OpLoad %int %top
%337 = OpIAdd %int %336 %int_1
OpStore %top %337
%338 = OpLoad %int %p
%339 = OpISub %int %338 %int_1
%340 = OpAccessChain %_ptr_Function_int %stack %337
OpStore %340 %339
OpBranch %330
%330 = OpLabel
%341 = OpLoad %int %p
%342 = OpIAdd %int %341 %int_1
%343 = OpLoad %int %h_0
%344 = OpSLessThan %bool %342 %343
OpSelectionMerge %345 None
OpBranchConditional %344 %346 %345
%346 = OpLabel
%347 = OpLoad %int %top
%348 = OpIAdd %int %347 %int_1
OpStore %top %348
%349 = OpLoad %int %p
%350 = OpIAdd %int %349 %int_1
%351 = OpAccessChain %_ptr_Function_int %stack %348
OpStore %351 %350
%352 = OpLoad %int %top
%353 = OpIAdd %int %352 %int_1
OpStore %top %353
%354 = OpLoad %int %h_0
%355 = OpAccessChain %_ptr_Function_int %stack %353
OpStore %355 %354
OpBranch %345
%345 = OpLabel
OpBranch %310
%310 = OpLabel
OpBranch %308
%309 = OpLabel
OpReturn
OpFunctionEnd