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