VirtualBox

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


Ignore:
Timestamp:
Aug 3, 2022 8:15:57 PM (3 years ago)
Author:
vboxsync
Message:

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

    r96008 r96011  
    10221022EMIT_INSTR_PLUS_ICEBP   vpmaxud, YMM8, YMM9, YMM10
    10231023EMIT_INSTR_PLUS_ICEBP   vpmaxud, YMM8, YMM9, FSxBX
     1024 %endif
     1025
     1026;
     1027; [V]PMAXSB
     1028;
     1029EMIT_INSTR_PLUS_ICEBP   pmaxsb, XMM1, XMM2
     1030EMIT_INSTR_PLUS_ICEBP   pmaxsb, XMM1, FSxBX
     1031 %if TMPL_BITS == 64
     1032EMIT_INSTR_PLUS_ICEBP   pmaxsb, XMM8, XMM9
     1033EMIT_INSTR_PLUS_ICEBP   pmaxsb, XMM8, FSxBX
     1034 %endif
     1035
     1036EMIT_INSTR_PLUS_ICEBP   vpmaxsb, XMM1, XMM2, XMM3
     1037EMIT_INSTR_PLUS_ICEBP   vpmaxsb, XMM1, XMM2, FSxBX
     1038 %if TMPL_BITS == 64
     1039EMIT_INSTR_PLUS_ICEBP   vpmaxsb, XMM8, XMM9, XMM10
     1040EMIT_INSTR_PLUS_ICEBP   vpmaxsb, XMM8, XMM9, FSxBX
     1041 %endif
     1042
     1043EMIT_INSTR_PLUS_ICEBP   vpmaxsb, YMM1, YMM2, YMM3
     1044EMIT_INSTR_PLUS_ICEBP   vpmaxsb, YMM1, YMM2, FSxBX
     1045 %if TMPL_BITS == 64
     1046EMIT_INSTR_PLUS_ICEBP   vpmaxsb, YMM8, YMM9, YMM10
     1047EMIT_INSTR_PLUS_ICEBP   vpmaxsb, YMM8, YMM9, FSxBX
     1048 %endif
     1049
     1050;
     1051; [V]PMAXSW
     1052;
     1053EMIT_INSTR_PLUS_ICEBP   pmaxsw, MM1, MM2
     1054EMIT_INSTR_PLUS_ICEBP   pmaxsw, MM1, FSxBX
     1055
     1056EMIT_INSTR_PLUS_ICEBP   pmaxsw, XMM1, XMM2
     1057EMIT_INSTR_PLUS_ICEBP   pmaxsw, XMM1, FSxBX
     1058 %if TMPL_BITS == 64
     1059EMIT_INSTR_PLUS_ICEBP   pmaxsw, XMM8, XMM9
     1060EMIT_INSTR_PLUS_ICEBP   pmaxsw, XMM8, FSxBX
     1061 %endif
     1062
     1063EMIT_INSTR_PLUS_ICEBP   vpmaxsw, XMM1, XMM2, XMM3
     1064EMIT_INSTR_PLUS_ICEBP   vpmaxsw, XMM1, XMM2, FSxBX
     1065 %if TMPL_BITS == 64
     1066EMIT_INSTR_PLUS_ICEBP   vpmaxsw, XMM8, XMM9, XMM10
     1067EMIT_INSTR_PLUS_ICEBP   vpmaxsw, XMM8, XMM9, FSxBX
     1068 %endif
     1069
     1070EMIT_INSTR_PLUS_ICEBP   vpmaxsw, YMM1, YMM2, YMM3
     1071EMIT_INSTR_PLUS_ICEBP   vpmaxsw, YMM1, YMM2, FSxBX
     1072 %if TMPL_BITS == 64
     1073EMIT_INSTR_PLUS_ICEBP   vpmaxsw, YMM8, YMM9, YMM10
     1074EMIT_INSTR_PLUS_ICEBP   vpmaxsw, YMM8, YMM9, FSxBX
     1075 %endif
     1076
     1077;
     1078; [V]PMAXSD
     1079;
     1080EMIT_INSTR_PLUS_ICEBP   pmaxsd, XMM1, XMM2
     1081EMIT_INSTR_PLUS_ICEBP   pmaxsd, XMM1, FSxBX
     1082 %if TMPL_BITS == 64
     1083EMIT_INSTR_PLUS_ICEBP   pmaxsd, XMM8, XMM9
     1084EMIT_INSTR_PLUS_ICEBP   pmaxsd, XMM8, FSxBX
     1085 %endif
     1086
     1087EMIT_INSTR_PLUS_ICEBP   vpmaxsd, XMM1, XMM2, XMM3
     1088EMIT_INSTR_PLUS_ICEBP   vpmaxsd, XMM1, XMM2, FSxBX
     1089 %if TMPL_BITS == 64
     1090EMIT_INSTR_PLUS_ICEBP   vpmaxsd, XMM8, XMM9, XMM10
     1091EMIT_INSTR_PLUS_ICEBP   vpmaxsd, XMM8, XMM9, FSxBX
     1092 %endif
     1093
     1094EMIT_INSTR_PLUS_ICEBP   vpmaxsd, YMM1, YMM2, YMM3
     1095EMIT_INSTR_PLUS_ICEBP   vpmaxsd, YMM1, YMM2, FSxBX
     1096 %if TMPL_BITS == 64
     1097EMIT_INSTR_PLUS_ICEBP   vpmaxsd, YMM8, YMM9, YMM10
     1098EMIT_INSTR_PLUS_ICEBP   vpmaxsd, YMM8, YMM9, FSxBX
    10241099 %endif
    10251100
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32

    r96008 r96011  
    35493549        {  bs3CpuInstr3_vpmaxud_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
    35503550        {  bs3CpuInstr3_vpmaxud_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3551    };
     3552    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     3553    unsigned const                         iTest       = BS3CPUINSTR3_TEST_MODES_INDEX(bMode);
     3554    return bs3CpuInstr3_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     3555                                        g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4));
     3556}
     3557
     3558
     3559/*
     3560 * [V]PMAXSB  - Compare signed byte integers and returns maximum values.
     3561 * [V]PMAXSW  - Compare signed word integers and returns maximum values.
     3562 * [V]PMAXSD  - Compare signed double word integers and returns maximum values.
     3563 */
     3564BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pmaxsb_XMM1_XMM2_icebp);
     3565BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pmaxsb_XMM1_FSxBX_icebp);
     3566extern FNBS3FAR             bs3CpuInstr3_pmaxsb_XMM8_XMM9_icebp_c64;
     3567extern FNBS3FAR             bs3CpuInstr3_pmaxsb_XMM8_FSxBX_icebp_c64;
     3568BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpmaxsb_XMM1_XMM2_XMM3_icebp);
     3569BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpmaxsb_XMM1_XMM2_FSxBX_icebp);
     3570extern FNBS3FAR             bs3CpuInstr3_vpmaxsb_XMM8_XMM9_XMM10_icebp_c64;
     3571extern FNBS3FAR             bs3CpuInstr3_vpmaxsb_XMM8_XMM9_FSxBX_icebp_c64;
     3572BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpmaxsb_YMM1_YMM2_YMM3_icebp);
     3573BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpmaxsb_YMM1_YMM2_FSxBX_icebp);
     3574extern FNBS3FAR             bs3CpuInstr3_vpmaxsb_YMM8_YMM9_YMM10_icebp_c64;
     3575extern FNBS3FAR             bs3CpuInstr3_vpmaxsb_YMM8_YMM9_FSxBX_icebp_c64;
     3576
     3577BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pmaxsw_MM1_MM2_icebp);
     3578BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pmaxsw_MM1_FSxBX_icebp);
     3579BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pmaxsw_XMM1_XMM2_icebp);
     3580BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pmaxsw_XMM1_FSxBX_icebp);
     3581extern FNBS3FAR             bs3CpuInstr3_pmaxsw_XMM8_XMM9_icebp_c64;
     3582extern FNBS3FAR             bs3CpuInstr3_pmaxsw_XMM8_FSxBX_icebp_c64;
     3583BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpmaxsw_XMM1_XMM2_XMM3_icebp);
     3584BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpmaxsw_XMM1_XMM2_FSxBX_icebp);
     3585extern FNBS3FAR             bs3CpuInstr3_vpmaxsw_XMM8_XMM9_XMM10_icebp_c64;
     3586extern FNBS3FAR             bs3CpuInstr3_vpmaxsw_XMM8_XMM9_FSxBX_icebp_c64;
     3587BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpmaxsw_YMM1_YMM2_YMM3_icebp);
     3588BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpmaxsw_YMM1_YMM2_FSxBX_icebp);
     3589extern FNBS3FAR             bs3CpuInstr3_vpmaxsw_YMM8_YMM9_YMM10_icebp_c64;
     3590extern FNBS3FAR             bs3CpuInstr3_vpmaxsw_YMM8_YMM9_FSxBX_icebp_c64;
     3591
     3592BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pmaxsd_XMM1_XMM2_icebp);
     3593BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_pmaxsd_XMM1_FSxBX_icebp);
     3594extern FNBS3FAR             bs3CpuInstr3_pmaxsd_XMM8_XMM9_icebp_c64;
     3595extern FNBS3FAR             bs3CpuInstr3_pmaxsd_XMM8_FSxBX_icebp_c64;
     3596BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpmaxsd_XMM1_XMM2_XMM3_icebp);
     3597BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpmaxsd_XMM1_XMM2_FSxBX_icebp);
     3598extern FNBS3FAR             bs3CpuInstr3_vpmaxsd_XMM8_XMM9_XMM10_icebp_c64;
     3599extern FNBS3FAR             bs3CpuInstr3_vpmaxsd_XMM8_XMM9_FSxBX_icebp_c64;
     3600BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpmaxsd_YMM1_YMM2_YMM3_icebp);
     3601BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpmaxsd_YMM1_YMM2_FSxBX_icebp);
     3602extern FNBS3FAR             bs3CpuInstr3_vpmaxsd_YMM8_YMM9_YMM10_icebp_c64;
     3603extern FNBS3FAR             bs3CpuInstr3_vpmaxsd_YMM8_YMM9_FSxBX_icebp_c64;
     3604
     3605BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_pmaxsb_pmaxsw_pmaxsd(uint8_t bMode)
     3606{
     3607    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesB64[] =
     3608    {
     3609        {   /*src2*/ RTUINT256_INIT_C( 0,  0,  0, 0),
     3610            /*src1*/ RTUINT256_INIT_C( 0,  0,  0, 0),
     3611            /* => */ RTUINT256_INIT_C( 0,  0,  0, 0) },
     3612        {   /*src2*/ RTUINT256_INIT_C( 1,  2,  3, 0xf1f2f3f4f5f6f7f8),
     3613            /*src1*/ RTUINT256_INIT_C( 1,  2,  3, 0xe1e2e3e4e5e6e7e8),
     3614            /* => */ RTUINT256_INIT_C( 1,  2,  3, 0xf1f2f3f4f5f6f7f8) },
     3615        {   /*src2*/ RTUINT256_INIT_C( 4,  5,  7, 0x5555666677778888),
     3616            /*src1*/ RTUINT256_INIT_C( 4,  6,  7, 0xddddeeeeffff0000),
     3617            /* => */ RTUINT256_INIT_C( 4,  6,  7, 0x5555666677770000) },
     3618        {   /*src2*/ RTUINT256_INIT_C( 8, 10, 11, 0x9c5ce073930996bb),
     3619            /*src1*/ RTUINT256_INIT_C(12, 13, 14, 0x43d3cda0238499fd),
     3620            /* => */ RTUINT256_INIT_C(12, 13, 14, 0x43d3e073238499fd) },
     3621        {   /*src2*/ RTUINT256_INIT_C( 8, 10, 11, 0xff820064fffe0042),
     3622            /*src1*/ RTUINT256_INIT_C(12, 13, 14, 0x0022fe00ff80ff81),
     3623            /* => */ RTUINT256_INIT_C(12, 13, 14, 0x00220064fffe0042) },
     3624    };
     3625    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesB[] =
     3626    {
     3627        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     3628            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     3629            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     3630        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     3631            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     3632            /* => */ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8) },
     3633        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     3634            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     3635            /* => */ RTUINT256_INIT_C(0x4d09f02a6c6373d5, 0x3e5c17ec66725633, 0xb4212f5b564c62c3, 0x435ce073230999fd) },
     3636    };
     3637    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesW[] =
     3638    {
     3639        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     3640            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     3641            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     3642        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     3643            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     3644            /* => */ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8) },
     3645        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     3646            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     3647            /* => */ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b5633, 0xb4212fa8564c62c3, 0x43d3e073238499fd) },
     3648    };
     3649    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesD[] =
     3650    {
     3651        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     3652            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     3653            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     3654        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     3655            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     3656            /* => */ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8) },
     3657        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     3658            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     3659            /* => */ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x43d3cda0238499fd) },
     3660    };
     3661
     3662    static BS3CPUINSTR3_TEST1_T const s_aTests16[] =
     3663    {
     3664        {  bs3CpuInstr3_pmaxsb_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSE4_1,    1, 1,   2, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3665        {  bs3CpuInstr3_pmaxsb_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSE4_1,    1, 1, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3666        {  bs3CpuInstr3_vpmaxsb_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3667        {  bs3CpuInstr3_vpmaxsb_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3668        {  bs3CpuInstr3_vpmaxsb_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3669        {  bs3CpuInstr3_vpmaxsb_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3670
     3671        {  bs3CpuInstr3_pmaxsw_MM1_MM2_icebp_c16,          255,         RM_REG, T_MMX_SSE,   1, 1,   2, RT_ELEMENTS(s_aValuesB64), s_aValuesB64 },
     3672        {  bs3CpuInstr3_pmaxsw_MM1_FSxBX_icebp_c16,        255,         RM_MEM, T_MMX_SSE,   1, 1, 255, RT_ELEMENTS(s_aValuesB64), s_aValuesB64 },
     3673        {  bs3CpuInstr3_pmaxsw_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSE2,      1, 1,   2, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3674        {  bs3CpuInstr3_pmaxsw_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSE2,      1, 1, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3675        {  bs3CpuInstr3_vpmaxsw_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3676        {  bs3CpuInstr3_vpmaxsw_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3677        {  bs3CpuInstr3_vpmaxsw_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3678        {  bs3CpuInstr3_vpmaxsw_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3679
     3680        {  bs3CpuInstr3_pmaxsd_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSE4_1,    1, 1,   2, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3681        {  bs3CpuInstr3_pmaxsd_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSE4_1,    1, 1, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3682        {  bs3CpuInstr3_vpmaxsd_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3683        {  bs3CpuInstr3_vpmaxsd_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3684        {  bs3CpuInstr3_vpmaxsd_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3685        {  bs3CpuInstr3_vpmaxsd_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3686    };
     3687    static BS3CPUINSTR3_TEST1_T const s_aTests32[] =
     3688    {
     3689        {  bs3CpuInstr3_pmaxsb_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSE4_1,    1, 1,   2, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3690        {  bs3CpuInstr3_pmaxsb_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSE4_1,    1, 1, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3691        {  bs3CpuInstr3_vpmaxsb_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3692        {  bs3CpuInstr3_vpmaxsb_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3693        {  bs3CpuInstr3_vpmaxsb_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3694        {  bs3CpuInstr3_vpmaxsb_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3695
     3696        {  bs3CpuInstr3_pmaxsw_MM1_MM2_icebp_c32,          255,         RM_REG, T_MMX_SSE,   1, 1,   2, RT_ELEMENTS(s_aValuesB64), s_aValuesB64 },
     3697        {  bs3CpuInstr3_pmaxsw_MM1_FSxBX_icebp_c32,        255,         RM_MEM, T_MMX_SSE,   1, 1, 255, RT_ELEMENTS(s_aValuesB64), s_aValuesB64 },
     3698        {  bs3CpuInstr3_pmaxsw_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSE2,      1, 1,   2, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3699        {  bs3CpuInstr3_pmaxsw_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSE2,      1, 1, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3700        {  bs3CpuInstr3_vpmaxsw_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3701        {  bs3CpuInstr3_vpmaxsw_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3702        {  bs3CpuInstr3_vpmaxsw_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3703        {  bs3CpuInstr3_vpmaxsw_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3704
     3705        {  bs3CpuInstr3_pmaxsd_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSE4_1,    1, 1,   2, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3706        {  bs3CpuInstr3_pmaxsd_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSE4_1,    1, 1, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3707        {  bs3CpuInstr3_vpmaxsd_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3708        {  bs3CpuInstr3_vpmaxsd_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3709        {  bs3CpuInstr3_vpmaxsd_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3710        {  bs3CpuInstr3_vpmaxsd_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3711    };
     3712    static BS3CPUINSTR3_TEST1_T const s_aTests64[] =
     3713    {
     3714        {  bs3CpuInstr3_pmaxsb_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSE4_1,    1, 1,   2, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3715        {  bs3CpuInstr3_pmaxsb_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE4_1,    1, 1, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3716        {  bs3CpuInstr3_pmaxsb_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSE4_1,    8, 8,   9, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3717        {  bs3CpuInstr3_pmaxsb_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE4_1,    8, 8, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3718        {  bs3CpuInstr3_vpmaxsb_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3719        {  bs3CpuInstr3_vpmaxsb_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3720        {  bs3CpuInstr3_vpmaxsb_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3721        {  bs3CpuInstr3_vpmaxsb_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3722        {  bs3CpuInstr3_vpmaxsb_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3723        {  bs3CpuInstr3_vpmaxsb_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3724        {  bs3CpuInstr3_vpmaxsb_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3725        {  bs3CpuInstr3_vpmaxsb_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesB),   s_aValuesB },
     3726
     3727        {  bs3CpuInstr3_pmaxsw_MM1_MM2_icebp_c64,          255,         RM_REG, T_MMX_SSE,   1, 1,   2, RT_ELEMENTS(s_aValuesB64), s_aValuesB64 },
     3728        {  bs3CpuInstr3_pmaxsw_MM1_FSxBX_icebp_c64,        255,         RM_MEM, T_MMX_SSE,   1, 1, 255, RT_ELEMENTS(s_aValuesB64), s_aValuesB64 },
     3729        {  bs3CpuInstr3_pmaxsw_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSE2,      1, 1,   2, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3730        {  bs3CpuInstr3_pmaxsw_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE2,      1, 1, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3731        {  bs3CpuInstr3_pmaxsw_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSE2,      8, 8,   9, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3732        {  bs3CpuInstr3_pmaxsw_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE2,      8, 8, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3733        {  bs3CpuInstr3_vpmaxsw_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3734        {  bs3CpuInstr3_vpmaxsw_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3735        {  bs3CpuInstr3_vpmaxsw_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3736        {  bs3CpuInstr3_vpmaxsw_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3737        {  bs3CpuInstr3_vpmaxsw_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3738        {  bs3CpuInstr3_vpmaxsw_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3739        {  bs3CpuInstr3_vpmaxsw_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3740        {  bs3CpuInstr3_vpmaxsw_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesW),   s_aValuesW },
     3741
     3742        {  bs3CpuInstr3_pmaxsd_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSE4_1,    1, 1,   2, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3743        {  bs3CpuInstr3_pmaxsd_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE4_1,    1, 1, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3744        {  bs3CpuInstr3_pmaxsd_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSE4_1,    8, 8,   9, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3745        {  bs3CpuInstr3_pmaxsd_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE4_1,    8, 8, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3746        {  bs3CpuInstr3_vpmaxsd_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3747        {  bs3CpuInstr3_vpmaxsd_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3748        {  bs3CpuInstr3_vpmaxsd_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3749        {  bs3CpuInstr3_vpmaxsd_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3750        {  bs3CpuInstr3_vpmaxsd_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3751        {  bs3CpuInstr3_vpmaxsd_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3752        {  bs3CpuInstr3_vpmaxsd_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
     3753        {  bs3CpuInstr3_vpmaxsd_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesD),   s_aValuesD },
    35513754    };
    35523755    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     
    68737076#if defined(ALL_TESTS)
    68747077        { "[v]pmaxub/[v]pmaxuw/[v]pmaxud",                  bs3CpuInstr3_v_pmaxub_pmaxuw_pmaxud, 0 },
     7078        { "[v]pmaxsb/[v]pmaxsw/[v]pmaxsd",                  bs3CpuInstr3_v_pmaxsb_pmaxsw_pmaxsd, 0 },
    68757079        { "[v]pminub/[v]pminuw/[v]pminud",                  bs3CpuInstr3_v_pminub_pminuw_pminud, 0 },
    68767080        { "[v]pminsb/[v]pminsw/[v]pminsd",                  bs3CpuInstr3_v_pminsb_pminsw_pminsd, 0 },
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