VirtualBox

Changeset 66992 in vbox for trunk/src/VBox/ValidationKit


Ignore:
Timestamp:
May 19, 2017 10:25:58 PM (8 years ago)
Author:
vboxsync
Message:

IEM: Implemented vmovntps Mps,Vps (VEX.0F 2b) and vmovntpd Mpd,Vpd (VEX.66.0F 2b).

Location:
trunk/src/VBox/ValidationKit/bootsectors
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1-template.c

    r66991 r66992  
    27302730/**
    27312731 * Wip - VEX.W ignored.
     2732 */
     2733static unsigned BS3_NEAR_CODE
     2734Bs3Cg1EncodeNext_VEX_MODRM_VsomethingWO_Msomething_Wip_OR_ViceVersa(PBS3CG1STATE pThis, unsigned iEncoding)
     2735{
     2736    unsigned off;
     2737    switch (iEncoding)
     2738    {
     2739        case 20: /* Switch to 256-bit operands. */
     2740            pThis->aOperands[pThis->iRegOp].idxFieldBase = BS3CG1DST_YMM0;
     2741            pThis->aOperands[pThis->iRegOp].cbOp = 32;
     2742            pThis->aOperands[pThis->iRmOp ].cbOp = 32;
     2743            /* fall thru */
     2744        case 0:
     2745            off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, iEncoding >= 20 /*L*/, 1 /*~R*/);
     2746            off = Bs3Cg1InsertOpcodes(pThis, off);
     2747            off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 0, 0);
     2748            iEncoding += !BS3CG1_IS_64BIT_TARGET(pThis) ? 1 : 0;
     2749            break;
     2750#if ARCH_BITS == 64
     2751        case 1:
     2752        case 21:
     2753            off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, iEncoding >= 20 /*L*/, 0 /*~R*/);
     2754            off = Bs3Cg1InsertOpcodes(pThis, off);
     2755            off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 7 + 8, 0);
     2756            break;
     2757#endif
     2758        case 2:
     2759        case 22:
     2760            off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xe /*~V*/, iEncoding >= 20 /*L*/, 1 /*~R*/);
     2761            off = Bs3Cg1InsertOpcodes(pThis, off);
     2762            off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 0, 0);
     2763            pThis->fInvalidEncoding = true;
     2764            break;
     2765        case 3:
     2766        case 23:
     2767            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, iEncoding >= 20 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
     2768            off = Bs3Cg1InsertOpcodes(pThis, off);
     2769            off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 1, 0);
     2770            break;
     2771        case 4:
     2772        case 24:
     2773            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, iEncoding >= 20 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 1 /*W-ignored*/);
     2774            off = Bs3Cg1InsertOpcodes(pThis, off);
     2775            off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 5, 0);
     2776            iEncoding += !BS3CG1_IS_64BIT_TARGET(pThis) ? 3 : 0;
     2777            break;
     2778#if ARCH_BITS == 64
     2779        case 5:
     2780        case 25:
     2781            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, iEncoding >= 20 /*L*/, 0 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
     2782            off = Bs3Cg1InsertOpcodes(pThis, off);
     2783            off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 5+8, 0);
     2784            break;
     2785        case 6:
     2786        case 26:
     2787            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, iEncoding >= 20 /*L*/, 1 /*~R*/, 1 /*~X*/, 0 /*~B-ignored*/, 0 /*W*/);
     2788            off = Bs3Cg1InsertOpcodes(pThis, off);
     2789            off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 1, 0);
     2790            break;
     2791        case 7:
     2792        case 27:
     2793            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, iEncoding >= 20 /*L*/, 1 /*~R*/, 0 /*~X-ignored*/, 1 /*~B*/, 0 /*W*/);
     2794            off = Bs3Cg1InsertOpcodes(pThis, off);
     2795            off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 2, 0);
     2796            break;
     2797#endif
     2798        case 8:
     2799        case 28:
     2800            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0 /*~V*/, iEncoding >= 20 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
     2801            off = Bs3Cg1InsertOpcodes(pThis, off);
     2802            off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 5, 0);
     2803            pThis->fInvalidEncoding = true;
     2804            break;
     2805        case 9:
     2806        case 29:
     2807            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 7 /*~V*/, iEncoding >= 20 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
     2808            off = Bs3Cg1InsertOpcodes(pThis, off);
     2809            off = Bs3Cfg1EncodeMemMod0DispWithRegFieldAndDefaults(pThis, false, off, 2, 0);
     2810            pThis->fInvalidEncoding = true;
     2811            iEncoding += 10;
     2812            break;
     2813
     2814        default:
     2815            return 0;
     2816    }
     2817    pThis->cbCurInstr = off;
     2818    return iEncoding + 1;
     2819}
     2820
     2821
     2822
     2823/**
     2824 * Wip - VEX.W ignored.
    27322825 * Lig - VEX.L ignored.
    27332826 */
     
    39214014            pThis->aOperands[0].enmLocation  = BS3CG1OPLOC_MEM_WO;
    39224015            pThis->aOperands[1].enmLocation  = BS3CG1OPLOC_CTX;
    3923             pThis->aOperands[0].idxFieldBase = BS3CG1DST_INVALID;
    39244016            pThis->aOperands[1].idxFieldBase = BS3CG1DST_XMM0_LO;
    39254017            break;
     
    39354027            pThis->aOperands[0].idxFieldBase = BS3CG1DST_INVALID;
    39364028            pThis->aOperands[1].idxFieldBase = BS3CG1DST_XMM0_LO;
     4029            break;
     4030
     4031        case BS3CG1ENC_VEX_MODRM_Mps_WO_Vps:
     4032        case BS3CG1ENC_VEX_MODRM_Mpd_WO_Vpd:
     4033            pThis->pfnEncoder        = Bs3Cg1EncodeNext_VEX_MODRM_VsomethingWO_Msomething_Wip_OR_ViceVersa;
     4034            pThis->iRmOp             = 0;
     4035            pThis->iRegOp            = 1;
     4036            pThis->aOperands[0].cbOp = 16;
     4037            pThis->aOperands[1].cbOp = 16;
     4038            pThis->aOperands[0].enmLocation  = BS3CG1OPLOC_MEM_WO;
     4039            pThis->aOperands[1].enmLocation  = BS3CG1OPLOC_CTX;
     4040            pThis->aOperands[1].idxFieldBase = BS3CG1DST_XMM0;
    39374041            break;
    39384042
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1.h

    r66991 r66992  
    168168    BS3CG1ENC_VEX_MODRM_Md_WO_Vss,
    169169    BS3CG1ENC_VEX_MODRM_Mq_WO_Vsd,
     170    BS3CG1ENC_VEX_MODRM_Mps_WO_Vps,
     171    BS3CG1ENC_VEX_MODRM_Mpd_WO_Vpd,
    170172    BS3CG1ENC_VEX_MODRM_Uss_WO_HssHi_Vss,
    171173    BS3CG1ENC_VEX_MODRM_Usd_WO_HsdHi_Vsd,
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