VirtualBox

Changeset 98888 in vbox


Ignore:
Timestamp:
Mar 9, 2023 11:19:18 AM (2 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
156222
Message:

ValidationKit/bootsectors: Implement instruction testcase for mpsadbw, 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

    r98704 r98888  
    30403040 %endif
    30413041
     3042;
     3043; MPSADBW
     3044;
     3045EMIT_INSTR_PLUS_ICEBP   mpsadbw,  XMM1, XMM2,  0FFh
     3046EMIT_INSTR_PLUS_ICEBP   mpsadbw,  XMM1, FSxBX, 0FFh
     3047EMIT_INSTR_PLUS_ICEBP   mpsadbw,  XMM1, XMM2,  000h
     3048EMIT_INSTR_PLUS_ICEBP   mpsadbw,  XMM1, FSxBX, 000h
     3049
     3050 %if TMPL_BITS == 64
     3051EMIT_INSTR_PLUS_ICEBP   mpsadbw,  XMM8, XMM9,  0FFh
     3052EMIT_INSTR_PLUS_ICEBP   mpsadbw,  XMM8, FSxBX, 0FFh
     3053EMIT_INSTR_PLUS_ICEBP   mpsadbw,  XMM8, XMM9,  000h
     3054EMIT_INSTR_PLUS_ICEBP   mpsadbw,  XMM8, FSxBX, 000h
     3055 %endif
     3056
    30423057
    30433058%endif ; BS3_INSTANTIATING_CMN
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32

    r98712 r98888  
    77597759        {  bs3CpuInstr3_sha1rnds4_XMM1_FSxBX_003h_icebp_c64,      255, RM_MEM, T_SHA,       1, 1, 255, RT_ELEMENTS(s_aValuesSha1Rnds4_03), s_aValuesSha1Rnds4_03 },
    77607760
     7761    };
     7762    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     7763    unsigned const                         iTest       = BS3CPUINSTR3_TEST_MODES_INDEX(bMode);
     7764    return bs3CpuInstr3_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     7765                                        g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4));
     7766}
     7767
     7768
     7769/*
     7770 * [V]MPSADBW - Compute Multiple Packed Sums of Absolute Differences.
     7771 */
     7772BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_mpsadbw_XMM1_XMM2_0FFh_icebp);
     7773BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_mpsadbw_XMM1_FSxBX_0FFh_icebp);
     7774BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_mpsadbw_XMM1_XMM2_000h_icebp);
     7775BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_mpsadbw_XMM1_FSxBX_000h_icebp);
     7776extern FNBS3FAR             bs3CpuInstr3_mpsadbw_XMM8_XMM9_0FFh_icebp_c64;
     7777extern FNBS3FAR             bs3CpuInstr3_mpsadbw_XMM8_FSxBX_0FFh_icebp_c64;
     7778extern FNBS3FAR             bs3CpuInstr3_mpsadbw_XMM8_XMM9_000h_icebp_c64;
     7779extern FNBS3FAR             bs3CpuInstr3_mpsadbw_XMM8_FSxBX_000h_icebp_c64;
     7780
     7781BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_mpsadbw(uint8_t bMode)
     7782{
     7783    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesFF[] =
     7784    {
     7785        {   /*src2*/ RTUINT256_INIT_C(  0, 0, 0, 0),
     7786            /*src1*/ RTUINT256_INIT_C(  0, 0, 0, 0),
     7787            /* => */ RTUINT256_INIT_C(  0, 0, 0, 0) },
     7788        {   /*src2*/ RTUINT256_INIT_C(  0, 1, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     7789            /*src1*/ RTUINT256_INIT_C(  2, 3, 0x9192939495969798, 0x8182838485868788),
     7790            /* => */ RTUINT256_INIT_C(  4, 5, 0x00fc00f800f400f0, 0x01040118012c0140) },
     7791        {   /*src2*/ RTUINT256_INIT_C(  6, 7, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     7792            /*src1*/ RTUINT256_INIT_C(  8, 9, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     7793            /* => */ RTUINT256_INIT_C(10, 11, 0x01bf010e01a700d1, 0x0155013300fa01c9) },
     7794    };
     7795    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues00[] =
     7796    {
     7797        {   /*src2*/ RTUINT256_INIT_C(0,   0, 0, 0),
     7798            /*src1*/ RTUINT256_INIT_C(0,   0, 0, 0),
     7799            /* => */ RTUINT256_INIT_C(0,   0, 0, 0) },
     7800        {   /*src2*/ RTUINT256_INIT_C(0,   1, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     7801            /*src1*/ RTUINT256_INIT_C(2,   3, 0x9192939495969798, 0x8182838485868788),
     7802            /* => */ RTUINT256_INIT_C(4,   5, 0x00d400e800fc0110, 0x010c010801040100) },
     7803        {   /*src2*/ RTUINT256_INIT_C(6,   7, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     7804            /*src1*/ RTUINT256_INIT_C(8,   9, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     7805            /* => */ RTUINT256_INIT_C(10, 11, 0x0104015600b9016c, 0x01a6017b005b0130) },
     7806    };
     7807
     7808    static BS3CPUINSTR3_TEST1_T const s_aTests16[] =
     7809    {
     7810        {  bs3CpuInstr3_mpsadbw_XMM1_XMM2_0FFh_icebp_c16,          255,         RM_REG, T_SSE4_1,     1, 1,   2, RT_ELEMENTS(s_aValuesFF),  s_aValuesFF },
     7811        {  bs3CpuInstr3_mpsadbw_XMM1_FSxBX_0FFh_icebp_c16,         255,         RM_MEM, T_SSE4_1,     1, 1, 255, RT_ELEMENTS(s_aValuesFF),  s_aValuesFF },
     7812        {  bs3CpuInstr3_mpsadbw_XMM1_XMM2_000h_icebp_c16,          255,         RM_REG, T_SSE4_1,     1, 1,   2, RT_ELEMENTS(s_aValues00),  s_aValues00 },
     7813        {  bs3CpuInstr3_mpsadbw_XMM1_FSxBX_000h_icebp_c16,         255,         RM_MEM, T_SSE4_1,     1, 1, 255, RT_ELEMENTS(s_aValues00),  s_aValues00 },
     7814    };
     7815    static BS3CPUINSTR3_TEST1_T const s_aTests32[] =
     7816    {
     7817        {  bs3CpuInstr3_mpsadbw_XMM1_XMM2_0FFh_icebp_c32,          255,         RM_REG, T_SSE4_1,     1, 1,   2, RT_ELEMENTS(s_aValuesFF),  s_aValuesFF },
     7818        {  bs3CpuInstr3_mpsadbw_XMM1_FSxBX_0FFh_icebp_c32,         255,         RM_MEM, T_SSE4_1,     1, 1, 255, RT_ELEMENTS(s_aValuesFF),  s_aValuesFF },
     7819        {  bs3CpuInstr3_mpsadbw_XMM1_XMM2_000h_icebp_c32,          255,         RM_REG, T_SSE4_1,     1, 1,   2, RT_ELEMENTS(s_aValues00),  s_aValues00 },
     7820        {  bs3CpuInstr3_mpsadbw_XMM1_FSxBX_000h_icebp_c32,         255,         RM_MEM, T_SSE4_1,     1, 1, 255, RT_ELEMENTS(s_aValues00),  s_aValues00 },
     7821    };
     7822    static BS3CPUINSTR3_TEST1_T const s_aTests64[] =
     7823    {
     7824        {  bs3CpuInstr3_mpsadbw_XMM1_XMM2_0FFh_icebp_c64,          255,         RM_REG, T_SSE4_1,     1, 1,   2, RT_ELEMENTS(s_aValuesFF),  s_aValuesFF },
     7825        {  bs3CpuInstr3_mpsadbw_XMM1_FSxBX_0FFh_icebp_c64,         255,         RM_MEM, T_SSE4_1,     1, 1, 255, RT_ELEMENTS(s_aValuesFF),  s_aValuesFF },
     7826        {  bs3CpuInstr3_mpsadbw_XMM8_XMM9_0FFh_icebp_c64,          255,         RM_REG, T_SSE4_1,     8, 8,   9, RT_ELEMENTS(s_aValuesFF),  s_aValuesFF },
     7827        {  bs3CpuInstr3_mpsadbw_XMM8_FSxBX_0FFh_icebp_c64,         255,         RM_MEM, T_SSE4_1,     8, 8, 255, RT_ELEMENTS(s_aValuesFF),  s_aValuesFF },
     7828
     7829        {  bs3CpuInstr3_mpsadbw_XMM1_XMM2_000h_icebp_c64,          255,         RM_REG, T_SSE4_1,     1, 1,   2, RT_ELEMENTS(s_aValues00),  s_aValues00 },
     7830        {  bs3CpuInstr3_mpsadbw_XMM1_FSxBX_000h_icebp_c64,         255,         RM_MEM, T_SSE4_1,     1, 1, 255, RT_ELEMENTS(s_aValues00),  s_aValues00 },
     7831        {  bs3CpuInstr3_mpsadbw_XMM8_XMM9_000h_icebp_c64,          255,         RM_REG, T_SSE4_1,     8, 8,   9, RT_ELEMENTS(s_aValues00),  s_aValues00 },
     7832        {  bs3CpuInstr3_mpsadbw_XMM8_FSxBX_000h_icebp_c64,         255,         RM_MEM, T_SSE4_1,     8, 8, 255, RT_ELEMENTS(s_aValues00),  s_aValues00 },
    77617833    };
    77627834    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     
    1247512547#if defined(ALL_TESTS)
    1247612548        { "sha1nexte/sha1msg1/sha1msg2/sha256msg1/sha256msg2/sha1rnds4",  bs3CpuInstr3_v_sha1nexte_sha1msg1_sha1msg2_sha256msg1_sha256msg2_sha1rnds4, 0 },
    12477         { "sha256rnds2",                                                  bs3CpuInstr3_v_sha256rnds2, 0 }
     12549        { "sha256rnds2",                                                  bs3CpuInstr3_v_sha256rnds2, 0 },
     12550#endif
     12551#if defined (ALL_TESTS)
     12552        { "mpsadbw",                                        bs3CpuInstr3_v_mpsadbw, 0 }
     12553
    1247812554#endif
    1247912555    };
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