VirtualBox

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


Ignore:
Timestamp:
Aug 23, 2024 1:16:01 AM (3 months ago)
Author:
vboxsync
Message:

Add missing instruction tests, bugref:9898

These are instruction micro-tests which had been coded, but were not called from the test tables:

  • 10x [v]pmull[dw]
  • 6x [v]pmulhw
  • 6x [v]pmulhuw
  • 8x sha1rnds4
  • 14x [v]mov[dq]
  • 2x vgatherdps

Adds support for 'mm, mm' 2-media-register instructions in test type #2 worker.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32

    r105666 r105835  
    21552155        {  bs3CpuInstr3_pmullw_XMM1_XMM2_icebp_c64,          255,         RM_REG, T_SSE2,     1, 1,   2, RT_ELEMENTS(s_aValuesW), s_aValuesW },
    21562156        {  bs3CpuInstr3_pmullw_XMM1_FSxBX_icebp_c64,         255,         RM_MEM, T_SSE2,     1, 1, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     2157        {  bs3CpuInstr3_pmullw_XMM8_XMM9_icebp_c64,          255,         RM_REG, T_SSE2,     8, 8,   9, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     2158        {  bs3CpuInstr3_pmullw_XMM8_FSxBX_icebp_c64,         255,         RM_MEM, T_SSE2,     8, 8, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
    21572159        {  bs3CpuInstr3_vpmullw_XMM1_XMM1_XMM2_icebp_c64,    255,         RM_REG, T_AVX_128,  1, 1,   2, RT_ELEMENTS(s_aValuesW), s_aValuesW },
    21582160        {  bs3CpuInstr3_vpmullw_XMM1_XMM1_FSxBX_icebp_c64,   X86_XCPT_DB, RM_MEM, T_AVX_128,  1, 1, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     2161        {  bs3CpuInstr3_vpmullw_XMM8_XMM9_XMM10_icebp_c64,   255,         RM_REG, T_AVX_128,  8, 9,  10, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     2162        {  bs3CpuInstr3_vpmullw_XMM8_XMM9_FSxBX_icebp_c64,   X86_XCPT_DB, RM_MEM, T_AVX_128,  8, 9, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
    21592163        {  bs3CpuInstr3_vpmullw_YMM1_YMM1_YMM2_icebp_c64,    255,         RM_REG, T_AVX_256,  1, 1,   2, RT_ELEMENTS(s_aValuesW), s_aValuesW },
    21602164        {  bs3CpuInstr3_vpmullw_YMM1_YMM1_FSxBX_icebp_c64,   X86_XCPT_DB, RM_MEM, T_AVX_256,  1, 1, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     2165        {  bs3CpuInstr3_vpmullw_YMM8_YMM9_YMM10_icebp_c64,   255,         RM_REG, T_AVX_256,  8, 9,  10, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     2166        {  bs3CpuInstr3_vpmullw_YMM8_YMM9_FSxBX_icebp_c64,   X86_XCPT_DB, RM_MEM, T_AVX_256,  8, 9, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
    21612167
    21622168        {  bs3CpuInstr3_pmulld_XMM1_XMM2_icebp_c64,          255,         RM_REG, T_SSE4_1,   1, 1,   2, RT_ELEMENTS(s_aValuesD), s_aValuesD },
    21632169        {  bs3CpuInstr3_pmulld_XMM1_FSxBX_icebp_c64,         255,         RM_MEM, T_SSE4_1,   1, 1, 255, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     2170        {  bs3CpuInstr3_pmulld_XMM8_XMM9_icebp_c64,          255,         RM_REG, T_SSE4_1,   8, 8,   9, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     2171        {  bs3CpuInstr3_pmulld_XMM8_FSxBX_icebp_c64,         255,         RM_MEM, T_SSE4_1,   8, 8, 255, RT_ELEMENTS(s_aValuesD), s_aValuesD },
    21642172        {  bs3CpuInstr3_vpmulld_XMM2_XMM1_XMM0_icebp_c64,    255,         RM_REG, T_AVX_128,  2, 1,   0, RT_ELEMENTS(s_aValuesD), s_aValuesD },
    21652173        {  bs3CpuInstr3_vpmulld_XMM2_XMM1_FSxBX_icebp_c64,   X86_XCPT_DB, RM_MEM, T_AVX_128,  2, 1, 255, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     2174        {  bs3CpuInstr3_vpmulld_XMM8_XMM9_XMM10_icebp_c64,   255,         RM_REG, T_AVX_128,  8, 9,  10, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     2175        {  bs3CpuInstr3_vpmulld_XMM8_XMM9_FSxBX_icebp_c64,   X86_XCPT_DB, RM_MEM, T_AVX_128,  8, 9, 255, RT_ELEMENTS(s_aValuesD), s_aValuesD },
    21662176        {  bs3CpuInstr3_vpmulld_YMM2_YMM1_YMM0_icebp_c64,    255,         RM_REG, T_AVX_256,  2, 1,   0, RT_ELEMENTS(s_aValuesD), s_aValuesD },
    21672177        {  bs3CpuInstr3_vpmulld_YMM2_YMM1_FSxBX_icebp_c64,   X86_XCPT_DB, RM_MEM, T_AVX_256,  2, 1, 255, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     
    22222232        {  bs3CpuInstr3_pmulhw_XMM1_XMM2_icebp_c64,          255,         RM_REG, T_SSE2,     1, 1,   2, RT_ELEMENTS(s_aValuesW), s_aValuesW },
    22232233        {  bs3CpuInstr3_pmulhw_XMM1_FSxBX_icebp_c64,         255,         RM_MEM, T_SSE2,     1, 1, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     2234        {  bs3CpuInstr3_pmulhw_XMM8_XMM9_icebp_c64,          255,         RM_REG, T_SSE2,     8, 8,   9, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     2235        {  bs3CpuInstr3_pmulhw_XMM8_FSxBX_icebp_c64,         255,         RM_MEM, T_SSE2,     8, 8, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
    22242236        {  bs3CpuInstr3_vpmulhw_XMM1_XMM1_XMM2_icebp_c64,    255,         RM_REG, T_AVX_128,  1, 1,   2, RT_ELEMENTS(s_aValuesW), s_aValuesW },
    22252237        {  bs3CpuInstr3_vpmulhw_XMM1_XMM1_FSxBX_icebp_c64,   X86_XCPT_DB, RM_MEM, T_AVX_128,  1, 1, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
    22262238        {  bs3CpuInstr3_vpmulhw_YMM1_YMM1_YMM2_icebp_c64,    255,         RM_REG, T_AVX_256,  1, 1,   2, RT_ELEMENTS(s_aValuesW), s_aValuesW },
    22272239        {  bs3CpuInstr3_vpmulhw_YMM1_YMM1_FSxBX_icebp_c64,   X86_XCPT_DB, RM_MEM, T_AVX_256,  1, 1, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     2240        {  bs3CpuInstr3_vpmulhw_XMM8_XMM9_XMM10_icebp_c64,   255,         RM_REG, T_AVX_128,  8, 9,  10, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     2241        {  bs3CpuInstr3_vpmulhw_XMM8_XMM9_FSxBX_icebp_c64,   X86_XCPT_DB, RM_MEM, T_AVX_128,  8, 9, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     2242        {  bs3CpuInstr3_vpmulhw_YMM8_YMM9_YMM10_icebp_c64,   255,         RM_REG, T_AVX_256,  8, 9,  10, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     2243        {  bs3CpuInstr3_vpmulhw_YMM8_YMM9_FSxBX_icebp_c64,   X86_XCPT_DB, RM_MEM, T_AVX_256,  8, 9, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
    22282244    };
    22292245    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     
    22842300        {  bs3CpuInstr3_vpmulhuw_YMM1_YMM1_YMM2_icebp_c64,   255,         RM_REG, T_AVX_256,  1, 1,   2, RT_ELEMENTS(s_aValuesW), s_aValuesW },
    22852301        {  bs3CpuInstr3_vpmulhuw_YMM1_YMM1_FSxBX_icebp_c64,  X86_XCPT_DB, RM_MEM, T_AVX_256,  1, 1, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     2302
     2303        {  bs3CpuInstr3_pmulhuw_XMM8_XMM9_icebp_c64,         255,         RM_REG, T_SSE2,     8, 8,   9, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     2304        {  bs3CpuInstr3_pmulhuw_XMM8_FSxBX_icebp_c64,        255,         RM_MEM, T_SSE2,     8, 8, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     2305        {  bs3CpuInstr3_vpmulhuw_XMM8_XMM9_XMM10_icebp_c64,  255,         RM_REG, T_AVX_128,  8, 9,  10, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     2306        {  bs3CpuInstr3_vpmulhuw_XMM8_XMM9_FSxBX_icebp_c64,  X86_XCPT_DB, RM_MEM, T_AVX_128,  8, 9, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     2307        {  bs3CpuInstr3_vpmulhuw_YMM8_YMM9_YMM10_icebp_c64,  255,         RM_REG, T_AVX_256,  8, 9,  10, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     2308        {  bs3CpuInstr3_vpmulhuw_YMM8_YMM9_FSxBX_icebp_c64,  X86_XCPT_DB, RM_MEM, T_AVX_256,  8, 9, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
    22862309    };
    22872310    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     
    69236946        {  bs3CpuInstr3_sha1rnds4_XMM1_FSxBX_003h_icebp_c64,      255, RM_MEM, T_SHA,       1, 1, 255, RT_ELEMENTS(s_aValuesSha1Rnds4_03), s_aValuesSha1Rnds4_03 },
    69246947
     6948        {  bs3CpuInstr3_sha1rnds4_XMM9_XMM8_000h_icebp_c64,       255, RM_REG, T_SHA,       9, 9,   8, RT_ELEMENTS(s_aValuesSha1Rnds4_00), s_aValuesSha1Rnds4_00 },
     6949        {  bs3CpuInstr3_sha1rnds4_XMM9_FSxBX_000h_icebp_c64,      255, RM_MEM, T_SHA,       9, 9, 255, RT_ELEMENTS(s_aValuesSha1Rnds4_00), s_aValuesSha1Rnds4_00 },
     6950        {  bs3CpuInstr3_sha1rnds4_XMM9_XMM8_001h_icebp_c64,       255, RM_REG, T_SHA,       9, 9,   8, RT_ELEMENTS(s_aValuesSha1Rnds4_01), s_aValuesSha1Rnds4_01 },
     6951        {  bs3CpuInstr3_sha1rnds4_XMM9_FSxBX_001h_icebp_c64,      255, RM_MEM, T_SHA,       9, 9, 255, RT_ELEMENTS(s_aValuesSha1Rnds4_01), s_aValuesSha1Rnds4_01 },
     6952        {  bs3CpuInstr3_sha1rnds4_XMM9_XMM8_002h_icebp_c64,       255, RM_REG, T_SHA,       9, 9,   8, RT_ELEMENTS(s_aValuesSha1Rnds4_02), s_aValuesSha1Rnds4_02 },
     6953        {  bs3CpuInstr3_sha1rnds4_XMM9_FSxBX_002h_icebp_c64,      255, RM_MEM, T_SHA,       9, 9, 255, RT_ELEMENTS(s_aValuesSha1Rnds4_02), s_aValuesSha1Rnds4_02 },
     6954        {  bs3CpuInstr3_sha1rnds4_XMM9_XMM8_003h_icebp_c64,       255, RM_REG, T_SHA,       9, 9,   8, RT_ELEMENTS(s_aValuesSha1Rnds4_03), s_aValuesSha1Rnds4_03 },
     6955        {  bs3CpuInstr3_sha1rnds4_XMM9_FSxBX_003h_icebp_c64,      255, RM_MEM, T_SHA,       9, 9, 255, RT_ELEMENTS(s_aValuesSha1Rnds4_03), s_aValuesSha1Rnds4_03 },
    69256956    };
    69266957    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     
    94959526    uint8_t         cBitsGprValMask;
    94969527    bool            fInvalidEncoding;
    9497     bool            fGprDst;
     9528    uint8_t         fGprDst;
    94989529    uint8_t         iGprReg;
    94999530    uint8_t         iMediaReg;
     
    95669597                    uint8_t const   cbInstr     = ((uint8_t const BS3_FAR *)(uintptr_t)paTests[iTest].pfnWorker)[-1];
    95679598                    unsigned const  cValues     = paTests[iTest].cValues;
    9568                     bool const      fGprDst     = paTests[iTest].fGprDst;
     9599                    bool const      fGprDst     = paTests[iTest].fGprDst == true;
     9600                    bool const      fMmBoth     = paTests[iTest].fGprDst == 2;
    95699601                    bool const      fMmxInstr   = paTests[iTest].enmType < T_SSE;
    95709602                    bool const      fSseInstr   = paTests[iTest].enmType >= T_SSE && paTests[iTest].enmType < T_AVX_128;
     
    96229654                             * Set up the context and some expectations.
    96239655                             */
    9624                             if (fGprDst)
     9656                            if (fMmBoth)
     9657                            {
     9658                                if (fMmxInstr)
     9659                                    Bs3ExtCtxSetMm(pExtCtx, paTests[iTest].iGprReg, paValues[iVal].uMedia.QWords.qw0, BS3EXTCTXTOPMM_ZERO);
     9660                                else if (fSseInstr)
     9661                                    Bs3ExtCtxSetXmm(pExtCtx, paTests[iTest].iGprReg, &paValues[iVal].uMedia.DQWords.dqw0);
     9662                                else
     9663                                    Bs3ExtCtxSetYmm(pExtCtx, paTests[iTest].iGprReg, &paValues[iVal].uMedia, 32);
     9664                            }
     9665                            else if (fGprDst)
    96259666                            {
    96269667                                /* dest - gpr/mem */
     
    97199760                                Bs3ExtCtxSetAbridgedFtw(pExtCtx, 0xff);
    97209761                            }
    9721                             if (!fGprDst && bXcptExpect == X86_XCPT_DB && paTests[iTest].iMediaReg != UINT8_MAX)
     9762                            if (fMmBoth && bXcptExpect == X86_XCPT_DB)
     9763                            {
     9764                                RTUINT256U uDstVal = RTUINT256_INIT_C(0, 0, 0, 0);
     9765                                uDstVal.au64[0] = paValues[iVal].uGpr;
     9766                                if (fMmxInstr)
     9767                                    Bs3ExtCtxSetMm(pExtCtx, paTests[iTest].iMediaReg, paValues[iVal].uGpr, BS3EXTCTXTOPMM_SET);
     9768                                else if (fSseInstr)
     9769                                    Bs3ExtCtxSetXmm(pExtCtx, paTests[iTest].iMediaReg, &uDstVal.DQWords.dqw0);
     9770                                else
     9771                                    Bs3ExtCtxSetYmm(pExtCtx, paTests[iTest].iMediaReg, &uDstVal, 32);
     9772                            }
     9773                            else if (!fGprDst && bXcptExpect == X86_XCPT_DB && paTests[iTest].iMediaReg != UINT8_MAX)
    97229774                            {
    97239775                                if (fMmxInstr)
     
    98499901
    98509902/*
    9851  * [V]MOVD / [V]MOVQ - greg/mem variants only.
     9903 * [V]MOVD / [V]MOVQ - Move doubleword / Move quadword.
    98529904 */
    98539905BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_movd_movq(uint8_t bMode)
     
    98829934
    98839935    /* Note! Seems the 256-bit variants doesn't generate \#ACs on a 10980XE. WEIRD! */
     9936    /* Note: 'VEX.W!' entries: 'vmovq' in non-long modes ignores VEX.W1, acts as VEX.W0 'vmovd' */
     9937    /* Note: 'MMx2' entries: test type #2 worker now supports Media, Media operands (fGprDst == 2) */
    98849938    static BS3CPUINSTR3_TEST2_T const s_aTests16[] =
    98859939    {
     
    98989952        {  bs3CpuInstr3_vmovd_EDX_XMM1_icebp_c16,       255,         RM_REG,   T_AVX_128, 4, 32, false, true,    2,  1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },
    98999953        {  bs3CpuInstr3_vmovd_FSxBX_XMM1_icebp_c16,     X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true,  255,  1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },
     9954
    99009955        {  bs3CpuInstr3_movq_MM1_FSxBX_icebp_c16,       255,         RM_MEM64, T_MMX,     8, 64, false, false, 255,  1, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },
    99019956        {  bs3CpuInstr3_movq_FSxBX_MM1_icebp_c16,       255,         RM_MEM64, T_MMX,     8, 64, false, true,  255,  1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },
     9957        {  bs3CpuInstr3_movq_MM1_MM2_icebp_c16,         255,         RM_REG,   T_MMX,     8, 64, false, 2,       2,  1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },         /* MMx2 */
    99029958        {  bs3CpuInstr3_movq_XMM1_FSxBX_icebp_c16,      255,         RM_MEM64, T_SSE2,    8, 64, false, false, 255,  1, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },
    99039959        {  bs3CpuInstr3_movq_FSxBX_XMM1_icebp_c16,      255,         RM_MEM64, T_SSE2,    8, 64, false, true,  255,  1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },
     9960        {  bs3CpuInstr3_movq_XMM1_XMM2_icebp_c16,       255,         RM_REG,   T_SSE2,    8, 64, false, 2,       2,  1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },         /* MMx2 */
    99049961
    99059962        {  bs3CpuInstr3_vmovq_XMM1_FSxBX_icebp_c16,     X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, 64, false, false, 255,  1, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },
     9963        {  bs3CpuInstr3_06e_vmovq_XMM1_FSxBX_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, false, 255,  1, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, /* VEX.W! */
    99069964        {  bs3CpuInstr3_vmovq_FSxBX_XMM1_icebp_c16,     X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, 64, false, true,  255,  1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },
     9965        {  bs3CpuInstr3_07e_vmovq_FSxBX_XMM1_icebp_c16, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true,  255,  1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },         /* VEX.W! */
     9966        {  bs3CpuInstr3_vmovq_XMM1_XMM2_icebp_c16,      255,         RM_REG,   T_AVX_128, 8, 64, false, 2,       2,  1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },         /* MMx2 */
    99079967    };
    99089968    static BS3CPUINSTR3_TEST2_T const s_aTests32[] =
     
    99259985        {  bs3CpuInstr3_movq_MM1_FSxBX_icebp_c32,       255,         RM_MEM64, T_MMX,     8, 64, false, false, 255,  1, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },
    99269986        {  bs3CpuInstr3_movq_FSxBX_MM1_icebp_c32,       255,         RM_MEM64, T_MMX,     8, 64, false, true,  255,  1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },
     9987        {  bs3CpuInstr3_movq_MM1_MM2_icebp_c32,         255,         RM_REG,   T_MMX,     8, 64, false, 2,       2,  1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },         /* MMx2 */
    99279988
    99289989        {  bs3CpuInstr3_movq_XMM1_FSxBX_icebp_c32,      255,         RM_MEM64, T_SSE2,    8, 64, false, false, 255,  1, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },
    99299990        {  bs3CpuInstr3_movq_FSxBX_XMM1_icebp_c32,      255,         RM_MEM64, T_SSE2,    8, 64, false, true,  255,  1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },
     9991        {  bs3CpuInstr3_movq_XMM1_XMM2_icebp_c32,       255,         RM_REG,   T_SSE2,    8, 64, false, 2,       2,  1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },         /* MMx2 */
    99309992
    99319993        {  bs3CpuInstr3_vmovq_XMM1_FSxBX_icebp_c32,     X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, 64, false, false, 255,  1, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },
     9994        {  bs3CpuInstr3_06e_vmovq_XMM1_FSxBX_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, false, 255,  1, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD }, /* VEX.W! */
    99329995        {  bs3CpuInstr3_vmovq_FSxBX_XMM1_icebp_c32,     X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, 64, false, true,  255,  1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },
     9996        {  bs3CpuInstr3_07e_vmovq_FSxBX_XMM1_icebp_c32, X86_XCPT_AC, RM_MEM32, T_AVX_128, 4, 32, false, true,  255,  1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },         /* VEX.W! */
     9997        {  bs3CpuInstr3_vmovq_XMM1_XMM2_icebp_c32,      255,         RM_REG,   T_AVX_128, 8, 64, false, 2,       2,  1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },         /* MMx2 */
    99339998    };
    99349999    static BS3CPUINSTR3_TEST2_T const s_aTests64[] =
     
    994810013        {  bs3CpuInstr3_movd_R8D_XMM9_icebp_c64,        255,         RM_REG,   T_SSE2,    4, 32, false, true,    8,  9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },
    994910014        {  bs3CpuInstr3_movd_FSxBX_XMM1_icebp_c64,      255,         RM_MEM32, T_SSE2,    4, 32, false, true,  255,  1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },
     10015        {  bs3CpuInstr3_movd_FSxBX_XMM9_icebp_c64,      255,         RM_MEM32, T_SSE2,    4, 32, false, true,  255,  9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },
    995010016
    995110017        {  bs3CpuInstr3_vmovd_XMM1_EAX_icebp_c64,       255,         RM_REG,   T_AVX_128, 4, 32, false, false,   0,  1, RT_ELEMENTS(s_aValuesMediaD), s_aValuesMediaD },
     
    996410030        {  bs3CpuInstr3_movq_FSxBX_MM1_icebp_c64,       255,         RM_MEM64, T_MMX,     8, 64, false, true,  255,  1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },
    996510031        {  bs3CpuInstr3_07e_movq_FSxBX_MM1_icebp_c64,   255,         RM_MEM64, T_MMX,     8, 64, false, true,  255,  1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },
     10032        {  bs3CpuInstr3_movq_MM1_MM2_icebp_c64,         255,         RM_REG,   T_MMX,     8, 64, false, 2,       2,  1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },         /* MMx2 */
    996610033
    996710034        {  bs3CpuInstr3_movq_XMM9_R8_icebp_c64,         255,         RM_REG,   T_SSE2,    8, 64, false, false,   8,  9, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },
     
    997510042        {  bs3CpuInstr3_movq_FSxBX_XMM9_icebp_c64,      255,         RM_MEM64, T_SSE2,    8, 64, false, true,  255,  9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },
    997610043        {  bs3CpuInstr3_07e_movq_FSxBX_XMM9_icebp_c64,  255,         RM_MEM64, T_SSE2,    8, 64, false, true,  255,  9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },
     10044        {  bs3CpuInstr3_movq_XMM1_XMM2_icebp_c64,       255,         RM_REG,   T_SSE2,    8, 64, false, 2,       2,  1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },         /* MMx2 */
    997710045
    997810046        {  bs3CpuInstr3_vmovq_XMM9_R8_icebp_c64,        255,         RM_REG,   T_AVX_128, 8, 64, false, false,   8,  9, RT_ELEMENTS(s_aValuesMediaQ), s_aValuesMediaQ },
     
    998610054        {  bs3CpuInstr3_vmovq_FSxBX_XMM9_icebp_c64,     X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, 64, false, true,  255,  9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },
    998710055        {  bs3CpuInstr3_07e_vmovq_FSxBX_XMM9_icebp_c64, X86_XCPT_AC, RM_MEM64, T_AVX_128, 8, 64, false, true,  255,  9, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },
     10056        {  bs3CpuInstr3_vmovq_XMM1_XMM2_icebp_c64,      255,         RM_REG,   T_AVX_128, 8, 64, false, 2,       2,  1, RT_ELEMENTS(s_aValuesRm), s_aValuesRm },         /* MMx2 */
    998810057    };
    998910058    static BS3CPUINSTR3_TEST2_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST2_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     
    1516715236        {  bs3CpuInstr3_vgatherdps_xmm0_rbx_plus_0_plus_xmm1_x_1_xmm2_icebp_c64,   X86_XCPT_DB, 0,    T_AVX2_128, 0, 3, 1, 2,  RT_ELEMENTS(s_aValues32_32x1), s_aValues32_32x1 },
    1516815237        {  bs3CpuInstr3_vgatherdps_xmm8_r8d_plus_0_plus_xmm9_x_1_xmm10_icebp_c64,  X86_XCPT_DB, 0,    T_AVX2_128, 8, 8, 9, 10, RT_ELEMENTS(s_aValues32_32x1), s_aValues32_32x1 },
     15238        {  bs3CpuInstr3_vgatherdps_ymm0_ebx_plus_0_plus_ymm0_x_1_ymm2_icebp_c64,   X86_XCPT_UD, 0,    T_AVX2_256, 0, 3, 0, 2,  RT_ELEMENTS(s_aValuesUD),      s_aValuesUD },
     15239        {  bs3CpuInstr3_vgatherdps_ymm0_ebx_plus_0_plus_ymm1_x_1_ymm0_icebp_c64,   X86_XCPT_UD, 0,    T_AVX2_256, 0, 3, 1, 0,  RT_ELEMENTS(s_aValuesUD),      s_aValuesUD },
    1516915240        {  bs3CpuInstr3_vgatherdps_ymm0_ebx_plus_0_plus_ymm1_x_1_ymm1_icebp_c64,   X86_XCPT_UD, 0,    T_AVX2_256, 0, 3, 1, 1,  RT_ELEMENTS(s_aValuesUD),      s_aValuesUD },
    1517015241        {  bs3CpuInstr3_vgatherdps_ymm0_ebx_plus_0_plus_ymm1_x_1_ymm2_icebp_c64,   X86_XCPT_DB, 0,    T_AVX2_256, 0, 3, 1, 2,  RT_ELEMENTS(s_aValues32_32x1), s_aValues32_32x1 },
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