Changeset 67030 in vbox for trunk/src/VBox
- Timestamp:
- May 23, 2017 9:54:16 AM (8 years ago)
- Location:
- trunk/src/VBox
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsPython.py
r67015 r67030 233 233 'Wdq_WO': ( 'IDX_UseModRM', 'rm', '%Wdq', 'Wdq', ), 234 234 'Wq': ( 'IDX_UseModRM', 'rm', '%Wq', 'Wq', ), 235 'Wq_WO': ( 'IDX_UseModRM', 'rm', '%Wq', 'Wq', ), 235 236 'WqZxReg_WO': ( 'IDX_UseModRM', 'rm', '%Wq', 'Wq', ), 236 237 'Wx': ( 'IDX_UseModRM', 'rm', '%Wx', 'Wx', ), -
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h
r67029 r67030 4604 4604 * @opcpuid sse2 4605 4605 * @opgroup og_sse2_pcksclr_datamove 4606 * @opxcpttype 5 4607 * @note Exception type isn't really 5, but close enough... 4606 * @opxcpttype none 4608 4607 * @optest op1=1 op2=2 -> op1=2 4609 4608 * @optest op1=0 op2=-42 -> op1=-42 4610 * @oponly4611 4609 */ 4612 4610 FNIEMOP_DEF(iemOp_movq_Vq_Wq) -
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsVexMap1.cpp.h
r67029 r67030 2844 2844 * @opcpuid avx 2845 2845 * @opgroup og_avx_pcksclr_datamove 2846 * @opxcpttype 5 2847 * @note Exception type isn't really 5, but close enough... 2846 * @opxcpttype none 2848 2847 * @optest op1=1 op2=2 -> op1=2 2849 2848 * @optest op1=0 op2=-42 -> op1=-42 2850 * @oponly2851 2849 */ 2852 2850 FNIEMOP_DEF(iemOp_vmovq_Vq_Wq) … … 3359 3357 3360 3358 /** 3361 * @ opcode 0xd6 3362 * @ oppfx 0x66 3363 * @ opcpuid sse2 3364 * @ opgroup og_sse2_pcksclr_datamove 3365 * @ opxcpttype none 3366 * @ optest op1=-1 op2=2 -> op1=2 3367 * @ optest op1=0 op2=-42 -> op1=-42 3359 * @opcode 0xd6 3360 * @oppfx 0x66 3361 * @opcpuid avx 3362 * @opgroup og_avx_pcksclr_datamove 3363 * @opxcpttype none 3364 * @optest op1=-1 op2=2 -> op1=2 3365 * @optest op1=0 op2=-42 -> op1=-42 3366 * @oponly 3368 3367 */ 3369 FNIEMOP_STUB(iemOp_vmovq_Wq_Vq); 3370 //FNIEMOP_DEF(iemOp_vmovq_Wq_Vq) 3371 //{ 3372 // IEMOP_MNEMONIC2(MR, VMOVQ, vmovq, WqZxReg, Vq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES); 3373 // uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 3374 // if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT)) 3375 // { 3376 // /* 3377 // * Register, register. 3378 // */ 3379 // IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3380 // IEM_MC_BEGIN(0, 2); 3381 // IEM_MC_LOCAL(uint64_t, uSrc); 3382 // 3383 // IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT(); 3384 // IEM_MC_ACTUALIZE_SSE_STATE_FOR_CHANGE(); 3385 // 3386 // IEM_MC_FETCH_XREG_U64(uSrc, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 3387 // IEM_MC_STORE_XREG_U64_ZX_U128((bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB, uSrc); 3388 // 3389 // IEM_MC_ADVANCE_RIP(); 3390 // IEM_MC_END(); 3391 // } 3392 // else 3393 // { 3394 // /* 3395 // * Memory, register. 3396 // */ 3397 // IEM_MC_BEGIN(0, 2); 3398 // IEM_MC_LOCAL(uint64_t, uSrc); 3399 // IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3400 // 3401 // IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 3402 // IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3403 // IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT(); 3404 // IEM_MC_ACTUALIZE_SSE_STATE_FOR_READ(); 3405 // 3406 // IEM_MC_FETCH_XREG_U64(uSrc, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 3407 // IEM_MC_STORE_MEM_U64(pVCpu->iem.s.iEffSeg, GCPtrEffSrc, uSrc); 3408 // 3409 // IEM_MC_ADVANCE_RIP(); 3410 // IEM_MC_END(); 3411 // } 3412 // return VINF_SUCCESS; 3413 //} 3368 FNIEMOP_DEF(iemOp_vmovq_Wq_Vq) 3369 { 3370 IEMOP_MNEMONIC2(VEX_MR, VMOVQ, vmovq, Wq_WO, Vq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES); 3371 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 3372 if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT)) 3373 { 3374 /* 3375 * Register, register. 3376 */ 3377 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV(); 3378 IEM_MC_BEGIN(0, 0); 3379 3380 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); 3381 IEM_MC_ACTUALIZE_AVX_STATE_FOR_CHANGE(); 3382 3383 IEM_MC_COPY_YREG_U64_ZX_VLMAX((bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB, 3384 ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 3385 IEM_MC_ADVANCE_RIP(); 3386 IEM_MC_END(); 3387 } 3388 else 3389 { 3390 /* 3391 * Memory, register. 3392 */ 3393 IEM_MC_BEGIN(0, 2); 3394 IEM_MC_LOCAL(uint64_t, uSrc); 3395 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3396 3397 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 3398 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV(); 3399 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); 3400 IEM_MC_ACTUALIZE_AVX_STATE_FOR_READ(); 3401 3402 IEM_MC_FETCH_YREG_U64(uSrc, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 3403 IEM_MC_STORE_MEM_U64(pVCpu->iem.s.iEffSeg, GCPtrEffSrc, uSrc); 3404 3405 IEM_MC_ADVANCE_RIP(); 3406 IEM_MC_END(); 3407 } 3408 return VINF_SUCCESS; 3409 } 3414 3410 3415 3411 /* Opcode VEX.F3.0F 0xd6 - invalid */ -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1-template.c
r67029 r67030 1219 1219 case BS3CG1XCPTTYPE_4: 1220 1220 return false; 1221 case BS3CG1XCPTTYPE_NONE: 1221 1222 case BS3CG1XCPTTYPE_3: 1222 1223 case BS3CG1XCPTTYPE_4UA: … … 1242 1243 return false; 1243 1244 1245 case BS3CG1XCPTTYPE_NONE: 1244 1246 case BS3CG1XCPTTYPE_2: 1245 1247 case BS3CG1XCPTTYPE_3: … … 4863 4865 pThis->aOperands[0].idxFieldBase = BS3CG1DST_XMM0; 4864 4866 pThis->aOperands[1].idxFieldBase = BS3CG1DST_XMM0; 4867 break; 4868 4869 case BS3CG1ENC_VEX_MODRM_Wq_WO_Vq: 4870 pThis->pfnEncoder = Bs3Cg1EncodeNext_VEX_MODRM_WsomethingWO_Vsomething_Wip_L0_OR_ViceVersa; 4871 pThis->iRegOp = 1; 4872 pThis->iRmOp = 0; 4873 pThis->aOperands[0].cbOp = 8; 4874 pThis->aOperands[1].cbOp = 8; 4875 pThis->aOperands[0].enmLocation = BS3CG1OPLOC_CTX_ZX_VLMAX; 4876 pThis->aOperands[0].enmLocationReg = BS3CG1OPLOC_CTX_ZX_VLMAX; 4877 pThis->aOperands[0].enmLocationMem = BS3CG1OPLOC_MEM_WO; 4878 pThis->aOperands[1].enmLocation = BS3CG1OPLOC_CTX; 4879 pThis->aOperands[0].idxFieldBase = BS3CG1DST_XMM0_LO; 4880 pThis->aOperands[1].idxFieldBase = BS3CG1DST_XMM0_LO; 4865 4881 break; 4866 4882 -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1.h
r67029 r67030 202 202 BS3CG1ENC_VEX_MODRM_Wps_WO_Vps, 203 203 BS3CG1ENC_VEX_MODRM_Wpd_WO_Vpd, 204 BS3CG1ENC_VEX_MODRM_Wq_WO_Vq, 204 205 BS3CG1ENC_VEX_MODRM_Wx_WO_Vx, 205 206
Note:
See TracChangeset
for help on using the changeset viewer.