VirtualBox

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


Ignore:
Timestamp:
Aug 4, 2022 2:48:06 PM (3 years ago)
Author:
vboxsync
Message:

ValidationKit/bs3-cpu-instr-3: Add simple [v]pabs{b,w,d} instructions testcase, 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

    r96029 r96033  
    18451845 %endif
    18461846
     1847;
     1848; [V]ABSB
     1849;
     1850EMIT_INSTR_PLUS_ICEBP pabsb,  MM1, MM2
     1851EMIT_INSTR_PLUS_ICEBP pabsb,  MM1, FSxBX
     1852EMIT_INSTR_PLUS_ICEBP pabsb,  XMM1, XMM2
     1853EMIT_INSTR_PLUS_ICEBP pabsb,  XMM1, FSxBX
     1854EMIT_INSTR_PLUS_ICEBP vpabsb, XMM1, XMM2
     1855EMIT_INSTR_PLUS_ICEBP vpabsb, XMM1, FSxBX
     1856EMIT_INSTR_PLUS_ICEBP vpabsb, YMM1, YMM2
     1857EMIT_INSTR_PLUS_ICEBP vpabsb, YMM1, FSxBX
     1858 %if TMPL_BITS == 64
     1859EMIT_INSTR_PLUS_ICEBP pabsb,  XMM9, XMM8
     1860EMIT_INSTR_PLUS_ICEBP pabsb,  XMM9, FSxBX
     1861EMIT_INSTR_PLUS_ICEBP vpabsb, XMM9, XMM8
     1862EMIT_INSTR_PLUS_ICEBP vpabsb, XMM9, FSxBX
     1863EMIT_INSTR_PLUS_ICEBP vpabsb, YMM9, YMM8
     1864EMIT_INSTR_PLUS_ICEBP vpabsb, YMM9, FSxBX
     1865 %endif
     1866
     1867;
     1868; [V]ABSW
     1869;
     1870EMIT_INSTR_PLUS_ICEBP pabsw,  MM1, MM2
     1871EMIT_INSTR_PLUS_ICEBP pabsw,  MM1, FSxBX
     1872EMIT_INSTR_PLUS_ICEBP pabsw,  XMM1, XMM2
     1873EMIT_INSTR_PLUS_ICEBP pabsw,  XMM1, FSxBX
     1874EMIT_INSTR_PLUS_ICEBP vpabsw, XMM1, XMM2
     1875EMIT_INSTR_PLUS_ICEBP vpabsw, XMM1, FSxBX
     1876EMIT_INSTR_PLUS_ICEBP vpabsw, YMM1, YMM2
     1877EMIT_INSTR_PLUS_ICEBP vpabsw, YMM1, FSxBX
     1878 %if TMPL_BITS == 64
     1879EMIT_INSTR_PLUS_ICEBP pabsw,  XMM9, XMM8
     1880EMIT_INSTR_PLUS_ICEBP pabsw,  XMM9, FSxBX
     1881EMIT_INSTR_PLUS_ICEBP vpabsw, XMM9, XMM8
     1882EMIT_INSTR_PLUS_ICEBP vpabsw, XMM9, FSxBX
     1883EMIT_INSTR_PLUS_ICEBP vpabsw, YMM9, YMM8
     1884EMIT_INSTR_PLUS_ICEBP vpabsw, YMM9, FSxBX
     1885 %endif
     1886
     1887;
     1888; [V]ABSD
     1889;
     1890EMIT_INSTR_PLUS_ICEBP pabsd,  MM1, MM2
     1891EMIT_INSTR_PLUS_ICEBP pabsd,  MM1, FSxBX
     1892EMIT_INSTR_PLUS_ICEBP pabsd,  XMM1, XMM2
     1893EMIT_INSTR_PLUS_ICEBP pabsd,  XMM1, FSxBX
     1894EMIT_INSTR_PLUS_ICEBP vpabsd, XMM1, XMM2
     1895EMIT_INSTR_PLUS_ICEBP vpabsd, XMM1, FSxBX
     1896EMIT_INSTR_PLUS_ICEBP vpabsd, YMM1, YMM2
     1897EMIT_INSTR_PLUS_ICEBP vpabsd, YMM1, FSxBX
     1898 %if TMPL_BITS == 64
     1899EMIT_INSTR_PLUS_ICEBP pabsd,  XMM9, XMM8
     1900EMIT_INSTR_PLUS_ICEBP pabsd,  XMM9, FSxBX
     1901EMIT_INSTR_PLUS_ICEBP vpabsd, XMM9, XMM8
     1902EMIT_INSTR_PLUS_ICEBP vpabsd, XMM9, FSxBX
     1903EMIT_INSTR_PLUS_ICEBP vpabsd, YMM9, YMM8
     1904EMIT_INSTR_PLUS_ICEBP vpabsd, YMM9, FSxBX
     1905 %endif
     1906
    18471907
    18481908%endif ; BS3_INSTANTIATING_CMN
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32

    r96029 r96033  
    70607060    return bs3CpuInstr3_WorkerTestType3(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
    70617061                                        g_aXcptConfig1, RT_ELEMENTS(g_aXcptConfig1), 255 /*cbMaxAlign*/);
     7062}
     7063
     7064
     7065/*
     7066 * [V]PABSB / [V]PABSW / [V]PABSD
     7067 */
     7068BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pabsb_MM1_MM2_icebp);
     7069BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pabsb_MM1_FSxBX_icebp);
     7070BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pabsb_XMM1_XMM2_icebp);
     7071BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pabsb_XMM1_FSxBX_icebp);
     7072extern FNBS3FAR             bs3CpuInstr3_pabsb_XMM9_XMM8_icebp_c64;
     7073extern FNBS3FAR             bs3CpuInstr3_pabsb_XMM9_FSxBX_icebp_c64;
     7074BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpabsb_XMM1_XMM2_icebp);
     7075BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpabsb_XMM1_FSxBX_icebp);
     7076extern FNBS3FAR             bs3CpuInstr3_vpabsb_XMM9_XMM8_icebp_c64;
     7077extern FNBS3FAR             bs3CpuInstr3_vpabsb_XMM9_FSxBX_icebp_c64;
     7078BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpabsb_YMM1_YMM2_icebp);
     7079BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpabsb_YMM1_FSxBX_icebp);
     7080extern FNBS3FAR             bs3CpuInstr3_vpabsb_YMM9_YMM8_icebp_c64;
     7081extern FNBS3FAR             bs3CpuInstr3_vpabsb_YMM9_FSxBX_icebp_c64;
     7082
     7083BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pabsw_MM1_MM2_icebp);
     7084BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pabsw_MM1_FSxBX_icebp);
     7085BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pabsw_XMM1_XMM2_icebp);
     7086BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pabsw_XMM1_FSxBX_icebp);
     7087extern FNBS3FAR             bs3CpuInstr3_pabsw_XMM9_XMM8_icebp_c64;
     7088extern FNBS3FAR             bs3CpuInstr3_pabsw_XMM9_FSxBX_icebp_c64;
     7089BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpabsw_XMM1_XMM2_icebp);
     7090BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpabsw_XMM1_FSxBX_icebp);
     7091extern FNBS3FAR             bs3CpuInstr3_vpabsw_XMM9_XMM8_icebp_c64;
     7092extern FNBS3FAR             bs3CpuInstr3_vpabsw_XMM9_FSxBX_icebp_c64;
     7093BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpabsw_YMM1_YMM2_icebp);
     7094BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpabsw_YMM1_FSxBX_icebp);
     7095extern FNBS3FAR             bs3CpuInstr3_vpabsw_YMM9_YMM8_icebp_c64;
     7096extern FNBS3FAR             bs3CpuInstr3_vpabsw_YMM9_FSxBX_icebp_c64;
     7097
     7098BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pabsd_MM1_MM2_icebp);
     7099BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pabsd_MM1_FSxBX_icebp);
     7100BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pabsd_XMM1_XMM2_icebp);
     7101BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pabsd_XMM1_FSxBX_icebp);
     7102extern FNBS3FAR             bs3CpuInstr3_pabsd_XMM9_XMM8_icebp_c64;
     7103extern FNBS3FAR             bs3CpuInstr3_pabsd_XMM9_FSxBX_icebp_c64;
     7104BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpabsd_XMM1_XMM2_icebp);
     7105BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpabsd_XMM1_FSxBX_icebp);
     7106extern FNBS3FAR             bs3CpuInstr3_vpabsd_XMM9_XMM8_icebp_c64;
     7107extern FNBS3FAR             bs3CpuInstr3_vpabsd_XMM9_FSxBX_icebp_c64;
     7108BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpabsd_YMM1_YMM2_icebp);
     7109BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpabsd_YMM1_FSxBX_icebp);
     7110extern FNBS3FAR             bs3CpuInstr3_vpabsd_YMM9_YMM8_icebp_c64;
     7111extern FNBS3FAR             bs3CpuInstr3_vpabsd_YMM9_FSxBX_icebp_c64;
     7112
     7113BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_pabsb_pabsw_pabsd(uint8_t bMode)
     7114{
     7115    static BS3CPUINSTR3_TEST3_VALUES_T const s_aValuesB[] =
     7116    {
     7117        {            RTUINT256_INIT_C(0, 0, 0, 0),
     7118            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     7119        {            RTUINT256_INIT_C(0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff),
     7120            /* => */ RTUINT256_INIT_C(0x0101010101010101, 0x0101010101010101, 0x0101010101010101, 0x0101010101010101) },
     7121        {            RTUINT256_INIT_C(0x9999aaaabbbbcccc, 0xddddeeeeffff2121, 0x1111222233334444, 0x5555666677778888),
     7122            /* => */ RTUINT256_INIT_C(0x6767565645453434, 0x2323121201012121, 0x1111222233334444, 0x5555666677777878) },
     7123        {            RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     7124            /* => */ RTUINT256_INIT_C(0x4d09102a6c24732b, 0x3e0c1738666b3f1a, 0x4c212f58564c655e, 0x645c20736d096a45) },
     7125    };
     7126    static BS3CPUINSTR3_TEST3_VALUES_T const s_aValuesW[] =
     7127    {
     7128        {            RTUINT256_INIT_C(0, 0, 0, 0),
     7129            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     7130        {            RTUINT256_INIT_C(0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff),
     7131            /* => */ RTUINT256_INIT_C(0x0001000100010001, 0x0001000100010001, 0x0001000100010001, 0x0001000100010001) },
     7132        {            RTUINT256_INIT_C(0x9999aaaabbbbcccc, 0xddddeeeeffff2121, 0x1111222233334444, 0x5555666677778888),
     7133            /* => */ RTUINT256_INIT_C(0x6667555644453334, 0x2223111200012121, 0x1111222233334444, 0x5555666677777778) },
     7134        {            RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     7135            /* => */ RTUINT256_INIT_C(0x4d090fd66cdc73d5, 0x3ef417c8666b3fe6, 0x4bdf2fa8564c645e, 0x63a41f8d6cf76945) },
     7136    };
     7137    static BS3CPUINSTR3_TEST3_VALUES_T const s_aValuesD[] =
     7138    {
     7139        {            RTUINT256_INIT_C(0, 0, 0, 0),
     7140            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     7141        {            RTUINT256_INIT_C(0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff),
     7142            /* => */ RTUINT256_INIT_C(0x0000000100000001, 0x0000000100000001, 0x0000000100000001, 0x0000000100000001) },
     7143        {            RTUINT256_INIT_C(0x9999aaaabbbbcccc, 0xddddeeeeffff2121, 0x1111222233334444, 0x5555666677778888),
     7144            /* => */ RTUINT256_INIT_C(0x6666555644443334, 0x222211120000dedf, 0x1111222233334444, 0x5555666677778888) },
     7145        {            RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     7146            /* => */ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0x4bded058564c9ba2, 0x63a31f8d6cf66945) },
     7147    };
     7148
     7149    static BS3CPUINSTR3_TEST3_T const s_aTests16[] =
     7150    {
     7151        {  bs3CpuInstr3_pabsb_MM1_MM2_icebp_c16,     255,         RM_REG, T_MMX_SSSE3, 1,   2, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7152        {  bs3CpuInstr3_pabsb_MM1_FSxBX_icebp_c16,   255,         RM_MEM, T_MMX_SSSE3, 1, 255, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7153        {  bs3CpuInstr3_pabsb_XMM1_XMM2_icebp_c16,   255,         RM_REG, T_SSSE3,     1,   2, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7154        {  bs3CpuInstr3_pabsb_XMM1_FSxBX_icebp_c16,  255,         RM_MEM, T_SSSE3,     1, 255, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7155        {  bs3CpuInstr3_vpabsb_XMM1_XMM2_icebp_c16,  255,         RM_REG, T_AVX_128,   1,   2, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7156        {  bs3CpuInstr3_vpabsb_XMM1_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 255, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7157        {  bs3CpuInstr3_vpabsb_YMM1_YMM2_icebp_c16,  255,         RM_REG, T_AVX_256,   1,   2, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7158        {  bs3CpuInstr3_vpabsb_YMM1_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_256,   1, 255, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7159
     7160        {  bs3CpuInstr3_pabsw_MM1_MM2_icebp_c16,     255,         RM_REG, T_MMX_SSSE3, 1,   2, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7161        {  bs3CpuInstr3_pabsw_MM1_FSxBX_icebp_c16,   255,         RM_MEM, T_MMX_SSSE3, 1, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7162        {  bs3CpuInstr3_pabsw_XMM1_XMM2_icebp_c16,   255,         RM_REG, T_SSSE3,     1,   2, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7163        {  bs3CpuInstr3_pabsw_XMM1_FSxBX_icebp_c16,  255,         RM_MEM, T_SSSE3,     1, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7164        {  bs3CpuInstr3_vpabsw_XMM1_XMM2_icebp_c16,  255,         RM_REG, T_AVX_128,   1,   2, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7165        {  bs3CpuInstr3_vpabsw_XMM1_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7166        {  bs3CpuInstr3_vpabsw_YMM1_YMM2_icebp_c16,  255,         RM_REG, T_AVX_256,   1,   2, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7167        {  bs3CpuInstr3_vpabsw_YMM1_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_256,   1, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7168
     7169        {  bs3CpuInstr3_pabsd_MM1_MM2_icebp_c16,     255,         RM_REG, T_MMX_SSSE3, 1,   2, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7170        {  bs3CpuInstr3_pabsd_MM1_FSxBX_icebp_c16,   255,         RM_MEM, T_MMX_SSSE3, 1, 255, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7171        {  bs3CpuInstr3_pabsd_XMM1_XMM2_icebp_c16,   255,         RM_REG, T_SSSE3,     1,   2, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7172        {  bs3CpuInstr3_pabsd_XMM1_FSxBX_icebp_c16,  255,         RM_MEM, T_SSSE3,     1, 255, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7173        {  bs3CpuInstr3_vpabsd_XMM1_XMM2_icebp_c16,  255,         RM_REG, T_AVX_128,   1,   2, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7174        {  bs3CpuInstr3_vpabsd_XMM1_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 255, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7175        {  bs3CpuInstr3_vpabsd_YMM1_YMM2_icebp_c16,  255,         RM_REG, T_AVX_256,   1,   2, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7176        {  bs3CpuInstr3_vpabsd_YMM1_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_256,   1, 255, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7177    };
     7178    static BS3CPUINSTR3_TEST3_T const s_aTests32[] =
     7179    {
     7180        {  bs3CpuInstr3_pabsb_MM1_MM2_icebp_c32,     255,         RM_REG, T_MMX_SSSE3, 1,   2, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7181        {  bs3CpuInstr3_pabsb_MM1_FSxBX_icebp_c32,   255,         RM_MEM, T_MMX_SSSE3, 1, 255, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7182        {  bs3CpuInstr3_pabsb_XMM1_XMM2_icebp_c32,   255,         RM_REG, T_SSSE3,     1,   2, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7183        {  bs3CpuInstr3_pabsb_XMM1_FSxBX_icebp_c32,  255,         RM_MEM, T_SSSE3,     1, 255, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7184        {  bs3CpuInstr3_vpabsb_XMM1_XMM2_icebp_c32,  255,         RM_REG, T_AVX_128,   1,   2, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7185        {  bs3CpuInstr3_vpabsb_XMM1_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 255, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7186        {  bs3CpuInstr3_vpabsb_YMM1_YMM2_icebp_c32,  255,         RM_REG, T_AVX_256,   1,   2, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7187        {  bs3CpuInstr3_vpabsb_YMM1_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_256,   1, 255, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7188
     7189        {  bs3CpuInstr3_pabsw_MM1_MM2_icebp_c32,     255,         RM_REG, T_MMX_SSSE3, 1,   2, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7190        {  bs3CpuInstr3_pabsw_MM1_FSxBX_icebp_c32,   255,         RM_MEM, T_MMX_SSSE3, 1, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7191        {  bs3CpuInstr3_pabsw_XMM1_XMM2_icebp_c32,   255,         RM_REG, T_SSSE3,     1,   2, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7192        {  bs3CpuInstr3_pabsw_XMM1_FSxBX_icebp_c32,  255,         RM_MEM, T_SSSE3,     1, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7193        {  bs3CpuInstr3_vpabsw_XMM1_XMM2_icebp_c32,  255,         RM_REG, T_AVX_128,   1,   2, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7194        {  bs3CpuInstr3_vpabsw_XMM1_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7195        {  bs3CpuInstr3_vpabsw_YMM1_YMM2_icebp_c32,  255,         RM_REG, T_AVX_256,   1,   2, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7196        {  bs3CpuInstr3_vpabsw_YMM1_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_256,   1, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7197
     7198        {  bs3CpuInstr3_pabsd_MM1_MM2_icebp_c32,     255,         RM_REG, T_MMX_SSSE3, 1,   2, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7199        {  bs3CpuInstr3_pabsd_MM1_FSxBX_icebp_c32,   255,         RM_MEM, T_MMX_SSSE3, 1, 255, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7200        {  bs3CpuInstr3_pabsd_XMM1_XMM2_icebp_c32,   255,         RM_REG, T_SSSE3,     1,   2, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7201        {  bs3CpuInstr3_pabsd_XMM1_FSxBX_icebp_c32,  255,         RM_MEM, T_SSSE3,     1, 255, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7202        {  bs3CpuInstr3_vpabsd_XMM1_XMM2_icebp_c32,  255,         RM_REG, T_AVX_128,   1,   2, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7203        {  bs3CpuInstr3_vpabsd_XMM1_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 255, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7204        {  bs3CpuInstr3_vpabsd_YMM1_YMM2_icebp_c32,  255,         RM_REG, T_AVX_256,   1,   2, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7205        {  bs3CpuInstr3_vpabsd_YMM1_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_256,   1, 255, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7206    };
     7207    static BS3CPUINSTR3_TEST3_T const s_aTests64[] =
     7208    {
     7209        {  bs3CpuInstr3_pabsb_MM1_MM2_icebp_c64,     255,         RM_REG, T_MMX_SSSE3, 1,   2, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7210        {  bs3CpuInstr3_pabsb_MM1_FSxBX_icebp_c64,   255,         RM_MEM, T_MMX_SSSE3, 1, 255, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7211        {  bs3CpuInstr3_pabsb_XMM1_XMM2_icebp_c64,   255,         RM_REG, T_SSSE3,     1,   2, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7212        {  bs3CpuInstr3_pabsb_XMM1_FSxBX_icebp_c64,  255,         RM_MEM, T_SSSE3,     1, 255, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7213        {  bs3CpuInstr3_pabsb_XMM9_XMM8_icebp_c64,   255,         RM_REG, T_SSSE3,     9,   8, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7214        {  bs3CpuInstr3_pabsb_XMM9_FSxBX_icebp_c64,  255,         RM_MEM, T_SSSE3,     9, 255, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7215        {  bs3CpuInstr3_vpabsb_XMM1_XMM2_icebp_c64,  255,         RM_REG, T_AVX_128,   1,   2, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7216        {  bs3CpuInstr3_vpabsb_XMM1_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 255, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7217        {  bs3CpuInstr3_vpabsb_XMM9_XMM8_icebp_c64,  255,         RM_REG, T_AVX_128,   9,   8, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7218        {  bs3CpuInstr3_vpabsb_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   9, 255, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7219        {  bs3CpuInstr3_vpabsb_YMM1_YMM2_icebp_c64,  255,         RM_REG, T_AVX_256,   1,   2, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7220        {  bs3CpuInstr3_vpabsb_YMM1_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256,   1, 255, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7221        {  bs3CpuInstr3_vpabsb_YMM9_YMM8_icebp_c64,  255,         RM_REG, T_AVX_256,   9,   8, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7222        {  bs3CpuInstr3_vpabsb_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256,   9, 255, RT_ELEMENTS(s_aValuesB), s_aValuesB },
     7223
     7224        {  bs3CpuInstr3_pabsw_MM1_MM2_icebp_c64,     255,         RM_REG, T_MMX_SSSE3, 1,   2, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7225        {  bs3CpuInstr3_pabsw_MM1_FSxBX_icebp_c64,   255,         RM_MEM, T_MMX_SSSE3, 1, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7226        {  bs3CpuInstr3_pabsw_XMM1_XMM2_icebp_c64,   255,         RM_REG, T_SSSE3,     1,   2, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7227        {  bs3CpuInstr3_pabsw_XMM1_FSxBX_icebp_c64,  255,         RM_MEM, T_SSSE3,     1, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7228        {  bs3CpuInstr3_pabsw_XMM9_XMM8_icebp_c64,   255,         RM_REG, T_SSSE3,     9,   8, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7229        {  bs3CpuInstr3_pabsw_XMM9_FSxBX_icebp_c64,  255,         RM_MEM, T_SSSE3,     9, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7230        {  bs3CpuInstr3_vpabsw_XMM1_XMM2_icebp_c64,  255,         RM_REG, T_AVX_128,   1,   2, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7231        {  bs3CpuInstr3_vpabsw_XMM1_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7232        {  bs3CpuInstr3_vpabsw_XMM9_XMM8_icebp_c64,  255,         RM_REG, T_AVX_128,   9,   8, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7233        {  bs3CpuInstr3_vpabsw_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   9, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7234        {  bs3CpuInstr3_vpabsw_YMM1_YMM2_icebp_c64,  255,         RM_REG, T_AVX_256,   1,   2, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7235        {  bs3CpuInstr3_vpabsw_YMM1_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256,   1, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7236        {  bs3CpuInstr3_vpabsw_YMM9_YMM8_icebp_c64,  255,         RM_REG, T_AVX_256,   9,   8, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7237        {  bs3CpuInstr3_vpabsw_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256,   9, 255, RT_ELEMENTS(s_aValuesW), s_aValuesW },
     7238
     7239        {  bs3CpuInstr3_pabsd_MM1_MM2_icebp_c64,     255,         RM_REG, T_MMX_SSSE3, 1,   2, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7240        {  bs3CpuInstr3_pabsd_MM1_FSxBX_icebp_c64,   255,         RM_MEM, T_MMX_SSSE3, 1, 255, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7241        {  bs3CpuInstr3_pabsd_XMM1_XMM2_icebp_c64,   255,         RM_REG, T_SSSE3,     1,   2, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7242        {  bs3CpuInstr3_pabsd_XMM1_FSxBX_icebp_c64,  255,         RM_MEM, T_SSSE3,     1, 255, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7243        {  bs3CpuInstr3_pabsd_XMM9_XMM8_icebp_c64,   255,         RM_REG, T_SSSE3,     9,   8, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7244        {  bs3CpuInstr3_pabsd_XMM9_FSxBX_icebp_c64,  255,         RM_MEM, T_SSSE3,     9, 255, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7245        {  bs3CpuInstr3_vpabsd_XMM1_XMM2_icebp_c64,  255,         RM_REG, T_AVX_128,   1,   2, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7246        {  bs3CpuInstr3_vpabsd_XMM1_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 255, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7247        {  bs3CpuInstr3_vpabsd_XMM9_XMM8_icebp_c64,  255,         RM_REG, T_AVX_128,   9,   8, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7248        {  bs3CpuInstr3_vpabsd_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   9, 255, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7249        {  bs3CpuInstr3_vpabsd_YMM1_YMM2_icebp_c64,  255,         RM_REG, T_AVX_256,   1,   2, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7250        {  bs3CpuInstr3_vpabsd_YMM1_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256,   1, 255, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7251        {  bs3CpuInstr3_vpabsd_YMM9_YMM8_icebp_c64,  255,         RM_REG, T_AVX_256,   9,   8, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7252        {  bs3CpuInstr3_vpabsd_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256,   9, 255, RT_ELEMENTS(s_aValuesD), s_aValuesD },
     7253    };
     7254    static BS3CPUINSTR3_TEST3_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST3_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     7255    unsigned const                         iTest       = BS3CPUINSTR3_TEST_MODES_INDEX(bMode);
     7256    return bs3CpuInstr3_WorkerTestType3(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     7257                                        g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4), X86_EFL_STATUS_BITS);
    70627258}
    70637259
     
    74957691        { "[v]pavgb/[v]pavgw",                              bs3CpuInstr3_v_pavgb_pavgw, 0 },
    74967692#endif
     7693#if defined(ALL_TESTS)
     7694        { "[v]pabsb/[v]pabsw/[v]pabsd",                     bs3CpuInstr3_v_pabsb_pabsw_pabsd, 0 },
     7695#endif
    74977696    };
    74987697    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