VirtualBox

Changeset 96439 in vbox


Ignore:
Timestamp:
Aug 23, 2022 1:16:46 PM (2 years ago)
Author:
vboxsync
Message:

ValidationKit/bs3-cpu-instr-3: Add simple [v]phminposuw instructions testcases, ​bugref:9898

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

Legend:

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

    r96436 r96439  
    25852585 %endif
    25862586
     2587;
     2588; [V]PHMINPOSUW
     2589;
     2590EMIT_INSTR_PLUS_ICEBP phminposuw,  XMM1, XMM2
     2591EMIT_INSTR_PLUS_ICEBP phminposuw,  XMM1, FSxBX
     2592EMIT_INSTR_PLUS_ICEBP vphminposuw, XMM1, XMM2
     2593EMIT_INSTR_PLUS_ICEBP vphminposuw, XMM1, FSxBX
     2594 %if TMPL_BITS == 64
     2595EMIT_INSTR_PLUS_ICEBP phminposuw,  XMM9, XMM8
     2596EMIT_INSTR_PLUS_ICEBP phminposuw,  XMM9, FSxBX
     2597EMIT_INSTR_PLUS_ICEBP vphminposuw, XMM9, XMM8
     2598EMIT_INSTR_PLUS_ICEBP vphminposuw, XMM9, FSxBX
     2599 %endif
     2600
    25872601%endif ; BS3_INSTANTIATING_CMN
    25882602
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32

    r96436 r96439  
    96569656    return bs3CpuInstr3_WorkerTestType3(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
    96579657                                        g_aXcptConfig4Unaligned, RT_ELEMENTS(g_aXcptConfig4Unaligned), 0 /*cbMaxAlign*/);
     9658}
     9659
     9660
     9661/*
     9662 * [V]PHMINPOSUW
     9663 */
     9664BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_phminposuw_XMM1_XMM2_icebp);
     9665BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_phminposuw_XMM1_FSxBX_icebp);
     9666extern FNBS3FAR             bs3CpuInstr3_phminposuw_XMM9_XMM8_icebp_c64;
     9667extern FNBS3FAR             bs3CpuInstr3_phminposuw_XMM9_FSxBX_icebp_c64;
     9668BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vphminposuw_XMM1_XMM2_icebp);
     9669BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vphminposuw_XMM1_FSxBX_icebp);
     9670extern FNBS3FAR             bs3CpuInstr3_vphminposuw_XMM9_XMM8_icebp_c64;
     9671extern FNBS3FAR             bs3CpuInstr3_vphminposuw_XMM9_FSxBX_icebp_c64;
     9672
     9673BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_phminposuw(uint8_t bMode)
     9674{
     9675    static BS3CPUINSTR3_TEST3_VALUES_T const s_aValues[] =
     9676    {
     9677        {            RTUINT256_INIT_C(0, 0, 0, 0),
     9678            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     9679        {            RTUINT256_INIT_C(0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff),
     9680            /* => */ RTUINT256_INIT_C(1, 2, 0x0000000000000000, 0x000000000000ffff) }, /* No 256-bit variant */
     9681        {            RTUINT256_INIT_C(0x9999aaaabbbbcccc, 0xddddeeeeffff2121, 0x1111222233334444, 0x5555666677778888),
     9682            /* => */ RTUINT256_INIT_C(5, 6, 0x0000000000000000, 0x0000000000071111) }, /* No 256-bit variant */
     9683        {            RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     9684            /* => */ RTUINT256_INIT_C(9, 10, 0x0000000000000000, 0x0000000000062fa8) }, /* No 256-bit variant */
     9685    };
     9686
     9687    static BS3CPUINSTR3_TEST3_T const s_aTests16[] =
     9688    {
     9689        {  bs3CpuInstr3_phminposuw_XMM1_XMM2_icebp_c16,   255,         RM_REG, T_SSE4_1,    1,   2, RT_ELEMENTS(s_aValues), s_aValues },
     9690        {  bs3CpuInstr3_phminposuw_XMM1_FSxBX_icebp_c16,  255,         RM_MEM, T_SSE4_1,    1, 255, RT_ELEMENTS(s_aValues), s_aValues },
     9691        {  bs3CpuInstr3_vphminposuw_XMM1_XMM2_icebp_c16,  255,         RM_REG, T_AVX_128,   1,   2, RT_ELEMENTS(s_aValues), s_aValues },
     9692        {  bs3CpuInstr3_vphminposuw_XMM1_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 255, RT_ELEMENTS(s_aValues), s_aValues },
     9693    };
     9694    static BS3CPUINSTR3_TEST3_T const s_aTests32[] =
     9695    {
     9696        {  bs3CpuInstr3_phminposuw_XMM1_XMM2_icebp_c32,   255,         RM_REG, T_SSE4_1,    1,   2, RT_ELEMENTS(s_aValues), s_aValues },
     9697        {  bs3CpuInstr3_phminposuw_XMM1_FSxBX_icebp_c32,  255,         RM_MEM, T_SSE4_1,    1, 255, RT_ELEMENTS(s_aValues), s_aValues },
     9698        {  bs3CpuInstr3_vphminposuw_XMM1_XMM2_icebp_c32,  255,         RM_REG, T_AVX_128,   1,   2, RT_ELEMENTS(s_aValues), s_aValues },
     9699        {  bs3CpuInstr3_vphminposuw_XMM1_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 255, RT_ELEMENTS(s_aValues), s_aValues },
     9700    };
     9701    static BS3CPUINSTR3_TEST3_T const s_aTests64[] =
     9702    {
     9703        {  bs3CpuInstr3_phminposuw_XMM1_XMM2_icebp_c64,   255,         RM_REG, T_SSE4_1,    1,   2, RT_ELEMENTS(s_aValues), s_aValues },
     9704        {  bs3CpuInstr3_phminposuw_XMM1_FSxBX_icebp_c64,  255,         RM_MEM, T_SSE4_1,    1, 255, RT_ELEMENTS(s_aValues), s_aValues },
     9705        {  bs3CpuInstr3_phminposuw_XMM9_XMM8_icebp_c64,   255,         RM_REG, T_SSE4_1,    9,   8, RT_ELEMENTS(s_aValues), s_aValues },
     9706        {  bs3CpuInstr3_phminposuw_XMM9_FSxBX_icebp_c64,  255,         RM_MEM, T_SSE4_1,    9, 255, RT_ELEMENTS(s_aValues), s_aValues },
     9707        {  bs3CpuInstr3_vphminposuw_XMM1_XMM2_icebp_c64,  255,         RM_REG, T_AVX_128,   1,   2, RT_ELEMENTS(s_aValues), s_aValues },
     9708        {  bs3CpuInstr3_vphminposuw_XMM1_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 255, RT_ELEMENTS(s_aValues), s_aValues },
     9709        {  bs3CpuInstr3_vphminposuw_XMM9_XMM8_icebp_c64,  255,         RM_REG, T_AVX_128,   9,   8, RT_ELEMENTS(s_aValues), s_aValues },
     9710        {  bs3CpuInstr3_vphminposuw_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   9, 255, RT_ELEMENTS(s_aValues), s_aValues },
     9711    };
     9712    static BS3CPUINSTR3_TEST3_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST3_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     9713    unsigned const                         iTest       = BS3CPUINSTR3_TEST_MODES_INDEX(bMode);
     9714    return bs3CpuInstr3_WorkerTestType3(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     9715                                        g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4), X86_EFL_STATUS_BITS);
    96589716}
    96599717
     
    1012210180        { "[v]lddqu",                                       bs3CpuInstr3_v_lddqu, 0 },
    1012310181#endif
     10182#if defined(ALL_TESTS)
     10183        { "[v]phminposuw",                                  bs3CpuInstr3_v_phminposuw, 0 },
     10184#endif
    1012410185    };
    1012510186    Bs3TestInit("bs3-cpu-instr-3");
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