VirtualBox

儲存庫 vbox 的更動 66808


忽略:
時間撮記:
2017-5-5 下午12:06:21 (8 年 以前)
作者:
vboxsync
訊息:

IEM: Implemented movq Vq,Wq (f3 0f 73)

位置:
trunk
檔案:
修改 5 筆資料

圖例:

未更動
新增
刪除
  • trunk/include/VBox/disopcode.h

    r66785 r66808  
    10701070#define OP_PARM_VsdZxReg        OP_PARM_Vsd             /**< Annotates that register targets get their upper bits cleared. */
    10711071#define OP_PARM_VqHi            OP_PARM_Vdq             /**< Annotates that only YMM/XMM[127:64] are accessed. */
     1072#define OP_PARM_VqZxReg         OP_PARM_Vq              /**< Annotates that register targets get their upper bits cleared */
    10721073#define OP_PARM_MbRO            OP_PARM_Mb              /**< Annotates read only memory byte operand. */
    10731074#define OP_PARM_MdRO            OP_PARM_Md              /**< Annotates read only memory byte operand. */
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsPython.py

    r66785 r66808  
    221221    'Wpd':  ( 'IDX_UseModRM',       'rm',     '%Wpd', 'Wpd',     ),
    222222    'Wdq':  ( 'IDX_UseModRM',       'rm',     '%Wdq', 'Wdq',     ),
     223    'Wq':   ( 'IDX_UseModRM',       'rm',     '%Wq',  'Wq',      ),
    223224    'WqZxReg': ( 'IDX_UseModRM',    'rm',     '%Wq',  'Wq',      ),
    224225
     
    250251    'Vdq':  ( 'IDX_UseModRM',       'reg',    '%Vdq', 'Vdq',     ),
    251252    'VqHi': ( 'IDX_UseModRM',       'reg',    '%Vdq', 'VdqHi',   ),
     253    'VqZxReg': ( 'IDX_UseModRM',    'reg',    '%Vq',  'VqZx',   ),
    252254
    253255    # Immediate values.
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h

    r66792 r66808  
    19301930 * @optest      op1=-1 op2=0x00000002dddddddd00000001eeeeeeee ->
    19311931 *              op1=0x00000002000000020000000100000001
    1932  * @oponly
    19331932 */
    19341933FNIEMOP_DEF(iemOp_movshdup_Vdq_Wdq)
     
    43134312}
    43144313
    4315 /** Opcode 0xf3 0x0f 0x7e - movq Vq, Wq */
    4316 FNIEMOP_STUB(iemOp_movq_Vq_Wq);
     4314
     4315/**
     4316 * @opcode      0x7e
     4317 * @opcodesub   !11 mr/reg
     4318 * @oppfx       0xf3
     4319 * @opcpuid     sse2
     4320 * @opgroup     og_sse2_pcksclr_datamove
     4321 * @opxcpttype  5
     4322 * @optest      op1=1 op2=2 -> op1=2
     4323 * @optest      op1=0 op2=-42 -> op1=-42
     4324 * @oponly
     4325 */
     4326FNIEMOP_DEF(iemOp_movq_Vq_Wq)
     4327{
     4328    IEMOP_MNEMONIC2(RM, MOVQ, movq, VqZxReg, Wq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     4329    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
     4330    if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT))
     4331    {
     4332        /*
     4333         * Register, register.
     4334         */
     4335        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     4336        IEM_MC_BEGIN(0, 2);
     4337        IEM_MC_LOCAL(uint64_t,                  uSrc);
     4338
     4339        IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT();
     4340        IEM_MC_ACTUALIZE_SSE_STATE_FOR_CHANGE();
     4341
     4342        IEM_MC_FETCH_XREG_U64(uSrc, (bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB);
     4343        IEM_MC_STORE_XREG_U64_ZX_U128(((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg, uSrc);
     4344
     4345        IEM_MC_ADVANCE_RIP();
     4346        IEM_MC_END();
     4347    }
     4348    else
     4349    {
     4350        /*
     4351         * Memory, register.
     4352         */
     4353        IEM_MC_BEGIN(0, 2);
     4354        IEM_MC_LOCAL(uint64_t,                  uSrc);
     4355        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     4356
     4357        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
     4358        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     4359        IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT();
     4360        IEM_MC_ACTUALIZE_SSE_STATE_FOR_CHANGE();
     4361
     4362        IEM_MC_FETCH_MEM_U64(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
     4363        IEM_MC_STORE_XREG_U64_ZX_U128(((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg, uSrc);
     4364
     4365        IEM_MC_ADVANCE_RIP();
     4366        IEM_MC_END();
     4367    }
     4368    return VINF_SUCCESS;
     4369}
     4370
    43174371/*  Opcode 0xf2 0x0f 0x7e - invalid */
    43184372
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1-template.c

    r66791 r66808  
    17671767
    17681768
    1769 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VsdZxReg_Wsd(PBS3CG1STATE pThis, unsigned iEncoding)
     1769static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VsdZxReg_Wsd__OR__MODRM_VqZxReg_Wq(PBS3CG1STATE pThis,
     1770                                                                                                  unsigned iEncoding)
    17701771{
    17711772    unsigned off;
     
    22302231            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VssZxReg_Wss(pThis, iEncoding);
    22312232        case BS3CG1ENC_MODRM_VsdZxReg_Wsd:
    2232             return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VsdZxReg_Wsd(pThis, iEncoding);
     2233        case BS3CG1ENC_MODRM_VqZxReg_Wq:
     2234            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VsdZxReg_Wsd__OR__MODRM_VqZxReg_Wq(pThis, iEncoding);
    22332235
    22342236        case BS3CG1ENC_MODRM_Gv_Ma:
     
    24212423
    24222424        case BS3CG1ENC_MODRM_VsdZxReg_Wsd:
     2425        case BS3CG1ENC_MODRM_VqZxReg_Wq:
    24232426            pThis->iRmOp             = 1;
    24242427            pThis->iRegOp            = 0;
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1.h

    r66791 r66808  
    4949    BS3CG1OP_Wpd,
    5050    BS3CG1OP_Wdq,
     51    BS3CG1OP_Wq,
    5152    BS3CG1OP_WqZxReg,
    5253
     
    6465    BS3CG1OP_Vdq,
    6566    BS3CG1OP_VqHi,
     67    BS3CG1OP_VqZxReg,
    6668
    6769    BS3CG1OP_Ib,
     
    114116    BS3CG1ENC_MODRM_VssZxReg_Wss,
    115117    BS3CG1ENC_MODRM_VsdZxReg_Wsd,
     118    BS3CG1ENC_MODRM_VqZxReg_Wq,
    116119    BS3CG1ENC_MODRM_MbRO,
    117120    BS3CG1ENC_MODRM_MdRO,
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

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