VirtualBox

Changeset 66311 in vbox for trunk/src


Ignore:
Timestamp:
Mar 28, 2017 3:51:53 PM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
114240
Message:

IEM: Implemented movlpd Vq,Mq (66 0f 12).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h

    r66309 r66311  
    13011301         * @oponlytest
    13021302         */
    1303         IEMOP_MNEMONIC2(RM, MOVHLPS, movhlps, Vq, UqHi, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     1303        IEMOP_MNEMONIC2(RM_REG, MOVHLPS, movhlps, Vq, UqHi, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    13041304
    13051305        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    13291329         * @oponlytest
    13301330         */
    1331         IEMOP_MNEMONIC2(RM, MOVLPS, movlps, Vq, Mq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     1331        IEMOP_MNEMONIC2(RM_MEM, MOVLPS, movlps, Vq, Mq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    13321332
    13331333        IEM_MC_BEGIN(0, 2);
     
    13491349}
    13501350
    1351 /** Opcode 0x66 0x0f 0x12. */
    1352 FNIEMOP_STUB(iemOp_vmovlpd_Vq_Hq_Mq); //NEXT
     1351
     1352FNIEMOP_DEF(iemOp_vmovlpd_Vq_Hq_Mq)
     1353{
     1354    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
     1355    if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT))
     1356    {
     1357        /**
     1358         * @todo figure this out!
     1359         * opcode      0x12
     1360         * todo        11 /reg
     1361         * oppfx       0x66
     1362         * openc       ModR/M
     1363         * opcpuid     sse2
     1364         * opgroup     og_sse_simdfp_datamove
     1365         * opunused    immediate
     1366         * optest      op1=1 op2=2 -> op1=2
     1367         * oponlytest
     1368         */
     1369        return IEMOP_RAISE_INVALID_OPCODE();
     1370    }
     1371    else
     1372    {
     1373        /**
     1374         * @opdone
     1375         * @opcode      0x12
     1376         * @oppfx       0x66
     1377         * @opcpuid     sse2
     1378         * @opgroup     og_sse2_pcksclr_datamove
     1379         * @opxcpttype  5
     1380         * @optest      op1=1 op2=2 -> op1=2
     1381         * @optest      op1=0 op2=-42 -> op1=-42
     1382         * @opfunction  iemOp_vmovlpd_Vq_Hq_Mq
     1383         * @oponlytest
     1384         */
     1385        IEMOP_MNEMONIC2(RM_MEM, MOVLPD, movlpd, Vq, Mq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     1386
     1387        IEM_MC_BEGIN(0, 2);
     1388        IEM_MC_LOCAL(uint64_t,                  uSrc);
     1389        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     1390
     1391        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
     1392        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     1393        IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT();
     1394        IEM_MC_ACTUALIZE_SSE_STATE_FOR_CHANGE();
     1395
     1396        IEM_MC_FETCH_MEM_U64(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
     1397        IEM_MC_STORE_XREG_U64(((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg, uSrc);
     1398
     1399        IEM_MC_ADVANCE_RIP();
     1400        IEM_MC_END();
     1401    }
     1402    return VINF_SUCCESS;
     1403}
     1404
    13531405
    13541406/** Opcode 0xf3 0x0f 0x12. */
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette