VirtualBox

Ignore:
Timestamp:
Mar 29, 2017 8:03:19 AM (8 years ago)
Author:
vboxsync
Message:

IEM: Implemented movq Wq,Vq (66 0f d6).

File:
1 edited

Legend:

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

    r66317 r66323  
    470470    /* [BS3CG1DST_XMM14_HI] = */    8,
    471471    /* [BS3CG1DST_XMM15_HI] = */    8,
     472    /* [BS3CG1DST_XMM0_LO_ZX] = */  8,
     473    /* [BS3CG1DST_XMM1_LO_ZX] = */  8,
     474    /* [BS3CG1DST_XMM2_LO_ZX] = */  8,
     475    /* [BS3CG1DST_XMM3_LO_ZX] = */  8,
     476    /* [BS3CG1DST_XMM4_LO_ZX] = */  8,
     477    /* [BS3CG1DST_XMM5_LO_ZX] = */  8,
     478    /* [BS3CG1DST_XMM6_LO_ZX] = */  8,
     479    /* [BS3CG1DST_XMM7_LO_ZX] = */  8,
     480    /* [BS3CG1DST_XMM8_LO_ZX] = */  8,
     481    /* [BS3CG1DST_XMM9_LO_ZX] = */  8,
     482    /* [BS3CG1DST_XMM10_LO_ZX] = */ 8,
     483    /* [BS3CG1DST_XMM11_LO_ZX] = */ 8,
     484    /* [BS3CG1DST_XMM12_LO_ZX] = */ 8,
     485    /* [BS3CG1DST_XMM13_LO_ZX] = */ 8,
     486    /* [BS3CG1DST_XMM14_LO_ZX] = */ 8,
     487    /* [BS3CG1DST_XMM15_LO_ZX] = */ 8,
    472488    /* [BS3CG1DST_XMM0_DW0] = */    4,
    473489    /* [BS3CG1DST_XMM1_DW0] = */    4,
     
    683699    /* [BS3CG1DST_XMM14_HI] = */    sizeof(BS3REGCTX) + RT_OFFSETOF(BS3EXTCTX, Ctx.x87.aXMM[14]) + sizeof(uint64_t),
    684700    /* [BS3CG1DST_XMM15_HI] = */    sizeof(BS3REGCTX) + RT_OFFSETOF(BS3EXTCTX, Ctx.x87.aXMM[15]) + sizeof(uint64_t),
     701    /* [BS3CG1DST_XMM0_LO_ZX] = */  sizeof(BS3REGCTX) + RT_OFFSETOF(BS3EXTCTX, Ctx.x87.aXMM[0]),
     702    /* [BS3CG1DST_XMM1_LO_ZX] = */  sizeof(BS3REGCTX) + RT_OFFSETOF(BS3EXTCTX, Ctx.x87.aXMM[1]),
     703    /* [BS3CG1DST_XMM2_LO_ZX] = */  sizeof(BS3REGCTX) + RT_OFFSETOF(BS3EXTCTX, Ctx.x87.aXMM[2]),
     704    /* [BS3CG1DST_XMM3_LO_ZX] = */  sizeof(BS3REGCTX) + RT_OFFSETOF(BS3EXTCTX, Ctx.x87.aXMM[3]),
     705    /* [BS3CG1DST_XMM4_LO_ZX] = */  sizeof(BS3REGCTX) + RT_OFFSETOF(BS3EXTCTX, Ctx.x87.aXMM[4]),
     706    /* [BS3CG1DST_XMM5_LO_ZX] = */  sizeof(BS3REGCTX) + RT_OFFSETOF(BS3EXTCTX, Ctx.x87.aXMM[5]),
     707    /* [BS3CG1DST_XMM6_LO_ZX] = */  sizeof(BS3REGCTX) + RT_OFFSETOF(BS3EXTCTX, Ctx.x87.aXMM[6]),
     708    /* [BS3CG1DST_XMM7_LO_ZX] = */  sizeof(BS3REGCTX) + RT_OFFSETOF(BS3EXTCTX, Ctx.x87.aXMM[7]),
     709    /* [BS3CG1DST_XMM8_LO_ZX] = */  sizeof(BS3REGCTX) + RT_OFFSETOF(BS3EXTCTX, Ctx.x87.aXMM[8]),
     710    /* [BS3CG1DST_XMM9_LO_ZX] = */  sizeof(BS3REGCTX) + RT_OFFSETOF(BS3EXTCTX, Ctx.x87.aXMM[9]),
     711    /* [BS3CG1DST_XMM10_LO_ZX] = */ sizeof(BS3REGCTX) + RT_OFFSETOF(BS3EXTCTX, Ctx.x87.aXMM[10]),
     712    /* [BS3CG1DST_XMM11_LO_ZX] = */ sizeof(BS3REGCTX) + RT_OFFSETOF(BS3EXTCTX, Ctx.x87.aXMM[11]),
     713    /* [BS3CG1DST_XMM12_LO_ZX] = */ sizeof(BS3REGCTX) + RT_OFFSETOF(BS3EXTCTX, Ctx.x87.aXMM[12]),
     714    /* [BS3CG1DST_XMM13_LO_ZX] = */ sizeof(BS3REGCTX) + RT_OFFSETOF(BS3EXTCTX, Ctx.x87.aXMM[13]),
     715    /* [BS3CG1DST_XMM14_LO_ZX] = */ sizeof(BS3REGCTX) + RT_OFFSETOF(BS3EXTCTX, Ctx.x87.aXMM[14]),
     716    /* [BS3CG1DST_XMM15_LO_ZX] = */ sizeof(BS3REGCTX) + RT_OFFSETOF(BS3EXTCTX, Ctx.x87.aXMM[15]),
    685717    /* [BS3CG1DST_XMM0_DW0] = */    sizeof(BS3REGCTX) + RT_OFFSETOF(BS3EXTCTX, Ctx.x87.aXMM[0]),
    686718    /* [BS3CG1DST_XMM1_DW0] = */    sizeof(BS3REGCTX) + RT_OFFSETOF(BS3EXTCTX, Ctx.x87.aXMM[1]),
     
    723755#ifdef BS3CG1_DEBUG_CTX_MOD
    724756/** Destination field names. */
    725 static const struct { char sz[10]; } g_aszBs3Cg1DstFields[] =
     757static const struct { char sz[12]; } g_aszBs3Cg1DstFields[] =
    726758{
    727759    { "INVALID" },
     
    896928    { "XMM14_HI" },
    897929    { "XMM15_HI" },
     930    { "XMM0_LO_ZX" },
     931    { "XMM1_LO_ZX" },
     932    { "XMM2_LO_ZX" },
     933    { "XMM3_LO_ZX" },
     934    { "XMM4_LO_ZX" },
     935    { "XMM5_LO_ZX" },
     936    { "XMM6_LO_ZX" },
     937    { "XMM7_LO_ZX" },
     938    { "XMM8_LO_ZX" },
     939    { "XMM9_LO_ZX" },
     940    { "XMM10_LO_ZX" },
     941    { "XMM11_LO_ZX" },
     942    { "XMM12_LO_ZX" },
     943    { "XMM13_LO_ZX" },
     944    { "XMM14_LO_ZX" },
     945    { "XMM15_LO_ZX" },
    898946    { "XMM0_DW0" },
    899947    { "XMM1_DW0" },
     
    13621410            break;
    13631411
     1412        case BS3CG1ENC_MODRM_WqZxReg_Vq:
     1413            if (iEncoding == 0)
     1414            {
     1415                off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0));
     1416                pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 1, 0);
     1417                pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_XMM0_LO_ZX;
     1418                pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM1_LO;
     1419            }
     1420            else if (iEncoding == 1)
     1421            {
     1422                pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM2_LO;
     1423                off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0));
     1424                off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 8, 0, BS3CG1OPLOC_MEM_RW);
     1425            }
     1426            else if (iEncoding == 2)
     1427            {
     1428                pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM3_LO;
     1429                off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0));
     1430                off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 8, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_RW);
     1431            }
     1432            else
     1433                break;
     1434            pThis->cbCurInstr = off;
     1435            iEncoding++;
     1436            break;
     1437
    13641438        case BS3CG1ENC_MODRM_Vq_UqHi:
    13651439            if (iEncoding == 0)
     
    16871761
    16881762        case BS3CG1ENC_MODRM_Wsd_Vsd:
     1763        case BS3CG1ENC_MODRM_WqZxReg_Vq:
    16891764            pThis->iRmOp             = 0;
    16901765            pThis->iRegOp            = 1;
     
    23082383
    23092384                case 8:
     2385                    if ((unsigned)(idxField - BS3CG1DST_XMM0_LO_ZX) <= (unsigned)(BS3CG1DST_XMM15_LO_ZX - BS3CG1DST_XMM0_LO_ZX))
     2386                        PtrField.pu64[1] = 0;
    23102387                    switch (bOpcode & BS3CG1_CTXOP_OPERATOR_MASK)
    23112388                    {
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