VirtualBox

Changeset 96003 in vbox


Ignore:
Timestamp:
Aug 3, 2022 5:21:16 PM (2 years ago)
Author:
vboxsync
Message:

ValidationKit/bs3-cpu-instr-3: Test all [v]pmaxu{b,w,d} variants, 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

    r95990 r96003  
    974974EMIT_INSTR_PLUS_ICEBP   vpmaxub, YMM8, YMM9, YMM10
    975975EMIT_INSTR_PLUS_ICEBP   vpmaxub, YMM8, YMM9, FSxBX
     976 %endif
     977
     978;
     979; [V]PMAXUW
     980;
     981EMIT_INSTR_PLUS_ICEBP   pmaxuw, XMM1, XMM2
     982EMIT_INSTR_PLUS_ICEBP   pmaxuw, XMM1, FSxBX
     983 %if TMPL_BITS == 64
     984EMIT_INSTR_PLUS_ICEBP   pmaxuw, XMM8, XMM9
     985EMIT_INSTR_PLUS_ICEBP   pmaxuw, XMM8, FSxBX
     986 %endif
     987
     988EMIT_INSTR_PLUS_ICEBP   vpmaxuw, XMM1, XMM2, XMM3
     989EMIT_INSTR_PLUS_ICEBP   vpmaxuw, XMM1, XMM2, FSxBX
     990 %if TMPL_BITS == 64
     991EMIT_INSTR_PLUS_ICEBP   vpmaxuw, XMM8, XMM9, XMM10
     992EMIT_INSTR_PLUS_ICEBP   vpmaxuw, XMM8, XMM9, FSxBX
     993 %endif
     994
     995EMIT_INSTR_PLUS_ICEBP   vpmaxuw, YMM1, YMM2, YMM3
     996EMIT_INSTR_PLUS_ICEBP   vpmaxuw, YMM1, YMM2, FSxBX
     997 %if TMPL_BITS == 64
     998EMIT_INSTR_PLUS_ICEBP   vpmaxuw, YMM8, YMM9, YMM10
     999EMIT_INSTR_PLUS_ICEBP   vpmaxuw, YMM8, YMM9, FSxBX
     1000 %endif
     1001
     1002;
     1003; [V]PMAXUD
     1004;
     1005EMIT_INSTR_PLUS_ICEBP   pmaxud, XMM1, XMM2
     1006EMIT_INSTR_PLUS_ICEBP   pmaxud, XMM1, FSxBX
     1007 %if TMPL_BITS == 64
     1008EMIT_INSTR_PLUS_ICEBP   pmaxud, XMM8, XMM9
     1009EMIT_INSTR_PLUS_ICEBP   pmaxud, XMM8, FSxBX
     1010 %endif
     1011
     1012EMIT_INSTR_PLUS_ICEBP   vpmaxud, XMM1, XMM2, XMM3
     1013EMIT_INSTR_PLUS_ICEBP   vpmaxud, XMM1, XMM2, FSxBX
     1014 %if TMPL_BITS == 64
     1015EMIT_INSTR_PLUS_ICEBP   vpmaxud, XMM8, XMM9, XMM10
     1016EMIT_INSTR_PLUS_ICEBP   vpmaxud, XMM8, XMM9, FSxBX
     1017 %endif
     1018
     1019EMIT_INSTR_PLUS_ICEBP   vpmaxud, YMM1, YMM2, YMM3
     1020EMIT_INSTR_PLUS_ICEBP   vpmaxud, YMM1, YMM2, FSxBX
     1021 %if TMPL_BITS == 64
     1022EMIT_INSTR_PLUS_ICEBP   vpmaxud, YMM8, YMM9, YMM10
     1023EMIT_INSTR_PLUS_ICEBP   vpmaxud, YMM8, YMM9, FSxBX
    9761024 %endif
    9771025
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32

    r95990 r96003  
    33563356/*
    33573357 * [V]PMAXUB  - Compare unsigned byte integers and returns maximum values.
     3358 * [V]PMAXUW  - Compare unsigned word integers and returns maximum values.
     3359 * [V]PMAXUD  - Compare unsigned double word integers and returns maximum values.
    33583360 */
    33593361BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pmaxub_MM1_MM2_icebp);
     
    33723374extern FNBS3FAR             bs3CpuInstr3_vpmaxub_YMM8_YMM9_FSxBX_icebp_c64;
    33733375
    3374 BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_pmaxub(uint8_t bMode)
    3375 {
    3376     static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues64[] =
     3376BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pmaxuw_XMM1_XMM2_icebp);
     3377BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pmaxuw_XMM1_FSxBX_icebp);
     3378extern FNBS3FAR             bs3CpuInstr3_pmaxuw_XMM8_XMM9_icebp_c64;
     3379extern FNBS3FAR             bs3CpuInstr3_pmaxuw_XMM8_FSxBX_icebp_c64;
     3380BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpmaxuw_XMM1_XMM2_XMM3_icebp);
     3381BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpmaxuw_XMM1_XMM2_FSxBX_icebp);
     3382extern FNBS3FAR             bs3CpuInstr3_vpmaxuw_XMM8_XMM9_XMM10_icebp_c64;
     3383extern FNBS3FAR             bs3CpuInstr3_vpmaxuw_XMM8_XMM9_FSxBX_icebp_c64;
     3384BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpmaxuw_YMM1_YMM2_YMM3_icebp);
     3385BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpmaxuw_YMM1_YMM2_FSxBX_icebp);
     3386extern FNBS3FAR             bs3CpuInstr3_vpmaxuw_YMM8_YMM9_YMM10_icebp_c64;
     3387extern FNBS3FAR             bs3CpuInstr3_vpmaxuw_YMM8_YMM9_FSxBX_icebp_c64;
     3388
     3389BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pmaxud_XMM1_XMM2_icebp);
     3390BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pmaxud_XMM1_FSxBX_icebp);
     3391extern FNBS3FAR             bs3CpuInstr3_pmaxud_XMM8_XMM9_icebp_c64;
     3392extern FNBS3FAR             bs3CpuInstr3_pmaxud_XMM8_FSxBX_icebp_c64;
     3393BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpmaxud_XMM1_XMM2_XMM3_icebp);
     3394BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpmaxud_XMM1_XMM2_FSxBX_icebp);
     3395extern FNBS3FAR             bs3CpuInstr3_vpmaxud_XMM8_XMM9_XMM10_icebp_c64;
     3396extern FNBS3FAR             bs3CpuInstr3_vpmaxud_XMM8_XMM9_FSxBX_icebp_c64;
     3397BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpmaxud_YMM1_YMM2_YMM3_icebp);
     3398BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpmaxud_YMM1_YMM2_FSxBX_icebp);
     3399extern FNBS3FAR             bs3CpuInstr3_vpmaxud_YMM8_YMM9_YMM10_icebp_c64;
     3400extern FNBS3FAR             bs3CpuInstr3_vpmaxud_YMM8_YMM9_FSxBX_icebp_c64;
     3401
     3402BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_pmaxub_pmaxuw_pmaxud(uint8_t bMode)
     3403{
     3404    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesB64[] =
    33773405    {
    33783406        {   /*src2*/ RTUINT256_INIT_C( 0,  0,  0, 0),
     
    33923420            /* => */ RTUINT256_INIT_C(12, 13, 14, 0xff82fe64fffeff81) },
    33933421    };
    3394     static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesOthers[] =
     3422    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesB[] =
    33953423    {
    33963424        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     
    34043432            /* => */ RTUINT256_INIT_C(0x4dddf0ac6cdc73d5, 0xf9f48eec667256e6, 0xb421e9a8bf999bc3, 0x9cd3e0a0938499fd) },
    34053433    };
     3434    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesW[] =
     3435    {
     3436        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     3437            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     3438            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     3439        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     3440            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     3441            /* => */ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8) },
     3442        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     3443            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     3444            /* => */ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0xf95c8eec666b5633, 0xb421e95bbf999ba2, 0x9c5ce073930999fd) },
     3445    };
     3446    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesD[] =
     3447    {
     3448        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     3449            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     3450            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     3451        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     3452            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     3453            /* => */ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8) },
     3454        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     3455            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     3456            /* => */ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0xf95c8eec666b3fe6, 0xb4212fa8bf9962c3, 0x9c5ce073930996bb) },
     3457    };
    34063458
    34073459    static BS3CPUINSTR3_TEST1_T const s_aTests16[] =
    34083460    {
    3409         {  bs3CpuInstr3_pmaxub_MM1_MM2_icebp_c16,          255,         RM_REG, T_MMX_SSE,   1, 1,   2, RT_ELEMENTS(s_aValues64), s_aValues64 },
    3410         {  bs3CpuInstr3_pmaxub_MM1_FSxBX_icebp_c16,        255,         RM_MEM, T_MMX_SSE,   1, 1, 255, RT_ELEMENTS(s_aValues64), s_aValues64 },
    3411         {  bs3CpuInstr3_pmaxub_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSE2,      1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
    3412         {  bs3CpuInstr3_pmaxub_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSE2,      1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
    3413         {  bs3CpuInstr3_vpmaxub_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
    3414         {  bs3CpuInstr3_vpmaxub_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
    3415         {  bs3CpuInstr3_vpmaxub_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
    3416         {  bs3CpuInstr3_vpmaxub_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     3461        {  bs3CpuInstr3_pmaxub_MM1_MM2_icebp_c16,          255,         RM_REG, T_MMX_SSE,   1, 1,   2, RT_ELEMENTS(s_aValuesB64), s_aValuesB64 },
     3462        {  bs3CpuInstr3_pmaxub_MM1_FSxBX_icebp_c16,        255,         RM_MEM, T_MMX_SSE,   1, 1, 255, RT_ELEMENTS(s_aValuesB64), s_aValuesB64 },
     3463        {  bs3CpuInstr3_pmaxub_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSE2,      1, 1,   2, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3464        {  bs3CpuInstr3_pmaxub_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSE2,      1, 1, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3465        {  bs3CpuInstr3_vpmaxub_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3466        {  bs3CpuInstr3_vpmaxub_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3467        {  bs3CpuInstr3_vpmaxub_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3468        {  bs3CpuInstr3_vpmaxub_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3469
     3470        {  bs3CpuInstr3_pmaxuw_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSE4_1,    1, 1,   2, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3471        {  bs3CpuInstr3_pmaxuw_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSE4_1,    1, 1, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3472        {  bs3CpuInstr3_vpmaxuw_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3473        {  bs3CpuInstr3_vpmaxuw_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3474        {  bs3CpuInstr3_vpmaxuw_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3475        {  bs3CpuInstr3_vpmaxuw_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3476
     3477        {  bs3CpuInstr3_pmaxud_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSE4_1,    1, 1,   2, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3478        {  bs3CpuInstr3_pmaxud_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSE4_1,    1, 1, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3479        {  bs3CpuInstr3_vpmaxud_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3480        {  bs3CpuInstr3_vpmaxud_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3481        {  bs3CpuInstr3_vpmaxud_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3482        {  bs3CpuInstr3_vpmaxud_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
    34173483    };
    34183484    static BS3CPUINSTR3_TEST1_T const s_aTests32[] =
    34193485    {
    3420         {  bs3CpuInstr3_pmaxub_MM1_MM2_icebp_c32,          255,         RM_REG, T_MMX_SSE,   1, 1,   2, RT_ELEMENTS(s_aValues64), s_aValues64 },
    3421         {  bs3CpuInstr3_pmaxub_MM1_FSxBX_icebp_c32,        255,         RM_MEM, T_MMX_SSE,   1, 1, 255, RT_ELEMENTS(s_aValues64), s_aValues64 },
    3422         {  bs3CpuInstr3_pmaxub_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSE2,      1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
    3423         {  bs3CpuInstr3_pmaxub_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSE2,      1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
    3424         {  bs3CpuInstr3_vpmaxub_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
    3425         {  bs3CpuInstr3_vpmaxub_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
    3426         {  bs3CpuInstr3_vpmaxub_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
    3427         {  bs3CpuInstr3_vpmaxub_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     3486        {  bs3CpuInstr3_pmaxub_MM1_MM2_icebp_c32,          255,         RM_REG, T_MMX_SSE,   1, 1,   2, RT_ELEMENTS(s_aValuesB64), s_aValuesB64 },
     3487        {  bs3CpuInstr3_pmaxub_MM1_FSxBX_icebp_c32,        255,         RM_MEM, T_MMX_SSE,   1, 1, 255, RT_ELEMENTS(s_aValuesB64), s_aValuesB64 },
     3488        {  bs3CpuInstr3_pmaxub_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSE2,      1, 1,   2, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3489        {  bs3CpuInstr3_pmaxub_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSE2,      1, 1, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3490        {  bs3CpuInstr3_vpmaxub_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3491        {  bs3CpuInstr3_vpmaxub_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3492        {  bs3CpuInstr3_vpmaxub_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3493        {  bs3CpuInstr3_vpmaxub_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3494
     3495        {  bs3CpuInstr3_pmaxuw_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSE4_1,    1, 1,   2, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3496        {  bs3CpuInstr3_pmaxuw_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSE4_1,    1, 1, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3497        {  bs3CpuInstr3_vpmaxuw_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3498        {  bs3CpuInstr3_vpmaxuw_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3499        {  bs3CpuInstr3_vpmaxuw_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3500        {  bs3CpuInstr3_vpmaxuw_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3501
     3502        {  bs3CpuInstr3_pmaxud_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSE4_1,    1, 1,   2, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3503        {  bs3CpuInstr3_pmaxud_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSE4_1,    1, 1, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3504        {  bs3CpuInstr3_vpmaxud_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3505        {  bs3CpuInstr3_vpmaxud_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3506        {  bs3CpuInstr3_vpmaxud_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3507        {  bs3CpuInstr3_vpmaxud_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
    34283508    };
    34293509    static BS3CPUINSTR3_TEST1_T const s_aTests64[] =
    34303510    {
    3431         {  bs3CpuInstr3_pmaxub_MM1_MM2_icebp_c64,          255,         RM_REG, T_MMX_SSE,   1, 1,   2, RT_ELEMENTS(s_aValues64), s_aValues64 },
    3432         {  bs3CpuInstr3_pmaxub_MM1_FSxBX_icebp_c64,        255,         RM_MEM, T_MMX_SSE,   1, 1, 255, RT_ELEMENTS(s_aValues64), s_aValues64 },
    3433         {  bs3CpuInstr3_pmaxub_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSE2,      1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
    3434         {  bs3CpuInstr3_pmaxub_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE2,      1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
    3435         {  bs3CpuInstr3_pmaxub_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSE2,      8, 8,   9, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
    3436         {  bs3CpuInstr3_pmaxub_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE2,      8, 8, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
    3437         {  bs3CpuInstr3_vpmaxub_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
    3438         {  bs3CpuInstr3_vpmaxub_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
    3439         {  bs3CpuInstr3_vpmaxub_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
    3440         {  bs3CpuInstr3_vpmaxub_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
    3441         {  bs3CpuInstr3_vpmaxub_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
    3442         {  bs3CpuInstr3_vpmaxub_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
    3443         {  bs3CpuInstr3_vpmaxub_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
    3444         {  bs3CpuInstr3_vpmaxub_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     3511        {  bs3CpuInstr3_pmaxub_MM1_MM2_icebp_c64,          255,         RM_REG, T_MMX_SSE,   1, 1,   2, RT_ELEMENTS(s_aValuesB64), s_aValuesB64 },
     3512        {  bs3CpuInstr3_pmaxub_MM1_FSxBX_icebp_c64,        255,         RM_MEM, T_MMX_SSE,   1, 1, 255, RT_ELEMENTS(s_aValuesB64), s_aValuesB64 },
     3513        {  bs3CpuInstr3_pmaxub_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSE2,      1, 1,   2, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3514        {  bs3CpuInstr3_pmaxub_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE2,      1, 1, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3515        {  bs3CpuInstr3_pmaxub_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSE2,      8, 8,   9, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3516        {  bs3CpuInstr3_pmaxub_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE2,      8, 8, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3517        {  bs3CpuInstr3_vpmaxub_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3518        {  bs3CpuInstr3_vpmaxub_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3519        {  bs3CpuInstr3_vpmaxub_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3520        {  bs3CpuInstr3_vpmaxub_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3521        {  bs3CpuInstr3_vpmaxub_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3522        {  bs3CpuInstr3_vpmaxub_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3523        {  bs3CpuInstr3_vpmaxub_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3524        {  bs3CpuInstr3_vpmaxub_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3525
     3526        {  bs3CpuInstr3_pmaxuw_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSE4_1,    1, 1,   2, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3527        {  bs3CpuInstr3_pmaxuw_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE4_1,    1, 1, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3528        {  bs3CpuInstr3_pmaxuw_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSE4_1,    8, 8,   9, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3529        {  bs3CpuInstr3_pmaxuw_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE4_1,    8, 8, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3530        {  bs3CpuInstr3_vpmaxuw_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3531        {  bs3CpuInstr3_vpmaxuw_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3532        {  bs3CpuInstr3_vpmaxuw_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3533        {  bs3CpuInstr3_vpmaxuw_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3534        {  bs3CpuInstr3_vpmaxuw_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3535        {  bs3CpuInstr3_vpmaxuw_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3536        {  bs3CpuInstr3_vpmaxuw_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3537        {  bs3CpuInstr3_vpmaxuw_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3538
     3539        {  bs3CpuInstr3_pmaxud_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSE4_1,    1, 1,   2, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3540        {  bs3CpuInstr3_pmaxud_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE4_1,    1, 1, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3541        {  bs3CpuInstr3_pmaxud_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSE4_1,    8, 8,   9, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3542        {  bs3CpuInstr3_pmaxud_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE4_1,    8, 8, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3543        {  bs3CpuInstr3_vpmaxud_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3544        {  bs3CpuInstr3_vpmaxud_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3545        {  bs3CpuInstr3_vpmaxud_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3546        {  bs3CpuInstr3_vpmaxud_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3547        {  bs3CpuInstr3_vpmaxud_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3548        {  bs3CpuInstr3_vpmaxud_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3549        {  bs3CpuInstr3_vpmaxud_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3550        {  bs3CpuInstr3_vpmaxud_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
    34453551    };
    34463552    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     
    64576563#endif
    64586564#if defined(ALL_TESTS)
    6459         { "[v]pmaxub",                                      bs3CpuInstr3_v_pmaxub, 0 },
     6565        { "[v]pmaxub/[v]pmaxuw/[v]pmaxud",                  bs3CpuInstr3_v_pmaxub_pmaxuw_pmaxud, 0 },
    64606566        { "[v]pminub",                                      bs3CpuInstr3_v_pminub, 0 },
    64616567#endif
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