Changeset 95400 in vbox for trunk/src/VBox/ValidationKit
- Timestamp:
- Jun 27, 2022 8:43:08 PM (3 years ago)
- 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 67 67 typedef struct BS3CPUINSTR3_CONFIG_T 68 68 { 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 */ 79 82 uint8_t bXcptMmx; 80 83 uint8_t bXcptSse; … … 90 93 uint32_t uCr4; 91 94 uint32_t uEfl; 95 uint16_t uFcw; 96 uint16_t uFsw; 92 97 uint32_t uMxCsr; 93 98 } BS3CPUINSTR3_CONFIG_SAVED_T; … … 107 112 extern FNBS3FAR RT_CONCAT(a_BaseNm, _c32); \ 108 113 extern FNBS3FAR RT_CONCAT(a_BaseNm, _c64) 114 115 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pxor_MM1_MM2_icebp); 116 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pxor_MM1_FSxBX_icebp); 117 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pxor_XMM1_XMM2_icebp); 118 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pxor_XMM1_FSxBX_icebp); 119 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpxor_XMM1_XMM1_XMM2_icebp); 120 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpxor_XMM1_XMM1_FSxBX_icebp); 121 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpxor_YMM7_YMM2_YMM3_icebp); 122 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpxor_YMM7_YMM2_FSxBX_icebp); 109 123 110 124 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_xorps_XMM1_XMM2_icebp); … … 129 143 { 130 144 /* 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 */ 144 159 /* 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 */ 147 162 /* 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 */ 150 165 }; 151 166 #endif … … 210 225 * @param pExtCtx The extended register context to modify. 211 226 * @param pConfig The configuration to apply. 227 * @param bMode The target mode. 212 228 */ 213 229 static bool bs3CpuInstr3ConfigReconfigure(PBS3CPUINSTR3_CONFIG_SAVED_T pSavedCfg, PBS3REGCTX pCtx, PBS3EXTCTX pExtCtx, 214 PCBS3CPUINSTR3_CONFIG_T pConfig )230 PCBS3CPUINSTR3_CONFIG_T pConfig, uint8_t bMode) 215 231 { 216 232 /* … … 220 236 pSavedCfg->uCr4 = pCtx->cr4.u32; 221 237 pSavedCfg->uEfl = pCtx->rflags.u32; 238 pSavedCfg->uFcw = Bs3ExtCtxGetFcw(pExtCtx); 239 pSavedCfg->uFsw = Bs3ExtCtxGetFsw(pExtCtx); 222 240 pSavedCfg->uMxCsr = Bs3ExtCtxGetMxCsr(pExtCtx); 223 241 … … 228 246 return false; 229 247 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 230 253 /* 231 254 * Modify the test context. … … 274 297 } 275 298 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 276 308 if (pConfig->fMxCsrMM) 277 309 Bs3ExtCtxSetMxCsr(pExtCtx, pSavedCfg->uMxCsr | X86_MXCSR_MM); … … 291 323 pCtx->rflags.u32 = pSavedCfg->uEfl; 292 324 pExtCtx->fXcr0Saved = pExtCtx->fXcr0Nominal; 325 Bs3ExtCtxSetFcw(pExtCtx, pSavedCfg->uFcw); 326 Bs3ExtCtxSetFsw(pExtCtx, pSavedCfg->uFsw); 293 327 Bs3ExtCtxSetMxCsr(pExtCtx, pSavedCfg->uMxCsr); 294 328 } … … 446 480 unsigned iTest; 447 481 BS3CPUINSTR3_CONFIG_SAVED_T SavedCfg; 448 if (!bs3CpuInstr3ConfigReconfigure(&SavedCfg, &Ctx, pExtCtx, &paConfigs[iCfg] ))482 if (!bs3CpuInstr3ConfigReconfigure(&SavedCfg, &Ctx, pExtCtx, &paConfigs[iCfg], bMode)) 449 483 continue; /* unsupported config */ 450 484 … … 497 531 { 498 532 uint16_t cErrors; 533 uint16_t uSavedFtw = 0xff; 499 534 RTUINT256U uMemOpExpect; 500 535 … … 569 604 { 570 605 if (fMmxInstr) 606 { 571 607 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 } 572 611 else if (fSseInstr) 573 612 Bs3ExtCtxSetXmm(pExtCtx, paTests[iTest].iRegDst, &paValues[iVal].uDstOut.DQWords.dqw0); … … 605 644 Bs3TestPrintf("\n"); 606 645 } 646 647 if (uSavedFtw != 0xff) 648 Bs3ExtCtxSetAbridgedFtw(pExtCtx, uSavedFtw); 607 649 } 608 650 } … … 630 672 * XORPS, 128-bit VXORPS 631 673 */ 632 BS3_DECL_FAR(uint8_t) BS3_CMN_NM(bs3CpuInstr3_ xorps)(uint8_t bMode)674 BS3_DECL_FAR(uint8_t) BS3_CMN_NM(bs3CpuInstr3_v_xorps_xorpd_pxor)(uint8_t bMode) 633 675 { 634 676 static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues[] = … … 647 689 static BS3CPUINSTR3_TEST1_T const s_aTests16[] = 648 690 { 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 649 700 { bs3CpuInstr3_xorps_XMM1_XMM2_icebp_c16, 255, RM_REG, T_SSE2, 1, 1, 2, RT_ELEMENTS(s_aValues), s_aValues }, 650 701 { bs3CpuInstr3_xorps_XMM1_FSxBX_icebp_c16, 255, RM_MEM, T_SSE2, 1, 1, 255, RT_ELEMENTS(s_aValues), s_aValues }, … … 654 705 { bs3CpuInstr3_vxorps_YMM1_YMM1_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_256, 1, 1, 255, RT_ELEMENTS(s_aValues), s_aValues }, 655 706 }; 707 656 708 # if ARCH_BITS >= 32 657 709 static BS3CPUINSTR3_TEST1_T const s_aTests32[] = 658 710 { 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 659 720 { bs3CpuInstr3_xorps_XMM1_XMM2_icebp_c32, 255, RM_REG, T_SSE2, 1, 1, 2, RT_ELEMENTS(s_aValues), s_aValues }, 660 721 { bs3CpuInstr3_xorps_XMM1_FSxBX_icebp_c32, 255, RM_MEM, T_SSE2, 1, 1, 255, RT_ELEMENTS(s_aValues), s_aValues }, … … 668 729 static BS3CPUINSTR3_TEST1_T const s_aTests64[] = 669 730 { 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 670 740 { bs3CpuInstr3_xorps_XMM1_XMM2_icebp_c64, 255, RM_REG, T_SSE2, 1, 1, 2, RT_ELEMENTS(s_aValues), s_aValues }, 671 741 { 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 51 51 ; ASSUMES the length is between the start of the function and the .again label. 52 52 ; 53 %ifndef BS3CPUINSTR3_PROC_BEGIN_CMN 53 %ifndef BS3CPUINSTR3_PROC_BEGIN_CMN_DEFINED 54 54 %define BS3CPUINSTR3_PROC_BEGIN_CMN_DEFINED 55 55 %macro BS3CPUINSTR3_PROC_BEGIN_CMN 1 … … 59 59 %endmacro 60 60 %endif 61 62 ; 63 ; PXOR (SSE2) & VPXOR (AVX2) 64 ; 65 BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_pxor_MM1_MM2_icebp 66 pxor mm1, mm2 67 .again: 68 icebp 69 jmp .again 70 BS3_PROC_END_CMN bs3CpuInstr3_pxor_MM1_MM2_icebp 71 72 BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_pxor_MM1_FSxBX_icebp 73 pxor mm1, [fs:xBX] 74 .again: 75 icebp 76 jmp .again 77 BS3_PROC_END_CMN bs3CpuInstr3_pxor_MM1_FSxBX_icebp 78 79 BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_pxor_XMM1_XMM2_icebp 80 pxor xmm1, xmm2 81 .again: 82 icebp 83 jmp .again 84 BS3_PROC_END_CMN bs3CpuInstr3_pxor_XMM1_XMM2_icebp 85 86 BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_pxor_XMM1_FSxBX_icebp 87 pxor xmm1, [fs:xBX] 88 .again: 89 icebp 90 jmp .again 91 BS3_PROC_END_CMN bs3CpuInstr3_pxor_XMM1_FSxBX_icebp 92 93 BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_vpxor_XMM1_XMM1_XMM2_icebp 94 vpxor xmm1, xmm1, xmm2 95 .again: 96 icebp 97 jmp .again 98 BS3_PROC_END_CMN bs3CpuInstr3_vpxor_XMM1_XMM1_XMM2_icebp 99 100 BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_vpxor_XMM1_XMM1_FSxBX_icebp 101 vpxor xmm1, xmm1, [fs:xBX] 102 .again: 103 icebp 104 jmp .again 105 BS3_PROC_END_CMN bs3CpuInstr3_vpxor_XMM1_XMM1_FSxBX_icebp 106 107 BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_vpxor_YMM7_YMM2_YMM3_icebp 108 vpxor ymm7, ymm2, ymm3 109 .again: 110 icebp 111 jmp .again 112 BS3_PROC_END_CMN bs3CpuInstr3_vpxor_YMM7_YMM2_YMM3_icebp 113 114 BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_vpxor_YMM7_YMM2_FSxBX_icebp 115 vpxor ymm7, ymm2, [fs:xBX] 116 .again: 117 icebp 118 jmp .again 119 BS3_PROC_END_CMN bs3CpuInstr3_vpxor_YMM7_YMM2_FSxBX_icebp 120 61 121 62 122 ; … … 111 171 112 172 173 113 174 %endif ; BS3_INSTANTIATING_CMN 114 175 -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c
r95377 r95400 35 35 * Internal Functions * 36 36 *********************************************************************************************************************************/ 37 BS3TESTMODEBYMAX_PROTOTYPES_CMN(bs3CpuInstr3_ xorps);37 BS3TESTMODEBYMAX_PROTOTYPES_CMN(bs3CpuInstr3_v_xorps_xorpd_pxor); 38 38 39 39 … … 43 43 static const BS3TESTMODEBYMAXENTRY g_aTests[] = 44 44 { 45 BS3TESTMODEBYMAXENTRY_CMN(" xorps", bs3CpuInstr3_xorps),45 BS3TESTMODEBYMAXENTRY_CMN("[v]xorps/[v]xorpd/[v]pxor", bs3CpuInstr3_v_xorps_xorpd_pxor), 46 46 }; 47 47
Note:
See TracChangeset
for help on using the changeset viewer.