Changeset 66968 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- May 19, 2017 10:25:44 AM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsVexMap1.cpp.h
r66966 r66968 856 856 * @optest vex.l==1 / op2=0xbbbbbbbbcccccccc4444444433333333ddddddddeeeeeeee2222222211111111 857 857 * -> op1=0x4444444433333333444444443333333322222222111111112222222211111111 858 * @oponly859 858 */ 860 859 FNIEMOP_DEF(iemOp_vmovddup_Vx_Wx) … … 959 958 * @optest op1=1 op2=2 -> op1=2 960 959 * @optest op1=0 op2=-42 -> op1=-42 960 * @oponly 961 961 */ 962 962 FNIEMOP_DEF(iemOp_vmovlps_Mq_Vq) … … 993 993 * @opcpuid avx 994 994 * @optest -> 995 * @oponly 995 996 */ 996 997 return IEMOP_RAISE_INVALID_OPCODE(); … … 998 999 999 1000 1000 /** Opcode VEX.66.0F 0x13 - vmovlpd Mq, Vq */1001 FNIEMOP_STUB(iemOp_vmovlpd_Mq_Vq); 1002 //FNIEMOP_DEF(iemOp_vmovlpd_Mq_Vq) 1003 //{ 1004 // IEMOP_MNEMONIC(vmovlpd_Mq_Vq, "movlpd Mq,Vq"); 1005 // uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 1006 // if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT)) 1007 // { 1008 //#if 0 1009 // /* 1010 // * Register, register. 1011 // */ 1012 // IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 1013 // IEM_MC_BEGIN(0, 1);1014 // IEM_MC_LOCAL(uint64_t, uSrc); 1015 // IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT(); 1016 // IEM_MC_ACTUALIZE_SSE_STATE_FOR_CHANGE();1017 // IEM_MC_FETCH_XREG_U64(uSrc, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg);1018 // IEM_MC_STORE_XREG_U64((bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB,uSrc);1019 // IEM_MC_ADVANCE_RIP();1020 // IEM_MC_END(); 1021 //#else 1022 // return IEMOP_RAISE_INVALID_OPCODE();1023 //#endif 1024 // } 1025 // else 1026 // { 1027 // /* 1028 // * Memory, register. 1029 // */ 1030 // IEM_MC_BEGIN(0, 2);1031 // IEM_MC_LOCAL(uint64_t, uSrc);1032 // IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1033 // 1034 // IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 1035 // IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 1036 // IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT(); 1037 // IEM_MC_ACTUALIZE_SSE_STATE_FOR_READ(); 1038 // 1039 // IEM_MC_FETCH_XREG_U64(uSrc, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 1040 // IEM_MC_STORE_MEM_U64(pVCpu->iem.s.iEffSeg, GCPtrEffSrc, uSrc); 1041 // 1042 // IEM_MC_ADVANCE_RIP(); 1043 // IEM_MC_END(); 1044 // } 1045 // return VINF_SUCCESS;1046 //}1001 /** 1002 * @opcode 0x13 1003 * @opcodesub !11 mr/reg 1004 * @oppfx 0x66 1005 * @opcpuid avx 1006 * @opgroup og_avx_pcksclr_datamove 1007 * @opxcpttype 5 1008 * @optest op1=1 op2=2 -> op1=2 1009 * @optest op1=0 op2=-42 -> op1=-42 1010 * @oponly 1011 */ 1012 FNIEMOP_DEF(iemOp_vmovlpd_Mq_Vq) 1013 { 1014 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 1015 if ((bRm & X86_MODRM_MOD_MASK) != (3 << X86_MODRM_MOD_SHIFT)) 1016 { 1017 IEMOP_MNEMONIC2(VEX_MR_MEM, VMOVLPD, vmovlpd, Mq_WO, Vq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE | IEMOPHINT_VEX_L_ZERO); 1018 IEM_MC_BEGIN(0, 2); 1019 IEM_MC_LOCAL(uint64_t, uSrc); 1020 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1021 1022 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 1023 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV(); 1024 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); 1025 IEM_MC_ACTUALIZE_AVX_STATE_FOR_READ(); 1026 1027 IEM_MC_FETCH_YREG_U64(uSrc, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 1028 IEM_MC_STORE_MEM_U64(pVCpu->iem.s.iEffSeg, GCPtrEffSrc, uSrc); 1029 1030 IEM_MC_ADVANCE_RIP(); 1031 IEM_MC_END(); 1032 return VINF_SUCCESS; 1033 } 1034 1035 /** 1036 * @opdone 1037 * @opmnemonic udvex660f13m3 1038 * @opcode 0x13 1039 * @opcodesub 11 mr/reg 1040 * @oppfx 0x66 1041 * @opunused immediate 1042 * @opcpuid avx 1043 * @optest -> 1044 * @oponly 1045 */ 1046 return IEMOP_RAISE_INVALID_OPCODE(); 1047 } 1047 1048 1048 1049 /* Opcode VEX.F3.0F 0x13 - invalid */
Note:
See TracChangeset
for help on using the changeset viewer.