VirtualBox

Changeset 66812 in vbox


Ignore:
Timestamp:
May 5, 2017 6:48:33 PM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
115233
Message:

IEM: clearly mark operands that are written to.

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/disopcode.h

    r66810 r66812  
    10641064
    10651065/* For making IEM / bs3-cpu-generated-1 happy: */
     1066#define OP_PARM_M_RO            OP_PARM_M               /**< Annotates read only memory of variable operand size (xrstor). */
     1067#define OP_PARM_M_RW            OP_PARM_M               /**< Annotates read-write memory of variable operand size (xsave). */
     1068#define OP_PARM_Mb_RO           OP_PARM_Mb              /**< Annotates read only memory byte operand. */
     1069#define OP_PARM_Md_RO           OP_PARM_Md              /**< Annotates read only memory byte operand. */
     1070#define OP_PARM_Md_WO           OP_PARM_Md              /**< Annotates write only memory byte operand. */
     1071#define OP_PARM_Mq_WO           OP_PARM_Mq              /**< Annotates write only memory quad word operand. */
     1072#define OP_PARM_Pq_WO           OP_PARM_Pq              /**< Annotates write only operand. */
     1073#define OP_PARM_Nq              OP_PARM_Qq              /**< Missing 'N' class (MMX reg selected by modrm.mem) in disasm. */
    10661074#define OP_PARM_Uq              (OP_PARM_U+OP_PARM_q)
    10671075#define OP_PARM_UqHi            (OP_PARM_U+OP_PARM_dq)
    1068 #define OP_PARM_WqZxReg         OP_PARM_Wq              /**< Annotates that register targets get their upper bits cleared. */
    1069 #define OP_PARM_VssZxReg        OP_PARM_Vss             /**< Annotates that register targets get their upper bits cleared. */
    1070 #define OP_PARM_VsdZxReg        OP_PARM_Vsd             /**< Annotates that register targets get their upper bits cleared. */
     1076#define OP_PARM_Vdq_WO          OP_PARM_Vdq             /**< Annotates that only YMM/XMM[127:64] are accessed. */
     1077#define OP_PARM_Vpd_WO          OP_PARM_Vpd             /**< Annotates write only operand. */
     1078#define OP_PARM_Vps_WO          OP_PARM_Vps             /**< Annotates write only operand. */
     1079#define OP_PARM_Vq_WO           OP_PARM_Vq              /**< Annotates write only operand. */
    10711080#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 */
    1073 #define OP_PARM_MbRO            OP_PARM_Mb              /**< Annotates read only memory byte operand. */
    1074 #define OP_PARM_MdRO            OP_PARM_Md              /**< Annotates read only memory byte operand. */
    1075 #define OP_PARM_MdWO            OP_PARM_Md              /**< Annotates write only memory byte operand. */
    1076 #define OP_PARM_MqWO            OP_PARM_Mq              /**< Annotates write only memory quad word operand. */
    1077 #define OP_PARM_MRO             OP_PARM_M               /**< Annotates read only memory of variable operand size (xrstor). */
    1078 #define OP_PARM_MRW             OP_PARM_M               /**< Annotates read-write memory of variable operand size (xsave). */
    1079 #define OP_PARM_Nq              OP_PARM_Qq              /**< Missing 'N' class (MMX reg selected by modrm.mem) in disasm. */
     1081#define OP_PARM_VqHi_WO         OP_PARM_Vdq             /**< Annotates that only YMM/XMM[127:64] are written. */
     1082#define OP_PARM_VqZxReg_WO      OP_PARM_Vq              /**< Annotates that register targets get their upper bits cleared */
     1083#define OP_PARM_VsdZxReg_WO     OP_PARM_Vsd             /**< Annotates that register targets get their upper bits cleared. */
     1084#define OP_PARM_VsdZxReg_WO     OP_PARM_Vsd             /**< Annotates that register targets get their upper bits cleared. */
     1085#define OP_PARM_VssZxReg_WO     OP_PARM_Vss             /**< Annotates that register targets get their upper bits cleared. */
     1086#define OP_PARM_Wpd_WO          OP_PARM_Wpd             /**< Annotates write only operand. */
     1087#define OP_PARM_Wps_WO          OP_PARM_Wps             /**< Annotates write only operand. */
     1088#define OP_PARM_WqZxReg_WO      OP_PARM_Wq              /**< Annotates that register targets get their upper bits cleared. */
     1089#define OP_PARM_Wss_WO          OP_PARM_Wss             /**< Annotates write only operand. */
     1090#define OP_PARM_Wsd_WO          OP_PARM_Wsd             /**< Annotates write only operand. */
     1091
    10801092
    10811093/** @} */
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsPython.py

    r66811 r66812  
    210210g_kdOpTypes = {
    211211    # Fixed addresses
    212     'Ap':   ( 'IDX_ParseImmAddrF',  'imm',    '%Ap',  'Ap',      ),
     212    'Ap':           ( 'IDX_ParseImmAddrF',  'imm',    '%Ap',  'Ap',      ),
    213213
    214214    # ModR/M.rm
    215     'Eb':   ( 'IDX_UseModRM',       'rm',     '%Eb',  'Eb',      ),
    216     'Ew':   ( 'IDX_UseModRM',       'rm',     '%Ew',  'Ew',      ),
    217     'Ev':   ( 'IDX_UseModRM',       'rm',     '%Ev',  'Ev',      ),
    218     'Wss':  ( 'IDX_UseModRM',       'rm',     '%Wss', 'Wss',     ),
    219     'Wsd':  ( 'IDX_UseModRM',       'rm',     '%Wsd', 'Wsd',     ),
    220     'Wps':  ( 'IDX_UseModRM',       'rm',     '%Wps', 'Wps',     ),
    221     'Wpd':  ( 'IDX_UseModRM',       'rm',     '%Wpd', 'Wpd',     ),
    222     'Wdq':  ( 'IDX_UseModRM',       'rm',     '%Wdq', 'Wdq',     ),
    223     'Wq':   ( 'IDX_UseModRM',       'rm',     '%Wq',  'Wq',      ),
    224     'WqZxReg': ( 'IDX_UseModRM',    'rm',     '%Wq',  'Wq',      ),
     215    'Eb':           ( 'IDX_UseModRM',       'rm',     '%Eb',  'Eb',      ),
     216    'Ew':           ( 'IDX_UseModRM',       'rm',     '%Ew',  'Ew',      ),
     217    'Ev':           ( 'IDX_UseModRM',       'rm',     '%Ev',  'Ev',      ),
     218    'Wss':          ( 'IDX_UseModRM',       'rm',     '%Wss', 'Wss',     ),
     219    'Wss_WO':       ( 'IDX_UseModRM',       'rm',     '%Wss', 'Wss',     ),
     220    'Wsd':          ( 'IDX_UseModRM',       'rm',     '%Wsd', 'Wsd',     ),
     221    'Wsd_WO':       ( 'IDX_UseModRM',       'rm',     '%Wsd', 'Wsd',     ),
     222    'Wps':          ( 'IDX_UseModRM',       'rm',     '%Wps', 'Wps',     ),
     223    'Wps_WO':       ( 'IDX_UseModRM',       'rm',     '%Wps', 'Wps',     ),
     224    'Wpd':          ( 'IDX_UseModRM',       'rm',     '%Wpd', 'Wpd',     ),
     225    'Wpd_WO':       ( 'IDX_UseModRM',       'rm',     '%Wpd', 'Wpd',     ),
     226    'Wdq':          ( 'IDX_UseModRM',       'rm',     '%Wdq', 'Wdq',     ),
     227    'Wdq_WO':       ( 'IDX_UseModRM',       'rm',     '%Wdq', 'Wdq',     ),
     228    'Wq':           ( 'IDX_UseModRM',       'rm',     '%Wq',  'Wq',      ),
     229    'WqZxReg_WO':   ( 'IDX_UseModRM',       'rm',     '%Wq',  'Wq',      ),
    225230
    226231    # ModR/M.rm - register only.
    227     'Uq':   ( 'IDX_UseModRM',       'rm',     '%Uq',  'Uq',      ),
    228     'UqHi': ( 'IDX_UseModRM',       'rm',     '%Uq',  'UqHi',    ),
    229     'Nq':   ( 'IDX_UseModRM',       'rm',     '%Qq',  'Nq',      ),
     232    'Uq':           ( 'IDX_UseModRM',       'rm',     '%Uq',  'Uq',      ),
     233    'UqHi':         ( 'IDX_UseModRM',       'rm',     '%Uq',  'UqHi',    ),
     234    'Nq':           ( 'IDX_UseModRM',       'rm',     '%Qq',  'Nq',      ),
    230235
    231236    # ModR/M.rm - memory only.
    232     'Ma':   ( 'IDX_UseModRM',       'rm',     '%Ma',  'Ma',      ), ##< Only used by BOUND.
    233     'MbRO': ( 'IDX_UseModRM',       'rm',     '%Mb',  'Mb',      ),
    234     'MdRO': ( 'IDX_UseModRM',       'rm',     '%Md',  'Md',      ),
    235     'MdWO': ( 'IDX_UseModRM',       'rm',     '%Md',  'Md',      ),
    236     'Mq':   ( 'IDX_UseModRM',       'rm',     '%Mq',  'Mq',      ),
    237     'MqWO': ( 'IDX_UseModRM',       'rm',     '%Mq',  'Mq',      ),
    238     'MRO':  ( 'IDX_UseModRM',       'rm',     '%M',   'M',       ),
    239     'MRW':  ( 'IDX_UseModRM',       'rm',     '%M',   'M',       ),
     237    'Ma':           ( 'IDX_UseModRM',       'rm',     '%Ma',  'Ma',      ), ##< Only used by BOUND.
     238    'Mb_RO':        ( 'IDX_UseModRM',       'rm',     '%Mb',  'Mb',      ),
     239    'Md_RO':        ( 'IDX_UseModRM',       'rm',     '%Md',  'Md',      ),
     240    'Md_WO':        ( 'IDX_UseModRM',       'rm',     '%Md',  'Md',      ),
     241    'Mq':           ( 'IDX_UseModRM',       'rm',     '%Mq',  'Mq',      ),
     242    'Mq_WO':        ( 'IDX_UseModRM',       'rm',     '%Mq',  'Mq',      ),
     243    'M_RO':         ( 'IDX_UseModRM',       'rm',     '%M',   'M',       ),
     244    'M_RW':         ( 'IDX_UseModRM',       'rm',     '%M',   'M',       ),
    240245
    241246    # ModR/M.reg
    242     'Gb':   ( 'IDX_UseModRM',       'reg',    '%Gb',  'Gb',      ),
    243     'Gw':   ( 'IDX_UseModRM',       'reg',    '%Gw',  'Gw',      ),
    244     'Gv':   ( 'IDX_UseModRM',       'reg',    '%Gv',  'Gv',      ),
    245     'Pq':   ( 'IDX_UseModRM',       'reg',    '%Pq',  'Pq',      ),
    246     'Vss':  ( 'IDX_UseModRM',       'reg',    '%Vss', 'Vss',     ),
    247     'VssZxReg': ( 'IDX_UseModRM',   'reg',    '%Vss', 'Vss',     ),
    248     'Vsd':  ( 'IDX_UseModRM',       'reg',    '%Vsd', 'Vsd',     ),
    249     'VsdZxReg': ( 'IDX_UseModRM',   'reg',    '%Vsd', 'Vsd',     ),
    250     'Vps':  ( 'IDX_UseModRM',       'reg',    '%Vps', 'Vps',     ),
    251     'Vpd':  ( 'IDX_UseModRM',       'reg',    '%Vpd', 'Vpd',     ),
    252     'Vq':   ( 'IDX_UseModRM',       'reg',    '%Vq',  'Vq',      ),
    253     'Vdq':  ( 'IDX_UseModRM',       'reg',    '%Vdq', 'Vdq',     ),
    254     'VqHi': ( 'IDX_UseModRM',       'reg',    '%Vdq', 'VdqHi',   ),
    255     'VqZxReg': ( 'IDX_UseModRM',    'reg',    '%Vq',  'VqZx',   ),
     247    'Gb':           ( 'IDX_UseModRM',       'reg',    '%Gb',  'Gb',      ),
     248    'Gw':           ( 'IDX_UseModRM',       'reg',    '%Gw',  'Gw',      ),
     249    'Gv':           ( 'IDX_UseModRM',       'reg',    '%Gv',  'Gv',      ),
     250    'Pq_WO':        ( 'IDX_UseModRM',       'reg',    '%Pq',  'Pq',      ),
     251    'Vss':          ( 'IDX_UseModRM',       'reg',    '%Vss', 'Vss',     ),
     252    'VssZxReg_WO':  ( 'IDX_UseModRM',       'reg',    '%Vss', 'Vss',     ),
     253    'Vsd':          ( 'IDX_UseModRM',       'reg',    '%Vsd', 'Vsd',     ),
     254    'VsdZxReg_WO':  ( 'IDX_UseModRM',       'reg',    '%Vsd', 'Vsd',     ),
     255    'Vps':          ( 'IDX_UseModRM',       'reg',    '%Vps', 'Vps',     ),
     256    'Vps_WO':       ( 'IDX_UseModRM',       'reg',    '%Vps', 'Vps',     ),
     257    'Vpd':          ( 'IDX_UseModRM',       'reg',    '%Vpd', 'Vpd',     ),
     258    'Vpd_WO':       ( 'IDX_UseModRM',       'reg',    '%Vpd', 'Vpd',     ),
     259    'Vq':           ( 'IDX_UseModRM',       'reg',    '%Vq',  'Vq',      ),
     260    'Vq_WO':        ( 'IDX_UseModRM',       'reg',    '%Vq',  'Vq',      ),
     261    'Vdq_WO':       ( 'IDX_UseModRM',       'reg',    '%Vdq', 'Vdq',     ),
     262    'VqHi':         ( 'IDX_UseModRM',       'reg',    '%Vdq', 'VdqHi',   ),
     263    'VqHi_WO':      ( 'IDX_UseModRM',       'reg',    '%Vdq', 'VdqHi',   ),
     264    'VqZxReg_WO':   ( 'IDX_UseModRM',       'reg',    '%Vq',  'VqZx',    ),
    256265
    257266    # Immediate values.
    258     'Ib':   ( 'IDX_ParseImmByte',   'imm',    '%Ib',  'Ib',      ), ##< NB! Could be IDX_ParseImmByteSX for some instructions.
    259     'Iw':   ( 'IDX_ParseImmUshort', 'imm',    '%Iw',  'Iw',      ),
    260     'Id':   ( 'IDX_ParseImmUlong',  'imm',    '%Id',  'Id',      ),
    261     'Iq':   ( 'IDX_ParseImmQword',  'imm',    '%Iq',  'Iq',      ),
    262     'Iv':   ( 'IDX_ParseImmV',      'imm',    '%Iv',  'Iv',      ), ##< o16: word, o32: dword, o64: qword
    263     'Iz':   ( 'IDX_ParseImmZ',      'imm',    '%Iz',  'Iz',      ), ##< o16: word, o32|o64:dword
     267    'Ib':           ( 'IDX_ParseImmByte',   'imm',    '%Ib',  'Ib',      ), ##< NB! Could be IDX_ParseImmByteSX for some instrs.
     268    'Iw':           ( 'IDX_ParseImmUshort', 'imm',    '%Iw',  'Iw',      ),
     269    'Id':           ( 'IDX_ParseImmUlong',  'imm',    '%Id',  'Id',      ),
     270    'Iq':           ( 'IDX_ParseImmQword',  'imm',    '%Iq',  'Iq',      ),
     271    'Iv':           ( 'IDX_ParseImmV',      'imm',    '%Iv',  'Iv',      ), ##< o16: word, o32: dword, o64: qword
     272    'Iz':           ( 'IDX_ParseImmZ',      'imm',    '%Iz',  'Iz',      ), ##< o16: word, o32|o64:dword
    264273
    265274    # Address operands (no ModR/M).
    266     'Ob':   ( 'IDX_ParseImmAddr',   'imm',    '%Ob',  'Ob',      ),
    267     'Ov':   ( 'IDX_ParseImmAddr',   'imm',    '%Ov',  'Ov',      ),
     275    'Ob':           ( 'IDX_ParseImmAddr',   'imm',    '%Ob',  'Ob',      ),
     276    'Ov':           ( 'IDX_ParseImmAddr',   'imm',    '%Ov',  'Ov',      ),
    268277
    269278    # Relative jump targets
    270     'Jb':   ( 'IDX_ParseImmBRel',   'imm',    '%Jb',  'Jb',      ),
    271     'Jv':   ( 'IDX_ParseImmVRel',   'imm',    '%Jv',  'Jv',      ),
     279    'Jb':           ( 'IDX_ParseImmBRel',   'imm',    '%Jb',  'Jb',      ),
     280    'Jv':           ( 'IDX_ParseImmVRel',   'imm',    '%Jv',  'Jv',      ),
    272281
    273282    # DS:rSI
    274     'Xb':   ( 'IDX_ParseXb',        'rSI',    '%eSI', 'Xb',      ),
    275     'Xv':   ( 'IDX_ParseXv',        'rSI',    '%eSI', 'Xv',      ),
     283    'Xb':           ( 'IDX_ParseXb',        'rSI',    '%eSI', 'Xb',      ),
     284    'Xv':           ( 'IDX_ParseXv',        'rSI',    '%eSI', 'Xv',      ),
    276285    # ES:rDI
    277     'Yb':   ( 'IDX_ParseYb',        'rDI',    '%eDI', 'Yb',      ),
    278     'Yv':   ( 'IDX_ParseYv',        'rDI',    '%eDI', 'Yv',      ),
    279 
    280     'Fv':   ( 'IDX_ParseFixedReg',  'rFLAGS', '%Fv',  'Fv',      ),
     286    'Yb':           ( 'IDX_ParseYb',        'rDI',    '%eDI', 'Yb',      ),
     287    'Yv':           ( 'IDX_ParseYv',        'rDI',    '%eDI', 'Yv',      ),
     288
     289    'Fv':           ( 'IDX_ParseFixedReg',  'rFLAGS', '%Fv',  'Fv',      ),
    281290
    282291    # Fixed registers.
    283     'AL':   ( 'IDX_ParseFixedReg',  'AL',     'al',   'REG_AL',  ),
    284     'rAX':  ( 'IDX_ParseFixedReg',  'rAX',    '%eAX', 'REG_EAX', ),
    285     'CS':   ( 'IDX_ParseFixedReg',  'CS',     'cs',   'REG_CS',  ), # 8086: push CS
    286     'DS':   ( 'IDX_ParseFixedReg',  'DS',     'ds',   'REG_DS',  ),
    287     'ES':   ( 'IDX_ParseFixedReg',  'ES',     'es',   'REG_ES',  ),
    288     'FS':   ( 'IDX_ParseFixedReg',  'FS',     'fs',   'REG_FS',  ),
    289     'GS':   ( 'IDX_ParseFixedReg',  'GS',     'gs',   'REG_GS',  ),
    290     'SS':   ( 'IDX_ParseFixedReg',  'SS',     'ss',   'REG_SS',  ),
     292    'AL':           ( 'IDX_ParseFixedReg',  'AL',     'al',   'REG_AL',  ),
     293    'rAX':          ( 'IDX_ParseFixedReg',  'rAX',    '%eAX', 'REG_EAX', ),
     294    'CS':           ( 'IDX_ParseFixedReg',  'CS',     'cs',   'REG_CS',  ), # 8086: push CS
     295    'DS':           ( 'IDX_ParseFixedReg',  'DS',     'ds',   'REG_DS',  ),
     296    'ES':           ( 'IDX_ParseFixedReg',  'ES',     'es',   'REG_ES',  ),
     297    'FS':           ( 'IDX_ParseFixedReg',  'FS',     'fs',   'REG_FS',  ),
     298    'GS':           ( 'IDX_ParseFixedReg',  'GS',     'gs',   'REG_GS',  ),
     299    'SS':           ( 'IDX_ParseFixedReg',  'SS',     'ss',   'REG_SS',  ),
    291300};
    292301
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h

    r66811 r66812  
    10011001FNIEMOP_DEF(iemOp_movups_Vps_Wps)
    10021002{
    1003     IEMOP_MNEMONIC2(RM, MOVUPS, movups, Vps, Wps, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     1003    IEMOP_MNEMONIC2(RM, MOVUPS, movups, Vps_WO, Wps, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    10041004    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    10051005    if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT))
     
    10531053FNIEMOP_DEF(iemOp_movupd_Vpd_Wpd)
    10541054{
    1055     IEMOP_MNEMONIC2(RM, MOVUPD, movupd, Vpd, Wpd, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     1055    IEMOP_MNEMONIC2(RM, MOVUPD, movupd, Vpd_WO, Wpd, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    10561056    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    10571057    if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT))
     
    11041104FNIEMOP_DEF(iemOp_movss_Vss_Wss)
    11051105{
    1106     IEMOP_MNEMONIC2(RM, MOVSS, movss, VssZxReg, Wss, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     1106    IEMOP_MNEMONIC2(RM, MOVSS, movss, VssZxReg_WO, Wss, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    11071107    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    11081108    if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT))
     
    11581158FNIEMOP_DEF(iemOp_movsd_Vsd_Wsd)
    11591159{
    1160     IEMOP_MNEMONIC2(RM, MOVSD, movsd, VsdZxReg, Wsd, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     1160    IEMOP_MNEMONIC2(RM, MOVSD, movsd, VsdZxReg_WO, Wsd, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    11611161    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    11621162    if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT))
     
    12121212FNIEMOP_DEF(iemOp_movups_Wps_Vps)
    12131213{
    1214     IEMOP_MNEMONIC2(MR, MOVUPS, movups, Wps, Vps, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     1214    IEMOP_MNEMONIC2(MR, MOVUPS, movups, Wps_WO, Vps, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    12151215    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    12161216    if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT))
     
    12631263FNIEMOP_DEF(iemOp_movupd_Wpd_Vpd)
    12641264{
    1265     IEMOP_MNEMONIC2(MR, MOVUPD, movupd, Wpd, Vpd, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     1265    IEMOP_MNEMONIC2(MR, MOVUPD, movupd, Wpd_WO, Vpd, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    12661266    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    12671267    if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT))
     
    13141314FNIEMOP_DEF(iemOp_movss_Wss_Vss)
    13151315{
    1316     IEMOP_MNEMONIC2(MR, MOVSS, movss, Wss, Vss, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     1316    IEMOP_MNEMONIC2(MR, MOVSS, movss, Wss_WO, Vss, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    13171317    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    13181318    if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT))
     
    13681368FNIEMOP_DEF(iemOp_movsd_Wsd_Vsd)
    13691369{
    1370     IEMOP_MNEMONIC2(MR, MOVSD, movsd, Wsd, Vsd, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     1370    IEMOP_MNEMONIC2(MR, MOVSD, movsd, Wsd_WO, Vsd, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    13711371    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    13721372    if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT))
     
    14261426         * @optest      op1=0 op2=-42 -> op1=-42
    14271427         */
    1428         IEMOP_MNEMONIC2(RM_REG, MOVHLPS, movhlps, Vq, UqHi, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     1428        IEMOP_MNEMONIC2(RM_REG, MOVHLPS, movhlps, Vq_WO, UqHi, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    14291429
    14301430        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    14541454         * @opfunction  iemOp_movlps_Vq_Mq__vmovhlps
    14551455         */
    1456         IEMOP_MNEMONIC2(RM_MEM, MOVLPS, movlps, Vq, Mq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     1456        IEMOP_MNEMONIC2(RM_MEM, MOVLPS, movlps, Vq_WO, Mq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    14571457
    14581458        IEM_MC_BEGIN(0, 2);
     
    14901490    if ((bRm & X86_MODRM_MOD_MASK) != (3 << X86_MODRM_MOD_SHIFT))
    14911491    {
    1492         IEMOP_MNEMONIC2(RM_MEM, MOVLPD, movlpd, Vq, Mq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     1492        IEMOP_MNEMONIC2(RM_MEM, MOVLPD, movlpd, Vq_WO, Mq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    14931493
    14941494        IEM_MC_BEGIN(0, 2);
     
    15341534FNIEMOP_DEF(iemOp_movsldup_Vdq_Wdq)
    15351535{
    1536     IEMOP_MNEMONIC2(RM, MOVSLDUP, movsldup, Vdq, Wdq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     1536    IEMOP_MNEMONIC2(RM, MOVSLDUP, movsldup, Vdq_WO, Wdq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    15371537    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    15381538    if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT))
     
    15941594FNIEMOP_DEF(iemOp_movddup_Vdq_Wdq)
    15951595{
    1596     IEMOP_MNEMONIC2(RM, MOVDDUP, movddup, Vdq, Wdq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     1596    IEMOP_MNEMONIC2(RM, MOVDDUP, movddup, Vdq_WO, Wdq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    15971597    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    15981598    if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT))
     
    16571657    if ((bRm & X86_MODRM_MOD_MASK) != (3 << X86_MODRM_MOD_SHIFT))
    16581658    {
    1659         IEMOP_MNEMONIC2(MR_MEM, MOVLPS, movlps, MqWO, Vq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     1659        IEMOP_MNEMONIC2(MR_MEM, MOVLPS, movlps, Mq_WO, Vq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    16601660
    16611661        IEM_MC_BEGIN(0, 2);
     
    17051705    if ((bRm & X86_MODRM_MOD_MASK) != (3 << X86_MODRM_MOD_SHIFT))
    17061706    {
    1707         IEMOP_MNEMONIC2(MR_MEM, MOVLPD, movlpd, MqWO, Vq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     1707        IEMOP_MNEMONIC2(MR_MEM, MOVLPD, movlpd, Mq_WO, Vq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    17081708        IEM_MC_BEGIN(0, 2);
    17091709        IEM_MC_LOCAL(uint64_t,                  uSrc);
     
    18261826         * @optest      op1=0 op2=-42 -> op1=-42
    18271827         */
    1828         IEMOP_MNEMONIC2(RM_REG, MOVLHPS, movlhps, VqHi, Uq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     1828        IEMOP_MNEMONIC2(RM_REG, MOVLHPS, movlhps, VqHi_WO, Uq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    18291829
    18301830        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    18541854         * @opfunction  iemOp_movhps_Vdq_Mq__movlhps_Vdq_Uq
    18551855         */
    1856         IEMOP_MNEMONIC2(RM_MEM, MOVHPS, movhps, VqHi, Mq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     1856        IEMOP_MNEMONIC2(RM_MEM, MOVHPS, movhps, VqHi_WO, Mq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    18571857
    18581858        IEM_MC_BEGIN(0, 2);
     
    18901890    if ((bRm & X86_MODRM_MOD_MASK) != (3 << X86_MODRM_MOD_SHIFT))
    18911891    {
    1892         IEMOP_MNEMONIC2(RM_MEM, MOVHPD, movhpd, VqHi, Mq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     1892        IEMOP_MNEMONIC2(RM_MEM, MOVHPD, movhpd, VqHi_WO, Mq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    18931893        IEM_MC_BEGIN(0, 2);
    18941894        IEM_MC_LOCAL(uint64_t,                  uSrc);
     
    19331933FNIEMOP_DEF(iemOp_movshdup_Vdq_Wdq)
    19341934{
    1935     IEMOP_MNEMONIC2(RM, MOVSHDUP, movshdup, Vdq, Wdq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     1935    IEMOP_MNEMONIC2(RM, MOVSHDUP, movshdup, Vdq_WO, Wdq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    19361936    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    19371937    if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT))
     
    20082008    if ((bRm & X86_MODRM_MOD_MASK) != (3 << X86_MODRM_MOD_SHIFT))
    20092009    {
    2010         IEMOP_MNEMONIC2(MR_MEM, MOVHPS, movhps, MqWO, VqHi, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     2010        IEMOP_MNEMONIC2(MR_MEM, MOVHPS, movhps, Mq_WO, VqHi, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    20112011
    20122012        IEM_MC_BEGIN(0, 2);
     
    20562056    if ((bRm & X86_MODRM_MOD_MASK) != (3 << X86_MODRM_MOD_SHIFT))
    20572057    {
    2058         IEMOP_MNEMONIC2(MR_MEM, MOVHPD, movhpd, MqWO, VqHi, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     2058        IEMOP_MNEMONIC2(MR_MEM, MOVHPD, movhpd, Mq_WO, VqHi, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    20592059
    20602060        IEM_MC_BEGIN(0, 2);
     
    43254325FNIEMOP_DEF(iemOp_movq_Vq_Wq)
    43264326{
    4327     IEMOP_MNEMONIC2(RM, MOVQ, movq, VqZxReg, Wq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     4327    IEMOP_MNEMONIC2(RM, MOVQ, movq, VqZxReg_WO, Wq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    43284328    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    43294329    if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT))
     
    64536453FNIEMOP_DEF_1(iemOp_Grp15_ldmxcsr, uint8_t, bRm)
    64546454{
    6455     IEMOP_MNEMONIC1(M_MEM, LDMXCSR, ldmxcsr, MdRO, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     6455    IEMOP_MNEMONIC1(M_MEM, LDMXCSR, ldmxcsr, Md_RO, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    64566456    if (!IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fSse)
    64576457        return IEMOP_RAISE_INVALID_OPCODE();
     
    64906490FNIEMOP_DEF_1(iemOp_Grp15_stmxcsr,  uint8_t, bRm)
    64916491{
    6492     IEMOP_MNEMONIC1(M_MEM, STMXCSR, stmxcsr, MdWO, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     6492    IEMOP_MNEMONIC1(M_MEM, STMXCSR, stmxcsr, Md_WO, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    64936493    if (!IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fSse)
    64946494        return IEMOP_RAISE_INVALID_OPCODE();
     
    65176517FNIEMOP_DEF_1(iemOp_Grp15_xsave,    uint8_t, bRm)
    65186518{
    6519     IEMOP_MNEMONIC1(M_MEM, XSAVE, xsave, MRW, DISOPTYPE_HARMLESS, 0);
     6519    IEMOP_MNEMONIC1(M_MEM, XSAVE, xsave, M_RW, DISOPTYPE_HARMLESS, 0);
    65206520    if (!IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fXSaveRstor)
    65216521        return IEMOP_RAISE_INVALID_OPCODE();
     
    65456545FNIEMOP_DEF_1(iemOp_Grp15_xrstor,   uint8_t, bRm)
    65466546{
    6547     IEMOP_MNEMONIC1(M_MEM, XRSTOR, xrstor, MRO, DISOPTYPE_HARMLESS, 0);
     6547    IEMOP_MNEMONIC1(M_MEM, XRSTOR, xrstor, M_RO, DISOPTYPE_HARMLESS, 0);
    65486548    if (!IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fXSaveRstor)
    65496549        return IEMOP_RAISE_INVALID_OPCODE();
     
    65756575FNIEMOP_DEF_1(iemOp_Grp15_clflush,  uint8_t, bRm)
    65766576{
    6577     IEMOP_MNEMONIC1(M_MEM, CLFLUSH, clflush, MbRO, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     6577    IEMOP_MNEMONIC1(M_MEM, CLFLUSH, clflush, Mb_RO, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    65786578    if (!IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fClFlush)
    65796579        return FNIEMOP_CALL_1(iemOp_InvalidWithRMAllNeeded, bRm);
     
    66006600FNIEMOP_DEF_1(iemOp_Grp15_clflushopt,  uint8_t, bRm)
    66016601{
    6602     IEMOP_MNEMONIC1(M_MEM, CLFLUSHOPT, clflushopt, MbRO, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     6602    IEMOP_MNEMONIC1(M_MEM, CLFLUSHOPT, clflushopt, Mb_RO, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    66036603    if (!IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fClFlushOpt)
    66046604        return FNIEMOP_CALL_1(iemOp_InvalidWithRMAllNeeded, bRm);
     
    83418341FNIEMOP_DEF(iemOp_movq_Wq_Vq)
    83428342{
    8343     IEMOP_MNEMONIC2(MR, MOVQ, movq, WqZxReg, Vq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     8343    IEMOP_MNEMONIC2(MR, MOVQ, movq, WqZxReg_WO, Vq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    83448344    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    83458345    if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT))
     
    84028402         * Register, register.
    84038403         */
    8404         IEMOP_MNEMONIC2(RM_REG, MOVQ2DQ, movq2dq, VqZxReg, Nq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     8404        IEMOP_MNEMONIC2(RM_REG, MOVQ2DQ, movq2dq, VqZxReg_WO, Nq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    84058405        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    84068406        IEM_MC_BEGIN(0, 1);
     
    84548454         * Register, register.
    84558455         */
    8456         IEMOP_MNEMONIC2(RM_REG, MOVDQ2Q, movdq2q, Pq, Uq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     8456        IEMOP_MNEMONIC2(RM_REG, MOVDQ2Q, movdq2q, Pq_WO, Uq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    84578457        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    84588458        IEM_MC_BEGIN(0, 1);
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsVexMap1.cpp.h

    r66479 r66812  
    22272227FNIEMOP_DEF_1(iemOp_VGrp15_vstmxcsr,  uint8_t, bRm)
    22282228{
    2229     IEMOP_MNEMONIC1(VEX_M_MEM, VSTMXCSR, vstmxcsr, MdWO, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     2229    IEMOP_MNEMONIC1(VEX_M_MEM, VSTMXCSR, vstmxcsr, Md_WO, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    22302230    if (!IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fAvx)
    22312231        return IEMOP_RAISE_INVALID_OPCODE();
  • trunk/src/VBox/ValidationKit/bootsectors/Config.kmk

    r66446 r66812  
    560560#       -0                     Use 8086 instruction set (16-bit only).
    561561#       -3                     Use 386 instruction set (16-bit only).
     562#       -e<num>                Stop after <num> errors.
    562563#       -wx                    Maxium warning level.
    563564#       -zl                    Don't emit default library information.
     
    603604TEMPLATE_VBoxBS3KitImg_CXXTOOL      = Bs3Ow16
    604605TEMPLATE_VBoxBS3KitImg_CFLAGS       = $(if $(BS3KIT_SEGNM_DATA16),-nd=$(BS3KIT_SEGNM_DATA16),) \
    605         -nt=BS3TEXT16 -nc=$(BS3KIT_CLASS_CODE16) -ecc -q -0 -wx -zl -zdp -zu -ml $(BS3_OW_DBG_OPT) -s -oa -ob -of -oi -ol -or -os -oh -d+
     606        -nt=BS3TEXT16 -nc=$(BS3KIT_CLASS_CODE16) -ecc -q -0 -e125 -wx -zl -zdp -zu -ml $(BS3_OW_DBG_OPT) -s -oa -ob -of -oi -ol -or -os -oh -d+
    606607TEMPLATE_VBoxBS3KitImg_CXXFLAGS     = $(if $(BS3KIT_SEGNM_DATA16),-nd=$(BS3KIT_SEGNM_DATA16),) \
    607         -nt=BS3TEXT16 -nc=$(BS3KIT_CLASS_CODE16) -ecc -q -0 -wx -zl -zdp -zu -ml $(BS3_OW_DBG_OPT) -s -oa -ob -of -oi -ol -or -os -oh -d+
     608        -nt=BS3TEXT16 -nc=$(BS3KIT_CLASS_CODE16) -ecc -q -0 -e125 -wx -zl -zdp -zu -ml $(BS3_OW_DBG_OPT) -s -oa -ob -of -oi -ol -or -os -oh -d+
    608609TEMPLATE_VBoxBS3KitImg_CDEFS        = ARCH_BITS=16 RT_ARCH_X86
    609610
     
    772773TEMPLATE_VBoxBS3KitImg32_CXXTOOL      = Bs3Ow32
    773774TEMPLATE_VBoxBS3KitImg32_CFLAGS       = \
    774         -nt=BS3TEXT32 -nd=BS3DATA32 -nc=BS3CLASS32CODE -ecc -q -wx -zl -mf $(BS3_OW_DBG_OPT) -s -oa -ob -of -oi -ol -or -os -d+
     775        -nt=BS3TEXT32 -nd=BS3DATA32 -nc=BS3CLASS32CODE -ecc -q -e125 -wx -zl -mf $(BS3_OW_DBG_OPT) -s -oa -ob -of -oi -ol -or -os -d+
    775776TEMPLATE_VBoxBS3KitImg32_CXXFLAGS     = \
    776         -nt=BS3TEXT32 -nd=BS3DATA32 -nc=BS3CLASS32CODE -ecc -q -wx -zl -mf $(BS3_OW_DBG_OPT) -s -oa -ob -of -oi -ol -or -os -d+
     777        -nt=BS3TEXT32 -nd=BS3DATA32 -nc=BS3CLASS32CODE -ecc -q -e125 -wx -zl -mf $(BS3_OW_DBG_OPT) -s -oa -ob -of -oi -ol -or -os -d+
    777778TEMPLATE_VBoxBS3KitImg32_INCS         = $(VBOX_PATH_BS3KIT_SRC) .
    778779TEMPLATE_VBoxBS3KitImg32_LDTOOL       = VBoxBsUnusedLd
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1-template.c

    r66811 r66812  
    15831583
    15841584
    1585 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Pq_Uq(PBS3CG1STATE pThis, unsigned iEncoding)
     1585static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Pq_WO_Uq(PBS3CG1STATE pThis, unsigned iEncoding)
    15861586{
    15871587    unsigned off;
     
    16071607
    16081608
    1609 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vq_UqHi(PBS3CG1STATE pThis, unsigned iEncoding)
     1609static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vq_WO_UqHi(PBS3CG1STATE pThis, unsigned iEncoding)
    16101610{
    16111611    unsigned off;
     
    16991699
    17001700
    1701 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vdq_Wdq(PBS3CG1STATE pThis, unsigned iEncoding)
     1701static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vdq_WO_Wdq(PBS3CG1STATE pThis, unsigned iEncoding)
    17021702{
    17031703    unsigned off;
     
    18211821
    18221822
    1823 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VqZxReg_Nq(PBS3CG1STATE pThis, unsigned iEncoding)
     1823static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VqZxReg_WO_Nq(PBS3CG1STATE pThis, unsigned iEncoding)
    18241824{
    18251825    unsigned off;
     
    18881888
    18891889
    1890 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_MbRO(PBS3CG1STATE pThis, unsigned iEncoding)
     1890static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Mb_RO(PBS3CG1STATE pThis, unsigned iEncoding)
    18911891{
    18921892    unsigned off;
     
    19051905
    19061906
    1907 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_MdRO(PBS3CG1STATE pThis, unsigned iEncoding)
     1907static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Md_RO(PBS3CG1STATE pThis, unsigned iEncoding)
    19081908{
    19091909    unsigned off;
     
    19221922
    19231923
    1924 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_MdWO(PBS3CG1STATE pThis, unsigned iEncoding)
     1924static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Md_WO(PBS3CG1STATE pThis, unsigned iEncoding)
    19251925{
    19261926    unsigned off;
     
    22532253            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Gv_Ev__OR__BS3CG1ENC_MODRM_Ev_Gv(pThis, iEncoding);
    22542254
    2255         case BS3CG1ENC_MODRM_Wss_Vss:
     2255        case BS3CG1ENC_MODRM_Wss_WO_Vss:
    22562256            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wss_Vss(pThis, iEncoding);
    2257         case BS3CG1ENC_MODRM_Wsd_Vsd:
     2257        case BS3CG1ENC_MODRM_Wsd_WO_Vsd:
    22582258            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wsd_Vsd(pThis, iEncoding);
    2259         case BS3CG1ENC_MODRM_Wps_Vps:
    2260         case BS3CG1ENC_MODRM_Wpd_Vpd:
     2259        case BS3CG1ENC_MODRM_Wps_WO_Vps:
     2260        case BS3CG1ENC_MODRM_Wpd_WO_Vpd:
    22612261            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wps_Vps__OR__BS3CG1ENC_MODRM_Wpd_Vpd(pThis, iEncoding);
    2262         case BS3CG1ENC_MODRM_WqZxReg_Vq:
     2262        case BS3CG1ENC_MODRM_WqZxReg_WO_Vq:
    22632263            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_WqZxReg_Vq(pThis, iEncoding);
    22642264
    2265         case BS3CG1ENC_MODRM_Pq_Uq:
    2266             return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Pq_Uq(pThis, iEncoding);
    2267 
    2268         case BS3CG1ENC_MODRM_Vq_UqHi:
    2269             return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vq_UqHi(pThis, iEncoding);
    2270         case BS3CG1ENC_MODRM_Vq_Mq:
     2265        case BS3CG1ENC_MODRM_Pq_WO_Uq:
     2266            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Pq_WO_Uq(pThis, iEncoding);
     2267
     2268        case BS3CG1ENC_MODRM_Vq_WO_UqHi:
     2269            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vq_WO_UqHi(pThis, iEncoding);
     2270        case BS3CG1ENC_MODRM_Vq_WO_Mq:
    22712271            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vq_Mq(pThis, iEncoding);
    2272         case BS3CG1ENC_MODRM_VqHi_Uq:
     2272        case BS3CG1ENC_MODRM_VqHi_WO_Uq:
    22732273            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VqHi_Uq(pThis, iEncoding);
    2274         case BS3CG1ENC_MODRM_VqHi_Mq:
     2274        case BS3CG1ENC_MODRM_VqHi_WO_Mq:
    22752275            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VqHi_Mq(pThis, iEncoding);
    2276         case BS3CG1ENC_MODRM_Vdq_Wdq:
    2277             return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vdq_Wdq(pThis, iEncoding);
    2278         case BS3CG1ENC_MODRM_Vpd_Wpd:
    2279         case BS3CG1ENC_MODRM_Vps_Wps:
     2276        case BS3CG1ENC_MODRM_Vdq_WO_Wdq:
     2277            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vdq_WO_Wdq(pThis, iEncoding);
     2278        case BS3CG1ENC_MODRM_Vpd_WO_Wpd:
     2279        case BS3CG1ENC_MODRM_Vps_WO_Wps:
    22802280            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vps_Wps__OR__BS3CG1ENC_MODRM_Vpd_Wpd(pThis, iEncoding);
    2281         case BS3CG1ENC_MODRM_VssZxReg_Wss:
     2281        case BS3CG1ENC_MODRM_VssZxReg_WO_Wss:
    22822282            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VssZxReg_Wss(pThis, iEncoding);
    2283         case BS3CG1ENC_MODRM_VsdZxReg_Wsd:
    2284         case BS3CG1ENC_MODRM_VqZxReg_Wq:
     2283        case BS3CG1ENC_MODRM_VsdZxReg_WO_Wsd:
     2284        case BS3CG1ENC_MODRM_VqZxReg_WO_Wq:
    22852285            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VsdZxReg_Wsd__OR__MODRM_VqZxReg_Wq(pThis, iEncoding);
    2286         case BS3CG1ENC_MODRM_VqZxReg_Nq:
    2287             return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VqZxReg_Nq(pThis, iEncoding);
     2286        case BS3CG1ENC_MODRM_VqZxReg_WO_Nq:
     2287            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VqZxReg_WO_Nq(pThis, iEncoding);
    22882288
    22892289        case BS3CG1ENC_MODRM_Gv_Ma:
    22902290            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Gv_Ma(pThis, iEncoding);
    22912291
    2292         case BS3CG1ENC_MODRM_MbRO:
    2293             return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_MbRO(pThis, iEncoding);
    2294         case BS3CG1ENC_MODRM_MdRO:
    2295             return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_MdRO(pThis, iEncoding);
    2296         case BS3CG1ENC_MODRM_MdWO:
    2297             return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_MdWO(pThis, iEncoding);
    2298         case BS3CG1ENC_VEX_MODRM_MdWO:
     2292        case BS3CG1ENC_MODRM_Mb_RO:
     2293            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Mb_RO(pThis, iEncoding);
     2294        case BS3CG1ENC_MODRM_Md_RO:
     2295            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Md_RO(pThis, iEncoding);
     2296        case BS3CG1ENC_MODRM_Md_WO:
     2297            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Md_WO(pThis, iEncoding);
     2298        case BS3CG1ENC_VEX_MODRM_Md_WO:
    22992299            return Bs3Cg1EncodeNext_BS3CG1ENC_VEX_MODRM_MdWO(pThis, iEncoding);
    2300         case BS3CG1ENC_MODRM_MqWO_Vq:
     2300        case BS3CG1ENC_MODRM_Mq_WO_Vq:
    23012301            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_MqWO_Vq(pThis, iEncoding);
    2302         case BS3CG1ENC_MODRM_MqWO_VqHi:
     2302        case BS3CG1ENC_MODRM_Mq_WO_VqHi:
    23032303            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_MqWO_VqHi(pThis, iEncoding);
    23042304
     
    23982398            break;
    23992399
    2400         case BS3CG1ENC_MODRM_Wss_Vss:
     2400        case BS3CG1ENC_MODRM_Wss_WO_Vss:
    24012401            pThis->iRmOp             = 0;
    24022402            pThis->iRegOp            = 1;
     
    24072407            break;
    24082408
    2409         case BS3CG1ENC_MODRM_Wsd_Vsd:
    2410         case BS3CG1ENC_MODRM_WqZxReg_Vq:
     2409        case BS3CG1ENC_MODRM_Wsd_WO_Vsd:
     2410        case BS3CG1ENC_MODRM_WqZxReg_WO_Vq:
    24112411            pThis->iRmOp             = 0;
    24122412            pThis->iRegOp            = 1;
     
    24172417            break;
    24182418
    2419         case BS3CG1ENC_MODRM_Wps_Vps:
    2420         case BS3CG1ENC_MODRM_Wpd_Vpd:
     2419        case BS3CG1ENC_MODRM_Wps_WO_Vps:
     2420        case BS3CG1ENC_MODRM_Wpd_WO_Vpd:
    24212421            pThis->iRmOp             = 0;
    24222422            pThis->iRegOp            = 1;
     
    24272427            break;
    24282428
    2429         case BS3CG1ENC_MODRM_Vdq_Wdq:
     2429        case BS3CG1ENC_MODRM_Vdq_WO_Wdq:
    24302430            pThis->iRmOp             = 1;
    24312431            pThis->iRegOp            = 0;
     
    24362436            break;
    24372437
    2438         case BS3CG1ENC_MODRM_Vpd_Wpd:
    2439         case BS3CG1ENC_MODRM_Vps_Wps:
     2438        case BS3CG1ENC_MODRM_Vpd_WO_Wpd:
     2439        case BS3CG1ENC_MODRM_Vps_WO_Wps:
    24402440            pThis->iRmOp             = 1;
    24412441            pThis->iRegOp            = 0;
     
    24462446            break;
    24472447
    2448         case BS3CG1ENC_MODRM_Pq_Uq:
    2449         case BS3CG1ENC_MODRM_Vq_UqHi:
    2450         case BS3CG1ENC_MODRM_VqHi_Uq:
     2448        case BS3CG1ENC_MODRM_Pq_WO_Uq:
     2449        case BS3CG1ENC_MODRM_Vq_WO_UqHi:
     2450        case BS3CG1ENC_MODRM_VqHi_WO_Uq:
    24512451            pThis->iRmOp             = 1;
    24522452            pThis->iRegOp            = 0;
     
    24572457            break;
    24582458
    2459         case BS3CG1ENC_MODRM_Vq_Mq:
    2460         case BS3CG1ENC_MODRM_VqHi_Mq:
     2459        case BS3CG1ENC_MODRM_Vq_WO_Mq:
     2460        case BS3CG1ENC_MODRM_VqHi_WO_Mq:
    24612461            pThis->iRmOp             = 1;
    24622462            pThis->iRegOp            = 0;
     
    24672467            break;
    24682468
    2469         case BS3CG1ENC_MODRM_VssZxReg_Wss:
     2469        case BS3CG1ENC_MODRM_VssZxReg_WO_Wss:
    24702470            pThis->iRmOp             = 1;
    24712471            pThis->iRegOp            = 0;
     
    24762476            break;
    24772477
    2478         case BS3CG1ENC_MODRM_VsdZxReg_Wsd:
    2479         case BS3CG1ENC_MODRM_VqZxReg_Wq:
    2480         case BS3CG1ENC_MODRM_VqZxReg_Nq:
     2478        case BS3CG1ENC_MODRM_VsdZxReg_WO_Wsd:
     2479        case BS3CG1ENC_MODRM_VqZxReg_WO_Wq:
     2480        case BS3CG1ENC_MODRM_VqZxReg_WO_Nq:
    24812481            pThis->iRmOp             = 1;
    24822482            pThis->iRegOp            = 0;
     
    24872487            break;
    24882488
    2489         case BS3CG1ENC_MODRM_MbRO:
     2489        case BS3CG1ENC_MODRM_Mb_RO:
    24902490            pThis->iRmOp             = 0;
    24912491            pThis->aOperands[0].cbOp = 1;
     
    24932493            break;
    24942494
    2495         case BS3CG1ENC_MODRM_MdRO:
     2495        case BS3CG1ENC_MODRM_Md_RO:
    24962496            pThis->iRmOp             = 0;
    24972497            pThis->aOperands[0].cbOp = 4;
     
    24992499            break;
    25002500
    2501         case BS3CG1ENC_MODRM_MdWO:
    2502         case BS3CG1ENC_VEX_MODRM_MdWO:
     2501        case BS3CG1ENC_MODRM_Md_WO:
     2502        case BS3CG1ENC_VEX_MODRM_Md_WO:
    25032503            pThis->iRmOp             = 0;
    25042504            pThis->aOperands[0].cbOp = 4;
     
    25062506            break;
    25072507
    2508         case BS3CG1ENC_MODRM_MqWO_Vq:
    2509         case BS3CG1ENC_MODRM_MqWO_VqHi:
     2508        case BS3CG1ENC_MODRM_Mq_WO_Vq:
     2509        case BS3CG1ENC_MODRM_Mq_WO_VqHi:
    25102510            pThis->iRmOp             = 0;
    25112511            pThis->iRegOp            = 1;
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1.h

    r66811 r66812  
    4545    BS3CG1OP_Ev,
    4646    BS3CG1OP_Wss,
     47    BS3CG1OP_Wss_WO,
    4748    BS3CG1OP_Wsd,
     49    BS3CG1OP_Wsd_WO,
    4850    BS3CG1OP_Wps,
     51    BS3CG1OP_Wps_WO,
    4952    BS3CG1OP_Wpd,
     53    BS3CG1OP_Wpd_WO,
    5054    BS3CG1OP_Wdq,
     55    BS3CG1OP_Wdq_WO,
    5156    BS3CG1OP_Wq,
    52     BS3CG1OP_WqZxReg,
     57    BS3CG1OP_Wq_WO,
     58    BS3CG1OP_WqZxReg_WO,
    5359
    5460    BS3CG1OP_Gb,
    5561    BS3CG1OP_Gv,
    5662    BS3CG1OP_Nq,
    57     BS3CG1OP_Pq,
     63    BS3CG1OP_Pq_WO,
    5864    BS3CG1OP_Uq,
    5965    BS3CG1OP_UqHi,
    6066    BS3CG1OP_Vss,
    61     BS3CG1OP_VssZxReg,
     67    BS3CG1OP_Vss_WO,
     68    BS3CG1OP_VssZxReg_WO,
    6269    BS3CG1OP_Vsd,
    63     BS3CG1OP_VsdZxReg,
     70    BS3CG1OP_Vsd_WO,
     71    BS3CG1OP_VsdZxReg_WO,
    6472    BS3CG1OP_Vps,
     73    BS3CG1OP_Vps_WO,
    6574    BS3CG1OP_Vpd,
     75    BS3CG1OP_Vpd_WO,
    6676    BS3CG1OP_Vq,
     77    BS3CG1OP_Vq_WO,
    6778    BS3CG1OP_Vdq,
     79    BS3CG1OP_Vdq_WO,
    6880    BS3CG1OP_VqHi,
    69     BS3CG1OP_VqZxReg,
     81    BS3CG1OP_VqHi_WO,
     82    BS3CG1OP_VqZxReg_WO,
    7083
    7184    BS3CG1OP_Ib,
     
    7689
    7790    BS3CG1OP_Ma,
    78     BS3CG1OP_MbRO,
    79     BS3CG1OP_MdRO,
    80     BS3CG1OP_MdWO,
     91    BS3CG1OP_Mb_RO,
     92    BS3CG1OP_Md_RO,
     93    BS3CG1OP_Md_WO,
    8194    BS3CG1OP_Mq,
    82     BS3CG1OP_MqWO,
     95    BS3CG1OP_Mq_WO,
    8396
    8497    BS3CG1OP_END
     
    100113    BS3CG1ENC_MODRM_Eb_Gb,
    101114    BS3CG1ENC_MODRM_Ev_Gv,
    102     BS3CG1ENC_MODRM_Wss_Vss,
    103     BS3CG1ENC_MODRM_Wsd_Vsd,
    104     BS3CG1ENC_MODRM_Wps_Vps,
    105     BS3CG1ENC_MODRM_Wpd_Vpd,
    106     BS3CG1ENC_MODRM_WqZxReg_Vq,
     115    BS3CG1ENC_MODRM_Wss_WO_Vss,
     116    BS3CG1ENC_MODRM_Wsd_WO_Vsd,
     117    BS3CG1ENC_MODRM_Wps_WO_Vps,
     118    BS3CG1ENC_MODRM_Wpd_WO_Vpd,
     119    BS3CG1ENC_MODRM_WqZxReg_WO_Vq,
    107120
    108121    BS3CG1ENC_MODRM_Gb_Eb,
    109122    BS3CG1ENC_MODRM_Gv_Ev,
    110123    BS3CG1ENC_MODRM_Gv_Ma, /**< bound instruction */
    111     BS3CG1ENC_MODRM_Pq_Uq,
    112     BS3CG1ENC_MODRM_Vq_UqHi,
    113     BS3CG1ENC_MODRM_Vq_Mq,
    114     BS3CG1ENC_MODRM_VqHi_Uq,
    115     BS3CG1ENC_MODRM_VqHi_Mq,
    116     BS3CG1ENC_MODRM_Vdq_Wdq,
    117     BS3CG1ENC_MODRM_Vpd_Wpd,
    118     BS3CG1ENC_MODRM_Vps_Wps,
    119     BS3CG1ENC_MODRM_VssZxReg_Wss,
    120     BS3CG1ENC_MODRM_VsdZxReg_Wsd,
    121     BS3CG1ENC_MODRM_VqZxReg_Wq,
    122     BS3CG1ENC_MODRM_VqZxReg_Nq,
    123     BS3CG1ENC_MODRM_MbRO,
    124     BS3CG1ENC_MODRM_MdRO,
    125     BS3CG1ENC_MODRM_MdWO,
    126     BS3CG1ENC_MODRM_MqWO_Vq,
    127     BS3CG1ENC_MODRM_MqWO_VqHi,
    128 
    129     BS3CG1ENC_VEX_MODRM_MdWO,
     124    BS3CG1ENC_MODRM_Pq_WO_Uq,
     125    BS3CG1ENC_MODRM_Vq_WO_UqHi,
     126    BS3CG1ENC_MODRM_Vq_WO_Mq,
     127    BS3CG1ENC_MODRM_VqHi_WO_Uq,
     128    BS3CG1ENC_MODRM_VqHi_WO_Mq,
     129    BS3CG1ENC_MODRM_Vdq_WO_Wdq,
     130    BS3CG1ENC_MODRM_Vpd_WO_Wpd,
     131    BS3CG1ENC_MODRM_Vps_WO_Wps,
     132    BS3CG1ENC_MODRM_VssZxReg_WO_Wss,
     133    BS3CG1ENC_MODRM_VsdZxReg_WO_Wsd,
     134    BS3CG1ENC_MODRM_VqZxReg_WO_Wq,
     135    BS3CG1ENC_MODRM_VqZxReg_WO_Nq,
     136    BS3CG1ENC_MODRM_Mb_RO,
     137    BS3CG1ENC_MODRM_Md_RO,
     138    BS3CG1ENC_MODRM_Md_WO,
     139    BS3CG1ENC_MODRM_Mq_WO_Vq,
     140    BS3CG1ENC_MODRM_Mq_WO_VqHi,
     141
     142    BS3CG1ENC_VEX_MODRM_Md_WO,
    130143
    131144    BS3CG1ENC_FIXED,
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