< prev index next >

src/hotspot/cpu/x86/macroAssembler_x86_sin.cpp

Print this page
rev 51719 : [mq]: 8210676


 366 ATTRIBUTE_ALIGNED(8) juint _TWO_POW_M55[] =
 367 {
 368     0x00000000UL, 0x3c800000UL
 369 };
 370 
 371 ATTRIBUTE_ALIGNED(8) juint StubRoutines::x86::_P_1[] =
 372 {
 373     0x54400000UL, 0x3fb921fbUL
 374 };
 375 
 376 ATTRIBUTE_ALIGNED(8) juint StubRoutines::x86::_NEG_ZERO[] =
 377 {
 378     0x00000000UL, 0x80000000UL
 379 };
 380 
 381 void MacroAssembler::fast_sin(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ebx, Register ecx, Register edx, Register tmp1, Register tmp2, Register tmp3, Register tmp4) {
 382   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;
 383   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;
 384   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;
 385   Label L_2TAG_PACKET_13_0_1, L_2TAG_PACKET_14_0_1;
 386   Label L_2TAG_PACKET_12_0_1, B1_1, B1_2, B1_4, start;
 387 
 388   assert_different_registers(tmp1, tmp2, tmp3, tmp4, eax, ebx, ecx, edx);
 389   address ONEHALF = StubRoutines::x86::_ONEHALF_addr();
 390   address P_2 = StubRoutines::x86::_P_2_addr();
 391   address SC_4 = StubRoutines::x86::_SC_4_addr();
 392   address Ctable = StubRoutines::x86::_Ctable_addr();
 393   address SC_2 = StubRoutines::x86::_SC_2_addr();
 394   address SC_3 = StubRoutines::x86::_SC_3_addr();
 395   address SC_1 = StubRoutines::x86::_SC_1_addr();
 396   address PI_INV_TABLE = StubRoutines::x86::_PI_INV_TABLE_addr();
 397   address PI_4 = (address)StubRoutines::x86::_PI_4_addr();
 398   address PI32INV = (address)StubRoutines::x86::_PI32INV_addr();
 399   address SHIFTER = (address)_SHIFTER;
 400   address SIGN_MASK = (address)StubRoutines::x86::_SIGN_MASK_addr();
 401   address P_3 = (address)StubRoutines::x86::_P_3_addr();
 402   address ALL_ONES = (address)_ALL_ONES;
 403   address TWO_POW_55 = (address)_TWO_POW_55;
 404   address TWO_POW_M55 = (address)_TWO_POW_M55;
 405   address P_1 = (address)StubRoutines::x86::_P_1_addr();
 406   address NEG_ZERO = (address)StubRoutines::x86::_NEG_ZERO_addr();


1656 };
1657 
1658 ATTRIBUTE_ALIGNED(16) jushort _CP[] =
1659 {
1660     0x0000, 0x0000, 0x0000, 0x8000, 0xbffe, 0x0000, 0xaaa5, 0xaaaa, 0xaaaa, 0xaaaa,
1661     0x3ffa, 0x0000, 0x9c2f, 0x0b60, 0x60b6, 0xb60b, 0xbff5, 0x0000, 0xf024, 0x0cac,
1662     0x00d0, 0xd00d, 0x3fef, 0x0000, 0x03fe, 0x3f65, 0x7dbb, 0x93f2, 0xbfe9, 0x0000,
1663     0xd84d, 0xadee, 0xc698, 0x8f76, 0x3fe2, 0x0000, 0xdaba, 0xfe79, 0xea36, 0xc9c9,
1664     0xbfda, 0x0000, 0x3ac6, 0x0ba0, 0x07ce, 0xd585, 0x3fd2, 0x0000
1665 };
1666 
1667 ATTRIBUTE_ALIGNED(16) juint StubRoutines::x86::_ones[] =
1668 {
1669     0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0xbff00000UL
1670 };
1671 
1672 void MacroAssembler::libm_sincos_huge(XMMRegister xmm0, XMMRegister xmm1, Register eax, Register ecx, Register edx, Register ebx, Register esi, Register edi, Register ebp, Register esp) {
1673   Label B1_1, B1_2, B1_3, B1_4, B1_5, B1_6, B1_7, B1_8, B1_9, B1_10, B1_11, B1_12;
1674   Label B1_13, B1_14, B1_15, B1_16, B1_17, B1_18, B1_19, B1_20, B1_21, B1_22, B1_23;
1675   Label B1_24, B1_25, B1_26, B1_27, B1_28, B1_29, B1_30, B1_31, B1_32, B1_33, B1_34;
1676   Label B1_35, B1_36, B1_37, B1_38, B1_39, B1_40, B1_41, B1_42, B1_43, B1_44, B1_45, B1_46;
1677 
1678   assert_different_registers(ebx, eax, ecx, edx, esi, edi, ebp, esp);
1679 
1680   address L_2il0floatpacket_0 = StubRoutines::x86::_L_2il0floatpacket_0_addr();
1681   address Pi4Inv = StubRoutines::x86::_Pi4Inv_addr();
1682   address Pi4x3 = StubRoutines::x86::_Pi4x3_addr();
1683   address Pi4x4 = StubRoutines::x86::_Pi4x4_addr();
1684   address ones = StubRoutines::x86::_ones_addr();
1685   address CP = (address)_CP;
1686   address SP = (address)_SP;
1687 
1688   bind(B1_1);
1689   push(ebp);
1690   movl(ebp, esp);
1691   andl(esp, -64);
1692   push(esi);
1693   push(edi);
1694   push(ebx);
1695   subl(esp, 52);
1696   movl(eax, Address(ebp, 16));




 366 ATTRIBUTE_ALIGNED(8) juint _TWO_POW_M55[] =
 367 {
 368     0x00000000UL, 0x3c800000UL
 369 };
 370 
 371 ATTRIBUTE_ALIGNED(8) juint StubRoutines::x86::_P_1[] =
 372 {
 373     0x54400000UL, 0x3fb921fbUL
 374 };
 375 
 376 ATTRIBUTE_ALIGNED(8) juint StubRoutines::x86::_NEG_ZERO[] =
 377 {
 378     0x00000000UL, 0x80000000UL
 379 };
 380 
 381 void MacroAssembler::fast_sin(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ebx, Register ecx, Register edx, Register tmp1, Register tmp2, Register tmp3, Register tmp4) {
 382   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;
 383   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;
 384   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;
 385   Label L_2TAG_PACKET_13_0_1, L_2TAG_PACKET_14_0_1;
 386   Label L_2TAG_PACKET_12_0_1, B1_4, start;
 387 
 388   assert_different_registers(tmp1, tmp2, tmp3, tmp4, eax, ebx, ecx, edx);
 389   address ONEHALF = StubRoutines::x86::_ONEHALF_addr();
 390   address P_2 = StubRoutines::x86::_P_2_addr();
 391   address SC_4 = StubRoutines::x86::_SC_4_addr();
 392   address Ctable = StubRoutines::x86::_Ctable_addr();
 393   address SC_2 = StubRoutines::x86::_SC_2_addr();
 394   address SC_3 = StubRoutines::x86::_SC_3_addr();
 395   address SC_1 = StubRoutines::x86::_SC_1_addr();
 396   address PI_INV_TABLE = StubRoutines::x86::_PI_INV_TABLE_addr();
 397   address PI_4 = (address)StubRoutines::x86::_PI_4_addr();
 398   address PI32INV = (address)StubRoutines::x86::_PI32INV_addr();
 399   address SHIFTER = (address)_SHIFTER;
 400   address SIGN_MASK = (address)StubRoutines::x86::_SIGN_MASK_addr();
 401   address P_3 = (address)StubRoutines::x86::_P_3_addr();
 402   address ALL_ONES = (address)_ALL_ONES;
 403   address TWO_POW_55 = (address)_TWO_POW_55;
 404   address TWO_POW_M55 = (address)_TWO_POW_M55;
 405   address P_1 = (address)StubRoutines::x86::_P_1_addr();
 406   address NEG_ZERO = (address)StubRoutines::x86::_NEG_ZERO_addr();


1656 };
1657 
1658 ATTRIBUTE_ALIGNED(16) jushort _CP[] =
1659 {
1660     0x0000, 0x0000, 0x0000, 0x8000, 0xbffe, 0x0000, 0xaaa5, 0xaaaa, 0xaaaa, 0xaaaa,
1661     0x3ffa, 0x0000, 0x9c2f, 0x0b60, 0x60b6, 0xb60b, 0xbff5, 0x0000, 0xf024, 0x0cac,
1662     0x00d0, 0xd00d, 0x3fef, 0x0000, 0x03fe, 0x3f65, 0x7dbb, 0x93f2, 0xbfe9, 0x0000,
1663     0xd84d, 0xadee, 0xc698, 0x8f76, 0x3fe2, 0x0000, 0xdaba, 0xfe79, 0xea36, 0xc9c9,
1664     0xbfda, 0x0000, 0x3ac6, 0x0ba0, 0x07ce, 0xd585, 0x3fd2, 0x0000
1665 };
1666 
1667 ATTRIBUTE_ALIGNED(16) juint StubRoutines::x86::_ones[] =
1668 {
1669     0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0xbff00000UL
1670 };
1671 
1672 void MacroAssembler::libm_sincos_huge(XMMRegister xmm0, XMMRegister xmm1, Register eax, Register ecx, Register edx, Register ebx, Register esi, Register edi, Register ebp, Register esp) {
1673   Label B1_1, B1_2, B1_3, B1_4, B1_5, B1_6, B1_7, B1_8, B1_9, B1_10, B1_11, B1_12;
1674   Label B1_13, B1_14, B1_15, B1_16, B1_17, B1_18, B1_19, B1_20, B1_21, B1_22, B1_23;
1675   Label B1_24, B1_25, B1_26, B1_27, B1_28, B1_29, B1_30, B1_31, B1_32, B1_33, B1_34;
1676   Label B1_35, B1_36, B1_37, B1_38, B1_39, B1_40, B1_41, B1_42, B1_43, B1_46;
1677 
1678   assert_different_registers(ebx, eax, ecx, edx, esi, edi, ebp, esp);
1679 
1680   address L_2il0floatpacket_0 = StubRoutines::x86::_L_2il0floatpacket_0_addr();
1681   address Pi4Inv = StubRoutines::x86::_Pi4Inv_addr();
1682   address Pi4x3 = StubRoutines::x86::_Pi4x3_addr();
1683   address Pi4x4 = StubRoutines::x86::_Pi4x4_addr();
1684   address ones = StubRoutines::x86::_ones_addr();
1685   address CP = (address)_CP;
1686   address SP = (address)_SP;
1687 
1688   bind(B1_1);
1689   push(ebp);
1690   movl(ebp, esp);
1691   andl(esp, -64);
1692   push(esi);
1693   push(edi);
1694   push(ebx);
1695   subl(esp, 52);
1696   movl(eax, Address(ebp, 16));


< prev index next >