- Timestamp:
- Mar 26, 2024 1:43:01 PM (12 months ago)
- svn:sync-xref-src-repo-rev:
- 162452
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap3.cpp.h
r104018 r104059 780 780 781 781 /** Opcode VEX.66.0F3A 0x19 (vex only). */ 782 FNIEMOP_STUB(iemOp_vextractf128_Wdq_Vqq_Ib); 782 FNIEMOP_DEF(iemOp_vextractf128_Wdq_Vqq_Ib) 783 { 784 IEMOP_MNEMONIC3(VEX_MRI, VEXTRACTF128, vextractf128, Wdq, Vqq, Ib, DISOPTYPE_HARMLESS, 0); 785 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 786 if (IEM_IS_MODRM_REG_MODE(bRm)) 787 { 788 /* 789 * Register, register. 790 */ 791 IEM_MC_BEGIN(IEM_MC_F_NOT_286_OR_OLDER, 0); 792 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 793 IEMOP_HLP_DONE_VEX_DECODING_L1_AND_NO_VVVV_EX(fAvx2); 794 795 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); 796 IEM_MC_PREPARE_AVX_USAGE(); 797 798 IEM_MC_LOCAL(RTUINT128U, uDst); 799 IEM_MC_FETCH_YREG_U128(uDst, IEM_GET_MODRM_REG(pVCpu, bRm), bImm & 1); 800 IEM_MC_STORE_XREG_U128( IEM_GET_MODRM_RM(pVCpu, bRm), uDst); 801 802 IEM_MC_ADVANCE_RIP_AND_FINISH(); 803 IEM_MC_END(); 804 } 805 else 806 { 807 /* 808 * Register, memory. 809 */ 810 IEM_MC_BEGIN(IEM_MC_F_NOT_286_OR_OLDER, 0); 811 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 812 813 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 814 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 815 IEMOP_HLP_DONE_VEX_DECODING_L1_AND_NO_VVVV_EX(fAvx2); 816 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); 817 IEM_MC_PREPARE_AVX_USAGE(); 818 819 IEM_MC_LOCAL(RTUINT128U, uDst); 820 IEM_MC_FETCH_YREG_U128(uDst, IEM_GET_MODRM_REG(pVCpu, bRm), bImm & 1); 821 IEM_MC_STORE_MEM_U128_NO_AC(pVCpu->iem.s.iEffSeg, GCPtrEffSrc, uDst); 822 823 IEM_MC_ADVANCE_RIP_AND_FINISH(); 824 IEM_MC_END(); 825 } 826 } 827 828 783 829 /* Opcode VEX.66.0F3A 0x1a - invalid */ 784 830 /* Opcode VEX.66.0F3A 0x1b - invalid */ … … 872 918 873 919 /** Opcode VEX.66.0F3A 0x39 (vex only). */ 874 FNIEMOP_STUB(iemOp_vextracti128_Wdq_Vqq_Ib); 920 FNIEMOP_DEF(iemOp_vextracti128_Wdq_Vqq_Ib) 921 { 922 IEMOP_MNEMONIC3(VEX_MRI, VEXTRACTI128, vextracti128, Wdq, Vqq, Ib, DISOPTYPE_HARMLESS, 0); 923 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 924 if (IEM_IS_MODRM_REG_MODE(bRm)) 925 { 926 /* 927 * Register, register. 928 */ 929 IEM_MC_BEGIN(IEM_MC_F_NOT_286_OR_OLDER, 0); 930 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 931 IEMOP_HLP_DONE_VEX_DECODING_L1_AND_NO_VVVV_EX(fAvx2); 932 933 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); 934 IEM_MC_PREPARE_AVX_USAGE(); 935 936 IEM_MC_LOCAL(RTUINT128U, uDst); 937 IEM_MC_FETCH_YREG_U128(uDst, IEM_GET_MODRM_REG(pVCpu, bRm), bImm & 1); 938 IEM_MC_STORE_XREG_U128( IEM_GET_MODRM_RM(pVCpu, bRm), uDst); 939 940 IEM_MC_ADVANCE_RIP_AND_FINISH(); 941 IEM_MC_END(); 942 } 943 else 944 { 945 /* 946 * Register, memory. 947 */ 948 IEM_MC_BEGIN(IEM_MC_F_NOT_286_OR_OLDER, 0); 949 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 950 951 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 952 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 953 IEMOP_HLP_DONE_VEX_DECODING_L1_AND_NO_VVVV_EX(fAvx2); 954 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); 955 IEM_MC_PREPARE_AVX_USAGE(); 956 957 IEM_MC_LOCAL(RTUINT128U, uDst); 958 IEM_MC_FETCH_YREG_U128(uDst, IEM_GET_MODRM_REG(pVCpu, bRm), bImm & 1); 959 IEM_MC_STORE_MEM_U128_NO_AC(pVCpu->iem.s.iEffSeg, GCPtrEffSrc, uDst); 960 961 IEM_MC_ADVANCE_RIP_AND_FINISH(); 962 IEM_MC_END(); 963 } 964 } 965 966 875 967 /* Opcode VEX.66.0F3A 0x3a - invalid */ 876 968 /* Opcode VEX.66.0F3A 0x3b - invalid */ -
trunk/src/VBox/VMM/include/IEMInternal.h
r104050 r104059 1999 1999 /** Statistics per threaded function call. 2000 2000 * Updated by both the threaded and native recompilers. */ 2001 uint32_t acThreadedFuncStats[0x5 000 /*20480*/];2001 uint32_t acThreadedFuncStats[0x5100 /*20736*/]; 2002 2002 # endif 2003 2003 #endif
Note:
See TracChangeset
for help on using the changeset viewer.