- Timestamp:
- Feb 3, 2024 8:16:32 PM (16 months ago)
- svn:sync-xref-src-repo-rev:
- 161449
- Location:
- trunk/src/VBox/VMM/VMMAll
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllAImpl.asm
r103182 r103184 4426 4426 IEMIMPL_MEDIA_OPT_F3 vpaddsb 4427 4427 IEMIMPL_MEDIA_OPT_F3 vpaddsw 4428 IEMIMPL_MEDIA_OPT_F3 vpsllw 4429 IEMIMPL_MEDIA_OPT_F3 vpslld 4430 IEMIMPL_MEDIA_OPT_F3 vpsllq 4428 4429 ;; 4430 ; Media instruction working on one full sized source register, one full sized destination 4431 ; register, and one no-larger-than-XMM register (in the vps{ll,ra,rl}[dwq] instructions, 4432 ; this is actually used to retrieve a 128-bit load, from which a 64-bit shift length is 4433 ; extracted; if the 64-bit unsigned value is larger than the permissible max shift size 4434 ; of either 16, 32, or 64, it acts like the max shift size) 4435 ; 4436 ; @param 1 The instruction 4437 ; 4438 ; @param A0 Pointer to the destination media register size operand (output). 4439 ; @param A1 Pointer to the first source media register size operand (input). 4440 ; @param A2 Pointer to the second source media register size operand (input). 4441 ; 4442 %macro IEMIMPL_SHIFT_OPT_F3 1 4443 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u128, 12 4444 PROLOGUE_3_ARGS 4445 IEMIMPL_AVX_PROLOGUE 4446 4447 vmovdqu xmm0, [A1] 4448 vmovdqu xmm1, [A2] 4449 %1 xmm0, xmm0, xmm1 4450 vmovdqu [A0], xmm0 4451 4452 IEMIMPL_AVX_PROLOGUE 4453 EPILOGUE_3_ARGS 4454 ENDPROC iemAImpl_ %+ %1 %+ _u128 4455 4456 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u256, 12 4457 PROLOGUE_3_ARGS 4458 IEMIMPL_AVX_PROLOGUE 4459 4460 vmovdqu ymm0, [A1] 4461 vmovdqu xmm1, [A2] 4462 %1 ymm0, ymm0, xmm1 4463 vmovdqu [A0], ymm0 4464 4465 IEMIMPL_AVX_PROLOGUE 4466 EPILOGUE_3_ARGS 4467 ENDPROC iemAImpl_ %+ %1 %+ _u256 4468 %endmacro 4469 4470 IEMIMPL_SHIFT_OPT_F3 vpsllw 4471 IEMIMPL_SHIFT_OPT_F3 vpslld 4472 IEMIMPL_SHIFT_OPT_F3 vpsllq 4431 4473 4432 4474 -
trunk/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp
r103182 r103184 10343 10343 } 10344 10344 10345 IEM_DECL_IMPL_DEF(void, iemAImpl_vpsllw_imm_u128,(PRTUINT128U puDst, PCRTUINT128U puSrc1, uint8_t uShift)) 10346 { 10347 iemAImpl_vpsllw_imm_u128_fallback(puDst, puSrc1, uShift); 10348 } 10349 10345 10350 IEM_DECL_IMPL_DEF(void, iemAImpl_vpsllw_imm_u256_fallback,(PRTUINT256U puDst, PCRTUINT256U puSrc1, uint8_t uShift)) 10346 10351 { … … 10380 10385 } 10381 10386 10387 IEM_DECL_IMPL_DEF(void, iemAImpl_vpsllw_imm_u256,(PRTUINT256U puDst, PCRTUINT256U puSrc1, uint8_t uShift)) 10388 { 10389 iemAImpl_vpsllw_imm_u256_fallback(puDst, puSrc1, uShift); 10390 } 10391 10382 10392 /* 10383 10393 * PSRLD / VPSRLD … … 10638 10648 puDst->au64[1] = 0; 10639 10649 } 10650 } 10651 10652 IEM_DECL_IMPL_DEF(void, iemAImpl_vpslld_imm_u128,(PRTUINT128U puDst, PCRTUINT128U puSrc1, uint8_t uShift)) 10653 { 10654 iemAImpl_vpslld_imm_u128_fallback(puDst, puSrc1, uShift); 10640 10655 } 10641 10656 … … 10674 10689 } 10675 10690 10691 IEM_DECL_IMPL_DEF(void, iemAImpl_vpslld_imm_u256,(PRTUINT256U puDst, PCRTUINT256U puSrc1, uint8_t uShift)) 10692 { 10693 iemAImpl_vpslld_imm_u256_fallback(puDst, puSrc1, uShift); 10694 } 10695 10676 10696 10677 10697 /* … … 10843 10863 { 10844 10864 iemAImpl_vpsllq_imm_u128_fallback(puDst, puSrc1, puSrc2->au8[0]); 10865 } 10866 10867 IEM_DECL_IMPL_DEF(void, iemAImpl_vpsllq_imm_u128,(PRTUINT128U puDst, PCRTUINT128U puSrc1, uint8_t uShift)) 10868 { 10869 iemAImpl_vpsllq_imm_u128_fallback(puDst, puSrc1, uShift); 10845 10870 } 10846 10871 … … 10868 10893 { 10869 10894 iemAImpl_vpsllq_imm_u256_fallback(puDst, puSrc1, puSrc2->au8[0]); 10895 } 10896 10897 IEM_DECL_IMPL_DEF(void, iemAImpl_vpsllq_imm_u256,(PRTUINT256U puDst, PCRTUINT256U puSrc1, uint8_t uShift)) 10898 { 10899 iemAImpl_vpsllq_imm_u256_fallback(puDst, puSrc1, uShift); 10870 10900 } 10871 10901 -
trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap1.cpp.h
r103182 r103184 3684 3684 FNIEMOP_DEF_1(iemOp_VGrp13_vpslld_Hx_Ux_Ib, uint8_t, bRm) 3685 3685 { 3686 (void)bRm;3687 3686 IEMOP_MNEMONIC3(VEX_VMI_REG, VPSLLD, vpslld, Hx, Ux, Ib, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, 0); 3688 3687 if (pVCpu->iem.s.uVexLength)
Note:
See TracChangeset
for help on using the changeset viewer.