VirtualBox

Changeset 96050 in vbox


Ignore:
Timestamp:
Aug 5, 2022 10:17:46 AM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
152849
Message:

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

    r96047 r96050  
    20272027
    20282028
     2029;
     2030; [V]PHSUBW
     2031;
     2032EMIT_INSTR_PLUS_ICEBP   phsubw, MM1, MM2
     2033EMIT_INSTR_PLUS_ICEBP   phsubw, MM1, FSxBX
     2034EMIT_INSTR_PLUS_ICEBP   phsubw, XMM1, XMM2
     2035EMIT_INSTR_PLUS_ICEBP   phsubw, XMM1, FSxBX
     2036EMIT_INSTR_PLUS_ICEBP   vphsubw, XMM1, XMM2, XMM3
     2037EMIT_INSTR_PLUS_ICEBP   vphsubw, XMM1, XMM2, FSxBX
     2038EMIT_INSTR_PLUS_ICEBP   vphsubw, YMM1, YMM2, YMM3
     2039EMIT_INSTR_PLUS_ICEBP   vphsubw, YMM1, YMM2, FSxBX
     2040 %if TMPL_BITS == 64
     2041EMIT_INSTR_PLUS_ICEBP   phsubw, XMM8, XMM9
     2042EMIT_INSTR_PLUS_ICEBP   phsubw, XMM8, FSxBX
     2043EMIT_INSTR_PLUS_ICEBP   vphsubw, XMM8, XMM9, XMM10
     2044EMIT_INSTR_PLUS_ICEBP   vphsubw, XMM8, XMM9, FSxBX
     2045EMIT_INSTR_PLUS_ICEBP   vphsubw, YMM8, YMM9, YMM10
     2046EMIT_INSTR_PLUS_ICEBP   vphsubw, YMM8, YMM9, FSxBX
     2047 %endif
     2048
     2049;
     2050; [V]PHSUBD
     2051;
     2052EMIT_INSTR_PLUS_ICEBP   phsubd, MM1, MM2
     2053EMIT_INSTR_PLUS_ICEBP   phsubd, MM1, FSxBX
     2054EMIT_INSTR_PLUS_ICEBP   phsubd, XMM1, XMM2
     2055EMIT_INSTR_PLUS_ICEBP   phsubd, XMM1, FSxBX
     2056EMIT_INSTR_PLUS_ICEBP   vphsubd, XMM1, XMM2, XMM3
     2057EMIT_INSTR_PLUS_ICEBP   vphsubd, XMM1, XMM2, FSxBX
     2058EMIT_INSTR_PLUS_ICEBP   vphsubd, YMM1, YMM2, YMM3
     2059EMIT_INSTR_PLUS_ICEBP   vphsubd, YMM1, YMM2, FSxBX
     2060 %if TMPL_BITS == 64
     2061EMIT_INSTR_PLUS_ICEBP   phsubd, XMM8, XMM9
     2062EMIT_INSTR_PLUS_ICEBP   phsubd, XMM8, FSxBX
     2063EMIT_INSTR_PLUS_ICEBP   vphsubd, XMM8, XMM9, XMM10
     2064EMIT_INSTR_PLUS_ICEBP   vphsubd, XMM8, XMM9, FSxBX
     2065EMIT_INSTR_PLUS_ICEBP   vphsubd, YMM8, YMM9, YMM10
     2066EMIT_INSTR_PLUS_ICEBP   vphsubd, YMM8, YMM9, FSxBX
     2067 %endif
     2068
     2069
    20292070%endif ; BS3_INSTANTIATING_CMN
    20302071
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32

    r96047 r96050  
    53875387        {  bs3CpuInstr3_vphaddd_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValues256D),  s_aValues256D },
    53885388        {  bs3CpuInstr3_vphaddd_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValues256D),  s_aValues256D },
     5389    };
     5390    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     5391    unsigned const                         iTest       = BS3CPUINSTR3_TEST_MODES_INDEX(bMode);
     5392    return bs3CpuInstr3_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     5393                                        g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4));
     5394}
     5395
     5396
     5397/*
     5398 * [V]PHSUBW  - Horizontally subtract word sized signed integers.
     5399 * [V]PHSUBD  - Horizontally subtract doubleword sized signed integers.
     5400 */
     5401BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_phsubw_MM1_MM2_icebp);
     5402BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_phsubw_MM1_FSxBX_icebp);
     5403BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_phsubw_XMM1_XMM2_icebp);
     5404BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_phsubw_XMM1_FSxBX_icebp);
     5405extern FNBS3FAR             bs3CpuInstr3_phsubw_XMM8_XMM9_icebp_c64;
     5406extern FNBS3FAR             bs3CpuInstr3_phsubw_XMM8_FSxBX_icebp_c64;
     5407BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vphsubw_XMM1_XMM2_XMM3_icebp);
     5408BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vphsubw_XMM1_XMM2_FSxBX_icebp);
     5409extern FNBS3FAR             bs3CpuInstr3_vphsubw_XMM8_XMM9_XMM10_icebp_c64;
     5410extern FNBS3FAR             bs3CpuInstr3_vphsubw_XMM8_XMM9_FSxBX_icebp_c64;
     5411BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vphsubw_YMM1_YMM2_YMM3_icebp);
     5412BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vphsubw_YMM1_YMM2_FSxBX_icebp);
     5413extern FNBS3FAR             bs3CpuInstr3_vphsubw_YMM8_YMM9_YMM10_icebp_c64;
     5414extern FNBS3FAR             bs3CpuInstr3_vphsubw_YMM8_YMM9_FSxBX_icebp_c64;
     5415
     5416BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_phsubd_MM1_MM2_icebp);
     5417BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_phsubd_MM1_FSxBX_icebp);
     5418BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_phsubd_XMM1_XMM2_icebp);
     5419BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_phsubd_XMM1_FSxBX_icebp);
     5420extern FNBS3FAR             bs3CpuInstr3_phsubd_XMM8_XMM9_icebp_c64;
     5421extern FNBS3FAR             bs3CpuInstr3_phsubd_XMM8_FSxBX_icebp_c64;
     5422BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vphsubd_XMM1_XMM2_XMM3_icebp);
     5423BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vphsubd_XMM1_XMM2_FSxBX_icebp);
     5424extern FNBS3FAR             bs3CpuInstr3_vphsubd_XMM8_XMM9_XMM10_icebp_c64;
     5425extern FNBS3FAR             bs3CpuInstr3_vphsubd_XMM8_XMM9_FSxBX_icebp_c64;
     5426BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vphsubd_YMM1_YMM2_YMM3_icebp);
     5427BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vphsubd_YMM1_YMM2_FSxBX_icebp);
     5428extern FNBS3FAR             bs3CpuInstr3_vphsubd_YMM8_YMM9_YMM10_icebp_c64;
     5429extern FNBS3FAR             bs3CpuInstr3_vphsubd_YMM8_YMM9_FSxBX_icebp_c64;
     5430
     5431BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_phsubw_phsubd(uint8_t bMode)
     5432{
     5433    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues64W[] =
     5434    {
     5435        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5436            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5437            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     5438        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     5439            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     5440            /* => */ RTUINT256_INIT_C(                 1,                  2,                  3, 0x0202020202020202) },
     5441        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     5442            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     5443            /* => */ RTUINT256_INIT_C(                 5,                  6,                  7, 0x441703b289cd7679) },
     5444    };
     5445    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues128W[] =
     5446    {
     5447        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5448            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5449            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     5450        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     5451            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     5452            /* => */ RTUINT256_INIT_C(                 9,                 10, 0x0202020202020202, 0x0202020202020202) },
     5453        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     5454            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     5455            /* => */ RTUINT256_INIT_C(                13,                 14, 0x7b874556441703b2, 0x615ba32a89cd7679) },
     5456    };
     5457    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues256W[] =
     5458    {
     5459        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5460            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5461            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     5462        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     5463            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     5464            /* => */ RTUINT256_INIT_C(0x0202020202020202, 0x0202020202020202, 0x0202020202020202, 0x0202020202020202) },
     5465        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     5466            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     5467            /* => */ RTUINT256_INIT_C(0xa32106f9d8d4d97b, 0xbecf2931959015c1, 0x7b874556441703b2, 0x615ba32a89cd7679) },
     5468    };
     5469    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues64D[] =
     5470    {
     5471        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5472            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5473            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     5474        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     5475            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     5476            /* => */ RTUINT256_INIT_C(                 1,                  2,                  3, 0x0404040404040404) },
     5477        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     5478            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     5479            /* => */ RTUINT256_INIT_C(                 5,                  6,                  7, 0xf6acb648dfb0cc5d) },
     5480    };
     5481    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues128D[] =
     5482    {
     5483        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5484            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5485            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     5486        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     5487            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     5488            /* => */ RTUINT256_INIT_C(                 9,                 10, 0x0404040404040404, 0x0404040404040404) },
     5489        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     5490            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     5491            /* => */ RTUINT256_INIT_C(                13,                 14, 0xa22b6bfaf6acb648, 0x37987968dfb0cc5d) },
     5492    };
     5493    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues256D[] =
     5494    {
     5495        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5496            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5497            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     5498        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     5499            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     5500            /* => */ RTUINT256_INIT_C(0x0404040404040404, 0x0404040404040404, 0x0404040404040404, 0x0404040404040404) },
     5501        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     5502            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     5503            /* => */ RTUINT256_INIT_C(0x1fd283ab2777281e, 0xea8554e84715c747, 0xa22b6bfaf6acb648, 0x37987968dfb0cc5d) },
     5504    };
     5505
     5506    static BS3CPUINSTR3_TEST1_T const s_aTests16[] =
     5507    {
     5508        {  bs3CpuInstr3_phsubw_MM1_MM2_icebp_c16,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64W),   s_aValues64W  },
     5509        {  bs3CpuInstr3_phsubw_MM1_FSxBX_icebp_c16,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64W),   s_aValues64W  },
     5510        {  bs3CpuInstr3_phsubw_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5511        {  bs3CpuInstr3_phsubw_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5512        {  bs3CpuInstr3_vphsubw_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5513        {  bs3CpuInstr3_vphsubw_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5514        {  bs3CpuInstr3_vphsubw_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValues256W),  s_aValues256W },
     5515        {  bs3CpuInstr3_vphsubw_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValues256W),  s_aValues256W },
     5516
     5517        {  bs3CpuInstr3_phsubd_MM1_MM2_icebp_c16,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64D),   s_aValues64D },
     5518        {  bs3CpuInstr3_phsubd_MM1_FSxBX_icebp_c16,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64D),   s_aValues64D },
     5519        {  bs3CpuInstr3_phsubd_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValues128D),  s_aValues128D },
     5520        {  bs3CpuInstr3_phsubd_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValues128D),  s_aValues128D },
     5521        {  bs3CpuInstr3_vphsubd_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValues128D),  s_aValues128D },
     5522        {  bs3CpuInstr3_vphsubd_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValues128D),  s_aValues128D },
     5523        {  bs3CpuInstr3_vphsubd_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValues256D),  s_aValues256D },
     5524        {  bs3CpuInstr3_vphsubd_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValues256D),  s_aValues256D },
     5525    };
     5526    static BS3CPUINSTR3_TEST1_T const s_aTests32[] =
     5527    {
     5528        {  bs3CpuInstr3_phsubw_MM1_MM2_icebp_c32,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64W),   s_aValues64W },
     5529        {  bs3CpuInstr3_phsubw_MM1_FSxBX_icebp_c32,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64W),   s_aValues64W },
     5530        {  bs3CpuInstr3_phsubw_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5531        {  bs3CpuInstr3_phsubw_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5532        {  bs3CpuInstr3_vphsubw_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5533        {  bs3CpuInstr3_vphsubw_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5534        {  bs3CpuInstr3_vphsubw_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValues256W),  s_aValues256W },
     5535        {  bs3CpuInstr3_vphsubw_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValues256W),  s_aValues256W },
     5536
     5537        {  bs3CpuInstr3_phsubd_MM1_MM2_icebp_c32,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64D),   s_aValues64D },
     5538        {  bs3CpuInstr3_phsubd_MM1_FSxBX_icebp_c32,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64D),   s_aValues64D },
     5539        {  bs3CpuInstr3_phsubd_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValues128D),  s_aValues128D },
     5540        {  bs3CpuInstr3_phsubd_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValues128D),  s_aValues128D },
     5541        {  bs3CpuInstr3_vphsubd_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValues128D),  s_aValues128D },
     5542        {  bs3CpuInstr3_vphsubd_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValues128D),  s_aValues128D },
     5543        {  bs3CpuInstr3_vphsubd_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValues256D),  s_aValues256D },
     5544        {  bs3CpuInstr3_vphsubd_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValues256D),  s_aValues256D },
     5545    };
     5546    static BS3CPUINSTR3_TEST1_T const s_aTests64[] =
     5547    {
     5548        {  bs3CpuInstr3_phsubw_MM1_MM2_icebp_c64,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64W),   s_aValues64W },
     5549        {  bs3CpuInstr3_phsubw_MM1_FSxBX_icebp_c64,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64W),   s_aValues64W },
     5550        {  bs3CpuInstr3_phsubw_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5551        {  bs3CpuInstr3_phsubw_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5552        {  bs3CpuInstr3_phsubw_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSSE3,     8, 8,   9, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5553        {  bs3CpuInstr3_phsubw_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     8, 8, 255, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5554        {  bs3CpuInstr3_vphsubw_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5555        {  bs3CpuInstr3_vphsubw_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5556        {  bs3CpuInstr3_vphsubw_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5557        {  bs3CpuInstr3_vphsubw_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5558        {  bs3CpuInstr3_vphsubw_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValues256W),  s_aValues256W },
     5559        {  bs3CpuInstr3_vphsubw_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValues256W),  s_aValues256W },
     5560        {  bs3CpuInstr3_vphsubw_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValues256W),  s_aValues256W },
     5561        {  bs3CpuInstr3_vphsubw_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValues256W),  s_aValues256W },
     5562
     5563        {  bs3CpuInstr3_phsubd_MM1_MM2_icebp_c64,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64D),   s_aValues64D },
     5564        {  bs3CpuInstr3_phsubd_MM1_FSxBX_icebp_c64,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64D),   s_aValues64D },
     5565        {  bs3CpuInstr3_phsubd_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValues128D),  s_aValues128D },
     5566        {  bs3CpuInstr3_phsubd_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValues128D),  s_aValues128D },
     5567        {  bs3CpuInstr3_phsubd_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSSE3,     8, 8,   9, RT_ELEMENTS(s_aValues128D),  s_aValues128D },
     5568        {  bs3CpuInstr3_phsubd_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     8, 8, 255, RT_ELEMENTS(s_aValues128D),  s_aValues128D },
     5569        {  bs3CpuInstr3_vphsubd_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValues128D),  s_aValues128D },
     5570        {  bs3CpuInstr3_vphsubd_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValues128D),  s_aValues128D },
     5571        {  bs3CpuInstr3_vphsubd_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValues128D),  s_aValues128D },
     5572        {  bs3CpuInstr3_vphsubd_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValues128D),  s_aValues128D },
     5573        {  bs3CpuInstr3_vphsubd_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValues256D),  s_aValues256D },
     5574        {  bs3CpuInstr3_vphsubd_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValues256D),  s_aValues256D },
     5575        {  bs3CpuInstr3_vphsubd_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValues256D),  s_aValues256D },
     5576        {  bs3CpuInstr3_vphsubd_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValues256D),  s_aValues256D },
    53895577    };
    53905578    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     
    80868274#if defined(ALL_TESTS)
    80878275        { "[v]phaddw/[v]phaddd",                            bs3CpuInstr3_v_phaddw_phaddd, 0 },
     8276        { "[v]phsubw/[v]phsubd",                            bs3CpuInstr3_v_phsubw_phsubd, 0 },
    80888277#endif
    80898278    };
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