VirtualBox

Changeset 96436 in vbox


Ignore:
Timestamp:
Aug 23, 2022 10:40:44 AM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
153266
Message:

ValidationKit/bs3-cpu-instr-3: Add simple [v]lddqu instructions testcases, ​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

    r96407 r96436  
    25732573 %endif
    25742574
     2575;
     2576; [V]LDDQU
     2577;
     2578EMIT_INSTR_PLUS_ICEBP lddqu,  XMM1, FSxBX
     2579EMIT_INSTR_PLUS_ICEBP vlddqu, XMM1, FSxBX
     2580EMIT_INSTR_PLUS_ICEBP vlddqu, YMM1, FSxBX
     2581 %if TMPL_BITS == 64
     2582EMIT_INSTR_PLUS_ICEBP lddqu,  XMM10, FSxBX
     2583EMIT_INSTR_PLUS_ICEBP vlddqu, XMM11, FSxBX
     2584EMIT_INSTR_PLUS_ICEBP vlddqu, YMM12, FSxBX
     2585 %endif
    25752586
    25762587%endif ; BS3_INSTANTIATING_CMN
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32

    r96407 r96436  
    96119611    return bs3CpuInstr3_WorkerTestType3(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
    96129612                                        g_aXcptConfig5, RT_ELEMENTS(g_aXcptConfig5), X86_EFL_STATUS_BITS);
     9613}
     9614
     9615
     9616/*
     9617 * [V]LDDQU - Load unaligned integer from memory.
     9618 */
     9619BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_lddqu_XMM1_FSxBX_icebp);
     9620extern FNBS3FAR             bs3CpuInstr3_lddqu_XMM10_FSxBX_icebp_c64;
     9621BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vlddqu_XMM1_FSxBX_icebp);
     9622extern FNBS3FAR             bs3CpuInstr3_vlddqu_XMM11_FSxBX_icebp_c64;
     9623BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vlddqu_YMM1_FSxBX_icebp);
     9624extern FNBS3FAR             bs3CpuInstr3_vlddqu_YMM12_FSxBX_icebp_c64;
     9625
     9626BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_lddqu(uint8_t bMode)
     9627{
     9628    static BS3CPUINSTR3_TEST3_T const s_aTests16[] =
     9629    {
     9630        {  bs3CpuInstr3_lddqu_XMM1_FSxBX_icebp_c16,       X86_XCPT_DB, RM_MEM, T_SSE3,      1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     9631
     9632        {  bs3CpuInstr3_vlddqu_XMM1_FSxBX_icebp_c16,      X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     9633        {  bs3CpuInstr3_vlddqu_YMM1_FSxBX_icebp_c16,      X86_XCPT_DB, RM_MEM, T_AVX_256,   1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     9634    };
     9635    static BS3CPUINSTR3_TEST3_T const s_aTests32[] =
     9636    {
     9637        {  bs3CpuInstr3_lddqu_XMM1_FSxBX_icebp_c32,       X86_XCPT_DB, RM_MEM, T_SSE3,      1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     9638
     9639        {  bs3CpuInstr3_vlddqu_XMM1_FSxBX_icebp_c32,      X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     9640
     9641        {  bs3CpuInstr3_vlddqu_YMM1_FSxBX_icebp_c32,      X86_XCPT_DB, RM_MEM, T_AVX_256,   1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     9642    };
     9643    static BS3CPUINSTR3_TEST3_T const s_aTests64[] =
     9644    {
     9645        {  bs3CpuInstr3_lddqu_XMM1_FSxBX_icebp_c64,       X86_XCPT_DB, RM_MEM, T_SSE3,      1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     9646        {  bs3CpuInstr3_lddqu_XMM10_FSxBX_icebp_c64,      X86_XCPT_DB, RM_MEM, T_SSE3,     10, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     9647
     9648        {  bs3CpuInstr3_vlddqu_XMM1_FSxBX_icebp_c64,      X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     9649        {  bs3CpuInstr3_vlddqu_XMM11_FSxBX_icebp_c64,     X86_XCPT_DB, RM_MEM, T_AVX_128,  11, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     9650
     9651        {  bs3CpuInstr3_vlddqu_YMM1_FSxBX_icebp_c64,      X86_XCPT_DB, RM_MEM, T_AVX_256,   1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     9652        {  bs3CpuInstr3_vlddqu_YMM12_FSxBX_icebp_c64,     X86_XCPT_DB, RM_MEM, T_AVX_256,  12, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     9653    };
     9654    static BS3CPUINSTR3_TEST3_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST3_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     9655    unsigned const                         iTest       = BS3CPUINSTR3_TEST_MODES_INDEX(bMode);
     9656    return bs3CpuInstr3_WorkerTestType3(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     9657                                        g_aXcptConfig4Unaligned, RT_ELEMENTS(g_aXcptConfig4Unaligned), 0 /*cbMaxAlign*/);
    96139658}
    96149659
     
    1007010115                                                            bs3CpuInstr3_v_pmovzxbw_pmovzxbd_pmovzxbq_pmovzxwd_pmovzxwq_pmovzxdq, 0 },
    1007110116#endif
    10072 #if define(ALL_TESTS)
     10117#if defined(ALL_TESTS)
    1007310118        { "[v]shufps",                                      bs3CpuInstr3_v_shufps, 0 },
    1007410119        { "[v]shufpd",                                      bs3CpuInstr3_v_shufpd, 0 },
     10120#endif
     10121#if defined(ALL_TESTS)
     10122        { "[v]lddqu",                                       bs3CpuInstr3_v_lddqu, 0 },
    1007510123#endif
    1007610124    };
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