VirtualBox

Ignore:
Timestamp:
Aug 4, 2022 8:01:08 PM (3 years ago)
Author:
vboxsync
Message:

ValidationKit/bs3-cpu-instr-3: Add simple [v]psign{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

    r96033 r96035  
    18461846
    18471847;
     1848; [V]PSIGNB
     1849;
     1850EMIT_INSTR_PLUS_ICEBP   psignb, MM1, MM2
     1851EMIT_INSTR_PLUS_ICEBP   psignb, MM1, FSxBX
     1852
     1853EMIT_INSTR_PLUS_ICEBP   psignb, XMM1, XMM2
     1854EMIT_INSTR_PLUS_ICEBP   psignb, XMM1, FSxBX
     1855 %if TMPL_BITS == 64
     1856EMIT_INSTR_PLUS_ICEBP   psignb, XMM8, XMM9
     1857EMIT_INSTR_PLUS_ICEBP   psignb, XMM8, FSxBX
     1858 %endif
     1859
     1860EMIT_INSTR_PLUS_ICEBP   vpsignb, XMM1, XMM2, XMM3
     1861EMIT_INSTR_PLUS_ICEBP   vpsignb, XMM1, XMM2, FSxBX
     1862 %if TMPL_BITS == 64
     1863EMIT_INSTR_PLUS_ICEBP   vpsignb, XMM8, XMM9, XMM10
     1864EMIT_INSTR_PLUS_ICEBP   vpsignb, XMM8, XMM9, FSxBX
     1865 %endif
     1866
     1867EMIT_INSTR_PLUS_ICEBP   vpsignb, YMM1, YMM2, YMM3
     1868EMIT_INSTR_PLUS_ICEBP   vpsignb, YMM1, YMM2, FSxBX
     1869 %if TMPL_BITS == 64
     1870EMIT_INSTR_PLUS_ICEBP   vpsignb, YMM8, YMM9, YMM10
     1871EMIT_INSTR_PLUS_ICEBP   vpsignb, YMM8, YMM9, FSxBX
     1872 %endif
     1873
     1874;
     1875; [V]PSIGNW
     1876;
     1877EMIT_INSTR_PLUS_ICEBP   psignw, MM1, MM2
     1878EMIT_INSTR_PLUS_ICEBP   psignw, MM1, FSxBX
     1879
     1880EMIT_INSTR_PLUS_ICEBP   psignw, XMM1, XMM2
     1881EMIT_INSTR_PLUS_ICEBP   psignw, XMM1, FSxBX
     1882 %if TMPL_BITS == 64
     1883EMIT_INSTR_PLUS_ICEBP   psignw, XMM8, XMM9
     1884EMIT_INSTR_PLUS_ICEBP   psignw, XMM8, FSxBX
     1885 %endif
     1886
     1887EMIT_INSTR_PLUS_ICEBP   vpsignw, XMM1, XMM2, XMM3
     1888EMIT_INSTR_PLUS_ICEBP   vpsignw, XMM1, XMM2, FSxBX
     1889 %if TMPL_BITS == 64
     1890EMIT_INSTR_PLUS_ICEBP   vpsignw, XMM8, XMM9, XMM10
     1891EMIT_INSTR_PLUS_ICEBP   vpsignw, XMM8, XMM9, FSxBX
     1892 %endif
     1893
     1894EMIT_INSTR_PLUS_ICEBP   vpsignw, YMM1, YMM2, YMM3
     1895EMIT_INSTR_PLUS_ICEBP   vpsignw, YMM1, YMM2, FSxBX
     1896 %if TMPL_BITS == 64
     1897EMIT_INSTR_PLUS_ICEBP   vpsignw, YMM8, YMM9, YMM10
     1898EMIT_INSTR_PLUS_ICEBP   vpsignw, YMM8, YMM9, FSxBX
     1899 %endif
     1900
     1901;
     1902; [V]PSIGND
     1903;
     1904EMIT_INSTR_PLUS_ICEBP   psignd, MM1, MM2
     1905EMIT_INSTR_PLUS_ICEBP   psignd, MM1, FSxBX
     1906
     1907EMIT_INSTR_PLUS_ICEBP   psignd, XMM1, XMM2
     1908EMIT_INSTR_PLUS_ICEBP   psignd, XMM1, FSxBX
     1909 %if TMPL_BITS == 64
     1910EMIT_INSTR_PLUS_ICEBP   psignd, XMM8, XMM9
     1911EMIT_INSTR_PLUS_ICEBP   psignd, XMM8, FSxBX
     1912 %endif
     1913
     1914EMIT_INSTR_PLUS_ICEBP   vpsignd, XMM1, XMM2, XMM3
     1915EMIT_INSTR_PLUS_ICEBP   vpsignd, XMM1, XMM2, FSxBX
     1916 %if TMPL_BITS == 64
     1917EMIT_INSTR_PLUS_ICEBP   vpsignd, XMM8, XMM9, XMM10
     1918EMIT_INSTR_PLUS_ICEBP   vpsignd, XMM8, XMM9, FSxBX
     1919 %endif
     1920
     1921EMIT_INSTR_PLUS_ICEBP   vpsignd, YMM1, YMM2, YMM3
     1922EMIT_INSTR_PLUS_ICEBP   vpsignd, YMM1, YMM2, FSxBX
     1923 %if TMPL_BITS == 64
     1924EMIT_INSTR_PLUS_ICEBP   vpsignd, YMM8, YMM9, YMM10
     1925EMIT_INSTR_PLUS_ICEBP   vpsignd, YMM8, YMM9, FSxBX
     1926 %endif
     1927
     1928;
    18481929; [V]ABSB
    18491930;
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32

    r96033 r96035  
    49984998        {  bs3CpuInstr3_vpavgw_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
    49994999        {  bs3CpuInstr3_vpavgw_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5000    };
     5001    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     5002    unsigned const                         iTest       = BS3CPUINSTR3_TEST_MODES_INDEX(bMode);
     5003    return bs3CpuInstr3_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     5004                                        g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4));
     5005}
     5006
     5007
     5008/*
     5009 * [V]PSIGNB  - Negate/Zero/Keep the destination packed byte integers based on the sign of the corresponding source operand.
     5010 * [V]PSIGNW  - Negate/Zero/Keep the destination packed word integers based on the sign of the corresponding source operand.
     5011 * [V]PSIGND  - Negate/Zero/Keep the destination packed doubleword integers based on the sign of the corresponding source operand.
     5012 */
     5013BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_psignb_MM1_MM2_icebp);
     5014BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_psignb_MM1_FSxBX_icebp);
     5015BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_psignb_XMM1_XMM2_icebp);
     5016BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_psignb_XMM1_FSxBX_icebp);
     5017extern FNBS3FAR             bs3CpuInstr3_psignb_XMM8_XMM9_icebp_c64;
     5018extern FNBS3FAR             bs3CpuInstr3_psignb_XMM8_FSxBX_icebp_c64;
     5019BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpsignb_XMM1_XMM2_XMM3_icebp);
     5020BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpsignb_XMM1_XMM2_FSxBX_icebp);
     5021extern FNBS3FAR             bs3CpuInstr3_vpsignb_XMM8_XMM9_XMM10_icebp_c64;
     5022extern FNBS3FAR             bs3CpuInstr3_vpsignb_XMM8_XMM9_FSxBX_icebp_c64;
     5023BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpsignb_YMM1_YMM2_YMM3_icebp);
     5024BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpsignb_YMM1_YMM2_FSxBX_icebp);
     5025extern FNBS3FAR             bs3CpuInstr3_vpsignb_YMM8_YMM9_YMM10_icebp_c64;
     5026extern FNBS3FAR             bs3CpuInstr3_vpsignb_YMM8_YMM9_FSxBX_icebp_c64;
     5027
     5028BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_psignw_MM1_MM2_icebp);
     5029BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_psignw_MM1_FSxBX_icebp);
     5030BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_psignw_XMM1_XMM2_icebp);
     5031BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_psignw_XMM1_FSxBX_icebp);
     5032extern FNBS3FAR             bs3CpuInstr3_psignw_XMM8_XMM9_icebp_c64;
     5033extern FNBS3FAR             bs3CpuInstr3_psignw_XMM8_FSxBX_icebp_c64;
     5034BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpsignw_XMM1_XMM2_XMM3_icebp);
     5035BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpsignw_XMM1_XMM2_FSxBX_icebp);
     5036extern FNBS3FAR             bs3CpuInstr3_vpsignw_XMM8_XMM9_XMM10_icebp_c64;
     5037extern FNBS3FAR             bs3CpuInstr3_vpsignw_XMM8_XMM9_FSxBX_icebp_c64;
     5038BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpsignw_YMM1_YMM2_YMM3_icebp);
     5039BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpsignw_YMM1_YMM2_FSxBX_icebp);
     5040extern FNBS3FAR             bs3CpuInstr3_vpsignw_YMM8_YMM9_YMM10_icebp_c64;
     5041extern FNBS3FAR             bs3CpuInstr3_vpsignw_YMM8_YMM9_FSxBX_icebp_c64;
     5042
     5043BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_psignd_MM1_MM2_icebp);
     5044BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_psignd_MM1_FSxBX_icebp);
     5045BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_psignd_XMM1_XMM2_icebp);
     5046BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_psignd_XMM1_FSxBX_icebp);
     5047extern FNBS3FAR             bs3CpuInstr3_psignd_XMM8_XMM9_icebp_c64;
     5048extern FNBS3FAR             bs3CpuInstr3_psignd_XMM8_FSxBX_icebp_c64;
     5049BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpsignd_XMM1_XMM2_XMM3_icebp);
     5050BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpsignd_XMM1_XMM2_FSxBX_icebp);
     5051extern FNBS3FAR             bs3CpuInstr3_vpsignd_XMM8_XMM9_XMM10_icebp_c64;
     5052extern FNBS3FAR             bs3CpuInstr3_vpsignd_XMM8_XMM9_FSxBX_icebp_c64;
     5053BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpsignd_YMM1_YMM2_YMM3_icebp);
     5054BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpsignd_YMM1_YMM2_FSxBX_icebp);
     5055extern FNBS3FAR             bs3CpuInstr3_vpsignd_YMM8_YMM9_YMM10_icebp_c64;
     5056extern FNBS3FAR             bs3CpuInstr3_vpsignd_YMM8_YMM9_FSxBX_icebp_c64;
     5057
     5058BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_psignb_psignw_psignd(uint8_t bMode)
     5059{
     5060    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesB[] =
     5061    {
     5062        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5063            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5064            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     5065        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     5066            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     5067            /* => */ RTUINT256_INIT_C(0x4f4e4d4c4b4a4948, 0x5f5e5d5c5b5a5958, 0x6f6e6d6c6b6a6968, 0x7f7e7d7c7b7a7978) },
     5068        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     5069            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     5070            /* => */ RTUINT256_INIT_C(0x1edd23ac099d326c, 0xf9a48e14407256cd, 0x7800e9a5bf999e3d, 0xbdd333a0dd846703) },
     5071    };
     5072    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesW[] =
     5073    {
     5074        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5075            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5076            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     5077        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     5078            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     5079            /* => */ RTUINT256_INIT_C(0x4e4e4c4c4a4a4848, 0x5e5e5c5c5a5a5858, 0x6e6e6c6c6a6a6868, 0x7e7e7c7c7a7a7878) },
     5080        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     5081            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     5082            /* => */ RTUINT256_INIT_C(0x1edd225409633294, 0xf95c8eec40725633, 0x7800e95bbf999d3d, 0xbc2d3260dc7c6603) },
     5083    };
     5084    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesD[] =
     5085    {
     5086        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5087            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5088            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     5089        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     5090            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     5091            /* => */ RTUINT256_INIT_C(0x4e4d4c4c4a494848, 0x5e5d5c5c5a595858, 0x6e6d6c6c6a696868, 0x7e7d7c7c7a797878) },
     5092        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     5093            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     5094            /* => */ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x77ff16a5bf9962c3, 0xbc2c3260dc7b6603) },
     5095    };
     5096
     5097    static BS3CPUINSTR3_TEST1_T const s_aTests16[] =
     5098    {
     5099        {  bs3CpuInstr3_psignb_MM1_MM2_icebp_c16,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5100        {  bs3CpuInstr3_psignb_MM1_FSxBX_icebp_c16,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5101        {  bs3CpuInstr3_psignb_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5102        {  bs3CpuInstr3_psignb_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5103        {  bs3CpuInstr3_vpsignb_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5104        {  bs3CpuInstr3_vpsignb_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5105        {  bs3CpuInstr3_vpsignb_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5106        {  bs3CpuInstr3_vpsignb_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5107
     5108        {  bs3CpuInstr3_psignw_MM1_MM2_icebp_c16,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5109        {  bs3CpuInstr3_psignw_MM1_FSxBX_icebp_c16,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5110        {  bs3CpuInstr3_psignw_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5111        {  bs3CpuInstr3_psignw_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5112        {  bs3CpuInstr3_vpsignw_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5113        {  bs3CpuInstr3_vpsignw_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5114        {  bs3CpuInstr3_vpsignw_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5115        {  bs3CpuInstr3_vpsignw_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5116
     5117        {  bs3CpuInstr3_psignd_MM1_MM2_icebp_c16,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5118        {  bs3CpuInstr3_psignd_MM1_FSxBX_icebp_c16,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5119        {  bs3CpuInstr3_psignd_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5120        {  bs3CpuInstr3_psignd_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5121        {  bs3CpuInstr3_vpsignd_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5122        {  bs3CpuInstr3_vpsignd_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5123        {  bs3CpuInstr3_vpsignd_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5124        {  bs3CpuInstr3_vpsignd_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5125    };
     5126    static BS3CPUINSTR3_TEST1_T const s_aTests32[] =
     5127    {
     5128        {  bs3CpuInstr3_psignb_MM1_MM2_icebp_c32,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5129        {  bs3CpuInstr3_psignb_MM1_FSxBX_icebp_c32,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5130        {  bs3CpuInstr3_psignb_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5131        {  bs3CpuInstr3_psignb_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5132        {  bs3CpuInstr3_vpsignb_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5133        {  bs3CpuInstr3_vpsignb_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5134        {  bs3CpuInstr3_vpsignb_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5135        {  bs3CpuInstr3_vpsignb_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5136
     5137        {  bs3CpuInstr3_psignw_MM1_MM2_icebp_c32,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5138        {  bs3CpuInstr3_psignw_MM1_FSxBX_icebp_c32,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5139        {  bs3CpuInstr3_psignw_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5140        {  bs3CpuInstr3_psignw_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5141        {  bs3CpuInstr3_vpsignw_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5142        {  bs3CpuInstr3_vpsignw_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5143        {  bs3CpuInstr3_vpsignw_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5144        {  bs3CpuInstr3_vpsignw_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5145
     5146        {  bs3CpuInstr3_psignd_MM1_MM2_icebp_c32,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5147        {  bs3CpuInstr3_psignd_MM1_FSxBX_icebp_c32,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5148        {  bs3CpuInstr3_psignd_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5149        {  bs3CpuInstr3_psignd_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5150        {  bs3CpuInstr3_vpsignd_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5151        {  bs3CpuInstr3_vpsignd_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5152        {  bs3CpuInstr3_vpsignd_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5153        {  bs3CpuInstr3_vpsignd_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5154    };
     5155    static BS3CPUINSTR3_TEST1_T const s_aTests64[] =
     5156    {
     5157        {  bs3CpuInstr3_psignb_MM1_MM2_icebp_c32,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5158        {  bs3CpuInstr3_psignb_MM1_FSxBX_icebp_c32,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5159        {  bs3CpuInstr3_psignb_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5160        {  bs3CpuInstr3_psignb_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5161        {  bs3CpuInstr3_psignb_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSSE3,     8, 8,   9, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5162        {  bs3CpuInstr3_psignb_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     8, 8, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5163        {  bs3CpuInstr3_vpsignb_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5164        {  bs3CpuInstr3_vpsignb_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5165        {  bs3CpuInstr3_vpsignb_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5166        {  bs3CpuInstr3_vpsignb_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5167        {  bs3CpuInstr3_vpsignb_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5168        {  bs3CpuInstr3_vpsignb_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5169        {  bs3CpuInstr3_vpsignb_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5170        {  bs3CpuInstr3_vpsignb_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     5171
     5172        {  bs3CpuInstr3_psignw_MM1_MM2_icebp_c64,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5173        {  bs3CpuInstr3_psignw_MM1_FSxBX_icebp_c64,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5174        {  bs3CpuInstr3_psignw_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5175        {  bs3CpuInstr3_psignw_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5176        {  bs3CpuInstr3_psignw_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSSE3,     8, 8,   9, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5177        {  bs3CpuInstr3_psignw_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     8, 8, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5178        {  bs3CpuInstr3_vpsignw_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5179        {  bs3CpuInstr3_vpsignw_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5180        {  bs3CpuInstr3_vpsignw_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5181        {  bs3CpuInstr3_vpsignw_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5182        {  bs3CpuInstr3_vpsignw_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5183        {  bs3CpuInstr3_vpsignw_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5184        {  bs3CpuInstr3_vpsignw_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5185        {  bs3CpuInstr3_vpsignw_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     5186
     5187        {  bs3CpuInstr3_psignd_MM1_MM2_icebp_c64,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5188        {  bs3CpuInstr3_psignd_MM1_FSxBX_icebp_c64,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5189        {  bs3CpuInstr3_psignd_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5190        {  bs3CpuInstr3_psignd_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5191        {  bs3CpuInstr3_psignd_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSSE3,     8, 8,   9, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5192        {  bs3CpuInstr3_psignd_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     8, 8, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5193        {  bs3CpuInstr3_vpsignd_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5194        {  bs3CpuInstr3_vpsignd_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5195        {  bs3CpuInstr3_vpsignd_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5196        {  bs3CpuInstr3_vpsignd_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5197        {  bs3CpuInstr3_vpsignd_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5198        {  bs3CpuInstr3_vpsignd_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5199        {  bs3CpuInstr3_vpsignd_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     5200        {  bs3CpuInstr3_vpsignd_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
    50005201    };
    50015202    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     
    76937894#if defined(ALL_TESTS)
    76947895        { "[v]pabsb/[v]pabsw/[v]pabsd",                     bs3CpuInstr3_v_pabsb_pabsw_pabsd, 0 },
     7896        { "[v]psignb/[v]psignw/[v]psignd",                  bs3CpuInstr3_v_psignb_psignw_psignd, 0 },
    76957897#endif
    76967898    };
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