Previous 199869 Revisions Next

r33467 Thursday 20th November, 2014 at 16:35:06 UTC by Olivier Galibert
pentium: More support of the magic 0x66 prefix [O. Galibert]
[src/emu/cpu/i386]pentops.inc

trunk/src/emu/cpu/i386/pentops.inc
r241978r241979
18921892   MMXPROLOG();
18931893   UINT8 modrm = FETCH();
18941894   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);
18961899   } else {
18971900      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);
18991905   }
19001906   MMX((modrm >> 3) & 0x7).d[1]=0;
19011907   CYCLES(1);     // TODO: correct cycle count
r241978r241979
19061912   MMXPROLOG();
19071913   UINT8 modrm = FETCH();
19081914   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;
19101919   } else {
19111920      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
19131926   }
19141927   CYCLES(1);     // TODO: correct cycle count
19151928}
r241978r241979
19191932   MMXPROLOG();
19201933   UINT8 modrm = FETCH();
19211934   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]);
19231939   } else {
19241940      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]);
19261945   }
19271946   CYCLES(1);     // TODO: correct cycle count
19281947}
r241978r241979
19321951   MMXPROLOG();
19331952   UINT8 modrm = FETCH();
19341953   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);
19361958   } else {
19371959      UINT32 ea = GetEA(modrm, 0);
19381960      WRITEMMX(ea, MMX((modrm >> 3) & 0x7));


Previous 199869 Revisions Next


© 1997-2024 The MAME Team