VirtualBox

Changeset 106814 in vbox


Ignore:
Timestamp:
Nov 1, 2024 2:01:09 AM (5 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
165715
Message:

ValidationKit/bootsectors: Implement SIMD FP testcases for cvtpi2pd, cvtpd2pi, cvttpd2pi, and several IEM fixes; bugref:10658; jiraref:VBP-1206

IEM:

  • fix IEM cvttpd2pi, cvttps2pi, cvtps2pi, cvtpd2pi failing to raise x87/MMX exceptions
  • fix IEM cvtpi2ps incorrectly raising x87/MMX exceptions for non-MMX instructions

ValKit bs3-cpu-instr-4 test setup:

  • add FP64_x2 value bar macros
  • fix SDM exception table 23-4/5/6 test cfgs
  • test cvtpi2ps, cvtps2pi, cvttps2pi with correct exceptions: table 23-5
  • test cvtsi2ss, cvtss2si, cvttss2si with correct exceptions: class 3

ValKit bs3-cpu-instr-4 test worker:

  • add ability to mark an instruction test immune to a particular exception

ValKit bs3-cpu-instr-4 tests:

  • add tests for cvtpi2pd, cvtpd2pi, cvttpd2pi
Location:
trunk/src/VBox
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstTwoByte0f.cpp.h

    r106695 r106814  
    36213621        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    36223622        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
    3623         IEM_MC_MAYBE_RAISE_FPU_XCPT();
    36243623
    36253624        IEM_MC_PREPARE_FPU_USAGE();
     
    39843983        IEM_MC_ARG_LOCAL_REF(uint64_t *,    pu64Dst, u64Dst,    0);
    39853984        IEM_MC_ARG(uint64_t,                u64Src,             1);
     3985        IEM_MC_MAYBE_RAISE_FPU_XCPT();
    39863986        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
    39873987        IEM_MC_PREPARE_FPU_USAGE();
     
    40094009        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    40104010        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
     4011        IEM_MC_MAYBE_RAISE_FPU_XCPT();
    40114012        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
    40124013        IEM_MC_FETCH_MEM_U64(u64Src, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
     
    40394040        IEM_MC_ARG_LOCAL_REF(uint64_t *,    pu64Dst, u64Dst,    0);
    40404041        IEM_MC_ARG(PCX86XMMREG,             pSrc,               1);
     4042        IEM_MC_MAYBE_RAISE_FPU_XCPT();
    40414043        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
    40424044        IEM_MC_PREPARE_FPU_USAGE();
     
    40654067        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    40664068        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
     4069        IEM_MC_MAYBE_RAISE_FPU_XCPT();
    40674070        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
    40684071        IEM_MC_FETCH_MEM_XMM_ALIGN_SSE(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
     
    42904293        IEM_MC_ARG(uint64_t,                u64Src,             1);
    42914294
     4295        IEM_MC_MAYBE_RAISE_FPU_XCPT();
    42924296        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
    42934297        IEM_MC_PREPARE_FPU_USAGE();
     
    43154319        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    43164320        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
     4321        IEM_MC_MAYBE_RAISE_FPU_XCPT();
    43174322        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
    43184323        IEM_MC_FETCH_MEM_U64(u64Src, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
     
    43464351        IEM_MC_ARG(PCX86XMMREG,             pSrc,               1);
    43474352
     4353        IEM_MC_MAYBE_RAISE_FPU_XCPT();
    43484354        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
    43494355        IEM_MC_PREPARE_FPU_USAGE();
     
    43724378        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    43734379        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
     4380        IEM_MC_MAYBE_RAISE_FPU_XCPT();
    43744381        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
    43754382        IEM_MC_FETCH_MEM_XMM_ALIGN_SSE(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-4.c32

    r106780 r106814  
    446446 * intended to be used for for unused arguments in scalar instructions.
    447447 */
     448#define FP64_0_x2(a_Sign)                   FP64_0(a_Sign), FP64_0(a_Sign)
    448449#define FP64_0_x3(a_Sign)                   FP64_0(a_Sign), FP64_0(a_Sign), FP64_0(a_Sign)
    449 #define FP64_RAND_x3_V0                     FP64_SNAN(1),       FP64_DENORM_MIN(0), FP64_RAND_V2(0)
    450 #define FP64_RAND_x3_V1                     FP64_DENORM_MAX(1), FP64_1(1),          FP64_RAND_V3(1)
    451 #define FP64_RAND_x3_V2                     FP64_RAND_V1(1),    FP64_RAND_V0(0),    FP64_QNAN(0)
    452 #define FP64_RAND_x3_V3                     FP64_NORM_V1(0),    FP64_INF(1),        FP64_NORM_V0(1)
     450#define FP64_RAND_x2_V0                     FP64_SNAN(1),       FP64_DENORM_MIN(0)
     451#define FP64_RAND_x3_V0                     FP64_RAND_x2_V0,    FP64_RAND_V2(0)
     452#define FP64_RAND_x2_V1                     FP64_DENORM_MAX(1), FP64_1(1)
     453#define FP64_RAND_x3_V1                     FP64_RAND_x2_V1,    FP64_RAND_V3(1)
     454#define FP64_RAND_x2_V2                     FP64_RAND_V1(1),    FP64_RAND_V0(0)
     455#define FP64_RAND_x3_V2                     FP64_RAND_x2_V2,    FP64_QNAN(0)
     456#define FP64_RAND_x2_V3                     FP64_NORM_V1(0),    FP64_INF(1)
     457#define FP64_RAND_x3_V3                     FP64_RAND_x2_V3,    FP64_NORM_V0(1)
    453458#define FP64_ROW_UNUSED                     FP64_1(0),          FP64_RAND_x3_V0
    454459#define FP64_x3_UNUSED                      FP64_RAND_x3_V1
     
    777782    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        1,      1,      X86_XCPT_AC, X86_XCPT_GP, "AMDmm+AC" }, /* #9 */
    778783    /* Memory misalignment and alignment checks: */
    779     { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        0,      0,      X86_XCPT_DB, X86_XCPT_DB, "Misalign" }, /* #10 - misaligned data: no effect */
    780     { 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 */
     784    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        0,      0,      X86_XCPT_GP, X86_XCPT_DB, "Misalign" }, /* #10 - misaligned data: SSE => #GP */
     785    { 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 */
    781786    { 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 */
    782787};
     
    803808    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        1,      1,      X86_XCPT_AC, X86_XCPT_GP, "AMDmm+AC" }, /* #9 */
    804809    /* Memory misalignment and alignment checks: */
    805     { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        0,      0,      X86_XCPT_GP, X86_XCPT_DB, "Misalign" }, /* #10 - misaligned data: SSE => #GP */
    806     { 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 */
     810    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        0,      0,      X86_XCPT_DB, X86_XCPT_DB, "Misalign" }, /* #10 - misaligned data: no effect */
     811    { 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 */
    807812    { 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 */
    808813};
     
    824829    { 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 */
    825830    /* Memory misalignment and alignment checks: */
    826     { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        0,      0,      X86_XCPT_GP, X86_XCPT_DB, "Misalign" }, /* #6 - misaligned data: SSE => #GP */
    827     { 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 */
     831    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        0,      0,      X86_XCPT_DB, X86_XCPT_DB, "Misalign" }, /* #6 - misaligned data: no effect */
     832    { 0, 0,  0,  1,      1,       1,         1,   1,   0,       0,        1,      0,      X86_XCPT_AC, X86_XCPT_AC, "AlChkMis" }, /* #7 - misaligned data + CR0:AM + fl:AC: MMX/SSE/AVX => #AC */
    828833    { 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 */
    829834    /* AMD only: */
     
    25902595#define BS3_XCPT_ALWAYS 0x80
    25912596#define BS3_XCPT_UD     (X86_XCPT_UD | BS3_XCPT_ALWAYS)
     2597#define BS3_XCPT_NEVER  0x40
     2598#define BS3_XCPT_NOT_MF (X86_XCPT_MF | BS3_XCPT_NEVER)
    25922599
    25932600typedef struct BS3CPUINSTR4_TEST1_MODE_T
     
    31123119                            bXcptExpect = pTest->bAltXcpt; /* they generally don't raise #AC */
    31133120                    }
     3121
     3122                    if ((pTest->bAltXcpt & BS3_XCPT_NEVER) && (pTest->bAltXcpt != 255) && (bXcptExpect == (pTest->bAltXcpt & ~BS3_XCPT_NEVER)))
     3123                        bXcptExpect = X86_XCPT_DB;
    31143124
    31153125                    if (fPf && bXcptExpect == X86_XCPT_DB)
     
    1642516435    static BS3CPUINSTR4_TEST1_T const s_aTests16[] =
    1642616436    {
    16427         { bs3CpuInstr4_cvtpi2ps_XMM1_MM1_icebp_c16,   255, RM_REG, T_SSE, XMM1, MM1,   XMM1, PASS_s_aValues },
    16428         { bs3CpuInstr4_cvtpi2ps_XMM1_FSxBX_icebp_c16, 255, RM_MEM, T_SSE, XMM1, FSxBX, XMM1, PASS_s_aValues },
     16437        { bs3CpuInstr4_cvtpi2ps_XMM1_MM1_icebp_c16,   255,             RM_REG, T_SSE, XMM1, MM1,   XMM1, PASS_s_aValues },
     16438        { bs3CpuInstr4_cvtpi2ps_XMM1_FSxBX_icebp_c16, BS3_XCPT_NOT_MF, RM_MEM, T_SSE, XMM1, FSxBX, XMM1, PASS_s_aValues },
    1642916439    };
    1643016440    static BS3CPUINSTR4_TEST1_T const s_aTests32[] =
    1643116441    {
    16432         { bs3CpuInstr4_cvtpi2ps_XMM1_MM1_icebp_c32,   255, RM_REG, T_SSE, XMM1, MM1,   XMM1, PASS_s_aValues },
    16433         { bs3CpuInstr4_cvtpi2ps_XMM1_FSxBX_icebp_c32, 255, RM_MEM, T_SSE, XMM1, FSxBX, XMM1, PASS_s_aValues },
     16442        { bs3CpuInstr4_cvtpi2ps_XMM1_MM1_icebp_c32,   255,             RM_REG, T_SSE, XMM1, MM1,   XMM1, PASS_s_aValues },
     16443        { bs3CpuInstr4_cvtpi2ps_XMM1_FSxBX_icebp_c32, BS3_XCPT_NOT_MF, RM_MEM, T_SSE, XMM1, FSxBX, XMM1, PASS_s_aValues },
    1643416444    };
    1643516445    static BS3CPUINSTR4_TEST1_T const s_aTests64[] =
    1643616446    {
    16437         { bs3CpuInstr4_cvtpi2ps_XMM1_MM1_icebp_c64,   255, RM_REG, T_SSE, XMM1, MM1,   XMM1, PASS_s_aValues },
    16438         { bs3CpuInstr4_cvtpi2ps_XMM1_FSxBX_icebp_c64, 255, RM_MEM, T_SSE, XMM1, FSxBX, XMM1, PASS_s_aValues },
    16439         { bs3CpuInstr4_cvtpi2ps_XMM8_MM1_icebp_c64,   255, RM_REG, T_SSE, XMM8, MM1,   XMM8, PASS_s_aValues },
    16440         { bs3CpuInstr4_cvtpi2ps_XMM8_FSxBX_icebp_c64, 255, RM_MEM, T_SSE, XMM8, FSxBX, XMM8, PASS_s_aValues },
     16447        { bs3CpuInstr4_cvtpi2ps_XMM1_MM1_icebp_c64,   255,             RM_REG, T_SSE, XMM1, MM1,   XMM1, PASS_s_aValues },
     16448        { bs3CpuInstr4_cvtpi2ps_XMM1_FSxBX_icebp_c64, BS3_XCPT_NOT_MF, RM_MEM, T_SSE, XMM1, FSxBX, XMM1, PASS_s_aValues },
     16449        { bs3CpuInstr4_cvtpi2ps_XMM8_MM1_icebp_c64,   255,             RM_REG, T_SSE, XMM8, MM1,   XMM8, PASS_s_aValues },
     16450        { bs3CpuInstr4_cvtpi2ps_XMM8_FSxBX_icebp_c64, BS3_XCPT_NOT_MF, RM_MEM, T_SSE, XMM8, FSxBX, XMM8, PASS_s_aValues },
    1644116451    };
    1644216452
     
    1644416454    unsigned const                         iTest       = BS3CPUINSTR4_TEST_MODES_INDEX(bMode);
    1644516455    return bs3CpuInstr4_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
    16446                                         g_aXcptConfig5, RT_ELEMENTS(g_aXcptConfig5));
     16456                                        g_aXcptConfig23_5, RT_ELEMENTS(g_aXcptConfig23_5));
    1644716457}
    1644816458
     
    1656616576    static BS3CPUINSTR4_TEST1_T const s_aTests16[] =
    1656716577    {
     16578        { bs3CpuInstr4_cvtps2pi_MM1_XMM1_icebp_c16,  255, RM_REG, T_SSE, MM1, XMM1,  NOREG, PASS_s_aValues },
    1656816579        { bs3CpuInstr4_cvtps2pi_MM1_FSxBX_icebp_c16, 255, RM_MEM, T_SSE, MM1, FSxBX, NOREG, PASS_s_aValues },
    16569         { bs3CpuInstr4_cvtps2pi_MM1_XMM1_icebp_c16,  255, RM_REG, T_SSE, MM1, XMM1,  NOREG, PASS_s_aValues },
    1657016580    };
    1657116581
    1657216582    static BS3CPUINSTR4_TEST1_T const s_aTests32[] =
    1657316583    {
     16584        { bs3CpuInstr4_cvtps2pi_MM1_XMM1_icebp_c32,  255, RM_REG, T_SSE, MM1, XMM1,  NOREG, PASS_s_aValues },
    1657416585        { bs3CpuInstr4_cvtps2pi_MM1_FSxBX_icebp_c32, 255, RM_MEM, T_SSE, MM1, FSxBX, NOREG, PASS_s_aValues },
    16575         { bs3CpuInstr4_cvtps2pi_MM1_XMM1_icebp_c32,  255, RM_REG, T_SSE, MM1, XMM1,  NOREG, PASS_s_aValues },
    1657616586    };
    1657716587    static BS3CPUINSTR4_TEST1_T const s_aTests64[] =
    1657816588    {
     16589        { bs3CpuInstr4_cvtps2pi_MM1_XMM1_icebp_c64,  255, RM_REG, T_SSE, MM1, XMM1,  NOREG, PASS_s_aValues },
    1657916590        { bs3CpuInstr4_cvtps2pi_MM1_FSxBX_icebp_c64, 255, RM_MEM, T_SSE, MM1, FSxBX, NOREG, PASS_s_aValues },
    16580         { bs3CpuInstr4_cvtps2pi_MM1_XMM1_icebp_c64,  255, RM_REG, T_SSE, MM1, XMM1,  NOREG, PASS_s_aValues },
    1658116591        { bs3CpuInstr4_cvtps2pi_MM1_XMM8_icebp_c64,  255, RM_REG, T_SSE, MM1, XMM8,  NOREG, PASS_s_aValues },
    1658216592    };
     
    1658516595    unsigned const                         iTest       = BS3CPUINSTR4_TEST_MODES_INDEX(bMode);
    1658616596    return bs3CpuInstr4_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
    16587                                         g_aXcptConfig5, RT_ELEMENTS(g_aXcptConfig5));
     16597                                        g_aXcptConfig23_5, RT_ELEMENTS(g_aXcptConfig23_5));
    1658816598}
    1658916599
     
    1672616736    unsigned const                         iTest       = BS3CPUINSTR4_TEST_MODES_INDEX(bMode);
    1672716737    return bs3CpuInstr4_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
    16728                                         g_aXcptConfig5, RT_ELEMENTS(g_aXcptConfig5));
     16738                                        g_aXcptConfig23_5, RT_ELEMENTS(g_aXcptConfig23_5));
    1672916739}
    1673016740
     
    1702217032    unsigned const                         iTest       = BS3CPUINSTR4_TEST_MODES_INDEX(bMode);
    1702317033    return bs3CpuInstr4_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
    17024                                         g_aXcptConfig5, RT_ELEMENTS(g_aXcptConfig5));
     17034                                        g_aXcptConfig3, RT_ELEMENTS(g_aXcptConfig3));
    1702517035}
    1702617036
     
    1746317473    unsigned const                         iTest       = BS3CPUINSTR4_TEST_MODES_INDEX(bMode);
    1746417474    return bs3CpuInstr4_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
    17465                                         g_aXcptConfig5, RT_ELEMENTS(g_aXcptConfig5));
     17475                                        g_aXcptConfig3, RT_ELEMENTS(g_aXcptConfig3));
    1746617476}
    1746717477
     
    1790417914    unsigned const                         iTest       = BS3CPUINSTR4_TEST_MODES_INDEX(bMode);
    1790517915    return bs3CpuInstr4_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
    17906                                         g_aXcptConfig5, RT_ELEMENTS(g_aXcptConfig5));
     17916                                        g_aXcptConfig3, RT_ELEMENTS(g_aXcptConfig3));
     17917}
     17918
     17919
     17920/*
     17921 * CVTPI2PD.
     17922 */
     17923BS3_DECL_FAR(uint8_t) bs3CpuInstr4_cvtpi2pd(uint8_t bMode)
     17924{
     17925    static BS3CPUINSTR4_TEST1_VALUES_PD_T const s_aValues[] =
     17926    {
     17927    /*
     17928     * Zero.
     17929     */
     17930    /* 0*/{ { /* unused  */ { FP64_ROW_UNUSED              } },
     17931            { /* src  mm */ { FP64_INT32_C(0,    0)        } },
     17932            { /* =>  xmm */ { FP64_0(0),         FP64_0(0) } },
     17933              /*mxcsr:in */ 0,
     17934              /*128:out  */ 0,
     17935              /*256:out  */ -1 },
     17936    /*
     17937     * Normals.
     17938     */
     17939    /* 1*/{ { /* unused  */ { FP64_ROW_UNUSED } },
     17940            { /* src  mm */ { FP64_INT32_C(123456789,          -123456789)                     } },
     17941            { /* =>  xmm */ { FP64_V(0,0xd6f3454000000,0x419), FP64_V(1,0xd6f3454000000,0x419) } },
     17942                              /*123456789.0*/                  /*-123456789.0*/
     17943              /*mxcsr:in */ 0,
     17944              /*128:out  */ 0,
     17945              /*256:out  */ -1 },
     17946          { { /* unused  */ { FP64_ROW_UNUSED } },
     17947            { /* src  mm */ { FP64_INT32_C(-47,                42)                             } },
     17948            { /* =>  xmm */ { FP64_V(1,0x7800000000000,0x404), FP64_V(0,0x5000000000000,0x404) } },
     17949                              /*-47.0*/                        /*42.0*/
     17950              /*mxcsr:in */ 0,
     17951              /*128:out  */ 0,
     17952              /*256:out  */ -1 },
     17953          { { /* unused  */ { FP64_ROW_UNUSED } },
     17954            { /* src  mm */ { FP64_INT32(INT32_MAX,            -INT32_MAX)                     } },
     17955            { /* =>  xmm */ { FP64_V(0,0xfffffffc00000,0x41d), FP64_V(1,0xfffffffc00000,0x41d) } },
     17956                              /*2147483648.0*/                 /*-2147483648.0*/
     17957              /*mxcsr:in */ 0,
     17958              /*128:out  */ 0,
     17959              /*256:out  */ -1 },
     17960          { { /* unused  */ { FP64_ROW_UNUSED } },
     17961            { /* src  mm */ { FP64_INT32_C(123456789,          -123456789)                     } },
     17962            { /* =>  xmm */ { FP64_V(0,0xd6f3454000000,0x419), FP64_V(1,0xd6f3454000000,0x419) } },
     17963                              /*123456789.0*/                  /*-123456789.0*/
     17964              /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_DAZ,
     17965              /*128:out  */ X86_MXCSR_FZ | X86_MXCSR_DAZ,
     17966              /*256:out  */ -1 },
     17967          { { /* unused  */ { FP64_ROW_UNUSED } },
     17968            { /* src  mm */ { FP64_INT32_C(123456789,          -123456789)                     } },
     17969            { /* =>  xmm */ { FP64_V(0,0xd6f3454000000,0x419), FP64_V(1,0xd6f3454000000,0x419) } },
     17970                              /*123456789.0*/                  /*-123456789.0*/
     17971              /*mxcsr:in */ X86_MXCSR_RC_DOWN,
     17972              /*128:out  */ X86_MXCSR_RC_DOWN,
     17973              /*256:out  */ -1 },
     17974          { { /* unused  */ { FP64_ROW_UNUSED } },
     17975            { /* src  mm */ { FP64_INT32_C(123456789,          -123456789)                     } },
     17976            { /* =>  xmm */ { FP64_V(0,0xd6f3454000000,0x419), FP64_V(1,0xd6f3454000000,0x419) } },
     17977                              /*123456789.0*/                  /*-123456789.0*/
     17978              /*mxcsr:in */ X86_MXCSR_RC_UP,
     17979              /*128:out  */ X86_MXCSR_RC_UP,
     17980              /*256:out  */ -1 },
     17981          { { /* unused  */ { FP64_ROW_UNUSED } },
     17982            { /* src  mm */ { FP64_INT32_C(123456789,          -123456789)                     } },
     17983            { /* =>  xmm */ { FP64_V(0,0xd6f3454000000,0x419), FP64_V(1,0xd6f3454000000,0x419) } },
     17984                              /*123456789.0*/                  /*-123456789.0*/
     17985              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
     17986              /*128:out  */ X86_MXCSR_RC_ZERO,
     17987              /*256:out  */ -1 },
     17988    };
     17989    /*
     17990     * Precision, Infinity, Overflow, Underflow, Denormal, Invalid not possible.
     17991     */
     17992
     17993    static BS3CPUINSTR4_TEST1_T const s_aTests16[] =
     17994    {
     17995        { bs3CpuInstr4_cvtpi2pd_XMM1_MM1_icebp_c16,   255, RM_REG, T_SSE, XMM1, MM1,   NOREG, PASS_s_aValues },
     17996        { bs3CpuInstr4_cvtpi2pd_XMM1_FSxBX_icebp_c16, 255, RM_MEM, T_SSE, XMM1, FSxBX, NOREG, PASS_s_aValues },
     17997    };
     17998    static BS3CPUINSTR4_TEST1_T const s_aTests32[] =
     17999    {
     18000        { bs3CpuInstr4_cvtpi2pd_XMM1_MM1_icebp_c32,   255, RM_REG, T_SSE, XMM1, MM1,   NOREG, PASS_s_aValues },
     18001        { bs3CpuInstr4_cvtpi2pd_XMM1_FSxBX_icebp_c32, 255, RM_MEM, T_SSE, XMM1, FSxBX, NOREG, PASS_s_aValues },
     18002    };
     18003    static BS3CPUINSTR4_TEST1_T const s_aTests64[] =
     18004    {
     18005        { bs3CpuInstr4_cvtpi2pd_XMM1_MM1_icebp_c64,   255, RM_REG, T_SSE, XMM1, MM1,   NOREG, PASS_s_aValues },
     18006        { bs3CpuInstr4_cvtpi2pd_XMM1_FSxBX_icebp_c64, 255, RM_MEM, T_SSE, XMM1, FSxBX, NOREG, PASS_s_aValues },
     18007        { bs3CpuInstr4_cvtpi2pd_XMM8_MM1_icebp_c64,   255, RM_REG, T_SSE, XMM8, MM1,   NOREG, PASS_s_aValues },
     18008        { bs3CpuInstr4_cvtpi2pd_XMM8_FSxBX_icebp_c64, 255, RM_MEM, T_SSE, XMM8, FSxBX, NOREG, PASS_s_aValues },
     18009    };
     18010
     18011    static BS3CPUINSTR4_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR4_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     18012    unsigned const                         iTest       = BS3CPUINSTR4_TEST_MODES_INDEX(bMode);
     18013    return bs3CpuInstr4_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     18014                                        g_aXcptConfig23_6, RT_ELEMENTS(g_aXcptConfig23_6));
     18015}
     18016
     18017
     18018/*
     18019 * CVTPD2PI.
     18020 */
     18021BS3_DECL_FAR(uint8_t) bs3CpuInstr4_cvtpd2pi(uint8_t bMode)
     18022{
     18023    static BS3CPUINSTR4_TEST1_VALUES_PD_T const s_aValues[] =
     18024    {
     18025    /*
     18026     * Zero.
     18027     */
     18028    /* 0*/{ { /* unused  */ { FP64_ROW_UNUSED } },
     18029            { /* src xmm */ { FP64_0(0),      FP64_0(1) } },
     18030            { /* =>   mm */ { FP64_INT32_C(0, 0)        } },
     18031              /*mxcsr:in */ 0,
     18032              /*128:out  */ 0,
     18033              /*256:out  */ -1 },
     18034    /*
     18035     * Infinity.
     18036     */
     18037    /* 1*/{ { /* unused  */ { FP64_ROW_UNUSED } },
     18038            { /* src xmm */ { FP64_INF(1),                   FP64_INF(0)         } },
     18039            { /* =>   mm */ { FP64_INT32(INT32_INDEFINITE_C, INT32_INDEFINITE_C) } },
     18040              /*mxcsr:in */ 0,
     18041              /*128:out  */ X86_MXCSR_IE,
     18042              /*256:out  */ -1 },
     18043    /*
     18044     * Normals & Precision.
     18045     */
     18046    /* 2*/{ { /* unused  */ { FP64_ROW_UNUSED } },
     18047            { /* src xmm */ { FP64_V(0,0xe240000000000,0x40f), FP64_V(1,0xe240000000000,0x40f) } },
     18048            { /* =>   mm */ { FP64_INT32_C(123456,             -123456)                        } },
     18049              /*mxcsr:in */ 0,
     18050              /*128:out  */ 0,
     18051              /*256:out  */ -1 },
     18052          { { /* unused  */ { FP64_ROW_UNUSED } },
     18053            { /* src xmm */ { FP64_V(0,0xe240e66666666,0x40f), FP64_V(1,0xe240e66666666,0x40f) } },
     18054                              /*123456.9*/                     /*-123456.9*/
     18055            { /* =>   mm */ { FP64_INT32_C(123457,             -123457)                        } },
     18056              /*mxcsr:in */ 0,
     18057              /*128:out  */ X86_MXCSR_PE,
     18058              /*256:out  */ -1 },
     18059          { { /* unused  */ { FP64_ROW_UNUSED } },
     18060            { /* src xmm */ { FP64_V(0,0xe240e66666666,0x40f), FP64_V(1,0xe240e66666666,0x40f) } },
     18061                              /*123456.9*/                     /*-123456.9*/
     18062            { /* =>   mm */ { FP64_INT32_C(123456,             -123457)                        } },
     18063              /*mxcsr:in */ X86_MXCSR_RC_DOWN,
     18064              /*128:out  */ X86_MXCSR_PE | X86_MXCSR_RC_DOWN,
     18065              /*256:out  */ -1 },
     18066          { { /* unused  */ { FP64_ROW_UNUSED } },
     18067            { /* src xmm */ { FP64_V(0,0xe240e66666666,0x40f), FP64_V(1,0xe240e66666666,0x40f) } },
     18068                              /*123456.9*/                     /*-123456.9*/
     18069            { /* =>   mm */ { FP64_INT32_C(123457,             -123456)                        } },
     18070              /*mxcsr:in */ X86_MXCSR_RC_UP,
     18071              /*128:out  */ X86_MXCSR_PE | X86_MXCSR_RC_UP,
     18072              /*256:out  */ -1 },
     18073          { { /* unused  */ { FP64_ROW_UNUSED } },
     18074            { /* src xmm */ { FP64_V(0,0xe240e66666666,0x40f), FP64_V(1,0xe240e66666666,0x40f) } },
     18075                              /*123456.9*/                     /*-123456.9*/
     18076            { /* =>   mm */ { FP64_INT32_C(123456,             -123456)                        } },
     18077              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
     18078              /*128:out  */ X86_MXCSR_PE | X86_MXCSR_RC_ZERO,
     18079              /*256:out  */ -1 },
     18080          { { /* unused  */ { FP64_ROW_UNUSED } },
     18081            { /* src xmm */ { FP64_V(1,0xccccccccccccd,0x3fe), FP64_V(0,0xccccccccccccd,0x3fe) } },
     18082                              /*-0.9*/                         /*0.9*/
     18083            { /* =>   mm */ { FP64_INT32_C(-1,                 1)                              } },
     18084              /*mxcsr:in */ X86_MXCSR_FZ,
     18085              /*128:out  */ X86_MXCSR_PE | X86_MXCSR_FZ,
     18086              /*256:out  */ -1 },
     18087    /*
     18088     * Denormals.
     18089     */
     18090    /* 8*/{ { /* unused  */ { FP64_ROW_UNUSED } },
     18091            { /* src xmm */ { FP64_DENORM_MAX(0), FP64_DENORM_MIN(1) } },
     18092            { /* =>   mm */ { FP64_INT32_C(0,     0)                 } },
     18093              /*mxcsr:in */ 0,
     18094              /*128:out  */ X86_MXCSR_PE,
     18095              /*256:out  */ -1 },
     18096          { { /* unused  */ { FP64_ROW_UNUSED } },
     18097            { /* src xmm */ { FP64_DENORM_MIN(0), FP64_DENORM_MAX(1) } },
     18098            { /* =>   mm */ { FP64_INT32_C(0,     0)                 } },
     18099              /*mxcsr:in */ X86_MXCSR_DAZ,
     18100              /*128:out  */ X86_MXCSR_DAZ,
     18101              /*256:out  */ -1 },
     18102    /*
     18103     * Overflow (Underflow not possible).
     18104     */
     18105    /*10*/{ { /* unused  */ { FP64_ROW_UNUSED } },
     18106            { /* src xmm */ { FP64_NORM_MAX(0),              FP64_NORM_MAX(1)    } },
     18107            { /* =>   mm */ { FP64_INT32(INT32_INDEFINITE_C, INT32_INDEFINITE_C) } },
     18108              /*mxcsr:in */ 0,
     18109              /*128:out  */ X86_MXCSR_IE,
     18110              /*256:out  */ -1 },
     18111          { { /* unused  */ { FP64_ROW_UNUSED } },
     18112            { /* src xmm */ { FP64_NORM_SAFE_INT_MAX(1),     FP64_NORM_SAFE_INT_MAX(0) } },
     18113            { /* =>   mm */ { FP64_INT32(INT32_INDEFINITE_C, INT32_INDEFINITE_C)       } },
     18114              /*mxcsr:in */ 0,
     18115              /*128:out  */ X86_MXCSR_IE,
     18116              /*256:out  */ -1 },
     18117    /*
     18118     * Invalids.
     18119     */
     18120    /*12*/{ { /* unused  */ { FP64_ROW_UNUSED } },
     18121            { /* src xmm */ { FP64_QNAN(0),                  FP64_QNAN(1)        } },
     18122            { /* =>   mm */ { FP64_INT32(INT32_INDEFINITE_C, INT32_INDEFINITE_C) } },
     18123              /*mxcsr:in */ 0,
     18124              /*128:out  */ X86_MXCSR_IE,
     18125              /*256:out  */ -1 },
     18126          { { /* unused  */ { FP64_ROW_UNUSED } },
     18127            { /* src xmm */ { FP64_SNAN(1),                  FP64_SNAN(0)        } },
     18128            { /* =>   mm */ { FP64_INT32(INT32_INDEFINITE_C, INT32_INDEFINITE_C) } },
     18129              /*mxcsr:in */ 0,
     18130              /*128:out  */ X86_MXCSR_IE,
     18131              /*256:out  */ -1 },
     18132    };
     18133
     18134    static BS3CPUINSTR4_TEST1_T const s_aTests16[] =
     18135    {
     18136        { bs3CpuInstr4_cvtpd2pi_MM1_XMM1_icebp_c16,  255, RM_REG, T_SSE, MM1, XMM1,  NOREG, PASS_s_aValues },
     18137        { bs3CpuInstr4_cvtpd2pi_MM1_FSxBX_icebp_c16, 255, RM_MEM, T_SSE, MM1, FSxBX, NOREG, PASS_s_aValues },
     18138    };
     18139
     18140    static BS3CPUINSTR4_TEST1_T const s_aTests32[] =
     18141    {
     18142        { bs3CpuInstr4_cvtpd2pi_MM1_XMM1_icebp_c32,  255, RM_REG, T_SSE, MM1, XMM1,  NOREG, PASS_s_aValues },
     18143        { bs3CpuInstr4_cvtpd2pi_MM1_FSxBX_icebp_c32, 255, RM_MEM, T_SSE, MM1, FSxBX, NOREG, PASS_s_aValues },
     18144    };
     18145    static BS3CPUINSTR4_TEST1_T const s_aTests64[] =
     18146    {
     18147        { bs3CpuInstr4_cvtpd2pi_MM1_XMM1_icebp_c64,  255, RM_REG, T_SSE, MM1, XMM1,  NOREG, PASS_s_aValues },
     18148        { bs3CpuInstr4_cvtpd2pi_MM1_FSxBX_icebp_c64, 255, RM_MEM, T_SSE, MM1, FSxBX, NOREG, PASS_s_aValues },
     18149        { bs3CpuInstr4_cvtpd2pi_MM1_XMM8_icebp_c64,  255, RM_REG, T_SSE, MM1, XMM8,  NOREG, PASS_s_aValues },
     18150    };
     18151
     18152    static BS3CPUINSTR4_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR4_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     18153    unsigned const                         iTest       = BS3CPUINSTR4_TEST_MODES_INDEX(bMode);
     18154    return bs3CpuInstr4_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     18155                                        g_aXcptConfig23_4, RT_ELEMENTS(g_aXcptConfig23_4));
     18156}
     18157
     18158
     18159/*
     18160 * CVTTPD2PI.
     18161 */
     18162BS3_DECL_FAR(uint8_t) bs3CpuInstr4_cvttpd2pi(uint8_t bMode)
     18163{
     18164    static BS3CPUINSTR4_TEST1_VALUES_PD_T const s_aValues[] =
     18165    {
     18166    /*
     18167     * Zero.
     18168     */
     18169    /* 0*/{ { /* unused  */ { FP64_ROW_UNUSED } },
     18170            { /* src xmm */ { FP64_0(0),      FP64_0(1) } },
     18171            { /* =>   mm */ { FP64_INT32_C(0, 0)        } },
     18172              /*mxcsr:in */ 0,
     18173              /*128:out  */ 0,
     18174              /*256:out  */ -1 },
     18175    /*
     18176     * Infinity.
     18177     */
     18178    /* 1*/{ { /* unused  */ { FP64_ROW_UNUSED } },
     18179            { /* src xmm */ { FP64_INF(1),                   FP64_INF(0)         } },
     18180            { /* =>   mm */ { FP64_INT32(INT32_INDEFINITE_C, INT32_INDEFINITE_C) } },
     18181              /*mxcsr:in */ 0,
     18182              /*128:out  */ X86_MXCSR_IE,
     18183              /*256:out  */ -1 },
     18184    /*
     18185     * Normals & Precision.
     18186     */
     18187    /* 2*/{ { /* unused  */ { FP64_ROW_UNUSED } },
     18188            { /* src xmm */ { FP64_V(0,0xe240000000000,0x40f), FP64_V(1,0xe240000000000,0x40f) } },
     18189            { /* =>   mm */ { FP64_INT32_C(123456,             -123456)                        } },
     18190              /*mxcsr:in */ 0,
     18191              /*128:out  */ 0,
     18192              /*256:out  */ -1 },
     18193          { { /* unused  */ { FP64_ROW_UNUSED } },
     18194            { /* src xmm */ { FP64_V(0,0xe240e66666666,0x40f), FP64_V(1,0xe240e66666666,0x40f) } },
     18195                              /*123456.9*/                     /*-123456.9*/
     18196            { /* =>   mm */ { FP64_INT32_C(123456,             -123456)                        } },
     18197              /*mxcsr:in */ 0,
     18198              /*128:out  */ X86_MXCSR_PE,
     18199              /*256:out  */ -1 },
     18200          { { /* unused  */ { FP64_ROW_UNUSED } },
     18201            { /* src xmm */ { FP64_V(0,0xe240e66666666,0x40f), FP64_V(1,0xe240e66666666,0x40f) } },
     18202                              /*123456.9*/                     /*-123456.9*/
     18203            { /* =>   mm */ { FP64_INT32_C(123456,             -123456)                        } },
     18204              /*mxcsr:in */ X86_MXCSR_RC_DOWN,
     18205              /*128:out  */ X86_MXCSR_PE | X86_MXCSR_RC_DOWN,
     18206              /*256:out  */ -1 },
     18207          { { /* unused  */ { FP64_ROW_UNUSED } },
     18208            { /* src xmm */ { FP64_V(0,0xe240e66666666,0x40f), FP64_V(1,0xe240e66666666,0x40f) } },
     18209                              /*123456.9*/                     /*-123456.9*/
     18210            { /* =>   mm */ { FP64_INT32_C(123456,             -123456)                        } },
     18211              /*mxcsr:in */ X86_MXCSR_RC_UP,
     18212              /*128:out  */ X86_MXCSR_PE | X86_MXCSR_RC_UP,
     18213              /*256:out  */ -1 },
     18214          { { /* unused  */ { FP64_ROW_UNUSED } },
     18215            { /* src xmm */ { FP64_V(0,0xe240e66666666,0x40f), FP64_V(1,0xe240e66666666,0x40f) } },
     18216                              /*123456.9*/                     /*-123456.9*/
     18217            { /* =>   mm */ { FP64_INT32_C(123456,             -123456)                        } },
     18218              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
     18219              /*128:out  */ X86_MXCSR_PE | X86_MXCSR_RC_ZERO,
     18220              /*256:out  */ -1 },
     18221          { { /* unused  */ { FP64_ROW_UNUSED } },
     18222            { /* src xmm */ { FP64_V(1,0xccccccccccccd,0x3fe), FP64_V(0,0xccccccccccccd,0x3fe) } },
     18223                              /*-0.9*/                         /*0.9*/
     18224            { /* =>   mm */ { FP64_INT32_C(0,                  0)                              } },
     18225              /*mxcsr:in */ X86_MXCSR_FZ,
     18226              /*128:out  */ X86_MXCSR_PE | X86_MXCSR_FZ,
     18227              /*256:out  */ -1 },
     18228    /*
     18229     * Denormals.
     18230     */
     18231    /* 8*/{ { /* unused  */ { FP64_ROW_UNUSED } },
     18232            { /* src xmm */ { FP64_DENORM_MAX(0), FP64_DENORM_MIN(1) } },
     18233            { /* =>   mm */ { FP64_INT32_C(0,     0)                 } },
     18234              /*mxcsr:in */ 0,
     18235              /*128:out  */ X86_MXCSR_PE,
     18236              /*256:out  */ -1 },
     18237          { { /* unused  */ { FP64_ROW_UNUSED } },
     18238            { /* src xmm */ { FP64_DENORM_MIN(0), FP64_DENORM_MAX(1) } },
     18239            { /* =>   mm */ { FP64_INT32_C(0,     0)                 } },
     18240              /*mxcsr:in */ X86_MXCSR_DAZ,
     18241              /*128:out  */ X86_MXCSR_DAZ,
     18242              /*256:out  */ -1 },
     18243    /*
     18244     * Overflow (Underflow not possible).
     18245     */
     18246    /*10*/{ { /* unused  */ { FP64_ROW_UNUSED } },
     18247            { /* src xmm */ { FP64_NORM_MAX(0),              FP64_NORM_MAX(1)    } },
     18248            { /* =>   mm */ { FP64_INT32(INT32_INDEFINITE_C, INT32_INDEFINITE_C) } },
     18249              /*mxcsr:in */ 0,
     18250              /*128:out  */ X86_MXCSR_IE,
     18251              /*256:out  */ -1 },
     18252          { { /* unused  */ { FP64_ROW_UNUSED } },
     18253            { /* src xmm */ { FP64_NORM_SAFE_INT_MAX(1),     FP64_NORM_SAFE_INT_MAX(0) } },
     18254            { /* =>   mm */ { FP64_INT32(INT32_INDEFINITE_C, INT32_INDEFINITE_C)       } },
     18255              /*mxcsr:in */ 0,
     18256              /*128:out  */ X86_MXCSR_IE,
     18257              /*256:out  */ -1 },
     18258    /*
     18259     * Invalids.
     18260     */
     18261    /*12*/{ { /* unused  */ { FP64_ROW_UNUSED } },
     18262            { /* src xmm */ { FP64_QNAN(0),                  FP64_QNAN(1)        } },
     18263            { /* =>   mm */ { FP64_INT32(INT32_INDEFINITE_C, INT32_INDEFINITE_C) } },
     18264              /*mxcsr:in */ 0,
     18265              /*128:out  */ X86_MXCSR_IE,
     18266              /*256:out  */ -1 },
     18267          { { /* unused  */ { FP64_ROW_UNUSED } },
     18268            { /* src xmm */ { FP64_SNAN(1),                  FP64_SNAN(0)        } },
     18269            { /* =>   mm */ { FP64_INT32(INT32_INDEFINITE_C, INT32_INDEFINITE_C) } },
     18270              /*mxcsr:in */ 0,
     18271              /*128:out  */ X86_MXCSR_IE,
     18272              /*256:out  */ -1 },
     18273    };
     18274
     18275    static BS3CPUINSTR4_TEST1_T const s_aTests16[] =
     18276    {
     18277        { bs3CpuInstr4_cvttpd2pi_MM1_XMM1_icebp_c16,  255, RM_REG, T_SSE, MM1, XMM1,  NOREG, PASS_s_aValues },
     18278        { bs3CpuInstr4_cvttpd2pi_MM1_FSxBX_icebp_c16, 255, RM_MEM, T_SSE, MM1, FSxBX, NOREG, PASS_s_aValues },
     18279    };
     18280
     18281    static BS3CPUINSTR4_TEST1_T const s_aTests32[] =
     18282    {
     18283        { bs3CpuInstr4_cvttpd2pi_MM1_XMM1_icebp_c32,  255, RM_REG, T_SSE, MM1, XMM1,  NOREG, PASS_s_aValues },
     18284        { bs3CpuInstr4_cvttpd2pi_MM1_FSxBX_icebp_c32, 255, RM_MEM, T_SSE, MM1, FSxBX, NOREG, PASS_s_aValues },
     18285    };
     18286    static BS3CPUINSTR4_TEST1_T const s_aTests64[] =
     18287    {
     18288        { bs3CpuInstr4_cvttpd2pi_MM1_XMM1_icebp_c64,  255, RM_REG, T_SSE, MM1, XMM1,  NOREG, PASS_s_aValues },
     18289        { bs3CpuInstr4_cvttpd2pi_MM1_FSxBX_icebp_c64, 255, RM_MEM, T_SSE, MM1, FSxBX, NOREG, PASS_s_aValues },
     18290        { bs3CpuInstr4_cvttpd2pi_MM1_XMM8_icebp_c64,  255, RM_REG, T_SSE, MM1, XMM8,  NOREG, PASS_s_aValues },
     18291    };
     18292
     18293    static BS3CPUINSTR4_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR4_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     18294    unsigned const                         iTest       = BS3CPUINSTR4_TEST_MODES_INDEX(bMode);
     18295    return bs3CpuInstr4_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     18296                                        g_aXcptConfig23_4, RT_ELEMENTS(g_aXcptConfig23_4));
    1790718297}
    1790818298
     
    1797118361        { "cvtss2si",       bs3CpuInstr4_cvtss2si,   0 },
    1797218362        { "cvttss2si",      bs3CpuInstr4_cvttss2si,  0 },
     18363        { "cvtpi2pd",       bs3CpuInstr4_cvtpi2pd,   0 },
     18364        { "cvtpd2pi",       bs3CpuInstr4_cvtpd2pi,   0 },
     18365        { "cvttpd2pi",      bs3CpuInstr4_cvttpd2pi,  0 },
    1797318366#endif
    1797418367    };
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette