• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1struct BST {
2  data : i32;
3  leftIndex : i32;
4  rightIndex : i32;
5};
6
7[[block]]
8struct buf0 {
9  injectionSwitch : vec2<f32>;
10};
11
12var<private> tree_1 : array<BST, 10>;
13
14[[group(0), binding(0)]] var<uniform> x_16 : buf0;
15
16var<private> x_GLF_color : vec4<f32>;
17
18fn makeTreeNode_struct_BST_i1_i1_i11_i1_(tree : ptr<function, BST>, data : ptr<function, i32>) {
19  let x_165 : i32 = *(data);
20  (*(tree)).data = x_165;
21  (*(tree)).leftIndex = -1;
22  (*(tree)).rightIndex = -1;
23  return;
24}
25
26fn insert_i1_i1_(treeIndex : ptr<function, i32>, data_1 : ptr<function, i32>) {
27  var baseIndex : i32;
28  var param : BST;
29  var param_1 : i32;
30  var x_170 : i32;
31  var param_2 : BST;
32  var param_3 : i32;
33  baseIndex = 0;
34  loop {
35    let x_175 : i32 = baseIndex;
36    let x_176 : i32 = *(treeIndex);
37    if ((x_175 <= x_176)) {
38    } else {
39      break;
40    }
41    let x_179 : i32 = *(data_1);
42    let x_180 : i32 = baseIndex;
43    let x_182 : i32 = tree_1[x_180].data;
44    if ((x_179 <= x_182)) {
45      let x_187 : i32 = baseIndex;
46      let x_189 : i32 = tree_1[x_187].leftIndex;
47      if ((x_189 == -1)) {
48        let x_194 : i32 = baseIndex;
49        let x_195 : i32 = *(treeIndex);
50        tree_1[x_194].leftIndex = x_195;
51        let x_198 : f32 = x_16.injectionSwitch.x;
52        let x_200 : f32 = x_16.injectionSwitch.y;
53        if ((x_198 < x_200)) {
54          let x_204 : i32 = *(treeIndex);
55          let x_206 : BST = tree_1[x_204];
56          param = x_206;
57          let x_207 : i32 = *(data_1);
58          param_1 = x_207;
59          makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
60          let x_209 : BST = param;
61          tree_1[x_204] = x_209;
62        }
63        let x_212 : f32 = x_16.injectionSwitch.x;
64        let x_214 : f32 = x_16.injectionSwitch.y;
65        if ((x_212 < x_214)) {
66          return;
67        }
68      } else {
69        let x_218 : i32 = baseIndex;
70        let x_220 : i32 = tree_1[x_218].leftIndex;
71        baseIndex = x_220;
72        continue;
73      }
74    } else {
75      let x_222 : f32 = x_16.injectionSwitch.x;
76      let x_224 : f32 = x_16.injectionSwitch.y;
77      if ((x_222 < x_224)) {
78        let x_229 : i32 = baseIndex;
79        let x_231 : i32 = tree_1[x_229].rightIndex;
80        x_170 = x_231;
81      } else {
82        let x_232 : i32 = baseIndex;
83        let x_234 : i32 = tree_1[x_232].rightIndex;
84        x_170 = x_234;
85      }
86      let x_235 : i32 = x_170;
87      if ((x_235 == -1)) {
88        let x_240 : i32 = baseIndex;
89        let x_241 : i32 = *(treeIndex);
90        tree_1[x_240].rightIndex = x_241;
91        let x_243 : i32 = *(treeIndex);
92        let x_245 : BST = tree_1[x_243];
93        param_2 = x_245;
94        let x_246 : i32 = *(data_1);
95        param_3 = x_246;
96        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
97        let x_248 : BST = param_2;
98        tree_1[x_243] = x_248;
99        return;
100      } else {
101        let x_250 : i32 = baseIndex;
102        let x_252 : i32 = tree_1[x_250].rightIndex;
103        baseIndex = x_252;
104        continue;
105      }
106      return;
107    }
108    let x_254 : f32 = x_16.injectionSwitch.x;
109    let x_256 : f32 = x_16.injectionSwitch.y;
110    if ((x_254 > x_256)) {
111      return;
112    }
113  }
114  return;
115}
116
117fn search_i1_(target : ptr<function, i32>) -> i32 {
118  var index : i32;
119  var currentNode : BST;
120  var x_261 : i32;
121  index = 0;
122  loop {
123    let x_266 : i32 = index;
124    if ((x_266 != -1)) {
125    } else {
126      break;
127    }
128    let x_269 : i32 = index;
129    let x_271 : BST = tree_1[x_269];
130    currentNode = x_271;
131    let x_273 : i32 = currentNode.data;
132    let x_274 : i32 = *(target);
133    if ((x_273 == x_274)) {
134      let x_278 : i32 = *(target);
135      return x_278;
136    }
137    let x_279 : i32 = *(target);
138    let x_281 : i32 = currentNode.data;
139    if ((x_279 > x_281)) {
140      let x_287 : i32 = currentNode.rightIndex;
141      x_261 = x_287;
142    } else {
143      let x_289 : i32 = currentNode.leftIndex;
144      x_261 = x_289;
145    }
146    let x_290 : i32 = x_261;
147    index = x_290;
148  }
149  return -1;
150}
151
152fn main_1() {
153  var treeIndex_1 : i32;
154  var param_4 : BST;
155  var param_5 : i32;
156  var param_6 : i32;
157  var param_7 : i32;
158  var param_8 : i32;
159  var param_9 : i32;
160  var param_10 : i32;
161  var param_11 : i32;
162  var param_12 : i32;
163  var param_13 : i32;
164  var param_14 : i32;
165  var param_15 : i32;
166  var param_16 : i32;
167  var param_17 : i32;
168  var param_18 : i32;
169  var param_19 : i32;
170  var param_20 : i32;
171  var param_21 : i32;
172  var param_22 : i32;
173  var param_23 : i32;
174  var count : i32;
175  var i : i32;
176  var result : i32;
177  var param_24 : i32;
178  treeIndex_1 = 0;
179  let x_91 : BST = tree_1[0];
180  param_4 = x_91;
181  param_5 = 9;
182  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
183  let x_93 : BST = param_4;
184  tree_1[0] = x_93;
185  let x_95 : i32 = treeIndex_1;
186  treeIndex_1 = (x_95 + 1);
187  let x_97 : i32 = treeIndex_1;
188  param_6 = x_97;
189  param_7 = 5;
190  insert_i1_i1_(&(param_6), &(param_7));
191  let x_99 : i32 = treeIndex_1;
192  treeIndex_1 = (x_99 + 1);
193  let x_101 : i32 = treeIndex_1;
194  param_8 = x_101;
195  param_9 = 12;
196  insert_i1_i1_(&(param_8), &(param_9));
197  let x_103 : i32 = treeIndex_1;
198  treeIndex_1 = (x_103 + 1);
199  let x_105 : i32 = treeIndex_1;
200  param_10 = x_105;
201  param_11 = 15;
202  insert_i1_i1_(&(param_10), &(param_11));
203  let x_107 : i32 = treeIndex_1;
204  treeIndex_1 = (x_107 + 1);
205  let x_109 : i32 = treeIndex_1;
206  param_12 = x_109;
207  param_13 = 7;
208  insert_i1_i1_(&(param_12), &(param_13));
209  let x_111 : i32 = treeIndex_1;
210  treeIndex_1 = (x_111 + 1);
211  let x_113 : i32 = treeIndex_1;
212  param_14 = x_113;
213  param_15 = 8;
214  insert_i1_i1_(&(param_14), &(param_15));
215  let x_115 : i32 = treeIndex_1;
216  treeIndex_1 = (x_115 + 1);
217  let x_117 : i32 = treeIndex_1;
218  param_16 = x_117;
219  param_17 = 2;
220  insert_i1_i1_(&(param_16), &(param_17));
221  let x_119 : i32 = treeIndex_1;
222  treeIndex_1 = (x_119 + 1);
223  let x_121 : i32 = treeIndex_1;
224  param_18 = x_121;
225  param_19 = 6;
226  insert_i1_i1_(&(param_18), &(param_19));
227  let x_123 : i32 = treeIndex_1;
228  treeIndex_1 = (x_123 + 1);
229  let x_125 : i32 = treeIndex_1;
230  param_20 = x_125;
231  param_21 = 17;
232  insert_i1_i1_(&(param_20), &(param_21));
233  let x_127 : i32 = treeIndex_1;
234  treeIndex_1 = (x_127 + 1);
235  let x_129 : i32 = treeIndex_1;
236  param_22 = x_129;
237  param_23 = 13;
238  insert_i1_i1_(&(param_22), &(param_23));
239  count = 0;
240  i = 0;
241  loop {
242    let x_135 : i32 = i;
243    if ((x_135 < 20)) {
244    } else {
245      break;
246    }
247    let x_138 : i32 = i;
248    param_24 = x_138;
249    let x_139 : i32 = search_i1_(&(param_24));
250    result = x_139;
251    let x_140 : i32 = i;
252    switch(x_140) {
253      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
254        let x_150 : i32 = result;
255        let x_151 : i32 = i;
256        if ((x_150 == x_151)) {
257          let x_155 : i32 = count;
258          count = (x_155 + 1);
259        }
260      }
261      default: {
262        let x_144 : i32 = result;
263        if ((x_144 == -1)) {
264          let x_148 : i32 = count;
265          count = (x_148 + 1);
266        }
267      }
268    }
269
270    continuing {
271      let x_157 : i32 = i;
272      i = (x_157 + 1);
273    }
274  }
275  let x_159 : i32 = count;
276  if ((x_159 == 20)) {
277    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
278  } else {
279    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
280  }
281  return;
282}
283
284struct main_out {
285  [[location(0)]]
286  x_GLF_color_1 : vec4<f32>;
287};
288
289[[stage(fragment)]]
290fn main() -> main_out {
291  main_1();
292  return main_out(x_GLF_color);
293}
294