trunk/src/emu/cpu/i386/pentops.inc
| r241978 | r241979 | |
| 1892 | 1892 | MMXPROLOG(); |
| 1893 | 1893 | UINT8 modrm = FETCH(); |
| 1894 | 1894 | if( modrm >= 0xc0 ) { |
| 1895 | | MMX((modrm >> 3) & 0x7).d[0]=LOAD_RM32(modrm); |
| 1895 | if (m_xmm_operand_size) |
| 1896 | XMM((modrm >> 3) & 0x7).d[0]=LOAD_RM32(modrm); |
| 1897 | else |
| 1898 | MMX((modrm >> 3) & 0x7).d[0]=LOAD_RM32(modrm); |
| 1896 | 1899 | } else { |
| 1897 | 1900 | UINT32 ea = GetEA(modrm, 0); |
| 1898 | | MMX((modrm >> 3) & 0x7).d[0]=READ32(ea); |
| 1901 | if (m_xmm_operand_size) |
| 1902 | XMM((modrm >> 3) & 0x7).d[0]=READ32(ea); |
| 1903 | else |
| 1904 | MMX((modrm >> 3) & 0x7).d[0]=READ32(ea); |
| 1899 | 1905 | } |
| 1900 | 1906 | MMX((modrm >> 3) & 0x7).d[1]=0; |
| 1901 | 1907 | CYCLES(1); // TODO: correct cycle count |
| r241978 | r241979 | |
| 1906 | 1912 | MMXPROLOG(); |
| 1907 | 1913 | UINT8 modrm = FETCH(); |
| 1908 | 1914 | if( modrm >= 0xc0 ) { |
| 1909 | | MMX((modrm >> 3) & 0x7).l=MMX(modrm & 0x7).l; |
| 1915 | if (m_xmm_operand_size) |
| 1916 | XMM((modrm >> 3) & 0x7).l[0]=XMM(modrm & 0x7).l[0]; |
| 1917 | else |
| 1918 | MMX((modrm >> 3) & 0x7).l=MMX(modrm & 0x7).l; |
| 1910 | 1919 | } else { |
| 1911 | 1920 | UINT32 ea = GetEA(modrm, 0); |
| 1912 | | READMMX(ea, MMX((modrm >> 3) & 0x7)); |
| 1921 | if (m_xmm_operand_size) |
| 1922 | READXMM_LO64(ea, XMM((modrm >> 3) & 0x7)); |
| 1923 | else |
| 1924 | READMMX(ea, MMX((modrm >> 3) & 0x7)); |
| 1925 | |
| 1913 | 1926 | } |
| 1914 | 1927 | CYCLES(1); // TODO: correct cycle count |
| 1915 | 1928 | } |
| r241978 | r241979 | |
| 1919 | 1932 | MMXPROLOG(); |
| 1920 | 1933 | UINT8 modrm = FETCH(); |
| 1921 | 1934 | if( modrm >= 0xc0 ) { |
| 1922 | | STORE_RM32(modrm, MMX((modrm >> 3) & 0x7).d[0]); |
| 1935 | if (m_xmm_operand_size) |
| 1936 | STORE_RM32(modrm, XMM((modrm >> 3) & 0x7).d[0]); |
| 1937 | else |
| 1938 | STORE_RM32(modrm, MMX((modrm >> 3) & 0x7).d[0]); |
| 1923 | 1939 | } else { |
| 1924 | 1940 | UINT32 ea = GetEA(modrm, 0); |
| 1925 | | WRITE32(ea, MMX((modrm >> 3) & 0x7).d[0]); |
| 1941 | if (m_xmm_operand_size) |
| 1942 | WRITE32(ea, XMM((modrm >> 3) & 0x7).d[0]); |
| 1943 | else |
| 1944 | WRITE32(ea, MMX((modrm >> 3) & 0x7).d[0]); |
| 1926 | 1945 | } |
| 1927 | 1946 | CYCLES(1); // TODO: correct cycle count |
| 1928 | 1947 | } |
| r241978 | r241979 | |
| 1932 | 1951 | MMXPROLOG(); |
| 1933 | 1952 | UINT8 modrm = FETCH(); |
| 1934 | 1953 | if( modrm >= 0xc0 ) { |
| 1935 | | MMX(modrm & 0x7)=MMX((modrm >> 3) & 0x7); |
| 1954 | if (m_xmm_operand_size) |
| 1955 | XMM(modrm & 0x7).l[0]=XMM((modrm >> 3) & 0x7).l[0]; |
| 1956 | else |
| 1957 | MMX(modrm & 0x7)=MMX((modrm >> 3) & 0x7); |
| 1936 | 1958 | } else { |
| 1937 | 1959 | UINT32 ea = GetEA(modrm, 0); |
| 1938 | 1960 | WRITEMMX(ea, MMX((modrm >> 3) & 0x7)); |