VirtualBox

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


Ignore:
Timestamp:
Jun 27, 2022 8:43:08 PM (3 years ago)
Author:
vboxsync
Message:

ValKit/bs3-cpu-instr-3: Test pxor too, including MMX. bugref:9898

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

Legend:

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

    r95397 r95400  
    6767typedef struct BS3CPUINSTR3_CONFIG_T
    6868{
    69     uint16_t    fCr0Mp      : 1;
    70     uint16_t    fCr0Em      : 1;
    71     uint16_t    fCr0Ts      : 1;
    72     uint16_t    fCr4OsFxSR  : 1;
    73     uint16_t    fCr4OsXSave : 1;
    74     uint16_t    fXcr0Sse    : 1;
    75     uint16_t    fXcr0Avx    : 1;
    76     uint16_t    fAligned    : 1; /**< Aligned memory operands. If zero, they will be misaligned and tests w/o memory ops skipped. */
    77     uint16_t    fAlignCheck : 1;
    78     uint16_t    fMxCsrMM    : 1; /**< AMD only */
     69    uint16_t    fCr0Mp          : 1;
     70    uint16_t    fCr0Em          : 1;
     71    uint16_t    fCr0Ts          : 1;
     72    uint16_t    fCr4OsFxSR      : 1;
     73    uint16_t    fCr4OsXSave     : 1;
     74    uint16_t    fXcr0Sse        : 1;
     75    uint16_t    fXcr0Avx        : 1;
     76    /** x87 exception pending (IE + something unmasked). */
     77    uint16_t    fX87XcptPending : 1;
     78    /** Aligned memory operands. If zero, they will be misaligned and tests w/o memory ops skipped. */
     79    uint16_t    fAligned        : 1;
     80    uint16_t    fAlignCheck     : 1;
     81    uint16_t    fMxCsrMM        : 1; /**< AMD only */
    7982    uint8_t     bXcptMmx;
    8083    uint8_t     bXcptSse;
     
    9093    uint32_t uCr4;
    9194    uint32_t uEfl;
     95    uint16_t uFcw;
     96    uint16_t uFsw;
    9297    uint32_t uMxCsr;
    9398} BS3CPUINSTR3_CONFIG_SAVED_T;
     
    107112    extern FNBS3FAR RT_CONCAT(a_BaseNm, _c32); \
    108113    extern FNBS3FAR RT_CONCAT(a_BaseNm, _c64)
     114
     115BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pxor_MM1_MM2_icebp);
     116BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pxor_MM1_FSxBX_icebp);
     117BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pxor_XMM1_XMM2_icebp);
     118BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pxor_XMM1_FSxBX_icebp);
     119BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpxor_XMM1_XMM1_XMM2_icebp);
     120BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpxor_XMM1_XMM1_FSxBX_icebp);
     121BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpxor_YMM7_YMM2_YMM3_icebp);
     122BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpxor_YMM7_YMM2_FSxBX_icebp);
    109123
    110124BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_xorps_XMM1_XMM2_icebp);
     
    129143{
    130144/*
    131  *   X87 SSE SSE SSE     AVX      AVX  AVX   SSE+AVX   AVX+AMD/SSE  AMD/SSE   <-- applies to
    132  *
    133  *   CR0 CR0 CR0 CR4     CR4      XCR0 XCR0
    134  *   MP, EM, TS, OSFXSR, OSXSAVE, SSE, AVX,  fAligned, fAlignCheck, fMxCsrMM, bXcptMmx,    bXcptSse,    bXcptAvx */
    135     { 0, 0,  0,  1,      1,       1,   1,    1,        0,           0,        X86_XCPT_DB, X86_XCPT_DB, X86_XCPT_DB }, /* #0 */
    136     { 1, 0,  0,  1,      1,       1,   1,    1,        0,           0,        X86_XCPT_DB, X86_XCPT_DB, X86_XCPT_DB }, /* #1 */
    137     { 0, 1,  0,  1,      1,       1,   1,    1,        0,           0,        X86_XCPT_UD, X86_XCPT_UD, X86_XCPT_DB }, /* #2 */
    138     { 0, 0,  1,  1,      1,       1,   1,    1,        0,           0,        X86_XCPT_NM, X86_XCPT_NM, X86_XCPT_NM }, /* #3 */
    139     { 0, 1,  1,  1,      1,       1,   1,    1,        0,           0,        X86_XCPT_UD, X86_XCPT_UD, X86_XCPT_NM }, /* #4 */
    140     { 0, 0,  0,  0,      1,       1,   1,    1,        0,           0,        X86_XCPT_UD, X86_XCPT_UD, X86_XCPT_DB }, /* #5 */
    141     { 0, 0,  0,  1,      0,       1,   1,    1,        0,           0,        X86_XCPT_DB, X86_XCPT_DB, X86_XCPT_UD }, /* #6 */
    142     { 0, 0,  0,  1,      1,       1,   0,    1,        0,           0,        X86_XCPT_DB, X86_XCPT_DB, X86_XCPT_UD }, /* #7 */
    143     { 0, 0,  0,  1,      1,       0,   0,    1,        0,           0,        X86_XCPT_DB, X86_XCPT_DB, X86_XCPT_UD }, /* #8 */
     145 *   X87 SSE SSE SSE     AVX      AVX  AVX  MMX  MMX+SSE   MMX+AVX  AMD/SSE   <-- applies to
     146 *                                               +AVX      +AMD/SSE
     147 *   CR0 CR0 CR0 CR4     CR4      XCR0 XCR0 FCW                      MXCSR
     148 *   MP, EM, TS, OSFXSR, OSXSAVE, SSE, AVX, ES+, fAligned, AC/AM,   MM,   bXcptMmx,    bXcptSse,    bXcptAvx */
     149    { 0, 0,  0,  1,      1,       1,   1,   0,   1,        0,       0,    X86_XCPT_DB, X86_XCPT_DB, X86_XCPT_DB }, /* #0 */
     150    { 1, 0,  0,  1,      1,       1,   1,   0,   1,        0,       0,    X86_XCPT_DB, X86_XCPT_DB, X86_XCPT_DB }, /* #1 */
     151    { 0, 1,  0,  1,      1,       1,   1,   0,   1,        0,       0,    X86_XCPT_UD, X86_XCPT_UD, X86_XCPT_DB }, /* #2 */
     152    { 0, 0,  1,  1,      1,       1,   1,   0,   1,        0,       0,    X86_XCPT_NM, X86_XCPT_NM, X86_XCPT_NM }, /* #3 */
     153    { 0, 1,  1,  1,      1,       1,   1,   0,   1,        0,       0,    X86_XCPT_UD, X86_XCPT_UD, X86_XCPT_NM }, /* #4 */
     154    { 0, 0,  0,  0,      1,       1,   1,   0,   1,        0,       0,    X86_XCPT_DB, X86_XCPT_UD, X86_XCPT_DB }, /* #5 */
     155    { 0, 0,  0,  1,      0,       1,   1,   0,   1,        0,       0,    X86_XCPT_DB, X86_XCPT_DB, X86_XCPT_UD }, /* #6 */
     156    { 0, 0,  0,  1,      1,       1,   0,   0,   1,        0,       0,    X86_XCPT_DB, X86_XCPT_DB, X86_XCPT_UD }, /* #7 */
     157    { 0, 0,  0,  1,      1,       0,   0,   0,   1,        0,       0,    X86_XCPT_DB, X86_XCPT_DB, X86_XCPT_UD }, /* #8 */
     158    { 0, 0,  0,  1,      1,       1,   1,   1,   1,        0,       0,    X86_XCPT_MF, X86_XCPT_DB, X86_XCPT_DB }, /* #9 - pending x87 exception */
    144159    /* Memory misalignment: */
    145     { 0, 0,  0,  1,      1,       1,   1,    0,        0,           0,        X86_XCPT_GP, X86_XCPT_GP, X86_XCPT_DB }, /* #9 */
    146     { 0, 0,  0,  1,      1,       1,   1,    0,        1,           0,        X86_XCPT_GP, X86_XCPT_GP, X86_XCPT_AC }, /* #10 */
     160    { 0, 0,  0,  1,      1,       1,   1,   0,   0,        0,       0,    X86_XCPT_DB, X86_XCPT_GP, X86_XCPT_DB }, /* #10 */
     161    { 0, 0,  0,  1,      1,       1,   1,   0,   0,        1,       0,    X86_XCPT_AC, X86_XCPT_GP, X86_XCPT_AC }, /* #11 */
    147162    /* AMD only: */
    148     { 0, 0,  0,  1,      1,       1,   1,    0,        0,           1,        X86_XCPT_GP, X86_XCPT_DB, X86_XCPT_DB }, /* #11 */
    149     { 0, 0,  0,  1,      1,       1,   1,    0,        1,           1,        X86_XCPT_GP, X86_XCPT_AC, X86_XCPT_AC }, /* #12 */
     163    { 0, 0,  0,  1,      1,       1,   1,   0,   0,        0,       1,    X86_XCPT_DB, X86_XCPT_DB, X86_XCPT_DB }, /* #12 */
     164    { 0, 0,  0,  1,      1,       1,   1,   0,   0,        1,       1,    X86_XCPT_AC, X86_XCPT_AC, X86_XCPT_AC }, /* #13 */
    150165};
    151166#endif
     
    210225 * @param   pExtCtx     The extended register context to modify.
    211226 * @param   pConfig     The configuration to apply.
     227 * @param   bMode       The target mode.
    212228 */
    213229static bool bs3CpuInstr3ConfigReconfigure(PBS3CPUINSTR3_CONFIG_SAVED_T pSavedCfg, PBS3REGCTX pCtx, PBS3EXTCTX pExtCtx,
    214                                           PCBS3CPUINSTR3_CONFIG_T pConfig)
     230                                          PCBS3CPUINSTR3_CONFIG_T pConfig, uint8_t bMode)
    215231{
    216232    /*
     
    220236    pSavedCfg->uCr4   = pCtx->cr4.u32;
    221237    pSavedCfg->uEfl   = pCtx->rflags.u32;
     238    pSavedCfg->uFcw   = Bs3ExtCtxGetFcw(pExtCtx);
     239    pSavedCfg->uFsw   = Bs3ExtCtxGetFsw(pExtCtx);
    222240    pSavedCfg->uMxCsr = Bs3ExtCtxGetMxCsr(pExtCtx);
    223241
     
    228246        return false;
    229247
     248    /* Currently we skip pending x87 exceptions in real mode as they cannot be
     249       caught, given that we preserve the bios int10h. */
     250    if (pConfig->fX87XcptPending && BS3_MODE_IS_RM_OR_V86(bMode))
     251        return false;
     252
    230253    /*
    231254     * Modify the test context.
     
    274297    }
    275298
     299    if (!pConfig->fX87XcptPending)
     300        Bs3ExtCtxSetFsw(pExtCtx, pSavedCfg->uFsw & ~(X86_FSW_ES | X86_FSW_B));
     301    else
     302    {
     303        Bs3ExtCtxSetFcw(pExtCtx, pSavedCfg->uFcw & ~X86_FCW_ZM);
     304        Bs3ExtCtxSetFsw(pExtCtx, pSavedCfg->uFsw | X86_FSW_ZE | X86_FSW_ES | X86_FSW_B);
     305        pCtx->cr0.u32 |= X86_CR0_NE;
     306    }
     307
    276308    if (pConfig->fMxCsrMM)
    277309        Bs3ExtCtxSetMxCsr(pExtCtx, pSavedCfg->uMxCsr | X86_MXCSR_MM);
     
    291323    pCtx->rflags.u32    = pSavedCfg->uEfl;
    292324    pExtCtx->fXcr0Saved = pExtCtx->fXcr0Nominal;
     325    Bs3ExtCtxSetFcw(pExtCtx, pSavedCfg->uFcw);
     326    Bs3ExtCtxSetFsw(pExtCtx, pSavedCfg->uFsw);
    293327    Bs3ExtCtxSetMxCsr(pExtCtx, pSavedCfg->uMxCsr);
    294328}
     
    446480            unsigned                    iTest;
    447481            BS3CPUINSTR3_CONFIG_SAVED_T SavedCfg;
    448             if (!bs3CpuInstr3ConfigReconfigure(&SavedCfg, &Ctx, pExtCtx, &paConfigs[iCfg]))
     482            if (!bs3CpuInstr3ConfigReconfigure(&SavedCfg, &Ctx, pExtCtx, &paConfigs[iCfg], bMode))
    449483                continue; /* unsupported config */
    450484
     
    497531                {
    498532                    uint16_t   cErrors;
     533                    uint16_t   uSavedFtw = 0xff;
    499534                    RTUINT256U uMemOpExpect;
    500535
     
    569604                    {
    570605                        if (fMmxInstr)
     606                        {
    571607                            Bs3ExtCtxSetMm(pExtCtx, paTests[iTest].iRegDst, paValues[iVal].uDstOut.QWords.qw0);
     608                            uSavedFtw = Bs3ExtCtxGetAbridgedFtw(pExtCtx);
     609                            Bs3ExtCtxSetAbridgedFtw(pExtCtx, 0xff); /* Observed on 10980xe after pxor mm1, mm2. */
     610                        }
    572611                        else if (fSseInstr)
    573612                            Bs3ExtCtxSetXmm(pExtCtx, paTests[iTest].iRegDst, &paValues[iVal].uDstOut.DQWords.dqw0);
     
    605644                        Bs3TestPrintf("\n");
    606645                    }
     646
     647                    if (uSavedFtw != 0xff)
     648                        Bs3ExtCtxSetAbridgedFtw(pExtCtx, uSavedFtw);
    607649                }
    608650            }
     
    630672 * XORPS, 128-bit VXORPS
    631673 */
    632 BS3_DECL_FAR(uint8_t) BS3_CMN_NM(bs3CpuInstr3_xorps)(uint8_t bMode)
     674BS3_DECL_FAR(uint8_t) BS3_CMN_NM(bs3CpuInstr3_v_xorps_xorpd_pxor)(uint8_t bMode)
    633675{
    634676    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues[] =
     
    647689    static BS3CPUINSTR3_TEST1_T const s_aTests16[] =
    648690    {
     691        {  bs3CpuInstr3_pxor_MM1_MM2_icebp_c16,             255,         RM_REG, T_MMX,      1, 1,   2, RT_ELEMENTS(s_aValues), s_aValues },
     692        {  bs3CpuInstr3_pxor_MM1_FSxBX_icebp_c16,           255,         RM_MEM, T_MMX,      1, 1, 255, RT_ELEMENTS(s_aValues), s_aValues },
     693        {  bs3CpuInstr3_pxor_XMM1_XMM2_icebp_c16,           255,         RM_REG, T_SSE2,     1, 1,   2, RT_ELEMENTS(s_aValues), s_aValues },
     694        {  bs3CpuInstr3_pxor_XMM1_FSxBX_icebp_c16,          255,         RM_MEM, T_SSE2,     1, 1, 255, RT_ELEMENTS(s_aValues), s_aValues },
     695        {  bs3CpuInstr3_vpxor_XMM1_XMM1_XMM2_icebp_c16,     255,         RM_REG, T_AVX_128,  1, 1,   2, RT_ELEMENTS(s_aValues), s_aValues },
     696        {  bs3CpuInstr3_vpxor_XMM1_XMM1_FSxBX_icebp_c16,    X86_XCPT_DB, RM_MEM, T_AVX_128,  1, 1, 255, RT_ELEMENTS(s_aValues), s_aValues },
     697        {  bs3CpuInstr3_vpxor_YMM7_YMM2_YMM3_icebp_c16,     255,         RM_REG, T_AVX_256,  7, 2,   3, RT_ELEMENTS(s_aValues), s_aValues },
     698        {  bs3CpuInstr3_vpxor_YMM7_YMM2_FSxBX_icebp_c16,    X86_XCPT_DB, RM_MEM, T_AVX_256,  7, 2, 255, RT_ELEMENTS(s_aValues), s_aValues },
     699
    649700        {  bs3CpuInstr3_xorps_XMM1_XMM2_icebp_c16,          255,         RM_REG, T_SSE2,     1, 1,   2, RT_ELEMENTS(s_aValues), s_aValues },
    650701        {  bs3CpuInstr3_xorps_XMM1_FSxBX_icebp_c16,         255,         RM_MEM, T_SSE2,     1, 1, 255, RT_ELEMENTS(s_aValues), s_aValues },
     
    654705        {  bs3CpuInstr3_vxorps_YMM1_YMM1_FSxBX_icebp_c16,   X86_XCPT_DB, RM_MEM, T_AVX_256,  1, 1, 255, RT_ELEMENTS(s_aValues), s_aValues },
    655706    };
     707
    656708# if ARCH_BITS >= 32
    657709    static BS3CPUINSTR3_TEST1_T const s_aTests32[] =
    658710    {
     711        {  bs3CpuInstr3_pxor_MM1_MM2_icebp_c32,             255,         RM_REG, T_MMX,      1, 1,   2, RT_ELEMENTS(s_aValues), s_aValues },
     712        {  bs3CpuInstr3_pxor_MM1_FSxBX_icebp_c32,           255,         RM_MEM, T_MMX,      1, 1, 255, RT_ELEMENTS(s_aValues), s_aValues },
     713        {  bs3CpuInstr3_pxor_XMM1_XMM2_icebp_c32,           255,         RM_REG, T_SSE2,     1, 1,   2, RT_ELEMENTS(s_aValues), s_aValues },
     714        {  bs3CpuInstr3_pxor_XMM1_FSxBX_icebp_c32,          255,         RM_MEM, T_SSE2,     1, 1, 255, RT_ELEMENTS(s_aValues), s_aValues },
     715        {  bs3CpuInstr3_vpxor_XMM1_XMM1_XMM2_icebp_c32,     255,         RM_REG, T_AVX_128,  1, 1,   2, RT_ELEMENTS(s_aValues), s_aValues },
     716        {  bs3CpuInstr3_vpxor_XMM1_XMM1_FSxBX_icebp_c32,    X86_XCPT_DB, RM_MEM, T_AVX_128,  1, 1, 255, RT_ELEMENTS(s_aValues), s_aValues },
     717        {  bs3CpuInstr3_vpxor_YMM7_YMM2_YMM3_icebp_c32,     255,         RM_REG, T_AVX_256,  7, 2,   3, RT_ELEMENTS(s_aValues), s_aValues },
     718        {  bs3CpuInstr3_vpxor_YMM7_YMM2_FSxBX_icebp_c32,    X86_XCPT_DB, RM_MEM, T_AVX_256,  7, 2, 255, RT_ELEMENTS(s_aValues), s_aValues },
     719
    659720        {  bs3CpuInstr3_xorps_XMM1_XMM2_icebp_c32,          255, RM_REG, T_SSE2,     1, 1,   2, RT_ELEMENTS(s_aValues), s_aValues },
    660721        {  bs3CpuInstr3_xorps_XMM1_FSxBX_icebp_c32,         255, RM_MEM, T_SSE2,     1, 1, 255, RT_ELEMENTS(s_aValues), s_aValues },
     
    668729    static BS3CPUINSTR3_TEST1_T const s_aTests64[] =
    669730    {
     731        {  bs3CpuInstr3_pxor_MM1_MM2_icebp_c64,             255,         RM_REG, T_MMX,      1, 1,   2, RT_ELEMENTS(s_aValues), s_aValues },
     732        {  bs3CpuInstr3_pxor_MM1_FSxBX_icebp_c64,           255,         RM_MEM, T_MMX,      1, 1, 255, RT_ELEMENTS(s_aValues), s_aValues },
     733        {  bs3CpuInstr3_pxor_XMM1_XMM2_icebp_c64,           255,         RM_REG, T_SSE2,     1, 1,   2, RT_ELEMENTS(s_aValues), s_aValues },
     734        {  bs3CpuInstr3_pxor_XMM1_FSxBX_icebp_c64,          255,         RM_MEM, T_SSE2,     1, 1, 255, RT_ELEMENTS(s_aValues), s_aValues },
     735        {  bs3CpuInstr3_vpxor_XMM1_XMM1_XMM2_icebp_c64,     255,         RM_REG, T_AVX_128,  1, 1,   2, RT_ELEMENTS(s_aValues), s_aValues },
     736        {  bs3CpuInstr3_vpxor_XMM1_XMM1_FSxBX_icebp_c64,    X86_XCPT_DB, RM_MEM, T_AVX_128,  1, 1, 255, RT_ELEMENTS(s_aValues), s_aValues },
     737        {  bs3CpuInstr3_vpxor_YMM7_YMM2_YMM3_icebp_c64,     255,         RM_REG, T_AVX_256,  7, 2,   3, RT_ELEMENTS(s_aValues), s_aValues },
     738        {  bs3CpuInstr3_vpxor_YMM7_YMM2_FSxBX_icebp_c64,    X86_XCPT_DB, RM_MEM, T_AVX_256,  7, 2, 255, RT_ELEMENTS(s_aValues), s_aValues },
     739
    670740        {  bs3CpuInstr3_xorps_XMM1_XMM2_icebp_c64,          255,         RM_REG, T_SSE2,     1, 1,   2, RT_ELEMENTS(s_aValues), s_aValues },
    671741        {  bs3CpuInstr3_xorps_XMM1_FSxBX_icebp_c64,         255,         RM_MEM, T_SSE2,     1, 1, 255, RT_ELEMENTS(s_aValues), s_aValues },
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3-template.mac

    r95397 r95400  
    5151; ASSUMES the length is between the start of the function and the .again label.
    5252;
    53 %ifndef BS3CPUINSTR3_PROC_BEGIN_CMN
     53%ifndef BS3CPUINSTR3_PROC_BEGIN_CMN_DEFINED
    5454 %define BS3CPUINSTR3_PROC_BEGIN_CMN_DEFINED
    5555 %macro BS3CPUINSTR3_PROC_BEGIN_CMN 1
     
    5959 %endmacro
    6060%endif
     61
     62;
     63; PXOR (SSE2) & VPXOR (AVX2)
     64;
     65BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_pxor_MM1_MM2_icebp
     66        pxor    mm1, mm2
     67.again:
     68        icebp
     69        jmp     .again
     70BS3_PROC_END_CMN   bs3CpuInstr3_pxor_MM1_MM2_icebp
     71
     72BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_pxor_MM1_FSxBX_icebp
     73        pxor    mm1, [fs:xBX]
     74.again:
     75        icebp
     76        jmp     .again
     77BS3_PROC_END_CMN   bs3CpuInstr3_pxor_MM1_FSxBX_icebp
     78
     79BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_pxor_XMM1_XMM2_icebp
     80        pxor    xmm1, xmm2
     81.again:
     82        icebp
     83        jmp     .again
     84BS3_PROC_END_CMN   bs3CpuInstr3_pxor_XMM1_XMM2_icebp
     85
     86BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_pxor_XMM1_FSxBX_icebp
     87        pxor    xmm1, [fs:xBX]
     88.again:
     89        icebp
     90        jmp     .again
     91BS3_PROC_END_CMN   bs3CpuInstr3_pxor_XMM1_FSxBX_icebp
     92
     93BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_vpxor_XMM1_XMM1_XMM2_icebp
     94        vpxor   xmm1, xmm1, xmm2
     95.again:
     96        icebp
     97        jmp     .again
     98BS3_PROC_END_CMN   bs3CpuInstr3_vpxor_XMM1_XMM1_XMM2_icebp
     99
     100BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_vpxor_XMM1_XMM1_FSxBX_icebp
     101        vpxor   xmm1, xmm1, [fs:xBX]
     102.again:
     103        icebp
     104        jmp     .again
     105BS3_PROC_END_CMN   bs3CpuInstr3_vpxor_XMM1_XMM1_FSxBX_icebp
     106
     107BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_vpxor_YMM7_YMM2_YMM3_icebp
     108        vpxor   ymm7, ymm2, ymm3
     109.again:
     110        icebp
     111        jmp     .again
     112BS3_PROC_END_CMN   bs3CpuInstr3_vpxor_YMM7_YMM2_YMM3_icebp
     113
     114BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_vpxor_YMM7_YMM2_FSxBX_icebp
     115        vpxor   ymm7, ymm2, [fs:xBX]
     116.again:
     117        icebp
     118        jmp     .again
     119BS3_PROC_END_CMN   bs3CpuInstr3_vpxor_YMM7_YMM2_FSxBX_icebp
     120
    61121
    62122;
     
    111171
    112172
     173
    113174%endif ; BS3_INSTANTIATING_CMN
    114175
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c

    r95377 r95400  
    3535*   Internal Functions                                                                                                           *
    3636*********************************************************************************************************************************/
    37 BS3TESTMODEBYMAX_PROTOTYPES_CMN(bs3CpuInstr3_xorps);
     37BS3TESTMODEBYMAX_PROTOTYPES_CMN(bs3CpuInstr3_v_xorps_xorpd_pxor);
    3838
    3939
     
    4343static const BS3TESTMODEBYMAXENTRY g_aTests[] =
    4444{
    45     BS3TESTMODEBYMAXENTRY_CMN("xorps", bs3CpuInstr3_xorps),
     45    BS3TESTMODEBYMAXENTRY_CMN("[v]xorps/[v]xorpd/[v]pxor", bs3CpuInstr3_v_xorps_xorpd_pxor),
    4646};
    4747
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