Changeset 104188 in vbox
- Timestamp:
- Apr 5, 2024 1:16:50 PM (6 months ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 4 edited
-
VMMAll/IEMAllAImpl.asm (modified) (1 diff)
-
VMMAll/IEMAllAImplC.cpp (modified) (4 diffs)
-
VMMAll/IEMAllInstVexMap1.cpp.h (modified) (2 diffs)
-
include/IEMInternal.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllAImpl.asm
r104184 r104188 5606 5606 IEMIMPL_MEDIA_AVX_INSN_IMM8_2OP vpermilps, 1, 1, 8 5607 5607 IEMIMPL_MEDIA_AVX_INSN_IMM8_2OP vpermilpd, 1, 1, 8 5608 IEMIMPL_MEDIA_AVX_INSN_IMM8_2OP vpslldq, 1, 1, 7 5609 IEMIMPL_MEDIA_AVX_INSN_IMM8_2OP vpsrldq, 1, 1, 7 5608 5610 5609 5611 -
trunk/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp
r104174 r104188 10990 10990 IEM_DECL_IMPL_DEF(void, iemAImpl_psrldq_imm_u128,(PRTUINT128U puDst, uint8_t uShift)) 10991 10991 { 10992 RTUINT128U uSrc1 = *puDst;10993 10994 10992 if (uShift < 16) 10995 10993 { 10994 RTUINT128U uSrc1 = *puDst; 10996 10995 int i; 10997 10996 … … 11008 11007 } 11009 11008 11010 #endif 11009 IEM_DECL_IMPL_DEF(void, iemAImpl_vpsrldq_imm_u128,(PRTUINT128U puDst, PCRTUINT128U puSrc, uint8_t uShift)) 11010 { 11011 if (uShift < 16) 11012 { 11013 RTUINT128U uSrc1 = *puSrc; 11014 int i; 11015 11016 for (i = 0; i < 16 - uShift; ++i) 11017 puDst->au8[i] = uSrc1.au8[i + uShift]; 11018 for (i = 16 - uShift; i < 16; ++i) 11019 puDst->au8[i] = 0; 11020 } 11021 else 11022 { 11023 puDst->au64[0] = 0; 11024 puDst->au64[1] = 0; 11025 } 11026 } 11027 11028 IEM_DECL_IMPL_DEF(void, iemAImpl_vpsrldq_imm_u256,(PRTUINT256U puDst, PCRTUINT256U puSrc, uint8_t uShift)) 11029 { 11030 iemAImpl_vpsrldq_imm_u128(&puDst->au128[0], &puSrc->au128[0], uShift); 11031 iemAImpl_vpsrldq_imm_u128(&puDst->au128[1], &puSrc->au128[1], uShift); 11032 } 11033 #endif 11034 11035 IEM_DECL_IMPL_DEF(void, iemAImpl_vpsrldq_imm_u128_fallback,(PRTUINT128U puDst, PCRTUINT128U puSrc, uint8_t uShift)) 11036 { 11037 if (uShift < 16) 11038 { 11039 RTUINT128U uSrc1 = *puSrc; 11040 int i; 11041 11042 for (i = 0; i < 16 - uShift; ++i) 11043 puDst->au8[i] = uSrc1.au8[i + uShift]; 11044 for (i = 16 - uShift; i < 16; ++i) 11045 puDst->au8[i] = 0; 11046 } 11047 else 11048 { 11049 puDst->au64[0] = 0; 11050 puDst->au64[1] = 0; 11051 } 11052 } 11053 11054 IEM_DECL_IMPL_DEF(void, iemAImpl_vpsrldq_imm_u256_fallback,(PRTUINT256U puDst, PCRTUINT256U puSrc, uint8_t uShift)) 11055 { 11056 iemAImpl_vpsrldq_imm_u128_fallback(&puDst->au128[0], &puSrc->au128[0], uShift); 11057 iemAImpl_vpsrldq_imm_u128_fallback(&puDst->au128[1], &puSrc->au128[1], uShift); 11058 } 11011 11059 11012 11060 … … 11018 11066 IEM_DECL_IMPL_DEF(void, iemAImpl_pslldq_imm_u128,(PRTUINT128U puDst, uint8_t uShift)) 11019 11067 { 11020 RTUINT128U uSrc1 = *puDst;11021 11022 11068 if (uShift < 16) 11023 11069 { 11070 RTUINT128U uSrc1 = *puDst; 11024 11071 int i; 11025 11072 … … 11036 11083 } 11037 11084 11038 #endif 11085 IEM_DECL_IMPL_DEF(void, iemAImpl_vpslldq_imm_u128,(PRTUINT128U puDst, PCRTUINT128U puSrc, uint8_t uShift)) 11086 { 11087 if (uShift < 16) 11088 { 11089 RTUINT128U uSrc1 = *puSrc; 11090 int i; 11091 11092 for (i = 0; i < uShift; ++i) 11093 puDst->au8[i] = 0; 11094 for (i = uShift; i < 16; ++i) 11095 puDst->au8[i] = uSrc1.au8[i - uShift]; 11096 } 11097 else 11098 { 11099 puDst->au64[0] = 0; 11100 puDst->au64[1] = 0; 11101 } 11102 } 11103 11104 IEM_DECL_IMPL_DEF(void, iemAImpl_vpslldq_imm_u256,(PRTUINT256U puDst, PCRTUINT256U puSrc, uint8_t uShift)) 11105 { 11106 iemAImpl_vpslldq_imm_u128(&puDst->au128[0], &puSrc->au128[0], uShift); 11107 iemAImpl_vpslldq_imm_u128(&puDst->au128[1], &puSrc->au128[1], uShift); 11108 } 11109 11110 #endif 11111 11112 IEM_DECL_IMPL_DEF(void, iemAImpl_vpslldq_imm_u128_fallback,(PRTUINT128U puDst, PCRTUINT128U puSrc, uint8_t uShift)) 11113 { 11114 if (uShift < 16) 11115 { 11116 RTUINT128U uSrc1 = *puSrc; 11117 int i; 11118 11119 for (i = 0; i < uShift; ++i) 11120 puDst->au8[i] = 0; 11121 for (i = uShift; i < 16; ++i) 11122 puDst->au8[i] = uSrc1.au8[i - uShift]; 11123 } 11124 else 11125 { 11126 puDst->au64[0] = 0; 11127 puDst->au64[1] = 0; 11128 } 11129 } 11130 11131 IEM_DECL_IMPL_DEF(void, iemAImpl_vpslldq_imm_u256_fallback,(PRTUINT256U puDst, PCRTUINT256U puSrc, uint8_t uShift)) 11132 { 11133 iemAImpl_vpslldq_imm_u128_fallback(&puDst->au128[0], &puSrc->au128[0], uShift); 11134 iemAImpl_vpslldq_imm_u128_fallback(&puDst->au128[1], &puSrc->au128[1], uShift); 11135 } 11039 11136 11040 11137 -
trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap1.cpp.h
r104186 r104188 3813 3813 3814 3814 /** Opcode VEX.66.0F 0x73 11/3. */ 3815 FNIEMOP_STUB_1(iemOp_VGrp14_vpsrldq_Hx_Ux_Ib, uint8_t, bRm); 3815 FNIEMOP_DEF_1(iemOp_VGrp14_vpsrldq_Hx_Ux_Ib, uint8_t, bRm) 3816 { 3817 IEMOP_MNEMONIC3(VEX_VMI_REG, VPSRLDQ, vpsrldq, Hx, Ux, Ib, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, 0); 3818 if (pVCpu->iem.s.uVexLength) 3819 { 3820 return FNIEMOP_CALL_2(iemOpCommonAvxAvx2_Hx_Ux_Ib_u256, bRm, 3821 IEM_SELECT_HOST_OR_FALLBACK(fAvx2, iemAImpl_vpsrldq_imm_u256, iemAImpl_vpsrldq_imm_u256_fallback)); 3822 } 3823 else 3824 { 3825 return FNIEMOP_CALL_2(iemOpCommonAvxAvx2_Hx_Ux_Ib_u128, bRm, 3826 IEM_SELECT_HOST_OR_FALLBACK(fAvx2, iemAImpl_vpsrldq_imm_u128, iemAImpl_vpsrldq_imm_u128_fallback)); 3827 } 3828 } 3816 3829 3817 3830 /* Opcode VEX.0F 0x73 11/6 - invalid. */ … … 3834 3847 3835 3848 /** Opcode VEX.66.0F 0x73 11/7. */ 3836 FNIEMOP_STUB_1(iemOp_VGrp14_vpslldq_Hx_Ux_Ib, uint8_t, bRm); 3849 FNIEMOP_DEF_1(iemOp_VGrp14_vpslldq_Hx_Ux_Ib, uint8_t, bRm) 3850 { 3851 IEMOP_MNEMONIC3(VEX_VMI_REG, VPSLLDQ, vpslldq, Hx, Ux, Ib, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, 0); 3852 if (pVCpu->iem.s.uVexLength) 3853 { 3854 return FNIEMOP_CALL_2(iemOpCommonAvxAvx2_Hx_Ux_Ib_u256, bRm, 3855 IEM_SELECT_HOST_OR_FALLBACK(fAvx2, iemAImpl_vpslldq_imm_u256, iemAImpl_vpslldq_imm_u256_fallback)); 3856 } 3857 else 3858 { 3859 return FNIEMOP_CALL_2(iemOpCommonAvxAvx2_Hx_Ux_Ib_u128, bRm, 3860 IEM_SELECT_HOST_OR_FALLBACK(fAvx2, iemAImpl_vpslldq_imm_u128, iemAImpl_vpslldq_imm_u128_fallback)); 3861 } 3862 } 3863 3864 /* Opcode VEX.0F 0x73 11/6 - invalid. */ 3837 3865 3838 3866 /** -
trunk/src/VBox/VMM/include/IEMInternal.h
r104174 r104188 3793 3793 FNIEMAIMPLMEDIAPSHUFU128 iemAImpl_vpsllq_imm_u128, iemAImpl_vpsllq_imm_u128_fallback; 3794 3794 FNIEMAIMPLMEDIAPSHUFU256 iemAImpl_vpsllq_imm_u256, iemAImpl_vpsllq_imm_u256_fallback; 3795 IEM_DECL_IMPL_DEF(void, iemAImpl_vpslldq_imm_u128,(PRTUINT128U puDst, PCRTUINT128U puSrc, uint8_t uShift)); 3796 IEM_DECL_IMPL_DEF(void, iemAImpl_vpslldq_imm_u128_fallback,(PRTUINT128U puDst, PCRTUINT128U puSrc, uint8_t uShift)); 3797 IEM_DECL_IMPL_DEF(void, iemAImpl_vpslldq_imm_u256,(PRTUINT256U puDst, PCRTUINT256U puSrc, uint8_t uShift)); 3798 IEM_DECL_IMPL_DEF(void, iemAImpl_vpslldq_imm_u256_fallback,(PRTUINT256U puDst, PCRTUINT256U puSrc, uint8_t uShift)); 3795 3799 3796 3800 FNIEMAIMPLMEDIAPSHUFU128 iemAImpl_vpsraw_imm_u128, iemAImpl_vpsraw_imm_u128_fallback; … … 3805 3809 FNIEMAIMPLMEDIAPSHUFU128 iemAImpl_vpsrlq_imm_u128, iemAImpl_vpsrlq_imm_u128_fallback; 3806 3810 FNIEMAIMPLMEDIAPSHUFU256 iemAImpl_vpsrlq_imm_u256, iemAImpl_vpsrlq_imm_u256_fallback; 3807 FNIEMAIMPLMEDIAPSHUFU128 iemAImpl_vpsrldq_imm_u128, iemAImpl_vpsrldq_imm_u128_fallback; 3808 FNIEMAIMPLMEDIAPSHUFU256 iemAImpl_vpsrldq_imm_u256, iemAImpl_vpsrldq_imm_u256_fallback; 3811 IEM_DECL_IMPL_DEF(void, iemAImpl_vpsrldq_imm_u128,(PRTUINT128U puDst, PCRTUINT128U puSrc, uint8_t uShift)); 3812 IEM_DECL_IMPL_DEF(void, iemAImpl_vpsrldq_imm_u128_fallback,(PRTUINT128U puDst, PCRTUINT128U puSrc, uint8_t uShift)); 3813 IEM_DECL_IMPL_DEF(void, iemAImpl_vpsrldq_imm_u256,(PRTUINT256U puDst, PCRTUINT256U puSrc, uint8_t uShift)); 3814 IEM_DECL_IMPL_DEF(void, iemAImpl_vpsrldq_imm_u256_fallback,(PRTUINT256U puDst, PCRTUINT256U puSrc, uint8_t uShift)); 3809 3815 3810 3816 FNIEMAIMPLMEDIAOPTF3U128 iemAImpl_vpermilps_u128, iemAImpl_vpermilps_u128_fallback;
Note:
See TracChangeset
for help on using the changeset viewer.

