VirtualBox

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


Ignore:
Timestamp:
Mar 19, 2024 11:47:19 PM (12 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
162305
Message:

VMM/IEM,bs3-cpu-instr-3: Some vpextrb disas and special+illegal encoding test. 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

    r103910 r103931  
    21822182EMIT_INSTR_PLUS_ICEBP_C64  vpextrb, FSxBX, XMM8, 0FFh
    21832183EMIT_INSTR_PLUS_ICEBP_C64  vpextrb, FSxBX, XMM8, 000h
     2184
     2185%ifnmacro vpextrb_w1b_edx_xmm1 1
     2186 ; special encoding to prove that VEX.W is effectively ignored everywhere and that VEX.B only matter in 64-bit code.
     2187 %macro vpextrb_w1b_edx_xmm1 1
     2188        db      X86_OP_VEX3, 3 | X86_OP_VEX3_BYTE1_X | X86_OP_VEX3_BYTE1_R
     2189        db      X86_OP_VEX3_BYTE2_P_066H | (X86_OP_VEX3_BYTE2_VVVV_NONE << X86_OP_VEX3_BYTE2_VVVV_SHIFT) | X86_OP_VEX3_BYTE2_W
     2190        db      14h, X86_MODRM_MAKE(X86_MOD_REG, 1, X86_GREG_xDX), %1
     2191 %endmacro
     2192
     2193 ; invalid coding where VEX.L=1.
     2194 %macro vpextrb_l1_edx_xmm1 1
     2195        db      X86_OP_VEX3, 3 | X86_OP_VEX3_BYTE1_X | X86_OP_VEX3_BYTE1_R | X86_OP_VEX3_BYTE1_B
     2196        db      X86_OP_VEX3_BYTE2_P_066H | (X86_OP_VEX3_BYTE2_VVVV_NONE << X86_OP_VEX3_BYTE2_VVVV_SHIFT) | X86_OP_VEX3_BYTE2_L
     2197        db      14h, X86_MODRM_MAKE(X86_MOD_REG, 1, X86_GREG_xDX), %1
     2198 %endmacro
     2199%endif
     2200EMIT_INSTR_PLUS_ICEBP      vpextrb_w1b_edx_xmm1, 0FFh
     2201EMIT_INSTR_PLUS_ICEBP      vpextrb_l1_edx_xmm1, 0FFh
    21842202
    21852203;
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32

    r103910 r103931  
    97639763        {  bs3CpuInstr3_vpextrb_FSxBX_XMM1_0FFh_icebp_c16,   X86_XCPT_DB, RM_MEM8,  T_AVX_128, 1,  8, false, true, 255, 1, RT_ELEMENTS(s_aValuesFF_b),    s_aValuesFF_b },
    97649764        {  bs3CpuInstr3_vpextrb_FSxBX_XMM1_000h_icebp_c16,   X86_XCPT_DB, RM_MEM8,  T_AVX_128, 1,  8, false, true, 255, 1, RT_ELEMENTS(s_aValues00_b),    s_aValues00_b },
     9765        {  bs3CpuInstr3_vpextrb_w1b_edx_xmm1_0FFh_icebp_c16, 255,         RM_REG,   T_AVX_128, 4, 32, false, true, 2,   1, RT_ELEMENTS(s_aValuesFF_b),    s_aValuesFF_b },
     9766        {  bs3CpuInstr3_vpextrb_l1_edx_xmm1_0FFh_icebp_c16,  255,         RM_REG,   T_AVX_128, 4, 32, true,  true, 2,   1, RT_ELEMENTS(s_aValuesFF_b),    s_aValuesFF_b },
    97659767
    97669768        {  bs3CpuInstr3_pextrw_EDX_MM1_000h_icebp_c16,       255,         RM_REG,   T_MMX_SSE, 4, 32, false, true, 2,   1, RT_ELEMENTS(s_aValues00_w),    s_aValues00_w },
     
    97999801        {  bs3CpuInstr3_vpextrb_FSxBX_XMM1_0FFh_icebp_c32,   X86_XCPT_DB, RM_MEM8,  T_AVX_128, 1,  8, false, true, 255, 1, RT_ELEMENTS(s_aValuesFF_b),    s_aValuesFF_b },
    98009802        {  bs3CpuInstr3_vpextrb_FSxBX_XMM1_000h_icebp_c32,   X86_XCPT_DB, RM_MEM8,  T_AVX_128, 1,  8, false, true, 255, 1, RT_ELEMENTS(s_aValues00_b),    s_aValues00_b },
     9803        {  bs3CpuInstr3_vpextrb_w1b_edx_xmm1_0FFh_icebp_c32, 255,         RM_REG,   T_AVX_128, 4, 32, false, true, 2,   1, RT_ELEMENTS(s_aValuesFF_b),    s_aValuesFF_b },
     9804        {  bs3CpuInstr3_vpextrb_l1_edx_xmm1_0FFh_icebp_c32,  255,         RM_REG,   T_AVX_128, 4, 32, true,  true, 2,   1, RT_ELEMENTS(s_aValuesFF_b),    s_aValuesFF_b },
    98019805
    98029806        {  bs3CpuInstr3_pextrw_EDX_MM1_000h_icebp_c32,       255,         RM_REG,   T_MMX_SSE, 4, 32, false, true, 2,   1, RT_ELEMENTS(s_aValues00_w),    s_aValues00_w },
     
    98439847        {  bs3CpuInstr3_vpextrb_FSxBX_XMM8_0FFh_icebp_c64,   X86_XCPT_DB, RM_MEM8,  T_AVX_128, 1,  8, false, true, 255, 8, RT_ELEMENTS(s_aValuesFF_b),    s_aValuesFF_b },
    98449848        {  bs3CpuInstr3_vpextrb_FSxBX_XMM8_000h_icebp_c64,   X86_XCPT_DB, RM_MEM8,  T_AVX_128, 1,  8, false, true, 255, 8, RT_ELEMENTS(s_aValues00_b),    s_aValues00_b },
     9849        {  bs3CpuInstr3_vpextrb_w1b_edx_xmm1_0FFh_icebp_c64, 255,         RM_REG,   T_AVX_128, 4, 32, false, true, 10,  1, RT_ELEMENTS(s_aValuesFF_b),    s_aValuesFF_b }, /* manually setting VEX.B=1 */
     9850        {  bs3CpuInstr3_vpextrb_l1_edx_xmm1_0FFh_icebp_c64,  255,         RM_REG,   T_AVX_128, 4, 32, true,  true, 2,   1, RT_ELEMENTS(s_aValuesFF_b),    s_aValuesFF_b },
    98459851
    98469852        {  bs3CpuInstr3_pextrw_EDX_MM1_000h_icebp_c64,       255,         RM_REG,   T_MMX_SSE, 4, 32, false, true, 2,   1, RT_ELEMENTS(s_aValues00_w),    s_aValues00_w },
     
    99169922    static BS3CPUINSTR3_TEST2_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST2_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
    99179923    unsigned const                         iTest       = BS3CPUINSTR3_TEST_MODES_INDEX(bMode);
    9918     return  bs3CpuInstr3_WorkerTestType2(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     9924    return bs3CpuInstr3_WorkerTestType2(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
    99199925                                        g_aXcptConfig5, RT_ELEMENTS(g_aXcptConfig5));
    99209926}
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