Changeset 65775 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- Feb 13, 2017 4:01:39 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h
r65774 r65775 3016 3016 3017 3017 /** Opcode 0x0f 0x73 11/2. */ 3018 FNIEMOP_STUB_1(iemOp_Grp14_psrlq_Nq_Ib, 3018 FNIEMOP_STUB_1(iemOp_Grp14_psrlq_Nq_Ib, uint8_t, bRm); 3019 3019 3020 3020 /** Opcode 0x66 0x0f 0x73 11/2. */ 3021 FNIEMOP_STUB_1(iemOp_Grp14_ psrlq_Udq_Ib,uint8_t, bRm);3021 FNIEMOP_STUB_1(iemOp_Grp14_vpsrlq_Hx_Ux_Ib, uint8_t, bRm); 3022 3022 3023 3023 /** Opcode 0x66 0x0f 0x73 11/3. */ 3024 FNIEMOP_STUB_1(iemOp_Grp14_ psrldq_Udq_Ib, uint8_t, bRm); //NEXT3024 FNIEMOP_STUB_1(iemOp_Grp14_vpsrldq_Hx_Ux_Ib, uint8_t, bRm); //NEXT 3025 3025 3026 3026 /** Opcode 0x0f 0x73 11/6. */ 3027 FNIEMOP_STUB_1(iemOp_Grp14_psllq_Nq_Ib, 3027 FNIEMOP_STUB_1(iemOp_Grp14_psllq_Nq_Ib, uint8_t, bRm); 3028 3028 3029 3029 /** Opcode 0x66 0x0f 0x73 11/6. */ 3030 FNIEMOP_STUB_1(iemOp_Grp14_ psllq_Udq_Ib,uint8_t, bRm);3030 FNIEMOP_STUB_1(iemOp_Grp14_vpsllq_Hx_Ux_Ib, uint8_t, bRm); 3031 3031 3032 3032 /** Opcode 0x66 0x0f 0x73 11/7. */ 3033 FNIEMOP_STUB_1(iemOp_Grp14_pslldq_Udq_Ib, uint8_t, bRm); //NEXT 3033 FNIEMOP_STUB_1(iemOp_Grp14_vpslldq_Hx_Ux_Ib, uint8_t, bRm); //NEXT 3034 3035 /** 3036 * Group 14 jump table for register variant. 3037 */ 3038 IEM_STATIC const PFNIEMOPRM g_apfnGroup14RegReg[8*4] = 3039 { 3040 /** @todo decode imm8? */ 3041 /* /0 */ IEMOP_X4(iemOp_InvalidWithRM), 3042 /* /1 */ IEMOP_X4(iemOp_InvalidWithRM), 3043 /* /2 */ iemOp_Grp14_psrlq_Nq_Ib, iemOp_Grp14_vpsrlq_Hx_Ux_Ib, iemOp_InvalidWithRM, iemOp_InvalidWithRM, 3044 /* /3 */ iemOp_InvalidWithRM, iemOp_Grp14_vpsrldq_Hx_Ux_Ib, iemOp_InvalidWithRM, iemOp_InvalidWithRM, 3045 /* /4 */ IEMOP_X4(iemOp_InvalidWithRM), 3046 /* /5 */ IEMOP_X4(iemOp_InvalidWithRM), 3047 /* /6 */ iemOp_Grp14_psllq_Nq_Ib, iemOp_Grp14_vpsllq_Hx_Ux_Ib, iemOp_InvalidWithRM, iemOp_InvalidWithRM, 3048 /* /7 */ iemOp_InvalidWithRM, iemOp_Grp14_vpslldq_Hx_Ux_Ib, iemOp_InvalidWithRM, iemOp_InvalidWithRM, 3049 }; 3034 3050 3035 3051 … … 3038 3054 { 3039 3055 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 3040 if ((bRm & X86_MODRM_MOD_MASK) != (3 << X86_MODRM_MOD_SHIFT)) 3041 return IEMOP_RAISE_INVALID_OPCODE(); 3042 switch ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) 3043 { 3044 case 0: case 1: case 4: case 5: 3045 return IEMOP_RAISE_INVALID_OPCODE(); 3046 case 2: 3047 switch (pVCpu->iem.s.fPrefixes & (IEM_OP_PRF_SIZE_OP | IEM_OP_PRF_REPZ | IEM_OP_PRF_REPNZ)) 3048 { 3049 case 0: return FNIEMOP_CALL_1(iemOp_Grp14_psrlq_Nq_Ib, bRm); 3050 case IEM_OP_PRF_SIZE_OP: return FNIEMOP_CALL_1(iemOp_Grp14_psrlq_Udq_Ib, bRm); 3051 default: return IEMOP_RAISE_INVALID_OPCODE(); 3052 } 3053 case 3: 3054 switch (pVCpu->iem.s.fPrefixes & (IEM_OP_PRF_SIZE_OP | IEM_OP_PRF_REPZ | IEM_OP_PRF_REPNZ)) 3055 { 3056 case IEM_OP_PRF_SIZE_OP: return FNIEMOP_CALL_1(iemOp_Grp14_psrldq_Udq_Ib, bRm); 3057 default: return IEMOP_RAISE_INVALID_OPCODE(); 3058 } 3059 case 6: 3060 switch (pVCpu->iem.s.fPrefixes & (IEM_OP_PRF_SIZE_OP | IEM_OP_PRF_REPZ | IEM_OP_PRF_REPNZ)) 3061 { 3062 case 0: return FNIEMOP_CALL_1(iemOp_Grp14_psllq_Nq_Ib, bRm); 3063 case IEM_OP_PRF_SIZE_OP: return FNIEMOP_CALL_1(iemOp_Grp14_psllq_Udq_Ib, bRm); 3064 default: return IEMOP_RAISE_INVALID_OPCODE(); 3065 } 3066 case 7: 3067 switch (pVCpu->iem.s.fPrefixes & (IEM_OP_PRF_SIZE_OP | IEM_OP_PRF_REPZ | IEM_OP_PRF_REPNZ)) 3068 { 3069 case IEM_OP_PRF_SIZE_OP: return FNIEMOP_CALL_1(iemOp_Grp14_pslldq_Udq_Ib, bRm); 3070 default: return IEMOP_RAISE_INVALID_OPCODE(); 3071 } 3072 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 3073 } 3056 if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT)) 3057 /* register, register */ 3058 return FNIEMOP_CALL_1(g_apfnGroup14RegReg[ ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) * 4 3059 + pVCpu->iem.s.idxPrefix], bRm); 3060 /** @todo decode SIB, disp, Ib? */ 3061 return IEMOP_RAISE_INVALID_OPCODE(); 3074 3062 } 3075 3063
Note:
See TracChangeset
for help on using the changeset viewer.