in src/hotspot/cpu/x86/stubGenerator_x86_64_tan.cpp [457:1029]
address StubGenerator::generate_libmTan() {
StubId stub_id = StubId::stubgen_dtan_id;
StubCodeMark mark(this, stub_id);
address start = __ pc();
Label L_2TAG_PACKET_0_0_1, L_2TAG_PACKET_1_0_1, L_2TAG_PACKET_2_0_1, L_2TAG_PACKET_3_0_1;
Label L_2TAG_PACKET_4_0_1, L_2TAG_PACKET_5_0_1, L_2TAG_PACKET_6_0_1, L_2TAG_PACKET_7_0_1;
Label L_2TAG_PACKET_8_0_1, L_2TAG_PACKET_9_0_1, L_2TAG_PACKET_10_0_1, L_2TAG_PACKET_11_0_1;
Label L_2TAG_PACKET_12_0_1, L_2TAG_PACKET_13_0_1, L_2TAG_PACKET_14_0_1, B1_2, B1_4;
address MUL16 = (address)_MUL16;
address sign_mask = (address)_sign_mask_tan;
address PI32INV = (address)_PI32INV_tan;
address P_1 = (address)_P_1_tan;
address P_2 = (address)_P_2_tan;
address P_3 = (address)_P_3_tan;
address Ctable = (address)_Ctable_tan;
address MASK_35 = (address)_MASK_35_tan;
address Q_11 = (address)_Q_11_tan;
address Q_9 = (address)_Q_9_tan;
address Q_7 = (address)_Q_7_tan;
address Q_5 = (address)_Q_5_tan;
address Q_3 = (address)_Q_3_tan;
address PI_4 = (address)_PI_4_tan;
address QQ_2 = (address)_QQ_2_tan;
__ enter(); // required for proper stackwalking of RuntimeStub frame
#ifdef _WIN64
__ push_ppx(rsi);
__ push_ppx(rdi);
#endif
__ push_ppx(rbx);
__ subq(rsp, 16);
__ movsd(Address(rsp, 8), xmm0);
__ bind(B1_2);
__ pextrw(rax, xmm0, 3);
__ andl(rax, 32767);
__ subl(rax, 16314);
__ cmpl(rax, 270);
__ jcc(Assembler::above, L_2TAG_PACKET_0_0_1);
__ movdqu(xmm5, ExternalAddress(ONEHALF), rbx /*rscratch*/); //0x00000000UL, 0x3fe00000UL, 0x00000000UL, 0x3fe00000UL
__ movdqu(xmm6, ExternalAddress(MUL16), rbx /*rscratch*/); //0x00000000UL, 0x40300000UL, 0x00000000UL, 0x3ff00000UL
__ unpcklpd(xmm0, xmm0);
__ movdqu(xmm4, ExternalAddress(sign_mask), rbx /*rscratch*/); //0x00000000UL, 0x80000000UL, 0x00000000UL, 0x80000000UL
__ andpd(xmm4, xmm0);
__ movdqu(xmm1, ExternalAddress(PI32INV), rbx /*rscratch*/); //0x6dc9c883UL, 0x3fe45f30UL, 0x6dc9c883UL, 0x40245f30UL
__ mulpd(xmm1, xmm0);
__ por(xmm5, xmm4);
__ addpd(xmm1, xmm5);
__ movdqu(xmm7, xmm1);
__ unpckhpd(xmm7, xmm7);
__ cvttsd2sil(rdx, xmm7);
__ cvttpd2dq(xmm1, xmm1);
__ cvtdq2pd(xmm1, xmm1);
__ mulpd(xmm1, xmm6);
__ movdqu(xmm3, ExternalAddress(P_1), rbx /*rscratch*/); //0x54444000UL, 0x3fb921fbUL, 0x54440000UL, 0x3fb921fbUL
__ movq(xmm5, ExternalAddress(QQ_2), rbx /*rscratch*/); //0x676733afUL, 0x3d32e7b9UL
__ addq(rdx, 469248);
__ movdqu(xmm4, ExternalAddress(P_2), rbx /*rscratch*/); //0x67674000UL, 0xbd32e7b9UL, 0x4c4c0000UL, 0x3d468c23UL
__ mulpd(xmm3, xmm1);
__ andq(rdx, 31);
__ mulsd(xmm5, xmm1);
__ movq(rcx, rdx);
__ mulpd(xmm4, xmm1);
__ shlq(rcx, 1);
__ subpd(xmm0, xmm3);
__ mulpd(xmm1, ExternalAddress(P_3), rbx /*rscratch*/); //0x3707344aUL, 0x3aa8a2e0UL, 0x03707345UL, 0x3ae98a2eUL
__ addq(rdx, rcx);
__ shlq(rcx, 2);
__ addq(rdx, rcx);
__ addsd(xmm5, xmm0);
__ movdqu(xmm2, xmm0);
__ subpd(xmm0, xmm4);
__ movq(xmm6, ExternalAddress(ONE), rbx /*rscratch*/); //0x00000000UL, 0x3ff00000UL
__ shlq(rdx, 4);
__ lea(rax, ExternalAddress(Ctable));
__ andpd(xmm5, ExternalAddress(MASK_35), rbx /*rscratch*/); //0xfffc0000UL, 0xffffffffUL, 0x00000000UL, 0x00000000UL
__ movdqu(xmm3, xmm0);
__ addq(rax, rdx);
__ subpd(xmm2, xmm0);
__ unpckhpd(xmm0, xmm0);
__ divsd(xmm6, xmm5);
__ subpd(xmm2, xmm4);
__ movdqu(xmm7, Address(rax, 16));
__ subsd(xmm3, xmm5);
__ mulpd(xmm7, xmm0);
__ subpd(xmm2, xmm1);
__ movdqu(xmm1, Address(rax, 48));
__ mulpd(xmm1, xmm0);
__ movdqu(xmm4, Address(rax, 96));
__ mulpd(xmm4, xmm0);
__ addsd(xmm2, xmm3);
__ movdqu(xmm3, xmm0);
__ mulpd(xmm0, xmm0);
__ addpd(xmm7, Address(rax, 0));
__ addpd(xmm1, Address(rax, 32));
__ mulpd(xmm1, xmm0);
__ addpd(xmm4, Address(rax, 80));
__ addpd(xmm7, xmm1);
__ movdqu(xmm1, Address(rax, 112));
__ mulpd(xmm1, xmm0);
__ mulpd(xmm0, xmm0);
__ addpd(xmm4, xmm1);
__ movdqu(xmm1, Address(rax, 64));
__ mulpd(xmm1, xmm0);
__ addpd(xmm7, xmm1);
__ movdqu(xmm1, xmm3);
__ mulpd(xmm3, xmm0);
__ mulsd(xmm0, xmm0);
__ mulpd(xmm1, Address(rax, 144));
__ mulpd(xmm4, xmm3);
__ movdqu(xmm3, xmm1);
__ addpd(xmm7, xmm4);
__ movdqu(xmm4, xmm1);
__ mulsd(xmm0, xmm7);
__ unpckhpd(xmm7, xmm7);
__ addsd(xmm0, xmm7);
__ unpckhpd(xmm1, xmm1);
__ addsd(xmm3, xmm1);
__ subsd(xmm4, xmm3);
__ addsd(xmm1, xmm4);
__ movdqu(xmm4, xmm2);
__ movq(xmm7, Address(rax, 144));
__ unpckhpd(xmm2, xmm2);
__ addsd(xmm7, Address(rax, 152));
__ mulsd(xmm7, xmm2);
__ addsd(xmm7, Address(rax, 136));
__ addsd(xmm7, xmm1);
__ addsd(xmm0, xmm7);
__ movq(xmm7, ExternalAddress(ONE), rbx /*rscratch*/); //0x00000000UL, 0x3ff00000UL
__ mulsd(xmm4, xmm6);
__ movq(xmm2, Address(rax, 168));
__ andpd(xmm2, xmm6);
__ mulsd(xmm5, xmm2);
__ mulsd(xmm6, Address(rax, 160));
__ subsd(xmm7, xmm5);
__ subsd(xmm2, Address(rax, 128));
__ subsd(xmm7, xmm4);
__ mulsd(xmm7, xmm6);
__ movdqu(xmm4, xmm3);
__ subsd(xmm3, xmm2);
__ addsd(xmm2, xmm3);
__ subsd(xmm4, xmm2);
__ addsd(xmm0, xmm4);
__ subsd(xmm0, xmm7);
__ addsd(xmm0, xmm3);
__ jmp(B1_4);
__ bind(L_2TAG_PACKET_0_0_1);
__ jcc(Assembler::greater, L_2TAG_PACKET_1_0_1);
__ pextrw(rax, xmm0, 3);
__ movl(rdx, rax);
__ andl(rax, 32752);
__ jcc(Assembler::equal, L_2TAG_PACKET_2_0_1);
__ andl(rdx, 32767);
__ cmpl(rdx, 15904);
__ jcc(Assembler::below, L_2TAG_PACKET_3_0_1);
__ movdqu(xmm2, xmm0);
__ movdqu(xmm3, xmm0);
__ movq(xmm1, ExternalAddress(Q_11), rbx /*rscratch*/); //0xb8fe4d77UL, 0x3f82609aUL
__ mulsd(xmm2, xmm0);
__ mulsd(xmm3, xmm2);
__ mulsd(xmm1, xmm2);
__ addsd(xmm1, ExternalAddress(Q_9), rbx /*rscratch*/); //0xbf847a43UL, 0x3f9664a0UL
__ mulsd(xmm1, xmm2);
__ addsd(xmm1, ExternalAddress(Q_7), rbx /*rscratch*/); //0x52c4c8abUL, 0x3faba1baUL
__ mulsd(xmm1, xmm2);
__ addsd(xmm1, ExternalAddress(Q_5), rbx /*rscratch*/); //0x11092746UL, 0x3fc11111UL
__ mulsd(xmm1, xmm2);
__ addsd(xmm1, ExternalAddress(Q_3), rbx /*rscratch*/); //0x55555612UL, 0x3fd55555UL
__ mulsd(xmm1, xmm3);
__ addsd(xmm0, xmm1);
__ jmp(B1_4);
__ bind(L_2TAG_PACKET_3_0_1);
__ movq(xmm3, ExternalAddress(TWO_POW_55), rbx /*rscratch*/); //0x00000000UL, 0x43600000UL
__ mulsd(xmm3, xmm0);
__ addsd(xmm0, xmm3);
__ mulsd(xmm0, ExternalAddress(TWO_POW_M55), rbx /*rscratch*/); //0x00000000UL, 0x3c800000UL
__ jmp(B1_4);
__ bind(L_2TAG_PACKET_2_0_1);
__ movdqu(xmm1, xmm0);
__ mulsd(xmm1, xmm1);
__ jmp(B1_4);
__ bind(L_2TAG_PACKET_1_0_1);
__ pextrw(rax, xmm0, 3);
__ andl(rax, 32752);
__ cmpl(rax, 32752);
__ jcc(Assembler::equal, L_2TAG_PACKET_4_0_1);
__ pextrw(rcx, xmm0, 3);
__ andl(rcx, 32752);
__ subl(rcx, 16224);
__ shrl(rcx, 7);
__ andl(rcx, 65532);
__ lea(r11, ExternalAddress(PI_INV_TABLE));
__ addq(rcx, r11);
__ movdq(rax, xmm0);
__ movl(r10, Address(rcx, 20));
__ movl(r8, Address(rcx, 24));
__ movl(rdx, rax);
__ shrq(rax, 21);
__ orl(rax, INT_MIN);
__ shrl(rax, 11);
__ movl(r9, r10);
__ imulq(r10, rdx);
__ imulq(r9, rax);
__ imulq(r8, rax);
__ movl(rsi, Address(rcx, 16));
__ movl(rdi, Address(rcx, 12));
__ movl(r11, r10);
__ shrq(r10, 32);
__ addq(r9, r10);
__ addq(r11, r8);
__ movl(r8, r11);
__ shrq(r11, 32);
__ addq(r9, r11);
__ movl(r10, rsi);
__ imulq(rsi, rdx);
__ imulq(r10, rax);
__ movl(r11, rdi);
__ imulq(rdi, rdx);
__ movl(rbx, rsi);
__ shrq(rsi, 32);
__ addq(r9, rbx);
__ movl(rbx, r9);
__ shrq(r9, 32);
__ addq(r10, rsi);
__ addq(r10, r9);
__ shlq(rbx, 32);
__ orq(r8, rbx);
__ imulq(r11, rax);
__ movl(r9, Address(rcx, 8));
__ movl(rsi, Address(rcx, 4));
__ movl(rbx, rdi);
__ shrq(rdi, 32);
__ addq(r10, rbx);
__ movl(rbx, r10);
__ shrq(r10, 32);
__ addq(r11, rdi);
__ addq(r11, r10);
__ movq(rdi, r9);
__ imulq(r9, rdx);
__ imulq(rdi, rax);
__ movl(r10, r9);
__ shrq(r9, 32);
__ addq(r11, r10);
__ movl(r10, r11);
__ shrq(r11, 32);
__ addq(rdi, r9);
__ addq(rdi, r11);
__ movq(r9, rsi);
__ imulq(rsi, rdx);
__ imulq(r9, rax);
__ shlq(r10, 32);
__ orq(r10, rbx);
__ movl(rax, Address(rcx, 0));
__ movl(r11, rsi);
__ shrq(rsi, 32);
__ addq(rdi, r11);
__ movl(r11, rdi);
__ shrq(rdi, 32);
__ addq(r9, rsi);
__ addq(r9, rdi);
__ imulq(rdx, rax);
__ pextrw(rbx, xmm0, 3);
__ lea(rdi, ExternalAddress(PI_INV_TABLE));
__ subq(rcx, rdi);
__ addl(rcx, rcx);
__ addl(rcx, rcx);
__ addl(rcx, rcx);
__ addl(rcx, 19);
__ movl(rsi, 32768);
__ andl(rsi, rbx);
__ shrl(rbx, 4);
__ andl(rbx, 2047);
__ subl(rbx, 1023);
__ subl(rcx, rbx);
__ addq(r9, rdx);
__ movl(rdx, rcx);
__ addl(rdx, 32);
__ cmpl(rcx, 0);
__ jcc(Assembler::less, L_2TAG_PACKET_5_0_1);
__ negl(rcx);
__ addl(rcx, 29);
__ shll(r9);
__ movl(rdi, r9);
__ andl(r9, 1073741823);
__ testl(r9, 536870912);
__ jcc(Assembler::notEqual, L_2TAG_PACKET_6_0_1);
__ shrl(r9);
__ movl(rbx, 0);
__ shlq(r9, 32);
__ orq(r9, r11);
__ bind(L_2TAG_PACKET_7_0_1);
__ bind(L_2TAG_PACKET_8_0_1);
__ cmpq(r9, 0);
__ jcc(Assembler::equal, L_2TAG_PACKET_9_0_1);
__ bind(L_2TAG_PACKET_10_0_1);
__ bsrq(r11, r9);
__ movl(rcx, 29);
__ subl(rcx, r11);
__ jcc(Assembler::lessEqual, L_2TAG_PACKET_11_0_1);
__ shlq(r9);
__ movq(rax, r10);
__ shlq(r10);
__ addl(rdx, rcx);
__ negl(rcx);
__ addl(rcx, 64);
__ shrq(rax);
__ shrq(r8);
__ orq(r9, rax);
__ orq(r10, r8);
__ bind(L_2TAG_PACKET_12_0_1);
__ cvtsi2sdq(xmm0, r9);
__ shrq(r10, 1);
__ cvtsi2sdq(xmm3, r10);
__ xorpd(xmm4, xmm4);
__ shll(rdx, 4);
__ negl(rdx);
__ addl(rdx, 16368);
__ orl(rdx, rsi);
__ xorl(rdx, rbx);
__ pinsrw(xmm4, rdx, 3);
__ movq(xmm2, ExternalAddress(PI_4), rbx /*rscratch*/); //0x00000000UL, 0x3fe921fbUL, 0x4611a626UL, 0x3e85110bUL
__ movq(xmm7, ExternalAddress(PI_4 + 8), rbx /*rscratch*/); //0x3fe921fbUL, 0x4611a626UL, 0x3e85110bUL
__ xorpd(xmm5, xmm5);
__ subl(rdx, 1008);
__ pinsrw(xmm5, rdx, 3);
__ mulsd(xmm0, xmm4);
__ shll(rsi, 16);
__ sarl(rsi, 31);
__ mulsd(xmm3, xmm5);
__ movdqu(xmm1, xmm0);
__ mulsd(xmm0, xmm2);
__ shrl(rdi, 30);
__ addsd(xmm1, xmm3);
__ mulsd(xmm3, xmm2);
__ addl(rdi, rsi);
__ xorl(rdi, rsi);
__ mulsd(xmm7, xmm1);
__ movl(rax, rdi);
__ addsd(xmm7, xmm3);
__ movdqu(xmm2, xmm0);
__ addsd(xmm0, xmm7);
__ subsd(xmm2, xmm0);
__ addsd(xmm7, xmm2);
__ movdqu(xmm1, ExternalAddress(PI32INV), rbx /*rscratch*/); //0x6dc9c883UL, 0x3fe45f30UL, 0x6dc9c883UL, 0x40245f30UL
if (VM_Version::supports_sse3()) {
__ movddup(xmm0, xmm0);
} else {
__ movlhps(xmm0, xmm0);
}
__ movdqu(xmm4, ExternalAddress(sign_mask), rbx /*rscratch*/); //0x00000000UL, 0x80000000UL, 0x00000000UL, 0x80000000UL
__ andpd(xmm4, xmm0);
__ mulpd(xmm1, xmm0);
if (VM_Version::supports_sse3()) {
__ movddup(xmm7, xmm7);
}
else {
__ movlhps(xmm7, xmm7);
}
__ movdqu(xmm5, ExternalAddress(ONEHALF), rbx /*rscratch*/); //0x00000000UL, 0x3fe00000UL, 0x00000000UL, 0x3fe00000UL
__ movdqu(xmm6, ExternalAddress(MUL16), rbx /*rscratch*/); //0x00000000UL, 0x40300000UL, 0x00000000UL, 0x3ff00000UL
__ por(xmm5, xmm4);
__ addpd(xmm1, xmm5);
__ movdqu(xmm5, xmm1);
__ unpckhpd(xmm5, xmm5);
__ cvttsd2sil(rdx, xmm5);
__ cvttpd2dq(xmm1, xmm1);
__ cvtdq2pd(xmm1, xmm1);
__ mulpd(xmm1, xmm6);
__ movdqu(xmm3, ExternalAddress(P_1), rbx /*rscratch*/); //0x54444000UL, 0x3fb921fbUL, 0x54440000UL, 0x3fb921fbUL
__ movq(xmm5, ExternalAddress(QQ_2), rbx /*rscratch*/); //0x676733afUL, 0x3d32e7b9UL
__ shll(rax, 4);
__ addl(rdx, 469248);
__ movdqu(xmm4, ExternalAddress(P_2), rbx /*rscratch*/); //0x67674000UL, 0xbd32e7b9UL, 0x4c4c0000UL, 0x3d468c23UL
__ mulpd(xmm3, xmm1);
__ addl(rdx, rax);
__ andl(rdx, 31);
__ mulsd(xmm5, xmm1);
__ movl(rcx, rdx);
__ mulpd(xmm4, xmm1);
__ shll(rcx, 1);
__ subpd(xmm0, xmm3);
__ mulpd(xmm1, ExternalAddress(P_3), rbx /*rscratch*/); //0x3707344aUL, 0x3aa8a2e0UL, 0x03707345UL, 0x3ae98a2eUL
__ addl(rdx, rcx);
__ shll(rcx, 2);
__ addl(rdx, rcx);
__ addsd(xmm5, xmm0);
__ movdqu(xmm2, xmm0);
__ subpd(xmm0, xmm4);
__ movq(xmm6, ExternalAddress(ONE), rbx /*rscratch*/); //0x00000000UL, 0x3ff00000UL
__ shll(rdx, 4);
__ lea(rax, ExternalAddress(Ctable));
__ andpd(xmm5, ExternalAddress(MASK_35), rbx /*rscratch*/); //0xfffc0000UL, 0xffffffffUL, 0x00000000UL, 0x00000000UL
__ movdqu(xmm3, xmm0);
__ addq(rax, rdx);
__ subpd(xmm2, xmm0);
__ unpckhpd(xmm0, xmm0);
__ divsd(xmm6, xmm5);
__ subpd(xmm2, xmm4);
__ subsd(xmm3, xmm5);
__ subpd(xmm2, xmm1);
__ movdqu(xmm1, Address(rax, 48));
__ addpd(xmm2, xmm7);
__ movdqu(xmm7, Address(rax, 16));
__ mulpd(xmm7, xmm0);
__ movdqu(xmm4, Address(rax, 96));
__ mulpd(xmm1, xmm0);
__ mulpd(xmm4, xmm0);
__ addsd(xmm2, xmm3);
__ movdqu(xmm3, xmm0);
__ mulpd(xmm0, xmm0);
__ addpd(xmm7, Address(rax, 0));
__ addpd(xmm1, Address(rax, 32));
__ mulpd(xmm1, xmm0);
__ addpd(xmm4, Address(rax, 80));
__ addpd(xmm7, xmm1);
__ movdqu(xmm1, Address(rax, 112));
__ mulpd(xmm1, xmm0);
__ mulpd(xmm0, xmm0);
__ addpd(xmm4, xmm1);
__ movdqu(xmm1, Address(rax, 64));
__ mulpd(xmm1, xmm0);
__ addpd(xmm7, xmm1);
__ movdqu(xmm1, xmm3);
__ mulpd(xmm3, xmm0);
__ mulsd(xmm0, xmm0);
__ mulpd(xmm1, Address(rax, 144));
__ mulpd(xmm4, xmm3);
__ movdqu(xmm3, xmm1);
__ addpd(xmm7, xmm4);
__ movdqu(xmm4, xmm1);
__ mulsd(xmm0, xmm7);
__ unpckhpd(xmm7, xmm7);
__ addsd(xmm0, xmm7);
__ unpckhpd(xmm1, xmm1);
__ addsd(xmm3, xmm1);
__ subsd(xmm4, xmm3);
__ addsd(xmm1, xmm4);
__ movdqu(xmm4, xmm2);
__ movq(xmm7, Address(rax, 144));
__ unpckhpd(xmm2, xmm2);
__ addsd(xmm7, Address(rax, 152));
__ mulsd(xmm7, xmm2);
__ addsd(xmm7, Address(rax, 136));
__ addsd(xmm7, xmm1);
__ addsd(xmm0, xmm7);
__ movq(xmm7, ExternalAddress(ONE), rbx /*rscratch*/); //0x00000000UL, 0x3ff00000UL
__ mulsd(xmm4, xmm6);
__ movq(xmm2, Address(rax, 168));
__ andpd(xmm2, xmm6);
__ mulsd(xmm5, xmm2);
__ mulsd(xmm6, Address(rax, 160));
__ subsd(xmm7, xmm5);
__ subsd(xmm2, Address(rax, 128));
__ subsd(xmm7, xmm4);
__ mulsd(xmm7, xmm6);
__ movdqu(xmm4, xmm3);
__ subsd(xmm3, xmm2);
__ addsd(xmm2, xmm3);
__ subsd(xmm4, xmm2);
__ addsd(xmm0, xmm4);
__ subsd(xmm0, xmm7);
__ addsd(xmm0, xmm3);
__ jmp(B1_4);
__ bind(L_2TAG_PACKET_9_0_1);
__ addl(rdx, 64);
__ movq(r9, r10);
__ movq(r10, r8);
__ movl(r8, 0);
__ cmpq(r9, 0);
__ jcc(Assembler::notEqual, L_2TAG_PACKET_10_0_1);
__ addl(rdx, 64);
__ movq(r9, r10);
__ movq(r10, r8);
__ cmpq(r9, 0);
__ jcc(Assembler::notEqual, L_2TAG_PACKET_10_0_1);
__ jmp(L_2TAG_PACKET_12_0_1);
__ bind(L_2TAG_PACKET_11_0_1);
__ jcc(Assembler::equal, L_2TAG_PACKET_12_0_1);
__ negl(rcx);
__ shrq(r10);
__ movq(rax, r9);
__ shrq(r9);
__ subl(rdx, rcx);
__ negl(rcx);
__ addl(rcx, 64);
__ shlq(rax);
__ orq(r10, rax);
__ jmp(L_2TAG_PACKET_12_0_1);
__ bind(L_2TAG_PACKET_5_0_1);
__ notl(rcx);
__ shlq(r9, 32);
__ orq(r9, r11);
__ shlq(r9);
__ movq(rdi, r9);
__ testl(r9, INT_MIN);
__ jcc(Assembler::notEqual, L_2TAG_PACKET_13_0_1);
__ shrl(r9);
__ movl(rbx, 0);
__ shrq(rdi, 2);
__ jmp(L_2TAG_PACKET_8_0_1);
__ bind(L_2TAG_PACKET_6_0_1);
__ shrl(r9);
__ movl(rbx, 1073741824);
__ shrl(rbx);
__ shlq(r9, 32);
__ orq(r9, r11);
__ shlq(rbx, 32);
__ addl(rdi, 1073741824);
__ movl(rcx, 0);
__ movl(r11, 0);
__ subq(rcx, r8);
__ sbbq(r11, r10);
__ sbbq(rbx, r9);
__ movq(r8, rcx);
__ movq(r10, r11);
__ movq(r9, rbx);
__ movl(rbx, 32768);
__ jmp(L_2TAG_PACKET_7_0_1);
__ bind(L_2TAG_PACKET_13_0_1);
__ shrl(r9);
__ mov64(rbx, 0x100000000);
__ shrq(rbx);
__ movl(rcx, 0);
__ movl(r11, 0);
__ subq(rcx, r8);
__ sbbq(r11, r10);
__ sbbq(rbx, r9);
__ movq(r8, rcx);
__ movq(r10, r11);
__ movq(r9, rbx);
__ movl(rbx, 32768);
__ shrq(rdi, 2);
__ addl(rdi, 1073741824);
__ jmp(L_2TAG_PACKET_8_0_1);
__ bind(L_2TAG_PACKET_4_0_1);
__ movq(xmm0, Address(rsp, 8));
__ mulsd(xmm0, ExternalAddress(NEG_ZERO), rbx /*rscratch*/); //0x00000000UL, 0x80000000UL
__ movq(Address(rsp, 0), xmm0);
__ bind(L_2TAG_PACKET_14_0_1);
__ bind(B1_4);
__ addq(rsp, 16);
__ pop_ppx(rbx);
#ifdef _WIN64
__ pop_ppx(rdi);
__ pop_ppx(rsi);
#endif
__ leave(); // required for proper stackwalking of RuntimeStub frame
__ ret(0);
return start;
}