儲存庫 vbox 的更動 66966
- 時間撮記:
- 2017-5-19 上午09:49:59 (8 年 以前)
- 位置:
- trunk/src/VBox/VMM
- 檔案:
-
- 修改 3 筆資料
圖例:
- 未更動
- 新增
- 刪除
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsPython.py
r66957 r66966 483 483 'ignores_op_size': '', ##< Ignores both operand size prefixes (66h + REX.W). 484 484 'ignores_vex_l': '', ##< Ignores VEX.L. 485 'vex_l_zero': '', ##< VEX.L must be 0. 485 486 'lock_allowed': '', ##< Lock prefix allowed. 486 487 }; -
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsVexMap1.cpp.h
r66965 r66966 635 635 * @note op3 and op2 are only the 8-byte high XMM register halfs. 636 636 */ 637 IEMOP_MNEMONIC3(VEX_RVM, VMOVHLPS, vmovhlps, Vq_WO, HqHi, UqHi, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE );637 IEMOP_MNEMONIC3(VEX_RVM, VMOVHLPS, vmovhlps, Vq_WO, HqHi, UqHi, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE | IEMOPHINT_VEX_L_ZERO); 638 638 639 639 IEMOP_HLP_DONE_VEX_DECODING_L0(); … … 665 665 * @optest op2=-1 op3=0x42 -> op1=0xffffffffffffffff0000000000000042 666 666 */ 667 IEMOP_MNEMONIC3(VEX_RVM_MEM, VMOVLPS, vmovlps, Vq_WO, HqHi, Mq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE );667 IEMOP_MNEMONIC3(VEX_RVM_MEM, VMOVLPS, vmovlps, Vq_WO, HqHi, Mq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE | IEMOPHINT_VEX_L_ZERO); 668 668 669 669 IEM_MC_BEGIN(0, 2); … … 705 705 if ((bRm & X86_MODRM_MOD_MASK) != (3 << X86_MODRM_MOD_SHIFT)) 706 706 { 707 IEMOP_MNEMONIC3(VEX_RVM_MEM, VMOVLPD, vmovlpd, Vq_WO, HqHi, Mq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE );707 IEMOP_MNEMONIC3(VEX_RVM_MEM, VMOVLPD, vmovlpd, Vq_WO, HqHi, Mq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE | IEMOPHINT_VEX_L_ZERO); 708 708 709 709 IEM_MC_BEGIN(0, 2); … … 950 950 951 951 952 953 /** Opcode VEX.0F 0x13 - vmovlps Mq, Vq */ 954 FNIEMOP_STUB(iemOp_vmovlps_Mq_Vq); 952 /** 953 * @opcode 0x13 954 * @opcodesub !11 mr/reg 955 * @oppfx none 956 * @opcpuid avx 957 * @opgroup og_avx_simdfp_datamove 958 * @opxcpttype 5 959 * @optest op1=1 op2=2 -> op1=2 960 * @optest op1=0 op2=-42 -> op1=-42 961 */ 962 FNIEMOP_DEF(iemOp_vmovlps_Mq_Vq) 963 { 964 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 965 if ((bRm & X86_MODRM_MOD_MASK) != (3 << X86_MODRM_MOD_SHIFT)) 966 { 967 IEMOP_MNEMONIC2(VEX_MR_MEM, VMOVLPS, vmovlps, Mq_WO, Vq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE | IEMOPHINT_VEX_L_ZERO); 968 969 IEM_MC_BEGIN(0, 2); 970 IEM_MC_LOCAL(uint64_t, uSrc); 971 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 972 973 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 974 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV(); 975 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); 976 IEM_MC_ACTUALIZE_AVX_STATE_FOR_READ(); 977 978 IEM_MC_FETCH_YREG_U64(uSrc, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 979 IEM_MC_STORE_MEM_U64(pVCpu->iem.s.iEffSeg, GCPtrEffSrc, uSrc); 980 981 IEM_MC_ADVANCE_RIP(); 982 IEM_MC_END(); 983 return VINF_SUCCESS; 984 } 985 986 /** 987 * @opdone 988 * @opmnemonic udvex0f13m3 989 * @opcode 0x13 990 * @opcodesub 11 mr/reg 991 * @oppfx none 992 * @opunused immediate 993 * @opcpuid avx 994 * @optest -> 995 */ 996 return IEMOP_RAISE_INVALID_OPCODE(); 997 } 998 955 999 956 1000 /** Opcode VEX.66.0F 0x13 - vmovlpd Mq, Vq */ -
trunk/src/VBox/VMM/include/IEMInternal.h
r66965 r66966 960 960 /** The VEX.L value is ignored (aka LIG). */ 961 961 #define IEMOPHINT_IGNORES_VEX_L RT_BIT_32(12) 962 /** The VEX.L value must be zero (i.e. 128-bit width). */ 963 #define IEMOPHINT_VEX_L_ZERO RT_BIT_32(13) 962 964 963 965 /** Hint to IEMAllInstructionPython.py that this macro should be skipped. */
注意:
瀏覽 TracChangeset
來幫助您使用更動檢視器