VirtualBox

Changeset 67008 in vbox


Ignore:
Timestamp:
May 22, 2017 11:56:11 AM (8 years ago)
Author:
vboxsync
Message:

IEM: movdqa Vdq,Wdq (0x66 0x0f 0x6f) tests.

File:
1 edited

Legend:

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

    r67007 r67008  
    35693569         * @oppfx       0x66
    35703570         * @opcpuid     sse2
    3571          * @opgroup     og_sse2_simdint_datamov
     3571         * @opgroup     og_sse2_simdint_datamove
    35723572         * @opxcpttype  5
    35733573         * @optest      64-bit / op1=1 op2=2   -> op1=2
     
    36183618         * @oppfx       0x66
    36193619         * @opcpuid     sse2
    3620          * @opgroup     og_sse2_simdint_datamov
     3620         * @opgroup     og_sse2_simdint_datamove
    36213621         * @opxcpttype  5
    36223622         * @opfunction  iemOp_movd_q_Vy_Ey
     
    36693669 * @opcode      0x6f
    36703670 * @oppfx       none
    3671  * @opcpuid     sse2
     3671 * @opcpuid     mmx
    36723672 * @opgroup     og_mmx_datamove
    36733673 * @opxcpttype  5
    36743674 * @optest      op1=1 op2=2   -> op1=2   ftw=0xff
    36753675 * @optest      op1=0 op2=-42 -> op1=-42 ftw=0xff
    3676  * @oponly
    36773676 */
    36783677FNIEMOP_DEF(iemOp_movq_Pq_Qq)
    36793678{
    3680     uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    36813679    IEMOP_MNEMONIC2(RM, MOVD, movd, Pq_WO, Qq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES);
     3680    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    36823681    if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT))
    36833682    {
     
    37233722}
    37243723
    3725 /** Opcode 0x66 0x0f 0x6f - movdqa Vx, Wx */
    3726 FNIEMOP_DEF(iemOp_movdqa_Vx_Wx)
    3727 {
    3728     uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    3729     IEMOP_MNEMONIC(movdqa_Vdq_Wdq, "movdqa Vdq,Wdq");
     3724/**
     3725 * @opcode      0x6f
     3726 * @oppfx       0x66
     3727 * @opcpuid     sse2
     3728 * @opgroup     og_sse2_simdint_datamove
     3729 * @opxcpttype  1
     3730 * @optest      op1=1 op2=2   -> op1=2
     3731 * @optest      op1=0 op2=-42 -> op1=-42
     3732 */
     3733FNIEMOP_DEF(iemOp_movdqa_Vdq_Wdq)
     3734{
     3735    IEMOP_MNEMONIC2(RM, MOVDQA, movdqa, Vdq_WO, Wdq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES);
     3736    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    37303737    if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT))
    37313738    {
     
    37353742        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    37363743        IEM_MC_BEGIN(0, 0);
     3744
    37373745        IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT();
    37383746        IEM_MC_ACTUALIZE_SSE_STATE_FOR_CHANGE();
     3747
    37393748        IEM_MC_COPY_XREG_U128(((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg,
    37403749                              (bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB);
     
    37553764        IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT();
    37563765        IEM_MC_ACTUALIZE_SSE_STATE_FOR_CHANGE();
     3766
    37573767        IEM_MC_FETCH_MEM_U128_ALIGN_SSE(u128Tmp, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
    37583768        IEM_MC_STORE_XREG_U128(((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg, u128Tmp);
     
    91859195    /* 0x6d */  iemOp_InvalidNeedRM,        iemOp_punpckhqdq_Vx_W,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    91869196    /* 0x6e */  iemOp_movd_q_Pd_Ey,         iemOp_movd_q_Vy_Ey,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    9187     /* 0x6f */  iemOp_movq_Pq_Qq,           iemOp_movdqa_Vx_Wx,         iemOp_movdqu_Vx_Wx,         iemOp_InvalidNeedRM,
     9197    /* 0x6f */  iemOp_movq_Pq_Qq,           iemOp_movdqa_Vdq_Wdq,       iemOp_movdqu_Vx_Wx,         iemOp_InvalidNeedRM,
    91889198
    91899199    /* 0x70 */  iemOp_pshufw_Pq_Qq_Ib,      iemOp_pshufd_Vx_Wx_Ib,      iemOp_pshufhw_Vx_Wx_Ib,     iemOp_pshuflw_Vx_Wx_Ib,
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