Changeset 66323 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Mar 29, 2017 8:03:19 AM (8 years ago)
- svn:sync-xref-src-repo-rev:
- 114252
- Location:
- trunk/src/VBox/VMM/VMMAll
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsPython.py
r66314 r66323 166 166 'Wpd': ( 'IDX_UseModRM', 'rm', '%Wpd', 'Wpd', ), 167 167 'Wdq': ( 'IDX_UseModRM', 'rm', '%Wdq', 'Wdq', ), 168 'WqZxReg': ( 'IDX_UseModRM', 'rm', '%Wq', 'Wq', ), 168 169 169 170 # ModR/M.rm - register only. -
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h
r66321 r66323 7548 7548 7549 7549 /* Opcode 0x0f 0xd6 - invalid */ 7550 /** Opcode 0x66 0x0f 0xd6 - vmovq Wq, Vq */ 7551 FNIEMOP_STUB(iemOp_vmovq_Wq_Vq); // NEXT! 7550 7551 /** 7552 * @opcode 0xd6 7553 * @oppfx 0x66 7554 * @opcpuid sse2 7555 * @opgroup og_sse2_pcksclr_datamove 7556 * @opxcpttype none 7557 * @optest op1=-1 op2=2 -> op1=2 7558 * @optest op1=0 op2=-42 -> op1=-42 7559 */ 7560 FNIEMOP_DEF(iemOp_vmovq_Wq_Vq) 7561 { 7562 IEMOP_MNEMONIC2(MR, MOVQ, movq, WqZxReg, Vq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE); 7563 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 7564 if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT)) 7565 { 7566 /* 7567 * Register, register. 7568 */ 7569 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7570 IEM_MC_BEGIN(0, 2); 7571 IEM_MC_LOCAL(uint64_t, uSrc); 7572 7573 IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT(); 7574 IEM_MC_ACTUALIZE_SSE_STATE_FOR_CHANGE(); 7575 7576 IEM_MC_FETCH_XREG_U64(uSrc, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 7577 IEM_MC_STORE_XREG_U64_ZX_U128((bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB, uSrc); 7578 7579 IEM_MC_ADVANCE_RIP(); 7580 IEM_MC_END(); 7581 } 7582 else 7583 { 7584 /* 7585 * Register, memory. 7586 */ 7587 IEM_MC_BEGIN(0, 2); 7588 IEM_MC_LOCAL(uint64_t, uSrc); 7589 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 7590 7591 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 7592 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7593 IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT(); 7594 IEM_MC_ACTUALIZE_SSE_STATE_FOR_READ(); 7595 7596 IEM_MC_FETCH_XREG_U64(uSrc, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 7597 IEM_MC_STORE_MEM_U64(pVCpu->iem.s.iEffSeg, GCPtrEffSrc, uSrc); 7598 7599 IEM_MC_ADVANCE_RIP(); 7600 IEM_MC_END(); 7601 } 7602 return VINF_SUCCESS; 7603 } 7604 7605 7552 7606 /** Opcode 0xf3 0x0f 0xd6 - movq2dq Vdq, Nq */ 7553 7607 FNIEMOP_STUB(iemOp_movq2dq_Vdq_Nq); … … 7563 7617 { 7564 7618 case IEM_OP_PRF_SIZE_OP: /* SSE */ 7565 I EMOP_MNEMONIC(movq_Wq_Vq, "movq Wq,Vq");7619 I E M O P _ M N E M O N I C(movq_Wq_Vq, "movq Wq,Vq"); 7566 7620 IEMOP_HLP_DECODED_NL_2(OP_PMOVMSKB, IEMOPFORM_RM_REG, OP_PARM_Gd, OP_PARM_Vdq, DISOPTYPE_SSE | DISOPTYPE_HARMLESS); 7567 7621 IEM_MC_BEGIN(2, 0);
Note:
See TracChangeset
for help on using the changeset viewer.