Changeset 66919 in vbox for trunk/src/VBox
- Timestamp:
- May 16, 2017 6:47:23 PM (8 years ago)
- svn:sync-xref-src-repo-rev:
- 115446
- Location:
- trunk/src/VBox
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsVexMap1.cpp.h
r66909 r66919 199 199 } 200 200 return VINF_SUCCESS; 201 202 201 } 203 202 … … 340 339 * @optest op1=1 op2=2 -> op1=2 341 340 * @optest op1=0 op2=-22 -> op1=-22 342 * @oponly343 341 */ 344 342 FNIEMOP_DEF(iemOp_vmovups_Wps_Vps) … … 410 408 411 409 /** 412 * @ opcode 0x11 413 * @ oppfx 0x66 414 * @ opcpuid sse2 415 * @ opgroup og_sse2_pcksclr_datamove 416 * @ opxcpttype 4UA 417 * @ optest op1=1 op2=2 -> op1=2 418 * @ optest op1=0 op2=-42 -> op1=-42 410 * @opcode 0x11 411 * @oppfx 0x66 412 * @opcpuid avx 413 * @opgroup og_avx_simdfp_datamove 414 * @opxcpttype 4UA 415 * @optest op1=1 op2=2 -> op1=2 416 * @optest op1=0 op2=-22 -> op1=-22 417 * @oponly 419 418 */ 420 FNIEMOP_STUB(iemOp_vmovupd_Wpd_Vpd); 421 //FNIEMOP_DEF(iemOp_vmovupd_Wpd_Vpd) 422 //{ 423 // IEMOP_MNEMONIC2(MR, VMOVUPD, vmovupd, Wpd, Vpd, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE); 424 // uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 425 // if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT)) 426 // { 427 // /* 428 // * Register, register. 429 // */ 430 // IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 431 // IEM_MC_BEGIN(0, 0); 432 // IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT(); 433 // IEM_MC_ACTUALIZE_SSE_STATE_FOR_CHANGE(); 434 // IEM_MC_COPY_XREG_U128((bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB, 435 // ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 436 // IEM_MC_ADVANCE_RIP(); 437 // IEM_MC_END(); 438 // } 439 // else 440 // { 441 // /* 442 // * Memory, register. 443 // */ 444 // IEM_MC_BEGIN(0, 2); 445 // IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 446 // IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 447 // 448 // IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 449 // IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 450 // IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT(); 451 // IEM_MC_ACTUALIZE_SSE_STATE_FOR_READ(); 452 // 453 // IEM_MC_FETCH_XREG_U128(uSrc, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 454 // IEM_MC_STORE_MEM_U128(pVCpu->iem.s.iEffSeg, GCPtrEffSrc, uSrc); 455 // 456 // IEM_MC_ADVANCE_RIP(); 457 // IEM_MC_END(); 458 // } 459 // return VINF_SUCCESS; 460 //} 461 419 FNIEMOP_DEF(iemOp_vmovupd_Wpd_Vpd) 420 { 421 IEMOP_MNEMONIC2(VEX_MR, VMOVUPD, vmovupd, Wpd_WO, Vpd, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE); 422 Assert(pVCpu->iem.s.uVexLength <= 1); 423 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 424 if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT)) 425 { 426 /* 427 * Register, register. 428 */ 429 IEMOP_HLP_DONE_DECODING_NO_AVX_PREFIX_AND_NO_VVVV(); 430 IEM_MC_BEGIN(0, 0); 431 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); 432 IEM_MC_ACTUALIZE_AVX_STATE_FOR_CHANGE(); 433 if (pVCpu->iem.s.uVexLength == 0) 434 IEM_MC_COPY_YREG_U128_ZX_VLMAX((bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB, 435 ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 436 else 437 IEM_MC_COPY_YREG_U256_ZX_VLMAX((bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB, 438 ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 439 IEM_MC_ADVANCE_RIP(); 440 IEM_MC_END(); 441 } 442 else if (pVCpu->iem.s.uVexLength == 0) 443 { 444 /* 445 * 128-bit: Memory, register. 446 */ 447 IEM_MC_BEGIN(0, 2); 448 IEM_MC_LOCAL(RTUINT128U, uSrc); 449 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 450 451 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 452 IEMOP_HLP_DONE_DECODING_NO_AVX_PREFIX_AND_NO_VVVV(); 453 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); 454 IEM_MC_ACTUALIZE_AVX_STATE_FOR_READ(); 455 456 IEM_MC_FETCH_YREG_U128(uSrc, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 457 IEM_MC_STORE_MEM_U128(pVCpu->iem.s.iEffSeg, GCPtrEffSrc, uSrc); 458 459 IEM_MC_ADVANCE_RIP(); 460 IEM_MC_END(); 461 } 462 else 463 { 464 /* 465 * 256-bit: Memory, register. 466 */ 467 IEM_MC_BEGIN(0, 2); 468 IEM_MC_LOCAL(RTUINT256U, uSrc); 469 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 470 471 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 472 IEMOP_HLP_DONE_DECODING_NO_AVX_PREFIX_AND_NO_VVVV(); 473 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); 474 IEM_MC_ACTUALIZE_AVX_STATE_FOR_READ(); 475 476 IEM_MC_FETCH_YREG_U256(uSrc, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 477 IEM_MC_STORE_MEM_U256(pVCpu->iem.s.iEffSeg, GCPtrEffSrc, uSrc); 478 479 IEM_MC_ADVANCE_RIP(); 480 IEM_MC_END(); 481 } 482 return VINF_SUCCESS; 483 } 462 484 463 485 /** -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1-template.c
r66917 r66919 3330 3330 3331 3331 case BS3CG1ENC_VEX_MODRM_Wps_WO_Vps: 3332 case BS3CG1ENC_VEX_MODRM_Wpd_WO_Vpd: 3332 3333 pThis->pfnEncoder = Bs3Cg1EncodeNext_VEX_MODRM_WsomethingWO_Vsomething_Wip; 3333 3334 pThis->iRmOp = 0; -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1.h
r66909 r66919 154 154 BS3CG1ENC_VEX_MODRM_Md_WO, 155 155 BS3CG1ENC_VEX_MODRM_Wps_WO_Vps, 156 BS3CG1ENC_VEX_MODRM_Wpd_WO_Vpd, 156 157 157 158 BS3CG1ENC_FIXED,
Note:
See TracChangeset
for help on using the changeset viewer.