Changeset 105229 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Jul 9, 2024 10:31:19 AM (7 months ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp
r105228 r105229 16655 16655 16656 16656 /** 16657 * MAXPS 16658 */ 16659 #ifdef IEM_WITHOUT_ASSEMBLY 16657 * [V]MAXPS 16658 */ 16660 16659 static uint32_t iemAImpl_maxps_u128_worker(PRTFLOAT32U pr32Res, uint32_t fMxcsr, PCRTFLOAT32U pr32Val1, PCRTFLOAT32U pr32Val2) 16661 16660 { … … 16686 16685 16687 16686 16687 #ifdef IEM_WITHOUT_ASSEMBLY 16688 16688 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_maxps_u128,(uint32_t uMxCsrIn, PX86XMMREG pResult, PCX86XMMREG puSrc1, PCX86XMMREG puSrc2)) 16689 16689 { … … 16696 16696 16697 16697 16698 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_vmaxps_u128_fallback,(uint32_t uMxCsrIn, PX86XMMREG pResult, PCX86XMMREG puSrc1, PCX86XMMREG puSrc2)) 16699 { 16700 return iemAImpl_maxps_u128_worker(&pResult->ar32[0], uMxCsrIn, &puSrc1->ar32[0], &puSrc2->ar32[0]) 16701 | iemAImpl_maxps_u128_worker(&pResult->ar32[1], uMxCsrIn, &puSrc1->ar32[1], &puSrc2->ar32[1]) 16702 | iemAImpl_maxps_u128_worker(&pResult->ar32[2], uMxCsrIn, &puSrc1->ar32[2], &puSrc2->ar32[2]) 16703 | iemAImpl_maxps_u128_worker(&pResult->ar32[3], uMxCsrIn, &puSrc1->ar32[3], &puSrc2->ar32[3]); 16704 } 16705 16706 16707 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_vmaxps_u256_fallback,(uint32_t uMxCsrIn, PX86YMMREG pResult, PCX86YMMREG puSrc1, PCX86YMMREG puSrc2)) 16708 { 16709 return iemAImpl_maxps_u128_worker(&pResult->ar32[0], uMxCsrIn, &puSrc1->ar32[0], &puSrc2->ar32[0]) 16710 | iemAImpl_maxps_u128_worker(&pResult->ar32[1], uMxCsrIn, &puSrc1->ar32[1], &puSrc2->ar32[1]) 16711 | iemAImpl_maxps_u128_worker(&pResult->ar32[2], uMxCsrIn, &puSrc1->ar32[2], &puSrc2->ar32[2]) 16712 | iemAImpl_maxps_u128_worker(&pResult->ar32[3], uMxCsrIn, &puSrc1->ar32[3], &puSrc2->ar32[3]) 16713 | iemAImpl_maxps_u128_worker(&pResult->ar32[4], uMxCsrIn, &puSrc1->ar32[4], &puSrc2->ar32[4]) 16714 | iemAImpl_maxps_u128_worker(&pResult->ar32[5], uMxCsrIn, &puSrc1->ar32[5], &puSrc2->ar32[5]) 16715 | iemAImpl_maxps_u128_worker(&pResult->ar32[6], uMxCsrIn, &puSrc1->ar32[6], &puSrc2->ar32[6]) 16716 | iemAImpl_maxps_u128_worker(&pResult->ar32[7], uMxCsrIn, &puSrc1->ar32[7], &puSrc2->ar32[7]); 16717 } 16718 16719 16698 16720 /** 16699 * MAXSS16721 * [V]MAXSS 16700 16722 */ 16701 16723 #ifdef IEM_WITHOUT_ASSEMBLY … … 16710 16732 16711 16733 16734 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_vmaxss_u128_r32_fallback,(uint32_t uMxCsrIn, PX86XMMREG pResult, PCX86XMMREG puSrc1, PCRTFLOAT32U pr32Src2)) 16735 { 16736 pResult->ar32[1] = puSrc1->ar32[1]; 16737 pResult->ar32[2] = puSrc1->ar32[2]; 16738 pResult->ar32[3] = puSrc1->ar32[3]; 16739 return iemAImpl_maxps_u128_worker(&pResult->ar32[0], uMxCsrIn, &puSrc1->ar32[0], pr32Src2); 16740 } 16741 16742 16712 16743 /** 16713 16744 * MAXPD 16714 16745 */ 16715 #ifdef IEM_WITHOUT_ASSEMBLY16716 16746 static uint32_t iemAImpl_maxpd_u128_worker(PRTFLOAT64U pr64Res, uint32_t fMxcsr, PCRTFLOAT64U pr64Val1, PCRTFLOAT64U pr64Val2) 16717 16747 { … … 16742 16772 16743 16773 16774 #ifdef IEM_WITHOUT_ASSEMBLY 16744 16775 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_maxpd_u128,(uint32_t uMxCsrIn, PX86XMMREG pResult, PCX86XMMREG puSrc1, PCX86XMMREG puSrc2)) 16745 16776 { … … 16750 16781 16751 16782 16783 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_vmaxpd_u128_fallback,(uint32_t uMxCsrIn, PX86XMMREG pResult, PCX86XMMREG puSrc1, PCX86XMMREG puSrc2)) 16784 { 16785 return iemAImpl_maxpd_u128_worker(&pResult->ar64[0], uMxCsrIn, &puSrc1->ar64[0], &puSrc2->ar64[0]) 16786 | iemAImpl_maxpd_u128_worker(&pResult->ar64[1], uMxCsrIn, &puSrc1->ar64[1], &puSrc2->ar64[1]); 16787 } 16788 16789 16790 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_vmaxpd_u256_fallback,(uint32_t uMxCsrIn, PX86YMMREG pResult, PCX86YMMREG puSrc1, PCX86YMMREG puSrc2)) 16791 { 16792 return iemAImpl_maxpd_u128_worker(&pResult->ar64[0], uMxCsrIn, &puSrc1->ar64[0], &puSrc2->ar64[0]) 16793 | iemAImpl_maxpd_u128_worker(&pResult->ar64[1], uMxCsrIn, &puSrc1->ar64[1], &puSrc2->ar64[1]) 16794 | iemAImpl_maxpd_u128_worker(&pResult->ar64[2], uMxCsrIn, &puSrc1->ar64[2], &puSrc2->ar64[2]) 16795 | iemAImpl_maxpd_u128_worker(&pResult->ar64[3], uMxCsrIn, &puSrc1->ar64[3], &puSrc2->ar64[3]); 16796 } 16797 16798 16752 16799 /** 16753 * MAXSD16800 * [V]MAXSD 16754 16801 */ 16755 16802 #ifdef IEM_WITHOUT_ASSEMBLY … … 16760 16807 } 16761 16808 #endif 16809 16810 16811 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_vmaxsd_u128_r64_fallback,(uint32_t uMxCsrIn, PX86XMMREG pResult, PCX86XMMREG puSrc1, PCRTFLOAT64U pr64Src2)) 16812 { 16813 pResult->ar64[1] = puSrc1->ar64[1]; 16814 return iemAImpl_maxpd_u128_worker(&pResult->ar64[0], uMxCsrIn, &puSrc1->ar64[0], pr64Src2); 16815 } 16762 16816 16763 16817 -
trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap1.cpp.h
r105228 r105229 3157 3157 3158 3158 /** Opcode VEX.0F 0x5f - vmaxps Vps, Hps, Wps */ 3159 FNIEMOP_STUB(iemOp_vmaxps_Vps_Hps_Wps); 3159 FNIEMOP_DEF(iemOp_vmaxps_Vps_Hps_Wps) 3160 { 3161 IEMOP_MNEMONIC3(VEX_RVM, VMAXPS, vmaxps, Vps, Hps, Wps, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, 0); 3162 IEMOPMEDIAF3_INIT_VARS( vmaxps); 3163 return FNIEMOP_CALL_1(iemOpCommonAvxAvx2_Vx_Hx_Wx, IEM_SELECT_HOST_OR_FALLBACK(fAvx, &s_Host, &s_Fallback)); 3164 } 3165 3166 3160 3167 /** Opcode VEX.66.0F 0x5f - vmaxpd Vpd, Hpd, Wpd */ 3161 FNIEMOP_STUB(iemOp_vmaxpd_Vpd_Hpd_Wpd); 3168 FNIEMOP_DEF(iemOp_vmaxpd_Vpd_Hpd_Wpd) 3169 { 3170 IEMOP_MNEMONIC3(VEX_RVM, VMAXPD, vmaxpd, Vpd, Hpd, Wpd, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, 0); 3171 IEMOPMEDIAF3_INIT_VARS( vmaxpd); 3172 return FNIEMOP_CALL_1(iemOpCommonAvxAvx2_Vx_Hx_Wx, IEM_SELECT_HOST_OR_FALLBACK(fAvx, &s_Host, &s_Fallback)); 3173 } 3174 3175 3162 3176 /** Opcode VEX.F3.0F 0x5f - vmaxss Vss, Hss, Wss */ 3163 FNIEMOP_STUB(iemOp_vmaxss_Vss_Hss_Wss); 3177 FNIEMOP_DEF(iemOp_vmaxss_Vss_Hss_Wss) 3178 { 3179 IEMOP_MNEMONIC3(VEX_RVM, VMAXSS, vmaxss, Vps, Hps, Wss, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, 0); 3180 return FNIEMOP_CALL_1(iemOpCommonAvx_Vx_Hx_R32, 3181 IEM_SELECT_HOST_OR_FALLBACK(fAvx, iemAImpl_vmaxss_u128_r32, iemAImpl_vmaxss_u128_r32_fallback)); 3182 } 3183 3184 3164 3185 /** Opcode VEX.F2.0F 0x5f - vmaxsd Vsd, Hsd, Wsd */ 3165 FNIEMOP_STUB(iemOp_vmaxsd_Vsd_Hsd_Wsd); 3186 FNIEMOP_DEF(iemOp_vmaxsd_Vsd_Hsd_Wsd) 3187 { 3188 IEMOP_MNEMONIC3(VEX_RVM, VMAXSD, vmaxsd, Vpd, Hpd, Wsd, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, 0); 3189 return FNIEMOP_CALL_1(iemOpCommonAvx_Vx_Hx_R64, 3190 IEM_SELECT_HOST_OR_FALLBACK(fAvx, iemAImpl_vmaxsd_u128_r64, iemAImpl_vmaxsd_u128_r64_fallback)); 3191 } 3166 3192 3167 3193 -
trunk/src/VBox/VMM/include/IEMInternal.h
r105228 r105229 4565 4565 FNIEMAIMPLMEDIAF3U128 iemAImpl_vdivps_u128, iemAImpl_vdivps_u128_fallback; 4566 4566 FNIEMAIMPLMEDIAF3U128 iemAImpl_vdivpd_u128, iemAImpl_vdivpd_u128_fallback; 4567 FNIEMAIMPL FPAVXF3U128 iemAImpl_vmaxps_u128, iemAImpl_vmaxps_u128_fallback;4568 FNIEMAIMPL FPAVXF3U128 iemAImpl_vmaxpd_u128, iemAImpl_vmaxpd_u128_fallback;4567 FNIEMAIMPLMEDIAF3U128 iemAImpl_vmaxps_u128, iemAImpl_vmaxps_u128_fallback; 4568 FNIEMAIMPLMEDIAF3U128 iemAImpl_vmaxpd_u128, iemAImpl_vmaxpd_u128_fallback; 4569 4569 FNIEMAIMPLMEDIAF3U128 iemAImpl_vhaddps_u128, iemAImpl_vhaddps_u128_fallback; 4570 4570 FNIEMAIMPLFPAVXF3U128 iemAImpl_vhaddpd_u128, iemAImpl_vhaddpd_u128_fallback;
Note:
See TracChangeset
for help on using the changeset viewer.