VirtualBox

Changeset 107141 in vbox


Ignore:
Timestamp:
Nov 26, 2024 10:22:23 AM (7 weeks ago)
Author:
vboxsync
Message:

ValidationKit/bootsectors: Implement testcases for vpermq instruction; bugref:9898; jiraref:VBP-1464

Location:
trunk/src/VBox/ValidationKit/bootsectors
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3-template.mac

    r106886 r107141  
    33163316
    33173317;
     3318; VPERMQ
     3319;
     3320EMIT_INSTR_PLUS_ICEBP     vpermq, YMM1, YMM2,  000h
     3321EMIT_INSTR_PLUS_ICEBP     vpermq, YMM1, YMM2,  0E7h
     3322EMIT_INSTR_PLUS_ICEBP     vpermq, YMM1, YMM2,  091h
     3323EMIT_INSTR_PLUS_ICEBP     vpermq, YMM1, FSxBX, 000h
     3324EMIT_INSTR_PLUS_ICEBP     vpermq, YMM1, FSxBX, 0E7h
     3325EMIT_INSTR_PLUS_ICEBP     vpermq, YMM1, FSxBX, 091h
     3326EMIT_INSTR_PLUS_ICEBP_C64 vpermq, YMM8, YMM9,  000h
     3327EMIT_INSTR_PLUS_ICEBP_C64 vpermq, YMM8, YMM9,  0E7h
     3328EMIT_INSTR_PLUS_ICEBP_C64 vpermq, YMM8, YMM9,  091h
     3329EMIT_INSTR_PLUS_ICEBP_C64 vpermq, YMM8, FSxBX, 000h
     3330EMIT_INSTR_PLUS_ICEBP_C64 vpermq, YMM8, FSxBX, 0E7h
     3331EMIT_INSTR_PLUS_ICEBP_C64 vpermq, YMM8, FSxBX, 091h
     3332EMIT_INSTR_PLUS_ICEBP     vpermq, YMM1, YMM1,  000h
     3333EMIT_INSTR_PLUS_ICEBP     vpermq, YMM1, YMM1,  0E7h
     3334EMIT_INSTR_PLUS_ICEBP     vpermq, YMM1, YMM1,  091h
     3335
     3336;
    33183337; [V]PMADDUBSW
    33193338;
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32

    r107023 r107141  
    64216421
    64226422/*
     6423 * VPERMD - Permute Doubleword Values
    64236424 * VPERMPS - Permute Single Precision Floating-Point Values
    64246425 */
     
    65456546
    65466547/*
     6548 * VPERMQ - Permute Quadword Values
    65476549 * VPERMPD - Permute Double Precision Floating-Point Values
    65486550 */
    6549 BS3_DECL_FAR(uint8_t) bs3CpuInstr3_vpermpd(uint8_t bMode)
     6551BS3_DECL_FAR(uint8_t) bs3CpuInstr3_vpermq_vpermpd(uint8_t bMode)
    65506552{
    65516553    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues00[] =
     
    65886590    static BS3CPUINSTR3_TEST1_T const s_aTests[] =
    65896591    {
     6592        {  BS3_INSTR3_ALL(vpermq_YMM1_YMM2_000h),   255,         RM_REG, T_AVX2_256, YMM1, YMM2,  NOREG, PASS_ARRAY(s_aValues00) },
     6593        {  BS3_INSTR3_ALL(vpermq_YMM1_FSxBX_000h),  X86_XCPT_DB, RM_MEM, T_AVX2_256, YMM1, FSxBX, NOREG, PASS_ARRAY(s_aValues00) },
     6594        {  BS3_INSTR3_ALL(vpermq_YMM1_YMM2_091h),   255,         RM_REG, T_AVX2_256, YMM1, YMM2,  NOREG, PASS_ARRAY(s_aValues91) },
     6595        {  BS3_INSTR3_ALL(vpermq_YMM1_FSxBX_091h),  X86_XCPT_DB, RM_MEM, T_AVX2_256, YMM1, FSxBX, NOREG, PASS_ARRAY(s_aValues91) },
     6596        {  BS3_INSTR3_ALL(vpermq_YMM1_YMM2_0E7h),   255,         RM_REG, T_AVX2_256, YMM1, YMM2,  NOREG, PASS_ARRAY(s_aValuesE7) },
     6597        {  BS3_INSTR3_ALL(vpermq_YMM1_FSxBX_0E7h),  X86_XCPT_DB, RM_MEM, T_AVX2_256, YMM1, FSxBX, NOREG, PASS_ARRAY(s_aValuesE7) },
     6598
     6599        {  BS3_INSTR3_C64(vpermq_YMM8_YMM9_000h),   255,         RM_REG, T_AVX2_256, YMM8, YMM9,  NOREG, PASS_ARRAY(s_aValues00) },
     6600        {  BS3_INSTR3_C64(vpermq_YMM8_FSxBX_000h),  X86_XCPT_DB, RM_MEM, T_AVX2_256, YMM8, FSxBX, NOREG, PASS_ARRAY(s_aValues00) },
     6601        {  BS3_INSTR3_C64(vpermq_YMM8_YMM9_091h),   255,         RM_REG, T_AVX2_256, YMM8, YMM9,  NOREG, PASS_ARRAY(s_aValues91) },
     6602        {  BS3_INSTR3_C64(vpermq_YMM8_FSxBX_091h),  X86_XCPT_DB, RM_MEM, T_AVX2_256, YMM8, FSxBX, NOREG, PASS_ARRAY(s_aValues91) },
     6603        {  BS3_INSTR3_C64(vpermq_YMM8_YMM9_0E7h),   255,         RM_REG, T_AVX2_256, YMM8, YMM9,  NOREG, PASS_ARRAY(s_aValuesE7) },
     6604        {  BS3_INSTR3_C64(vpermq_YMM8_FSxBX_0E7h),  X86_XCPT_DB, RM_MEM, T_AVX2_256, YMM8, FSxBX, NOREG, PASS_ARRAY(s_aValuesE7) },
     6605
     6606        {  BS3_INSTR3_ALL(vpermq_YMM1_YMM1_000h),   255,         RM_REG, T_AVX2_256, YMM1, YMM1,  NOREG, PASS_ARRAY(s_aValues00) },
     6607        {  BS3_INSTR3_ALL(vpermq_YMM1_YMM1_091h),   255,         RM_REG, T_AVX2_256, YMM1, YMM1,  NOREG, PASS_ARRAY(s_aValues91) },
     6608        {  BS3_INSTR3_ALL(vpermq_YMM1_YMM1_0E7h),   255,         RM_REG, T_AVX2_256, YMM1, YMM1,  NOREG, PASS_ARRAY(s_aValuesE7) },
     6609
    65906610        {  BS3_INSTR3_ALL(vpermpd_YMM1_YMM2_000h),  255,         RM_REG, T_AVX2_256, YMM1, YMM2,  NOREG, PASS_ARRAY(s_aValues00) },
    65916611        {  BS3_INSTR3_ALL(vpermpd_YMM1_FSxBX_000h), X86_XCPT_DB, RM_MEM, T_AVX2_256, YMM1, FSxBX, NOREG, PASS_ARRAY(s_aValues00) },
     
    1156511585        { "vpermilpd",                                      bs3CpuInstr3_vpermilpd, 0 },
    1156611586        { "vpermps",                                        bs3CpuInstr3_vpermps, 0 },
    11567         { "vpermpd",                                        bs3CpuInstr3_vpermpd, 0 },
     11587        { "vpermq/vpermpd",                                 bs3CpuInstr3_vpermq_vpermpd, 0 },
    1156811588#endif
    1156911589#if defined(ALL_TESTS)
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