VirtualBox

Changeset 103235 in vbox for trunk/src/VBox/VMM/VMMAll


Ignore:
Timestamp:
Feb 7, 2024 1:38:33 AM (13 months ago)
Author:
vboxsync
Message:

VMM/IEM: Liveness analysis, part 7b: Release build fix for visual C++. bugref:10372

File:
1 edited

Legend:

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

    r103220 r103235  
    82538253
    82548254
    8255 /**
    8256  * @opcode      0xc1
    8257  */
    8258 FNIEMOP_DEF(iemOp_Grp2_Ev_Ib)
    8259 {
    8260     IEMOP_HLP_MIN_186();
    8261     uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    8262 
    8263     /* Need to use a body macro here since the EFLAGS behaviour differs between
    8264        the shifts, rotates and rotate w/ carry. Sigh. */
     8255/* Need to use a body macro here since the EFLAGS behaviour differs between
     8256   the shifts, rotates and rotate w/ carry. Sigh. */
    82658257#define GRP2_BODY_Ev_Ib(a_pImplExpr) \
    82668258        PCIEMOPSHIFTSIZES const pImpl = (a_pImplExpr); \
     
    83928384        } (void)0
    83938385
     8386/**
     8387 * @opmaps      grp2_c1
     8388 * @opcode      /0
     8389 * @opflclass   rotate_count
     8390 */
     8391FNIEMOP_DEF_1(iemOp_grp2_rol_Ev_Ib, uint8_t, bRm)
     8392{
     8393    IEMOP_MNEMONIC2(MI, ROL, rol, Ev, Ib, DISOPTYPE_HARMLESS, 0);
     8394    GRP2_BODY_Ev_Ib(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rol_eflags));
     8395}
     8396
     8397
     8398/**
     8399 * @opmaps      grp2_c1
     8400 * @opcode      /1
     8401 * @opflclass   rotate_count
     8402 */
     8403FNIEMOP_DEF_1(iemOp_grp2_ror_Ev_Ib, uint8_t, bRm)
     8404{
     8405    IEMOP_MNEMONIC2(MI, ROR, ror, Ev, Ib, DISOPTYPE_HARMLESS, 0);
     8406    GRP2_BODY_Ev_Ib(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_ror_eflags));
     8407}
     8408
     8409
     8410/**
     8411 * @opmaps      grp2_c1
     8412 * @opcode      /2
     8413 * @opflclass   rotate_carry_count
     8414 */
     8415FNIEMOP_DEF_1(iemOp_grp2_rcl_Ev_Ib, uint8_t, bRm)
     8416{
     8417    IEMOP_MNEMONIC2(MI, RCL, rcl, Ev, Ib, DISOPTYPE_HARMLESS, 0);
     8418    GRP2_BODY_Ev_Ib(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rcl_eflags));
     8419}
     8420
     8421
     8422/**
     8423 * @opmaps      grp2_c1
     8424 * @opcode      /3
     8425 * @opflclass   rotate_carry_count
     8426 */
     8427FNIEMOP_DEF_1(iemOp_grp2_rcr_Ev_Ib, uint8_t, bRm)
     8428{
     8429    IEMOP_MNEMONIC2(MI, RCR, rcr, Ev, Ib, DISOPTYPE_HARMLESS, 0);
     8430    GRP2_BODY_Ev_Ib(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rcr_eflags));
     8431}
     8432
     8433
     8434/**
     8435 * @opmaps      grp2_c1
     8436 * @opcode      /4
     8437 * @opflclass   shift_count
     8438 */
     8439FNIEMOP_DEF_1(iemOp_grp2_shl_Ev_Ib, uint8_t, bRm)
     8440{
     8441    IEMOP_MNEMONIC2(MI, SHL, shl, Ev, Ib, DISOPTYPE_HARMLESS, 0);
     8442    GRP2_BODY_Ev_Ib(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_shl_eflags));
     8443}
     8444
     8445
     8446/**
     8447 * @opmaps      grp2_c1
     8448 * @opcode      /5
     8449 * @opflclass   shift_count
     8450 */
     8451FNIEMOP_DEF_1(iemOp_grp2_shr_Ev_Ib, uint8_t, bRm)
     8452{
     8453    IEMOP_MNEMONIC2(MI, SHR, shr, Ev, Ib, DISOPTYPE_HARMLESS, 0);
     8454    GRP2_BODY_Ev_Ib(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_shr_eflags));
     8455}
     8456
     8457
     8458/**
     8459 * @opmaps      grp2_c1
     8460 * @opcode      /7
     8461 * @opflclass   shift_count
     8462 */
     8463FNIEMOP_DEF_1(iemOp_grp2_sar_Ev_Ib, uint8_t, bRm)
     8464{
     8465    IEMOP_MNEMONIC2(MI, SAR, sar, Ev, Ib, DISOPTYPE_HARMLESS, 0);
     8466    GRP2_BODY_Ev_Ib(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_sar_eflags));
     8467}
     8468
     8469#undef GRP2_BODY_Ev_Ib
     8470
     8471/**
     8472 * @opcode      0xc1
     8473 */
     8474FNIEMOP_DEF(iemOp_Grp2_Ev_Ib)
     8475{
     8476    IEMOP_HLP_MIN_186();
     8477    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
     8478
    83948479    switch (IEM_GET_MODRM_REG_8(bRm))
    83958480    {
    8396         /**
    8397          * @opdone
    8398          * @opmaps      grp2_c1
    8399          * @opcode      /0
    8400          * @opflclass   rotate_count
    8401          */
    8402         case 0:
    8403         {
    8404             IEMOP_MNEMONIC2(MI, ROL, rol, Ev, Ib, DISOPTYPE_HARMLESS, 0);
    8405             GRP2_BODY_Ev_Ib(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rol_eflags));
    8406             break;
    8407         }
    8408         /**
    8409          * @opdone
    8410          * @opmaps      grp2_c1
    8411          * @opcode      /1
    8412          * @opflclass   rotate_count
    8413          */
    8414         case 1:
    8415         {
    8416             IEMOP_MNEMONIC2(MI, ROR, ror, Ev, Ib, DISOPTYPE_HARMLESS, 0);
    8417             GRP2_BODY_Ev_Ib(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_ror_eflags));
    8418             break;
    8419         }
    8420         /**
    8421          * @opdone
    8422          * @opmaps      grp2_c1
    8423          * @opcode      /2
    8424          * @opflclass   rotate_carry_count
    8425          */
    8426         case 2:
    8427         {
    8428             IEMOP_MNEMONIC2(MI, RCL, rcl, Ev, Ib, DISOPTYPE_HARMLESS, 0);
    8429             GRP2_BODY_Ev_Ib(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rcl_eflags));
    8430             break;
    8431         }
    8432         /**
    8433          * @opdone
    8434          * @opmaps      grp2_c1
    8435          * @opcode      /3
    8436          * @opflclass   rotate_carry_count
    8437          */
    8438         case 3:
    8439         {
    8440             IEMOP_MNEMONIC2(MI, RCR, rcr, Ev, Ib, DISOPTYPE_HARMLESS, 0);
    8441             GRP2_BODY_Ev_Ib(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rcr_eflags));
    8442             break;
    8443         }
    8444         /**
    8445          * @opdone
    8446          * @opmaps      grp2_c1
    8447          * @opcode      /4
    8448          * @opflclass   shift_count
    8449          */
    8450         case 4:
    8451         {
    8452             IEMOP_MNEMONIC2(MI, SHL, shl, Ev, Ib, DISOPTYPE_HARMLESS, 0);
    8453             GRP2_BODY_Ev_Ib(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_shl_eflags));
    8454             break;
    8455         }
    8456         /**
    8457          * @opdone
    8458          * @opmaps      grp2_c1
    8459          * @opcode      /5
    8460          * @opflclass   shift_count
    8461          */
    8462         case 5:
    8463         {
    8464             IEMOP_MNEMONIC2(MI, SHR, shr, Ev, Ib, DISOPTYPE_HARMLESS, 0);
    8465             GRP2_BODY_Ev_Ib(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_shr_eflags));
    8466             break;
    8467         }
    8468         /**
    8469          * @opdone
    8470          * @opmaps      grp2_c1
    8471          * @opcode      /7
    8472          * @opflclass   shift_count
    8473          */
    8474         case 7:
    8475         {
    8476             IEMOP_MNEMONIC2(MI, SAR, sar, Ev, Ib, DISOPTYPE_HARMLESS, 0);
    8477             GRP2_BODY_Ev_Ib(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_sar_eflags));
    8478             break;
    8479         }
    8480 
     8481        case 0: return FNIEMOP_CALL_1(iemOp_grp2_rol_Ev_Ib, bRm);
     8482        case 1: return FNIEMOP_CALL_1(iemOp_grp2_ror_Ev_Ib, bRm);
     8483        case 2: return FNIEMOP_CALL_1(iemOp_grp2_rcl_Ev_Ib, bRm);
     8484        case 3: return FNIEMOP_CALL_1(iemOp_grp2_rcr_Ev_Ib, bRm);
     8485        case 4: return FNIEMOP_CALL_1(iemOp_grp2_shl_Ev_Ib, bRm);
     8486        case 5: return FNIEMOP_CALL_1(iemOp_grp2_shr_Ev_Ib, bRm);
     8487        case 7: return FNIEMOP_CALL_1(iemOp_grp2_sar_Ev_Ib, bRm);
    84818488        case 6: IEMOP_RAISE_INVALID_OPCODE_RET();
    84828489        IEM_NOT_REACHED_DEFAULT_CASE_RET(); /* gcc maybe stupid */
    84838490    }
    8484 #undef GRP2_BODY_Ev_Ib
    84858491}
    84868492
     
    90889094
    90899095
    9090 
    9091 /**
    9092  * @opcode      0xd1
    9093  */
    9094 FNIEMOP_DEF(iemOp_Grp2_Ev_1)
    9095 {
    9096     uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    9097 
    9098     /* Need to use a body macro here since the EFLAGS behaviour differs between
    9099        the shifts, rotates and rotate w/ carry. Sigh. */
     9096/* Need to use a body macro here since the EFLAGS behaviour differs between
     9097   the shifts, rotates and rotate w/ carry. Sigh. */
    91009098#define GRP2_BODY_Ev_1(a_pImplExpr) \
    91019099        PCIEMOPSHIFTSIZES const pImpl = (a_pImplExpr); \
     
    92179215        } (void)0
    92189216
     9217/**
     9218 * @opmaps      grp2_d1
     9219 * @opcode      /0
     9220 * @opflclass   rotate_1
     9221 */
     9222FNIEMOP_DEF_1(iemOp_grp2_rol_Ev_1, uint8_t, bRm)
     9223{
     9224    IEMOP_MNEMONIC2(M1, ROL, rol, Ev, 1, DISOPTYPE_HARMLESS, 0);
     9225    GRP2_BODY_Ev_1(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rol_eflags));
     9226}
     9227
     9228
     9229/**
     9230 * @opmaps      grp2_d1
     9231 * @opcode      /1
     9232 * @opflclass   rotate_1
     9233 */
     9234FNIEMOP_DEF_1(iemOp_grp2_ror_Ev_1, uint8_t, bRm)
     9235{
     9236    IEMOP_MNEMONIC2(M1, ROR, ror, Ev, 1, DISOPTYPE_HARMLESS, 0);
     9237    GRP2_BODY_Ev_1(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_ror_eflags));
     9238}
     9239
     9240
     9241/**
     9242 * @opmaps      grp2_d1
     9243 * @opcode      /2
     9244 * @opflclass   rotate_carry_1
     9245 */
     9246FNIEMOP_DEF_1(iemOp_grp2_rcl_Ev_1, uint8_t, bRm)
     9247{
     9248    IEMOP_MNEMONIC2(M1, RCL, rcl, Ev, 1, DISOPTYPE_HARMLESS, 0);
     9249    GRP2_BODY_Ev_1(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rcl_eflags));
     9250}
     9251
     9252
     9253/**
     9254 * @opmaps      grp2_d1
     9255 * @opcode      /3
     9256 * @opflclass   rotate_carry_1
     9257 */
     9258FNIEMOP_DEF_1(iemOp_grp2_rcr_Ev_1, uint8_t, bRm)
     9259{
     9260    IEMOP_MNEMONIC2(M1, RCR, rcr, Ev, 1, DISOPTYPE_HARMLESS, 0);
     9261    GRP2_BODY_Ev_1(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rcr_eflags));
     9262}
     9263
     9264
     9265/**
     9266 * @opmaps      grp2_d1
     9267 * @opcode      /4
     9268 * @opflclass   shift_1
     9269 */
     9270FNIEMOP_DEF_1(iemOp_grp2_shl_Ev_1, uint8_t, bRm)
     9271{
     9272    IEMOP_MNEMONIC2(M1, SHL, shl, Ev, 1, DISOPTYPE_HARMLESS, 0);
     9273    GRP2_BODY_Ev_1(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_shl_eflags));
     9274}
     9275
     9276
     9277/**
     9278 * @opmaps      grp2_d1
     9279 * @opcode      /5
     9280 * @opflclass   shift_1
     9281 */
     9282FNIEMOP_DEF_1(iemOp_grp2_shr_Ev_1, uint8_t, bRm)
     9283{
     9284    IEMOP_MNEMONIC2(M1, SHR, shr, Ev, 1, DISOPTYPE_HARMLESS, 0);
     9285    GRP2_BODY_Ev_1(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_shr_eflags));
     9286}
     9287
     9288
     9289/**
     9290 * @opmaps      grp2_d1
     9291 * @opcode      /7
     9292 * @opflclass   shift_1
     9293 */
     9294FNIEMOP_DEF_1(iemOp_grp2_sar_Ev_1, uint8_t, bRm)
     9295{
     9296    IEMOP_MNEMONIC2(M1, SAR, sar, Ev, 1, DISOPTYPE_HARMLESS, 0);
     9297    GRP2_BODY_Ev_1(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_sar_eflags));
     9298}
     9299
     9300#undef GRP2_BODY_Ev_1
     9301
     9302/**
     9303 * @opcode      0xd1
     9304 */
     9305FNIEMOP_DEF(iemOp_Grp2_Ev_1)
     9306{
     9307    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    92199308    switch (IEM_GET_MODRM_REG_8(bRm))
    92209309    {
    9221         /**
    9222          * @opdone
    9223          * @opmaps      grp2_d1
    9224          * @opcode      /0
    9225          * @opflclass   rotate_1
    9226          */
    9227         case 0:
    9228         {
    9229             IEMOP_MNEMONIC2(M1, ROL, rol, Ev, 1, DISOPTYPE_HARMLESS, 0);
    9230             GRP2_BODY_Ev_1(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rol_eflags));
    9231             break;
    9232         }
    9233         /**
    9234          * @opdone
    9235          * @opmaps      grp2_d1
    9236          * @opcode      /1
    9237          * @opflclass   rotate_1
    9238          */
    9239         case 1:
    9240         {
    9241             IEMOP_MNEMONIC2(M1, ROR, ror, Ev, 1, DISOPTYPE_HARMLESS, 0);
    9242             GRP2_BODY_Ev_1(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_ror_eflags));
    9243             break;
    9244         }
    9245         /**
    9246          * @opdone
    9247          * @opmaps      grp2_d1
    9248          * @opcode      /2
    9249          * @opflclass   rotate_carry_1
    9250          */
    9251         case 2:
    9252         {
    9253             IEMOP_MNEMONIC2(M1, RCL, rcl, Ev, 1, DISOPTYPE_HARMLESS, 0);
    9254             GRP2_BODY_Ev_1(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rcl_eflags));
    9255             break;
    9256         }
    9257         /**
    9258          * @opdone
    9259          * @opmaps      grp2_d1
    9260          * @opcode      /3
    9261          * @opflclass   rotate_carry_1
    9262          */
    9263         case 3:
    9264         {
    9265             IEMOP_MNEMONIC2(M1, RCR, rcr, Ev, 1, DISOPTYPE_HARMLESS, 0);
    9266             GRP2_BODY_Ev_1(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rcr_eflags));
    9267             break;
    9268         }
    9269         /**
    9270          * @opdone
    9271          * @opmaps      grp2_d1
    9272          * @opcode      /4
    9273          * @opflclass   shift_1
    9274          */
    9275         case 4:
    9276         {
    9277             IEMOP_MNEMONIC2(M1, SHL, shl, Ev, 1, DISOPTYPE_HARMLESS, 0);
    9278             GRP2_BODY_Ev_1(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_shl_eflags));
    9279             break;
    9280         }
    9281         /**
    9282          * @opdone
    9283          * @opmaps      grp2_d1
    9284          * @opcode      /5
    9285          * @opflclass   shift_1
    9286          */
    9287         case 5:
    9288         {
    9289             IEMOP_MNEMONIC2(M1, SHR, shr, Ev, 1, DISOPTYPE_HARMLESS, 0);
    9290             GRP2_BODY_Ev_1(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_shr_eflags));
    9291             break;
    9292         }
    9293         /**
    9294          * @opdone
    9295          * @opmaps      grp2_d1
    9296          * @opcode      /7
    9297          * @opflclass   shift_1
    9298          */
    9299         case 7:
    9300         {
    9301             IEMOP_MNEMONIC2(M1, SAR, sar, Ev, 1, DISOPTYPE_HARMLESS, 0);
    9302             GRP2_BODY_Ev_1(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_sar_eflags));
    9303             break;
    9304         }
    9305         /** @opdone */
     9310        case 0: return FNIEMOP_CALL_1(iemOp_grp2_rol_Ev_1, bRm);
     9311        case 1: return FNIEMOP_CALL_1(iemOp_grp2_ror_Ev_1, bRm);
     9312        case 2: return FNIEMOP_CALL_1(iemOp_grp2_rcl_Ev_1, bRm);
     9313        case 3: return FNIEMOP_CALL_1(iemOp_grp2_rcr_Ev_1, bRm);
     9314        case 4: return FNIEMOP_CALL_1(iemOp_grp2_shl_Ev_1, bRm);
     9315        case 5: return FNIEMOP_CALL_1(iemOp_grp2_shr_Ev_1, bRm);
     9316        case 7: return FNIEMOP_CALL_1(iemOp_grp2_sar_Ev_1, bRm);
    93069317        case 6: IEMOP_RAISE_INVALID_OPCODE_RET();
    93079318        IEM_NOT_REACHED_DEFAULT_CASE_RET(); /* gcc maybe, well... */
    93089319    }
    9309 #undef GRP2_BODY_Ev_1
    93109320}
    93119321
     
    94549464
    94559465
    9456 /**
    9457  * @opcode      0xd3
    9458  */
    9459 FNIEMOP_DEF(iemOp_Grp2_Ev_CL)
    9460 {
    9461     uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    9462 
    9463     /* Need to use a body macro here since the EFLAGS behaviour differs between
    9464        the shifts, rotates and rotate w/ carry. Sigh. */
     9466/* Need to use a body macro here since the EFLAGS behaviour differs between
     9467   the shifts, rotates and rotate w/ carry. Sigh. */
    94659468#define GRP2_BODY_Ev_CL(a_pImplExpr) \
    94669469        PCIEMOPSHIFTSIZES const pImpl = (a_pImplExpr); \
     
    95879590            } \
    95889591        } (void)0
     9592
     9593
     9594/**
     9595 * @opmaps      grp2_d0
     9596 * @opcode      /0
     9597 * @opflclass   rotate_count
     9598 */
     9599FNIEMOP_DEF_1(iemOp_grp2_rol_Ev_CL, uint8_t, bRm)
     9600{
     9601    IEMOP_MNEMONIC2EX(rol_Ev_CL, "rol Ev,CL", M_CL, ROL, rol, Ev, REG_CL, DISOPTYPE_HARMLESS, 0);
     9602    GRP2_BODY_Ev_CL(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rol_eflags));
     9603}
     9604
     9605
     9606/**
     9607 * @opmaps      grp2_d0
     9608 * @opcode      /1
     9609 * @opflclass   rotate_count
     9610 */
     9611FNIEMOP_DEF_1(iemOp_grp2_ror_Ev_CL, uint8_t, bRm)
     9612{
     9613    IEMOP_MNEMONIC2EX(ror_Ev_CL, "ror Ev,CL", M_CL, ROR, ror, Ev, REG_CL, DISOPTYPE_HARMLESS, 0);
     9614    GRP2_BODY_Ev_CL(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_ror_eflags));
     9615}
     9616
     9617
     9618/**
     9619 * @opmaps      grp2_d0
     9620 * @opcode      /2
     9621 * @opflclass   rotate_carry_count
     9622 */
     9623FNIEMOP_DEF_1(iemOp_grp2_rcl_Ev_CL, uint8_t, bRm)
     9624{
     9625    IEMOP_MNEMONIC2EX(rcl_Ev_CL, "rcl Ev,CL", M_CL, RCL, rcl, Ev, REG_CL, DISOPTYPE_HARMLESS, 0);
     9626    GRP2_BODY_Ev_CL(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rcl_eflags));
     9627}
     9628
     9629
     9630/**
     9631 * @opmaps      grp2_d0
     9632 * @opcode      /3
     9633 * @opflclass   rotate_carry_count
     9634 */
     9635FNIEMOP_DEF_1(iemOp_grp2_rcr_Ev_CL, uint8_t, bRm)
     9636{
     9637    IEMOP_MNEMONIC2EX(rcr_Ev_CL, "rcr Ev,CL", M_CL, RCR, rcr, Ev, REG_CL, DISOPTYPE_HARMLESS, 0);
     9638    GRP2_BODY_Ev_CL(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rcr_eflags));
     9639}
     9640
     9641
     9642/**
     9643 * @opmaps      grp2_d0
     9644 * @opcode      /4
     9645 * @opflclass   shift_count
     9646 */
     9647FNIEMOP_DEF_1(iemOp_grp2_shl_Ev_CL, uint8_t, bRm)
     9648{
     9649    IEMOP_MNEMONIC2EX(shl_Ev_CL, "shl Ev,CL", M_CL, SHL, shl, Ev, REG_CL, DISOPTYPE_HARMLESS, 0);
     9650    GRP2_BODY_Ev_CL(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_shl_eflags));
     9651}
     9652
     9653
     9654/**
     9655 * @opmaps      grp2_d0
     9656 * @opcode      /5
     9657 * @opflclass   shift_count
     9658 */
     9659FNIEMOP_DEF_1(iemOp_grp2_shr_Ev_CL, uint8_t, bRm)
     9660{
     9661    IEMOP_MNEMONIC2EX(shr_Ev_CL, "shr Ev,CL", M_CL, SHR, shr, Ev, REG_CL, DISOPTYPE_HARMLESS, 0);
     9662    GRP2_BODY_Ev_CL(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_shr_eflags));
     9663}
     9664
     9665
     9666/**
     9667 * @opmaps      grp2_d0
     9668 * @opcode      /7
     9669 * @opflclass   shift_count
     9670 */
     9671FNIEMOP_DEF_1(iemOp_grp2_sar_Ev_CL, uint8_t, bRm)
     9672{
     9673    IEMOP_MNEMONIC2EX(sar_Ev_CL, "sar Ev,CL", M_CL, SAR, sar, Ev, REG_CL, DISOPTYPE_HARMLESS, 0);
     9674    GRP2_BODY_Ev_CL(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_sar_eflags));
     9675}
     9676
     9677#undef GRP2_BODY_Ev_CL
     9678
     9679/**
     9680 * @opcode      0xd3
     9681 */
     9682FNIEMOP_DEF(iemOp_Grp2_Ev_CL)
     9683{
     9684    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    95899685    switch (IEM_GET_MODRM_REG_8(bRm))
    95909686    {
    9591         /**
    9592          * @opdone
    9593          * @opmaps      grp2_d0
    9594          * @opcode      /0
    9595          * @opflclass   rotate_count
    9596          */
    9597         case 0:
    9598         {
    9599             IEMOP_MNEMONIC2EX(rol_Ev_CL, "rol Ev,CL", M_CL, ROL, rol, Ev, REG_CL, DISOPTYPE_HARMLESS, 0);
    9600             GRP2_BODY_Ev_CL(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rol_eflags));
    9601             break;
    9602         }
    9603         /**
    9604          * @opdone
    9605          * @opmaps      grp2_d0
    9606          * @opcode      /1
    9607          * @opflclass   rotate_count
    9608          */
    9609         case 1:
    9610         {
    9611             IEMOP_MNEMONIC2EX(ror_Ev_CL, "ror Ev,CL", M_CL, ROR, ror, Ev, REG_CL, DISOPTYPE_HARMLESS, 0);
    9612             GRP2_BODY_Ev_CL(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_ror_eflags));
    9613             break;
    9614         }
    9615         /**
    9616          * @opdone
    9617          * @opmaps      grp2_d0
    9618          * @opcode      /2
    9619          * @opflclass   rotate_carry_count
    9620          */
    9621         case 2:
    9622         {
    9623             IEMOP_MNEMONIC2EX(rcl_Ev_CL, "rcl Ev,CL", M_CL, RCL, rcl, Ev, REG_CL, DISOPTYPE_HARMLESS, 0);
    9624             GRP2_BODY_Ev_CL(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rcl_eflags));
    9625             break;
    9626         }
    9627         /**
    9628          * @opdone
    9629          * @opmaps      grp2_d0
    9630          * @opcode      /3
    9631          * @opflclass   rotate_carry_count
    9632          */
    9633         case 3:
    9634         {
    9635             IEMOP_MNEMONIC2EX(rcr_Ev_CL, "rcr Ev,CL", M_CL, RCR, rcr, Ev, REG_CL, DISOPTYPE_HARMLESS, 0);
    9636             GRP2_BODY_Ev_CL(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rcr_eflags));
    9637             break;
    9638         }
    9639         /**
    9640          * @opdone
    9641          * @opmaps      grp2_d0
    9642          * @opcode      /4
    9643          * @opflclass   shift_count
    9644          */
    9645         case 4:
    9646         {
    9647             IEMOP_MNEMONIC2EX(shl_Ev_CL, "shl Ev,CL", M_CL, SHL, shl, Ev, REG_CL, DISOPTYPE_HARMLESS, 0);
    9648             GRP2_BODY_Ev_CL(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_shl_eflags));
    9649             break;
    9650         }
    9651         /**
    9652          * @opdone
    9653          * @opmaps      grp2_d0
    9654          * @opcode      /5
    9655          * @opflclass   shift_count
    9656          */
    9657         case 5:
    9658         {
    9659             IEMOP_MNEMONIC2EX(shr_Ev_CL, "shr Ev,CL", M_CL, SHR, shr, Ev, REG_CL, DISOPTYPE_HARMLESS, 0);
    9660             GRP2_BODY_Ev_CL(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_shr_eflags));
    9661             break;
    9662         }
    9663         /**
    9664          * @opdone
    9665          * @opmaps      grp2_d0
    9666          * @opcode      /7
    9667          * @opflclass   shift_count
    9668          */
    9669         case 7:
    9670         {
    9671             IEMOP_MNEMONIC2EX(sar_Ev_CL, "sar Ev,CL", M_CL, SAR, sar, Ev, REG_CL, DISOPTYPE_HARMLESS, 0);
    9672             GRP2_BODY_Ev_CL(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_sar_eflags));
    9673             break;
    9674         }
    9675         /** @opdone */
     9687        case 0: return FNIEMOP_CALL_1(iemOp_grp2_rol_Ev_CL, bRm);
     9688        case 1: return FNIEMOP_CALL_1(iemOp_grp2_ror_Ev_CL, bRm);
     9689        case 2: return FNIEMOP_CALL_1(iemOp_grp2_rcl_Ev_CL, bRm);
     9690        case 3: return FNIEMOP_CALL_1(iemOp_grp2_rcr_Ev_CL, bRm);
     9691        case 4: return FNIEMOP_CALL_1(iemOp_grp2_shl_Ev_CL, bRm);
     9692        case 5: return FNIEMOP_CALL_1(iemOp_grp2_shr_Ev_CL, bRm);
     9693        case 7: return FNIEMOP_CALL_1(iemOp_grp2_sar_Ev_CL, bRm);
    96769694        case 6: IEMOP_RAISE_INVALID_OPCODE_RET();
    96779695        IEM_NOT_REACHED_DEFAULT_CASE_RET(); /* gcc maybe, well... */
    96789696    }
    9679 #undef GRP2_BODY_Ev_CL
    96809697}
    96819698
     
    1431914336
    1432014337/**
     14338 * @opmaps      grp3_f7
     14339 * @opcode      /4
     14340 * @opflclass   multiply
     14341 */
     14342FNIEMOP_DEF_1(iemOp_grp3_mul_Ev, uint8_t, bRm)
     14343{
     14344    IEMOP_MNEMONIC(mul_Ev, "mul Ev");
     14345    IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_SF | X86_EFL_ZF | X86_EFL_AF | X86_EFL_PF);
     14346    IEMOP_BODY_GRP3_MUL_DIV_EV(bRm, IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_mul_eflags));
     14347}
     14348
     14349
     14350/**
     14351 * @opmaps      grp3_f7
     14352 * @opcode      /5
     14353 * @opflclass   multiply
     14354 */
     14355FNIEMOP_DEF_1(iemOp_grp3_imul_Ev, uint8_t, bRm)
     14356{
     14357    IEMOP_MNEMONIC(imul_Ev, "imul Ev");
     14358    IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_SF | X86_EFL_ZF | X86_EFL_AF | X86_EFL_PF);
     14359    IEMOP_BODY_GRP3_MUL_DIV_EV(bRm, IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_imul_eflags));
     14360}
     14361
     14362
     14363/**
     14364 * @opmaps      grp3_f7
     14365 * @opcode      /6
     14366 * @opflclass   division
     14367 */
     14368FNIEMOP_DEF_1(iemOp_grp3_div_Ev, uint8_t, bRm)
     14369{
     14370    IEMOP_MNEMONIC(div_Ev, "div Ev");
     14371    IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_SF | X86_EFL_ZF | X86_EFL_AF | X86_EFL_PF | X86_EFL_OF | X86_EFL_CF);
     14372    IEMOP_BODY_GRP3_MUL_DIV_EV(bRm, IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_div_eflags));
     14373}
     14374
     14375
     14376/**
     14377 * @opmaps      grp3_f7
     14378 * @opcode      /7
     14379 * @opflclass   division
     14380 */
     14381FNIEMOP_DEF_1(iemOp_grp3_idiv_Ev, uint8_t, bRm)
     14382{
     14383    IEMOP_MNEMONIC(idiv_Ev, "idiv Ev");
     14384    IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_SF | X86_EFL_ZF | X86_EFL_AF | X86_EFL_PF | X86_EFL_OF | X86_EFL_CF);
     14385    IEMOP_BODY_GRP3_MUL_DIV_EV(bRm, IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_idiv_eflags));
     14386}
     14387
     14388
     14389/**
    1432114390 * @opcode      0xf7
    1432214391 */
     
    1432614395    switch (IEM_GET_MODRM_REG_8(bRm))
    1432714396    {
    14328         case 0:
    14329             return FNIEMOP_CALL_1(iemOp_grp3_test_Ev, bRm);
    14330         case 1:
    14331             return FNIEMOP_CALL_1(iemOp_grp3_test_Ev, bRm);
    14332         case 2:
    14333             return FNIEMOP_CALL_1(iemOp_grp3_not_Ev, bRm);
    14334         case 3:
    14335             return FNIEMOP_CALL_1(iemOp_grp3_neg_Ev, bRm);
    14336         case 4:
    14337         {
    14338             /**
    14339              * @opdone
    14340              * @opmaps      grp3_f7
    14341              * @opcode      /4
    14342              * @opflclass   multiply
    14343              */
    14344             IEMOP_MNEMONIC(mul_Ev, "mul Ev");
    14345             IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_SF | X86_EFL_ZF | X86_EFL_AF | X86_EFL_PF);
    14346             IEMOP_BODY_GRP3_MUL_DIV_EV(bRm, IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_mul_eflags));
    14347             break;
    14348         }
    14349         case 5:
    14350         {
    14351             /**
    14352              * @opdone
    14353              * @opmaps      grp3_f7
    14354              * @opcode      /5
    14355              * @opflclass   multiply
    14356              */
    14357             IEMOP_MNEMONIC(imul_Ev, "imul Ev");
    14358             IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_SF | X86_EFL_ZF | X86_EFL_AF | X86_EFL_PF);
    14359             IEMOP_BODY_GRP3_MUL_DIV_EV(bRm, IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_imul_eflags));
    14360             break;
    14361         }
    14362         case 6:
    14363         {
    14364             /**
    14365              * @opdone
    14366              * @opmaps      grp3_f7
    14367              * @opcode      /6
    14368              * @opflclass   division
    14369              */
    14370             IEMOP_MNEMONIC(div_Ev, "div Ev");
    14371             IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_SF | X86_EFL_ZF | X86_EFL_AF | X86_EFL_PF | X86_EFL_OF | X86_EFL_CF);
    14372             IEMOP_BODY_GRP3_MUL_DIV_EV(bRm, IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_div_eflags));
    14373             break;
    14374         }
    14375         case 7:
    14376         {
    14377             /**
    14378              * @opdone
    14379              * @opmaps      grp3_f7
    14380              * @opcode      /7
    14381              * @opflclass   division
    14382              */
    14383             IEMOP_MNEMONIC(idiv_Ev, "idiv Ev");
    14384             IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_SF | X86_EFL_ZF | X86_EFL_AF | X86_EFL_PF | X86_EFL_OF | X86_EFL_CF);
    14385             IEMOP_BODY_GRP3_MUL_DIV_EV(bRm, IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_idiv_eflags));
    14386             break;
    14387         }
     14397        case 0: return FNIEMOP_CALL_1(iemOp_grp3_test_Ev, bRm);
     14398        case 1: return FNIEMOP_CALL_1(iemOp_grp3_test_Ev, bRm);
     14399        case 2: return FNIEMOP_CALL_1(iemOp_grp3_not_Ev, bRm);
     14400        case 3: return FNIEMOP_CALL_1(iemOp_grp3_neg_Ev, bRm);
     14401        case 4: return FNIEMOP_CALL_1(iemOp_grp3_mul_Ev, bRm);
     14402        case 5: return FNIEMOP_CALL_1(iemOp_grp3_imul_Ev, bRm);
     14403        case 6: return FNIEMOP_CALL_1(iemOp_grp3_div_Ev, bRm);
     14404        case 7: return FNIEMOP_CALL_1(iemOp_grp3_idiv_Ev, bRm);
    1438814405        IEM_NOT_REACHED_DEFAULT_CASE_RET();
    1438914406    }
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