VirtualBox

儲存庫 vbox 的更動 66791


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

IEM: Implemented movhps Mq,Vq (0f 17).

位置:
trunk/src/VBox
檔案:
修改 3 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h

    r66789 r66791  
    19931993 */
    19941994
    1995 /** Opcode      0x0f 0x17 - movhpsv1 Mq, Vq   */
    1996 FNIEMOP_STUB(iemOp_movhps_Mq_Vq);  //NEXT
     1995
     1996/**
     1997 * @opcode      0x17
     1998 * @opcodesub   !11 mr/reg
     1999 * @oppfx       none
     2000 * @opcpuid     sse
     2001 * @opgroup     og_sse_simdfp_datamove
     2002 * @opxcpttype  5
     2003 * @optest      op1=1 op2=2 -> op1=2
     2004 * @optest      op1=0 op2=-42 -> op1=-42
     2005 */
     2006FNIEMOP_DEF(iemOp_movhps_Mq_Vq)
     2007{
     2008    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
     2009    if ((bRm & X86_MODRM_MOD_MASK) != (3 << X86_MODRM_MOD_SHIFT))
     2010    {
     2011        IEMOP_MNEMONIC2(MR_MEM, MOVHPS, movhps, MqWO, VqHi, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     2012
     2013        IEM_MC_BEGIN(0, 2);
     2014        IEM_MC_LOCAL(uint64_t,                  uSrc);
     2015        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     2016
     2017        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
     2018        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     2019        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     2020        IEM_MC_ACTUALIZE_SSE_STATE_FOR_READ();
     2021
     2022        IEM_MC_FETCH_XREG_HI_U64(uSrc, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg);
     2023        IEM_MC_STORE_MEM_U64(pVCpu->iem.s.iEffSeg, GCPtrEffSrc, uSrc);
     2024
     2025        IEM_MC_ADVANCE_RIP();
     2026        IEM_MC_END();
     2027        return VINF_SUCCESS;
     2028    }
     2029
     2030    /**
     2031     * @opdone
     2032     * @opmnemonic  ud0f17m3
     2033     * @opcode      0x17
     2034     * @opcodesub   11 mr/reg
     2035     * @oppfx       none
     2036     * @opunused    immediate
     2037     * @opcpuid     sse
     2038     * @optest      ->
     2039     */
     2040    return IEMOP_RAISE_INVALID_OPCODE();
     2041}
     2042
    19972043/** Opcode 0x66 0x0f 0x17 - movhpdv1 Mq, Vq   */
    19982044FNIEMOP_STUB(iemOp_movhpd_Mq_Vq);  //NEXT
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1-template.c

    r66785 r66791  
    20122012
    20132013
     2014static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_MqWO_VqHi(PBS3CG1STATE pThis, unsigned iEncoding)
     2015{
     2016    unsigned off;
     2017    if (iEncoding == 0)
     2018    {
     2019        pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM2_HI;
     2020        off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0));
     2021        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 8, 0, BS3CG1OPLOC_MEM_RW);
     2022    }
     2023    else if (iEncoding == 1)
     2024    {
     2025        pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM3_HI;
     2026        off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0));
     2027        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 8, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_RW);
     2028    }
     2029    else
     2030        return 0;
     2031    pThis->cbCurInstr = off;
     2032    return iEncoding + 1;
     2033}
     2034
     2035
    20142036static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_FIXED(PBS3CG1STATE pThis, unsigned iEncoding)
    20152037{
     
    22232245        case BS3CG1ENC_MODRM_MqWO_Vq:
    22242246            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_MqWO_Vq(pThis, iEncoding);
     2247        case BS3CG1ENC_MODRM_MqWO_VqHi:
     2248            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_MqWO_VqHi(pThis, iEncoding);
    22252249
    22262250        case BS3CG1ENC_FIXED:
     
    24252449
    24262450        case BS3CG1ENC_MODRM_MqWO_Vq:
     2451        case BS3CG1ENC_MODRM_MqWO_VqHi:
    24272452            pThis->iRmOp             = 0;
    24282453            pThis->iRegOp            = 1;
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1.h

    r66785 r66791  
    118118    BS3CG1ENC_MODRM_MdWO,
    119119    BS3CG1ENC_MODRM_MqWO_Vq,
     120    BS3CG1ENC_MODRM_MqWO_VqHi,
    120121
    121122    BS3CG1ENC_VEX_MODRM_MdWO,
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

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