VirtualBox

Changeset 96055 in vbox


Ignore:
Timestamp:
Aug 5, 2022 11:02:04 AM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
152854
Message:

ValidationKit/bs3-cpu-instr-3: Add simple [v]ph{add,sub}sw 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

    r96050 r96055  
    20672067 %endif
    20682068
     2069;
     2070; [V]PHADDSW
     2071;
     2072EMIT_INSTR_PLUS_ICEBP   phaddsw, MM1, MM2
     2073EMIT_INSTR_PLUS_ICEBP   phaddsw, MM1, FSxBX
     2074EMIT_INSTR_PLUS_ICEBP   phaddsw, XMM1, XMM2
     2075EMIT_INSTR_PLUS_ICEBP   phaddsw, XMM1, FSxBX
     2076EMIT_INSTR_PLUS_ICEBP   vphaddsw, XMM1, XMM2, XMM3
     2077EMIT_INSTR_PLUS_ICEBP   vphaddsw, XMM1, XMM2, FSxBX
     2078EMIT_INSTR_PLUS_ICEBP   vphaddsw, YMM1, YMM2, YMM3
     2079EMIT_INSTR_PLUS_ICEBP   vphaddsw, YMM1, YMM2, FSxBX
     2080 %if TMPL_BITS == 64
     2081EMIT_INSTR_PLUS_ICEBP   phaddsw, XMM8, XMM9
     2082EMIT_INSTR_PLUS_ICEBP   phaddsw, XMM8, FSxBX
     2083EMIT_INSTR_PLUS_ICEBP   vphaddsw, XMM8, XMM9, XMM10
     2084EMIT_INSTR_PLUS_ICEBP   vphaddsw, XMM8, XMM9, FSxBX
     2085EMIT_INSTR_PLUS_ICEBP   vphaddsw, YMM8, YMM9, YMM10
     2086EMIT_INSTR_PLUS_ICEBP   vphaddsw, YMM8, YMM9, FSxBX
     2087 %endif
     2088
     2089;
     2090; [V]PHSUBSW
     2091;
     2092EMIT_INSTR_PLUS_ICEBP   phsubsw, MM1, MM2
     2093EMIT_INSTR_PLUS_ICEBP   phsubsw, MM1, FSxBX
     2094EMIT_INSTR_PLUS_ICEBP   phsubsw, XMM1, XMM2
     2095EMIT_INSTR_PLUS_ICEBP   phsubsw, XMM1, FSxBX
     2096EMIT_INSTR_PLUS_ICEBP   vphsubsw, XMM1, XMM2, XMM3
     2097EMIT_INSTR_PLUS_ICEBP   vphsubsw, XMM1, XMM2, FSxBX
     2098EMIT_INSTR_PLUS_ICEBP   vphsubsw, YMM1, YMM2, YMM3
     2099EMIT_INSTR_PLUS_ICEBP   vphsubsw, YMM1, YMM2, FSxBX
     2100 %if TMPL_BITS == 64
     2101EMIT_INSTR_PLUS_ICEBP   phsubsw, XMM8, XMM9
     2102EMIT_INSTR_PLUS_ICEBP   phsubsw, XMM8, FSxBX
     2103EMIT_INSTR_PLUS_ICEBP   vphsubsw, XMM8, XMM9, XMM10
     2104EMIT_INSTR_PLUS_ICEBP   vphsubsw, XMM8, XMM9, FSxBX
     2105EMIT_INSTR_PLUS_ICEBP   vphsubsw, YMM8, YMM9, YMM10
     2106EMIT_INSTR_PLUS_ICEBP   vphsubsw, YMM8, YMM9, FSxBX
     2107 %endif
     2108
    20692109
    20702110%endif ; BS3_INSTANTIATING_CMN
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32

    r96050 r96055  
    55755575        {  bs3CpuInstr3_vphsubd_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValues256D),  s_aValues256D },
    55765576        {  bs3CpuInstr3_vphsubd_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValues256D),  s_aValues256D },
     5577    };
     5578    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     5579    unsigned const                         iTest       = BS3CPUINSTR3_TEST_MODES_INDEX(bMode);
     5580    return bs3CpuInstr3_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     5581                                        g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4));
     5582}
     5583
     5584
     5585/*
     5586 * [V]PHADDSW  - Horizontally add and saturate word sized signed integers.
     5587 */
     5588BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_phaddsw_MM1_MM2_icebp);
     5589BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_phaddsw_MM1_FSxBX_icebp);
     5590BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_phaddsw_XMM1_XMM2_icebp);
     5591BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_phaddsw_XMM1_FSxBX_icebp);
     5592extern FNBS3FAR             bs3CpuInstr3_phaddsw_XMM8_XMM9_icebp_c64;
     5593extern FNBS3FAR             bs3CpuInstr3_phaddsw_XMM8_FSxBX_icebp_c64;
     5594BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vphaddsw_XMM1_XMM2_XMM3_icebp);
     5595BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vphaddsw_XMM1_XMM2_FSxBX_icebp);
     5596extern FNBS3FAR             bs3CpuInstr3_vphaddsw_XMM8_XMM9_XMM10_icebp_c64;
     5597extern FNBS3FAR             bs3CpuInstr3_vphaddsw_XMM8_XMM9_FSxBX_icebp_c64;
     5598BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vphaddsw_YMM1_YMM2_YMM3_icebp);
     5599BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vphaddsw_YMM1_YMM2_FSxBX_icebp);
     5600extern FNBS3FAR             bs3CpuInstr3_vphaddsw_YMM8_YMM9_YMM10_icebp_c64;
     5601extern FNBS3FAR             bs3CpuInstr3_vphaddsw_YMM8_YMM9_FSxBX_icebp_c64;
     5602
     5603BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_phaddsw(uint8_t bMode)
     5604{
     5605    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues64W[] =
     5606    {
     5607        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5608            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5609            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     5610        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     5611            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     5612            /* => */ RTUINT256_INIT_C(                 1,                  2,                  3, 0x85868d8e80008000) },
     5613        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     5614            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     5615            /* => */ RTUINT256_INIT_C(                 5,                  6,                  7, 0x800080001173bd81) },
     5616    };
     5617    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues128W[] =
     5618    {
     5619        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5620            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5621            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     5622        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     5623            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     5624            /* => */ RTUINT256_INIT_C(                 9,                 10, 0xa5a6adae85868d8e, 0x8000800080008000) },
     5625        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     5626            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     5627            /* => */ RTUINT256_INIT_C(                13,                 14, 0xe3c9f1ee80008000, 0x8000225c1173bd81) },
     5628    };
     5629    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues256W[] =
     5630    {
     5631        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5632            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5633            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     5634        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     5635            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     5636            /* => */ RTUINT256_INIT_C(0xe5e6edeec5c6cdce, 0x8000800080008000, 0xa5a6adae85868d8e, 0x8000800080008000) },
     5637        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     5638            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     5639            /* => */ RTUINT256_INIT_C(0x3d337fff56bc7fff, 0xfc893bf788487fff, 0xe3c9f1ee80008000, 0x8000225c1173bd81) },
     5640    };
     5641
     5642    static BS3CPUINSTR3_TEST1_T const s_aTests16[] =
     5643    {
     5644        {  bs3CpuInstr3_phaddsw_MM1_MM2_icebp_c16,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64W),   s_aValues64W  },
     5645        {  bs3CpuInstr3_phaddsw_MM1_FSxBX_icebp_c16,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64W),   s_aValues64W  },
     5646        {  bs3CpuInstr3_phaddsw_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5647        {  bs3CpuInstr3_phaddsw_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5648        {  bs3CpuInstr3_vphaddsw_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5649        {  bs3CpuInstr3_vphaddsw_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5650        {  bs3CpuInstr3_vphaddsw_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValues256W),  s_aValues256W },
     5651        {  bs3CpuInstr3_vphaddsw_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValues256W),  s_aValues256W },
     5652    };
     5653    static BS3CPUINSTR3_TEST1_T const s_aTests32[] =
     5654    {
     5655        {  bs3CpuInstr3_phaddsw_MM1_MM2_icebp_c32,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64W),   s_aValues64W },
     5656        {  bs3CpuInstr3_phaddsw_MM1_FSxBX_icebp_c32,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64W),   s_aValues64W },
     5657        {  bs3CpuInstr3_phaddsw_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5658        {  bs3CpuInstr3_phaddsw_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5659        {  bs3CpuInstr3_vphaddsw_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5660        {  bs3CpuInstr3_vphaddsw_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5661        {  bs3CpuInstr3_vphaddsw_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValues256W),  s_aValues256W },
     5662        {  bs3CpuInstr3_vphaddsw_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValues256W),  s_aValues256W },
     5663    };
     5664    static BS3CPUINSTR3_TEST1_T const s_aTests64[] =
     5665    {
     5666        {  bs3CpuInstr3_phaddsw_MM1_MM2_icebp_c64,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64W),   s_aValues64W },
     5667        {  bs3CpuInstr3_phaddsw_MM1_FSxBX_icebp_c64,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64W),   s_aValues64W },
     5668        {  bs3CpuInstr3_phaddsw_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5669        {  bs3CpuInstr3_phaddsw_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5670        {  bs3CpuInstr3_phaddsw_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSSE3,     8, 8,   9, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5671        {  bs3CpuInstr3_phaddsw_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     8, 8, 255, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5672        {  bs3CpuInstr3_vphaddsw_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5673        {  bs3CpuInstr3_vphaddsw_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5674        {  bs3CpuInstr3_vphaddsw_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5675        {  bs3CpuInstr3_vphaddsw_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5676        {  bs3CpuInstr3_vphaddsw_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValues256W),  s_aValues256W },
     5677        {  bs3CpuInstr3_vphaddsw_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValues256W),  s_aValues256W },
     5678        {  bs3CpuInstr3_vphaddsw_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValues256W),  s_aValues256W },
     5679        {  bs3CpuInstr3_vphaddsw_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValues256W),  s_aValues256W },
     5680    };
     5681    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     5682    unsigned const                         iTest       = BS3CPUINSTR3_TEST_MODES_INDEX(bMode);
     5683    return bs3CpuInstr3_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     5684                                        g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4));
     5685}
     5686
     5687
     5688/*
     5689 * [V]PHSUBSW  - Horizontally subtract and saturate word sized signed integers.
     5690 */
     5691BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_phsubsw_MM1_MM2_icebp);
     5692BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_phsubsw_MM1_FSxBX_icebp);
     5693BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_phsubsw_XMM1_XMM2_icebp);
     5694BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_phsubsw_XMM1_FSxBX_icebp);
     5695extern FNBS3FAR             bs3CpuInstr3_phsubsw_XMM8_XMM9_icebp_c64;
     5696extern FNBS3FAR             bs3CpuInstr3_phsubsw_XMM8_FSxBX_icebp_c64;
     5697BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vphsubsw_XMM1_XMM2_XMM3_icebp);
     5698BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vphsubsw_XMM1_XMM2_FSxBX_icebp);
     5699extern FNBS3FAR             bs3CpuInstr3_vphsubsw_XMM8_XMM9_XMM10_icebp_c64;
     5700extern FNBS3FAR             bs3CpuInstr3_vphsubsw_XMM8_XMM9_FSxBX_icebp_c64;
     5701BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vphsubsw_YMM1_YMM2_YMM3_icebp);
     5702BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vphsubsw_YMM1_YMM2_FSxBX_icebp);
     5703extern FNBS3FAR             bs3CpuInstr3_vphsubsw_YMM8_YMM9_YMM10_icebp_c64;
     5704extern FNBS3FAR             bs3CpuInstr3_vphsubsw_YMM8_YMM9_FSxBX_icebp_c64;
     5705
     5706BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_phsubsw(uint8_t bMode)
     5707{
     5708    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues64W[] =
     5709    {
     5710        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5711            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5712            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     5713        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     5714            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     5715            /* => */ RTUINT256_INIT_C(                 1,                  2,                  3, 0x0202020202020202) },
     5716        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     5717            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     5718            /* => */ RTUINT256_INIT_C(                 5,                  6,                  7, 0x441703b289cd8000) },
     5719    };
     5720    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues128W[] =
     5721    {
     5722        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5723            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5724            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     5725        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     5726            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     5727            /* => */ RTUINT256_INIT_C(                 9,                 10, 0x0202020202020202, 0x0202020202020202) },
     5728        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     5729            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     5730            /* => */ RTUINT256_INIT_C(                13,                 14, 0x7b878000441703b2, 0x615b7fff89cd8000) },
     5731    };
     5732    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues256W[] =
     5733    {
     5734        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5735            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     5736            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     5737        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     5738            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     5739            /* => */ RTUINT256_INIT_C(0x0202020202020202, 0x0202020202020202, 0x0202020202020202, 0x0202020202020202) },
     5740        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     5741            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     5742            /* => */ RTUINT256_INIT_C(0xa32106f9d8d4d97b, 0xbecf2931959015c1, 0x7b878000441703b2, 0x615b7fff89cd8000) },
     5743    };
     5744
     5745    static BS3CPUINSTR3_TEST1_T const s_aTests16[] =
     5746    {
     5747        {  bs3CpuInstr3_phsubsw_MM1_MM2_icebp_c16,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64W),   s_aValues64W  },
     5748        {  bs3CpuInstr3_phsubsw_MM1_FSxBX_icebp_c16,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64W),   s_aValues64W  },
     5749        {  bs3CpuInstr3_phsubsw_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5750        {  bs3CpuInstr3_phsubsw_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5751        {  bs3CpuInstr3_vphsubsw_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5752        {  bs3CpuInstr3_vphsubsw_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5753        {  bs3CpuInstr3_vphsubsw_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValues256W),  s_aValues256W },
     5754        {  bs3CpuInstr3_vphsubsw_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValues256W),  s_aValues256W },
     5755    };
     5756    static BS3CPUINSTR3_TEST1_T const s_aTests32[] =
     5757    {
     5758        {  bs3CpuInstr3_phsubsw_MM1_MM2_icebp_c32,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64W),   s_aValues64W },
     5759        {  bs3CpuInstr3_phsubsw_MM1_FSxBX_icebp_c32,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64W),   s_aValues64W },
     5760        {  bs3CpuInstr3_phsubsw_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5761        {  bs3CpuInstr3_phsubsw_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5762        {  bs3CpuInstr3_vphsubsw_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5763        {  bs3CpuInstr3_vphsubsw_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5764        {  bs3CpuInstr3_vphsubsw_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValues256W),  s_aValues256W },
     5765        {  bs3CpuInstr3_vphsubsw_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValues256W),  s_aValues256W },
     5766    };
     5767    static BS3CPUINSTR3_TEST1_T const s_aTests64[] =
     5768    {
     5769        {  bs3CpuInstr3_phsubsw_MM1_MM2_icebp_c64,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64W),   s_aValues64W },
     5770        {  bs3CpuInstr3_phsubsw_MM1_FSxBX_icebp_c64,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64W),   s_aValues64W },
     5771        {  bs3CpuInstr3_phsubsw_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5772        {  bs3CpuInstr3_phsubsw_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5773        {  bs3CpuInstr3_phsubsw_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSSE3,     8, 8,   9, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5774        {  bs3CpuInstr3_phsubsw_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     8, 8, 255, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5775        {  bs3CpuInstr3_vphsubsw_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5776        {  bs3CpuInstr3_vphsubsw_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5777        {  bs3CpuInstr3_vphsubsw_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5778        {  bs3CpuInstr3_vphsubsw_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValues128W),  s_aValues128W },
     5779        {  bs3CpuInstr3_vphsubsw_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValues256W),  s_aValues256W },
     5780        {  bs3CpuInstr3_vphsubsw_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValues256W),  s_aValues256W },
     5781        {  bs3CpuInstr3_vphsubsw_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValues256W),  s_aValues256W },
     5782        {  bs3CpuInstr3_vphsubsw_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValues256W),  s_aValues256W },
    55775783    };
    55785784    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     
    82758481        { "[v]phaddw/[v]phaddd",                            bs3CpuInstr3_v_phaddw_phaddd, 0 },
    82768482        { "[v]phsubw/[v]phsubd",                            bs3CpuInstr3_v_phsubw_phsubd, 0 },
     8483        { "[v]phaddsw",                                     bs3CpuInstr3_v_phaddsw, 0 },
     8484        { "[v]phsubsw",                                     bs3CpuInstr3_v_phsubsw, 0 },
    82778485#endif
    82788486    };
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