VirtualBox

Changeset 103700 in vbox


Ignore:
Timestamp:
Mar 6, 2024 1:32:01 PM (7 months ago)
Author:
vboxsync
Message:

VMM/IEM: Implement vpblendd instruction dispatch & emulation, bugref:9898

Location:
trunk/src/VBox/VMM
Files:
4 edited

Legend:

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

    r103696 r103700  
    55015501IEMIMPL_MEDIA_AVX_INSN_IMM8_6 vblendpd,   1, 1
    55025502IEMIMPL_MEDIA_AVX_INSN_IMM8_6 vpblendw,   1, 1
     5503IEMIMPL_MEDIA_AVX_INSN_IMM8_6 vpblendd,   1, 1
    55035504IEMIMPL_MEDIA_AVX_INSN_IMM8_6 vpalignr,   1, 1
    55045505IEMIMPL_MEDIA_AVX_INSN_IMM8_6 vpclmulqdq, 1, 0
  • trunk/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp

    r103696 r103700  
    1745117451
    1745217452/**
     17453 * [V]PBLENDD
     17454 */
     17455IEM_DECL_IMPL_DEF(void, iemAImpl_vpblendd_u128_fallback,(PRTUINT128U puDst, PCRTUINT128U puSrc1, PCRTUINT128U puSrc2, uint8_t bEvil))
     17456{
     17457    for (uint8_t i = 0; i < RT_ELEMENTS(puDst->au32); i++)
     17458        if (bEvil & RT_BIT(i))
     17459            puDst->au32[i] = puSrc2->au32[i];
     17460        else
     17461            puDst->au32[i] = puSrc1->au32[i];
     17462}
     17463
     17464
     17465IEM_DECL_IMPL_DEF(void, iemAImpl_vpblendd_u256_fallback,(PRTUINT256U puDst, PCRTUINT256U puSrc1, PCRTUINT256U puSrc2, uint8_t bEvil))
     17466{
     17467    for (uint8_t i = 0; i < RT_ELEMENTS(puDst->au32); i++)
     17468        if (bEvil & RT_BIT(i))
     17469            puDst->au32[i] = puSrc2->au32[i];
     17470        else
     17471            puDst->au32[i] = puSrc1->au32[i];
     17472}
     17473
     17474
     17475/**
    1745317476 * [V]BLENDPS
    1745417477 */
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap3.cpp.h

    r103558 r103700  
    380380/** Opcode VEX.66.0F3A 0x01. */
    381381FNIEMOP_STUB(iemOp_vpermqd_Vqq_Wqq_Ib);
    382 /** Opcode VEX.66.0F3A 0x02. */
    383 FNIEMOP_STUB(iemOp_vpblendd_Vx_Wx_Ib);
     382
     383
     384/** Opcode VEX.66.0F3A 0x02.
     385 * AVX2,AVX2  */
     386FNIEMOP_DEF(iemOp_vpblendd_Vx_Hx_Wx_Ib)
     387{
     388    IEMOP_MNEMONIC3(VEX_RVM, VPBLENDD, vpblendd, Vx, Hx, Wx, DISOPTYPE_HARMLESS, 0); /* @todo */
     389    IEMOPMEDIAOPTF3IMM8_INIT_VARS(vpblendd);
     390    return FNIEMOP_CALL_1(iemOpCommonAvxAvx2_Vx_Hx_Wx_Ib_Opt, IEM_SELECT_HOST_OR_FALLBACK(fAvx2, &s_Host, &s_Fallback));
     391}
     392
     393
    384394/*  Opcode VEX.66.0F3A 0x03 - invalid */
    385395
     
    13361346    /* 0x00 */  iemOp_InvalidNeedRMImm8,    iemOp_vpermq_Vqq_Wqq_Ib,    iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    13371347    /* 0x01 */  iemOp_InvalidNeedRMImm8,    iemOp_vpermqd_Vqq_Wqq_Ib,   iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    1338     /* 0x02 */  iemOp_InvalidNeedRMImm8,    iemOp_vpblendd_Vx_Wx_Ib,    iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     1348    /* 0x02 */  iemOp_InvalidNeedRMImm8,    iemOp_vpblendd_Vx_Hx_Wx_Ib, iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    13391349    /* 0x03 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    13401350    /* 0x04 */  iemOp_InvalidNeedRMImm8,    iemOp_vpermilps_Vx_Wx_Ib,   iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
  • trunk/src/VBox/VMM/include/IEMInternal.h

    r103696 r103700  
    35843584FNIEMAIMPLMEDIAOPTF3U128IMM8 iemAImpl_vpalignr_u128, iemAImpl_vpalignr_u128_fallback;
    35853585FNIEMAIMPLMEDIAOPTF3U128IMM8 iemAImpl_vpblendw_u128, iemAImpl_vpblendw_u128_fallback;
     3586FNIEMAIMPLMEDIAOPTF3U128IMM8 iemAImpl_vpblendd_u128, iemAImpl_vpblendd_u128_fallback;
    35863587FNIEMAIMPLMEDIAOPTF3U128IMM8 iemAImpl_vblendps_u128, iemAImpl_vblendps_u128_fallback;
    35873588FNIEMAIMPLMEDIAOPTF3U128IMM8 iemAImpl_vblendpd_u128, iemAImpl_vblendpd_u128_fallback;
     
    35893590FNIEMAIMPLMEDIAOPTF3U256IMM8 iemAImpl_vpalignr_u256, iemAImpl_vpalignr_u256_fallback;
    35903591FNIEMAIMPLMEDIAOPTF3U256IMM8 iemAImpl_vpblendw_u256, iemAImpl_vpblendw_u256_fallback;
     3592FNIEMAIMPLMEDIAOPTF3U256IMM8 iemAImpl_vpblendd_u256, iemAImpl_vpblendd_u256_fallback;
    35913593FNIEMAIMPLMEDIAOPTF3U256IMM8 iemAImpl_vblendps_u256, iemAImpl_vblendps_u256_fallback;
    35923594FNIEMAIMPLMEDIAOPTF3U256IMM8 iemAImpl_vblendpd_u256, iemAImpl_vblendpd_u256_fallback;
Note: See TracChangeset for help on using the changeset viewer.

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