VirtualBox

Ignore:
Timestamp:
Jul 7, 2022 1:05:02 PM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
152175
Message:

ValKit/bs3-cpu-instr-3: Simple [v]movdqu 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

    r95548 r95550  
    12971297 %endif
    12981298
     1299;
     1300; [V]MOVDQU - not testing the 2nd register variant.
     1301;
     1302EMIT_INSTR_PLUS_ICEBP movdqu,  XMM1, XMM2
     1303EMIT_INSTR_PLUS_ICEBP_BYTES 07f_movdqu_XMM1_XMM2, 0f3h, 00fh, 07fh, X86_MODRM_MAKE(3, 2, 1)
     1304EMIT_INSTR_PLUS_ICEBP movdqu,  XMM1, FSxBX
     1305EMIT_INSTR_PLUS_ICEBP movdqu,  FSxBX, XMM1
     1306EMIT_INSTR_PLUS_ICEBP vmovdqu, XMM1, XMM2        ; C5 FA 6F CA
     1307EMIT_INSTR_PLUS_ICEBP_BYTES 07f_vmovdqu_XMM1_XMM2, 0c5h, 0fah, 07fh, X86_MODRM_MAKE(3, 2, 1)
     1308EMIT_INSTR_PLUS_ICEBP vmovdqu, XMM1, FSxBX
     1309EMIT_INSTR_PLUS_ICEBP vmovdqu, FSxBX, XMM1
     1310EMIT_INSTR_PLUS_ICEBP vmovdqu, YMM1, YMM2        ; C5 FE 6F CA
     1311EMIT_INSTR_PLUS_ICEBP_BYTES 07f_vmovdqu_YMM1_YMM2, 0c5h, 0feh, 07fh, X86_MODRM_MAKE(3, 2, 1)
     1312EMIT_INSTR_PLUS_ICEBP vmovdqu, YMM1, FSxBX
     1313EMIT_INSTR_PLUS_ICEBP vmovdqu, FSxBX, YMM1
     1314 %if TMPL_BITS == 64
     1315EMIT_INSTR_PLUS_ICEBP movdqu,  XMM8,  XMM12      ; F3 45 0F 6F C4
     1316EMIT_INSTR_PLUS_ICEBP_BYTES 07f_movdqu_XMM8_XMM12, 0f3h, 045h, 00fh, 07fh, X86_MODRM_MAKE(3, 4, 0)
     1317EMIT_INSTR_PLUS_ICEBP movdqu,  XMM10, FSxBX
     1318EMIT_INSTR_PLUS_ICEBP movdqu,  FSxBX, XMM10
     1319EMIT_INSTR_PLUS_ICEBP vmovdqu, XMM7,  XMM14
     1320EMIT_INSTR_PLUS_ICEBP vmovdqu, XMM11, FSxBX
     1321EMIT_INSTR_PLUS_ICEBP vmovdqu, FSxBX, XMM11
     1322EMIT_INSTR_PLUS_ICEBP vmovdqu, YMM12, YMM8
     1323EMIT_INSTR_PLUS_ICEBP vmovdqu, YMM12, FSxBX
     1324EMIT_INSTR_PLUS_ICEBP vmovdqu, FSxBX, YMM12
     1325 %endif
     1326
    12991327
    13001328%endif ; BS3_INSTANTIATING_CMN
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32

    r95548 r95550  
    56255625    return bs3CpuInstr3_WorkerTestType3(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
    56265626                                        g_aXcptConfig1, RT_ELEMENTS(g_aXcptConfig1), 255 /*cbMaxAlign*/);
     5627}
     5628
     5629
     5630/*
     5631 * [V]MOVDQU - move unaligned packed qwords.
     5632 */
     5633BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_movdqu_XMM1_XMM2_icebp);
     5634BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_07f_movdqu_XMM1_XMM2_icebp);
     5635BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_movdqu_XMM1_FSxBX_icebp);
     5636extern FNBS3FAR             bs3CpuInstr3_movdqu_XMM8_XMM12_icebp_c64;
     5637extern FNBS3FAR             bs3CpuInstr3_07f_movdqu_XMM8_XMM12_icebp_c64;
     5638extern FNBS3FAR             bs3CpuInstr3_movdqu_XMM10_FSxBX_icebp_c64;
     5639BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vmovdqu_XMM1_XMM2_icebp);
     5640BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_07f_vmovdqu_XMM1_XMM2_icebp);
     5641BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vmovdqu_XMM1_FSxBX_icebp);
     5642extern FNBS3FAR             bs3CpuInstr3_vmovdqu_XMM7_XMM14_icebp_c64;
     5643extern FNBS3FAR             bs3CpuInstr3_vmovdqu_XMM11_FSxBX_icebp_c64;
     5644BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vmovdqu_YMM1_YMM2_icebp);
     5645BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_07f_vmovdqu_YMM1_YMM2_icebp);
     5646BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vmovdqu_YMM1_FSxBX_icebp);
     5647extern FNBS3FAR             bs3CpuInstr3_vmovdqu_YMM12_YMM8_icebp_c64;
     5648extern FNBS3FAR             bs3CpuInstr3_vmovdqu_YMM12_FSxBX_icebp_c64;
     5649
     5650BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_movdqu_FSxBX_XMM1_icebp);
     5651extern FNBS3FAR             bs3CpuInstr3_movdqu_FSxBX_XMM10_icebp_c64;
     5652BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vmovdqu_FSxBX_XMM1_icebp);
     5653extern FNBS3FAR             bs3CpuInstr3_vmovdqu_FSxBX_XMM11_icebp_c64;
     5654BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vmovdqu_FSxBX_YMM1_icebp);
     5655extern FNBS3FAR             bs3CpuInstr3_vmovdqu_FSxBX_YMM12_icebp_c64;
     5656
     5657BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_movdqu(uint8_t bMode)
     5658{
     5659    static BS3CPUINSTR3_TEST3_T const s_aTests16[] =
     5660    {
     5661        {  bs3CpuInstr3_movdqu_XMM1_XMM2_icebp_c16,         255,         RM_REG, T_SSE,       1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5662        {  bs3CpuInstr3_07f_movdqu_XMM1_XMM2_icebp_c16,     255,         RM_REG, T_SSE,       1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5663        {  bs3CpuInstr3_movdqu_XMM1_FSxBX_icebp_c16,        X86_XCPT_DB, RM_MEM, T_SSE,       1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5664        {  bs3CpuInstr3_movdqu_FSxBX_XMM1_icebp_c16,        X86_XCPT_DB, RM_MEM, T_SSE,       255, 1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5665
     5666        {  bs3CpuInstr3_vmovdqu_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_AVX_128,   1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5667        {  bs3CpuInstr3_07f_vmovdqu_XMM1_XMM2_icebp_c16,    255,         RM_REG, T_AVX_128,   1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5668        {  bs3CpuInstr3_vmovdqu_XMM1_FSxBX_icebp_c16,       X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5669        {  bs3CpuInstr3_vmovdqu_FSxBX_XMM1_icebp_c16,       X86_XCPT_DB, RM_MEM, T_AVX_128,   255, 1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5670
     5671        {  bs3CpuInstr3_vmovdqu_YMM1_YMM2_icebp_c16,        255,         RM_REG, T_AVX_256,   1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5672        {  bs3CpuInstr3_07f_vmovdqu_YMM1_YMM2_icebp_c16,    255,         RM_REG, T_AVX_256,   1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5673        {  bs3CpuInstr3_vmovdqu_YMM1_FSxBX_icebp_c16,       X86_XCPT_DB, RM_MEM, T_AVX_256,   1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5674        {  bs3CpuInstr3_vmovdqu_FSxBX_YMM1_icebp_c16,       X86_XCPT_DB, RM_MEM, T_AVX_256,   255, 1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5675    };
     5676    static BS3CPUINSTR3_TEST3_T const s_aTests32[] =
     5677    {
     5678        {  bs3CpuInstr3_movdqu_XMM1_XMM2_icebp_c32,         255,         RM_REG, T_SSE,       1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5679        {  bs3CpuInstr3_07f_movdqu_XMM1_XMM2_icebp_c32,     255,         RM_REG, T_SSE,       1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5680        {  bs3CpuInstr3_movdqu_XMM1_FSxBX_icebp_c32,        X86_XCPT_DB, RM_MEM, T_SSE,       1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5681        {  bs3CpuInstr3_movdqu_FSxBX_XMM1_icebp_c32,        X86_XCPT_DB, RM_MEM, T_SSE,       255, 1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5682
     5683        {  bs3CpuInstr3_vmovdqu_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_AVX_128,   1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5684        {  bs3CpuInstr3_07f_vmovdqu_XMM1_XMM2_icebp_c32,    255,         RM_REG, T_AVX_128,   1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5685        {  bs3CpuInstr3_vmovdqu_XMM1_FSxBX_icebp_c32,       X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5686        {  bs3CpuInstr3_vmovdqu_FSxBX_XMM1_icebp_c32,       X86_XCPT_DB, RM_MEM, T_AVX_128,   255, 1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5687
     5688        {  bs3CpuInstr3_vmovdqu_YMM1_YMM2_icebp_c32,        255,         RM_REG, T_AVX_256,   1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5689        {  bs3CpuInstr3_07f_vmovdqu_YMM1_YMM2_icebp_c32,    255,         RM_REG, T_AVX_256,   1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5690        {  bs3CpuInstr3_vmovdqu_YMM1_FSxBX_icebp_c32,       X86_XCPT_DB, RM_MEM, T_AVX_256,   1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5691        {  bs3CpuInstr3_vmovdqu_FSxBX_YMM1_icebp_c32,       X86_XCPT_DB, RM_MEM, T_AVX_256,   255, 1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5692    };
     5693    static BS3CPUINSTR3_TEST3_T const s_aTests64[] =
     5694    {
     5695        {  bs3CpuInstr3_movdqu_XMM1_XMM2_icebp_c64,         255,         RM_REG, T_SSE,       1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5696        {  bs3CpuInstr3_07f_movdqu_XMM1_XMM2_icebp_c64,     255,         RM_REG, T_SSE,       1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5697        {  bs3CpuInstr3_movdqu_XMM8_XMM12_icebp_c64,        255,         RM_REG, T_SSE,       8,  12, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5698        {  bs3CpuInstr3_07f_movdqu_XMM8_XMM12_icebp_c64,    255,         RM_REG, T_SSE,       8,  12, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5699        {  bs3CpuInstr3_movdqu_XMM1_FSxBX_icebp_c64,        X86_XCPT_DB, RM_MEM, T_SSE,       1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5700        {  bs3CpuInstr3_movdqu_XMM10_FSxBX_icebp_c64,       X86_XCPT_DB, RM_MEM, T_SSE,      10, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5701        {  bs3CpuInstr3_movdqu_FSxBX_XMM1_icebp_c64,        X86_XCPT_DB, RM_MEM, T_SSE,     255,   1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5702        {  bs3CpuInstr3_movdqu_FSxBX_XMM10_icebp_c64,       X86_XCPT_DB, RM_MEM, T_SSE,     255,  10, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5703
     5704        {  bs3CpuInstr3_vmovdqu_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_AVX_128,   1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5705        {  bs3CpuInstr3_07f_vmovdqu_XMM1_XMM2_icebp_c64,    255,         RM_REG, T_AVX_128,   1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5706        {  bs3CpuInstr3_vmovdqu_XMM7_XMM14_icebp_c64,       255,         RM_REG, T_AVX_128,   7,  14, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5707        {  bs3CpuInstr3_vmovdqu_XMM1_FSxBX_icebp_c64,       X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5708        {  bs3CpuInstr3_vmovdqu_XMM11_FSxBX_icebp_c64,      X86_XCPT_DB, RM_MEM, T_AVX_128,  11, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5709        {  bs3CpuInstr3_vmovdqu_FSxBX_XMM1_icebp_c64,       X86_XCPT_DB, RM_MEM, T_AVX_128, 255,   1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5710        {  bs3CpuInstr3_vmovdqu_FSxBX_XMM11_icebp_c64,      X86_XCPT_DB, RM_MEM, T_AVX_128, 255,  11, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5711
     5712        {  bs3CpuInstr3_vmovdqu_YMM1_YMM2_icebp_c64,        255,         RM_REG, T_AVX_256,   1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5713        {  bs3CpuInstr3_07f_vmovdqu_YMM1_YMM2_icebp_c64,    255,         RM_REG, T_AVX_256,   1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5714        {  bs3CpuInstr3_vmovdqu_YMM12_YMM8_icebp_c64,       255,         RM_REG, T_AVX_256,  12,   8, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5715        {  bs3CpuInstr3_vmovdqu_YMM1_FSxBX_icebp_c64,       X86_XCPT_DB, RM_MEM, T_AVX_256,   1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5716        {  bs3CpuInstr3_vmovdqu_YMM12_FSxBX_icebp_c64,      X86_XCPT_DB, RM_MEM, T_AVX_256,  12, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5717        {  bs3CpuInstr3_vmovdqu_FSxBX_YMM1_icebp_c64,       X86_XCPT_DB, RM_MEM, T_AVX_256, 255,   1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5718        {  bs3CpuInstr3_vmovdqu_FSxBX_YMM12_icebp_c64,      X86_XCPT_DB, RM_MEM, T_AVX_256, 255,  12, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5719    };
     5720    static BS3CPUINSTR3_TEST3_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST3_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     5721    unsigned const                         iTest       = BS3CPUINSTR3_TEST_MODES_INDEX(bMode);
     5722    return bs3CpuInstr3_WorkerTestType3(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     5723                                        g_aXcptConfig4Unaligned, RT_ELEMENTS(g_aXcptConfig4Unaligned), 0 /*cbMaxAlign*/);
    56275724}
    56285725
     
    57025799        { "[v]movaps_movapd",                               bs3CpuInstr3_v_movaps_movapd, 0 },
    57035800        { "[v]movd_movq",                                   bs3CpuInstr3_v_movd_movq, 0 },
     5801        { "[v]movdqu",                                      bs3CpuInstr3_v_movdqu, 0 },
    57045802#endif
    57055803    };
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