VirtualBox

Changeset 96007 in vbox


Ignore:
Timestamp:
Aug 3, 2022 7:27:57 PM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
152792
Message:

VMM/IEM: Implement [v]pmins{b,w,d} instructions, bugref:9898

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

Legend:

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

    r96004 r96007  
    36363636IEMIMPL_MEDIA_F2 pminuw,  0
    36373637IEMIMPL_MEDIA_F2 pminud,  0
     3638IEMIMPL_MEDIA_F2 pminsb,  0
     3639IEMIMPL_MEDIA_F2 pminsw,  1
     3640IEMIMPL_MEDIA_F2 pminsd,  0
    36383641IEMIMPL_MEDIA_F2 pmaxub,  1
    36393642IEMIMPL_MEDIA_F2 pmaxuw,  0
     
    40934096IEMIMPL_MEDIA_F3 vpminuw
    40944097IEMIMPL_MEDIA_F3 vpminud
     4098IEMIMPL_MEDIA_F3 vpminsb
     4099IEMIMPL_MEDIA_F3 vpminsw
     4100IEMIMPL_MEDIA_F3 vpminsd
    40954101IEMIMPL_MEDIA_F3 vpmaxub
    40964102IEMIMPL_MEDIA_F3 vpmaxuw
  • trunk/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp

    r96004 r96007  
    99149914
    99159915/*
     9916 * PMINUB / VPMINUB / PMINUW / VPMINUW / PMINUD / VPMINUD
     9917 */
     9918#ifdef IEM_WITHOUT_ASSEMBLY
     9919
     9920IEM_DECL_IMPL_DEF(void, iemAImpl_pminsw_u64,(PCX86FXSTATE pFpuState, uint64_t *puDst, uint64_t const *puSrc))
     9921{
     9922    RTUINT64U uSrc1 = { *puDst };
     9923    RTUINT64U uSrc2 = { *puSrc };
     9924    RTUINT64U uDst;
     9925
     9926    uDst.ai16[0] = RT_MIN(uSrc1.ai16[0], uSrc2.ai16[0]);
     9927    uDst.ai16[1] = RT_MIN(uSrc1.ai16[1], uSrc2.ai16[1]);
     9928    uDst.ai16[2] = RT_MIN(uSrc1.ai16[2], uSrc2.ai16[2]);
     9929    uDst.ai16[3] = RT_MIN(uSrc1.ai16[3], uSrc2.ai16[3]);
     9930    *puDst = uDst.u;
     9931    RT_NOREF(pFpuState);
     9932}
     9933
     9934
     9935IEM_DECL_IMPL_DEF(void, iemAImpl_pminsw_u128,(PCX86FXSTATE pFpuState, PRTUINT128U puDst, PCRTUINT128U puSrc))
     9936{
     9937    RTUINT128U uSrc1 = *puDst;
     9938
     9939    puDst->ai16[ 0] = RT_MIN(uSrc1.ai16[ 0], puSrc->ai16[ 0]);
     9940    puDst->ai16[ 1] = RT_MIN(uSrc1.ai16[ 1], puSrc->ai16[ 1]);
     9941    puDst->ai16[ 2] = RT_MIN(uSrc1.ai16[ 2], puSrc->ai16[ 2]);
     9942    puDst->ai16[ 3] = RT_MIN(uSrc1.ai16[ 3], puSrc->ai16[ 3]);
     9943    puDst->ai16[ 4] = RT_MIN(uSrc1.ai16[ 4], puSrc->ai16[ 4]);
     9944    puDst->ai16[ 5] = RT_MIN(uSrc1.ai16[ 5], puSrc->ai16[ 5]);
     9945    puDst->ai16[ 6] = RT_MIN(uSrc1.ai16[ 6], puSrc->ai16[ 6]);
     9946    puDst->ai16[ 7] = RT_MIN(uSrc1.ai16[ 7], puSrc->ai16[ 7]);
     9947    RT_NOREF(pFpuState);
     9948}
     9949
     9950#endif
     9951
     9952IEM_DECL_IMPL_DEF(void, iemAImpl_pminsb_u128_fallback,(PCX86FXSTATE pFpuState, PRTUINT128U puDst, PCRTUINT128U puSrc))
     9953{
     9954    RTUINT128U uSrc1 = *puDst;
     9955
     9956    puDst->ai8[ 0] = RT_MIN(uSrc1.ai8[ 0], puSrc->ai8[ 0]);
     9957    puDst->ai8[ 1] = RT_MIN(uSrc1.ai8[ 1], puSrc->ai8[ 1]);
     9958    puDst->ai8[ 2] = RT_MIN(uSrc1.ai8[ 2], puSrc->ai8[ 2]);
     9959    puDst->ai8[ 3] = RT_MIN(uSrc1.ai8[ 3], puSrc->ai8[ 3]);
     9960    puDst->ai8[ 4] = RT_MIN(uSrc1.ai8[ 4], puSrc->ai8[ 4]);
     9961    puDst->ai8[ 5] = RT_MIN(uSrc1.ai8[ 5], puSrc->ai8[ 5]);
     9962    puDst->ai8[ 6] = RT_MIN(uSrc1.ai8[ 6], puSrc->ai8[ 6]);
     9963    puDst->ai8[ 7] = RT_MIN(uSrc1.ai8[ 7], puSrc->ai8[ 7]);
     9964    puDst->ai8[ 8] = RT_MIN(uSrc1.ai8[ 8], puSrc->ai8[ 8]);
     9965    puDst->ai8[ 9] = RT_MIN(uSrc1.ai8[ 9], puSrc->ai8[ 9]);
     9966    puDst->ai8[10] = RT_MIN(uSrc1.ai8[10], puSrc->ai8[10]);
     9967    puDst->ai8[11] = RT_MIN(uSrc1.ai8[11], puSrc->ai8[11]);
     9968    puDst->ai8[12] = RT_MIN(uSrc1.ai8[12], puSrc->ai8[12]);
     9969    puDst->ai8[13] = RT_MIN(uSrc1.ai8[13], puSrc->ai8[13]);
     9970    puDst->ai8[14] = RT_MIN(uSrc1.ai8[14], puSrc->ai8[14]);
     9971    puDst->ai8[15] = RT_MIN(uSrc1.ai8[15], puSrc->ai8[15]);
     9972    RT_NOREF(pFpuState);
     9973}
     9974
     9975
     9976IEM_DECL_IMPL_DEF(void, iemAImpl_pminsd_u128_fallback,(PCX86FXSTATE pFpuState, PRTUINT128U puDst, PCRTUINT128U puSrc))
     9977{
     9978    RTUINT128U uSrc1 = *puDst;
     9979
     9980    puDst->ai32[ 0] = RT_MIN(uSrc1.ai32[ 0], puSrc->ai32[ 0]);
     9981    puDst->ai32[ 1] = RT_MIN(uSrc1.ai32[ 1], puSrc->ai32[ 1]);
     9982    puDst->ai32[ 2] = RT_MIN(uSrc1.ai32[ 2], puSrc->ai32[ 2]);
     9983    puDst->ai32[ 3] = RT_MIN(uSrc1.ai32[ 3], puSrc->ai32[ 3]);
     9984    RT_NOREF(pFpuState);
     9985}
     9986
     9987
     9988IEM_DECL_IMPL_DEF(void, iemAImpl_vpminsb_u128_fallback,(PX86XSAVEAREA pExtState, PRTUINT128U puDst,
     9989                                                        PCRTUINT128U puSrc1, PCRTUINT128U puSrc2))
     9990{
     9991    puDst->ai8[ 0] = RT_MIN(puSrc1->ai8[ 0], puSrc2->ai8[ 0]);
     9992    puDst->ai8[ 1] = RT_MIN(puSrc1->ai8[ 1], puSrc2->ai8[ 1]);
     9993    puDst->ai8[ 2] = RT_MIN(puSrc1->ai8[ 2], puSrc2->ai8[ 2]);
     9994    puDst->ai8[ 3] = RT_MIN(puSrc1->ai8[ 3], puSrc2->ai8[ 3]);
     9995    puDst->ai8[ 4] = RT_MIN(puSrc1->ai8[ 4], puSrc2->ai8[ 4]);
     9996    puDst->ai8[ 5] = RT_MIN(puSrc1->ai8[ 5], puSrc2->ai8[ 5]);
     9997    puDst->ai8[ 6] = RT_MIN(puSrc1->ai8[ 6], puSrc2->ai8[ 6]);
     9998    puDst->ai8[ 7] = RT_MIN(puSrc1->ai8[ 7], puSrc2->ai8[ 7]);
     9999    puDst->ai8[ 8] = RT_MIN(puSrc1->ai8[ 8], puSrc2->ai8[ 8]);
     10000    puDst->ai8[ 9] = RT_MIN(puSrc1->ai8[ 9], puSrc2->ai8[ 9]);
     10001    puDst->ai8[10] = RT_MIN(puSrc1->ai8[10], puSrc2->ai8[10]);
     10002    puDst->ai8[11] = RT_MIN(puSrc1->ai8[11], puSrc2->ai8[11]);
     10003    puDst->ai8[12] = RT_MIN(puSrc1->ai8[12], puSrc2->ai8[12]);
     10004    puDst->ai8[13] = RT_MIN(puSrc1->ai8[13], puSrc2->ai8[13]);
     10005    puDst->ai8[14] = RT_MIN(puSrc1->ai8[14], puSrc2->ai8[14]);
     10006    puDst->ai8[15] = RT_MIN(puSrc1->ai8[15], puSrc2->ai8[15]);
     10007    RT_NOREF(pExtState);
     10008}
     10009
     10010
     10011IEM_DECL_IMPL_DEF(void, iemAImpl_vpminsb_u256_fallback,(PX86XSAVEAREA pExtState, PRTUINT256U puDst,
     10012                                                        PCRTUINT256U puSrc1, PCRTUINT256U puSrc2))
     10013{
     10014    puDst->ai8[ 0] = RT_MIN(puSrc1->ai8[ 0], puSrc2->ai8[ 0]);
     10015    puDst->ai8[ 1] = RT_MIN(puSrc1->ai8[ 1], puSrc2->ai8[ 1]);
     10016    puDst->ai8[ 2] = RT_MIN(puSrc1->ai8[ 2], puSrc2->ai8[ 2]);
     10017    puDst->ai8[ 3] = RT_MIN(puSrc1->ai8[ 3], puSrc2->ai8[ 3]);
     10018    puDst->ai8[ 4] = RT_MIN(puSrc1->ai8[ 4], puSrc2->ai8[ 4]);
     10019    puDst->ai8[ 5] = RT_MIN(puSrc1->ai8[ 5], puSrc2->ai8[ 5]);
     10020    puDst->ai8[ 6] = RT_MIN(puSrc1->ai8[ 6], puSrc2->ai8[ 6]);
     10021    puDst->ai8[ 7] = RT_MIN(puSrc1->ai8[ 7], puSrc2->ai8[ 7]);
     10022    puDst->ai8[ 8] = RT_MIN(puSrc1->ai8[ 8], puSrc2->ai8[ 8]);
     10023    puDst->ai8[ 9] = RT_MIN(puSrc1->ai8[ 9], puSrc2->ai8[ 9]);
     10024    puDst->ai8[10] = RT_MIN(puSrc1->ai8[10], puSrc2->ai8[10]);
     10025    puDst->ai8[11] = RT_MIN(puSrc1->ai8[11], puSrc2->ai8[11]);
     10026    puDst->ai8[12] = RT_MIN(puSrc1->ai8[12], puSrc2->ai8[12]);
     10027    puDst->ai8[13] = RT_MIN(puSrc1->ai8[13], puSrc2->ai8[13]);
     10028    puDst->ai8[14] = RT_MIN(puSrc1->ai8[14], puSrc2->ai8[14]);
     10029    puDst->ai8[15] = RT_MIN(puSrc1->ai8[15], puSrc2->ai8[15]);
     10030    puDst->ai8[16] = RT_MIN(puSrc1->ai8[16], puSrc2->ai8[16]);
     10031    puDst->ai8[17] = RT_MIN(puSrc1->ai8[17], puSrc2->ai8[17]);
     10032    puDst->ai8[18] = RT_MIN(puSrc1->ai8[18], puSrc2->ai8[18]);
     10033    puDst->ai8[19] = RT_MIN(puSrc1->ai8[19], puSrc2->ai8[19]);
     10034    puDst->ai8[20] = RT_MIN(puSrc1->ai8[20], puSrc2->ai8[20]);
     10035    puDst->ai8[21] = RT_MIN(puSrc1->ai8[21], puSrc2->ai8[21]);
     10036    puDst->ai8[22] = RT_MIN(puSrc1->ai8[22], puSrc2->ai8[22]);
     10037    puDst->ai8[23] = RT_MIN(puSrc1->ai8[23], puSrc2->ai8[23]);
     10038    puDst->ai8[24] = RT_MIN(puSrc1->ai8[24], puSrc2->ai8[24]);
     10039    puDst->ai8[25] = RT_MIN(puSrc1->ai8[25], puSrc2->ai8[25]);
     10040    puDst->ai8[26] = RT_MIN(puSrc1->ai8[26], puSrc2->ai8[26]);
     10041    puDst->ai8[27] = RT_MIN(puSrc1->ai8[27], puSrc2->ai8[27]);
     10042    puDst->ai8[28] = RT_MIN(puSrc1->ai8[28], puSrc2->ai8[28]);
     10043    puDst->ai8[29] = RT_MIN(puSrc1->ai8[29], puSrc2->ai8[29]);
     10044    puDst->ai8[30] = RT_MIN(puSrc1->ai8[30], puSrc2->ai8[30]);
     10045    puDst->ai8[31] = RT_MIN(puSrc1->ai8[31], puSrc2->ai8[31]);
     10046    RT_NOREF(pExtState);
     10047}
     10048
     10049
     10050IEM_DECL_IMPL_DEF(void, iemAImpl_vpminsw_u128_fallback,(PX86XSAVEAREA pExtState, PRTUINT128U puDst,
     10051                                                        PCRTUINT128U puSrc1, PCRTUINT128U puSrc2))
     10052{
     10053    puDst->ai16[ 0] = RT_MIN(puSrc1->ai16[ 0], puSrc2->ai16[ 0]);
     10054    puDst->ai16[ 1] = RT_MIN(puSrc1->ai16[ 1], puSrc2->ai16[ 1]);
     10055    puDst->ai16[ 2] = RT_MIN(puSrc1->ai16[ 2], puSrc2->ai16[ 2]);
     10056    puDst->ai16[ 3] = RT_MIN(puSrc1->ai16[ 3], puSrc2->ai16[ 3]);
     10057    puDst->ai16[ 4] = RT_MIN(puSrc1->ai16[ 4], puSrc2->ai16[ 4]);
     10058    puDst->ai16[ 5] = RT_MIN(puSrc1->ai16[ 5], puSrc2->ai16[ 5]);
     10059    puDst->ai16[ 6] = RT_MIN(puSrc1->ai16[ 6], puSrc2->ai16[ 6]);
     10060    puDst->ai16[ 7] = RT_MIN(puSrc1->ai16[ 7], puSrc2->ai16[ 7]);
     10061    RT_NOREF(pExtState);
     10062}
     10063
     10064
     10065IEM_DECL_IMPL_DEF(void, iemAImpl_vpminsw_u256_fallback,(PX86XSAVEAREA pExtState, PRTUINT256U puDst,
     10066                                                        PCRTUINT256U puSrc1, PCRTUINT256U puSrc2))
     10067{
     10068    puDst->ai16[ 0] = RT_MIN(puSrc1->ai16[ 0], puSrc2->ai16[ 0]);
     10069    puDst->ai16[ 1] = RT_MIN(puSrc1->ai16[ 1], puSrc2->ai16[ 1]);
     10070    puDst->ai16[ 2] = RT_MIN(puSrc1->ai16[ 2], puSrc2->ai16[ 2]);
     10071    puDst->ai16[ 3] = RT_MIN(puSrc1->ai16[ 3], puSrc2->ai16[ 3]);
     10072    puDst->ai16[ 4] = RT_MIN(puSrc1->ai16[ 4], puSrc2->ai16[ 4]);
     10073    puDst->ai16[ 5] = RT_MIN(puSrc1->ai16[ 5], puSrc2->ai16[ 5]);
     10074    puDst->ai16[ 6] = RT_MIN(puSrc1->ai16[ 6], puSrc2->ai16[ 6]);
     10075    puDst->ai16[ 7] = RT_MIN(puSrc1->ai16[ 7], puSrc2->ai16[ 7]);
     10076    puDst->ai16[ 8] = RT_MIN(puSrc1->ai16[ 8], puSrc2->ai16[ 8]);
     10077    puDst->ai16[ 9] = RT_MIN(puSrc1->ai16[ 9], puSrc2->ai16[ 9]);
     10078    puDst->ai16[10] = RT_MIN(puSrc1->ai16[10], puSrc2->ai16[10]);
     10079    puDst->ai16[11] = RT_MIN(puSrc1->ai16[11], puSrc2->ai16[11]);
     10080    puDst->ai16[12] = RT_MIN(puSrc1->ai16[12], puSrc2->ai16[12]);
     10081    puDst->ai16[13] = RT_MIN(puSrc1->ai16[13], puSrc2->ai16[13]);
     10082    puDst->ai16[14] = RT_MIN(puSrc1->ai16[14], puSrc2->ai16[14]);
     10083    puDst->ai16[15] = RT_MIN(puSrc1->ai16[15], puSrc2->ai16[15]);
     10084    RT_NOREF(pExtState);
     10085}
     10086
     10087
     10088IEM_DECL_IMPL_DEF(void, iemAImpl_vpminsd_u128_fallback,(PX86XSAVEAREA pExtState, PRTUINT128U puDst,
     10089                                                        PCRTUINT128U puSrc1, PCRTUINT128U puSrc2))
     10090{
     10091    puDst->ai32[ 0] = RT_MIN(puSrc1->ai32[ 0], puSrc2->ai32[ 0]);
     10092    puDst->ai32[ 1] = RT_MIN(puSrc1->ai32[ 1], puSrc2->ai32[ 1]);
     10093    puDst->ai32[ 2] = RT_MIN(puSrc1->ai32[ 2], puSrc2->ai32[ 2]);
     10094    puDst->ai32[ 3] = RT_MIN(puSrc1->ai32[ 3], puSrc2->ai32[ 3]);
     10095    RT_NOREF(pExtState);
     10096}
     10097
     10098
     10099IEM_DECL_IMPL_DEF(void, iemAImpl_vpminsd_u256_fallback,(PX86XSAVEAREA pExtState, PRTUINT256U puDst,
     10100                                                        PCRTUINT256U puSrc1, PCRTUINT256U puSrc2))
     10101{
     10102    puDst->ai32[ 0] = RT_MIN(puSrc1->ai32[ 0], puSrc2->ai32[ 0]);
     10103    puDst->ai32[ 1] = RT_MIN(puSrc1->ai32[ 1], puSrc2->ai32[ 1]);
     10104    puDst->ai32[ 2] = RT_MIN(puSrc1->ai32[ 2], puSrc2->ai32[ 2]);
     10105    puDst->ai32[ 3] = RT_MIN(puSrc1->ai32[ 3], puSrc2->ai32[ 3]);
     10106    puDst->ai32[ 4] = RT_MIN(puSrc1->ai32[ 4], puSrc2->ai32[ 4]);
     10107    puDst->ai32[ 5] = RT_MIN(puSrc1->ai32[ 5], puSrc2->ai32[ 5]);
     10108    puDst->ai32[ 6] = RT_MIN(puSrc1->ai32[ 6], puSrc2->ai32[ 6]);
     10109    puDst->ai32[ 7] = RT_MIN(puSrc1->ai32[ 7], puSrc2->ai32[ 7]);
     10110    RT_NOREF(pExtState);
     10111}
     10112
     10113
     10114/*
    991610115 * PMOVMSKB / VPMOVMSKB
    991710116 */
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsThree0f38.cpp.h

    r96004 r96007  
    541541
    542542/** Opcode 0x66 0x0f 0x38 0x38. */
    543 FNIEMOP_STUB(iemOp_pminsb_Vx_Wx);
     543FNIEMOP_DEF(iemOp_pminsb_Vx_Wx)
     544{
     545    IEMOP_MNEMONIC2(RM, PMINSB, pminsb, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_SSE, IEMOPHINT_IGNORES_OP_SIZES);
     546    return FNIEMOP_CALL_1(iemOpCommonSse41_FullFull_To_Full,
     547                          IEM_SELECT_HOST_OR_FALLBACK(fSse41, iemAImpl_pminsb_u128, iemAImpl_pminsb_u128_fallback));
     548}
     549
     550
    544551/** Opcode 0x66 0x0f 0x38 0x39. */
    545 FNIEMOP_STUB(iemOp_pminsd_Vx_Wx);
     552FNIEMOP_DEF(iemOp_pminsd_Vx_Wx)
     553{
     554    IEMOP_MNEMONIC2(RM, PMINSD, pminsd, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_SSE, IEMOPHINT_IGNORES_OP_SIZES);
     555    return FNIEMOP_CALL_1(iemOpCommonSse41_FullFull_To_Full,
     556                          IEM_SELECT_HOST_OR_FALLBACK(fSse41, iemAImpl_pminsd_u128, iemAImpl_pminsd_u128_fallback));
     557}
    546558
    547559
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h

    r95953 r96007  
    1028810288/*  Opcode 0xf2 0x0f 0xe9 - invalid */
    1028910289
     10290
    1029010291/** Opcode      0x0f 0xea - pminsw Pq, Qq */
    10291 FNIEMOP_STUB(iemOp_pminsw_Pq_Qq);
     10292FNIEMOP_DEF(iemOp_pminsw_Pq_Qq)
     10293{
     10294    IEMOP_MNEMONIC2(RM, PMINSW, pminsw, Pq, Qq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES);
     10295    return FNIEMOP_CALL_1(iemOpCommonMmxSse_FullFull_To_Full, iemAImpl_pminsw_u64);
     10296}
     10297
     10298
    1029210299/** Opcode 0x66 0x0f 0xea - pminsw Vx, Wx */
    10293 FNIEMOP_STUB(iemOp_pminsw_Vx_Wx);
     10300FNIEMOP_DEF(iemOp_pminsw_Vx_Wx)
     10301{
     10302    IEMOP_MNEMONIC2(RM, PMINSW, pminsw, Vx, Wx, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES);
     10303    return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_pminsw_u128);
     10304}
     10305
     10306
    1029410307/*  Opcode 0xf3 0x0f 0xea - invalid */
    1029510308/*  Opcode 0xf2 0x0f 0xea - invalid */
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsVexMap1.cpp.h

    r95989 r96007  
    42364236
    42374237/*  Opcode VEX.0F 0xea - invalid */
     4238
     4239
    42384240/** Opcode VEX.66.0F 0xea - vpminsw Vx, Hx, Wx */
    4239 FNIEMOP_STUB(iemOp_vpminsw_Vx_Hx_Wx);
     4241FNIEMOP_DEF(iemOp_vpminsw_Vx_Hx_Wx)
     4242{
     4243    IEMOP_MNEMONIC3(VEX_RVM, VPMINSW, vpminsw, Vx, Hx, Wx, DISOPTYPE_HARMLESS, 0);
     4244    IEMOPMEDIAF3_INIT_VARS(vpminsw);
     4245    return FNIEMOP_CALL_1(iemOpCommonAvxAvx2_Vx_Hx_Wx, IEM_SELECT_HOST_OR_FALLBACK(fAvx2, &s_Host, &s_Fallback));
     4246}
     4247
     4248
    42404249/*  Opcode VEX.F3.0F 0xea - invalid */
    42414250/*  Opcode VEX.F2.0F 0xea - invalid */
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsVexMap2.cpp.h

    r96004 r96007  
    382382
    383383/** Opcode VEX.66.0F38 0x38. */
    384 FNIEMOP_STUB(iemOp_vpminsb_Vx_Hx_Wx);
     384FNIEMOP_DEF(iemOp_vpminsb_Vx_Hx_Wx)
     385{
     386    IEMOP_MNEMONIC3(VEX_RVM, VPMINSB, vpminsb, Vx, Hx, Wx, DISOPTYPE_HARMLESS, 0);
     387    IEMOPMEDIAF3_INIT_VARS(vpminsb);
     388    return FNIEMOP_CALL_1(iemOpCommonAvxAvx2_Vx_Hx_Wx, IEM_SELECT_HOST_OR_FALLBACK(fAvx2, &s_Host, &s_Fallback));
     389}
     390
     391
    385392/** Opcode VEX.66.0F38 0x39. */
    386 FNIEMOP_STUB(iemOp_vpminsd_Vx_Hx_Wx);
     393FNIEMOP_DEF(iemOp_vpminsd_Vx_Hx_Wx)
     394{
     395    IEMOP_MNEMONIC3(VEX_RVM, VPMINSD, vpminsd, Vx, Hx, Wx, DISOPTYPE_HARMLESS, 0);
     396    IEMOPMEDIAF3_INIT_VARS(vpminsd);
     397    return FNIEMOP_CALL_1(iemOpCommonAvxAvx2_Vx_Hx_Wx, IEM_SELECT_HOST_OR_FALLBACK(fAvx2, &s_Host, &s_Fallback));
     398}
    387399
    388400
  • trunk/src/VBox/VMM/include/IEMInternal.h

    r96004 r96007  
    17781778FNIEMAIMPLMEDIAF2U64     iemAImpl_pmullw_u64, iemAImpl_pmulhw_u64;
    17791779FNIEMAIMPLMEDIAF2U64     iemAImpl_pminub_u64, iemAImpl_pmaxub_u64;
     1780FNIEMAIMPLMEDIAF2U64     iemAImpl_pminsw_u64;
    17801781FNIEMAIMPLMEDIAOPTF2U64  iemAImpl_psllw_u64, iemAImpl_psrlw_u64, iemAImpl_psraw_u64;
    17811782FNIEMAIMPLMEDIAOPTF2U64  iemAImpl_pslld_u64, iemAImpl_psrld_u64, iemAImpl_psrad_u64;
     
    18031804FNIEMAIMPLMEDIAF2U128    iemAImpl_pminud_u128, iemAImpl_pminud_u128_fallback;
    18041805FNIEMAIMPLMEDIAF2U128    iemAImpl_pminuw_u128, iemAImpl_pminuw_u128_fallback;
     1806FNIEMAIMPLMEDIAF2U128    iemAImpl_pminsb_u128, iemAImpl_pminsb_u128_fallback;
     1807FNIEMAIMPLMEDIAF2U128    iemAImpl_pminsd_u128, iemAImpl_pminsd_u128_fallback;
     1808FNIEMAIMPLMEDIAF2U128    iemAImpl_pminsw_u128, iemAImpl_pminsw_u128_fallback;
    18051809FNIEMAIMPLMEDIAF2U128    iemAImpl_pmaxub_u128;
    18061810FNIEMAIMPLMEDIAF2U128    iemAImpl_pmaxud_u128, iemAImpl_pmaxud_u128_fallback;
     
    18361840FNIEMAIMPLMEDIAF3U128    iemAImpl_vpminuw_u128,    iemAImpl_vpminuw_u128_fallback;
    18371841FNIEMAIMPLMEDIAF3U128    iemAImpl_vpminud_u128,    iemAImpl_vpminud_u128_fallback;
     1842FNIEMAIMPLMEDIAF3U128    iemAImpl_vpminsb_u128,    iemAImpl_vpminsb_u128_fallback;
     1843FNIEMAIMPLMEDIAF3U128    iemAImpl_vpminsw_u128,    iemAImpl_vpminsw_u128_fallback;
     1844FNIEMAIMPLMEDIAF3U128    iemAImpl_vpminsd_u128,    iemAImpl_vpminsd_u128_fallback;
    18381845FNIEMAIMPLMEDIAF3U128    iemAImpl_vpmaxub_u128,    iemAImpl_vpmaxub_u128_fallback;
    18391846FNIEMAIMPLMEDIAF3U128    iemAImpl_vpmaxuw_u128,    iemAImpl_vpmaxuw_u128_fallback;
     
    18681875FNIEMAIMPLMEDIAF3U256    iemAImpl_vpminuw_u256,    iemAImpl_vpminuw_u256_fallback;
    18691876FNIEMAIMPLMEDIAF3U256    iemAImpl_vpminud_u256,    iemAImpl_vpminud_u256_fallback;
     1877FNIEMAIMPLMEDIAF3U256    iemAImpl_vpminsb_u256,    iemAImpl_vpminsb_u256_fallback;
     1878FNIEMAIMPLMEDIAF3U256    iemAImpl_vpminsw_u256,    iemAImpl_vpminsw_u256_fallback;
     1879FNIEMAIMPLMEDIAF3U256    iemAImpl_vpminsd_u256,    iemAImpl_vpminsd_u256_fallback;
    18701880FNIEMAIMPLMEDIAF3U256    iemAImpl_vpmaxub_u256,    iemAImpl_vpmaxub_u256_fallback;
    18711881FNIEMAIMPLMEDIAF3U256    iemAImpl_vpmaxuw_u256,    iemAImpl_vpmaxuw_u256_fallback;
  • trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp

    r95951 r96007  
    440440#define iemAImpl_pmaxub_u64             NULL
    441441#define iemAImpl_pminub_u64             NULL
     442#define iemAImpl_pminsw_u64             NULL
    442443
    443444#define iemAImpl_pmaxub_u128            NULL
    444445#define iemAImpl_pminub_u128            NULL
     446#define iemAImpl_pminsw_u128            NULL
    445447
    446448/** @}  */
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