From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 21:33:14 +0200 Subject: Adding upstream version 115.7.0esr. Signed-off-by: Daniel Baumann --- .../ARES-6/Air/payload-airjs-ACLj8C.js | 1730 ++++++++++++++++++++ 1 file changed, 1730 insertions(+) create mode 100644 third_party/webkit/PerformanceTests/ARES-6/Air/payload-airjs-ACLj8C.js (limited to 'third_party/webkit/PerformanceTests/ARES-6/Air/payload-airjs-ACLj8C.js') diff --git a/third_party/webkit/PerformanceTests/ARES-6/Air/payload-airjs-ACLj8C.js b/third_party/webkit/PerformanceTests/ARES-6/Air/payload-airjs-ACLj8C.js new file mode 100644 index 0000000000..013b87a773 --- /dev/null +++ b/third_party/webkit/PerformanceTests/ARES-6/Air/payload-airjs-ACLj8C.js @@ -0,0 +1,1730 @@ +"use strict"; +// Generated by Air::dumpAsJS from #ACLj8C in Air.js +function createPayloadAirJSACLj8C() +{ + let code = new Code(); + let bb0 = code.addBlock(); + let bb1 = code.addBlock(); + let bb2 = code.addBlock(); + let bb3 = code.addBlock(); + let bb4 = code.addBlock(); + let bb5 = code.addBlock(); + let bb6 = code.addBlock(); + let bb7 = code.addBlock(); + let bb8 = code.addBlock(); + let bb9 = code.addBlock(); + let bb10 = code.addBlock(); + let bb11 = code.addBlock(); + let bb12 = code.addBlock(); + let bb13 = code.addBlock(); + let bb14 = code.addBlock(); + let bb15 = code.addBlock(); + let slot0 = code.addStackSlot(160, Locked); + let slot1 = code.addStackSlot(8, Spill); + let slot2 = code.addStackSlot(8, Spill); + let slot3 = code.addStackSlot(8, Spill); + let slot4 = code.addStackSlot(40, Locked); + slot4.setOffsetFromFP(-40); + let tmp61 = code.newTmp(GP); + let tmp60 = code.newTmp(GP); + let tmp59 = code.newTmp(GP); + let tmp58 = code.newTmp(GP); + let tmp57 = code.newTmp(GP); + let tmp56 = code.newTmp(GP); + let tmp55 = code.newTmp(GP); + let tmp54 = code.newTmp(GP); + let tmp53 = code.newTmp(GP); + let tmp52 = code.newTmp(GP); + let tmp51 = code.newTmp(GP); + let tmp50 = code.newTmp(GP); + let tmp49 = code.newTmp(GP); + let tmp48 = code.newTmp(GP); + let tmp47 = code.newTmp(GP); + let tmp46 = code.newTmp(GP); + let tmp45 = code.newTmp(GP); + let tmp44 = code.newTmp(GP); + let tmp43 = code.newTmp(GP); + let tmp42 = code.newTmp(GP); + let tmp41 = code.newTmp(GP); + let tmp40 = code.newTmp(GP); + let tmp39 = code.newTmp(GP); + let tmp38 = code.newTmp(GP); + let tmp37 = code.newTmp(GP); + let tmp36 = code.newTmp(GP); + let tmp35 = code.newTmp(GP); + let tmp34 = code.newTmp(GP); + let tmp33 = code.newTmp(GP); + let tmp32 = code.newTmp(GP); + let tmp31 = code.newTmp(GP); + let tmp30 = code.newTmp(GP); + let tmp29 = code.newTmp(GP); + let tmp28 = code.newTmp(GP); + let tmp27 = code.newTmp(GP); + let tmp26 = code.newTmp(GP); + let tmp25 = code.newTmp(GP); + let tmp24 = code.newTmp(GP); + let tmp23 = code.newTmp(GP); + let tmp22 = code.newTmp(GP); + let tmp21 = code.newTmp(GP); + let tmp20 = code.newTmp(GP); + let tmp19 = code.newTmp(GP); + let tmp18 = code.newTmp(GP); + let tmp17 = code.newTmp(GP); + let tmp16 = code.newTmp(GP); + let tmp15 = code.newTmp(GP); + let tmp14 = code.newTmp(GP); + let tmp13 = code.newTmp(GP); + let tmp12 = code.newTmp(GP); + let tmp11 = code.newTmp(GP); + let tmp10 = code.newTmp(GP); + let tmp9 = code.newTmp(GP); + let tmp8 = code.newTmp(GP); + let tmp7 = code.newTmp(GP); + let tmp6 = code.newTmp(GP); + let tmp5 = code.newTmp(GP); + let tmp4 = code.newTmp(GP); + let tmp3 = code.newTmp(GP); + let tmp2 = code.newTmp(GP); + let tmp1 = code.newTmp(GP); + let tmp0 = code.newTmp(GP); + let inst; + let arg; + bb0.successors.push(new FrequentedBlock(bb1, Normal)); + bb0.successors.push(new FrequentedBlock(bb15, Normal)); + inst = new Inst(Move); + arg = Arg.createBigImm(276424800, 1); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createAddr(Reg.rbp, 16); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbp); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.extraEarlyClobberedRegs.add(Reg.r11); + inst.extraClobberedRegs.add(Reg.r11); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Scratch, type: GP, width: 64}); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createAddr(Reg.rbp, 72); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdi); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createAddr(Reg.rbp, 64); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdx); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createAddr(Reg.rbp, 56); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rsi); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createAddr(Reg.rbp, 48); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r8); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createBigImm(2, -65536); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r15); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createResCond(NonZero); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r8); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r15); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r8); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createAddr(Reg.rbp, 24); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createAddr(Reg.rax, 16); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createBigImm(0, -65536); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r14); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r8); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r15); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r14); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.extraEarlyClobberedRegs.add(Reg.r11); + inst.extraClobberedRegs.add(Reg.r11); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Def, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.LateUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.LateUse, type: GP, width: 64}); + bb0.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r8); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createAddr(Reg.rcx, 32); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createAddr(Reg.rcx, 40); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createResCond(NonZero); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r15); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rsi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r8); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createBigImm(276327648, 1); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createRelCond(NotEqual); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rsi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r8); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb0.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createRelCond(NotEqual); + inst.args.push(arg); + arg = Arg.createAddr(Reg.r8, 5); + inst.args.push(arg); + arg = Arg.createImm(21); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r8); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rsi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r8); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 8}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 8}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb0.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createResCond(NonZero); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r15); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rsi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r8); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb0.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createRelCond(NotEqual); + inst.args.push(arg); + arg = Arg.createAddr(Reg.r12, 0); + inst.args.push(arg); + arg = Arg.createImm(372); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rsi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r8); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createAddr(Reg.r12, 8); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createAddr(Reg.rax, -40); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createResCond(NonZero); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r15); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rsi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r8); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rsi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r8); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb0.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createResCond(NonZero); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r15); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rsi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r8); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rsi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r8); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createBigImm(276321024, 1); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createRelCond(NotEqual); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rsi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r8); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rsi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r8); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createStack(slot0, 72); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.rdi); + inst.args.push(arg); + arg = Arg.createStack(slot0, 64); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.rdx); + inst.args.push(arg); + arg = Arg.createStack(slot0, 56); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.rsi); + inst.args.push(arg); + arg = Arg.createStack(slot0, 48); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.r8); + inst.args.push(arg); + arg = Arg.createStack(slot0, 40); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r8); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r15); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r14); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.extraEarlyClobberedRegs.add(Reg.r11); + inst.extraClobberedRegs.add(Reg.r11); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Def, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.LateUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.LateUse, type: GP, width: 64}); + bb0.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Xor64); + arg = Arg.createImm(6); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createImm(-2); + inst.args.push(arg); + arg = Arg.createStack(slot2, 0); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createImm(-2); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r9); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createResCond(NonZero); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r9); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createImm(1); + inst.args.push(arg); + arg = Arg.createStack(slot3, 0); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(Move); + arg = Arg.createImm(1); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + bb0.append(inst); + inst = new Inst(BranchTest64); + arg = Arg.createResCond(NonZero); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + bb0.append(inst); + bb1.successors.push(new FrequentedBlock(bb3, Normal)); + bb1.successors.push(new FrequentedBlock(bb2, Normal)); + bb1.predecessors.push(bb0); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createRelCond(NotEqual); + inst.args.push(arg); + arg = Arg.createAddr(Reg.r8, 0); + inst.args.push(arg); + arg = Arg.createImm(468); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r8); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb1.append(inst); + inst = new Inst(Move); + arg = Arg.createAddr(Reg.r8, 16); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + bb1.append(inst); + inst = new Inst(Move); + arg = Arg.createBigImm(276741160, 1); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + bb1.append(inst); + inst = new Inst(Move); + arg = Arg.createAddr(Reg.rcx, 0); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + bb1.append(inst); + inst = new Inst(Branch64); + arg = Arg.createRelCond(Equal); + inst.args.push(arg); + arg = Arg.createAddr(Reg.rax, 8); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + bb1.append(inst); + bb2.predecessors.push(bb1); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r8); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb2.append(inst); + inst = new Inst(Oops); + bb2.append(inst); + bb3.successors.push(new FrequentedBlock(bb4, Normal)); + bb3.successors.push(new FrequentedBlock(bb7, Normal)); + bb3.predecessors.push(bb1); + inst = new Inst(Move); + arg = Arg.createAddr(Reg.r8, 24); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r13); + inst.args.push(arg); + bb3.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createRelCond(NotEqual); + inst.args.push(arg); + arg = Arg.createAddr(Reg.rbx, 5); + inst.args.push(arg); + arg = Arg.createImm(23); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rsi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r13); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 8}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 8}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb3.append(inst); + inst = new Inst(Move); + arg = Arg.createBigImm(275739616, 1); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + bb3.append(inst); + inst = new Inst(Branch64); + arg = Arg.createRelCond(Equal); + inst.args.push(arg); + arg = Arg.createAddr(Reg.rbx, 24); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + bb3.append(inst); + bb4.successors.push(new FrequentedBlock(bb5, Normal)); + bb4.successors.push(new FrequentedBlock(bb6, Normal)); + bb4.predecessors.push(bb3); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createStack(slot0, 0); + inst.args.push(arg); + bb4.append(inst); + inst = new Inst(Move); + arg = Arg.createAddr(Reg.rbx, 16); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + bb4.append(inst); + inst = new Inst(Move); + arg = Arg.createAddr(Reg.rax, 32); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + bb4.append(inst); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + arg = Arg.createStack(slot1, 0); + inst.args.push(arg); + bb4.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createResCond(NonZero); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r15); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rsi); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r13); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb4.append(inst); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.rdi); + inst.args.push(arg); + arg = Arg.createStack(slot0, 32); + inst.args.push(arg); + bb4.append(inst); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.rdx); + inst.args.push(arg); + arg = Arg.createStack(slot0, 24); + inst.args.push(arg); + bb4.append(inst); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.rsi); + inst.args.push(arg); + arg = Arg.createStack(slot0, 16); + inst.args.push(arg); + bb4.append(inst); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.r13); + inst.args.push(arg); + arg = Arg.createStack(slot0, 8); + inst.args.push(arg); + bb4.append(inst); + inst = new Inst(Move); + arg = Arg.createBigImm(276645872, 1); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + bb4.append(inst); + inst = new Inst(Move); + arg = Arg.createBigImm(276646496, 1); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + bb4.append(inst); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createCallArg(8); + inst.args.push(arg); + bb4.append(inst); + inst = new Inst(Move32); + arg = Arg.createImm(2); + inst.args.push(arg); + arg = Arg.createCallArg(16); + inst.args.push(arg); + bb4.append(inst); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + arg = Arg.createCallArg(24); + inst.args.push(arg); + bb4.append(inst); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.rsi); + inst.args.push(arg); + arg = Arg.createCallArg(32); + inst.args.push(arg); + bb4.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createCallArg(8); + inst.args.push(arg); + arg = Arg.createCallArg(16); + inst.args.push(arg); + arg = Arg.createCallArg(24); + inst.args.push(arg); + arg = Arg.createCallArg(32); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r15); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r14); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.extraEarlyClobberedRegs.add(Reg.r11); + inst.extraClobberedRegs.add(Reg.rcx); + inst.extraClobberedRegs.add(Reg.rdx); + inst.extraClobberedRegs.add(Reg.rsi); + inst.extraClobberedRegs.add(Reg.rdi); + inst.extraClobberedRegs.add(Reg.r8); + inst.extraClobberedRegs.add(Reg.r9); + inst.extraClobberedRegs.add(Reg.r10); + inst.extraClobberedRegs.add(Reg.r11); + inst.extraClobberedRegs.add(Reg.xmm0); + inst.extraClobberedRegs.add(Reg.xmm1); + inst.extraClobberedRegs.add(Reg.xmm2); + inst.extraClobberedRegs.add(Reg.xmm3); + inst.extraClobberedRegs.add(Reg.xmm4); + inst.extraClobberedRegs.add(Reg.xmm5); + inst.extraClobberedRegs.add(Reg.xmm6); + inst.extraClobberedRegs.add(Reg.xmm7); + inst.extraClobberedRegs.add(Reg.xmm8); + inst.extraClobberedRegs.add(Reg.xmm9); + inst.extraClobberedRegs.add(Reg.xmm10); + inst.extraClobberedRegs.add(Reg.xmm11); + inst.extraClobberedRegs.add(Reg.xmm12); + inst.extraClobberedRegs.add(Reg.xmm13); + inst.extraClobberedRegs.add(Reg.xmm14); + inst.extraClobberedRegs.add(Reg.xmm15); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Def, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + bb4.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createStack(slot1, 0); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb4.append(inst); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + bb4.append(inst); + inst = new Inst(Xor64); + arg = Arg.createImm(6); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + bb4.append(inst); + inst = new Inst(Move); + arg = Arg.createImm(-2); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdx); + inst.args.push(arg); + bb4.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createResCond(NonZero); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rdx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createStack(slot1, 0); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb4.append(inst); + inst = new Inst(Move); + arg = Arg.createImm(1); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + bb4.append(inst); + inst = new Inst(BranchTest64); + arg = Arg.createResCond(NonZero); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + bb4.append(inst); + bb5.successors.push(new FrequentedBlock(bb8, Normal)); + bb5.predecessors.push(bb4); + inst = new Inst(Move); + arg = Arg.createStack(slot1, 0); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + bb5.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r15); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r14); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.extraEarlyClobberedRegs.add(Reg.r11); + inst.extraClobberedRegs.add(Reg.r11); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Def, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.LateUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.LateUse, type: GP, width: 64}); + bb5.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb5.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createResCond(NonZero); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r15); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb5.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createRelCond(NotEqual); + inst.args.push(arg); + arg = Arg.createAddr(Reg.rcx, 0); + inst.args.push(arg); + arg = Arg.createImm(419); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb5.append(inst); + inst = new Inst(Move); + arg = Arg.createBigImm(276168608, 1); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + bb5.append(inst); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createCallArg(8); + inst.args.push(arg); + bb5.append(inst); + inst = new Inst(Move32); + arg = Arg.createImm(2); + inst.args.push(arg); + arg = Arg.createCallArg(16); + inst.args.push(arg); + bb5.append(inst); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + arg = Arg.createCallArg(24); + inst.args.push(arg); + bb5.append(inst); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.r13); + inst.args.push(arg); + arg = Arg.createCallArg(32); + inst.args.push(arg); + bb5.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createCallArg(8); + inst.args.push(arg); + arg = Arg.createCallArg(16); + inst.args.push(arg); + arg = Arg.createCallArg(24); + inst.args.push(arg); + arg = Arg.createCallArg(32); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r15); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r14); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.extraEarlyClobberedRegs.add(Reg.r11); + inst.extraClobberedRegs.add(Reg.rcx); + inst.extraClobberedRegs.add(Reg.rdx); + inst.extraClobberedRegs.add(Reg.rsi); + inst.extraClobberedRegs.add(Reg.rdi); + inst.extraClobberedRegs.add(Reg.r8); + inst.extraClobberedRegs.add(Reg.r9); + inst.extraClobberedRegs.add(Reg.r10); + inst.extraClobberedRegs.add(Reg.r11); + inst.extraClobberedRegs.add(Reg.xmm0); + inst.extraClobberedRegs.add(Reg.xmm1); + inst.extraClobberedRegs.add(Reg.xmm2); + inst.extraClobberedRegs.add(Reg.xmm3); + inst.extraClobberedRegs.add(Reg.xmm4); + inst.extraClobberedRegs.add(Reg.xmm5); + inst.extraClobberedRegs.add(Reg.xmm6); + inst.extraClobberedRegs.add(Reg.xmm7); + inst.extraClobberedRegs.add(Reg.xmm8); + inst.extraClobberedRegs.add(Reg.xmm9); + inst.extraClobberedRegs.add(Reg.xmm10); + inst.extraClobberedRegs.add(Reg.xmm11); + inst.extraClobberedRegs.add(Reg.xmm12); + inst.extraClobberedRegs.add(Reg.xmm13); + inst.extraClobberedRegs.add(Reg.xmm14); + inst.extraClobberedRegs.add(Reg.xmm15); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Def, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + bb5.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createStack(slot1, 0); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb5.append(inst); + inst = new Inst(Move); + arg = Arg.createImm(10); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + bb5.append(inst); + inst = new Inst(Jump); + bb5.append(inst); + bb6.successors.push(new FrequentedBlock(bb8, Normal)); + bb6.predecessors.push(bb4); + inst = new Inst(Move); + arg = Arg.createImm(10); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + bb6.append(inst); + inst = new Inst(Jump); + bb6.append(inst); + bb7.successors.push(new FrequentedBlock(bb12, Normal)); + bb7.successors.push(new FrequentedBlock(bb9, Normal)); + bb7.predecessors.push(bb3); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + bb7.append(inst); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.rbx); + inst.args.push(arg); + arg = Arg.createCallArg(8); + inst.args.push(arg); + bb7.append(inst); + inst = new Inst(Move32); + arg = Arg.createImm(5); + inst.args.push(arg); + arg = Arg.createCallArg(16); + inst.args.push(arg); + bb7.append(inst); + inst = new Inst(Move); + arg = Arg.createImm(10); + inst.args.push(arg); + arg = Arg.createCallArg(24); + inst.args.push(arg); + bb7.append(inst); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.r13); + inst.args.push(arg); + arg = Arg.createCallArg(32); + inst.args.push(arg); + bb7.append(inst); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.rsi); + inst.args.push(arg); + arg = Arg.createCallArg(40); + inst.args.push(arg); + bb7.append(inst); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.rdx); + inst.args.push(arg); + arg = Arg.createCallArg(48); + inst.args.push(arg); + bb7.append(inst); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.rdi); + inst.args.push(arg); + arg = Arg.createCallArg(56); + inst.args.push(arg); + bb7.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createCallArg(8); + inst.args.push(arg); + arg = Arg.createCallArg(16); + inst.args.push(arg); + arg = Arg.createCallArg(24); + inst.args.push(arg); + arg = Arg.createCallArg(32); + inst.args.push(arg); + arg = Arg.createCallArg(40); + inst.args.push(arg); + arg = Arg.createCallArg(48); + inst.args.push(arg); + arg = Arg.createCallArg(56); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r15); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r14); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.extraEarlyClobberedRegs.add(Reg.r11); + inst.extraClobberedRegs.add(Reg.rcx); + inst.extraClobberedRegs.add(Reg.rdx); + inst.extraClobberedRegs.add(Reg.rsi); + inst.extraClobberedRegs.add(Reg.rdi); + inst.extraClobberedRegs.add(Reg.r8); + inst.extraClobberedRegs.add(Reg.r9); + inst.extraClobberedRegs.add(Reg.r10); + inst.extraClobberedRegs.add(Reg.r11); + inst.extraClobberedRegs.add(Reg.xmm0); + inst.extraClobberedRegs.add(Reg.xmm1); + inst.extraClobberedRegs.add(Reg.xmm2); + inst.extraClobberedRegs.add(Reg.xmm3); + inst.extraClobberedRegs.add(Reg.xmm4); + inst.extraClobberedRegs.add(Reg.xmm5); + inst.extraClobberedRegs.add(Reg.xmm6); + inst.extraClobberedRegs.add(Reg.xmm7); + inst.extraClobberedRegs.add(Reg.xmm8); + inst.extraClobberedRegs.add(Reg.xmm9); + inst.extraClobberedRegs.add(Reg.xmm10); + inst.extraClobberedRegs.add(Reg.xmm11); + inst.extraClobberedRegs.add(Reg.xmm12); + inst.extraClobberedRegs.add(Reg.xmm13); + inst.extraClobberedRegs.add(Reg.xmm14); + inst.extraClobberedRegs.add(Reg.xmm15); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Def, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + bb7.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb7.append(inst); + inst = new Inst(BranchTest64); + arg = Arg.createResCond(NonZero); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r15); + inst.args.push(arg); + bb7.append(inst); + bb8.successors.push(new FrequentedBlock(bb13, Normal)); + bb8.successors.push(new FrequentedBlock(bb10, Normal)); + bb8.predecessors.push(bb6); + bb8.predecessors.push(bb5); + inst = new Inst(BranchTest64); + arg = Arg.createResCond(NonZero); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r15); + inst.args.push(arg); + bb8.append(inst); + bb9.successors.push(new FrequentedBlock(bb11, Normal)); + bb9.predecessors.push(bb7); + inst = new Inst(Jump); + bb9.append(inst); + bb10.successors.push(new FrequentedBlock(bb11, Normal)); + bb10.predecessors.push(bb8); + inst = new Inst(Jump); + bb10.append(inst); + bb11.predecessors.push(bb9); + bb11.predecessors.push(bb10); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createRelCond(Below); + inst.args.push(arg); + arg = Arg.createAddr(Reg.rax, 5); + inst.args.push(arg); + arg = Arg.createImm(20); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 8}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 8}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb11.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb11.append(inst); + inst = new Inst(Oops); + bb11.append(inst); + bb12.successors.push(new FrequentedBlock(bb14, Normal)); + bb12.predecessors.push(bb7); + inst = new Inst(Jump); + bb12.append(inst); + bb13.successors.push(new FrequentedBlock(bb14, Normal)); + bb13.predecessors.push(bb8); + inst = new Inst(Jump); + bb13.append(inst); + bb14.predecessors.push(bb12); + bb14.predecessors.push(bb13); + inst = new Inst(Move); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + bb14.append(inst); + inst = new Inst(And64); + arg = Arg.createImm(-9); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + bb14.append(inst); + inst = new Inst(Patch); + arg = Arg.createSpecial(); + inst.args.push(arg); + arg = Arg.createRelCond(NotEqual); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rcx); + inst.args.push(arg); + arg = Arg.createImm(2); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + arg = Arg.createTmp(Reg.r12); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + inst.patchHasNonArgEffects = true; + inst.extraEarlyClobberedRegs = new Set(); + inst.extraClobberedRegs = new Set(); + inst.patchArgData = []; + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 32}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.Use, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64}); + bb14.append(inst); + inst = new Inst(Move); + arg = Arg.createImm(10); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + bb14.append(inst); + inst = new Inst(Ret64); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + bb14.append(inst); + bb15.predecessors.push(bb0); + inst = new Inst(Move); + arg = Arg.createImm(10); + inst.args.push(arg); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + bb15.append(inst); + inst = new Inst(Ret64); + arg = Arg.createTmp(Reg.rax); + inst.args.push(arg); + bb15.append(inst); + return code; +} -- cgit v1.2.3