VirtualBox

Ignore:
Timestamp:
May 16, 2017 1:29:44 PM (8 years ago)
Author:
vboxsync
Message:

IEM: Implemented vmovups Wps,Vps (VEX.0F 11). Needs more work on the test side.

File:
1 edited

Legend:

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

    r66906 r66909  
    104104
    105105/**
     106 * Encoder callback.
     107 * @returns Next encoding.  If equal or less to @a iEncoding, no
     108 *          further encodings are available for testing.
     109 * @param   pThis       The state.
     110 * @param   iEncoding   The encoding.
     111 */
     112typedef BS3_DECL_NEAR(unsigned) FNBS3CG1ENCODER(struct BS3CG1STATE *pThis, unsigned iEncoding);
     113/** Pointer to a encoder callback. */
     114typedef FNBS3CG1ENCODER *PFNBS3CG1ENCODER;
     115
     116
     117/**
    106118 * The state.
    107119 */
     
    138150    /** Opcode bytes. */
    139151    uint8_t                 abOpcodes[4];
     152    /** The instruction encoder. */
     153    PFNBS3CG1ENCODER        pfnEncoder;
    140154
    141155    /** The length of the mnemonic. */
     
    21482162
    21492163
    2150 static unsigned Bs3Cg1EncodeNext_VEX_MODRM_Vps_WO_Wps__OR__VEX_MODRM_Vpd_WO_Wpd(PBS3CG1STATE pThis, unsigned iEncoding)
     2164static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_VEX_MODRM_Vps_WO_Wps__OR__VEX_MODRM_Vpd_WO_Wpd(PBS3CG1STATE pThis, unsigned iEncoding)
    21512165{
    21522166    unsigned off;
     
    23902404
    23912405
    2392 static unsigned Bs3Cg1EncodeNext_VEX_MODRM_VsomethingWO_HdqCsomething_Usomething(PBS3CG1STATE pThis, unsigned iEncoding)
     2406static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_VEX_MODRM_VsomethingWO_HdqCsomething_Usomething(PBS3CG1STATE pThis, unsigned iEncoding)
    23932407{
    23942408    unsigned off;
     
    24732487
    24742488
    2475 static unsigned Bs3Cg1EncodeNext_VEX_MODRM_VsomethingWO_Msomething_Wip_Lig(PBS3CG1STATE pThis, unsigned iEncoding)
     2489static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_VEX_MODRM_VsomethingWO_Msomething_Wip_Lig(PBS3CG1STATE pThis, unsigned iEncoding)
    24762490{
    24772491    unsigned off;
     
    26792693}
    26802694
     2695static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_VEX_MODRM_WsomethingWO_Vsomething_Wip(PBS3CG1STATE pThis, unsigned iEncoding)
     2696{
     2697    unsigned off;
     2698    switch (iEncoding)
     2699    {
     2700        /* 128-bit wide stuff goes first, then we'll update the operand widths afterwards. */
     2701        case 0:
     2702            off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/);
     2703            off = Bs3Cg1InsertOpcodes(pThis, off);
     2704            pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 1, 0);
     2705            pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 0;
     2706            pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 1;
     2707            break;
     2708
     2709        case 1:
     2710            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
     2711            off = Bs3Cg1InsertOpcodes(pThis, off);
     2712            pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5);
     2713            pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 5;
     2714            pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 4;
     2715            break;
     2716        case 2:
     2717            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 1 /*W - ignored*/);
     2718            off = Bs3Cg1InsertOpcodes(pThis, off);
     2719            pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 5, 4);
     2720            pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 4;
     2721            pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 5;
     2722            break;
     2723        case 3:
     2724            off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/);
     2725            off = Bs3Cg1InsertOpcodes(pThis, off);
     2726            off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 16, 0, BS3CG1OPLOC_MEM_WO);
     2727            pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 2;
     2728            break;
     2729        case 4:
     2730            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
     2731            off = Bs3Cg1InsertOpcodes(pThis, off);
     2732            off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 16, 0, BS3CG1OPLOC_MEM_WO);
     2733            pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 3;
     2734            break;
     2735        case 5:
     2736            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 1 /*W - ignored */);
     2737            off = Bs3Cg1InsertOpcodes(pThis, off);
     2738            off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 16, 0, BS3CG1OPLOC_MEM_WO);
     2739            pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 3;
     2740            break;
     2741        case 6:
     2742            off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/);
     2743            off = Bs3Cg1InsertOpcodes(pThis, off);
     2744            off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 16, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_WO);
     2745            if (!Bs3Cg1XcptTypeIsUnaligned(pThis->enmXcptType))
     2746                pThis->bAlignmentXcpt = X86_XCPT_GP;
     2747            pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 3;
     2748            break;
     2749        case 7:
     2750            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
     2751            off = Bs3Cg1InsertOpcodes(pThis, off);
     2752            off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 16, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_WO);
     2753            if (!Bs3Cg1XcptTypeIsUnaligned(pThis->enmXcptType))
     2754                pThis->bAlignmentXcpt = X86_XCPT_GP;
     2755            pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 3;
     2756            break;
     2757        /* 128-bit invalid encodings: */
     2758        case 8:
     2759            off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xe /*~V*/, 0 /*L*/, 1 /*~R*/); /* Bad V value */
     2760            off = Bs3Cg1InsertOpcodes(pThis, off);
     2761            pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 1, 0);
     2762            pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 0;
     2763            pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 1;
     2764            pThis->aOperands[pThis->iRmOp ].enmLocation = BS3CG1OPLOC_CTX_ZX_VLMAX;
     2765            pThis->fInvalidEncoding = true;
     2766            break;
     2767        case 9:
     2768            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0 /*~V*/, 0 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
     2769            off = Bs3Cg1InsertOpcodes(pThis, off);
     2770            pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5);
     2771            pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 5;
     2772            pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 4;
     2773            pThis->fInvalidEncoding = true;
     2774            iEncoding = 20-1;
     2775            break;
     2776
     2777        case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19:
     2778            /* fall thru */
     2779
     2780            /* 256-bit encodings: */
     2781        case 20:
     2782            iEncoding = 20;
     2783            pThis->aOperands[pThis->iRmOp ].cbOp         = 32;
     2784            pThis->aOperands[pThis->iRmOp ].idxFieldBase = BS3CG1DST_YMM0;
     2785            pThis->aOperands[pThis->iRmOp ].enmLocation  = BS3CG1OPLOC_CTX_ZX_VLMAX;
     2786            pThis->aOperands[pThis->iRegOp].cbOp         = 32;
     2787            pThis->aOperands[pThis->iRegOp].idxFieldBase = BS3CG1DST_YMM0;
     2788
     2789            off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/);
     2790            off = Bs3Cg1InsertOpcodes(pThis, off);
     2791            pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 1, 0);
     2792            pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 0;
     2793            pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 1;
     2794            break;
     2795
     2796#if 0
     2797        else if (iEncoding == 10)
     2798        {
     2799            off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/);
     2800            off = Bs3Cg1InsertOpcodes(pThis, off);
     2801            pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 1, 0);
     2802            pThis->aOperands[pThis->iRmOp].cbOp      = 32;
     2803            pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM0;
     2804            pThis->aOperands[pThis->iRegOp].cbOp     = 32;
     2805            pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM1;
     2806        }
     2807        else if (iEncoding == 11)
     2808        {
     2809            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
     2810            off = Bs3Cg1InsertOpcodes(pThis, off);
     2811            pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5);
     2812            pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM5;
     2813            pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM4;
     2814        }
     2815        else if (iEncoding == 12)
     2816        {
     2817            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 1 /*W - ignored*/);
     2818            off = Bs3Cg1InsertOpcodes(pThis, off);
     2819            pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 5, 4);
     2820            pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM4;
     2821            pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM5;
     2822        }
     2823        else if (iEncoding == 13)
     2824        {
     2825            off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/);
     2826            off = Bs3Cg1InsertOpcodes(pThis, off);
     2827            off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 32, 0, BS3CG1OPLOC_MEM);
     2828            pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM2;
     2829        }
     2830        else if (iEncoding == 14)
     2831        {
     2832            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
     2833            off = Bs3Cg1InsertOpcodes(pThis, off);
     2834            off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 32, 0, BS3CG1OPLOC_MEM);
     2835            pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM3;
     2836        }
     2837        else if (iEncoding == 15)
     2838        {
     2839            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 1 /*W - ignored */);
     2840            off = Bs3Cg1InsertOpcodes(pThis, off);
     2841            off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 32, 0, BS3CG1OPLOC_MEM);
     2842            pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM3;
     2843        }
     2844        else if (iEncoding == 16)
     2845        {
     2846            off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/);
     2847            off = Bs3Cg1InsertOpcodes(pThis, off);
     2848            off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 32, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM);
     2849            if (!Bs3Cg1XcptTypeIsUnaligned(pThis->enmXcptType))
     2850                pThis->bAlignmentXcpt = X86_XCPT_GP;
     2851            pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM3;
     2852        }
     2853        else if (iEncoding == 17)
     2854        {
     2855            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
     2856            off = Bs3Cg1InsertOpcodes(pThis, off);
     2857            off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 32, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM);
     2858            if (!Bs3Cg1XcptTypeIsUnaligned(pThis->enmXcptType))
     2859                pThis->bAlignmentXcpt = X86_XCPT_GP;
     2860            pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM3;
     2861        }
     2862    /* 256-bit invalid encodings: */
     2863    else if (iEncoding == 18)
     2864    {
     2865        off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xe /*~V - invalid */, 1 /*L*/, 1 /*~R*/); /* Bad V value */
     2866        off = Bs3Cg1InsertOpcodes(pThis, off);
     2867        pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 1, 0);
     2868        pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM0;
     2869        pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM1;
     2870        pThis->fInvalidEncoding = true;
     2871    }
     2872    else if (iEncoding == 19)
     2873    {
     2874        off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0 /*~V - invalid */, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
     2875        off = Bs3Cg1InsertOpcodes(pThis, off);
     2876        pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5);
     2877        pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM5;
     2878        pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM4;
     2879        pThis->fInvalidEncoding = true;
     2880    }
     2881    else if (iEncoding == 20)
     2882    {
     2883        pThis->abCurInstr[0] = P_RN;
     2884        off = Bs3Cg1InsertVex3bPrefix(pThis, 1 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
     2885        off = Bs3Cg1InsertOpcodes(pThis, off);
     2886        pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5);
     2887        pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM5;
     2888        pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM4;
     2889        pThis->fInvalidEncoding = true;
     2890    }
     2891    else if (iEncoding == 21)
     2892    {
     2893        pThis->abCurInstr[0] = P_RZ;
     2894        off = Bs3Cg1InsertVex3bPrefix(pThis, 1 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
     2895        off = Bs3Cg1InsertOpcodes(pThis, off);
     2896        pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5);
     2897        pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM5;
     2898        pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM4;
     2899        pThis->fInvalidEncoding = true;
     2900    }
     2901    else if (iEncoding == 22)
     2902    {
     2903        pThis->abCurInstr[0] = P_OZ;
     2904        off = Bs3Cg1InsertVex3bPrefix(pThis, 1 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
     2905        off = Bs3Cg1InsertOpcodes(pThis, off);
     2906        pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5);
     2907        pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM5;
     2908        pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM4;
     2909        pThis->fInvalidEncoding = true;
     2910    }
     2911    else if (iEncoding == 23)
     2912    {
     2913        pThis->abCurInstr[0] = P_LK;
     2914        off = Bs3Cg1InsertVex3bPrefix(pThis, 1 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
     2915        off = Bs3Cg1InsertOpcodes(pThis, off);
     2916        pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5);
     2917        pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM5;
     2918        pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM4;
     2919        pThis->fInvalidEncoding = true;
     2920    }
     2921#if ARCH_BITS == 64
     2922    /* 64-bit mode registers */
     2923    else if (BS3_MODE_IS_64BIT_CODE(pThis->bMode))
     2924    {
     2925        if (iEncoding == 24)
     2926        {
     2927            off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 0 /*~R*/);
     2928            off = Bs3Cg1InsertOpcodes(pThis, off);
     2929            pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 3, 4);
     2930            pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM4;
     2931            pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM11;
     2932        }
     2933        else if (iEncoding == 25)
     2934        {
     2935            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 0 /*~R*/, 1 /*~X*/, 0 /*~B*/, 0 /*W*/);
     2936            off = Bs3Cg1InsertOpcodes(pThis, off);
     2937            pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 1, 4);
     2938            pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM12;
     2939            pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM9;
     2940        }
     2941        else
     2942            return 0;
     2943    }
     2944#endif
     2945    else
     2946        return 0;
     2947#endif
     2948
     2949        default:
     2950            return 0;
     2951    }
     2952
     2953    pThis->cbCurInstr = off;
     2954    return iEncoding + 1;
     2955}
     2956
     2957
    26812958#endif /* BS3CG1_WITH_VEX */
    26822959
     
    26962973{
    26972974    pThis->bAlignmentXcpt = UINT8_MAX;
     2975    if (pThis->pfnEncoder)
     2976        return pThis->pfnEncoder(pThis, iEncoding);
    26982977
    26992978    switch (pThis->enmEncoding)
     
    27713050         */
    27723051#ifdef BS3CG1_WITH_VEX
    2773         case BS3CG1ENC_VEX_MODRM_Vps_WO_Wps:
    2774         case BS3CG1ENC_VEX_MODRM_Vpd_WO_Wpd:
    2775             return Bs3Cg1EncodeNext_VEX_MODRM_Vps_WO_Wps__OR__VEX_MODRM_Vpd_WO_Wpd(pThis, iEncoding);
    2776 
    2777         case BS3CG1ENC_VEX_MODRM_Vss_WO_HdqCss_Uss:
    2778         case BS3CG1ENC_VEX_MODRM_Vsd_WO_HdqCsd_Usd:
    2779             return Bs3Cg1EncodeNext_VEX_MODRM_VsomethingWO_HdqCsomething_Usomething(pThis, iEncoding);
    2780 
    2781         case BS3CG1ENC_VEX_MODRM_VsdZx_WO_Mq:
    2782         case BS3CG1ENC_VEX_MODRM_VssZx_WO_Wss:
     3052        case BS3CG1ENC_VEX_MODRM_VssZx_WO_Md:
    27833053            return Bs3Cg1EncodeNext_VEX_MODRM_VsomethingWO_Msomething_Wip_Lig(pThis, iEncoding);
    27843054
     
    28193089    pThis->fSameRingNotOkay = false;
    28203090    pThis->cbOperand        = 0;
     3091    pThis->pfnEncoder       = NULL;
    28213092
    28223093    switch (pThis->enmEncoding)
     
    30203291        case BS3CG1ENC_VEX_MODRM_Vps_WO_Wps:
    30213292        case BS3CG1ENC_VEX_MODRM_Vpd_WO_Wpd:
     3293            pThis->pfnEncoder        = Bs3Cg1EncodeNext_VEX_MODRM_Vps_WO_Wps__OR__VEX_MODRM_Vpd_WO_Wpd;
    30223294            pThis->iRmOp             = 1;
    30233295            pThis->iRegOp            = 0;
     
    30283300            break;
    30293301
    3030         case BS3CG1ENC_VEX_MODRM_VssZx_WO_Wss:
     3302        case BS3CG1ENC_VEX_MODRM_VssZx_WO_Md:
     3303            pThis->pfnEncoder        = Bs3Cg1EncodeNext_VEX_MODRM_VsomethingWO_Msomething_Wip_Lig;
    30313304            pThis->iRmOp             = 1;
    30323305            pThis->iRegOp            = 0;
     
    30403313
    30413314        case BS3CG1ENC_VEX_MODRM_Vss_WO_HdqCss_Uss:
     3315            pThis->pfnEncoder        = Bs3Cg1EncodeNext_VEX_MODRM_VsomethingWO_HdqCsomething_Usomething;
    30423316            pThis->iRegOp            = 0;
    30433317            pThis->iRmOp             = 2;
     
    30543328
    30553329        case BS3CG1ENC_VEX_MODRM_VsdZx_WO_Mq:
     3330            pThis->pfnEncoder        = Bs3Cg1EncodeNext_VEX_MODRM_VsomethingWO_Msomething_Wip_Lig;
    30563331            pThis->iRmOp             = 1;
    30573332            pThis->iRegOp            = 0;
     
    30653340
    30663341        case BS3CG1ENC_VEX_MODRM_Vsd_WO_HdqCsd_Usd:
     3342            pThis->pfnEncoder        = Bs3Cg1EncodeNext_VEX_MODRM_VsomethingWO_HdqCsomething_Usomething;
    30673343            pThis->iRegOp            = 0;
    30683344            pThis->iRmOp             = 2;
     
    30763352            pThis->aOperands[1].idxFieldBase = BS3CG1DST_XMM0;
    30773353            pThis->aOperands[2].idxFieldBase = BS3CG1DST_XMM0_LO;
     3354            break;
     3355
     3356        case BS3CG1ENC_VEX_MODRM_Wps_WO_Vps:
     3357            pThis->pfnEncoder        = Bs3Cg1EncodeNext_VEX_MODRM_WsomethingWO_Vsomething_Wip;
     3358            pThis->iRmOp             = 0;
     3359            pThis->iRegOp            = 1;
     3360            pThis->aOperands[0].cbOp = 16;
     3361            pThis->aOperands[1].cbOp = 16;
     3362            pThis->aOperands[0].enmLocation  = BS3CG1OPLOC_CTX_ZX_VLMAX;
     3363            pThis->aOperands[1].enmLocation  = BS3CG1OPLOC_CTX;
     3364            pThis->aOperands[0].idxFieldBase = BS3CG1DST_XMM0;
     3365            pThis->aOperands[1].idxFieldBase = BS3CG1DST_XMM0;
    30783366            break;
    30793367
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