blob: c4e7d0461c64877c1330041f5cb9b411bb0d3243 [file] [log] [blame]
fpizlo@apple.comc2eaae62016-06-08 01:43:35 +00001"use strict";
2// Generated by Air::dumpAsJS from gaussianBlur#A8vcYg in Kraken/imaging-gaussian-blur
3function createPayloadImagingGaussianBlurGaussianBlur()
4{
5 let code = new Code();
6 let bb0 = code.addBlock();
7 let bb1 = code.addBlock();
8 let bb2 = code.addBlock();
9 let bb3 = code.addBlock();
10 let bb4 = code.addBlock();
11 let bb5 = code.addBlock();
12 let bb6 = code.addBlock();
13 let bb7 = code.addBlock();
14 let bb8 = code.addBlock();
15 let bb9 = code.addBlock();
16 let bb10 = code.addBlock();
17 let bb11 = code.addBlock();
18 let bb12 = code.addBlock();
19 let bb13 = code.addBlock();
20 let bb14 = code.addBlock();
21 let bb15 = code.addBlock();
22 let bb16 = code.addBlock();
23 let bb17 = code.addBlock();
24 let bb18 = code.addBlock();
25 let bb19 = code.addBlock();
26 let bb20 = code.addBlock();
27 let bb21 = code.addBlock();
28 let bb22 = code.addBlock();
29 let bb23 = code.addBlock();
30 let bb24 = code.addBlock();
31 let bb25 = code.addBlock();
32 let bb26 = code.addBlock();
33 let bb27 = code.addBlock();
34 let bb28 = code.addBlock();
35 let bb29 = code.addBlock();
36 let bb30 = code.addBlock();
37 let bb31 = code.addBlock();
38 let bb32 = code.addBlock();
39 let bb33 = code.addBlock();
40 let bb34 = code.addBlock();
41 let bb35 = code.addBlock();
42 let bb36 = code.addBlock();
43 let slot0 = code.addStackSlot(40, Locked);
44 let slot1 = code.addStackSlot(8, Spill);
45 let slot2 = code.addStackSlot(8, Spill);
46 let slot3 = code.addStackSlot(4, Spill);
47 let slot4 = code.addStackSlot(8, Spill);
48 let slot5 = code.addStackSlot(8, Spill);
49 let slot6 = code.addStackSlot(40, Locked);
50 let tmp141 = code.newTmp(GP);
51 let tmp140 = code.newTmp(GP);
52 let tmp139 = code.newTmp(GP);
53 let tmp138 = code.newTmp(GP);
54 let tmp137 = code.newTmp(GP);
55 let tmp136 = code.newTmp(GP);
56 let tmp135 = code.newTmp(GP);
57 let tmp134 = code.newTmp(GP);
58 let tmp133 = code.newTmp(GP);
59 let tmp132 = code.newTmp(GP);
60 let tmp131 = code.newTmp(GP);
61 let tmp130 = code.newTmp(GP);
62 let tmp129 = code.newTmp(GP);
63 let tmp128 = code.newTmp(GP);
64 let tmp127 = code.newTmp(GP);
65 let tmp126 = code.newTmp(GP);
66 let tmp125 = code.newTmp(GP);
67 let tmp124 = code.newTmp(GP);
68 let tmp123 = code.newTmp(GP);
69 let tmp122 = code.newTmp(GP);
70 let tmp121 = code.newTmp(GP);
71 let tmp120 = code.newTmp(GP);
72 let tmp119 = code.newTmp(GP);
73 let tmp118 = code.newTmp(GP);
74 let tmp117 = code.newTmp(GP);
75 let tmp116 = code.newTmp(GP);
76 let tmp115 = code.newTmp(GP);
77 let tmp114 = code.newTmp(GP);
78 let tmp113 = code.newTmp(GP);
79 let tmp112 = code.newTmp(GP);
80 let tmp111 = code.newTmp(GP);
81 let tmp110 = code.newTmp(GP);
82 let tmp109 = code.newTmp(GP);
83 let tmp108 = code.newTmp(GP);
84 let tmp107 = code.newTmp(GP);
85 let tmp106 = code.newTmp(GP);
86 let tmp105 = code.newTmp(GP);
87 let tmp104 = code.newTmp(GP);
88 let tmp103 = code.newTmp(GP);
89 let tmp102 = code.newTmp(GP);
90 let tmp101 = code.newTmp(GP);
91 let tmp100 = code.newTmp(GP);
92 let tmp99 = code.newTmp(GP);
93 let tmp98 = code.newTmp(GP);
94 let tmp97 = code.newTmp(GP);
95 let tmp96 = code.newTmp(GP);
96 let tmp95 = code.newTmp(GP);
97 let tmp94 = code.newTmp(GP);
98 let tmp93 = code.newTmp(GP);
99 let tmp92 = code.newTmp(GP);
100 let tmp91 = code.newTmp(GP);
101 let tmp90 = code.newTmp(GP);
102 let tmp89 = code.newTmp(GP);
103 let tmp88 = code.newTmp(GP);
104 let tmp87 = code.newTmp(GP);
105 let tmp86 = code.newTmp(GP);
106 let tmp85 = code.newTmp(GP);
107 let tmp84 = code.newTmp(GP);
108 let tmp83 = code.newTmp(GP);
109 let tmp82 = code.newTmp(GP);
110 let tmp81 = code.newTmp(GP);
111 let tmp80 = code.newTmp(GP);
112 let tmp79 = code.newTmp(GP);
113 let tmp78 = code.newTmp(GP);
114 let tmp77 = code.newTmp(GP);
115 let tmp76 = code.newTmp(GP);
116 let tmp75 = code.newTmp(GP);
117 let tmp74 = code.newTmp(GP);
118 let tmp73 = code.newTmp(GP);
119 let tmp72 = code.newTmp(GP);
120 let tmp71 = code.newTmp(GP);
121 let tmp70 = code.newTmp(GP);
122 let tmp69 = code.newTmp(GP);
123 let tmp68 = code.newTmp(GP);
124 let tmp67 = code.newTmp(GP);
125 let tmp66 = code.newTmp(GP);
126 let tmp65 = code.newTmp(GP);
127 let tmp64 = code.newTmp(GP);
128 let tmp63 = code.newTmp(GP);
129 let tmp62 = code.newTmp(GP);
130 let tmp61 = code.newTmp(GP);
131 let tmp60 = code.newTmp(GP);
132 let tmp59 = code.newTmp(GP);
133 let tmp58 = code.newTmp(GP);
134 let tmp57 = code.newTmp(GP);
135 let tmp56 = code.newTmp(GP);
136 let tmp55 = code.newTmp(GP);
137 let tmp54 = code.newTmp(GP);
138 let tmp53 = code.newTmp(GP);
139 let tmp52 = code.newTmp(GP);
140 let tmp51 = code.newTmp(GP);
141 let tmp50 = code.newTmp(GP);
142 let tmp49 = code.newTmp(GP);
143 let tmp48 = code.newTmp(GP);
144 let tmp47 = code.newTmp(GP);
145 let tmp46 = code.newTmp(GP);
146 let tmp45 = code.newTmp(GP);
147 let tmp44 = code.newTmp(GP);
148 let tmp43 = code.newTmp(GP);
149 let tmp42 = code.newTmp(GP);
150 let tmp41 = code.newTmp(GP);
151 let tmp40 = code.newTmp(GP);
152 let tmp39 = code.newTmp(GP);
153 let tmp38 = code.newTmp(GP);
154 let tmp37 = code.newTmp(GP);
155 let tmp36 = code.newTmp(GP);
156 let tmp35 = code.newTmp(GP);
157 let tmp34 = code.newTmp(GP);
158 let tmp33 = code.newTmp(GP);
159 let tmp32 = code.newTmp(GP);
160 let tmp31 = code.newTmp(GP);
161 let tmp30 = code.newTmp(GP);
162 let tmp29 = code.newTmp(GP);
163 let tmp28 = code.newTmp(GP);
164 let tmp27 = code.newTmp(GP);
165 let tmp26 = code.newTmp(GP);
166 let tmp25 = code.newTmp(GP);
167 let tmp24 = code.newTmp(GP);
168 let tmp23 = code.newTmp(GP);
169 let tmp22 = code.newTmp(GP);
170 let tmp21 = code.newTmp(GP);
171 let tmp20 = code.newTmp(GP);
172 let tmp19 = code.newTmp(GP);
173 let tmp18 = code.newTmp(GP);
174 let tmp17 = code.newTmp(GP);
175 let tmp16 = code.newTmp(GP);
176 let tmp15 = code.newTmp(GP);
177 let tmp14 = code.newTmp(GP);
178 let tmp13 = code.newTmp(GP);
179 let tmp12 = code.newTmp(GP);
180 let tmp11 = code.newTmp(GP);
181 let tmp10 = code.newTmp(GP);
182 let tmp9 = code.newTmp(GP);
183 let tmp8 = code.newTmp(GP);
184 let tmp7 = code.newTmp(GP);
185 let tmp6 = code.newTmp(GP);
186 let tmp5 = code.newTmp(GP);
187 let tmp4 = code.newTmp(GP);
188 let tmp3 = code.newTmp(GP);
189 let tmp2 = code.newTmp(GP);
190 let tmp1 = code.newTmp(GP);
191 let tmp0 = code.newTmp(GP);
192 let ftmp74 = code.newTmp(FP);
193 let ftmp73 = code.newTmp(FP);
194 let ftmp72 = code.newTmp(FP);
195 let ftmp71 = code.newTmp(FP);
196 let ftmp70 = code.newTmp(FP);
197 let ftmp69 = code.newTmp(FP);
198 let ftmp68 = code.newTmp(FP);
199 let ftmp67 = code.newTmp(FP);
200 let ftmp66 = code.newTmp(FP);
201 let ftmp65 = code.newTmp(FP);
202 let ftmp64 = code.newTmp(FP);
203 let ftmp63 = code.newTmp(FP);
204 let ftmp62 = code.newTmp(FP);
205 let ftmp61 = code.newTmp(FP);
206 let ftmp60 = code.newTmp(FP);
207 let ftmp59 = code.newTmp(FP);
208 let ftmp58 = code.newTmp(FP);
209 let ftmp57 = code.newTmp(FP);
210 let ftmp56 = code.newTmp(FP);
211 let ftmp55 = code.newTmp(FP);
212 let ftmp54 = code.newTmp(FP);
213 let ftmp53 = code.newTmp(FP);
214 let ftmp52 = code.newTmp(FP);
215 let ftmp51 = code.newTmp(FP);
216 let ftmp50 = code.newTmp(FP);
217 let ftmp49 = code.newTmp(FP);
218 let ftmp48 = code.newTmp(FP);
219 let ftmp47 = code.newTmp(FP);
220 let ftmp46 = code.newTmp(FP);
221 let ftmp45 = code.newTmp(FP);
222 let ftmp44 = code.newTmp(FP);
223 let ftmp43 = code.newTmp(FP);
224 let ftmp42 = code.newTmp(FP);
225 let ftmp41 = code.newTmp(FP);
226 let ftmp40 = code.newTmp(FP);
227 let ftmp39 = code.newTmp(FP);
228 let ftmp38 = code.newTmp(FP);
229 let ftmp37 = code.newTmp(FP);
230 let ftmp36 = code.newTmp(FP);
231 let ftmp35 = code.newTmp(FP);
232 let ftmp34 = code.newTmp(FP);
233 let ftmp33 = code.newTmp(FP);
234 let ftmp32 = code.newTmp(FP);
235 let ftmp31 = code.newTmp(FP);
236 let ftmp30 = code.newTmp(FP);
237 let ftmp29 = code.newTmp(FP);
238 let ftmp28 = code.newTmp(FP);
239 let ftmp27 = code.newTmp(FP);
240 let ftmp26 = code.newTmp(FP);
241 let ftmp25 = code.newTmp(FP);
242 let ftmp24 = code.newTmp(FP);
243 let ftmp23 = code.newTmp(FP);
244 let ftmp22 = code.newTmp(FP);
245 let ftmp21 = code.newTmp(FP);
246 let ftmp20 = code.newTmp(FP);
247 let ftmp19 = code.newTmp(FP);
248 let ftmp18 = code.newTmp(FP);
249 let ftmp17 = code.newTmp(FP);
250 let ftmp16 = code.newTmp(FP);
251 let ftmp15 = code.newTmp(FP);
252 let ftmp14 = code.newTmp(FP);
253 let ftmp13 = code.newTmp(FP);
254 let ftmp12 = code.newTmp(FP);
255 let ftmp11 = code.newTmp(FP);
256 let ftmp10 = code.newTmp(FP);
257 let ftmp9 = code.newTmp(FP);
258 let ftmp8 = code.newTmp(FP);
259 let ftmp7 = code.newTmp(FP);
260 let ftmp6 = code.newTmp(FP);
261 let ftmp5 = code.newTmp(FP);
262 let ftmp4 = code.newTmp(FP);
263 let ftmp3 = code.newTmp(FP);
264 let ftmp2 = code.newTmp(FP);
265 let ftmp1 = code.newTmp(FP);
266 let ftmp0 = code.newTmp(FP);
267 let inst;
268 let arg;
269 bb0.successors.push(new FrequentedBlock(bb2, Normal));
270 bb0.successors.push(new FrequentedBlock(bb1, Rare));
271 inst = new Inst(Move);
272 arg = Arg.createBigImm(4374261488);
273 inst.args.push(arg);
274 arg = Arg.createTmp(Reg.rax);
275 inst.args.push(arg);
276 bb0.append(inst);
277 inst = new Inst(Move);
278 arg = Arg.createTmp(Reg.rax);
279 inst.args.push(arg);
280 arg = Arg.createAddr(Reg.rbp, 16);
281 inst.args.push(arg);
282 bb0.append(inst);
283 inst = new Inst(Patch);
284 inst.args.push(arg);
285 arg = Arg.createTmp(Reg.rbp);
286 inst.args.push(arg);
287 arg = Arg.createTmp(Reg.rax);
288 inst.args.push(arg);
289 inst.patchHasNonArgEffects = true;
290 inst.extraEarlyClobberedRegs = new Set();
291 inst.extraClobberedRegs = new Set();
292 inst.extraEarlyClobberedRegs.add(Reg.r11);
293 inst.extraClobberedRegs.add(Reg.r11);
294 inst.patchArgData = [];
295 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
296 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
297 inst.patchArgData.push({role: Arg.Scratch, type: GP, width: 64});
298 bb0.append(inst);
299 inst = new Inst(Move);
300 arg = Arg.createBigImm(4372502752);
301 inst.args.push(arg);
302 arg = Arg.createTmp(Reg.rax);
303 inst.args.push(arg);
304 bb0.append(inst);
305 inst = new Inst(Move);
306 arg = Arg.createAddr(Reg.rax, 0);
307 inst.args.push(arg);
308 arg = Arg.createTmp(Reg.rax);
309 inst.args.push(arg);
310 bb0.append(inst);
311 inst = new Inst(Move);
312 arg = Arg.createTmp(Reg.rax);
313 inst.args.push(arg);
314 arg = Arg.createStack(slot5, 0);
315 inst.args.push(arg);
316 bb0.append(inst);
317 inst = new Inst(Move);
318 arg = Arg.createBigImm(4372502768);
319 inst.args.push(arg);
320 arg = Arg.createTmp(Reg.rax);
321 inst.args.push(arg);
322 bb0.append(inst);
323 inst = new Inst(Move);
324 arg = Arg.createAddr(Reg.rax, 0);
325 inst.args.push(arg);
326 arg = Arg.createTmp(Reg.r12);
327 inst.args.push(arg);
328 bb0.append(inst);
329 inst = new Inst(Move);
330 arg = Arg.createBigImm(4372502776);
331 inst.args.push(arg);
332 arg = Arg.createTmp(Reg.rax);
333 inst.args.push(arg);
334 bb0.append(inst);
335 inst = new Inst(Move);
336 arg = Arg.createAddr(Reg.rax, 0);
337 inst.args.push(arg);
338 arg = Arg.createTmp(Reg.rsi);
339 inst.args.push(arg);
340 bb0.append(inst);
341 inst = new Inst(Move);
342 arg = Arg.createBigImm(4372502784);
343 inst.args.push(arg);
344 arg = Arg.createTmp(Reg.rax);
345 inst.args.push(arg);
346 bb0.append(inst);
347 inst = new Inst(Move);
348 arg = Arg.createAddr(Reg.rax, 0);
349 inst.args.push(arg);
350 arg = Arg.createTmp(Reg.rdx);
351 inst.args.push(arg);
352 bb0.append(inst);
353 inst = new Inst(Move);
354 arg = Arg.createBigImm(4372502792);
355 inst.args.push(arg);
356 arg = Arg.createTmp(Reg.rax);
357 inst.args.push(arg);
358 bb0.append(inst);
359 inst = new Inst(Move);
360 arg = Arg.createAddr(Reg.rax, 0);
361 inst.args.push(arg);
362 arg = Arg.createTmp(Reg.rcx);
363 inst.args.push(arg);
364 bb0.append(inst);
365 inst = new Inst(Move);
366 arg = Arg.createBigImm(4372502800);
367 inst.args.push(arg);
368 arg = Arg.createTmp(Reg.rax);
369 inst.args.push(arg);
370 bb0.append(inst);
371 inst = new Inst(Move);
372 arg = Arg.createAddr(Reg.rax, 0);
373 inst.args.push(arg);
374 arg = Arg.createTmp(Reg.r10);
375 inst.args.push(arg);
376 bb0.append(inst);
377 inst = new Inst(Move);
378 arg = Arg.createBigImm(4372502808);
379 inst.args.push(arg);
380 arg = Arg.createTmp(Reg.rax);
381 inst.args.push(arg);
382 bb0.append(inst);
383 inst = new Inst(Move);
384 arg = Arg.createAddr(Reg.rax, 0);
385 inst.args.push(arg);
386 arg = Arg.createTmp(Reg.r11);
387 inst.args.push(arg);
388 bb0.append(inst);
389 inst = new Inst(Move);
390 arg = Arg.createBigImm(4372502816);
391 inst.args.push(arg);
392 arg = Arg.createTmp(Reg.rax);
393 inst.args.push(arg);
394 bb0.append(inst);
395 inst = new Inst(Move);
396 arg = Arg.createAddr(Reg.rax, 0);
397 inst.args.push(arg);
398 arg = Arg.createTmp(Reg.rax);
399 inst.args.push(arg);
400 bb0.append(inst);
401 inst = new Inst(Move);
402 arg = Arg.createBigImm(4372502824);
403 inst.args.push(arg);
404 arg = Arg.createTmp(Reg.rdi);
405 inst.args.push(arg);
406 bb0.append(inst);
407 inst = new Inst(Move);
408 arg = Arg.createAddr(Reg.rdi, 0);
409 inst.args.push(arg);
410 arg = Arg.createTmp(Reg.rbx);
411 inst.args.push(arg);
412 bb0.append(inst);
413 inst = new Inst(Move);
414 arg = Arg.createBigImm(-281474976710656);
415 inst.args.push(arg);
416 arg = Arg.createTmp(Reg.rdi);
417 inst.args.push(arg);
418 bb0.append(inst);
419 inst = new Inst(Add64);
420 arg = Arg.createTmp(Reg.r12);
421 inst.args.push(arg);
422 arg = Arg.createTmp(Reg.rdi);
423 inst.args.push(arg);
424 arg = Arg.createTmp(Reg.r8);
425 inst.args.push(arg);
426 bb0.append(inst);
427 inst = new Inst(Move64ToDouble);
428 arg = Arg.createTmp(Reg.r8);
429 inst.args.push(arg);
430 arg = Arg.createTmp(Reg.xmm2);
431 inst.args.push(arg);
432 bb0.append(inst);
433 inst = new Inst(BranchDouble);
434 arg = Arg.createDoubleCond(DoubleEqual);
435 inst.args.push(arg);
436 arg = Arg.createTmp(Reg.xmm2);
437 inst.args.push(arg);
438 arg = Arg.createTmp(Reg.xmm2);
439 inst.args.push(arg);
440 bb0.append(inst);
441 bb1.successors.push(new FrequentedBlock(bb2, Normal));
442 bb1.predecessors.push(bb0);
443 inst = new Inst(Patch);
444 inst.args.push(arg);
445 arg = Arg.createRelCond(Below);
446 inst.args.push(arg);
447 arg = Arg.createTmp(Reg.r12);
448 inst.args.push(arg);
449 arg = Arg.createTmp(Reg.rdi);
450 inst.args.push(arg);
451 arg = Arg.createTmp(Reg.r12);
452 inst.args.push(arg);
453 arg = Arg.createStack(slot5, 0);
454 inst.args.push(arg);
455 arg = Arg.createTmp(Reg.r12);
456 inst.args.push(arg);
457 arg = Arg.createTmp(Reg.rsi);
458 inst.args.push(arg);
459 arg = Arg.createTmp(Reg.rdx);
460 inst.args.push(arg);
461 arg = Arg.createTmp(Reg.rcx);
462 inst.args.push(arg);
463 arg = Arg.createTmp(Reg.r10);
464 inst.args.push(arg);
465 arg = Arg.createTmp(Reg.r11);
466 inst.args.push(arg);
467 arg = Arg.createTmp(Reg.rax);
468 inst.args.push(arg);
469 arg = Arg.createTmp(Reg.rbx);
470 inst.args.push(arg);
471 inst.patchHasNonArgEffects = true;
472 inst.extraEarlyClobberedRegs = new Set();
473 inst.extraClobberedRegs = new Set();
474 inst.patchArgData = [];
475 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
476 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
477 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
478 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
479 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
480 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
481 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
482 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
483 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
484 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
485 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
486 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
487 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
488 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
489 bb1.append(inst);
490 inst = new Inst(ConvertInt32ToDouble);
491 arg = Arg.createTmp(Reg.r12);
492 inst.args.push(arg);
493 arg = Arg.createTmp(Reg.xmm2);
494 inst.args.push(arg);
495 bb1.append(inst);
496 inst = new Inst(Jump);
497 bb1.append(inst);
498 bb2.successors.push(new FrequentedBlock(bb4, Normal));
499 bb2.successors.push(new FrequentedBlock(bb3, Rare));
500 bb2.predecessors.push(bb0);
501 bb2.predecessors.push(bb1);
502 inst = new Inst(Patch);
503 inst.args.push(arg);
504 arg = Arg.createRelCond(Below);
505 inst.args.push(arg);
506 arg = Arg.createTmp(Reg.rsi);
507 inst.args.push(arg);
508 arg = Arg.createTmp(Reg.rdi);
509 inst.args.push(arg);
510 arg = Arg.createTmp(Reg.rsi);
511 inst.args.push(arg);
512 arg = Arg.createStack(slot5, 0);
513 inst.args.push(arg);
514 arg = Arg.createTmp(Reg.r12);
515 inst.args.push(arg);
516 arg = Arg.createTmp(Reg.rsi);
517 inst.args.push(arg);
518 arg = Arg.createTmp(Reg.rdx);
519 inst.args.push(arg);
520 arg = Arg.createTmp(Reg.rcx);
521 inst.args.push(arg);
522 arg = Arg.createTmp(Reg.r10);
523 inst.args.push(arg);
524 arg = Arg.createTmp(Reg.r11);
525 inst.args.push(arg);
526 arg = Arg.createTmp(Reg.rax);
527 inst.args.push(arg);
528 arg = Arg.createTmp(Reg.rbx);
529 inst.args.push(arg);
530 inst.patchHasNonArgEffects = true;
531 inst.extraEarlyClobberedRegs = new Set();
532 inst.extraClobberedRegs = new Set();
533 inst.patchArgData = [];
534 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
535 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
536 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
537 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
538 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
539 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
540 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
541 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
542 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
543 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
544 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
545 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
546 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
547 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
548 bb2.append(inst);
549 inst = new Inst(Patch);
550 inst.args.push(arg);
551 arg = Arg.createRelCond(Below);
552 inst.args.push(arg);
553 arg = Arg.createTmp(Reg.rdx);
554 inst.args.push(arg);
555 arg = Arg.createTmp(Reg.rdi);
556 inst.args.push(arg);
557 arg = Arg.createTmp(Reg.rdx);
558 inst.args.push(arg);
559 arg = Arg.createStack(slot5, 0);
560 inst.args.push(arg);
561 arg = Arg.createTmp(Reg.r12);
562 inst.args.push(arg);
563 arg = Arg.createTmp(Reg.rsi);
564 inst.args.push(arg);
565 arg = Arg.createTmp(Reg.rdx);
566 inst.args.push(arg);
567 arg = Arg.createTmp(Reg.rcx);
568 inst.args.push(arg);
569 arg = Arg.createTmp(Reg.r10);
570 inst.args.push(arg);
571 arg = Arg.createTmp(Reg.r11);
572 inst.args.push(arg);
573 arg = Arg.createTmp(Reg.rax);
574 inst.args.push(arg);
575 arg = Arg.createTmp(Reg.rbx);
576 inst.args.push(arg);
577 inst.patchHasNonArgEffects = true;
578 inst.extraEarlyClobberedRegs = new Set();
579 inst.extraClobberedRegs = new Set();
580 inst.patchArgData = [];
581 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
582 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
583 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
584 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
585 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
586 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
587 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
588 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
589 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
590 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
591 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
592 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
593 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
594 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
595 bb2.append(inst);
596 inst = new Inst(Patch);
597 inst.args.push(arg);
598 arg = Arg.createRelCond(Below);
599 inst.args.push(arg);
600 arg = Arg.createTmp(Reg.rcx);
601 inst.args.push(arg);
602 arg = Arg.createTmp(Reg.rdi);
603 inst.args.push(arg);
604 arg = Arg.createTmp(Reg.rcx);
605 inst.args.push(arg);
606 arg = Arg.createStack(slot5, 0);
607 inst.args.push(arg);
608 arg = Arg.createTmp(Reg.r12);
609 inst.args.push(arg);
610 arg = Arg.createTmp(Reg.rsi);
611 inst.args.push(arg);
612 arg = Arg.createTmp(Reg.rdx);
613 inst.args.push(arg);
614 arg = Arg.createTmp(Reg.rcx);
615 inst.args.push(arg);
616 arg = Arg.createTmp(Reg.r10);
617 inst.args.push(arg);
618 arg = Arg.createTmp(Reg.r11);
619 inst.args.push(arg);
620 arg = Arg.createTmp(Reg.rax);
621 inst.args.push(arg);
622 arg = Arg.createTmp(Reg.rbx);
623 inst.args.push(arg);
624 inst.patchHasNonArgEffects = true;
625 inst.extraEarlyClobberedRegs = new Set();
626 inst.extraClobberedRegs = new Set();
627 inst.patchArgData = [];
628 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
629 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
630 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
631 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
632 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
633 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
634 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
635 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
636 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
637 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
638 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
639 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
640 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
641 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
642 bb2.append(inst);
643 inst = new Inst(Add64);
644 arg = Arg.createTmp(Reg.r10);
645 inst.args.push(arg);
646 arg = Arg.createTmp(Reg.rdi);
647 inst.args.push(arg);
648 arg = Arg.createTmp(Reg.r8);
649 inst.args.push(arg);
650 bb2.append(inst);
651 inst = new Inst(Move64ToDouble);
652 arg = Arg.createTmp(Reg.r8);
653 inst.args.push(arg);
654 arg = Arg.createTmp(Reg.xmm3);
655 inst.args.push(arg);
656 bb2.append(inst);
657 inst = new Inst(BranchDouble);
658 arg = Arg.createDoubleCond(DoubleEqual);
659 inst.args.push(arg);
660 arg = Arg.createTmp(Reg.xmm3);
661 inst.args.push(arg);
662 arg = Arg.createTmp(Reg.xmm3);
663 inst.args.push(arg);
664 bb2.append(inst);
665 bb3.successors.push(new FrequentedBlock(bb4, Normal));
666 bb3.predecessors.push(bb2);
667 inst = new Inst(Patch);
668 inst.args.push(arg);
669 arg = Arg.createRelCond(Below);
670 inst.args.push(arg);
671 arg = Arg.createTmp(Reg.r10);
672 inst.args.push(arg);
673 arg = Arg.createTmp(Reg.rdi);
674 inst.args.push(arg);
675 arg = Arg.createTmp(Reg.r10);
676 inst.args.push(arg);
677 arg = Arg.createStack(slot5, 0);
678 inst.args.push(arg);
679 arg = Arg.createTmp(Reg.r12);
680 inst.args.push(arg);
681 arg = Arg.createTmp(Reg.rsi);
682 inst.args.push(arg);
683 arg = Arg.createTmp(Reg.rdx);
684 inst.args.push(arg);
685 arg = Arg.createTmp(Reg.rcx);
686 inst.args.push(arg);
687 arg = Arg.createTmp(Reg.r10);
688 inst.args.push(arg);
689 arg = Arg.createTmp(Reg.r11);
690 inst.args.push(arg);
691 arg = Arg.createTmp(Reg.rax);
692 inst.args.push(arg);
693 arg = Arg.createTmp(Reg.rbx);
694 inst.args.push(arg);
695 inst.patchHasNonArgEffects = true;
696 inst.extraEarlyClobberedRegs = new Set();
697 inst.extraClobberedRegs = new Set();
698 inst.patchArgData = [];
699 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
700 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
701 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
702 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
703 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
704 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
705 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
706 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
707 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
708 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
709 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
710 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
711 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
712 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
713 bb3.append(inst);
714 inst = new Inst(ConvertInt32ToDouble);
715 arg = Arg.createTmp(Reg.r10);
716 inst.args.push(arg);
717 arg = Arg.createTmp(Reg.xmm3);
718 inst.args.push(arg);
719 bb3.append(inst);
720 inst = new Inst(Jump);
721 bb3.append(inst);
722 bb4.successors.push(new FrequentedBlock(bb6, Normal));
723 bb4.successors.push(new FrequentedBlock(bb5, Rare));
724 bb4.predecessors.push(bb2);
725 bb4.predecessors.push(bb3);
726 inst = new Inst(Add64);
727 arg = Arg.createTmp(Reg.r11);
728 inst.args.push(arg);
729 arg = Arg.createTmp(Reg.rdi);
730 inst.args.push(arg);
731 arg = Arg.createTmp(Reg.r8);
732 inst.args.push(arg);
733 bb4.append(inst);
734 inst = new Inst(Move64ToDouble);
735 arg = Arg.createTmp(Reg.r8);
736 inst.args.push(arg);
737 arg = Arg.createTmp(Reg.xmm1);
738 inst.args.push(arg);
739 bb4.append(inst);
740 inst = new Inst(BranchDouble);
741 arg = Arg.createDoubleCond(DoubleEqual);
742 inst.args.push(arg);
743 arg = Arg.createTmp(Reg.xmm1);
744 inst.args.push(arg);
745 arg = Arg.createTmp(Reg.xmm1);
746 inst.args.push(arg);
747 bb4.append(inst);
748 bb5.successors.push(new FrequentedBlock(bb6, Normal));
749 bb5.predecessors.push(bb4);
750 inst = new Inst(Patch);
751 inst.args.push(arg);
752 arg = Arg.createRelCond(Below);
753 inst.args.push(arg);
754 arg = Arg.createTmp(Reg.r11);
755 inst.args.push(arg);
756 arg = Arg.createTmp(Reg.rdi);
757 inst.args.push(arg);
758 arg = Arg.createTmp(Reg.r11);
759 inst.args.push(arg);
760 arg = Arg.createStack(slot5, 0);
761 inst.args.push(arg);
762 arg = Arg.createTmp(Reg.r12);
763 inst.args.push(arg);
764 arg = Arg.createTmp(Reg.rsi);
765 inst.args.push(arg);
766 arg = Arg.createTmp(Reg.rdx);
767 inst.args.push(arg);
768 arg = Arg.createTmp(Reg.rcx);
769 inst.args.push(arg);
770 arg = Arg.createTmp(Reg.r10);
771 inst.args.push(arg);
772 arg = Arg.createTmp(Reg.r11);
773 inst.args.push(arg);
774 arg = Arg.createTmp(Reg.rax);
775 inst.args.push(arg);
776 arg = Arg.createTmp(Reg.rbx);
777 inst.args.push(arg);
778 inst.patchHasNonArgEffects = true;
779 inst.extraEarlyClobberedRegs = new Set();
780 inst.extraClobberedRegs = new Set();
781 inst.patchArgData = [];
782 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
783 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
784 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
785 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
786 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
787 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
788 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
789 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
790 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
791 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
792 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
793 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
794 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
795 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
796 bb5.append(inst);
797 inst = new Inst(ConvertInt32ToDouble);
798 arg = Arg.createTmp(Reg.r11);
799 inst.args.push(arg);
800 arg = Arg.createTmp(Reg.xmm1);
801 inst.args.push(arg);
802 bb5.append(inst);
803 inst = new Inst(Jump);
804 bb5.append(inst);
805 bb6.successors.push(new FrequentedBlock(bb8, Normal));
806 bb6.successors.push(new FrequentedBlock(bb7, Rare));
807 bb6.predecessors.push(bb4);
808 bb6.predecessors.push(bb5);
809 inst = new Inst(Patch);
810 inst.args.push(arg);
811 arg = Arg.createRelCond(Below);
812 inst.args.push(arg);
813 arg = Arg.createTmp(Reg.rax);
814 inst.args.push(arg);
815 arg = Arg.createTmp(Reg.rdi);
816 inst.args.push(arg);
817 arg = Arg.createTmp(Reg.rax);
818 inst.args.push(arg);
819 arg = Arg.createStack(slot5, 0);
820 inst.args.push(arg);
821 arg = Arg.createTmp(Reg.r12);
822 inst.args.push(arg);
823 arg = Arg.createTmp(Reg.rsi);
824 inst.args.push(arg);
825 arg = Arg.createTmp(Reg.rdx);
826 inst.args.push(arg);
827 arg = Arg.createTmp(Reg.rcx);
828 inst.args.push(arg);
829 arg = Arg.createTmp(Reg.r10);
830 inst.args.push(arg);
831 arg = Arg.createTmp(Reg.r11);
832 inst.args.push(arg);
833 arg = Arg.createTmp(Reg.rax);
834 inst.args.push(arg);
835 arg = Arg.createTmp(Reg.rbx);
836 inst.args.push(arg);
837 inst.patchHasNonArgEffects = true;
838 inst.extraEarlyClobberedRegs = new Set();
839 inst.extraClobberedRegs = new Set();
840 inst.patchArgData = [];
841 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
842 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
843 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
844 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
845 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
846 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
847 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
848 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
849 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
850 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
851 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
852 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
853 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
854 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
855 bb6.append(inst);
856 inst = new Inst(Add64);
857 arg = Arg.createTmp(Reg.rbx);
858 inst.args.push(arg);
859 arg = Arg.createTmp(Reg.rdi);
860 inst.args.push(arg);
861 arg = Arg.createTmp(Reg.r8);
862 inst.args.push(arg);
863 bb6.append(inst);
864 inst = new Inst(Move64ToDouble);
865 arg = Arg.createTmp(Reg.r8);
866 inst.args.push(arg);
867 arg = Arg.createTmp(Reg.xmm5);
868 inst.args.push(arg);
869 bb6.append(inst);
870 inst = new Inst(BranchDouble);
871 arg = Arg.createDoubleCond(DoubleEqual);
872 inst.args.push(arg);
873 arg = Arg.createTmp(Reg.xmm5);
874 inst.args.push(arg);
875 arg = Arg.createTmp(Reg.xmm5);
876 inst.args.push(arg);
877 bb6.append(inst);
878 bb7.successors.push(new FrequentedBlock(bb8, Normal));
879 bb7.predecessors.push(bb6);
880 inst = new Inst(Patch);
881 inst.args.push(arg);
882 arg = Arg.createRelCond(Below);
883 inst.args.push(arg);
884 arg = Arg.createTmp(Reg.rbx);
885 inst.args.push(arg);
886 arg = Arg.createTmp(Reg.rdi);
887 inst.args.push(arg);
888 arg = Arg.createTmp(Reg.rbx);
889 inst.args.push(arg);
890 arg = Arg.createStack(slot5, 0);
891 inst.args.push(arg);
892 arg = Arg.createTmp(Reg.r12);
893 inst.args.push(arg);
894 arg = Arg.createTmp(Reg.rsi);
895 inst.args.push(arg);
896 arg = Arg.createTmp(Reg.rdx);
897 inst.args.push(arg);
898 arg = Arg.createTmp(Reg.rcx);
899 inst.args.push(arg);
900 arg = Arg.createTmp(Reg.r10);
901 inst.args.push(arg);
902 arg = Arg.createTmp(Reg.r11);
903 inst.args.push(arg);
904 arg = Arg.createTmp(Reg.rax);
905 inst.args.push(arg);
906 arg = Arg.createTmp(Reg.rbx);
907 inst.args.push(arg);
908 inst.patchHasNonArgEffects = true;
909 inst.extraEarlyClobberedRegs = new Set();
910 inst.extraClobberedRegs = new Set();
911 inst.patchArgData = [];
912 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
913 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
914 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
915 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
916 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
917 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
918 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
919 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
920 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
921 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
922 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
923 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
924 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
925 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
926 bb7.append(inst);
927 inst = new Inst(ConvertInt32ToDouble);
928 arg = Arg.createTmp(Reg.rbx);
929 inst.args.push(arg);
930 arg = Arg.createTmp(Reg.xmm5);
931 inst.args.push(arg);
932 bb7.append(inst);
933 inst = new Inst(Jump);
934 bb7.append(inst);
935 bb8.successors.push(new FrequentedBlock(bb10, Normal));
936 bb8.successors.push(new FrequentedBlock(bb9, Rare));
937 bb8.predecessors.push(bb6);
938 bb8.predecessors.push(bb7);
939 inst = new Inst(Move);
940 arg = Arg.createBigImm(4347049352);
941 inst.args.push(arg);
942 arg = Arg.createTmp(Reg.r8);
943 inst.args.push(arg);
944 bb8.append(inst);
945 inst = new Inst(Move);
946 arg = Arg.createAddr(Reg.r8, 0);
947 inst.args.push(arg);
948 arg = Arg.createTmp(Reg.r9);
949 inst.args.push(arg);
950 bb8.append(inst);
951 inst = new Inst(Add64);
952 arg = Arg.createTmp(Reg.r9);
953 inst.args.push(arg);
954 arg = Arg.createTmp(Reg.rdi);
955 inst.args.push(arg);
956 arg = Arg.createTmp(Reg.r8);
957 inst.args.push(arg);
958 bb8.append(inst);
959 inst = new Inst(Move64ToDouble);
960 arg = Arg.createTmp(Reg.r8);
961 inst.args.push(arg);
962 arg = Arg.createTmp(Reg.xmm6);
963 inst.args.push(arg);
964 bb8.append(inst);
965 inst = new Inst(BranchDouble);
966 arg = Arg.createDoubleCond(DoubleEqual);
967 inst.args.push(arg);
968 arg = Arg.createTmp(Reg.xmm6);
969 inst.args.push(arg);
970 arg = Arg.createTmp(Reg.xmm6);
971 inst.args.push(arg);
972 bb8.append(inst);
973 bb9.successors.push(new FrequentedBlock(bb10, Normal));
974 bb9.predecessors.push(bb8);
975 inst = new Inst(Patch);
976 inst.args.push(arg);
977 arg = Arg.createRelCond(Below);
978 inst.args.push(arg);
979 arg = Arg.createTmp(Reg.r9);
980 inst.args.push(arg);
981 arg = Arg.createTmp(Reg.rdi);
982 inst.args.push(arg);
983 arg = Arg.createTmp(Reg.r9);
984 inst.args.push(arg);
985 arg = Arg.createStack(slot5, 0);
986 inst.args.push(arg);
987 arg = Arg.createTmp(Reg.r12);
988 inst.args.push(arg);
989 arg = Arg.createTmp(Reg.rsi);
990 inst.args.push(arg);
991 arg = Arg.createTmp(Reg.rdx);
992 inst.args.push(arg);
993 arg = Arg.createTmp(Reg.rcx);
994 inst.args.push(arg);
995 arg = Arg.createTmp(Reg.r10);
996 inst.args.push(arg);
997 arg = Arg.createTmp(Reg.r11);
998 inst.args.push(arg);
999 arg = Arg.createTmp(Reg.rax);
1000 inst.args.push(arg);
1001 arg = Arg.createTmp(Reg.rbx);
1002 inst.args.push(arg);
1003 inst.patchHasNonArgEffects = true;
1004 inst.extraEarlyClobberedRegs = new Set();
1005 inst.extraClobberedRegs = new Set();
1006 inst.patchArgData = [];
1007 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1008 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1009 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1010 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1011 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1012 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1013 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1014 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1015 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1016 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1017 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1018 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1019 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1020 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1021 bb9.append(inst);
1022 inst = new Inst(ConvertInt32ToDouble);
1023 arg = Arg.createTmp(Reg.r9);
1024 inst.args.push(arg);
1025 arg = Arg.createTmp(Reg.xmm6);
1026 inst.args.push(arg);
1027 bb9.append(inst);
1028 inst = new Inst(Jump);
1029 bb9.append(inst);
1030 bb10.successors.push(new FrequentedBlock(bb18, Normal));
1031 bb10.predecessors.push(bb8);
1032 bb10.predecessors.push(bb9);
1033 inst = new Inst(Move);
1034 arg = Arg.createBigImm(4374462168);
1035 inst.args.push(arg);
1036 arg = Arg.createTmp(Reg.rdi);
1037 inst.args.push(arg);
1038 bb10.append(inst);
1039 inst = new Inst(Move);
1040 arg = Arg.createAddr(Reg.rdi, 0);
1041 inst.args.push(arg);
1042 arg = Arg.createTmp(Reg.r9);
1043 inst.args.push(arg);
1044 bb10.append(inst);
1045 inst = new Inst(Move32);
1046 arg = Arg.createAddr(Reg.r9, -8);
1047 inst.args.push(arg);
1048 arg = Arg.createTmp(Reg.r8);
1049 inst.args.push(arg);
1050 bb10.append(inst);
1051 inst = new Inst(Move);
1052 arg = Arg.createBigImm(4374462128);
1053 inst.args.push(arg);
1054 arg = Arg.createTmp(Reg.rdi);
1055 inst.args.push(arg);
1056 bb10.append(inst);
1057 inst = new Inst(Patch);
1058 inst.args.push(arg);
1059 arg = Arg.createRelCond(NotEqual);
1060 inst.args.push(arg);
1061 arg = Arg.createAddr(Reg.rdi, 0);
1062 inst.args.push(arg);
1063 arg = Arg.createImm(80);
1064 inst.args.push(arg);
1065 arg = Arg.createBigImm(4374462128);
1066 inst.args.push(arg);
1067 arg = Arg.createStack(slot5, 0);
1068 inst.args.push(arg);
1069 arg = Arg.createTmp(Reg.r12);
1070 inst.args.push(arg);
1071 arg = Arg.createTmp(Reg.rsi);
1072 inst.args.push(arg);
1073 arg = Arg.createTmp(Reg.rdx);
1074 inst.args.push(arg);
1075 arg = Arg.createTmp(Reg.rcx);
1076 inst.args.push(arg);
1077 arg = Arg.createTmp(Reg.r10);
1078 inst.args.push(arg);
1079 arg = Arg.createTmp(Reg.r11);
1080 inst.args.push(arg);
1081 arg = Arg.createTmp(Reg.rax);
1082 inst.args.push(arg);
1083 arg = Arg.createTmp(Reg.rbx);
1084 inst.args.push(arg);
1085 inst.patchHasNonArgEffects = true;
1086 inst.extraEarlyClobberedRegs = new Set();
1087 inst.extraClobberedRegs = new Set();
1088 inst.patchArgData = [];
1089 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1090 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1091 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1092 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1093 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1094 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1095 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1096 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1097 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1098 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1099 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1100 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1101 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1102 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1103 bb10.append(inst);
1104 inst = new Inst(Move);
1105 arg = Arg.createBigImm(4374462136);
1106 inst.args.push(arg);
1107 arg = Arg.createTmp(Reg.rdi);
1108 inst.args.push(arg);
1109 bb10.append(inst);
1110 inst = new Inst(Move);
1111 arg = Arg.createAddr(Reg.rdi, 0);
1112 inst.args.push(arg);
1113 arg = Arg.createTmp(Reg.rdi);
1114 inst.args.push(arg);
1115 bb10.append(inst);
1116 inst = new Inst(Move);
1117 arg = Arg.createTmp(Reg.rdi);
1118 inst.args.push(arg);
1119 arg = Arg.createStack(slot2, 0);
1120 inst.args.push(arg);
1121 bb10.append(inst);
1122 inst = new Inst(Move);
1123 arg = Arg.createTmp(Reg.rdi);
1124 inst.args.push(arg);
1125 arg = Arg.createTmp(Reg.rdi);
1126 inst.args.push(arg);
1127 bb10.append(inst);
1128 inst = new Inst(Move32);
1129 arg = Arg.createAddr(Reg.rdi, -8);
1130 inst.args.push(arg);
1131 arg = Arg.createTmp(Reg.rdi);
1132 inst.args.push(arg);
1133 bb10.append(inst);
1134 inst = new Inst(Move32);
1135 arg = Arg.createTmp(Reg.rdi);
1136 inst.args.push(arg);
1137 arg = Arg.createStack(slot3, 0);
1138 inst.args.push(arg);
1139 bb10.append(inst);
1140 inst = new Inst(MoveZeroToDouble);
1141 arg = Arg.createTmp(Reg.xmm7);
1142 inst.args.push(arg);
1143 bb10.append(inst);
1144 inst = new Inst(Move);
1145 arg = Arg.createImm(10);
1146 inst.args.push(arg);
1147 arg = Arg.createStack(slot4, 0);
1148 inst.args.push(arg);
1149 bb10.append(inst);
1150 inst = new Inst(Move);
1151 arg = Arg.createBigImm(-281474976710654);
1152 inst.args.push(arg);
1153 arg = Arg.createTmp(Reg.r10);
1154 inst.args.push(arg);
1155 bb10.append(inst);
1156 inst = new Inst(Jump);
1157 bb10.append(inst);
1158 bb11.successors.push(new FrequentedBlock(bb13, Normal));
1159 bb11.predecessors.push(bb35);
1160 inst = new Inst(Move);
1161 arg = Arg.createTmp(Reg.rax);
1162 inst.args.push(arg);
1163 arg = Arg.createTmp(Reg.rcx);
1164 inst.args.push(arg);
1165 bb11.append(inst);
1166 inst = new Inst(Move);
1167 arg = Arg.createImm(0);
1168 inst.args.push(arg);
1169 arg = Arg.createTmp(Reg.rdx);
1170 inst.args.push(arg);
1171 bb11.append(inst);
1172 inst = new Inst(Jump);
1173 bb11.append(inst);
1174 bb12.successors.push(new FrequentedBlock(bb13, Normal));
1175 bb12.predecessors.push(bb34);
1176 inst = new Inst(Move32);
1177 arg = Arg.createTmp(Reg.rax);
1178 inst.args.push(arg);
1179 arg = Arg.createTmp(Reg.rdx);
1180 inst.args.push(arg);
1181 bb12.append(inst);
1182 inst = new Inst(Jump);
1183 bb12.append(inst);
1184 bb13.successors.push(new FrequentedBlock(bb15, Normal));
1185 bb13.predecessors.push(bb11);
1186 bb13.predecessors.push(bb12);
1187 inst = new Inst(Move);
1188 arg = Arg.createImm(-6);
1189 inst.args.push(arg);
1190 arg = Arg.createTmp(Reg.rax);
1191 inst.args.push(arg);
1192 bb13.append(inst);
1193 inst = new Inst(MoveDouble);
1194 arg = Arg.createTmp(Reg.xmm7);
1195 inst.args.push(arg);
1196 arg = Arg.createTmp(Reg.xmm1);
1197 inst.args.push(arg);
1198 bb13.append(inst);
1199 inst = new Inst(MoveDouble);
1200 arg = Arg.createTmp(Reg.xmm7);
1201 inst.args.push(arg);
1202 arg = Arg.createTmp(Reg.xmm2);
1203 inst.args.push(arg);
1204 bb13.append(inst);
1205 inst = new Inst(MoveDouble);
1206 arg = Arg.createTmp(Reg.xmm7);
1207 inst.args.push(arg);
1208 arg = Arg.createTmp(Reg.xmm3);
1209 inst.args.push(arg);
1210 bb13.append(inst);
1211 inst = new Inst(MoveDouble);
1212 arg = Arg.createTmp(Reg.xmm7);
1213 inst.args.push(arg);
1214 arg = Arg.createTmp(Reg.xmm5);
1215 inst.args.push(arg);
1216 bb13.append(inst);
1217 inst = new Inst(Jump);
1218 bb13.append(inst);
1219 bb14.successors.push(new FrequentedBlock(bb15, Normal));
1220 bb14.predecessors.push(bb31);
1221 inst = new Inst(Move32);
1222 arg = Arg.createTmp(Reg.rsi);
1223 inst.args.push(arg);
1224 arg = Arg.createTmp(Reg.rax);
1225 inst.args.push(arg);
1226 bb14.append(inst);
1227 inst = new Inst(Jump);
1228 bb14.append(inst);
1229 bb15.successors.push(new FrequentedBlock(bb28, Normal));
1230 bb15.successors.push(new FrequentedBlock(bb16, Normal));
1231 bb15.predecessors.push(bb13);
1232 bb15.predecessors.push(bb14);
1233 inst = new Inst(Patch);
1234 inst.args.push(arg);
1235 arg = Arg.createResCond(Overflow);
1236 inst.args.push(arg);
1237 arg = Arg.createTmp(Reg.rax);
1238 inst.args.push(arg);
1239 arg = Arg.createTmp(Reg.rcx);
1240 inst.args.push(arg);
1241 arg = Arg.createTmp(Reg.rsi);
1242 inst.args.push(arg);
1243 arg = Arg.createStack(slot5, 0);
1244 inst.args.push(arg);
1245 arg = Arg.createTmp(Reg.xmm2);
1246 inst.args.push(arg);
1247 arg = Arg.createTmp(Reg.rcx);
1248 inst.args.push(arg);
1249 arg = Arg.createTmp(Reg.rdx);
1250 inst.args.push(arg);
1251 arg = Arg.createTmp(Reg.xmm3);
1252 inst.args.push(arg);
1253 arg = Arg.createTmp(Reg.xmm1);
1254 inst.args.push(arg);
1255 arg = Arg.createTmp(Reg.rax);
1256 inst.args.push(arg);
1257 arg = Arg.createTmp(Reg.xmm5);
1258 inst.args.push(arg);
1259 inst.patchHasNonArgEffects = true;
1260 inst.extraEarlyClobberedRegs = new Set();
1261 inst.extraClobberedRegs = new Set();
1262 inst.patchArgData = [];
1263 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1264 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1265 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1266 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1267 inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32});
1268 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
1269 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1270 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1271 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1272 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1273 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1274 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1275 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1276 bb15.append(inst);
1277 inst = new Inst(Branch32);
1278 arg = Arg.createRelCond(LessThan);
1279 inst.args.push(arg);
1280 arg = Arg.createTmp(Reg.rsi);
1281 inst.args.push(arg);
1282 arg = Arg.createImm(0);
1283 inst.args.push(arg);
1284 bb15.append(inst);
1285 bb16.successors.push(new FrequentedBlock(bb29, Normal));
1286 bb16.successors.push(new FrequentedBlock(bb17, Normal));
1287 bb16.predecessors.push(bb15);
1288 inst = new Inst(Branch32);
1289 arg = Arg.createRelCond(GreaterThanOrEqual);
1290 inst.args.push(arg);
1291 arg = Arg.createTmp(Reg.rsi);
1292 inst.args.push(arg);
1293 arg = Arg.createImm(267);
1294 inst.args.push(arg);
1295 bb16.append(inst);
1296 bb17.successors.push(new FrequentedBlock(bb18, Normal));
1297 bb17.predecessors.push(bb16);
1298 inst = new Inst(Move);
1299 arg = Arg.createTmp(Reg.rcx);
1300 inst.args.push(arg);
1301 arg = Arg.createTmp(Reg.rsi);
1302 inst.args.push(arg);
1303 bb17.append(inst);
1304 inst = new Inst(Move);
1305 arg = Arg.createImm(-6);
1306 inst.args.push(arg);
1307 arg = Arg.createTmp(Reg.rcx);
1308 inst.args.push(arg);
1309 bb17.append(inst);
1310 inst = new Inst(Jump);
1311 bb17.append(inst);
1312 bb18.successors.push(new FrequentedBlock(bb20, Normal));
1313 bb18.successors.push(new FrequentedBlock(bb19, Rare));
1314 bb18.predecessors.push(bb10);
1315 bb18.predecessors.push(bb17);
1316 inst = new Inst(Move);
1317 arg = Arg.createTmp(Reg.rsi);
1318 inst.args.push(arg);
1319 arg = Arg.createStack(slot1, 0);
1320 inst.args.push(arg);
1321 bb18.append(inst);
1322 inst = new Inst(Patch);
1323 inst.args.push(arg);
1324 arg = Arg.createResCond(Overflow);
1325 inst.args.push(arg);
1326 arg = Arg.createTmp(Reg.rax);
1327 inst.args.push(arg);
1328 arg = Arg.createTmp(Reg.rsi);
1329 inst.args.push(arg);
1330 arg = Arg.createTmp(Reg.rsi);
1331 inst.args.push(arg);
1332 arg = Arg.createStack(slot5, 0);
1333 inst.args.push(arg);
1334 arg = Arg.createTmp(Reg.xmm2);
1335 inst.args.push(arg);
1336 arg = Arg.createStack(slot1, 0);
1337 inst.args.push(arg);
1338 arg = Arg.createTmp(Reg.rdx);
1339 inst.args.push(arg);
1340 arg = Arg.createTmp(Reg.rcx);
1341 inst.args.push(arg);
1342 arg = Arg.createTmp(Reg.xmm3);
1343 inst.args.push(arg);
1344 arg = Arg.createTmp(Reg.xmm1);
1345 inst.args.push(arg);
1346 arg = Arg.createTmp(Reg.rax);
1347 inst.args.push(arg);
1348 arg = Arg.createTmp(Reg.xmm5);
1349 inst.args.push(arg);
1350 inst.patchHasNonArgEffects = true;
1351 inst.extraEarlyClobberedRegs = new Set();
1352 inst.extraClobberedRegs = new Set();
1353 inst.patchArgData = [];
1354 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1355 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1356 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1357 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1358 inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32});
1359 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
1360 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1361 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1362 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1363 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1364 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1365 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1366 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1367 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1368 bb18.append(inst);
1369 inst = new Inst(Patch);
1370 inst.args.push(arg);
1371 arg = Arg.createResCond(Overflow);
1372 inst.args.push(arg);
1373 arg = Arg.createTmp(Reg.rsi);
1374 inst.args.push(arg);
1375 arg = Arg.createImm(400);
1376 inst.args.push(arg);
1377 arg = Arg.createTmp(Reg.r11);
1378 inst.args.push(arg);
1379 arg = Arg.createStack(slot5, 0);
1380 inst.args.push(arg);
1381 arg = Arg.createTmp(Reg.xmm2);
1382 inst.args.push(arg);
1383 arg = Arg.createStack(slot1, 0);
1384 inst.args.push(arg);
1385 arg = Arg.createTmp(Reg.rdx);
1386 inst.args.push(arg);
1387 arg = Arg.createTmp(Reg.rcx);
1388 inst.args.push(arg);
1389 arg = Arg.createTmp(Reg.xmm3);
1390 inst.args.push(arg);
1391 arg = Arg.createTmp(Reg.xmm1);
1392 inst.args.push(arg);
1393 arg = Arg.createTmp(Reg.rax);
1394 inst.args.push(arg);
1395 arg = Arg.createTmp(Reg.xmm5);
1396 inst.args.push(arg);
1397 inst.patchHasNonArgEffects = true;
1398 inst.extraEarlyClobberedRegs = new Set();
1399 inst.extraClobberedRegs = new Set();
1400 inst.patchArgData = [];
1401 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1402 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1403 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1404 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1405 inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32});
1406 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
1407 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1408 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1409 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1410 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1411 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1412 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1413 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1414 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1415 bb18.append(inst);
1416 inst = new Inst(BranchTest32);
1417 arg = Arg.createResCond(NonZero);
1418 inst.args.push(arg);
1419 arg = Arg.createTmp(Reg.r11);
1420 inst.args.push(arg);
1421 arg = Arg.createTmp(Reg.r11);
1422 inst.args.push(arg);
1423 bb18.append(inst);
1424 bb19.successors.push(new FrequentedBlock(bb20, Normal));
1425 bb19.predecessors.push(bb18);
1426 inst = new Inst(Patch);
1427 inst.args.push(arg);
1428 arg = Arg.createRelCond(LessThan);
1429 inst.args.push(arg);
1430 arg = Arg.createTmp(Reg.rsi);
1431 inst.args.push(arg);
1432 arg = Arg.createImm(0);
1433 inst.args.push(arg);
1434 arg = Arg.createStack(slot5, 0);
1435 inst.args.push(arg);
1436 arg = Arg.createTmp(Reg.xmm2);
1437 inst.args.push(arg);
1438 arg = Arg.createStack(slot1, 0);
1439 inst.args.push(arg);
1440 arg = Arg.createTmp(Reg.rdx);
1441 inst.args.push(arg);
1442 arg = Arg.createTmp(Reg.rcx);
1443 inst.args.push(arg);
1444 arg = Arg.createTmp(Reg.xmm3);
1445 inst.args.push(arg);
1446 arg = Arg.createTmp(Reg.xmm1);
1447 inst.args.push(arg);
1448 arg = Arg.createTmp(Reg.rax);
1449 inst.args.push(arg);
1450 arg = Arg.createTmp(Reg.xmm5);
1451 inst.args.push(arg);
1452 inst.patchHasNonArgEffects = true;
1453 inst.extraEarlyClobberedRegs = new Set();
1454 inst.extraClobberedRegs = new Set();
1455 inst.patchArgData = [];
1456 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1457 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1458 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1459 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1460 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1461 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1462 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1463 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1464 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1465 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1466 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1467 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1468 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1469 bb19.append(inst);
1470 inst = new Inst(Jump);
1471 bb19.append(inst);
1472 bb20.successors.push(new FrequentedBlock(bb22, Normal));
1473 bb20.predecessors.push(bb18);
1474 bb20.predecessors.push(bb19);
1475 inst = new Inst(Move32);
1476 arg = Arg.createTmp(Reg.rax);
1477 inst.args.push(arg);
1478 arg = Arg.createTmp(Reg.rsi);
1479 inst.args.push(arg);
1480 bb20.append(inst);
1481 inst = new Inst(Rshift32);
1482 arg = Arg.createImm(31);
1483 inst.args.push(arg);
1484 arg = Arg.createTmp(Reg.rsi);
1485 inst.args.push(arg);
1486 bb20.append(inst);
1487 inst = new Inst(Add32);
1488 arg = Arg.createTmp(Reg.rax);
1489 inst.args.push(arg);
1490 arg = Arg.createTmp(Reg.rsi);
1491 inst.args.push(arg);
1492 arg = Arg.createTmp(Reg.rdi);
1493 inst.args.push(arg);
1494 bb20.append(inst);
1495 inst = new Inst(Xor32);
1496 arg = Arg.createTmp(Reg.rsi);
1497 inst.args.push(arg);
1498 arg = Arg.createTmp(Reg.rdi);
1499 inst.args.push(arg);
1500 arg = Arg.createTmp(Reg.rdi);
1501 inst.args.push(arg);
1502 bb20.append(inst);
1503 inst = new Inst(Patch);
1504 inst.args.push(arg);
1505 arg = Arg.createRelCond(LessThan);
1506 inst.args.push(arg);
1507 arg = Arg.createTmp(Reg.rdi);
1508 inst.args.push(arg);
1509 arg = Arg.createImm(0);
1510 inst.args.push(arg);
1511 arg = Arg.createStack(slot5, 0);
1512 inst.args.push(arg);
1513 arg = Arg.createTmp(Reg.xmm2);
1514 inst.args.push(arg);
1515 arg = Arg.createStack(slot1, 0);
1516 inst.args.push(arg);
1517 arg = Arg.createTmp(Reg.rdx);
1518 inst.args.push(arg);
1519 arg = Arg.createTmp(Reg.rcx);
1520 inst.args.push(arg);
1521 arg = Arg.createTmp(Reg.xmm3);
1522 inst.args.push(arg);
1523 arg = Arg.createTmp(Reg.xmm1);
1524 inst.args.push(arg);
1525 arg = Arg.createTmp(Reg.rax);
1526 inst.args.push(arg);
1527 arg = Arg.createTmp(Reg.xmm5);
1528 inst.args.push(arg);
1529 inst.patchHasNonArgEffects = true;
1530 inst.extraEarlyClobberedRegs = new Set();
1531 inst.extraClobberedRegs = new Set();
1532 inst.patchArgData = [];
1533 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1534 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1535 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1536 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1537 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1538 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1539 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1540 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1541 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1542 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1543 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1544 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1545 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1546 bb20.append(inst);
1547 inst = new Inst(Patch);
1548 inst.args.push(arg);
1549 arg = Arg.createRelCond(AboveOrEqual);
1550 inst.args.push(arg);
1551 arg = Arg.createTmp(Reg.rdi);
1552 inst.args.push(arg);
1553 arg = Arg.createStack(slot3, 0);
1554 inst.args.push(arg);
1555 arg = Arg.createStack(slot5, 0);
1556 inst.args.push(arg);
1557 arg = Arg.createTmp(Reg.xmm2);
1558 inst.args.push(arg);
1559 arg = Arg.createStack(slot1, 0);
1560 inst.args.push(arg);
1561 arg = Arg.createTmp(Reg.rdx);
1562 inst.args.push(arg);
1563 arg = Arg.createTmp(Reg.rcx);
1564 inst.args.push(arg);
1565 arg = Arg.createTmp(Reg.xmm3);
1566 inst.args.push(arg);
1567 arg = Arg.createTmp(Reg.xmm1);
1568 inst.args.push(arg);
1569 arg = Arg.createTmp(Reg.rax);
1570 inst.args.push(arg);
1571 arg = Arg.createTmp(Reg.xmm5);
1572 inst.args.push(arg);
1573 inst.patchHasNonArgEffects = true;
1574 inst.extraEarlyClobberedRegs = new Set();
1575 inst.extraClobberedRegs = new Set();
1576 inst.patchArgData = [];
1577 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1578 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1579 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1580 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1581 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1582 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1583 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1584 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1585 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1586 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1587 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1588 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1589 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1590 bb20.append(inst);
1591 inst = new Inst(Move);
1592 arg = Arg.createStack(slot2, 0);
1593 inst.args.push(arg);
1594 arg = Arg.createTmp(Reg.rsi);
1595 inst.args.push(arg);
1596 bb20.append(inst);
1597 inst = new Inst(Move);
1598 arg = Arg.createIndex(Reg.rsi, Reg.rdi, 8, 0);
1599 inst.args.push(arg);
1600 arg = Arg.createTmp(Reg.rsi);
1601 inst.args.push(arg);
1602 bb20.append(inst);
1603 inst = new Inst(Move);
1604 arg = Arg.createImm(10);
1605 inst.args.push(arg);
1606 arg = Arg.createTmp(Reg.rdi);
1607 inst.args.push(arg);
1608 bb20.append(inst);
1609 inst = new Inst(MoveConditionallyTest64);
1610 arg = Arg.createResCond(NonZero);
1611 inst.args.push(arg);
1612 arg = Arg.createTmp(Reg.rsi);
1613 inst.args.push(arg);
1614 arg = Arg.createImm(-1);
1615 inst.args.push(arg);
1616 arg = Arg.createTmp(Reg.rsi);
1617 inst.args.push(arg);
1618 arg = Arg.createTmp(Reg.rdi);
1619 inst.args.push(arg);
1620 arg = Arg.createTmp(Reg.rdi);
1621 inst.args.push(arg);
1622 bb20.append(inst);
1623 inst = new Inst(Patch);
1624 inst.args.push(arg);
1625 arg = Arg.createResCond(NonZero);
1626 inst.args.push(arg);
1627 arg = Arg.createTmp(Reg.rdi);
1628 inst.args.push(arg);
1629 arg = Arg.createTmp(Reg.r10);
1630 inst.args.push(arg);
1631 arg = Arg.createTmp(Reg.rdi);
1632 inst.args.push(arg);
1633 arg = Arg.createStack(slot5, 0);
1634 inst.args.push(arg);
1635 arg = Arg.createTmp(Reg.xmm2);
1636 inst.args.push(arg);
1637 arg = Arg.createStack(slot1, 0);
1638 inst.args.push(arg);
1639 arg = Arg.createTmp(Reg.rdx);
1640 inst.args.push(arg);
1641 arg = Arg.createTmp(Reg.rcx);
1642 inst.args.push(arg);
1643 arg = Arg.createTmp(Reg.xmm3);
1644 inst.args.push(arg);
1645 arg = Arg.createTmp(Reg.xmm1);
1646 inst.args.push(arg);
1647 arg = Arg.createTmp(Reg.rax);
1648 inst.args.push(arg);
1649 arg = Arg.createTmp(Reg.xmm5);
1650 inst.args.push(arg);
1651 inst.patchHasNonArgEffects = true;
1652 inst.extraEarlyClobberedRegs = new Set();
1653 inst.extraClobberedRegs = new Set();
1654 inst.patchArgData = [];
1655 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1656 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1657 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1658 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1659 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1660 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1661 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1662 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1663 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1664 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1665 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1666 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1667 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1668 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1669 bb20.append(inst);
1670 inst = new Inst(Patch);
1671 inst.args.push(arg);
1672 arg = Arg.createRelCond(NotEqual);
1673 inst.args.push(arg);
1674 arg = Arg.createAddr(Reg.rdi, 0);
1675 inst.args.push(arg);
1676 arg = Arg.createImm(79);
1677 inst.args.push(arg);
1678 arg = Arg.createTmp(Reg.rdi);
1679 inst.args.push(arg);
1680 arg = Arg.createStack(slot5, 0);
1681 inst.args.push(arg);
1682 arg = Arg.createTmp(Reg.xmm2);
1683 inst.args.push(arg);
1684 arg = Arg.createStack(slot1, 0);
1685 inst.args.push(arg);
1686 arg = Arg.createTmp(Reg.rdx);
1687 inst.args.push(arg);
1688 arg = Arg.createTmp(Reg.rcx);
1689 inst.args.push(arg);
1690 arg = Arg.createTmp(Reg.xmm3);
1691 inst.args.push(arg);
1692 arg = Arg.createTmp(Reg.xmm1);
1693 inst.args.push(arg);
1694 arg = Arg.createTmp(Reg.rax);
1695 inst.args.push(arg);
1696 arg = Arg.createTmp(Reg.xmm5);
1697 inst.args.push(arg);
1698 inst.patchHasNonArgEffects = true;
1699 inst.extraEarlyClobberedRegs = new Set();
1700 inst.extraClobberedRegs = new Set();
1701 inst.patchArgData = [];
1702 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1703 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1704 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1705 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1706 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1707 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1708 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1709 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1710 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1711 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1712 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1713 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1714 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1715 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1716 bb20.append(inst);
1717 inst = new Inst(Move);
1718 arg = Arg.createAddr(Reg.rdi, 8);
1719 inst.args.push(arg);
1720 arg = Arg.createTmp(Reg.r12);
1721 inst.args.push(arg);
1722 bb20.append(inst);
1723 inst = new Inst(Move32);
1724 arg = Arg.createAddr(Reg.r12, -8);
1725 inst.args.push(arg);
1726 arg = Arg.createTmp(Reg.r13);
1727 inst.args.push(arg);
1728 bb20.append(inst);
1729 inst = new Inst(Jump);
1730 bb20.append(inst);
1731 bb21.successors.push(new FrequentedBlock(bb22, Normal));
1732 bb21.predecessors.push(bb27);
1733 inst = new Inst(Move32);
1734 arg = Arg.createTmp(Reg.rsi);
1735 inst.args.push(arg);
1736 arg = Arg.createTmp(Reg.rcx);
1737 inst.args.push(arg);
1738 bb21.append(inst);
1739 inst = new Inst(Jump);
1740 bb21.append(inst);
1741 bb22.successors.push(new FrequentedBlock(bb25, Normal));
1742 bb22.successors.push(new FrequentedBlock(bb23, Normal));
1743 bb22.predecessors.push(bb20);
1744 bb22.predecessors.push(bb21);
1745 inst = new Inst(Patch);
1746 inst.args.push(arg);
1747 arg = Arg.createResCond(Overflow);
1748 inst.args.push(arg);
1749 arg = Arg.createTmp(Reg.rcx);
1750 inst.args.push(arg);
1751 arg = Arg.createTmp(Reg.rdx);
1752 inst.args.push(arg);
1753 arg = Arg.createTmp(Reg.rsi);
1754 inst.args.push(arg);
1755 arg = Arg.createStack(slot5, 0);
1756 inst.args.push(arg);
1757 arg = Arg.createTmp(Reg.xmm2);
1758 inst.args.push(arg);
1759 arg = Arg.createStack(slot1, 0);
1760 inst.args.push(arg);
1761 arg = Arg.createTmp(Reg.rdx);
1762 inst.args.push(arg);
1763 arg = Arg.createTmp(Reg.rcx);
1764 inst.args.push(arg);
1765 arg = Arg.createTmp(Reg.xmm3);
1766 inst.args.push(arg);
1767 arg = Arg.createTmp(Reg.xmm1);
1768 inst.args.push(arg);
1769 arg = Arg.createTmp(Reg.rax);
1770 inst.args.push(arg);
1771 arg = Arg.createTmp(Reg.xmm5);
1772 inst.args.push(arg);
1773 inst.patchHasNonArgEffects = true;
1774 inst.extraEarlyClobberedRegs = new Set();
1775 inst.extraClobberedRegs = new Set();
1776 inst.patchArgData = [];
1777 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1778 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1779 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1780 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1781 inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32});
1782 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
1783 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1784 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1785 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1786 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1787 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1788 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1789 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1790 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1791 bb22.append(inst);
1792 inst = new Inst(Branch32);
1793 arg = Arg.createRelCond(LessThan);
1794 inst.args.push(arg);
1795 arg = Arg.createTmp(Reg.rsi);
1796 inst.args.push(arg);
1797 arg = Arg.createImm(0);
1798 inst.args.push(arg);
1799 bb22.append(inst);
1800 bb23.successors.push(new FrequentedBlock(bb26, Normal));
1801 bb23.successors.push(new FrequentedBlock(bb24, Normal));
1802 bb23.predecessors.push(bb22);
1803 inst = new Inst(Branch32);
1804 arg = Arg.createRelCond(GreaterThanOrEqual);
1805 inst.args.push(arg);
1806 arg = Arg.createTmp(Reg.rsi);
1807 inst.args.push(arg);
1808 arg = Arg.createImm(400);
1809 inst.args.push(arg);
1810 bb23.append(inst);
1811 bb24.successors.push(new FrequentedBlock(bb27, Normal));
1812 bb24.predecessors.push(bb23);
1813 inst = new Inst(Patch);
1814 inst.args.push(arg);
1815 arg = Arg.createResCond(Overflow);
1816 inst.args.push(arg);
1817 arg = Arg.createTmp(Reg.r11);
1818 inst.args.push(arg);
1819 arg = Arg.createTmp(Reg.rsi);
1820 inst.args.push(arg);
1821 arg = Arg.createTmp(Reg.rbx);
1822 inst.args.push(arg);
1823 arg = Arg.createStack(slot5, 0);
1824 inst.args.push(arg);
1825 arg = Arg.createTmp(Reg.xmm2);
1826 inst.args.push(arg);
1827 arg = Arg.createStack(slot1, 0);
1828 inst.args.push(arg);
1829 arg = Arg.createTmp(Reg.rdx);
1830 inst.args.push(arg);
1831 arg = Arg.createTmp(Reg.rcx);
1832 inst.args.push(arg);
1833 arg = Arg.createTmp(Reg.xmm3);
1834 inst.args.push(arg);
1835 arg = Arg.createTmp(Reg.rax);
1836 inst.args.push(arg);
1837 arg = Arg.createTmp(Reg.xmm5);
1838 inst.args.push(arg);
1839 arg = Arg.createTmp(Reg.xmm1);
1840 inst.args.push(arg);
1841 arg = Arg.createTmp(Reg.r11);
1842 inst.args.push(arg);
1843 arg = Arg.createTmp(Reg.rsi);
1844 inst.args.push(arg);
1845 inst.patchHasNonArgEffects = true;
1846 inst.extraEarlyClobberedRegs = new Set();
1847 inst.extraClobberedRegs = new Set();
1848 inst.patchArgData = [];
1849 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1850 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1851 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1852 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1853 inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32});
1854 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
1855 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1856 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1857 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1858 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1859 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1860 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1861 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1862 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1863 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1864 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1865 bb24.append(inst);
1866 inst = new Inst(Patch);
1867 inst.args.push(arg);
1868 arg = Arg.createResCond(Overflow);
1869 inst.args.push(arg);
1870 arg = Arg.createTmp(Reg.rbx);
1871 inst.args.push(arg);
1872 arg = Arg.createImm(4);
1873 inst.args.push(arg);
1874 arg = Arg.createTmp(Reg.r15);
1875 inst.args.push(arg);
1876 arg = Arg.createStack(slot5, 0);
1877 inst.args.push(arg);
1878 arg = Arg.createTmp(Reg.xmm2);
1879 inst.args.push(arg);
1880 arg = Arg.createStack(slot1, 0);
1881 inst.args.push(arg);
1882 arg = Arg.createTmp(Reg.rdx);
1883 inst.args.push(arg);
1884 arg = Arg.createTmp(Reg.rcx);
1885 inst.args.push(arg);
1886 arg = Arg.createTmp(Reg.xmm3);
1887 inst.args.push(arg);
1888 arg = Arg.createTmp(Reg.rax);
1889 inst.args.push(arg);
1890 arg = Arg.createTmp(Reg.xmm5);
1891 inst.args.push(arg);
1892 arg = Arg.createTmp(Reg.xmm1);
1893 inst.args.push(arg);
1894 arg = Arg.createTmp(Reg.rbx);
1895 inst.args.push(arg);
1896 inst.patchHasNonArgEffects = true;
1897 inst.extraEarlyClobberedRegs = new Set();
1898 inst.extraClobberedRegs = new Set();
1899 inst.patchArgData = [];
1900 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1901 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1902 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1903 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1904 inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32});
1905 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
1906 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1907 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1908 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1909 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1910 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1911 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1912 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1913 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1914 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1915 bb24.append(inst);
1916 inst = new Inst(Add32);
1917 arg = Arg.createImm(3);
1918 inst.args.push(arg);
1919 arg = Arg.createTmp(Reg.r15);
1920 inst.args.push(arg);
1921 arg = Arg.createTmp(Reg.r14);
1922 inst.args.push(arg);
1923 bb24.append(inst);
1924 inst = new Inst(Patch);
1925 inst.args.push(arg);
1926 arg = Arg.createRelCond(AboveOrEqual);
1927 inst.args.push(arg);
1928 arg = Arg.createTmp(Reg.r15);
1929 inst.args.push(arg);
1930 arg = Arg.createTmp(Reg.r8);
1931 inst.args.push(arg);
1932 arg = Arg.createStack(slot5, 0);
1933 inst.args.push(arg);
1934 arg = Arg.createTmp(Reg.xmm2);
1935 inst.args.push(arg);
1936 arg = Arg.createStack(slot1, 0);
1937 inst.args.push(arg);
1938 arg = Arg.createTmp(Reg.rdx);
1939 inst.args.push(arg);
1940 arg = Arg.createTmp(Reg.rcx);
1941 inst.args.push(arg);
1942 arg = Arg.createTmp(Reg.xmm3);
1943 inst.args.push(arg);
1944 arg = Arg.createTmp(Reg.rax);
1945 inst.args.push(arg);
1946 arg = Arg.createTmp(Reg.xmm5);
1947 inst.args.push(arg);
1948 arg = Arg.createTmp(Reg.xmm1);
1949 inst.args.push(arg);
1950 arg = Arg.createTmp(Reg.r15);
1951 inst.args.push(arg);
1952 inst.patchHasNonArgEffects = true;
1953 inst.extraEarlyClobberedRegs = new Set();
1954 inst.extraClobberedRegs = new Set();
1955 inst.patchArgData = [];
1956 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1957 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1958 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1959 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1960 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1961 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1962 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1963 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1964 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1965 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1966 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1967 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1968 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1969 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1970 bb24.append(inst);
1971 inst = new Inst(Patch);
1972 inst.args.push(arg);
1973 arg = Arg.createRelCond(AboveOrEqual);
1974 inst.args.push(arg);
1975 arg = Arg.createTmp(Reg.r14);
1976 inst.args.push(arg);
1977 arg = Arg.createTmp(Reg.r8);
1978 inst.args.push(arg);
1979 arg = Arg.createStack(slot5, 0);
1980 inst.args.push(arg);
1981 arg = Arg.createTmp(Reg.xmm2);
1982 inst.args.push(arg);
1983 arg = Arg.createStack(slot1, 0);
1984 inst.args.push(arg);
1985 arg = Arg.createTmp(Reg.rdx);
1986 inst.args.push(arg);
1987 arg = Arg.createTmp(Reg.rcx);
1988 inst.args.push(arg);
1989 arg = Arg.createTmp(Reg.xmm3);
1990 inst.args.push(arg);
1991 arg = Arg.createTmp(Reg.rax);
1992 inst.args.push(arg);
1993 arg = Arg.createTmp(Reg.xmm5);
1994 inst.args.push(arg);
1995 arg = Arg.createTmp(Reg.xmm1);
1996 inst.args.push(arg);
1997 arg = Arg.createTmp(Reg.r15);
1998 inst.args.push(arg);
1999 inst.patchHasNonArgEffects = true;
2000 inst.extraEarlyClobberedRegs = new Set();
2001 inst.extraClobberedRegs = new Set();
2002 inst.patchArgData = [];
2003 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2004 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2005 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2006 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2007 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2008 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2009 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2010 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2011 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2012 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2013 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2014 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2015 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2016 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2017 bb24.append(inst);
2018 inst = new Inst(MoveDouble);
2019 arg = Arg.createIndex(Reg.r9, Reg.r15, 8, 0);
2020 inst.args.push(arg);
2021 arg = Arg.createTmp(Reg.xmm0);
2022 inst.args.push(arg);
2023 bb24.append(inst);
2024 inst = new Inst(Move32);
2025 arg = Arg.createTmp(Reg.rcx);
2026 inst.args.push(arg);
2027 arg = Arg.createTmp(Reg.rsi);
2028 inst.args.push(arg);
2029 bb24.append(inst);
2030 inst = new Inst(Rshift32);
2031 arg = Arg.createImm(31);
2032 inst.args.push(arg);
2033 arg = Arg.createTmp(Reg.rsi);
2034 inst.args.push(arg);
2035 bb24.append(inst);
2036 inst = new Inst(Add32);
2037 arg = Arg.createTmp(Reg.rcx);
2038 inst.args.push(arg);
2039 arg = Arg.createTmp(Reg.rsi);
2040 inst.args.push(arg);
2041 arg = Arg.createTmp(Reg.rbx);
2042 inst.args.push(arg);
2043 bb24.append(inst);
2044 inst = new Inst(Xor32);
2045 arg = Arg.createTmp(Reg.rsi);
2046 inst.args.push(arg);
2047 arg = Arg.createTmp(Reg.rbx);
2048 inst.args.push(arg);
2049 arg = Arg.createTmp(Reg.rbx);
2050 inst.args.push(arg);
2051 bb24.append(inst);
2052 inst = new Inst(Patch);
2053 inst.args.push(arg);
2054 arg = Arg.createRelCond(LessThan);
2055 inst.args.push(arg);
2056 arg = Arg.createTmp(Reg.rbx);
2057 inst.args.push(arg);
2058 arg = Arg.createImm(0);
2059 inst.args.push(arg);
2060 arg = Arg.createStack(slot5, 0);
2061 inst.args.push(arg);
2062 arg = Arg.createTmp(Reg.xmm2);
2063 inst.args.push(arg);
2064 arg = Arg.createStack(slot1, 0);
2065 inst.args.push(arg);
2066 arg = Arg.createTmp(Reg.rdx);
2067 inst.args.push(arg);
2068 arg = Arg.createTmp(Reg.rcx);
2069 inst.args.push(arg);
2070 arg = Arg.createTmp(Reg.xmm3);
2071 inst.args.push(arg);
2072 arg = Arg.createTmp(Reg.rax);
2073 inst.args.push(arg);
2074 arg = Arg.createTmp(Reg.xmm5);
2075 inst.args.push(arg);
2076 arg = Arg.createTmp(Reg.xmm1);
2077 inst.args.push(arg);
2078 arg = Arg.createTmp(Reg.xmm0);
2079 inst.args.push(arg);
2080 arg = Arg.createTmp(Reg.rdi);
2081 inst.args.push(arg);
2082 arg = Arg.createTmp(Reg.rcx);
2083 inst.args.push(arg);
2084 inst.patchHasNonArgEffects = true;
2085 inst.extraEarlyClobberedRegs = new Set();
2086 inst.extraClobberedRegs = new Set();
2087 inst.patchArgData = [];
2088 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2089 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2090 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2091 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2092 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2093 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2094 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2095 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2096 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2097 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2098 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2099 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2100 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2101 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2102 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2103 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2104 bb24.append(inst);
2105 inst = new Inst(Patch);
2106 inst.args.push(arg);
2107 arg = Arg.createRelCond(AboveOrEqual);
2108 inst.args.push(arg);
2109 arg = Arg.createTmp(Reg.rbx);
2110 inst.args.push(arg);
2111 arg = Arg.createTmp(Reg.r13);
2112 inst.args.push(arg);
2113 arg = Arg.createStack(slot5, 0);
2114 inst.args.push(arg);
2115 arg = Arg.createTmp(Reg.xmm2);
2116 inst.args.push(arg);
2117 arg = Arg.createStack(slot1, 0);
2118 inst.args.push(arg);
2119 arg = Arg.createTmp(Reg.rdx);
2120 inst.args.push(arg);
2121 arg = Arg.createTmp(Reg.rcx);
2122 inst.args.push(arg);
2123 arg = Arg.createTmp(Reg.xmm3);
2124 inst.args.push(arg);
2125 arg = Arg.createTmp(Reg.rax);
2126 inst.args.push(arg);
2127 arg = Arg.createTmp(Reg.xmm5);
2128 inst.args.push(arg);
2129 arg = Arg.createTmp(Reg.xmm1);
2130 inst.args.push(arg);
2131 arg = Arg.createTmp(Reg.xmm0);
2132 inst.args.push(arg);
2133 arg = Arg.createTmp(Reg.rdi);
2134 inst.args.push(arg);
2135 arg = Arg.createTmp(Reg.rbx);
2136 inst.args.push(arg);
2137 inst.patchHasNonArgEffects = true;
2138 inst.extraEarlyClobberedRegs = new Set();
2139 inst.extraClobberedRegs = new Set();
2140 inst.patchArgData = [];
2141 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2142 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2143 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2144 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2145 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2146 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2147 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2148 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2149 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2150 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2151 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2152 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2153 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2154 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2155 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2156 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2157 bb24.append(inst);
2158 inst = new Inst(MoveDouble);
2159 arg = Arg.createIndex(Reg.r12, Reg.rbx, 8, 0);
2160 inst.args.push(arg);
2161 arg = Arg.createTmp(Reg.xmm4);
2162 inst.args.push(arg);
2163 bb24.append(inst);
2164 inst = new Inst(MulDouble);
2165 arg = Arg.createTmp(Reg.xmm0);
2166 inst.args.push(arg);
2167 arg = Arg.createTmp(Reg.xmm4);
2168 inst.args.push(arg);
2169 arg = Arg.createTmp(Reg.xmm0);
2170 inst.args.push(arg);
2171 bb24.append(inst);
2172 inst = new Inst(AddDouble);
2173 arg = Arg.createTmp(Reg.xmm1);
2174 inst.args.push(arg);
2175 arg = Arg.createTmp(Reg.xmm0);
2176 inst.args.push(arg);
2177 arg = Arg.createTmp(Reg.xmm1);
2178 inst.args.push(arg);
2179 bb24.append(inst);
2180 inst = new Inst(Add32);
2181 arg = Arg.createImm(1);
2182 inst.args.push(arg);
2183 arg = Arg.createTmp(Reg.r15);
2184 inst.args.push(arg);
2185 arg = Arg.createTmp(Reg.rsi);
2186 inst.args.push(arg);
2187 bb24.append(inst);
2188 inst = new Inst(MulDouble);
2189 arg = Arg.createIndex(Reg.r9, Reg.rsi, 8, 0);
2190 inst.args.push(arg);
2191 arg = Arg.createTmp(Reg.xmm4);
2192 inst.args.push(arg);
2193 arg = Arg.createTmp(Reg.xmm0);
2194 inst.args.push(arg);
2195 bb24.append(inst);
2196 inst = new Inst(AddDouble);
2197 arg = Arg.createTmp(Reg.xmm2);
2198 inst.args.push(arg);
2199 arg = Arg.createTmp(Reg.xmm0);
2200 inst.args.push(arg);
2201 arg = Arg.createTmp(Reg.xmm2);
2202 inst.args.push(arg);
2203 bb24.append(inst);
2204 inst = new Inst(Add32);
2205 arg = Arg.createImm(2);
2206 inst.args.push(arg);
2207 arg = Arg.createTmp(Reg.r15);
2208 inst.args.push(arg);
2209 arg = Arg.createTmp(Reg.r15);
2210 inst.args.push(arg);
2211 bb24.append(inst);
2212 inst = new Inst(MulDouble);
2213 arg = Arg.createIndex(Reg.r9, Reg.r15, 8, 0);
2214 inst.args.push(arg);
2215 arg = Arg.createTmp(Reg.xmm4);
2216 inst.args.push(arg);
2217 arg = Arg.createTmp(Reg.xmm0);
2218 inst.args.push(arg);
2219 bb24.append(inst);
2220 inst = new Inst(AddDouble);
2221 arg = Arg.createTmp(Reg.xmm3);
2222 inst.args.push(arg);
2223 arg = Arg.createTmp(Reg.xmm0);
2224 inst.args.push(arg);
2225 arg = Arg.createTmp(Reg.xmm3);
2226 inst.args.push(arg);
2227 bb24.append(inst);
2228 inst = new Inst(MulDouble);
2229 arg = Arg.createIndex(Reg.r9, Reg.r14, 8, 0);
2230 inst.args.push(arg);
2231 arg = Arg.createTmp(Reg.xmm4);
2232 inst.args.push(arg);
2233 arg = Arg.createTmp(Reg.xmm4);
2234 inst.args.push(arg);
2235 bb24.append(inst);
2236 inst = new Inst(AddDouble);
2237 arg = Arg.createTmp(Reg.xmm5);
2238 inst.args.push(arg);
2239 arg = Arg.createTmp(Reg.xmm4);
2240 inst.args.push(arg);
2241 arg = Arg.createTmp(Reg.xmm5);
2242 inst.args.push(arg);
2243 bb24.append(inst);
2244 inst = new Inst(Jump);
2245 bb24.append(inst);
2246 bb25.successors.push(new FrequentedBlock(bb27, Normal));
2247 bb25.predecessors.push(bb22);
2248 inst = new Inst(Jump);
2249 bb25.append(inst);
2250 bb26.successors.push(new FrequentedBlock(bb27, Normal));
2251 bb26.predecessors.push(bb23);
2252 inst = new Inst(Jump);
2253 bb26.append(inst);
2254 bb27.successors.push(new FrequentedBlock(bb21, Normal));
2255 bb27.successors.push(new FrequentedBlock(bb30, Normal));
2256 bb27.predecessors.push(bb24);
2257 bb27.predecessors.push(bb26);
2258 bb27.predecessors.push(bb25);
2259 inst = new Inst(Move32);
2260 arg = Arg.createTmp(Reg.rcx);
2261 inst.args.push(arg);
2262 arg = Arg.createTmp(Reg.rsi);
2263 inst.args.push(arg);
2264 bb27.append(inst);
2265 inst = new Inst(Patch);
2266 inst.args.push(arg);
2267 arg = Arg.createResCond(Overflow);
2268 inst.args.push(arg);
2269 arg = Arg.createImm(1);
2270 inst.args.push(arg);
2271 arg = Arg.createTmp(Reg.rsi);
2272 inst.args.push(arg);
2273 arg = Arg.createStack(slot5, 0);
2274 inst.args.push(arg);
2275 arg = Arg.createTmp(Reg.xmm2);
2276 inst.args.push(arg);
2277 arg = Arg.createStack(slot1, 0);
2278 inst.args.push(arg);
2279 arg = Arg.createTmp(Reg.rdx);
2280 inst.args.push(arg);
2281 arg = Arg.createTmp(Reg.rcx);
2282 inst.args.push(arg);
2283 arg = Arg.createTmp(Reg.xmm3);
2284 inst.args.push(arg);
2285 arg = Arg.createTmp(Reg.xmm1);
2286 inst.args.push(arg);
2287 arg = Arg.createTmp(Reg.rax);
2288 inst.args.push(arg);
2289 arg = Arg.createTmp(Reg.xmm5);
2290 inst.args.push(arg);
2291 inst.patchHasNonArgEffects = true;
2292 inst.extraEarlyClobberedRegs = new Set();
2293 inst.extraClobberedRegs = new Set();
2294 inst.patchArgData = [];
2295 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2296 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2297 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2298 inst.patchArgData.push({role: Arg.UseZDef, type: GP, width: 32});
2299 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
2300 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2301 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2302 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2303 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2304 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2305 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2306 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2307 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2308 bb27.append(inst);
2309 inst = new Inst(Branch32);
2310 arg = Arg.createRelCond(LessThan);
2311 inst.args.push(arg);
2312 arg = Arg.createTmp(Reg.rsi);
2313 inst.args.push(arg);
2314 arg = Arg.createImm(7);
2315 inst.args.push(arg);
2316 bb27.append(inst);
2317 bb28.successors.push(new FrequentedBlock(bb31, Normal));
2318 bb28.predecessors.push(bb15);
2319 inst = new Inst(Jump);
2320 bb28.append(inst);
2321 bb29.successors.push(new FrequentedBlock(bb31, Normal));
2322 bb29.predecessors.push(bb16);
2323 inst = new Inst(Jump);
2324 bb29.append(inst);
2325 bb30.successors.push(new FrequentedBlock(bb31, Normal));
2326 bb30.predecessors.push(bb27);
2327 inst = new Inst(Move);
2328 arg = Arg.createStack(slot1, 0);
2329 inst.args.push(arg);
2330 arg = Arg.createTmp(Reg.rcx);
2331 inst.args.push(arg);
2332 bb30.append(inst);
2333 inst = new Inst(Jump);
2334 bb30.append(inst);
2335 bb31.successors.push(new FrequentedBlock(bb14, Normal));
2336 bb31.successors.push(new FrequentedBlock(bb32, Normal));
2337 bb31.predecessors.push(bb30);
2338 bb31.predecessors.push(bb29);
2339 bb31.predecessors.push(bb28);
2340 inst = new Inst(Move32);
2341 arg = Arg.createTmp(Reg.rax);
2342 inst.args.push(arg);
2343 arg = Arg.createTmp(Reg.rsi);
2344 inst.args.push(arg);
2345 bb31.append(inst);
2346 inst = new Inst(Patch);
2347 inst.args.push(arg);
2348 arg = Arg.createResCond(Overflow);
2349 inst.args.push(arg);
2350 arg = Arg.createImm(1);
2351 inst.args.push(arg);
2352 arg = Arg.createTmp(Reg.rsi);
2353 inst.args.push(arg);
2354 arg = Arg.createStack(slot5, 0);
2355 inst.args.push(arg);
2356 arg = Arg.createTmp(Reg.xmm2);
2357 inst.args.push(arg);
2358 arg = Arg.createTmp(Reg.rcx);
2359 inst.args.push(arg);
2360 arg = Arg.createTmp(Reg.rdx);
2361 inst.args.push(arg);
2362 arg = Arg.createTmp(Reg.xmm3);
2363 inst.args.push(arg);
2364 arg = Arg.createTmp(Reg.xmm1);
2365 inst.args.push(arg);
2366 arg = Arg.createTmp(Reg.rax);
2367 inst.args.push(arg);
2368 arg = Arg.createTmp(Reg.xmm5);
2369 inst.args.push(arg);
2370 inst.patchHasNonArgEffects = true;
2371 inst.extraEarlyClobberedRegs = new Set();
2372 inst.extraClobberedRegs = new Set();
2373 inst.patchArgData = [];
2374 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2375 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2376 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2377 inst.patchArgData.push({role: Arg.UseZDef, type: GP, width: 32});
2378 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
2379 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2380 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2381 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2382 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2383 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2384 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2385 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2386 bb31.append(inst);
2387 inst = new Inst(Branch32);
2388 arg = Arg.createRelCond(LessThan);
2389 inst.args.push(arg);
2390 arg = Arg.createTmp(Reg.rsi);
2391 inst.args.push(arg);
2392 arg = Arg.createImm(7);
2393 inst.args.push(arg);
2394 bb31.append(inst);
2395 bb32.successors.push(new FrequentedBlock(bb34, Normal));
2396 bb32.successors.push(new FrequentedBlock(bb33, Rare));
2397 bb32.predecessors.push(bb31);
2398 inst = new Inst(Patch);
2399 inst.args.push(arg);
2400 arg = Arg.createResCond(Overflow);
2401 inst.args.push(arg);
2402 arg = Arg.createTmp(Reg.rcx);
2403 inst.args.push(arg);
2404 arg = Arg.createImm(400);
2405 inst.args.push(arg);
2406 arg = Arg.createTmp(Reg.rax);
2407 inst.args.push(arg);
2408 arg = Arg.createStack(slot5, 0);
2409 inst.args.push(arg);
2410 arg = Arg.createTmp(Reg.xmm2);
2411 inst.args.push(arg);
2412 arg = Arg.createTmp(Reg.rcx);
2413 inst.args.push(arg);
2414 arg = Arg.createTmp(Reg.rdx);
2415 inst.args.push(arg);
2416 arg = Arg.createTmp(Reg.xmm3);
2417 inst.args.push(arg);
2418 arg = Arg.createTmp(Reg.xmm1);
2419 inst.args.push(arg);
2420 arg = Arg.createTmp(Reg.xmm5);
2421 inst.args.push(arg);
2422 inst.patchHasNonArgEffects = true;
2423 inst.extraEarlyClobberedRegs = new Set();
2424 inst.extraClobberedRegs = new Set();
2425 inst.patchArgData = [];
2426 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2427 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2428 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2429 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2430 inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32});
2431 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
2432 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2433 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2434 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2435 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2436 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2437 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2438 bb32.append(inst);
2439 inst = new Inst(BranchTest32);
2440 arg = Arg.createResCond(NonZero);
2441 inst.args.push(arg);
2442 arg = Arg.createTmp(Reg.rax);
2443 inst.args.push(arg);
2444 arg = Arg.createTmp(Reg.rax);
2445 inst.args.push(arg);
2446 bb32.append(inst);
2447 bb33.successors.push(new FrequentedBlock(bb34, Normal));
2448 bb33.predecessors.push(bb32);
2449 inst = new Inst(Patch);
2450 inst.args.push(arg);
2451 arg = Arg.createRelCond(LessThan);
2452 inst.args.push(arg);
2453 arg = Arg.createTmp(Reg.rcx);
2454 inst.args.push(arg);
2455 arg = Arg.createImm(0);
2456 inst.args.push(arg);
2457 arg = Arg.createStack(slot5, 0);
2458 inst.args.push(arg);
2459 arg = Arg.createTmp(Reg.xmm2);
2460 inst.args.push(arg);
2461 arg = Arg.createTmp(Reg.rcx);
2462 inst.args.push(arg);
2463 arg = Arg.createTmp(Reg.rdx);
2464 inst.args.push(arg);
2465 arg = Arg.createTmp(Reg.xmm3);
2466 inst.args.push(arg);
2467 arg = Arg.createTmp(Reg.xmm1);
2468 inst.args.push(arg);
2469 arg = Arg.createTmp(Reg.xmm5);
2470 inst.args.push(arg);
2471 inst.patchHasNonArgEffects = true;
2472 inst.extraEarlyClobberedRegs = new Set();
2473 inst.extraClobberedRegs = new Set();
2474 inst.patchArgData = [];
2475 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2476 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2477 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2478 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2479 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2480 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2481 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2482 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2483 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2484 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2485 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2486 bb33.append(inst);
2487 inst = new Inst(Jump);
2488 bb33.append(inst);
2489 bb34.successors.push(new FrequentedBlock(bb12, Normal));
2490 bb34.successors.push(new FrequentedBlock(bb35, Normal));
2491 bb34.predecessors.push(bb32);
2492 bb34.predecessors.push(bb33);
2493 inst = new Inst(Patch);
2494 inst.args.push(arg);
2495 arg = Arg.createResCond(Overflow);
2496 inst.args.push(arg);
2497 arg = Arg.createTmp(Reg.rdx);
2498 inst.args.push(arg);
2499 arg = Arg.createTmp(Reg.rax);
2500 inst.args.push(arg);
2501 arg = Arg.createTmp(Reg.rdi);
2502 inst.args.push(arg);
2503 arg = Arg.createStack(slot5, 0);
2504 inst.args.push(arg);
2505 arg = Arg.createTmp(Reg.xmm2);
2506 inst.args.push(arg);
2507 arg = Arg.createTmp(Reg.rcx);
2508 inst.args.push(arg);
2509 arg = Arg.createTmp(Reg.rdx);
2510 inst.args.push(arg);
2511 arg = Arg.createTmp(Reg.xmm3);
2512 inst.args.push(arg);
2513 arg = Arg.createTmp(Reg.xmm1);
2514 inst.args.push(arg);
2515 arg = Arg.createTmp(Reg.xmm5);
2516 inst.args.push(arg);
2517 arg = Arg.createTmp(Reg.rax);
2518 inst.args.push(arg);
2519 inst.patchHasNonArgEffects = true;
2520 inst.extraEarlyClobberedRegs = new Set();
2521 inst.extraClobberedRegs = new Set();
2522 inst.patchArgData = [];
2523 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2524 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2525 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2526 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2527 inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32});
2528 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
2529 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2530 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2531 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2532 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2533 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2534 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2535 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2536 bb34.append(inst);
2537 inst = new Inst(Patch);
2538 inst.args.push(arg);
2539 arg = Arg.createResCond(Overflow);
2540 inst.args.push(arg);
2541 arg = Arg.createTmp(Reg.rdi);
2542 inst.args.push(arg);
2543 arg = Arg.createImm(4);
2544 inst.args.push(arg);
2545 arg = Arg.createTmp(Reg.rsi);
2546 inst.args.push(arg);
2547 arg = Arg.createStack(slot5, 0);
2548 inst.args.push(arg);
2549 arg = Arg.createTmp(Reg.xmm2);
2550 inst.args.push(arg);
2551 arg = Arg.createTmp(Reg.rcx);
2552 inst.args.push(arg);
2553 arg = Arg.createTmp(Reg.rdx);
2554 inst.args.push(arg);
2555 arg = Arg.createTmp(Reg.xmm3);
2556 inst.args.push(arg);
2557 arg = Arg.createTmp(Reg.xmm1);
2558 inst.args.push(arg);
2559 arg = Arg.createTmp(Reg.xmm5);
2560 inst.args.push(arg);
2561 arg = Arg.createTmp(Reg.rdi);
2562 inst.args.push(arg);
2563 inst.patchHasNonArgEffects = true;
2564 inst.extraEarlyClobberedRegs = new Set();
2565 inst.extraClobberedRegs = new Set();
2566 inst.patchArgData = [];
2567 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2568 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2569 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2570 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2571 inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32});
2572 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
2573 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2574 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2575 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2576 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2577 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2578 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2579 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2580 bb34.append(inst);
2581 inst = new Inst(DivDouble);
2582 arg = Arg.createTmp(Reg.xmm6);
2583 inst.args.push(arg);
2584 arg = Arg.createTmp(Reg.xmm1);
2585 inst.args.push(arg);
2586 bb34.append(inst);
2587 inst = new Inst(Patch);
2588 inst.args.push(arg);
2589 arg = Arg.createRelCond(AboveOrEqual);
2590 inst.args.push(arg);
2591 arg = Arg.createTmp(Reg.rsi);
2592 inst.args.push(arg);
2593 arg = Arg.createTmp(Reg.r8);
2594 inst.args.push(arg);
2595 arg = Arg.createStack(slot5, 0);
2596 inst.args.push(arg);
2597 arg = Arg.createTmp(Reg.xmm2);
2598 inst.args.push(arg);
2599 arg = Arg.createTmp(Reg.rcx);
2600 inst.args.push(arg);
2601 arg = Arg.createTmp(Reg.rdx);
2602 inst.args.push(arg);
2603 arg = Arg.createTmp(Reg.xmm3);
2604 inst.args.push(arg);
2605 arg = Arg.createTmp(Reg.xmm5);
2606 inst.args.push(arg);
2607 arg = Arg.createTmp(Reg.rsi);
2608 inst.args.push(arg);
2609 arg = Arg.createTmp(Reg.xmm1);
2610 inst.args.push(arg);
2611 inst.patchHasNonArgEffects = true;
2612 inst.extraEarlyClobberedRegs = new Set();
2613 inst.extraClobberedRegs = new Set();
2614 inst.patchArgData = [];
2615 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2616 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2617 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2618 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2619 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2620 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2621 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2622 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2623 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2624 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2625 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2626 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2627 bb34.append(inst);
2628 inst = new Inst(Patch);
2629 inst.args.push(arg);
2630 arg = Arg.createDoubleCond(DoubleNotEqualOrUnordered);
2631 inst.args.push(arg);
2632 arg = Arg.createTmp(Reg.xmm1);
2633 inst.args.push(arg);
2634 arg = Arg.createTmp(Reg.xmm1);
2635 inst.args.push(arg);
2636 arg = Arg.createTmp(Reg.xmm1);
2637 inst.args.push(arg);
2638 arg = Arg.createStack(slot5, 0);
2639 inst.args.push(arg);
2640 arg = Arg.createTmp(Reg.xmm2);
2641 inst.args.push(arg);
2642 arg = Arg.createTmp(Reg.rcx);
2643 inst.args.push(arg);
2644 arg = Arg.createTmp(Reg.rdx);
2645 inst.args.push(arg);
2646 arg = Arg.createTmp(Reg.xmm3);
2647 inst.args.push(arg);
2648 arg = Arg.createTmp(Reg.xmm5);
2649 inst.args.push(arg);
2650 arg = Arg.createTmp(Reg.rsi);
2651 inst.args.push(arg);
2652 arg = Arg.createTmp(Reg.xmm1);
2653 inst.args.push(arg);
2654 inst.patchHasNonArgEffects = true;
2655 inst.extraEarlyClobberedRegs = new Set();
2656 inst.extraClobberedRegs = new Set();
2657 inst.patchArgData = [];
2658 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2659 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2660 inst.patchArgData.push({role: Arg.Use, type: FP, width: 64});
2661 inst.patchArgData.push({role: Arg.Use, type: FP, width: 64});
2662 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2663 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2664 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2665 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2666 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2667 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2668 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2669 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2670 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2671 bb34.append(inst);
2672 inst = new Inst(MoveDouble);
2673 arg = Arg.createTmp(Reg.xmm1);
2674 inst.args.push(arg);
2675 arg = Arg.createIndex(Reg.r9, Reg.rsi, 8, 0);
2676 inst.args.push(arg);
2677 bb34.append(inst);
2678 inst = new Inst(Move32);
2679 arg = Arg.createTmp(Reg.rsi);
2680 inst.args.push(arg);
2681 arg = Arg.createTmp(Reg.rdi);
2682 inst.args.push(arg);
2683 bb34.append(inst);
2684 inst = new Inst(Patch);
2685 inst.args.push(arg);
2686 arg = Arg.createResCond(Overflow);
2687 inst.args.push(arg);
2688 arg = Arg.createImm(1);
2689 inst.args.push(arg);
2690 arg = Arg.createTmp(Reg.rdi);
2691 inst.args.push(arg);
2692 arg = Arg.createStack(slot5, 0);
2693 inst.args.push(arg);
2694 arg = Arg.createTmp(Reg.xmm2);
2695 inst.args.push(arg);
2696 arg = Arg.createTmp(Reg.rcx);
2697 inst.args.push(arg);
2698 arg = Arg.createTmp(Reg.rdx);
2699 inst.args.push(arg);
2700 arg = Arg.createTmp(Reg.xmm3);
2701 inst.args.push(arg);
2702 arg = Arg.createTmp(Reg.xmm5);
2703 inst.args.push(arg);
2704 arg = Arg.createTmp(Reg.rsi);
2705 inst.args.push(arg);
2706 inst.patchHasNonArgEffects = true;
2707 inst.extraEarlyClobberedRegs = new Set();
2708 inst.extraClobberedRegs = new Set();
2709 inst.patchArgData = [];
2710 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2711 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2712 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2713 inst.patchArgData.push({role: Arg.UseZDef, type: GP, width: 32});
2714 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
2715 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2716 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2717 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2718 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2719 inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2720 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2721 bb34.append(inst);
2722 inst = new Inst(DivDouble);
2723 arg = Arg.createTmp(Reg.xmm6);
2724 inst.args.push(arg);
2725 arg = Arg.createTmp(Reg.xmm2);
2726 inst.args.push(arg);
2727 bb34.append(inst);
2728 inst = new Inst(Add32);
2729 arg = Arg.createImm(1);
2730 inst.args.push(arg);
2731 arg = Arg.createTmp(Reg.rsi);
2732 inst.args.push(arg);
2733 arg = Arg.createTmp(Reg.r11);
2734 inst.args.push(arg);
2735 bb34.append(inst);
2736 inst = new Inst(Add32);
2737 arg = Arg.createImm(3);
2738 inst.args.push(arg);
2739 arg = Arg.createTmp(Reg.rsi);
2740 inst.args.push(arg);
2741 arg = Arg.createTmp(Reg.rax);
2742 inst.args.push(arg);
2743 bb34.append(inst);
2744 inst = new Inst(Patch);
2745 inst.args.push(arg);
2746 arg = Arg.createRelCond(AboveOrEqual);
2747 inst.args.push(arg);
2748 arg = Arg.createTmp(Reg.r11);
2749 inst.args.push(arg);
2750 arg = Arg.createTmp(Reg.r8);
2751 inst.args.push(arg);
2752 arg = Arg.createStack(slot5, 0);
2753 inst.args.push(arg);
2754 arg = Arg.createTmp(Reg.rcx);
2755 inst.args.push(arg);
2756 arg = Arg.createTmp(Reg.rdx);
2757 inst.args.push(arg);
2758 arg = Arg.createTmp(Reg.xmm3);
2759 inst.args.push(arg);
2760 arg = Arg.createTmp(Reg.xmm5);
2761 inst.args.push(arg);
2762 arg = Arg.createTmp(Reg.rdi);
2763 inst.args.push(arg);
2764 arg = Arg.createTmp(Reg.xmm2);
2765 inst.args.push(arg);
2766 inst.patchHasNonArgEffects = true;
2767 inst.extraEarlyClobberedRegs = new Set();
2768 inst.extraClobberedRegs = new Set();
2769 inst.patchArgData = [];
2770 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2771 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2772 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2773 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2774 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2775 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2776 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2777 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2778 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2779 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2780 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2781 bb34.append(inst);
2782 inst = new Inst(Patch);
2783 inst.args.push(arg);
2784 arg = Arg.createRelCond(AboveOrEqual);
2785 inst.args.push(arg);
2786 arg = Arg.createTmp(Reg.rax);
2787 inst.args.push(arg);
2788 arg = Arg.createTmp(Reg.r8);
2789 inst.args.push(arg);
2790 arg = Arg.createStack(slot5, 0);
2791 inst.args.push(arg);
2792 arg = Arg.createTmp(Reg.rcx);
2793 inst.args.push(arg);
2794 arg = Arg.createTmp(Reg.rdx);
2795 inst.args.push(arg);
2796 arg = Arg.createTmp(Reg.xmm3);
2797 inst.args.push(arg);
2798 arg = Arg.createTmp(Reg.xmm5);
2799 inst.args.push(arg);
2800 arg = Arg.createTmp(Reg.rdi);
2801 inst.args.push(arg);
2802 arg = Arg.createTmp(Reg.xmm2);
2803 inst.args.push(arg);
2804 inst.patchHasNonArgEffects = true;
2805 inst.extraEarlyClobberedRegs = new Set();
2806 inst.extraClobberedRegs = new Set();
2807 inst.patchArgData = [];
2808 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2809 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2810 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2811 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2812 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2813 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2814 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2815 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2816 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2817 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2818 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2819 bb34.append(inst);
2820 inst = new Inst(Patch);
2821 inst.args.push(arg);
2822 arg = Arg.createDoubleCond(DoubleNotEqualOrUnordered);
2823 inst.args.push(arg);
2824 arg = Arg.createTmp(Reg.xmm2);
2825 inst.args.push(arg);
2826 arg = Arg.createTmp(Reg.xmm2);
2827 inst.args.push(arg);
2828 arg = Arg.createTmp(Reg.xmm2);
2829 inst.args.push(arg);
2830 arg = Arg.createStack(slot5, 0);
2831 inst.args.push(arg);
2832 arg = Arg.createTmp(Reg.rcx);
2833 inst.args.push(arg);
2834 arg = Arg.createTmp(Reg.rdx);
2835 inst.args.push(arg);
2836 arg = Arg.createTmp(Reg.xmm3);
2837 inst.args.push(arg);
2838 arg = Arg.createTmp(Reg.xmm5);
2839 inst.args.push(arg);
2840 arg = Arg.createTmp(Reg.rdi);
2841 inst.args.push(arg);
2842 arg = Arg.createTmp(Reg.xmm2);
2843 inst.args.push(arg);
2844 inst.patchHasNonArgEffects = true;
2845 inst.extraEarlyClobberedRegs = new Set();
2846 inst.extraClobberedRegs = new Set();
2847 inst.patchArgData = [];
2848 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2849 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2850 inst.patchArgData.push({role: Arg.Use, type: FP, width: 64});
2851 inst.patchArgData.push({role: Arg.Use, type: FP, width: 64});
2852 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2853 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2854 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2855 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2856 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2857 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2858 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2859 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2860 bb34.append(inst);
2861 inst = new Inst(MoveDouble);
2862 arg = Arg.createTmp(Reg.xmm2);
2863 inst.args.push(arg);
2864 arg = Arg.createIndex(Reg.r9, Reg.rdi, 8, 0);
2865 inst.args.push(arg);
2866 bb34.append(inst);
2867 inst = new Inst(Add32);
2868 arg = Arg.createImm(2);
2869 inst.args.push(arg);
2870 arg = Arg.createTmp(Reg.rsi);
2871 inst.args.push(arg);
2872 arg = Arg.createTmp(Reg.rsi);
2873 inst.args.push(arg);
2874 bb34.append(inst);
2875 inst = new Inst(DivDouble);
2876 arg = Arg.createTmp(Reg.xmm6);
2877 inst.args.push(arg);
2878 arg = Arg.createTmp(Reg.xmm3);
2879 inst.args.push(arg);
2880 bb34.append(inst);
2881 inst = new Inst(Patch);
2882 inst.args.push(arg);
2883 arg = Arg.createDoubleCond(DoubleNotEqualOrUnordered);
2884 inst.args.push(arg);
2885 arg = Arg.createTmp(Reg.xmm3);
2886 inst.args.push(arg);
2887 arg = Arg.createTmp(Reg.xmm3);
2888 inst.args.push(arg);
2889 arg = Arg.createTmp(Reg.xmm3);
2890 inst.args.push(arg);
2891 arg = Arg.createStack(slot5, 0);
2892 inst.args.push(arg);
2893 arg = Arg.createTmp(Reg.rcx);
2894 inst.args.push(arg);
2895 arg = Arg.createTmp(Reg.rdx);
2896 inst.args.push(arg);
2897 arg = Arg.createTmp(Reg.xmm5);
2898 inst.args.push(arg);
2899 arg = Arg.createTmp(Reg.rsi);
2900 inst.args.push(arg);
2901 arg = Arg.createTmp(Reg.xmm3);
2902 inst.args.push(arg);
2903 inst.patchHasNonArgEffects = true;
2904 inst.extraEarlyClobberedRegs = new Set();
2905 inst.extraClobberedRegs = new Set();
2906 inst.patchArgData = [];
2907 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2908 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2909 inst.patchArgData.push({role: Arg.Use, type: FP, width: 64});
2910 inst.patchArgData.push({role: Arg.Use, type: FP, width: 64});
2911 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2912 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2913 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2914 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2915 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2916 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2917 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2918 bb34.append(inst);
2919 inst = new Inst(MoveDouble);
2920 arg = Arg.createTmp(Reg.xmm3);
2921 inst.args.push(arg);
2922 arg = Arg.createIndex(Reg.r9, Reg.rsi, 8, 0);
2923 inst.args.push(arg);
2924 bb34.append(inst);
2925 inst = new Inst(DivDouble);
2926 arg = Arg.createTmp(Reg.xmm6);
2927 inst.args.push(arg);
2928 arg = Arg.createTmp(Reg.xmm5);
2929 inst.args.push(arg);
2930 bb34.append(inst);
2931 inst = new Inst(Patch);
2932 inst.args.push(arg);
2933 arg = Arg.createDoubleCond(DoubleNotEqualOrUnordered);
2934 inst.args.push(arg);
2935 arg = Arg.createTmp(Reg.xmm5);
2936 inst.args.push(arg);
2937 arg = Arg.createTmp(Reg.xmm5);
2938 inst.args.push(arg);
2939 arg = Arg.createTmp(Reg.xmm5);
2940 inst.args.push(arg);
2941 arg = Arg.createStack(slot5, 0);
2942 inst.args.push(arg);
2943 arg = Arg.createTmp(Reg.rcx);
2944 inst.args.push(arg);
2945 arg = Arg.createTmp(Reg.rdx);
2946 inst.args.push(arg);
2947 arg = Arg.createTmp(Reg.rax);
2948 inst.args.push(arg);
2949 arg = Arg.createTmp(Reg.xmm5);
2950 inst.args.push(arg);
2951 inst.patchHasNonArgEffects = true;
2952 inst.extraEarlyClobberedRegs = new Set();
2953 inst.extraClobberedRegs = new Set();
2954 inst.patchArgData = [];
2955 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2956 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2957 inst.patchArgData.push({role: Arg.Use, type: FP, width: 64});
2958 inst.patchArgData.push({role: Arg.Use, type: FP, width: 64});
2959 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2960 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2961 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2962 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2963 inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2964 inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2965 bb34.append(inst);
2966 inst = new Inst(MoveDouble);
2967 arg = Arg.createTmp(Reg.xmm5);
2968 inst.args.push(arg);
2969 arg = Arg.createIndex(Reg.r9, Reg.rax, 8, 0);
2970 inst.args.push(arg);
2971 bb34.append(inst);
2972 inst = new Inst(Move32);
2973 arg = Arg.createTmp(Reg.rdx);
2974 inst.args.push(arg);
2975 arg = Arg.createTmp(Reg.rax);
2976 inst.args.push(arg);
2977 bb34.append(inst);
2978 inst = new Inst(Patch);
2979 inst.args.push(arg);
2980 arg = Arg.createResCond(Overflow);
2981 inst.args.push(arg);
2982 arg = Arg.createImm(1);
2983 inst.args.push(arg);
2984 arg = Arg.createTmp(Reg.rax);
2985 inst.args.push(arg);
2986 arg = Arg.createStack(slot5, 0);
2987 inst.args.push(arg);
2988 arg = Arg.createTmp(Reg.rcx);
2989 inst.args.push(arg);
2990 arg = Arg.createTmp(Reg.rdx);
2991 inst.args.push(arg);
2992 inst.patchHasNonArgEffects = true;
2993 inst.extraEarlyClobberedRegs = new Set();
2994 inst.extraClobberedRegs = new Set();
2995 inst.patchArgData = [];
2996 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2997 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2998 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2999 inst.patchArgData.push({role: Arg.UseZDef, type: GP, width: 32});
3000 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
3001 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
3002 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
3003 bb34.append(inst);
3004 inst = new Inst(Branch32);
3005 arg = Arg.createRelCond(LessThan);
3006 inst.args.push(arg);
3007 arg = Arg.createTmp(Reg.rax);
3008 inst.args.push(arg);
3009 arg = Arg.createImm(400);
3010 inst.args.push(arg);
3011 bb34.append(inst);
3012 bb35.successors.push(new FrequentedBlock(bb11, Normal));
3013 bb35.successors.push(new FrequentedBlock(bb36, Normal));
3014 bb35.predecessors.push(bb34);
3015 inst = new Inst(Move);
3016 arg = Arg.createTmp(Reg.rcx);
3017 inst.args.push(arg);
3018 arg = Arg.createTmp(Reg.rax);
3019 inst.args.push(arg);
3020 bb35.append(inst);
3021 inst = new Inst(Patch);
3022 inst.args.push(arg);
3023 arg = Arg.createResCond(Overflow);
3024 inst.args.push(arg);
3025 arg = Arg.createImm(1);
3026 inst.args.push(arg);
3027 arg = Arg.createTmp(Reg.rax);
3028 inst.args.push(arg);
3029 arg = Arg.createStack(slot5, 0);
3030 inst.args.push(arg);
3031 arg = Arg.createTmp(Reg.rcx);
3032 inst.args.push(arg);
3033 inst.patchHasNonArgEffects = true;
3034 inst.extraEarlyClobberedRegs = new Set();
3035 inst.extraClobberedRegs = new Set();
3036 inst.patchArgData = [];
3037 inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
3038 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
3039 inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
3040 inst.patchArgData.push({role: Arg.UseZDef, type: GP, width: 32});
3041 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
3042 inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
3043 bb35.append(inst);
3044 inst = new Inst(Branch32);
3045 arg = Arg.createRelCond(LessThan);
3046 inst.args.push(arg);
3047 arg = Arg.createTmp(Reg.rax);
3048 inst.args.push(arg);
3049 arg = Arg.createImm(267);
3050 inst.args.push(arg);
3051 bb35.append(inst);
3052 bb36.predecessors.push(bb35);
3053 inst = new Inst(Move);
3054 arg = Arg.createBigImm(4374462160);
3055 inst.args.push(arg);
3056 arg = Arg.createTmp(Reg.rax);
3057 inst.args.push(arg);
3058 bb36.append(inst);
3059 inst = new Inst(Ret64);
3060 arg = Arg.createTmp(Reg.rax);
3061 inst.args.push(arg);
3062 bb36.append(inst);
3063 return code;
3064}