VirtualBox

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


Ignore:
Timestamp:
Jul 17, 2023 11:30:22 AM (20 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
158428
Message:

ValidationKit/bootsectors: Implement testcases for [v]psubusb/[v]psubusw instruction emulations, 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

    r100596 r100598  
    32213221 %endif
    32223222
     3223;
     3224; [V]PSUBUSB
     3225;
     3226EMIT_INSTR_PLUS_ICEBP   psubusb,  MM1, MM2
     3227EMIT_INSTR_PLUS_ICEBP   psubusb,  MM1, FSxBX
     3228EMIT_INSTR_PLUS_ICEBP   psubusb,  XMM1, XMM2
     3229EMIT_INSTR_PLUS_ICEBP   psubusb,  XMM1, FSxBX
     3230EMIT_INSTR_PLUS_ICEBP   vpsubusb, XMM1, XMM2, XMM3
     3231EMIT_INSTR_PLUS_ICEBP   vpsubusb, XMM1, XMM2, FSxBX
     3232EMIT_INSTR_PLUS_ICEBP   vpsubusb, YMM1, YMM2, YMM3
     3233EMIT_INSTR_PLUS_ICEBP   vpsubusb, YMM1, YMM2, FSxBX
     3234 %if TMPL_BITS == 64
     3235EMIT_INSTR_PLUS_ICEBP   psubusb,  XMM8, XMM9
     3236EMIT_INSTR_PLUS_ICEBP   psubusb,  XMM8, FSxBX
     3237EMIT_INSTR_PLUS_ICEBP   vpsubusb, XMM8, XMM9, XMM10
     3238EMIT_INSTR_PLUS_ICEBP   vpsubusb, XMM8, XMM9, FSxBX
     3239EMIT_INSTR_PLUS_ICEBP   vpsubusb, YMM8, YMM9, YMM10
     3240EMIT_INSTR_PLUS_ICEBP   vpsubusb, YMM8, YMM9, FSxBX
     3241 %endif
     3242
     3243;
     3244; [V]PSUBUSW
     3245;
     3246EMIT_INSTR_PLUS_ICEBP   psubusw,  MM1, MM2
     3247EMIT_INSTR_PLUS_ICEBP   psubusw,  MM1, FSxBX
     3248EMIT_INSTR_PLUS_ICEBP   psubusw,  XMM1, XMM2
     3249EMIT_INSTR_PLUS_ICEBP   psubusw,  XMM1, FSxBX
     3250EMIT_INSTR_PLUS_ICEBP   vpsubusw, XMM1, XMM2, XMM3
     3251EMIT_INSTR_PLUS_ICEBP   vpsubusw, XMM1, XMM2, FSxBX
     3252EMIT_INSTR_PLUS_ICEBP   vpsubusw, YMM1, YMM2, YMM3
     3253EMIT_INSTR_PLUS_ICEBP   vpsubusw, YMM1, YMM2, FSxBX
     3254 %if TMPL_BITS == 64
     3255EMIT_INSTR_PLUS_ICEBP   psubusw,  XMM8, XMM9
     3256EMIT_INSTR_PLUS_ICEBP   psubusw,  XMM8, FSxBX
     3257EMIT_INSTR_PLUS_ICEBP   vpsubusw, XMM8, XMM9, XMM10
     3258EMIT_INSTR_PLUS_ICEBP   vpsubusw, XMM8, XMM9, FSxBX
     3259EMIT_INSTR_PLUS_ICEBP   vpsubusw, YMM8, YMM9, YMM10
     3260EMIT_INSTR_PLUS_ICEBP   vpsubusw, YMM8, YMM9, FSxBX
     3261 %endif
     3262
    32233263%endif ; BS3_INSTANTIATING_CMN
    32243264
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32

    r100596 r100598  
    80648064        {  bs3CpuInstr3_vpsubsw_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValues16), s_aValues16 },
    80658065        {  bs3CpuInstr3_vpsubsw_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8066    };
     8067    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     8068    unsigned const                         iTest       = BS3CPUINSTR3_TEST_MODES_INDEX(bMode);
     8069    return bs3CpuInstr3_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     8070                                        g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4));
     8071}
     8072
     8073
     8074/*
     8075 * [V]PSUBUSB/[V]PSUBUSW  - Subtract paced unsigned integers with unsigned saturation.
     8076 */
     8077BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_psubusb_MM1_MM2_icebp);
     8078BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_psubusb_MM1_FSxBX_icebp);
     8079BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_psubusb_XMM1_XMM2_icebp);
     8080BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_psubusb_XMM1_FSxBX_icebp);
     8081extern FNBS3FAR             bs3CpuInstr3_psubusb_XMM8_XMM9_icebp_c64;
     8082extern FNBS3FAR             bs3CpuInstr3_psubusb_XMM8_FSxBX_icebp_c64;
     8083BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpsubusb_XMM1_XMM2_XMM3_icebp);
     8084BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpsubusb_XMM1_XMM2_FSxBX_icebp);
     8085extern FNBS3FAR             bs3CpuInstr3_vpsubusb_XMM8_XMM9_XMM10_icebp_c64;
     8086extern FNBS3FAR             bs3CpuInstr3_vpsubusb_XMM8_XMM9_FSxBX_icebp_c64;
     8087BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpsubusb_YMM1_YMM2_YMM3_icebp);
     8088BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpsubusb_YMM1_YMM2_FSxBX_icebp);
     8089extern FNBS3FAR             bs3CpuInstr3_vpsubusb_YMM8_YMM9_YMM10_icebp_c64;
     8090extern FNBS3FAR             bs3CpuInstr3_vpsubusb_YMM8_YMM9_FSxBX_icebp_c64;
     8091
     8092BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_psubusw_MM1_MM2_icebp);
     8093BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_psubusw_MM1_FSxBX_icebp);
     8094BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_psubusw_XMM1_XMM2_icebp);
     8095BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_psubusw_XMM1_FSxBX_icebp);
     8096extern FNBS3FAR             bs3CpuInstr3_psubusw_XMM8_XMM9_icebp_c64;
     8097extern FNBS3FAR             bs3CpuInstr3_psubusw_XMM8_FSxBX_icebp_c64;
     8098BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpsubusw_XMM1_XMM2_XMM3_icebp);
     8099BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpsubusw_XMM1_XMM2_FSxBX_icebp);
     8100extern FNBS3FAR             bs3CpuInstr3_vpsubusw_XMM8_XMM9_XMM10_icebp_c64;
     8101extern FNBS3FAR             bs3CpuInstr3_vpsubusw_XMM8_XMM9_FSxBX_icebp_c64;
     8102BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpsubusw_YMM1_YMM2_YMM3_icebp);
     8103BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpsubusw_YMM1_YMM2_FSxBX_icebp);
     8104extern FNBS3FAR             bs3CpuInstr3_vpsubusw_YMM8_YMM9_YMM10_icebp_c64;
     8105extern FNBS3FAR             bs3CpuInstr3_vpsubusw_YMM8_YMM9_FSxBX_icebp_c64;
     8106
     8107BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_psubusb_psubusw(uint8_t bMode)
     8108{
     8109    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues8[] =
     8110    {
     8111        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     8112            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     8113            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     8114        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     8115            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     8116            /* => */ RTUINT256_INIT_C(0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000) },
     8117        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     8118            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     8119            /* => */ RTUINT256_INIT_C(0x00d4008200000000, 0xbb00772400071700, 0x0000ba00694d0021, 0x0077002d007b0342) },
     8120    };
     8121
     8122    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues16[] =
     8123    {
     8124        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     8125            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     8126            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     8127        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     8128            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     8129            /* => */ RTUINT256_INIT_C(0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000) },
     8130        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     8131            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     8132            /* => */ RTUINT256_INIT_C(0x0000000000000000, 0xba6877240000164d, 0x0000b9b3694d0000, 0x0000000000000342) },
     8133    };
     8134
     8135    static BS3CPUINSTR3_TEST1_T const s_aTests16[] =
     8136    {
     8137        {  bs3CpuInstr3_psubusb_MM1_MM2_icebp_c16,          255,         RM_REG, T_MMX,       1, 1,   2, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8138        {  bs3CpuInstr3_psubusb_MM1_FSxBX_icebp_c16,        255,         RM_MEM, T_MMX,       1, 1, 255, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8139        {  bs3CpuInstr3_psubusb_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSE2,      1, 1,   2, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8140        {  bs3CpuInstr3_psubusb_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSE2,      1, 1, 255, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8141        {  bs3CpuInstr3_vpsubusb_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8142        {  bs3CpuInstr3_vpsubusb_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8143        {  bs3CpuInstr3_vpsubusb_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8144        {  bs3CpuInstr3_vpsubusb_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8145
     8146        {  bs3CpuInstr3_psubusw_MM1_MM2_icebp_c16,          255,         RM_REG, T_MMX,       1, 1,   2, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8147        {  bs3CpuInstr3_psubusw_MM1_FSxBX_icebp_c16,        255,         RM_MEM, T_MMX,       1, 1, 255, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8148        {  bs3CpuInstr3_psubusw_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSE2,      1, 1,   2, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8149        {  bs3CpuInstr3_psubusw_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSE2,      1, 1, 255, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8150        {  bs3CpuInstr3_vpsubusw_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8151        {  bs3CpuInstr3_vpsubusw_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8152        {  bs3CpuInstr3_vpsubusw_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8153        {  bs3CpuInstr3_vpsubusw_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8154    };
     8155    static BS3CPUINSTR3_TEST1_T const s_aTests32[] =
     8156    {
     8157        {  bs3CpuInstr3_psubusb_MM1_MM2_icebp_c32,          255,         RM_REG, T_MMX,       1, 1,   2, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8158        {  bs3CpuInstr3_psubusb_MM1_FSxBX_icebp_c32,        255,         RM_MEM, T_MMX,       1, 1, 255, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8159        {  bs3CpuInstr3_psubusb_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSE2,      1, 1,   2, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8160        {  bs3CpuInstr3_psubusb_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSE2,      1, 1, 255, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8161        {  bs3CpuInstr3_vpsubusb_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8162        {  bs3CpuInstr3_vpsubusb_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8163        {  bs3CpuInstr3_vpsubusb_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8164        {  bs3CpuInstr3_vpsubusb_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8165
     8166        {  bs3CpuInstr3_psubusw_MM1_MM2_icebp_c32,          255,         RM_REG, T_MMX,       1, 1,   2, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8167        {  bs3CpuInstr3_psubusw_MM1_FSxBX_icebp_c32,        255,         RM_MEM, T_MMX,       1, 1, 255, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8168        {  bs3CpuInstr3_psubusw_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSE2,      1, 1,   2, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8169        {  bs3CpuInstr3_psubusw_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSE2,      1, 1, 255, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8170        {  bs3CpuInstr3_vpsubusw_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8171        {  bs3CpuInstr3_vpsubusw_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8172        {  bs3CpuInstr3_vpsubusw_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8173        {  bs3CpuInstr3_vpsubusw_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8174    };
     8175    static BS3CPUINSTR3_TEST1_T const s_aTests64[] =
     8176    {
     8177        {  bs3CpuInstr3_psubusb_MM1_MM2_icebp_c64,          255,         RM_REG, T_MMX,       1, 1,   2, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8178        {  bs3CpuInstr3_psubusb_MM1_FSxBX_icebp_c64,        255,         RM_MEM, T_MMX,       1, 1, 255, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8179        {  bs3CpuInstr3_psubusb_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSE2,      1, 1,   2, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8180        {  bs3CpuInstr3_psubusb_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE2,      1, 1, 255, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8181        {  bs3CpuInstr3_psubusb_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSE2,      8, 8,   9, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8182        {  bs3CpuInstr3_psubusb_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE2,      8, 8, 255, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8183        {  bs3CpuInstr3_vpsubusb_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8184        {  bs3CpuInstr3_vpsubusb_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8185        {  bs3CpuInstr3_vpsubusb_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8186        {  bs3CpuInstr3_vpsubusb_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8187        {  bs3CpuInstr3_vpsubusb_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8188        {  bs3CpuInstr3_vpsubusb_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8189        {  bs3CpuInstr3_vpsubusb_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8190        {  bs3CpuInstr3_vpsubusb_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValues8),  s_aValues8  },
     8191
     8192        {  bs3CpuInstr3_psubusw_MM1_MM2_icebp_c64,          255,         RM_REG, T_MMX,       1, 1,   2, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8193        {  bs3CpuInstr3_psubusw_MM1_FSxBX_icebp_c64,        255,         RM_MEM, T_MMX,       1, 1, 255, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8194        {  bs3CpuInstr3_psubusw_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSE2,      1, 1,   2, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8195        {  bs3CpuInstr3_psubusw_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE2,      1, 1, 255, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8196        {  bs3CpuInstr3_psubusw_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSE2,      8, 8,   9, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8197        {  bs3CpuInstr3_psubusw_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE2,      8, 8, 255, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8198        {  bs3CpuInstr3_vpsubusw_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8199        {  bs3CpuInstr3_vpsubusw_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8200        {  bs3CpuInstr3_vpsubusw_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8201        {  bs3CpuInstr3_vpsubusw_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8202        {  bs3CpuInstr3_vpsubusw_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8203        {  bs3CpuInstr3_vpsubusw_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8204        {  bs3CpuInstr3_vpsubusw_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValues16), s_aValues16 },
     8205        {  bs3CpuInstr3_vpsubusw_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValues16), s_aValues16 },
    80668206    };
    80678207    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     
    1307513215#if defined (ALL_TESTS)
    1307613216        { "[v]psubsb/[v]psubsw",                            bs3CpuInstr3_v_psubsb_psubsw, 0 },
     13217        { "[v]psubusb/[v]psubusw",                          bs3CpuInstr3_v_psubusb_psubusw, 0 },
    1307713218#endif
    1307813219    };
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