Revision d014c98c op-i386.c
b/op-i386.c | ||
---|---|---|
1605 | 1605 |
|
1606 | 1606 |
void OPPROTO op_flds_FT0_A0(void) |
1607 | 1607 |
{ |
1608 |
#ifdef USE_FP_CONVERT |
|
1609 |
FP_CONVERT.i32 = ldl((void *)A0); |
|
1610 |
FT0 = FP_CONVERT.f; |
|
1611 |
#else |
|
1608 | 1612 |
FT0 = ldfl((void *)A0); |
1613 |
#endif |
|
1609 | 1614 |
} |
1610 | 1615 |
|
1611 | 1616 |
void OPPROTO op_fldl_FT0_A0(void) |
1612 | 1617 |
{ |
1618 |
#ifdef USE_FP_CONVERT |
|
1619 |
FP_CONVERT.i64 = ldq((void *)A0); |
|
1620 |
FT0 = FP_CONVERT.d; |
|
1621 |
#else |
|
1613 | 1622 |
FT0 = ldfq((void *)A0); |
1623 |
#endif |
|
1614 | 1624 |
} |
1615 | 1625 |
|
1616 | 1626 |
/* helpers are needed to avoid static constant reference. XXX: find a better way */ |
... | ... | |
1650 | 1660 |
|
1651 | 1661 |
void OPPROTO op_fild_FT0_A0(void) |
1652 | 1662 |
{ |
1663 |
#ifdef USE_FP_CONVERT |
|
1664 |
FP_CONVERT.i32 = ldsw((void *)A0); |
|
1665 |
FT0 = (CPU86_LDouble)FP_CONVERT.i32; |
|
1666 |
#else |
|
1653 | 1667 |
FT0 = (CPU86_LDouble)ldsw((void *)A0); |
1668 |
#endif |
|
1654 | 1669 |
} |
1655 | 1670 |
|
1656 | 1671 |
void OPPROTO op_fildl_FT0_A0(void) |
1657 | 1672 |
{ |
1673 |
#ifdef USE_FP_CONVERT |
|
1674 |
FP_CONVERT.i32 = (int32_t) ldl((void *)A0); |
|
1675 |
FT0 = (CPU86_LDouble)FP_CONVERT.i32; |
|
1676 |
#else |
|
1658 | 1677 |
FT0 = (CPU86_LDouble)((int32_t)ldl((void *)A0)); |
1678 |
#endif |
|
1659 | 1679 |
} |
1660 | 1680 |
|
1661 | 1681 |
void OPPROTO op_fildll_FT0_A0(void) |
1662 | 1682 |
{ |
1683 |
#ifdef USE_FP_CONVERT |
|
1684 |
FP_CONVERT.i64 = (int64_t) ldq((void *)A0); |
|
1685 |
FT0 = (CPU86_LDouble)FP_CONVERT.i64; |
|
1686 |
#else |
|
1663 | 1687 |
FT0 = (CPU86_LDouble)((int64_t)ldq((void *)A0)); |
1688 |
#endif |
|
1664 | 1689 |
} |
1665 | 1690 |
#endif |
1666 | 1691 |
|
... | ... | |
1668 | 1693 |
|
1669 | 1694 |
void OPPROTO op_flds_ST0_A0(void) |
1670 | 1695 |
{ |
1696 |
#ifdef USE_FP_CONVERT |
|
1697 |
FP_CONVERT.i32 = ldl((void *)A0); |
|
1698 |
ST0 = FP_CONVERT.f; |
|
1699 |
#else |
|
1671 | 1700 |
ST0 = ldfl((void *)A0); |
1701 |
#endif |
|
1672 | 1702 |
} |
1673 | 1703 |
|
1674 | 1704 |
void OPPROTO op_fldl_ST0_A0(void) |
1675 | 1705 |
{ |
1706 |
#ifdef USE_FP_CONVERT |
|
1707 |
FP_CONVERT.i64 = ldq((void *)A0); |
|
1708 |
ST0 = FP_CONVERT.d; |
|
1709 |
#else |
|
1676 | 1710 |
ST0 = ldfq((void *)A0); |
1711 |
#endif |
|
1677 | 1712 |
} |
1678 | 1713 |
|
1679 | 1714 |
#ifdef USE_X86LDOUBLE |
... | ... | |
1738 | 1773 |
|
1739 | 1774 |
void OPPROTO op_fild_ST0_A0(void) |
1740 | 1775 |
{ |
1776 |
#ifdef USE_FP_CONVERT |
|
1777 |
FP_CONVERT.i32 = ldsw((void *)A0); |
|
1778 |
ST0 = (CPU86_LDouble)FP_CONVERT.i32; |
|
1779 |
#else |
|
1741 | 1780 |
ST0 = (CPU86_LDouble)ldsw((void *)A0); |
1781 |
#endif |
|
1742 | 1782 |
} |
1743 | 1783 |
|
1744 | 1784 |
void OPPROTO op_fildl_ST0_A0(void) |
1745 | 1785 |
{ |
1786 |
#ifdef USE_FP_CONVERT |
|
1787 |
FP_CONVERT.i32 = (int32_t) ldl((void *)A0); |
|
1788 |
ST0 = (CPU86_LDouble)FP_CONVERT.i32; |
|
1789 |
#else |
|
1746 | 1790 |
ST0 = (CPU86_LDouble)((int32_t)ldl((void *)A0)); |
1791 |
#endif |
|
1747 | 1792 |
} |
1748 | 1793 |
|
1749 | 1794 |
void OPPROTO op_fildll_ST0_A0(void) |
1750 | 1795 |
{ |
1796 |
#ifdef USE_FP_CONVERT |
|
1797 |
FP_CONVERT.i64 = (int64_t) ldq((void *)A0); |
|
1798 |
ST0 = (CPU86_LDouble)FP_CONVERT.i64; |
|
1799 |
#else |
|
1751 | 1800 |
ST0 = (CPU86_LDouble)((int64_t)ldq((void *)A0)); |
1801 |
#endif |
|
1752 | 1802 |
} |
1753 | 1803 |
|
1754 | 1804 |
#endif |
... | ... | |
1757 | 1807 |
|
1758 | 1808 |
void OPPROTO op_fsts_ST0_A0(void) |
1759 | 1809 |
{ |
1810 |
#ifdef USE_FP_CONVERT |
|
1811 |
FP_CONVERT.d = ST0; |
|
1812 |
stfl((void *)A0, FP_CONVERT.f); |
|
1813 |
#else |
|
1760 | 1814 |
stfl((void *)A0, (float)ST0); |
1815 |
#endif |
|
1761 | 1816 |
} |
1762 | 1817 |
|
1763 | 1818 |
void OPPROTO op_fstl_ST0_A0(void) |
... | ... | |
1792 | 1847 |
|
1793 | 1848 |
void OPPROTO op_fist_ST0_A0(void) |
1794 | 1849 |
{ |
1850 |
#if defined(__sparc__) && !defined(__sparc_v9__) |
|
1851 |
register CPU86_LDouble d asm("o0"); |
|
1852 |
#else |
|
1853 |
CPU86_LDouble d; |
|
1854 |
#endif |
|
1795 | 1855 |
int val; |
1796 |
val = lrint(ST0); |
|
1856 |
|
|
1857 |
d = ST0; |
|
1858 |
val = lrint(d); |
|
1797 | 1859 |
stw((void *)A0, val); |
1798 | 1860 |
} |
1799 | 1861 |
|
1800 | 1862 |
void OPPROTO op_fistl_ST0_A0(void) |
1801 | 1863 |
{ |
1864 |
#if defined(__sparc__) && !defined(__sparc_v9__) |
|
1865 |
register CPU86_LDouble d asm("o0"); |
|
1866 |
#else |
|
1867 |
CPU86_LDouble d; |
|
1868 |
#endif |
|
1802 | 1869 |
int val; |
1803 |
val = lrint(ST0); |
|
1870 |
|
|
1871 |
d = ST0; |
|
1872 |
val = lrint(d); |
|
1804 | 1873 |
stl((void *)A0, val); |
1805 | 1874 |
} |
1806 | 1875 |
|
1807 | 1876 |
void OPPROTO op_fistll_ST0_A0(void) |
1808 | 1877 |
{ |
1878 |
#if defined(__sparc__) && !defined(__sparc_v9__) |
|
1879 |
register CPU86_LDouble d asm("o0"); |
|
1880 |
#else |
|
1881 |
CPU86_LDouble d; |
|
1882 |
#endif |
|
1809 | 1883 |
int64_t val; |
1810 |
val = llrint(ST0); |
|
1884 |
|
|
1885 |
d = ST0; |
|
1886 |
val = llrint(d); |
|
1811 | 1887 |
stq((void *)A0, val); |
1812 | 1888 |
} |
1813 | 1889 |
|
Also available in: Unified diff