儲存庫 vbox 的更動 67016
- 時間撮記:
- 2017-5-22 下午12:58:19 (8 年 以前)
- 檔案:
-
- 修改 1 筆資料
圖例:
- 未更動
- 新增
- 刪除
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsVexMap1.cpp.h
r67015 r67016 2854 2854 * @optest op1=1 op2=2 -> op1=2 2855 2855 * @optest op1=0 op2=-42 -> op1=-42 2856 * @oponly2857 2856 */ 2858 2857 FNIEMOP_DEF(iemOp_vmovdqa_Wx_Vx) … … 2923 2922 } 2924 2923 2925 /** Opcode VEX.F3.0F 0x7f - vmovdqu Wx,Vx */ 2926 FNIEMOP_STUB(iemOp_vmovdqu_Wx_Vx); 2927 //FNIEMOP_DEF(iemOp_vmovdqu_Wx_Vx) 2928 //{ 2929 // uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 2930 // IEMOP_MNEMONIC(vmovdqu_Wdq_Vdq, "vmovdqu Wx,Vx"); 2931 // if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT)) 2932 // { 2933 // /* 2934 // * Register, register. 2935 // */ 2936 // IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2937 // IEM_MC_BEGIN(0, 0); 2938 // IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT(); 2939 // IEM_MC_ACTUALIZE_SSE_STATE_FOR_CHANGE(); 2940 // IEM_MC_COPY_XREG_U128((bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB, 2941 // ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 2942 // IEM_MC_ADVANCE_RIP(); 2943 // IEM_MC_END(); 2944 // } 2945 // else 2946 // { 2947 // /* 2948 // * Register, memory. 2949 // */ 2950 // IEM_MC_BEGIN(0, 2); 2951 // IEM_MC_LOCAL(RTUINT128U, u128Tmp); 2952 // IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 2953 // 2954 // IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 2955 // IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2956 // IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT(); 2957 // IEM_MC_ACTUALIZE_SSE_STATE_FOR_READ(); 2958 // 2959 // IEM_MC_FETCH_XREG_U128(u128Tmp, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 2960 // IEM_MC_STORE_MEM_U128(pVCpu->iem.s.iEffSeg, GCPtrEffSrc, u128Tmp); 2961 // 2962 // IEM_MC_ADVANCE_RIP(); 2963 // IEM_MC_END(); 2964 // } 2965 // return VINF_SUCCESS; 2966 //} 2924 /** 2925 * @opcode 0x7f 2926 * @oppfx 0xf3 2927 * @opcpuid avx 2928 * @opgroup og_avx_simdint_datamove 2929 * @opxcpttype 4UA 2930 * @optest op1=1 op2=2 -> op1=2 2931 * @optest op1=0 op2=-42 -> op1=-42 2932 * @oponly 2933 */ 2934 FNIEMOP_DEF(iemOp_vmovdqu_Wx_Vx) 2935 { 2936 IEMOP_MNEMONIC2(VEX_MR, VMOVDQU, vmovdqu, Wx_WO, Vx, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES); 2937 Assert(pVCpu->iem.s.uVexLength <= 1); 2938 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 2939 if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT)) 2940 { 2941 /* 2942 * Register, register. 2943 */ 2944 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV(); 2945 IEM_MC_BEGIN(0, 0); 2946 2947 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); 2948 IEM_MC_ACTUALIZE_AVX_STATE_FOR_CHANGE(); 2949 if (pVCpu->iem.s.uVexLength == 0) 2950 IEM_MC_COPY_YREG_U128_ZX_VLMAX((bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB, 2951 ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 2952 else 2953 IEM_MC_COPY_YREG_U256_ZX_VLMAX((bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB, 2954 ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 2955 IEM_MC_ADVANCE_RIP(); 2956 IEM_MC_END(); 2957 } 2958 else if (pVCpu->iem.s.uVexLength == 0) 2959 { 2960 /* 2961 * Register, memory128. 2962 */ 2963 IEM_MC_BEGIN(0, 2); 2964 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 2965 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 2966 2967 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 2968 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV(); 2969 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); 2970 IEM_MC_ACTUALIZE_AVX_STATE_FOR_READ(); 2971 2972 IEM_MC_FETCH_YREG_U128(u128Tmp, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 2973 IEM_MC_STORE_MEM_U128(pVCpu->iem.s.iEffSeg, GCPtrEffSrc, u128Tmp); 2974 2975 IEM_MC_ADVANCE_RIP(); 2976 IEM_MC_END(); 2977 } 2978 else 2979 { 2980 /* 2981 * Register, memory256. 2982 */ 2983 IEM_MC_BEGIN(0, 2); 2984 IEM_MC_LOCAL(RTUINT256U, u256Tmp); 2985 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 2986 2987 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 2988 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV(); 2989 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); 2990 IEM_MC_ACTUALIZE_AVX_STATE_FOR_READ(); 2991 2992 IEM_MC_FETCH_YREG_U256(u256Tmp, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 2993 IEM_MC_STORE_MEM_U256(pVCpu->iem.s.iEffSeg, GCPtrEffSrc, u256Tmp); 2994 2995 IEM_MC_ADVANCE_RIP(); 2996 IEM_MC_END(); 2997 } 2998 return VINF_SUCCESS; 2999 } 2967 3000 2968 3001 /* Opcode VEX.F2.0F 0x7f - invalid */
注意:
瀏覽 TracChangeset
來幫助您使用更動檢視器