VirtualBox

Changeset 103899 in vbox


Ignore:
Timestamp:
Mar 18, 2024 3:57:16 PM (13 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
162271
Message:

VMM/IEM: More mnemonic @todos. bugref:9898

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/disopcode-x86-amd64.h

    r103717 r103899  
    14321432
    14331433/* For making IEM / bs3-cpu-generated-1 happy: */
     1434#define OP_PARM_Ew_WO           OP_PARM_Ew              /**< Annotates write only operand. */
    14341435#define OP_PARM_Ed_WO           OP_PARM_Ed              /**< Annotates write only operand. */
    14351436#define OP_PARM_Eq              (OP_PARM_E+OP_PARM_q)
     
    14691470#define OP_PARM_VqHi_WO         OP_PARM_Vdq             /**< Annotates that only YMM/XMM[127:64] are written. */
    14701471#define OP_PARM_VqZx_WO         OP_PARM_Vq              /**< Annotates that the registers get their upper bits cleared */
     1472#define OP_PARM_Vqq_WO          OP_PARM_Vq              /**< Annotates write only operand. */
    14711473#define OP_PARM_VsdZx_WO        OP_PARM_Vsd             /**< Annotates that the registers get their upper bits cleared. */
    14721474#define OP_PARM_VssZx_WO        OP_PARM_Vss             /**< Annotates that the registers get their upper bits cleared. */
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstPython.py

    r103898 r103899  
    238238    'Eq_WO':        ( 'IDX_UseModRM',       'rm',     '%Eq',  'Eq',      'RM',    ),
    239239    'Ew':           ( 'IDX_UseModRM',       'rm',     '%Ew',  'Ew',      'RM',    ),
     240    'Ew_WO':        ( 'IDX_UseModRM',       'rm',     '%Ew',  'Ew',      'RM',    ),
    240241    'Ev':           ( 'IDX_UseModRM',       'rm',     '%Ev',  'Ev',      'RM',    ),
    241242    'Ey':           ( 'IDX_UseModRM',       'rm',     '%Ey',  'Ey',      'RM',    ),
     
    256257    'Wq_WO':        ( 'IDX_UseModRM',       'rm',     '%Wq',  'Wq',      'RM',    ),
    257258    'WqZxReg_WO':   ( 'IDX_UseModRM',       'rm',     '%Wq',  'Wq',      'RM',    ),
     259    'Wqq':          ( 'IDX_UseModRM',       'rm',     '%Wqq', 'Wqq',     'RM',    ),
     260    'Wqq_WO':       ( 'IDX_UseModRM',       'rm',     '%Wqq', 'Wqq',     'RM',    ),
    258261    'Wx':           ( 'IDX_UseModRM',       'rm',     '%Wx',  'Wx',      'RM',    ),
    259262    'Wx_WO':        ( 'IDX_UseModRM',       'rm',     '%Wx',  'Wx',      'RM',    ),
     
    262265    'Uq':           ( 'IDX_UseModRM',       'rm',     '%Uq',  'Uq',      'REG'    ),
    263266    'UqHi':         ( 'IDX_UseModRM',       'rm',     '%Uq',  'UqHi',    'REG'    ),
     267    'Uqq':          ( 'IDX_UseModRM',       'rm',     '%Uqq', 'Uqq',     'REG'    ),
    264268    'Uss':          ( 'IDX_UseModRM',       'rm',     '%Uss', 'Uss',     'REG'    ),
    265269    'Uss_WO':       ( 'IDX_UseModRM',       'rm',     '%Uss', 'Uss',     'REG'    ),
     
    317321    'VqHi_WO':      ( 'IDX_UseModRM',       'reg',    '%Vdq', 'VdqHi',   '',      ),
    318322    'VqZx_WO':      ( 'IDX_UseModRM',       'reg',    '%Vq',  'VqZx',    '',      ),
     323    'Vqq':          ( 'IDX_UseModRM',       'reg',    '%Vqq', 'Vqq',     '',      ),
     324    'Vqq_WO':       ( 'IDX_UseModRM',       'reg',    '%Vqq', 'Vqq',     '',      ),
    319325    'Vx':           ( 'IDX_UseModRM',       'reg',    '%Vx',  'Vx',      '',      ),
    320326    'Vx_WO':        ( 'IDX_UseModRM',       'reg',    '%Vx',  'Vx',      '',      ),
     
    328334    'Hq':           ( 'IDX_UseModRM',       'vvvv',   '%Hq',  'Hq',      'V',     ),
    329335    'HqHi':         ( 'IDX_UseModRM',       'vvvv',   '%Hq',  'HqHi',    'V',     ),
     336    'Hqq':          ( 'IDX_UseModRM',       'vvvv',   '%Hqq', 'Hqq',     'V',     ),
    330337    'Hx':           ( 'IDX_UseModRM',       'vvvv',   '%Hx',  'Hx',      'V',     ),
    331338
     
    376383
    377384## IEMFORM_XXX mappings.
    378 g_kdIemForms = {     # sEncoding,   [ sWhere1, ... ]         opcodesub      ),
    379     'RM':           ( 'ModR/M',     [ 'reg', 'rm' ],         '',            ),
    380     'RM_REG':       ( 'ModR/M',     [ 'reg', 'rm' ],         '11 mr/reg',   ),
    381     'RM_MEM':       ( 'ModR/M',     [ 'reg', 'rm' ],         '!11 mr/reg',  ),
    382     'RMI':          ( 'ModR/M',     [ 'reg', 'rm', 'imm' ],  '',            ),
    383     'RMI_REG':      ( 'ModR/M',     [ 'reg', 'rm', 'imm' ],  '11 mr/reg',   ),
    384     'RMI_MEM':      ( 'ModR/M',     [ 'reg', 'rm', 'imm' ],  '!11 mr/reg',  ),
    385     'MR':           ( 'ModR/M',     [ 'rm', 'reg' ],         '',            ),
    386     'MR_REG':       ( 'ModR/M',     [ 'rm', 'reg' ],         '11 mr/reg',   ),
    387     'MR_MEM':       ( 'ModR/M',     [ 'rm', 'reg' ],         '!11 mr/reg',  ),
    388     'MRI':          ( 'ModR/M',     [ 'rm', 'reg', 'imm' ],  '',            ),
    389     'MRI_REG':      ( 'ModR/M',     [ 'rm', 'reg', 'imm' ],  '11 mr/reg',   ),
    390     'MRI_MEM':      ( 'ModR/M',     [ 'rm', 'reg', 'imm' ],  '!11 mr/reg',  ),
    391     'M':            ( 'ModR/M',     [ 'rm', ],               '',            ),
    392     'M_REG':        ( 'ModR/M',     [ 'rm', ],               '',            ),
    393     'M_MEM':        ( 'ModR/M',     [ 'rm', ],               '',            ),
    394     'M1':           ( 'ModR/M',     [ 'rm', '1' ],           '',            ),
    395     'M_CL':         ( 'ModR/M',     [ 'rm', 'CL' ],          '',            ), # shl/rcl/ror/++
    396     'MI':           ( 'ModR/M',     [ 'rm', 'imm' ],         '',            ),
    397     'MI_REG':       ( 'ModR/M',     [ 'rm', 'imm' ],         '11 mr/reg',   ),
    398     'MI_MEM':       ( 'ModR/M',     [ 'rm', 'imm' ],         '!11 mr/reg',  ),
    399     'R':            ( 'ModR/M',     [ 'reg', ],              '',            ),
    400 
    401     'VEX_RM':       ( 'VEX.ModR/M', [ 'reg', 'rm' ],         '',            ),
    402     'VEX_RM_REG':   ( 'VEX.ModR/M', [ 'reg', 'rm' ],         '11 mr/reg',   ),
    403     'VEX_RM_MEM':   ( 'VEX.ModR/M', [ 'reg', 'rm' ],         '!11 mr/reg',  ),
    404     'VEX_MR':       ( 'VEX.ModR/M', [ 'rm', 'reg' ],         '',            ),
    405     'VEX_MR_REG':   ( 'VEX.ModR/M', [ 'rm', 'reg' ],         '11 mr/reg',   ),
    406     'VEX_MR_MEM':   ( 'VEX.ModR/M', [ 'rm', 'reg' ],         '!11 mr/reg',  ),
    407     'VEX_MRI':      ( 'VEX.ModR/M', [ 'rm', 'reg', 'imm' ],  '',            ),
    408     'VEX_MRI_REG':  ( 'VEX.ModR/M', [ 'rm', 'reg', 'imm' ],  '11 mr/reg',   ),
    409     'VEX_MRI_MEM':  ( 'VEX.ModR/M', [ 'rm', 'reg', 'imm' ],  '!11 mr/reg',  ),
    410     'VEX_M':        ( 'VEX.ModR/M', [ 'rm', ],               '' ),
    411     'VEX_M_REG':    ( 'VEX.ModR/M', [ 'rm', ],               '' ),
    412     'VEX_M_MEM':    ( 'VEX.ModR/M', [ 'rm', ],               '' ),
    413     'VEX_R':        ( 'VEX.ModR/M', [ 'reg', ],              '' ),
    414     'VEX_RVM':      ( 'VEX.ModR/M', [ 'reg', 'vvvv', 'rm' ], '',            ),
    415     'VEX_RVM_REG':  ( 'VEX.ModR/M', [ 'reg', 'vvvv', 'rm' ], '11 mr/reg',   ),
    416     'VEX_RVM_MEM':  ( 'VEX.ModR/M', [ 'reg', 'vvvv', 'rm' ], '!11 mr/reg',  ),
    417     'VEX_RMV':      ( 'VEX.ModR/M', [ 'reg', 'rm', 'vvvv' ], '',            ),
    418     'VEX_RMV_REG':  ( 'VEX.ModR/M', [ 'reg', 'rm', 'vvvv' ], '11 mr/reg',   ),
    419     'VEX_RMV_MEM':  ( 'VEX.ModR/M', [ 'reg', 'rm', 'vvvv' ], '!11 mr/reg',  ),
    420     'VEX_RMI':      ( 'VEX.ModR/M', [ 'reg', 'rm', 'imm' ],  '',            ),
    421     'VEX_RMI_REG':  ( 'VEX.ModR/M', [ 'reg', 'rm', 'imm' ],  '11 mr/reg',   ),
    422     'VEX_RMI_MEM':  ( 'VEX.ModR/M', [ 'reg', 'rm', 'imm' ],  '!11 mr/reg',  ),
    423     'VEX_MVR':      ( 'VEX.ModR/M', [ 'rm', 'vvvv', 'reg' ], '',            ),
    424     'VEX_MVR_REG':  ( 'VEX.ModR/M', [ 'rm', 'vvvv', 'reg' ], '11 mr/reg',   ),
    425     'VEX_MVR_MEM':  ( 'VEX.ModR/M', [ 'rm', 'vvvv', 'reg' ], '!11 mr/reg',  ),
    426 
    427     'VEX_VM':       ( 'VEX.ModR/M', [ 'vvvv', 'rm' ],        '',            ),
    428     'VEX_VM_REG':   ( 'VEX.ModR/M', [ 'vvvv', 'rm' ],        '11 mr/reg',   ),
    429     'VEX_VM_MEM':   ( 'VEX.ModR/M', [ 'vvvv', 'rm' ],        '!11 mr/reg',  ),
    430     'VEX_VMI':      ( 'VEX.ModR/M', [ 'vvvv', 'rm', 'imm' ], '',            ),
    431     'VEX_VMI_REG':  ( 'VEX.ModR/M', [ 'vvvv', 'rm', 'imm' ], '11 mr/reg',   ),
    432     'VEX_VMI_MEM':  ( 'VEX.ModR/M', [ 'vvvv', 'rm', 'imm' ], '!11 mr/reg',  ),
    433 
    434     'FIXED':        ( 'fixed',      None,                    '',            ),
     385g_kdIemForms = {     # sEncoding,   [ sWhere1, ... ]                opcodesub      ),
     386    'RM':           ( 'ModR/M',     [ 'reg', 'rm' ],                '',            ),
     387    'RM_REG':       ( 'ModR/M',     [ 'reg', 'rm' ],                '11 mr/reg',   ),
     388    'RM_MEM':       ( 'ModR/M',     [ 'reg', 'rm' ],                '!11 mr/reg',  ),
     389    'RMI':          ( 'ModR/M',     [ 'reg', 'rm', 'imm' ],         '',            ),
     390    'RMI_REG':      ( 'ModR/M',     [ 'reg', 'rm', 'imm' ],         '11 mr/reg',   ),
     391    'RMI_MEM':      ( 'ModR/M',     [ 'reg', 'rm', 'imm' ],         '!11 mr/reg',  ),
     392    'MR':           ( 'ModR/M',     [ 'rm', 'reg' ],                '',            ),
     393    'MR_REG':       ( 'ModR/M',     [ 'rm', 'reg' ],                '11 mr/reg',   ),
     394    'MR_MEM':       ( 'ModR/M',     [ 'rm', 'reg' ],                '!11 mr/reg',  ),
     395    'MRI':          ( 'ModR/M',     [ 'rm', 'reg', 'imm' ],         '',            ),
     396    'MRI_REG':      ( 'ModR/M',     [ 'rm', 'reg', 'imm' ],         '11 mr/reg',   ),
     397    'MRI_MEM':      ( 'ModR/M',     [ 'rm', 'reg', 'imm' ],         '!11 mr/reg',  ),
     398    'M':            ( 'ModR/M',     [ 'rm', ],                      '',            ),
     399    'M_REG':        ( 'ModR/M',     [ 'rm', ],                      '',            ),
     400    'M_MEM':        ( 'ModR/M',     [ 'rm', ],                      '',            ),
     401    'M1':           ( 'ModR/M',     [ 'rm', '1' ],                  '',            ),
     402    'M_CL':         ( 'ModR/M',     [ 'rm', 'CL' ],                 '',            ), # shl/rcl/ror/++
     403    'MI':           ( 'ModR/M',     [ 'rm', 'imm' ],                '',            ),
     404    'MI_REG':       ( 'ModR/M',     [ 'rm', 'imm' ],                '11 mr/reg',   ),
     405    'MI_MEM':       ( 'ModR/M',     [ 'rm', 'imm' ],                '!11 mr/reg',  ),
     406    'R':            ( 'ModR/M',     [ 'reg', ],                     '',            ),
     407
     408    'VEX_RM':       ( 'VEX.ModR/M', [ 'reg', 'rm' ],                '',            ),
     409    'VEX_RM_REG':   ( 'VEX.ModR/M', [ 'reg', 'rm' ],                '11 mr/reg',   ),
     410    'VEX_RM_MEM':   ( 'VEX.ModR/M', [ 'reg', 'rm' ],                '!11 mr/reg',  ),
     411    'VEX_MR':       ( 'VEX.ModR/M', [ 'rm', 'reg' ],                '',            ),
     412    'VEX_MR_REG':   ( 'VEX.ModR/M', [ 'rm', 'reg' ],                '11 mr/reg',   ),
     413    'VEX_MR_MEM':   ( 'VEX.ModR/M', [ 'rm', 'reg' ],                '!11 mr/reg',  ),
     414    'VEX_MRI':      ( 'VEX.ModR/M', [ 'rm', 'reg', 'imm' ],         '',            ),
     415    'VEX_MRI_REG':  ( 'VEX.ModR/M', [ 'rm', 'reg', 'imm' ],         '11 mr/reg',   ),
     416    'VEX_MRI_MEM':  ( 'VEX.ModR/M', [ 'rm', 'reg', 'imm' ],         '!11 mr/reg',  ),
     417    'VEX_M':        ( 'VEX.ModR/M', [ 'rm', ],                      '' ),
     418    'VEX_M_REG':    ( 'VEX.ModR/M', [ 'rm', ],                      '' ),
     419    'VEX_M_MEM':    ( 'VEX.ModR/M', [ 'rm', ],                      '' ),
     420    'VEX_R':        ( 'VEX.ModR/M', [ 'reg', ],                     '' ),
     421    'VEX_RVM':      ( 'VEX.ModR/M', [ 'reg', 'vvvv', 'rm' ],        '',            ),
     422    'VEX_RVM_REG':  ( 'VEX.ModR/M', [ 'reg', 'vvvv', 'rm' ],        '11 mr/reg',   ),
     423    'VEX_RVM_MEM':  ( 'VEX.ModR/M', [ 'reg', 'vvvv', 'rm' ],        '!11 mr/reg',  ),
     424    'VEX_RVMI':     ( 'VEX.ModR/M', [ 'reg', 'vvvv', 'rm', 'imm' ], '',            ),
     425    'VEX_RVMI_REG': ( 'VEX.ModR/M', [ 'reg', 'vvvv', 'rm', 'imm' ], '11 mr/reg',   ),
     426    'VEX_RVMI_MEM': ( 'VEX.ModR/M', [ 'reg', 'vvvv', 'rm', 'imm' ], '!11 mr/reg',  ),
     427    'VEX_RMV':      ( 'VEX.ModR/M', [ 'reg', 'rm', 'vvvv' ],        '',            ),
     428    'VEX_RMV_REG':  ( 'VEX.ModR/M', [ 'reg', 'rm', 'vvvv' ],        '11 mr/reg',   ),
     429    'VEX_RMV_MEM':  ( 'VEX.ModR/M', [ 'reg', 'rm', 'vvvv' ],        '!11 mr/reg',  ),
     430    'VEX_RMI':      ( 'VEX.ModR/M', [ 'reg', 'rm', 'imm' ],         '',            ),
     431    'VEX_RMI_REG':  ( 'VEX.ModR/M', [ 'reg', 'rm', 'imm' ],         '11 mr/reg',   ),
     432    'VEX_RMI_MEM':  ( 'VEX.ModR/M', [ 'reg', 'rm', 'imm' ],         '!11 mr/reg',  ),
     433    'VEX_MVR':      ( 'VEX.ModR/M', [ 'rm', 'vvvv', 'reg' ],        '',            ),
     434    'VEX_MVR_REG':  ( 'VEX.ModR/M', [ 'rm', 'vvvv', 'reg' ],        '11 mr/reg',   ),
     435    'VEX_MVR_MEM':  ( 'VEX.ModR/M', [ 'rm', 'vvvv', 'reg' ],        '!11 mr/reg',  ),
     436
     437    'VEX_VM':       ( 'VEX.ModR/M', [ 'vvvv', 'rm' ],               '',            ),
     438    'VEX_VM_REG':   ( 'VEX.ModR/M', [ 'vvvv', 'rm' ],               '11 mr/reg',   ),
     439    'VEX_VM_MEM':   ( 'VEX.ModR/M', [ 'vvvv', 'rm' ],               '!11 mr/reg',  ),
     440    'VEX_VMI':      ( 'VEX.ModR/M', [ 'vvvv', 'rm', 'imm' ],        '',            ),
     441    'VEX_VMI_REG':  ( 'VEX.ModR/M', [ 'vvvv', 'rm', 'imm' ],        '11 mr/reg',   ),
     442    'VEX_VMI_MEM':  ( 'VEX.ModR/M', [ 'vvvv', 'rm', 'imm' ],        '!11 mr/reg',  ),
     443
     444    'FIXED':        ( 'fixed',      None,                           '',            ),
    435445};
    436446
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap3.cpp.h

    r103898 r103899  
    5656            uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    5757            IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx2);
     58            IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT();
     59            IEM_MC_PREPARE_AVX_USAGE();
     60
    5861            IEM_MC_LOCAL(RTUINT256U,            uDst);
    5962            IEM_MC_LOCAL(RTUINT256U,            uSrc1);
     
    6366            IEM_MC_ARG_LOCAL_REF(PCRTUINT256U,  puSrc2, uSrc2, 2);
    6467            IEM_MC_ARG_CONST(uint8_t,           bImmArg, /*=*/ bImm, 3);
    65             IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT();
    66             IEM_MC_PREPARE_AVX_USAGE();
    6768            IEM_MC_FETCH_YREG_U256(uSrc1,   IEM_GET_EFFECTIVE_VVVV(pVCpu));
    6869            IEM_MC_FETCH_YREG_U256(uSrc2,   IEM_GET_MODRM_RM(pVCpu, bRm));
     
    386387FNIEMOP_DEF(iemOp_vpblendd_Vx_Hx_Wx_Ib)
    387388{
    388     IEMOP_MNEMONIC3(VEX_RVM, VPBLENDD, vpblendd, Vx, Hx, Wx, DISOPTYPE_HARMLESS, 0); /* @todo */
     389    IEMOP_MNEMONIC4(VEX_RVMI, VPBLENDD, vpblendd, Vx_WO, Hx, Wx, Ib, DISOPTYPE_HARMLESS, 0);
    389390    IEMOPMEDIAOPTF3IMM8_INIT_VARS(vpblendd);
    390391    return FNIEMOP_CALL_1(iemOpCommonAvxAvx2_Vx_Hx_Wx_Ib_Opt, IEM_SELECT_HOST_OR_FALLBACK(fAvx2, &s_Host, &s_Fallback));
     
    399400FNIEMOP_DEF(iemOp_vpermilps_Vx_Wx_Ib)
    400401{
    401     IEMOP_MNEMONIC3(VEX_RMI, VPERMILPS, vpermilps, Vx, Wx, Ib, DISOPTYPE_HARMLESS, 0); /* @todo */
     402    IEMOP_MNEMONIC3(VEX_RMI, VPERMILPS, vpermilps, Vx_WO, Wx, Ib, DISOPTYPE_HARMLESS, IEMOPHINT_VEX_V_ZERO);
    402403    IEMOPMEDIAOPTF2IMM8_INIT_VARS(vpermilps);
    403404    return FNIEMOP_CALL_1(iemOpCommonAvxAvx_Vx_Wx_Ib_Opt, IEM_SELECT_HOST_OR_FALLBACK(fAvx, &s_Host, &s_Fallback));
     
    409410FNIEMOP_DEF(iemOp_vpermilpd_Vx_Wx_Ib)
    410411{
    411     IEMOP_MNEMONIC3(VEX_RMI, VPERMILPD, vpermilpd, Vx, Wx, Ib, DISOPTYPE_HARMLESS, 0); /* @todo */
     412    IEMOP_MNEMONIC3(VEX_RMI, VPERMILPD, vpermilpd, Vx_WO, Wx, Ib, DISOPTYPE_HARMLESS, IEMOPHINT_VEX_V_ZERO);
    412413    IEMOPMEDIAOPTF2IMM8_INIT_VARS(vpermilpd);
    413414    return FNIEMOP_CALL_1(iemOpCommonAvxAvx_Vx_Wx_Ib_Opt, IEM_SELECT_HOST_OR_FALLBACK(fAvx, &s_Host, &s_Fallback));
     
    418419FNIEMOP_DEF(iemOp_vperm2f128_Vqq_Hqq_Wqq_Ib)
    419420{
    420     //IEMOP_MNEMONIC4(VEX_RVM, VPERM2F128, vperm2f128, Vqq, Hqq, Wqq, Ib, DISOPTYPE_HARMLESS, 0); /** @todo */
    421 
     421    IEMOP_MNEMONIC4(VEX_RVMI, VPERM2F128, vperm2f128, Vqq_WO, Hqq, Wqq, Ib, DISOPTYPE_HARMLESS, 0);
    422422    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    423423    if (IEM_IS_MODRM_REG_MODE(bRm))
     
    494494FNIEMOP_DEF(iemOp_vblendps_Vx_Hx_Wx_Ib)
    495495{
    496     IEMOP_MNEMONIC3(VEX_RVM, VBLENDPS, vblendps, Vx, Hx, Wx, DISOPTYPE_HARMLESS, 0); /* @todo */
     496    IEMOP_MNEMONIC4(VEX_RVMI, VBLENDPS, vblendps, Vx_WO, Hx, Wx, Ib, DISOPTYPE_HARMLESS, 0);
    497497    IEMOPMEDIAOPTF3IMM8_INIT_VARS(vblendps);
    498498    return FNIEMOP_CALL_1(iemOpCommonAvxAvx_Vx_Hx_Wx_Ib_Opt, IEM_SELECT_HOST_OR_FALLBACK(fAvx, &s_Host, &s_Fallback));
     
    504504FNIEMOP_DEF(iemOp_vblendpd_Vx_Hx_Wx_Ib)
    505505{
    506     IEMOP_MNEMONIC3(VEX_RVM, VBLENDPD, vblendpd, Vx, Hx, Wx, DISOPTYPE_HARMLESS, 0); /* @todo */
     506    IEMOP_MNEMONIC4(VEX_RVMI, VBLENDPD, vblendpd, Vx_WO, Hx, Wx, Ib, DISOPTYPE_HARMLESS, 0);
    507507    IEMOPMEDIAOPTF3IMM8_INIT_VARS(vblendpd);
    508508    return FNIEMOP_CALL_1(iemOpCommonAvxAvx_Vx_Hx_Wx_Ib_Opt, IEM_SELECT_HOST_OR_FALLBACK(fAvx, &s_Host, &s_Fallback));
     
    514514FNIEMOP_DEF(iemOp_vpblendw_Vx_Hx_Wx_Ib)
    515515{
    516     IEMOP_MNEMONIC3(VEX_RVM, VPBLENDW, vpblendw, Vx, Hx, Wx, DISOPTYPE_HARMLESS, 0); /* @todo */
     516    IEMOP_MNEMONIC4(VEX_RVMI, VPBLENDW, vpblendw, Vx_WO, Hx, Wx, Ib, DISOPTYPE_HARMLESS, 0);
    517517    IEMOPMEDIAOPTF3IMM8_INIT_VARS(vpblendw);
    518518    return FNIEMOP_CALL_1(iemOpCommonAvxAvx2_Vx_Hx_Wx_Ib_Opt, IEM_SELECT_HOST_OR_FALLBACK(fAvx2, &s_Host, &s_Fallback));
     
    527527FNIEMOP_DEF(iemOp_vpalignr_Vx_Hx_Wx_Ib)
    528528{
    529     IEMOP_MNEMONIC3(VEX_RVM, VPALIGNR, vpalignr, Vx, Hx, Wx, DISOPTYPE_HARMLESS, 0); /* @todo */
     529    IEMOP_MNEMONIC4(VEX_RVMI, VPALIGNR, vpalignr, Vx_WO, Hx, Wx, Ib, DISOPTYPE_HARMLESS, 0);
    530530    IEMOPMEDIAOPTF3IMM8_INIT_VARS(vpalignr);
    531531    return FNIEMOP_CALL_1(iemOpCommonAvxAvx2_Vx_Hx_Wx_Ib_Opt, IEM_SELECT_HOST_OR_FALLBACK(fAvx2, &s_Host, &s_Fallback));
     
    544544FNIEMOP_DEF(iemOp_vpextrw_Ew_Vdq_Ib)
    545545{
    546     IEMOP_MNEMONIC3(VEX_MRI, VPEXTRW, vpextrw, Ew, Vdq, Ib, DISOPTYPE_HARMLESS, IEMOPHINT_VEX_L_ZERO | IEMOPHINT_VEX_V_ZERO);
     546    IEMOP_MNEMONIC3(VEX_MRI, VPEXTRW, vpextrw, Ew_WO, Vdq, Ib, DISOPTYPE_HARMLESS, IEMOPHINT_VEX_L_ZERO | IEMOPHINT_VEX_V_ZERO);
    547547    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    548548    if (IEM_IS_MODRM_REG_MODE(bRm))
     
    762762FNIEMOP_DEF(iemOp_vmpsadbw_Vx_Hx_Wx_Ib)
    763763{
    764     IEMOP_MNEMONIC3(VEX_RVM, VMPSADBW, vmpsadbw, Vx, Hx, Wx, DISOPTYPE_HARMLESS, 0); /** @todo */
     764    IEMOP_MNEMONIC4(VEX_RVMI, VMPSADBW, vmpsadbw, Vx_WO, Hx, Wx, Ib, DISOPTYPE_HARMLESS, 0);
    765765    IEMOPMEDIAOPTF3IMM8_INIT_VARS(vmpsadbw);
    766766    return FNIEMOP_CALL_1(iemOpCommonAvxAvx_Vx_Hx_Wx_Ib_Opt, IEM_SELECT_HOST_OR_FALLBACK(fAvx, &s_Host, &s_Fallback));
  • trunk/src/VBox/VMM/include/IEMInternal.h

    r103898 r103899  
    23122312/** VEX+ModR/M: reg, vvvv, r/m (memory). */
    23132313#define IEMOPFORM_VEX_RVM_MEM   (IEMOPFORM_VEX_RVM | IEMOPFORM_NOT_MOD3)
     2314/** VEX+ModR/M: reg, vvvv, r/m, imm */
     2315#define IEMOPFORM_VEX_RVMI      22
     2316/** VEX+ModR/M: reg, vvvv, r/m (register), imm. */
     2317#define IEMOPFORM_VEX_RVMI_REG  (IEMOPFORM_VEX_RVMI | IEMOPFORM_MOD3)
     2318/** VEX+ModR/M: reg, vvvv, r/m (memory), imm. */
     2319#define IEMOPFORM_VEX_RVMI_MEM  (IEMOPFORM_VEX_RVMI | IEMOPFORM_NOT_MOD3)
    23142320/** VEX+ModR/M: reg, r/m, vvvv */
    2315 #define IEMOPFORM_VEX_RMV       22
     2321#define IEMOPFORM_VEX_RMV       23
    23162322/** VEX+ModR/M: reg, r/m, vvvv (register). */
    23172323#define IEMOPFORM_VEX_RMV_REG   (IEMOPFORM_VEX_RMV | IEMOPFORM_MOD3)
     
    23192325#define IEMOPFORM_VEX_RMV_MEM   (IEMOPFORM_VEX_RMV | IEMOPFORM_NOT_MOD3)
    23202326/** VEX+ModR/M: reg, r/m, imm8 */
    2321 #define IEMOPFORM_VEX_RMI       23
     2327#define IEMOPFORM_VEX_RMI       24
    23222328/** VEX+ModR/M: reg, r/m, imm8 (register). */
    23232329#define IEMOPFORM_VEX_RMI_REG   (IEMOPFORM_VEX_RMI | IEMOPFORM_MOD3)
     
    23252331#define IEMOPFORM_VEX_RMI_MEM   (IEMOPFORM_VEX_RMI | IEMOPFORM_NOT_MOD3)
    23262332/** VEX+ModR/M: r/m, vvvv, reg */
    2327 #define IEMOPFORM_VEX_MVR       24
     2333#define IEMOPFORM_VEX_MVR       25
    23282334/** VEX+ModR/M: r/m, vvvv, reg (register) */
    23292335#define IEMOPFORM_VEX_MVR_REG   (IEMOPFORM_VEX_MVR | IEMOPFORM_MOD3)
     
    23312337#define IEMOPFORM_VEX_MVR_MEM   (IEMOPFORM_VEX_MVR | IEMOPFORM_NOT_MOD3)
    23322338/** VEX+ModR/M+/n: vvvv, r/m */
    2333 #define IEMOPFORM_VEX_VM        25
     2339#define IEMOPFORM_VEX_VM        26
    23342340/** VEX+ModR/M+/n: vvvv, r/m (register) */
    23352341#define IEMOPFORM_VEX_VM_REG    (IEMOPFORM_VEX_VM | IEMOPFORM_MOD3)
     
    23372343#define IEMOPFORM_VEX_VM_MEM    (IEMOPFORM_VEX_VM | IEMOPFORM_NOT_MOD3)
    23382344/** VEX+ModR/M+/n: vvvv, r/m, imm8 */
    2339 #define IEMOPFORM_VEX_VMI       26
     2345#define IEMOPFORM_VEX_VMI       27
    23402346/** VEX+ModR/M+/n: vvvv, r/m, imm8 (register) */
    23412347#define IEMOPFORM_VEX_VMI_REG   (IEMOPFORM_VEX_VMI | IEMOPFORM_MOD3)
Note: See TracChangeset for help on using the changeset viewer.

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