blob: ef62d6c40c2f87ca07a6c7f1d3bc7d1de6e0c00f [file] [log] [blame]
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %main "main" %_GLF_color
OpExecutionMode %main OriginUpperLeft
OpSource ESSL 310
OpName %main "main"
OpName %identity_i1_ "identity(i1;"
OpName %a "a"
OpName %BST "BST"
OpMemberName %BST 0 "data"
OpMemberName %BST 1 "leftIndex"
OpMemberName %BST 2 "rightIndex"
OpName %makeTreeNode_struct_BST_i1_i1_i11_i1_ "makeTreeNode(struct-BST-i1-i1-i11;i1;"
OpName %node "node"
OpName %data "data"
OpName %insert_i1_i1_ "insert(i1;i1;"
OpName %treeIndex "treeIndex"
OpName %data_0 "data"
OpName %search_i1_ "search(i1;"
OpName %target "target"
OpName %QuicksortObject "QuicksortObject"
OpMemberName %QuicksortObject 0 "numbers"
OpName %obj "obj"
OpName %baseIndex "baseIndex"
OpName %tree "tree"
OpName %param "param"
OpName %param_0 "param"
OpName %param_1 "param"
OpName %param_2 "param"
OpName %index "index"
OpName %currentNode "currentNode"
OpName %treeIndex_0 "treeIndex"
OpName %param_3 "param"
OpName %param_4 "param"
OpName %param_5 "param"
OpName %param_6 "param"
OpName %param_7 "param"
OpName %param_8 "param"
OpName %param_9 "param"
OpName %param_10 "param"
OpName %param_11 "param"
OpName %param_12 "param"
OpName %param_13 "param"
OpName %param_14 "param"
OpName %param_15 "param"
OpName %param_16 "param"
OpName %param_17 "param"
OpName %param_18 "param"
OpName %param_19 "param"
OpName %param_20 "param"
OpName %param_21 "param"
OpName %param_22 "param"
OpName %pp "pp"
OpName %looplimiter0 "looplimiter0"
OpName %i "i"
OpName %buf0 "buf0"
OpMemberName %buf0 0 "injectionSwitch"
OpName %_ ""
OpName %param_23 "param"
OpName %count "count"
OpName %i_0 "i"
OpName %result "result"
OpName %param_24 "param"
OpName %_GLF_color "_GLF_color"
OpMemberDecorate %buf0 0 Offset 0
OpDecorate %buf0 Block
OpDecorate %_ DescriptorSet 0
OpDecorate %_ Binding 0
OpDecorate %_GLF_color Location 0
%void = OpTypeVoid
%57 = OpTypeFunction %void
%int = OpTypeInt 32 1
%_ptr_Function_int = OpTypePointer Function %int
%60 = OpTypeFunction %int %_ptr_Function_int
%BST = OpTypeStruct %int %int %int
%_ptr_Function_BST = OpTypePointer Function %BST
%62 = OpTypeFunction %void %_ptr_Function_BST %_ptr_Function_int
%63 = OpTypeFunction %void %_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_2 = OpConstant %int 2
%int_1 = OpConstant %int 1
%int_n1 = OpConstant %int -1
%bool = OpTypeBool
%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
%_ptr_Private__arr_BST_uint_10 = OpTypePointer Private %_arr_BST_uint_10
%tree = OpVariable %_ptr_Private__arr_BST_uint_10 Private
%_ptr_Private_BST = OpTypePointer Private %BST
%int_9 = OpConstant %int 9
%int_5 = OpConstant %int 5
%int_12 = OpConstant %int 12
%int_15 = OpConstant %int 15
%int_7 = OpConstant %int 7
%int_8 = OpConstant %int 8
%int_6 = OpConstant %int 6
%int_17 = OpConstant %int 17
%int_13 = OpConstant %int 13
%int_10000 = OpConstant %int 10000
%float = OpTypeFloat 32
%v2float = OpTypeVector %float 2
%buf0 = OpTypeStruct %v2float
%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
%_ = OpVariable %_ptr_Uniform_buf0 Uniform
%uint_1 = OpConstant %uint 1
%_ptr_Uniform_float = OpTypePointer Uniform %float
%int_20 = OpConstant %int 20
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
%_GLF_color = OpVariable %_ptr_Output_v4float Output
%float_1 = OpConstant %float 1
%float_0 = OpConstant %float 0
%97 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
%98 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
%main = OpFunction %void None %57
%99 = OpLabel
%treeIndex_0 = OpVariable %_ptr_Function_int Function
%param_3 = OpVariable %_ptr_Function_BST Function
%param_4 = OpVariable %_ptr_Function_int Function
%param_5 = OpVariable %_ptr_Function_int Function
%param_6 = OpVariable %_ptr_Function_int Function
%param_7 = OpVariable %_ptr_Function_int Function
%param_8 = OpVariable %_ptr_Function_int Function
%param_9 = OpVariable %_ptr_Function_int Function
%param_10 = OpVariable %_ptr_Function_int Function
%param_11 = OpVariable %_ptr_Function_int Function
%param_12 = OpVariable %_ptr_Function_int Function
%param_13 = OpVariable %_ptr_Function_int Function
%param_14 = OpVariable %_ptr_Function_int Function
%param_15 = OpVariable %_ptr_Function_int Function
%param_16 = OpVariable %_ptr_Function_int Function
%param_17 = OpVariable %_ptr_Function_int Function
%param_18 = OpVariable %_ptr_Function_int Function
%param_19 = OpVariable %_ptr_Function_int Function
%param_20 = OpVariable %_ptr_Function_int Function
%param_21 = OpVariable %_ptr_Function_int Function
%param_22 = OpVariable %_ptr_Function_int Function
%pp = OpVariable %_ptr_Function_int Function
%looplimiter0 = OpVariable %_ptr_Function_int Function
%i = OpVariable %_ptr_Function_int Function
%param_23 = OpVariable %_ptr_Function_int Function
%count = OpVariable %_ptr_Function_int Function
%i_0 = OpVariable %_ptr_Function_int Function
%result = OpVariable %_ptr_Function_int Function
%param_24 = OpVariable %_ptr_Function_int Function
OpStore %treeIndex_0 %int_0
%100 = OpAccessChain %_ptr_Private_BST %tree %int_0
%101 = OpLoad %BST %100
OpStore %param_3 %101
OpStore %param_4 %int_9
%102 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_3 %param_4
%103 = OpLoad %BST %param_3
%104 = OpAccessChain %_ptr_Private_BST %tree %int_0
OpStore %104 %103
%105 = OpLoad %int %treeIndex_0
%106 = OpIAdd %int %105 %int_1
OpStore %treeIndex_0 %106
%107 = OpLoad %int %treeIndex_0
OpStore %param_5 %107
OpStore %param_6 %int_5
%108 = OpFunctionCall %void %insert_i1_i1_ %param_5 %param_6
%109 = OpLoad %int %treeIndex_0
%110 = OpIAdd %int %109 %int_1
OpStore %treeIndex_0 %110
%111 = OpLoad %int %treeIndex_0
OpStore %param_7 %111
OpStore %param_8 %int_12
%112 = OpFunctionCall %void %insert_i1_i1_ %param_7 %param_8
%113 = OpLoad %int %treeIndex_0
%114 = OpIAdd %int %113 %int_1
OpStore %treeIndex_0 %114
%115 = OpLoad %int %treeIndex_0
OpStore %param_9 %115
OpStore %param_10 %int_15
%116 = OpFunctionCall %void %insert_i1_i1_ %param_9 %param_10
%117 = OpLoad %int %treeIndex_0
%118 = OpIAdd %int %117 %int_1
OpStore %treeIndex_0 %118
%119 = OpLoad %int %treeIndex_0
OpStore %param_11 %119
OpStore %param_12 %int_7
%120 = OpFunctionCall %void %insert_i1_i1_ %param_11 %param_12
%121 = OpLoad %int %treeIndex_0
%122 = OpIAdd %int %121 %int_1
OpStore %treeIndex_0 %122
%123 = OpLoad %int %treeIndex_0
OpStore %param_13 %123
OpStore %param_14 %int_8
%124 = OpFunctionCall %void %insert_i1_i1_ %param_13 %param_14
%125 = OpLoad %int %treeIndex_0
%126 = OpIAdd %int %125 %int_1
OpStore %treeIndex_0 %126
%127 = OpLoad %int %treeIndex_0
OpStore %param_15 %127
OpStore %param_16 %int_2
%128 = OpFunctionCall %void %insert_i1_i1_ %param_15 %param_16
%129 = OpLoad %int %treeIndex_0
%130 = OpIAdd %int %129 %int_1
OpStore %treeIndex_0 %130
%131 = OpLoad %int %treeIndex_0
OpStore %param_17 %131
OpStore %param_18 %int_6
%132 = OpFunctionCall %void %insert_i1_i1_ %param_17 %param_18
%133 = OpLoad %int %treeIndex_0
%134 = OpIAdd %int %133 %int_1
OpStore %treeIndex_0 %134
%135 = OpLoad %int %treeIndex_0
OpStore %param_19 %135
OpStore %param_20 %int_17
%136 = OpFunctionCall %void %insert_i1_i1_ %param_19 %param_20
%137 = OpLoad %int %treeIndex_0
%138 = OpIAdd %int %137 %int_1
OpStore %treeIndex_0 %138
%139 = OpLoad %int %treeIndex_0
OpStore %param_21 %139
OpStore %param_22 %int_13
%140 = OpFunctionCall %void %insert_i1_i1_ %param_21 %param_22
OpStore %pp %int_0
OpStore %looplimiter0 %int_0
OpStore %i %int_0
OpBranch %141
%141 = OpLabel
OpLoopMerge %142 %143 None
OpBranch %144
%144 = OpLabel
%145 = OpLoad %int %i
%146 = OpSLessThan %bool %145 %int_10000
OpBranchConditional %146 %147 %142
%147 = OpLabel
%148 = OpLoad %int %looplimiter0
%149 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
%150 = OpLoad %float %149
%151 = OpConvertFToS %int %150
%152 = OpSGreaterThanEqual %bool %148 %151
OpSelectionMerge %153 None
OpBranchConditional %152 %154 %153
%154 = OpLabel
%155 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
%156 = OpLoad %float %155
%157 = OpConvertFToS %int %156
%158 = OpIAdd %int %int_1 %157
OpStore %param_23 %158
%159 = OpFunctionCall %int %identity_i1_ %param_23
OpStore %pp %159
OpBranch %142
%153 = OpLabel
%160 = OpLoad %int %looplimiter0
%161 = OpIAdd %int %160 %int_1
OpStore %looplimiter0 %161
OpBranch %143
%143 = OpLabel
%162 = OpLoad %int %i
%163 = OpIAdd %int %162 %int_1
OpStore %i %163
OpBranch %141
%142 = OpLabel
%164 = OpLoad %int %pp
%165 = OpINotEqual %bool %164 %int_2
OpSelectionMerge %166 None
OpBranchConditional %165 %167 %166
%167 = OpLabel
OpReturn
%166 = OpLabel
OpStore %count %int_0
OpStore %i_0 %int_0
OpBranch %168
%168 = OpLabel
OpLoopMerge %169 %170 None
OpBranch %171
%171 = OpLabel
%172 = OpLoad %int %i_0
%173 = OpSLessThan %bool %172 %int_20
OpBranchConditional %173 %174 %169
%174 = OpLabel
%175 = OpLoad %int %i_0
OpStore %param_24 %175
%176 = OpFunctionCall %int %search_i1_ %param_24
OpStore %result %176
%177 = OpLoad %int %i_0
OpSelectionMerge %178 None
OpSwitch %177 %179 9 %180 5 %180 12 %180 15 %180 7 %180 8 %180 2 %180 6 %180 17 %180 13 %180
%179 = OpLabel
%181 = OpLoad %int %result
%182 = OpIEqual %bool %181 %int_n1
OpSelectionMerge %183 None
OpBranchConditional %182 %184 %183
%184 = OpLabel
%185 = OpLoad %int %count
%186 = OpIAdd %int %185 %int_1
OpStore %count %186
OpBranch %183
%183 = OpLabel
OpBranch %178
%180 = OpLabel
%187 = OpLoad %int %result
%188 = OpLoad %int %i_0
%189 = OpIEqual %bool %187 %188
OpSelectionMerge %190 None
OpBranchConditional %189 %191 %190
%191 = OpLabel
%192 = OpLoad %int %count
%193 = OpIAdd %int %192 %int_1
OpStore %count %193
OpBranch %190
%190 = OpLabel
OpBranch %178
%178 = OpLabel
OpBranch %170
%170 = OpLabel
%194 = OpLoad %int %i_0
%195 = OpIAdd %int %194 %int_1
OpStore %i_0 %195
OpBranch %168
%169 = OpLabel
%196 = OpLoad %int %count
%197 = OpIEqual %bool %196 %int_20
OpSelectionMerge %198 None
OpBranchConditional %197 %199 %200
%199 = OpLabel
OpStore %_GLF_color %97
OpBranch %198
%200 = OpLabel
OpStore %_GLF_color %98
OpBranch %198
%198 = OpLabel
OpReturn
OpFunctionEnd
%identity_i1_ = OpFunction %int None %60
%a = OpFunctionParameter %_ptr_Function_int
%201 = OpLabel
%202 = OpLoad %int %a
%203 = OpLoad %int %a
%204 = OpAccessChain %_ptr_Private_int %obj %int_0 %202
OpStore %204 %203
%205 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_2
%206 = OpLoad %int %205
OpReturnValue %206
OpFunctionEnd
%makeTreeNode_struct_BST_i1_i1_i11_i1_ = OpFunction %void None %62
%node = OpFunctionParameter %_ptr_Function_BST
%data = OpFunctionParameter %_ptr_Function_int
%207 = OpLabel
%208 = OpLoad %int %data
%209 = OpAccessChain %_ptr_Function_int %node %int_0
OpStore %209 %208
%210 = OpAccessChain %_ptr_Function_int %node %int_1
OpStore %210 %int_n1
%211 = OpAccessChain %_ptr_Function_int %node %int_2
OpStore %211 %int_n1
OpReturn
OpFunctionEnd
%insert_i1_i1_ = OpFunction %void None %63
%treeIndex = OpFunctionParameter %_ptr_Function_int
%data_0 = OpFunctionParameter %_ptr_Function_int
%212 = OpLabel
%baseIndex = OpVariable %_ptr_Function_int Function
%param = OpVariable %_ptr_Function_BST Function
%param_0 = OpVariable %_ptr_Function_int Function
%param_1 = OpVariable %_ptr_Function_BST Function
%param_2 = OpVariable %_ptr_Function_int Function
OpStore %baseIndex %int_0
OpBranch %213
%213 = OpLabel
OpLoopMerge %214 %215 None
OpBranch %216
%216 = OpLabel
%217 = OpLoad %int %baseIndex
%218 = OpLoad %int %treeIndex
%219 = OpSLessThanEqual %bool %217 %218
OpBranchConditional %219 %220 %214
%220 = OpLabel
%221 = OpLoad %int %data_0
%222 = OpLoad %int %baseIndex
%223 = OpAccessChain %_ptr_Private_int %tree %222 %int_0
%224 = OpLoad %int %223
%225 = OpSLessThanEqual %bool %221 %224
OpSelectionMerge %226 None
OpBranchConditional %225 %227 %228
%227 = OpLabel
%229 = OpLoad %int %baseIndex
%230 = OpAccessChain %_ptr_Private_int %tree %229 %int_1
%231 = OpLoad %int %230
%232 = OpIEqual %bool %231 %int_n1
OpSelectionMerge %233 None
OpBranchConditional %232 %234 %235
%234 = OpLabel
%236 = OpLoad %int %baseIndex
%237 = OpLoad %int %treeIndex
%238 = OpAccessChain %_ptr_Private_int %tree %236 %int_1
OpStore %238 %237
%239 = OpLoad %int %treeIndex
%240 = OpAccessChain %_ptr_Private_BST %tree %239
%241 = OpLoad %BST %240
OpStore %param %241
%242 = OpLoad %int %data_0
OpStore %param_0 %242
%243 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param %param_0
%244 = OpLoad %BST %param
%245 = OpAccessChain %_ptr_Private_BST %tree %239
OpStore %245 %244
OpReturn
%235 = OpLabel
%246 = OpLoad %int %baseIndex
%247 = OpAccessChain %_ptr_Private_int %tree %246 %int_1
%248 = OpLoad %int %247
OpStore %baseIndex %248
OpBranch %215
%233 = OpLabel
OpUnreachable
%228 = OpLabel
%249 = OpLoad %int %baseIndex
%250 = OpAccessChain %_ptr_Private_int %tree %249 %int_2
%251 = OpLoad %int %250
%252 = OpIEqual %bool %251 %int_n1
OpSelectionMerge %253 None
OpBranchConditional %252 %254 %255
%254 = OpLabel
%256 = OpLoad %int %baseIndex
%257 = OpLoad %int %treeIndex
%258 = OpAccessChain %_ptr_Private_int %tree %256 %int_2
OpStore %258 %257
%259 = OpLoad %int %treeIndex
%260 = OpAccessChain %_ptr_Private_BST %tree %259
%261 = OpLoad %BST %260
OpStore %param_1 %261
%262 = OpLoad %int %data_0
OpStore %param_2 %262
%263 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_1 %param_2
%264 = OpLoad %BST %param_1
%265 = OpAccessChain %_ptr_Private_BST %tree %259
OpStore %265 %264
OpReturn
%255 = OpLabel
%266 = OpLoad %int %baseIndex
%267 = OpAccessChain %_ptr_Private_int %tree %266 %int_2
%268 = OpLoad %int %267
OpStore %baseIndex %268
OpBranch %215
%253 = OpLabel
OpUnreachable
%226 = OpLabel
OpUnreachable
%215 = OpLabel
OpBranch %213
%214 = OpLabel
OpReturn
OpFunctionEnd
%search_i1_ = OpFunction %int None %60
%target = OpFunctionParameter %_ptr_Function_int
%269 = OpLabel
%index = OpVariable %_ptr_Function_int Function
%currentNode = OpVariable %_ptr_Function_BST Function
%270 = OpVariable %_ptr_Function_int Function
OpStore %index %int_0
OpBranch %271
%271 = OpLabel
OpLoopMerge %272 %273 None
OpBranch %274
%274 = OpLabel
%275 = OpLoad %int %index
%276 = OpINotEqual %bool %275 %int_n1
OpBranchConditional %276 %277 %272
%277 = OpLabel
%278 = OpLoad %int %index
%279 = OpAccessChain %_ptr_Private_BST %tree %278
%280 = OpLoad %BST %279
OpStore %currentNode %280
%281 = OpAccessChain %_ptr_Function_int %currentNode %int_0
%282 = OpLoad %int %281
%283 = OpLoad %int %target
%284 = OpIEqual %bool %282 %283
OpSelectionMerge %285 None
OpBranchConditional %284 %286 %285
%286 = OpLabel
%287 = OpLoad %int %target
OpReturnValue %287
%285 = OpLabel
%288 = OpLoad %int %target
%289 = OpAccessChain %_ptr_Function_int %currentNode %int_0
%290 = OpLoad %int %289
%291 = OpSGreaterThan %bool %288 %290
OpSelectionMerge %292 None
OpBranchConditional %291 %293 %294
%293 = OpLabel
%295 = OpAccessChain %_ptr_Function_int %currentNode %int_2
%296 = OpLoad %int %295
OpStore %270 %296
OpBranch %292
%294 = OpLabel
%297 = OpAccessChain %_ptr_Function_int %currentNode %int_1
%298 = OpLoad %int %297
OpStore %270 %298
OpBranch %292
%292 = OpLabel
%299 = OpLoad %int %270
OpStore %index %299
OpBranch %273
%273 = OpLabel
OpBranch %271
%272 = OpLabel
OpReturnValue %int_n1
OpFunctionEnd