VirtualBox

Changeset 103184 in vbox for trunk/src


Ignore:
Timestamp:
Feb 3, 2024 8:16:32 PM (16 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
161449
Message:

Fix broken build and broken 'with assembly' ability to run VMs at all; from r161447:

VMM/IEM: IEMIMPL_SHIFT_OPT_F3 macro to emit vpsll-family instruction blocks
VMM/IEM: add missing 'non-fallback' iemAImpl_vpsll[wdq]_imm_u{128,256} functions

bugref:9898

Location:
trunk/src/VBox/VMM/VMMAll
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllAImpl.asm

    r103182 r103184  
    44264426IEMIMPL_MEDIA_OPT_F3 vpaddsb
    44274427IEMIMPL_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
     4443BEGINPROC_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
     4454ENDPROC iemAImpl_ %+ %1 %+ _u128
     4455
     4456BEGINPROC_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
     4467ENDPROC iemAImpl_ %+ %1 %+ _u256
     4468%endmacro
     4469
     4470IEMIMPL_SHIFT_OPT_F3 vpsllw
     4471IEMIMPL_SHIFT_OPT_F3 vpslld
     4472IEMIMPL_SHIFT_OPT_F3 vpsllq
    44314473
    44324474
  • trunk/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp

    r103182 r103184  
    1034310343}
    1034410344
     10345IEM_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
    1034510350IEM_DECL_IMPL_DEF(void, iemAImpl_vpsllw_imm_u256_fallback,(PRTUINT256U puDst, PCRTUINT256U puSrc1, uint8_t uShift))
    1034610351{
     
    1038010385}
    1038110386
     10387IEM_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
    1038210392/*
    1038310393 * PSRLD / VPSRLD
     
    1063810648        puDst->au64[1] = 0;
    1063910649    }
     10650}
     10651
     10652IEM_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);
    1064010655}
    1064110656
     
    1067410689}
    1067510690
     10691IEM_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
    1067610696
    1067710697/*
     
    1084310863{
    1084410864    iemAImpl_vpsllq_imm_u128_fallback(puDst, puSrc1, puSrc2->au8[0]);
     10865}
     10866
     10867IEM_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);
    1084510870}
    1084610871
     
    1086810893{
    1086910894    iemAImpl_vpsllq_imm_u256_fallback(puDst, puSrc1, puSrc2->au8[0]);
     10895}
     10896
     10897IEM_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);
    1087010900}
    1087110901
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap1.cpp.h

    r103182 r103184  
    36843684FNIEMOP_DEF_1(iemOp_VGrp13_vpslld_Hx_Ux_Ib, uint8_t, bRm)
    36853685{
    3686 (void)bRm;
    36873686    IEMOP_MNEMONIC3(VEX_VMI_REG, VPSLLD, vpslld, Hx, Ux, Ib, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, 0);
    36883687    if (pVCpu->iem.s.uVexLength)
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette