Changeset 105228 in vbox
- Timestamp:
- Jul 9, 2024 10:20:02 AM (5 months ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp
r105226 r105228 16477 16477 16478 16478 /** 16479 * DIVPS 16480 */ 16481 #ifdef IEM_WITHOUT_ASSEMBLY 16479 * [V]DIVPS 16480 */ 16482 16481 static uint32_t iemAImpl_divps_u128_worker(PRTFLOAT32U pr32Res, uint32_t fMxcsr, PCRTFLOAT32U pr32Val1, PCRTFLOAT32U pr32Val2) 16483 16482 { … … 16514 16513 16515 16514 16515 #ifdef IEM_WITHOUT_ASSEMBLY 16516 16516 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_divps_u128,(uint32_t uMxCsrIn, PX86XMMREG pResult, PCX86XMMREG puSrc1, PCX86XMMREG puSrc2)) 16517 16517 { … … 16524 16524 16525 16525 16526 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_vdivps_u128_fallback,(uint32_t uMxCsrIn, PX86XMMREG pResult, PCX86XMMREG puSrc1, PCX86XMMREG puSrc2)) 16527 { 16528 return iemAImpl_divps_u128_worker(&pResult->ar32[0], uMxCsrIn, &puSrc1->ar32[0], &puSrc2->ar32[0]) 16529 | iemAImpl_divps_u128_worker(&pResult->ar32[1], uMxCsrIn, &puSrc1->ar32[1], &puSrc2->ar32[1]) 16530 | iemAImpl_divps_u128_worker(&pResult->ar32[2], uMxCsrIn, &puSrc1->ar32[2], &puSrc2->ar32[2]) 16531 | iemAImpl_divps_u128_worker(&pResult->ar32[3], uMxCsrIn, &puSrc1->ar32[3], &puSrc2->ar32[3]); 16532 } 16533 16534 16535 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_vdivps_u256_fallback,(uint32_t uMxCsrIn, PX86YMMREG pResult, PCX86YMMREG puSrc1, PCX86YMMREG puSrc2)) 16536 { 16537 return iemAImpl_divps_u128_worker(&pResult->ar32[0], uMxCsrIn, &puSrc1->ar32[0], &puSrc2->ar32[0]) 16538 | iemAImpl_divps_u128_worker(&pResult->ar32[1], uMxCsrIn, &puSrc1->ar32[1], &puSrc2->ar32[1]) 16539 | iemAImpl_divps_u128_worker(&pResult->ar32[2], uMxCsrIn, &puSrc1->ar32[2], &puSrc2->ar32[2]) 16540 | iemAImpl_divps_u128_worker(&pResult->ar32[3], uMxCsrIn, &puSrc1->ar32[3], &puSrc2->ar32[3]) 16541 | iemAImpl_divps_u128_worker(&pResult->ar32[4], uMxCsrIn, &puSrc1->ar32[4], &puSrc2->ar32[4]) 16542 | iemAImpl_divps_u128_worker(&pResult->ar32[5], uMxCsrIn, &puSrc1->ar32[5], &puSrc2->ar32[5]) 16543 | iemAImpl_divps_u128_worker(&pResult->ar32[6], uMxCsrIn, &puSrc1->ar32[6], &puSrc2->ar32[6]) 16544 | iemAImpl_divps_u128_worker(&pResult->ar32[7], uMxCsrIn, &puSrc1->ar32[7], &puSrc2->ar32[7]); 16545 } 16546 16547 16526 16548 /** 16527 * DIVSS16549 * [V]DIVSS 16528 16550 */ 16529 16551 #ifdef IEM_WITHOUT_ASSEMBLY … … 16538 16560 16539 16561 16562 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_vdivss_u128_r32_fallback,(uint32_t uMxCsrIn, PX86XMMREG pResult, PCX86XMMREG puSrc1, PCRTFLOAT32U pr32Src2)) 16563 { 16564 pResult->ar32[1] = puSrc1->ar32[1]; 16565 pResult->ar32[2] = puSrc1->ar32[2]; 16566 pResult->ar32[3] = puSrc1->ar32[3]; 16567 return iemAImpl_divps_u128_worker(&pResult->ar32[0], uMxCsrIn, &puSrc1->ar32[0], pr32Src2); 16568 } 16569 16570 16540 16571 /** 16541 16572 * DIVPD 16542 16573 */ 16543 #ifdef IEM_WITHOUT_ASSEMBLY16544 16574 static uint32_t iemAImpl_divpd_u128_worker(PRTFLOAT64U pr64Res, uint32_t fMxcsr, PCRTFLOAT64U pr64Val1, PCRTFLOAT64U pr64Val2) 16545 16575 { … … 16576 16606 16577 16607 16608 #ifdef IEM_WITHOUT_ASSEMBLY 16578 16609 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_divpd_u128,(uint32_t uMxCsrIn, PX86XMMREG pResult, PCX86XMMREG puSrc1, PCX86XMMREG puSrc2)) 16579 16610 { … … 16584 16615 16585 16616 16617 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_vdivpd_u128_fallback,(uint32_t uMxCsrIn, PX86XMMREG pResult, PCX86XMMREG puSrc1, PCX86XMMREG puSrc2)) 16618 { 16619 return iemAImpl_divpd_u128_worker(&pResult->ar64[0], uMxCsrIn, &puSrc1->ar64[0], &puSrc2->ar64[0]) 16620 | iemAImpl_divpd_u128_worker(&pResult->ar64[1], uMxCsrIn, &puSrc1->ar64[1], &puSrc2->ar64[1]); 16621 } 16622 16623 16624 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_vdivpd_u256_fallback,(uint32_t uMxCsrIn, PX86YMMREG pResult, PCX86YMMREG puSrc1, PCX86YMMREG puSrc2)) 16625 { 16626 return iemAImpl_divpd_u128_worker(&pResult->ar64[0], uMxCsrIn, &puSrc1->ar64[0], &puSrc2->ar64[0]) 16627 | iemAImpl_divpd_u128_worker(&pResult->ar64[1], uMxCsrIn, &puSrc1->ar64[1], &puSrc2->ar64[1]) 16628 | iemAImpl_divpd_u128_worker(&pResult->ar64[2], uMxCsrIn, &puSrc1->ar64[2], &puSrc2->ar64[2]) 16629 | iemAImpl_divpd_u128_worker(&pResult->ar64[3], uMxCsrIn, &puSrc1->ar64[3], &puSrc2->ar64[3]) 16630 | iemAImpl_divpd_u128_worker(&pResult->ar64[4], uMxCsrIn, &puSrc1->ar64[4], &puSrc2->ar64[4]) 16631 | iemAImpl_divpd_u128_worker(&pResult->ar64[5], uMxCsrIn, &puSrc1->ar64[5], &puSrc2->ar64[5]) 16632 | iemAImpl_divpd_u128_worker(&pResult->ar64[6], uMxCsrIn, &puSrc1->ar64[6], &puSrc2->ar64[6]) 16633 | iemAImpl_divpd_u128_worker(&pResult->ar64[7], uMxCsrIn, &puSrc1->ar64[7], &puSrc2->ar64[7]); 16634 } 16635 16636 16586 16637 /** 16587 * DIVSD16638 * [V]DIVSD 16588 16639 */ 16589 16640 #ifdef IEM_WITHOUT_ASSEMBLY … … 16594 16645 } 16595 16646 #endif 16647 16648 16649 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_vdivsd_u128_r64_fallback,(uint32_t uMxCsrIn, PX86XMMREG pResult, PCX86XMMREG puSrc1, PCRTFLOAT64U pr64Src2)) 16650 { 16651 pResult->ar64[1] = puSrc1->ar64[1]; 16652 return iemAImpl_divpd_u128_worker(&pResult->ar64[0], uMxCsrIn, &puSrc1->ar64[0], pr64Src2); 16653 } 16596 16654 16597 16655 -
trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap1.cpp.h
r105224 r105228 3121 3121 3122 3122 /** Opcode VEX.0F 0x5e - vdivps Vps, Hps, Wps */ 3123 FNIEMOP_STUB(iemOp_vdivps_Vps_Hps_Wps); 3123 FNIEMOP_DEF(iemOp_vdivps_Vps_Hps_Wps) 3124 { 3125 IEMOP_MNEMONIC3(VEX_RVM, VDIVPS, vdivps, Vps, Hps, Wps, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, 0); 3126 IEMOPMEDIAF3_INIT_VARS( vdivps); 3127 return FNIEMOP_CALL_1(iemOpCommonAvxAvx2_Vx_Hx_Wx, IEM_SELECT_HOST_OR_FALLBACK(fAvx, &s_Host, &s_Fallback)); 3128 } 3129 3130 3124 3131 /** Opcode VEX.66.0F 0x5e - vdivpd Vpd, Hpd, Wpd */ 3125 FNIEMOP_STUB(iemOp_vdivpd_Vpd_Hpd_Wpd); 3132 FNIEMOP_DEF(iemOp_vdivpd_Vpd_Hpd_Wpd) 3133 { 3134 IEMOP_MNEMONIC3(VEX_RVM, VDIVPD, vdivpd, Vpd, Hpd, Wpd, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, 0); 3135 IEMOPMEDIAF3_INIT_VARS( vdivpd); 3136 return FNIEMOP_CALL_1(iemOpCommonAvxAvx2_Vx_Hx_Wx, IEM_SELECT_HOST_OR_FALLBACK(fAvx, &s_Host, &s_Fallback)); 3137 } 3138 3139 3126 3140 /** Opcode VEX.F3.0F 0x5e - vdivss Vss, Hss, Wss */ 3127 FNIEMOP_STUB(iemOp_vdivss_Vss_Hss_Wss); 3141 FNIEMOP_DEF(iemOp_vdivss_Vss_Hss_Wss) 3142 { 3143 IEMOP_MNEMONIC3(VEX_RVM, VDIVSS, vdivss, Vps, Hps, Wss, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, 0); 3144 return FNIEMOP_CALL_1(iemOpCommonAvx_Vx_Hx_R32, 3145 IEM_SELECT_HOST_OR_FALLBACK(fAvx, iemAImpl_vdivss_u128_r32, iemAImpl_vdivss_u128_r32_fallback)); 3146 } 3147 3148 3128 3149 /** Opcode VEX.F2.0F 0x5e - vdivsd Vsd, Hsd, Wsd */ 3129 FNIEMOP_STUB(iemOp_vdivsd_Vsd_Hsd_Wsd); 3150 FNIEMOP_DEF(iemOp_vdivsd_Vsd_Hsd_Wsd) 3151 { 3152 IEMOP_MNEMONIC3(VEX_RVM, VDIVSD, vdivsd, Vpd, Hpd, Wsd, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, 0); 3153 return FNIEMOP_CALL_1(iemOpCommonAvx_Vx_Hx_R64, 3154 IEM_SELECT_HOST_OR_FALLBACK(fAvx, iemAImpl_vdivsd_u128_r64, iemAImpl_vdivsd_u128_r64_fallback)); 3155 } 3156 3130 3157 3131 3158 /** Opcode VEX.0F 0x5f - vmaxps Vps, Hps, Wps */ -
trunk/src/VBox/VMM/include/IEMInternal.h
r105224 r105228 4563 4563 FNIEMAIMPLMEDIAF3U128 iemAImpl_vminps_u128, iemAImpl_vminps_u128_fallback; 4564 4564 FNIEMAIMPLMEDIAF3U128 iemAImpl_vminpd_u128, iemAImpl_vminpd_u128_fallback; 4565 FNIEMAIMPL FPAVXF3U128 iemAImpl_vdivps_u128, iemAImpl_vdivps_u128_fallback;4566 FNIEMAIMPL FPAVXF3U128 iemAImpl_vdivpd_u128, iemAImpl_vdivpd_u128_fallback;4565 FNIEMAIMPLMEDIAF3U128 iemAImpl_vdivps_u128, iemAImpl_vdivps_u128_fallback; 4566 FNIEMAIMPLMEDIAF3U128 iemAImpl_vdivpd_u128, iemAImpl_vdivpd_u128_fallback; 4567 4567 FNIEMAIMPLFPAVXF3U128 iemAImpl_vmaxps_u128, iemAImpl_vmaxps_u128_fallback; 4568 4568 FNIEMAIMPLFPAVXF3U128 iemAImpl_vmaxpd_u128, iemAImpl_vmaxpd_u128_fallback;
Note:
See TracChangeset
for help on using the changeset viewer.