- Timestamp:
- Jan 10, 2024 1:56:06 PM (13 months ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllAImpl.asm
r102656 r102817 4842 4842 IEMIMPL_FP_F2 rsqrtps, 2 4843 4843 IEMIMPL_FP_F2 sqrtpd, 2 4844 IEMIMPL_FP_F2 rcpps, 2 4844 4845 IEMIMPL_FP_F2 cvtdq2ps, 2 4845 4846 IEMIMPL_FP_F2 cvtps2dq, 2 … … 4901 4902 IEMIMPL_FP_F2_R32 sqrtss 4902 4903 IEMIMPL_FP_F2_R32 rsqrtss 4904 IEMIMPL_FP_F2_R32 rcpss 4903 4905 4904 4906 -
trunk/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp
r102802 r102817 16137 16137 16138 16138 /** 16139 * RCPPS 16140 */ 16141 #ifdef IEM_WITHOUT_ASSEMBLY 16142 static uint32_t iemAImpl_rcp_worker(PRTFLOAT32U pr32Res, uint32_t fMxcsr, PCRTFLOAT32U pr32Val) 16143 { 16144 RT_NOREF(pr32Res); RT_NOREF(fMxcsr); RT_NOREF(pr32Val); 16145 /** @todo implement using softfloat! */ 16146 Assert(0); 16147 return 0; 16148 } 16149 16150 16151 IEM_DECL_IMPL_DEF(void, iemAImpl_rcpps_u128,(PX86FXSTATE pFpuState, PIEMSSERESULT pResult, PCX86XMMREG puSrc1, PCX86XMMREG puSrc2)) 16152 { 16153 RT_NOREF(puSrc1); 16154 16155 pResult->MXCSR = iemAImpl_rcp_worker(&pResult->uResult.ar32[0], pFpuState->MXCSR, &puSrc2->ar32[0]); 16156 pResult->MXCSR |= iemAImpl_rcp_worker(&pResult->uResult.ar32[1], pFpuState->MXCSR, &puSrc2->ar32[1]); 16157 pResult->MXCSR |= iemAImpl_rcp_worker(&pResult->uResult.ar32[2], pFpuState->MXCSR, &puSrc2->ar32[2]); 16158 pResult->MXCSR |= iemAImpl_rcp_worker(&pResult->uResult.ar32[3], pFpuState->MXCSR, &puSrc2->ar32[3]); 16159 } 16160 16161 16162 /** 16163 * RCPSS 16164 */ 16165 IEM_DECL_IMPL_DEF(void, iemAImpl_rcpss_u128_r32,(PX86FXSTATE pFpuState, PIEMSSERESULT pResult, PCX86XMMREG puSrc1, PCRTFLOAT32U pr32Src2)) 16166 { 16167 pResult->MXCSR = iemAImpl_rcp_worker(&pResult->uResult.ar32[0], pFpuState->MXCSR, pr32Src2); 16168 pResult->uResult.ar32[1] = puSrc1->ar32[1]; 16169 pResult->uResult.ar32[2] = puSrc1->ar32[2]; 16170 pResult->uResult.ar32[3] = puSrc1->ar32[3]; 16171 } 16172 #endif 16173 16174 16175 /** 16139 16176 * ADDSUBPS 16140 16177 */ -
trunk/src/VBox/VMM/VMMAll/IEMAllInstTwoByte0f.cpp.h
r102784 r102817 5600 5600 /* Opcode 0xf2 0x0f 0x52 - invalid */ 5601 5601 5602 5602 5603 /** Opcode 0x0f 0x53 - rcpps Vps, Wps */ 5603 FNIEMOP_STUB(iemOp_rcpps_Vps_Wps); 5604 FNIEMOP_DEF(iemOp_rcpps_Vps_Wps) 5605 { 5606 IEMOP_MNEMONIC2(RM, RCPPS, rcpps, Vps, Wps, DISOPTYPE_HARMLESS, 0); 5607 return FNIEMOP_CALL_1(iemOpCommonSseFp_FullFull_To_Full, iemAImpl_rcpps_u128); 5608 } 5609 5610 5604 5611 /* Opcode 0x66 0x0f 0x53 - invalid */ 5612 5613 5605 5614 /** Opcode 0xf3 0x0f 0x53 - rcpss Vss, Wss */ 5606 FNIEMOP_STUB(iemOp_rcpss_Vss_Wss); 5615 FNIEMOP_DEF(iemOp_rcpss_Vss_Wss) 5616 { 5617 IEMOP_MNEMONIC2(RM, RCPSS, rcpss, Vss, Wss, DISOPTYPE_HARMLESS, 0); 5618 return FNIEMOP_CALL_1(iemOpCommonSseFp_FullR32_To_Full, iemAImpl_rcpss_u128_r32); 5619 } 5620 5621 5607 5622 /* Opcode 0xf2 0x0f 0x53 - invalid */ 5608 5623 -
trunk/src/VBox/VMM/include/IEMInternal.h
r102800 r102817 3940 3940 FNIEMAIMPLFPSSEF2U128 iemAImpl_rsqrtps_u128; 3941 3941 FNIEMAIMPLFPSSEF2U128 iemAImpl_sqrtpd_u128; 3942 FNIEMAIMPLFPSSEF2U128 iemAImpl_rcpps_u128; 3942 3943 FNIEMAIMPLFPSSEF2U128 iemAImpl_addsubps_u128; 3943 3944 FNIEMAIMPLFPSSEF2U128 iemAImpl_addsubpd_u128; … … 3969 3970 FNIEMAIMPLFPSSEF2U128R64 iemAImpl_sqrtsd_u128_r64; 3970 3971 FNIEMAIMPLFPSSEF2U128R32 iemAImpl_rsqrtss_u128_r32; 3972 FNIEMAIMPLFPSSEF2U128R32 iemAImpl_rcpss_u128_r32; 3971 3973 3972 3974 FNIEMAIMPLFPAVXF3U128 iemAImpl_vaddps_u128, iemAImpl_vaddps_u128_fallback; -
trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp
r102572 r102817 505 505 #define iemAImpl_sqrtpd_u128 NULL 506 506 #define iemAImpl_rsqrtps_u128 NULL 507 #define iemAImpl_rcpps_u128 NULL 507 508 #define iemAImpl_addsubps_u128 NULL 508 509 #define iemAImpl_addsubpd_u128 NULL … … 538 539 #define iemAImpl_roundsd_u128_r64 NULL 539 540 #define iemAImpl_rsqrtss_u128_r32 NULL 541 #define iemAImpl_rcpss_u128_r32 NULL 540 542 541 543 #define iemAImpl_cvtss2sd_u128_r32 NULL
Note:
See TracChangeset
for help on using the changeset viewer.