VirtualBox

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


Ignore:
Timestamp:
Oct 18, 2024 11:34:00 AM (4 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
165297
Message:

ValidationKit/bootsectors: prepare test config tables for 'cvt' family instructions; bugref:10658

  • add back the 'unmasked x87 exception pending' test type
  • add test tables for Intel 64 & IA-32 Architecture SDM Vol 3B Tables 23-4, 23-5, 23-6
  • include a human-intellible test config name in test failure outputs
  • fix some test config table discrepancies
File:
1 edited

Legend:

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

    r106390 r106470  
    482482    uint16_t    fXcr0Sse        : 1;
    483483    uint16_t    fXcr0Avx        : 1;
     484    uint16_t    fX87XcptPending : 1; /** unmasked x87 exception pending. */
    484485    uint16_t    fAligned        : 1; /**< Aligned mem operands. If 0, they will be misaligned and tests w/o mem operands skipped. */
    485486    uint16_t    fAlignCheck     : 1;
     
    487488    uint8_t     bXcptSse;
    488489    uint8_t     bXcptAvx;
     490    char *const pszCfgName;
    489491} BS3CPUINSTR4_CONFIG_T;
    490492/** Pointer to an execution environment configuration. */
     
    622624static uint8_t BS3_FAR *g_pbBufAliasAlloc;
    623625
    624 /** Exception type \#2 test configurations (>=16 byte memory reference, unaligned). */
     626/** Exceptions type 2 (>=16 Byte Memory Reference, not explicitly aligned) test configurations. */
     627/** Intel 64 & IA-32 Architecture SDM Vol 2A Table 2-19, "Type 2 Class Exception Conditions." */
    625628static const BS3CPUINSTR4_CONFIG_T g_aXcptConfig2[] =
    626629{
    627 /*
    628  *   X87 SSE SSE SSE     AVX      SSE        AVX  AVX      SSE       AVX     AMD/SSE <-- applies to
    629  *                               +AVX       +AVX +AMD/SSE           +AMD/SSE
    630  *   CR0 CR0 CR0 CR4     CR4      CR4        XCR0 XCR0                       MXCSR
    631  *   MP, EM, TS, OSFXSR, OSXSAVE, OSXMMEXCPT SSE, AVX,     fAligned, AC/AM,  MM,     bXcptSse,    bXcptAvx */
    632     { 0, 0,  0,  1,      1,       1,         1,   1,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB }, /* #0 */
    633     { 0, 0,  0,  1,      1,       0,         1,   1,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB }, /* #1 */
    634     { 1, 0,  0,  1,      1,       1,         1,   1,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB }, /* #2 */
    635     { 0, 1,  0,  1,      1,       1,         1,   1,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_DB }, /* #3 */
    636     { 0, 0,  1,  1,      1,       1,         1,   1,       1,        0,      0,      X86_XCPT_NM, X86_XCPT_NM }, /* #4 */
    637     { 0, 1,  1,  1,      1,       1,         1,   1,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_NM }, /* #5 */
    638     { 0, 0,  0,  0,      1,       1,         1,   1,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_DB }, /* #6 */
    639     { 0, 0,  0,  1,      0,       1,         1,   1,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_UD }, /* #7 */
    640     { 0, 0,  0,  1,      1,       1,         1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_UD }, /* #8 */
    641     { 0, 0,  0,  1,      1,       1,         0,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_UD }, /* #9 */
     630/*   X87 SSE SSE SSE     AVX      SSE+AVX    AVX  AVX  MMX(SSE) SSE       AVX+    AMD/SSE <-- applies to
     631 *   CR0 CR0 CR0 CR4     CR4      CR4        XCR0 XCR0 FCW                AMD/SSE MXCSR
     632 *   MP, EM, TS, OSFXSR, OSXSAVE, OSXMMEXCPT SSE, AVX, ES+,     fAligned, AC/AM,  MM,     bXcptSse,    bXcptAvx */
     633    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB, "(Normal)" }, /* #0 - normal */
     634    { 0, 0,  0,  1,      1,       0,         1,   1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB, "!MMEXCPT" }, /* #1 - CR4:OSXMMEXCPT: #UD instead of #XF for SIMD exceptions */
     635    { 1, 0,  0,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB, "CR0:MP=1" }, /* #2 - CR0:MP: no effect by itself */
     636    { 0, 1,  0,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_DB, "CR0:EM=1" }, /* #3 - CR0:EM: MMX/SSE => #UD */
     637    { 0, 0,  1,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_NM, X86_XCPT_NM, "CR0:TS=1" }, /* #4 - CR0:TS: MMX/SSE/AVX => #NM */
     638    { 0, 1,  1,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_NM, "CR0:EMTS" }, /* #5 - CR0:EM+TS: MMX/SSE => #UD, AVX => #NM */
     639    { 0, 0,  0,  0,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_DB, "OSFXSR=0" }, /* #6 - CR4:OSFXSR=0: SSE => #UD */
     640    { 0, 0,  0,  1,      0,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_UD, "!OSXSAVE" }, /* #7 - CR4:OSXSAVE=0: AVX => #UD */
     641    { 0, 0,  0,  1,      1,       1,         1,   0,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_UD, "XCR0!AVX" }, /* #8 - XCR0:AVX=0: AVX => #UD */
     642    { 0, 0,  0,  1,      1,       1,         0,   0,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_UD, "XCR0!SSE" }, /* #9 - XCR0:SSE+AVX=0: AVX => #UD */
    642643    /* Memory misalignment and alignment checks: */
    643     { 0, 0,  0,  1,      1,       1,         1,   1,       0,        0,      0,      X86_XCPT_GP, X86_XCPT_DB }, /* #10 */
    644     { 0, 0,  0,  1,      1,       1,         1,   1,       0,        1,      0,      X86_XCPT_GP, X86_XCPT_DB }, /* #11 */
    645     { 0, 0,  0,  1,      1,       1,         1,   1,       1,        1,      0,      X86_XCPT_DB, X86_XCPT_DB }, /* #12 */
     644    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        0,      0,      X86_XCPT_GP, X86_XCPT_DB, "Misalign" }, /* #10 - misaligned data: SSE => #GP */
     645    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        1,      0,      X86_XCPT_GP, X86_XCPT_DB, "AlChkMis" }, /* #11 - misaligned data + CR0:AM + fl:AC: SSE => #GP */
     646    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       1,        1,      0,      X86_XCPT_DB, X86_XCPT_DB, "AlChkAli" }, /* #12 - aligned data + CR0:AM + fl:AC: no effect */
    646647    /* AMD only: */
    647     { 0, 0,  0,  1,      1,       1,         1,   1,       0,        0,      1,      X86_XCPT_DB, X86_XCPT_GP }, /* #13 */
    648     { 0, 0,  0,  1,      1,       1,         1,   1,       0,        1,      1,      X86_XCPT_AC, X86_XCPT_GP }, /* #14 */
     648    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        0,      1,      X86_XCPT_DB, X86_XCPT_GP, "AMDmm-AC" }, /* #13 */
     649    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        1,      1,      X86_XCPT_AC, X86_XCPT_GP, "AMDmm+AC" }, /* #14 */
    649650};
    650651
    651 /** Exception type \#3 test configurations (< 16-byte memory argument). */
     652/** Exceptions type 3 (<16 Byte Memory Reference) test configurations. */
     653/** Intel 64 & IA-32 Architecture SDM Vol 2A Table 2-20, "Type 3 Class Exception Conditions." */
    652654static const BS3CPUINSTR4_CONFIG_T g_aXcptConfig3[] =
    653655{
    654 /*
    655  *   X87 SSE SSE SSE     AVX      SSE        AVX  AVX      SSE       AVX     AMD/SSE <-- applies to
    656  *                               +AVX       +AVX +AMD/SSE           +AMD/SSE
    657  *   CR0 CR0 CR0 CR4     CR4      CR4        XCR0 XCR0                       MXCSR
    658  *   MP, EM, TS, OSFXSR, OSXSAVE, OSXMMEXCPT SSE, AVX,     fAligned, AC/AM,  MM,     bXcptSse,    bXcptAvx */
    659     { 0, 0,  0,  1,      1,       1,         1,   1,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB }, /* #0 */
    660     { 0, 0,  0,  1,      1,       0,         1,   1,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB }, /* #1 */
    661     { 1, 0,  0,  1,      1,       1,         1,   1,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB }, /* #2 */
    662     { 0, 1,  0,  1,      1,       1,         1,   1,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_DB }, /* #3 */
    663     { 0, 0,  1,  1,      1,       1,         1,   1,       1,        0,      0,      X86_XCPT_NM, X86_XCPT_NM }, /* #4 */
    664     { 0, 1,  1,  1,      1,       1,         1,   1,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_NM }, /* #5 */
    665     { 0, 0,  0,  0,      1,       1,         1,   1,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_DB }, /* #6 */
    666     { 0, 0,  0,  1,      0,       1,         1,   1,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_UD }, /* #7 */
    667     { 0, 0,  0,  1,      1,       1,         1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_UD }, /* #8 */
    668     { 0, 0,  0,  1,      1,       1,         0,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_UD }, /* #9 */
     656/*   X87 SSE SSE SSE     AVX      SSE+AVX    AVX  AVX  MMX(SSE) SSE       AVX+    AMD/SSE <-- applies to
     657 *   CR0 CR0 CR0 CR4     CR4      CR4        XCR0 XCR0 FCW                AMD/SSE MXCSR
     658 *   MP, EM, TS, OSFXSR, OSXSAVE, OSXMMEXCPT SSE, AVX, ES+,     fAligned, AC/AM,  MM,     bXcptSse,    bXcptAvx */
     659    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB, "(Normal)" }, /* #0 - normal */
     660    { 0, 0,  0,  1,      1,       0,         1,   1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB, "!MMEXCPT" }, /* #1 - CR4:OSXMMEXCPT: #UD instead of #XF for SIMD exceptions */
     661    { 1, 0,  0,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB, "CR0:MP=1" }, /* #2 - CR0:MP: no effect by itself */
     662    { 0, 1,  0,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_DB, "CR0:EM=1" }, /* #3 - CR0:EM: MMX/SSE => #UD */
     663    { 0, 0,  1,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_NM, X86_XCPT_NM, "CR0:TS=1" }, /* #4 - CR0:TS: MMX/SSE/AVX => #NM */
     664    { 0, 1,  1,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_NM, "CR0:EMTS" }, /* #5 - CR0:EM+TS: MMX/SSE => #UD, AVX => #NM */
     665    { 0, 0,  0,  0,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_DB, "OSFXSR=0" }, /* #6 - CR4:OSFXSR=0: SSE => #UD */
     666    { 0, 0,  0,  1,      0,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_UD, "!OSXSAVE" }, /* #7 - CR4:OSXSAVE=0: AVX => #UD */
     667    { 0, 0,  0,  1,      1,       1,         1,   0,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_UD, "XCR0!AVX" }, /* #8 - XCR0:AVX=0: AVX => #UD */
     668    { 0, 0,  0,  1,      1,       1,         0,   0,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_UD, "XCR0!SSE" }, /* #9 - XCR0:SSE+AVX=0: AVX => #UD */
    669669    /* Memory misalignment and alignment checks: */
    670     { 0, 0,  0,  1,      1,       1,         1,   1,       0,        0,      0,      X86_XCPT_DB, X86_XCPT_DB }, /* #10 */  /* [Avx]:DB */
    671     { 0, 0,  0,  1,      1,       1,         1,   1,       0,        1,      0,      X86_XCPT_AC, X86_XCPT_AC }, /* #11 */  /* [Avx]:AC */
    672     { 0, 0,  0,  1,      1,       1,         1,   1,       1,        1,      0,      X86_XCPT_DB, X86_XCPT_DB }, /* #12 */
     670    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        0,      0,      X86_XCPT_DB, X86_XCPT_DB, "Misalign" }, /* #10 - misaligned data: no effect */
     671    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        1,      0,      X86_XCPT_AC, X86_XCPT_AC, "AlChkMis" }, /* #11 - misaligned data + CR0:AM + fl:AC: MMX/SSE/AVX => #AC */
     672    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       1,        1,      0,      X86_XCPT_DB, X86_XCPT_DB, "AlChkAli" }, /* #12 - aligned data + CR0:AM + fl:AC: no effect */
    673673    /* AMD only: */
    674     { 0, 0,  0,  1,      1,       1,         1,   1,       0,        0,      1,      X86_XCPT_DB, X86_XCPT_GP }, /* #13 */
    675     { 0, 0,  0,  1,      1,       1,         1,   1,       0,        1,      1,      X86_XCPT_AC, X86_XCPT_GP }, /* #14 */
     674    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        0,      1,      X86_XCPT_DB, X86_XCPT_GP, "AMDmm-AC" }, /* #13 */
     675    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        1,      1,      X86_XCPT_AC, X86_XCPT_GP, "AMDmm+AC" }, /* #14 */
    676676};
    677677
    678 /** Exception type \#4 test configurations (>=16 byte memory arguments, no alignment, no floating-point exceptions). */
     678/** Exceptions type 4 (>=16 Byte Memory Reference, not explicitly aligned, No Floating-point Exceptions) test configurations. */
     679/** Intel 64 & IA-32 Architecture SDM Vol 2A Table 2-21, "Type 4 Class Exception Conditions." */
     680/** Identical to g_aXcptConfig2 except no '!MMEXCPT' test for instructions which cannot raise SIMD exceptions */
    679681static const BS3CPUINSTR4_CONFIG_T g_aXcptConfig4[] =
    680682{
    681 /*
    682  *   X87 SSE SSE SSE     AVX      SSE        AVX  AVX      SSE       AVX     AMD/SSE <-- applies to
    683  *                               +AVX       +AVX +AMD/SSE           +AMD/SSE
    684  *   CR0 CR0 CR0 CR4     CR4      CR4        XCR0 XCR0                       MXCSR
    685  *   MP, EM, TS, OSFXSR, OSXSAVE, OSXMMEXCPT SSE, AVX,     fAligned, AC/AM,  MM,     bXcptSse,    bXcptAvx */
    686     { 0, 0,  0,  1,      1,       1,         1,   1,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB }, /* #0 */
    687     { 0, 0,  0,  1,      1,       0,         1,   1,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB }, /* #1 */
    688     { 1, 0,  0,  1,      1,       1,         1,   1,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB }, /* #2 */
    689     { 0, 1,  0,  1,      1,       1,         1,   1,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_DB }, /* #3 */
    690     { 0, 0,  1,  1,      1,       1,         1,   1,       1,        0,      0,      X86_XCPT_NM, X86_XCPT_NM }, /* #4 */
    691     { 0, 1,  1,  1,      1,       1,         1,   1,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_NM }, /* #5 */
    692     { 0, 0,  0,  0,      1,       1,         1,   1,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_DB }, /* #6 */
    693     { 0, 0,  0,  1,      0,       1,         1,   1,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_UD }, /* #7 */
    694     { 0, 0,  0,  1,      1,       1,         1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_UD }, /* #8 */
    695     { 0, 0,  0,  1,      1,       1,         0,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_UD }, /* #9 */
     683/*   X87 SSE SSE SSE     AVX      SSE+AVX    AVX  AVX  MMX(SSE) SSE       AVX+    AMD/SSE <-- applies to
     684 *   CR0 CR0 CR0 CR4     CR4      CR4        XCR0 XCR0 FCW                AMD/SSE MXCSR
     685 *   MP, EM, TS, OSFXSR, OSXSAVE, OSXMMEXCPT SSE, AVX, ES+,     fAligned, AC/AM,  MM,     bXcptSse,    bXcptAvx */
     686    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB, "(Normal)" }, /* #0 - normal */
     687    { 1, 0,  0,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB, "CR0:MP=1" }, /* #1 - CR0:MP: no effect by itself */
     688    { 0, 1,  0,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_DB, "CR0:EM=1" }, /* #2 - CR0:EM: MMX/SSE => #UD */
     689    { 0, 0,  1,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_NM, X86_XCPT_NM, "CR0:TS=1" }, /* #3 - CR0:TS: MMX/SSE/AVX => #NM */
     690    { 0, 1,  1,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_NM, "CR0:EMTS" }, /* #4 - CR0:EM+TS: MMX/SSE => #UD, AVX => #NM */
     691    { 0, 0,  0,  0,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_DB, "OSFXSR=0" }, /* #5 - CR4:OSFXSR=0: SSE => #UD */
     692    { 0, 0,  0,  1,      0,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_UD, "!OSXSAVE" }, /* #6 - CR4:OSXSAVE=0: AVX => #UD */
     693    { 0, 0,  0,  1,      1,       1,         1,   0,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_UD, "XCR0!AVX" }, /* #7 - XCR0:AVX=0: AVX => #UD */
     694    { 0, 0,  0,  1,      1,       1,         0,   0,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_UD, "XCR0!SSE" }, /* #8 - XCR0:SSE+AVX=0: AVX => #UD */
    696695    /* Memory misalignment and alignment checks: */
    697     { 0, 0,  0,  1,      1,       1,         1,   1,       0,        0,      0,      X86_XCPT_GP, X86_XCPT_DB }, /* #10 */
    698     { 0, 0,  0,  1,      1,       1,         1,   1,       0,        1,      0,      X86_XCPT_GP, X86_XCPT_DB }, /* #11 */
    699     { 0, 0,  0,  1,      1,       1,         1,   1,       1,        1,      0,      X86_XCPT_DB, X86_XCPT_DB }, /* #12 */
     696    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        0,      0,      X86_XCPT_GP, X86_XCPT_DB, "Misalign" }, /* #9 - misaligned data: SSE => #GP */
     697    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        1,      0,      X86_XCPT_GP, X86_XCPT_DB, "AlChkMis" }, /* #10 - misaligned data + CR0:AM + fl:AC: SSE => #GP */
     698    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       1,        1,      0,      X86_XCPT_DB, X86_XCPT_DB, "AlChkAli" }, /* #11 - aligned data + CR0:AM + fl:AC: no effect */
    700699    /* AMD only: */
    701     { 0, 0,  0,  1,      1,       1,         1,   1,       0,        0,      1,      X86_XCPT_DB, X86_XCPT_GP }, /* #13 */
    702     { 0, 0,  0,  1,      1,       1,         1,   1,       1,        1,      1,      X86_XCPT_AC, X86_XCPT_GP }, /* #14 */
     700    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        0,      1,      X86_XCPT_DB, X86_XCPT_GP, "AMDmm-AC" }, /* #12 */
     701    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        1,      1,      X86_XCPT_AC, X86_XCPT_GP, "AMDmm+AC" }, /* #1j */
    703702};
    704703
    705 /** Exceptions type 5 (<16 byte memory arguments and not floating-point exceptions). */
     704/** Exceptions type 5 (<16 Byte Memory Reference, No Floating-point Exceptions) test configurations. */
     705/** Intel 64 & IA-32 Architecture SDM Vol 2A Table 2-22, "Type 5 Class Exception Conditions." */
     706/** Identical to g_aXcptConfig3 except no '!MMEXCPT' test for instructions which cannot raise SIMD exceptions */
    706707static const BS3CPUINSTR4_CONFIG_T g_aXcptConfig5[] =
    707708{
    708 /*
    709  *   X87 SSE SSE SSE     AVX      SSE        AVX  AVX      SSE       AVX     AMD/SSE <-- applies to
    710  *                               +AVX       +AVX +AMD/SSE           +AMD/SSE
    711  *   CR0 CR0 CR0 CR4     CR4      CR4        XCR0 XCR0                       MXCSR
    712  *   MP, EM, TS, OSFXSR, OSXSAVE, OSXMMEXCPT SSE, AVX,     fAligned, AC/AM,  MM,     bXcptSse,    bXcptAvx */
    713     { 0, 0,  0,  1,      1,       1,         1,   1,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB }, /* #0 */
    714     { 0, 0,  0,  1,      1,       0,         1,   1,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB }, /* #1 */
    715     { 1, 0,  0,  1,      1,       1,         1,   1,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB }, /* #2 */
    716     { 0, 1,  0,  1,      1,       1,         1,   1,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_DB }, /* #3 */
    717     { 0, 0,  1,  1,      1,       1,         1,   1,       1,        0,      0,      X86_XCPT_NM, X86_XCPT_NM }, /* #4 */
    718     { 0, 1,  1,  1,      1,       1,         1,   1,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_NM }, /* #5 */
    719     { 0, 0,  0,  0,      1,       1,         1,   1,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_DB }, /* #6 */
    720     { 0, 0,  0,  1,      0,       1,         1,   1,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_UD }, /* #7 */
    721     { 0, 0,  0,  1,      1,       1,         1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_UD }, /* #8 */
    722     { 0, 0,  0,  1,      1,       1,         0,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_UD }, /* #9 */
     709/*   X87 SSE SSE SSE     AVX      SSE+AVX    AVX  AVX  MMX(SSE) SSE       AVX+    AMD/SSE <-- applies to
     710 *   CR0 CR0 CR0 CR4     CR4      CR4        XCR0 XCR0 FCW                AMD/SSE MXCSR
     711 *   MP, EM, TS, OSFXSR, OSXSAVE, OSXMMEXCPT SSE, AVX, ES+,     fAligned, AC/AM,  MM,     bXcptSse,    bXcptAvx */
     712    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB, "(Normal)" }, /* #0 - normal */
     713    { 1, 0,  0,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB, "CR0:MP=1" }, /* #1 - CR0:MP: no effect by itself */
     714    { 0, 1,  0,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_DB, "CR0:EM=1" }, /* #2 - CR0:EM: MMX/SSE => #UD */
     715    { 0, 0,  1,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_NM, X86_XCPT_NM, "CR0:TS=1" }, /* #3 - CR0:TS: MMX/SSE/AVX => #NM */
     716    { 0, 1,  1,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_NM, "CR0:EMTS" }, /* #4 - CR0:EM+TS: MMX/SSE => #UD, AVX => #NM */
     717    { 0, 0,  0,  0,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_DB, "OSFXSR=0" }, /* #5 - CR4:OSFXSR=0: SSE => #UD */
     718    { 0, 0,  0,  1,      0,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_UD, "!OSXSAVE" }, /* #6 - CR4:OSXSAVE=0: AVX => #UD */
     719    { 0, 0,  0,  1,      1,       1,         1,   0,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_UD, "XCR0!AVX" }, /* #7 - XCR0:AVX=0: AVX => #UD */
     720    { 0, 0,  0,  1,      1,       1,         0,   0,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_UD, "XCR0!SSE" }, /* #8 - XCR0:SSE+AVX=0: AVX => #UD */
    723721    /* Memory misalignment and alignment checks: */
    724     { 0, 0,  0,  1,      1,       1,         1,   1,       0,        0,      0,      X86_XCPT_DB, X86_XCPT_DB }, /* #10 */
    725     { 0, 0,  0,  1,      1,       1,         1,   1,       0,        1,      0,      X86_XCPT_AC, X86_XCPT_AC }, /* #11 */
    726     { 0, 0,  0,  1,      1,       1,         1,   1,       1,        1,      0,      X86_XCPT_DB, X86_XCPT_DB }, /* #12 */
     722    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        0,      0,      X86_XCPT_DB, X86_XCPT_DB, "Misalign" }, /* #9 - misaligned data: no effect */
     723    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        1,      0,      X86_XCPT_AC, X86_XCPT_AC, "AlChkMis" }, /* #10 - misaligned data + CR0:AM + fl:AC: MMX/SSE/AVX => #AC */
     724    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       1,        1,      0,      X86_XCPT_DB, X86_XCPT_DB, "AlChkAli" }, /* #11 - aligned data + CR0:AM + fl:AC: no effect */
    727725    /* AMD only: */
    728     { 0, 0,  0,  1,      1,       1,         1,   1,       0,        0,      1,      X86_XCPT_DB, X86_XCPT_GP }, /* #13 */
    729     { 0, 0,  0,  1,      1,       1,         1,   1,       1,        1,      1,      X86_XCPT_AC, X86_XCPT_GP }, /* #14 */
     726    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        0,      1,      X86_XCPT_DB, X86_XCPT_GP, "AMDmm-AC" }, /* #12 */
     727    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        1,      1,      X86_XCPT_AC, X86_XCPT_GP, "AMDmm+AC" }, /* #13 */
     728};
     729
     730/** Exceptions type 23_4 test configurations. */
     731/** Intel 64 & IA-32 Architecture SDM Vol 3B Table 23-4, "Exception Conditions for Legacy SIMD/MMX Instructions with FP Exception and 16-Byte Alignment" */
     732/** For our purposes: same as g_aXcptConfig3 except drop the OSXSAVE & XCR0 tests, add pending x87 exception test */
     733/** Instructions: cvtpd2pi, cvttpd2pi */
     734static const BS3CPUINSTR4_CONFIG_T g_aXcptConfig23_4[] =
     735{
     736/*   X87 SSE SSE SSE     AVX      SSE+AVX    AVX  AVX  MMX(SSE) SSE       AVX+    AMD/SSE <-- applies to
     737 *   CR0 CR0 CR0 CR4     CR4      CR4        XCR0 XCR0 FCW                AMD/SSE MXCSR
     738 *   MP, EM, TS, OSFXSR, OSXSAVE, OSXMMEXCPT SSE, AVX, ES+,     fAligned, AC/AM,  MM,     bXcptSse,    bXcptAvx */
     739    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB, "(Normal)" }, /* #0 - normal */
     740    { 0, 0,  0,  1,      1,       0,         1,   1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB, "!MMEXCPT" }, /* #1 - CR4:OSXMMEXCPT: #UD instead of #XF for SIMD exceptions */
     741    { 1, 0,  0,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB, "CR0:MP=1" }, /* #2 - CR0:MP: no effect by itself */
     742    { 0, 1,  0,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_DB, "CR0:EM=1" }, /* #3 - CR0:EM: MMX/SSE => #UD */
     743    { 0, 0,  1,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_NM, X86_XCPT_NM, "CR0:TS=1" }, /* #4 - CR0:TS: MMX/SSE/AVX => #NM */
     744    { 0, 1,  1,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_NM, "CR0:EMTS" }, /* #5 - CR0:EM+TS: MMX/SSE => #UD, AVX => #NM */
     745    { 0, 0,  0,  0,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_DB, "OSFXSR=0" }, /* #6 - CR4:OSFXSR=0: SSE => #UD */
     746    { 0, 0,  0,  1,      1,       1,         1,   1,   1,       1,        0,      0,      X86_XCPT_MF, X86_XCPT_DB, "x87Excpt" }, /* #7 - pending x87 exception */
     747    /* AMD only: */
     748    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        0,      1,      X86_XCPT_DB, X86_XCPT_GP, "AMDmm-AC" }, /* #8 */
     749    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        1,      1,      X86_XCPT_AC, X86_XCPT_GP, "AMDmm+AC" }, /* #9 */
     750    /* Memory misalignment and alignment checks: */
     751    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        0,      0,      X86_XCPT_DB, X86_XCPT_DB, "Misalign" }, /* #10 - misaligned data: no effect */
     752    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        1,      0,      X86_XCPT_AC, X86_XCPT_AC, "AlChkMis" }, /* #11 - misaligned data + CR0:AM + fl:AC: MMX/SSE/AVX => #AC */
     753    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       1,        1,      0,      X86_XCPT_DB, X86_XCPT_DB, "AlChkAli" }, /* #12 - aligned data + CR0:AM + fl:AC: no effect */
     754};
     755
     756/** Exceptions type 23_5 test configurations. */
     757/** Intel 64 & IA-32 Architecture SDM Vol 3B Table 23-5, "Exception Conditions for Legacy SIMD/MMX Instructions with XMM and FP Exception" */
     758/** For our purposes: same as g_aXcptConfig4 except drop the OSXSAVE & XCR0 tests, add pending x87 exception test */
     759/** Instructions: cvtpi2ps, cvtps2pi, cvttps2pi */
     760static const BS3CPUINSTR4_CONFIG_T g_aXcptConfig23_5[] =
     761{
     762/*   X87 SSE SSE SSE     AVX      SSE+AVX    AVX  AVX  MMX(SSE) SSE       AVX+    AMD/SSE <-- applies to
     763 *   CR0 CR0 CR0 CR4     CR4      CR4        XCR0 XCR0 FCW                AMD/SSE MXCSR
     764 *   MP, EM, TS, OSFXSR, OSXSAVE, OSXMMEXCPT SSE, AVX, ES+,     fAligned, AC/AM,  MM,     bXcptSse,    bXcptAvx */
     765    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB, "(Normal)" }, /* #0 - normal */
     766    { 0, 0,  0,  1,      1,       0,         1,   1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB, "!MMEXCPT" }, /* #1 - CR4:OSXMMEXCPT: #UD instead of #XF for SIMD exceptions */
     767    { 1, 0,  0,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB, "CR0:MP=1" }, /* #2 - CR0:MP: no effect by itself */
     768    { 0, 1,  0,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_DB, "CR0:EM=1" }, /* #3 - CR0:EM: MMX/SSE => #UD */
     769    { 0, 0,  1,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_NM, X86_XCPT_NM, "CR0:TS=1" }, /* #4 - CR0:TS: MMX/SSE/AVX => #NM */
     770    { 0, 1,  1,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_NM, "CR0:EMTS" }, /* #5 - CR0:EM+TS: MMX/SSE => #UD, AVX => #NM */
     771    { 0, 0,  0,  0,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_DB, "OSFXSR=0" }, /* #6 - CR4:OSFXSR=0: SSE => #UD */
     772    { 0, 0,  0,  1,      1,       1,         1,   1,   1,       1,        0,      0,      X86_XCPT_MF, X86_XCPT_DB, "x87Excpt" }, /* #7 - pending x87 exception */
     773    /* AMD only: */
     774    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        0,      1,      X86_XCPT_DB, X86_XCPT_GP, "AMDmm-AC" }, /* #8 */
     775    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        1,      1,      X86_XCPT_AC, X86_XCPT_GP, "AMDmm+AC" }, /* #9 */
     776    /* Memory misalignment and alignment checks: */
     777    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        0,      0,      X86_XCPT_GP, X86_XCPT_DB, "Misalign" }, /* #10 - misaligned data: SSE => #GP */
     778    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        1,      0,      X86_XCPT_GP, X86_XCPT_DB, "AlChkMis" }, /* #11 - misaligned data + CR0:AM + fl:AC: SSE => #GP */
     779    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       1,        1,      0,      X86_XCPT_DB, X86_XCPT_DB, "AlChkAli" }, /* #12 - aligned data + CR0:AM + fl:AC: no effect */
     780};
     781
     782/** Exceptions type 23_6 test configurations. */
     783/** Intel 64 & IA-32 Architecture SDM Vol 3B Table 23-6, "Exception Conditions for Legacy SIMD/MMX Instructions with XMM and without FP Exception" */
     784/** For our purposes: same as g_aXcptConfig4 except drop the OSXSAVE, OSXMMEXCPT, XCR0 tests */
     785/** Instructions: cvtpi2pd */
     786static const BS3CPUINSTR4_CONFIG_T g_aXcptConfig23_6[] =
     787{
     788/*   X87 SSE SSE SSE     AVX      SSE+AVX    AVX  AVX  MMX(SSE) SSE       AVX+    AMD/SSE <-- applies to
     789 *   CR0 CR0 CR0 CR4     CR4      CR4        XCR0 XCR0 FCW                AMD/SSE MXCSR
     790 *   MP, EM, TS, OSFXSR, OSXSAVE, OSXMMEXCPT SSE, AVX, ES+,     fAligned, AC/AM,  MM,     bXcptSse,    bXcptAvx */
     791    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB, "(Normal)" }, /* #0 - normal */
     792    { 1, 0,  0,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_DB, X86_XCPT_DB, "CR0:MP=1" }, /* #1 - CR0:MP: no effect by itself */
     793    { 0, 1,  0,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_DB, "CR0:EM=1" }, /* #2 - CR0:EM: MMX/SSE => #UD */
     794    { 0, 0,  1,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_NM, X86_XCPT_NM, "CR0:TS=1" }, /* #3 - CR0:TS: MMX/SSE/AVX => #NM */
     795    { 0, 1,  1,  1,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_NM, "CR0:EMTS" }, /* #4 - CR0:EM+TS: MMX/SSE => #UD, AVX => #NM */
     796    { 0, 0,  0,  0,      1,       1,         1,   1,   0,       1,        0,      0,      X86_XCPT_UD, X86_XCPT_DB, "OSFXSR=0" }, /* #5 - CR4:OSFXSR=0: SSE => #UD */
     797    /* Memory misalignment and alignment checks: */
     798    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        0,      0,      X86_XCPT_GP, X86_XCPT_DB, "Misalign" }, /* #6 - misaligned data: SSE => #GP */
     799    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        1,      0,      X86_XCPT_GP, X86_XCPT_DB, "AlChkMis" }, /* #7 - misaligned data + CR0:AM + fl:AC: SSE => #GP */
     800    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       1,        1,      0,      X86_XCPT_DB, X86_XCPT_DB, "AlChkAli" }, /* #8 - aligned data + CR0:AM + fl:AC: no effect */
     801    /* AMD only: */
     802    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        0,      1,      X86_XCPT_DB, X86_XCPT_GP, "AMDmm-AC" }, /* #9 */
     803    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        1,      1,      X86_XCPT_AC, X86_XCPT_GP, "AMDmm+AC" }, /* #10 */
    730804};
    731805
     
    19742048        return false;
    19752049
     2050    /* Currently we skip pending x87 exceptions in real mode as they cannot be
     2051       caught, given that we preserve the bios int10h. */
     2052    if (pConfig->fX87XcptPending && BS3_MODE_IS_RM_OR_V86(bMode))
     2053        return false;
     2054
    19762055    /*
    19772056     * Modify the test context.
     
    20302109    }
    20312110
    2032     /** @todo Can we remove this? x87 FPU and SIMD are independent. */
    2033     Bs3ExtCtxSetFsw(pExtCtx, pSavedCfg->uFsw & ~(X86_FSW_ES | X86_FSW_B));
     2111    if (!pConfig->fX87XcptPending)
     2112        Bs3ExtCtxSetFsw(pExtCtx, pSavedCfg->uFsw & ~(X86_FSW_ES | X86_FSW_B));
     2113    else
     2114    {
     2115        Bs3ExtCtxSetFcw(pExtCtx, pSavedCfg->uFcw & ~X86_FCW_ZM);
     2116        Bs3ExtCtxSetFsw(pExtCtx, pSavedCfg->uFsw | X86_FSW_ZE | X86_FSW_ES | X86_FSW_B);
     2117        pCtx->cr0.u32 |= X86_CR0_NE;
     2118    }
    20342119
    20352120    if (pConfig->fMxCsrMM)
     
    29653050                                                    : fSseInstr ? paConfigs[iCfg].bXcptSse
    29663051                                                    : BS3_MODE_IS_RM_OR_V86(bMode) ? X86_XCPT_UD : paConfigs[iCfg].bXcptAvx;
     3052                    /** @todo puts bRing[0..3] in 1xxxx digit, iCfg[0..14] in 11xx digits, iTest[0..80+] in 1x digit, and max(cRecompRuns, cValues)[0..80+] in 1 digit -- needs 32 bits */
    29673053                    uint16_t         idTestStep     = bRing * 10000 + iCfg * 100 + iTest * 10;
    29683054                    unsigned         cRecompRuns    = 0;
     
    30293115                            if (cErrors != Bs3TestSubErrorCount())
    30303116                            {
    3031                                 if (paConfigs[iCfg].fAligned)
    3032                                     Bs3TestFailedF("%s: ring-%d/cfg#%u/test#%u/value#%u failed (bXcptExpect=%u %s, %s %u-bit)",
    3033                                                    Bs3GetModeName(bMode), bRing, iCfg, iTest, iVal,
    3034                                                    bXcptExpect, bs3CpuInstr4XcptName(bXcptExpect), fSseInstr ? "SSE" : "AVX", cbOperand * 8);
    3035                                 else
    3036                                     Bs3TestFailedF("%s: ring-%d/cfg#%u/test#%u/value#%u failed (bXcptExpect=%u %s, puMemOp=%p, EFLAGS=%#RX32, %s %u-bit)",
    3037                                                    Bs3GetModeName(bMode), bRing, iCfg, iTest, iVal,
    3038                                                    bXcptExpect, bs3CpuInstr4XcptName(bXcptExpect), puMemOp,
    3039                                                    TrapFrame.Ctx.rflags.u32, fSseInstr ? "SSE" : "AVX", cbOperand * 8);
     3117#define PUMEMOP_MAXLEN          sizeof("puMemOp=0x0123456789abcdef, EFLAGS=0x01234567, ")
     3118                                char szPuMemOpStr[PUMEMOP_MAXLEN] = "";
     3119
     3120                                if (!paConfigs[iCfg].fAligned)
     3121                                    Bs3StrPrintf(szPuMemOpStr, PUMEMOP_MAXLEN, "puMemOp=%p, EFLAGS=%#RX32, ", puMemOp, TrapFrame.Ctx.rflags.u32);
     3122                                Bs3TestFailedF("%s: ring-%d/%u:%s/tst#%u/val#%u failed (bXcptExpect=%u %s, %s%s-%u)",
     3123                                               Bs3GetModeName(bMode), bRing, iCfg, paConfigs[iCfg].pszCfgName, iTest, iVal, bXcptExpect,
     3124                                               bs3CpuInstr4XcptName(bXcptExpect), szPuMemOpStr, fSseInstr ? "SSE" : "AVX", cbOperand * 8);
    30403125                                Bs3TestPrintf("\n");
    30413126                            }
     
    1259912684    static BS3CPUINSTR4_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR4_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
    1260012685    unsigned const                         iTest       = BS3CPUINSTR4_TEST_MODES_INDEX(bMode);
     12686    /** Note: Intel 64 & IA-32 Architecture SDM Vol 2B says Table 2-19, "Type 2 Class Exception Conditions."; testing says Type 3 */
    1260112687    return bs3CpuInstr4_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
    1260212688                                        g_aXcptConfig3, RT_ELEMENTS(g_aXcptConfig3));
     
    1521215298    unsigned const                         iTest       = BS3CPUINSTR4_TEST_MODES_INDEX(bMode);
    1521315299    return bs3CpuInstr4_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
    15214                                         g_aXcptConfig5, RT_ELEMENTS(g_aXcptConfig5));
     15300                                        g_aXcptConfig3, RT_ELEMENTS(g_aXcptConfig3));
    1521515301}
    1521615302
     
    1564215728    unsigned const                         iTest       = BS3CPUINSTR4_TEST_MODES_INDEX(bMode);
    1564315729    return bs3CpuInstr4_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
    15644                                         g_aXcptConfig5, RT_ELEMENTS(g_aXcptConfig5));
     15730                                        g_aXcptConfig3, RT_ELEMENTS(g_aXcptConfig3));
    1564515731}
    1564615732
     
    1589815984    unsigned const                         iTest       = BS3CPUINSTR4_TEST_MODES_INDEX(bMode);
    1589915985    return bs3CpuInstr4_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
    15900                                         g_aXcptConfig2, RT_ELEMENTS(g_aXcptConfig2));
     15986                                        g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4));
    1590115987}
    1590215988
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