VirtualBox

Ignore:
Timestamp:
Jul 7, 2022 2:04:45 PM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
152178
Message:

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

    r95552 r95553  
    960960EMIT_INSTR_PLUS_ICEBP vmovntdqa, YMM12, FSxBX
    961961 %endif
     962
     963;
     964; [V]MOVNTDQ
     965;
     966EMIT_INSTR_PLUS_ICEBP movntdq,  FSxBX, XMM1
     967EMIT_INSTR_PLUS_ICEBP vmovntdq, FSxBX, XMM1
     968EMIT_INSTR_PLUS_ICEBP vmovntdq, FSxBX, YMM1
     969 %if TMPL_BITS == 64
     970EMIT_INSTR_PLUS_ICEBP movntdq,  FSxBX, XMM10
     971EMIT_INSTR_PLUS_ICEBP vmovntdq, FSxBX, XMM10
     972EMIT_INSTR_PLUS_ICEBP vmovntdq, FSxBX, YMM10
     973 %endif
     974
    962975
    963976;
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32

    r95552 r95553  
    50215021
    50225022/*
    5023  * MOVNTDQA - load double qword, aligned, with non-temporal hint.
     5023 * MOVNTDQA - load double qword, strictly aligned, with non-temporal hint.
    50245024 */
    50255025BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_movntdqa_XMM1_FSxBX_icebp);
     
    50525052        {  bs3CpuInstr3_vmovntdqa_YMM1_FSxBX_icebp_c64,  X86_XCPT_GP, RM_MEM, T_AVX2_256,  1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
    50535053        {  bs3CpuInstr3_vmovntdqa_YMM12_FSxBX_icebp_c64, X86_XCPT_GP, RM_MEM, T_AVX2_256, 12, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5054    };
     5055    static BS3CPUINSTR3_TEST3_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST3_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     5056    unsigned const                         iTest       = BS3CPUINSTR3_TEST_MODES_INDEX(bMode);
     5057    return bs3CpuInstr3_WorkerTestType3(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     5058                                        g_aXcptConfig1, RT_ELEMENTS(g_aXcptConfig1), 255 /*cbMaxAlign*/);
     5059}
     5060
     5061
     5062/*
     5063 * MOVNTDQ - store double qword, strictly aligned, with non-temporal hint.
     5064 */
     5065BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_movntdq_FSxBX_XMM1_icebp);
     5066extern FNBS3FAR             bs3CpuInstr3_movntdq_FSxBX_XMM10_icebp_c64;
     5067BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vmovntdq_FSxBX_XMM1_icebp);
     5068extern FNBS3FAR             bs3CpuInstr3_vmovntdq_FSxBX_XMM10_icebp_c64;
     5069BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vmovntdq_FSxBX_YMM1_icebp);
     5070extern FNBS3FAR             bs3CpuInstr3_vmovntdq_FSxBX_YMM10_icebp_c64;
     5071
     5072BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_movntdq(uint8_t bMode)
     5073{
     5074    static BS3CPUINSTR3_TEST3_T const s_aTests16[] =
     5075    {
     5076        {  bs3CpuInstr3_movntdq_FSxBX_XMM1_icebp_c16,    X86_XCPT_GP, RM_MEM, T_SSE2,    255,  1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5077        {  bs3CpuInstr3_vmovntdq_FSxBX_XMM1_icebp_c16,   X86_XCPT_GP, RM_MEM, T_AVX_128, 255,  1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5078        {  bs3CpuInstr3_vmovntdq_FSxBX_YMM1_icebp_c16,   X86_XCPT_GP, RM_MEM, T_AVX_256, 255,  1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5079    };
     5080    static BS3CPUINSTR3_TEST3_T const s_aTests32[] =
     5081    {
     5082        {  bs3CpuInstr3_movntdq_FSxBX_XMM1_icebp_c32,    X86_XCPT_GP, RM_MEM, T_SSE2,    255,  1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5083        {  bs3CpuInstr3_vmovntdq_FSxBX_XMM1_icebp_c32,   X86_XCPT_GP, RM_MEM, T_AVX_128, 255,  1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5084        {  bs3CpuInstr3_vmovntdq_FSxBX_YMM1_icebp_c32,   X86_XCPT_GP, RM_MEM, T_AVX_256, 255,  1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5085    };
     5086    static BS3CPUINSTR3_TEST3_T const s_aTests64[] =
     5087    {
     5088        {  bs3CpuInstr3_movntdq_FSxBX_XMM1_icebp_c64,    X86_XCPT_GP, RM_MEM, T_SSE2,    255,  1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5089        {  bs3CpuInstr3_movntdq_FSxBX_XMM10_icebp_c64,   X86_XCPT_GP, RM_MEM, T_SSE2,    255, 10, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5090        {  bs3CpuInstr3_vmovntdq_FSxBX_XMM1_icebp_c64,   X86_XCPT_GP, RM_MEM, T_AVX_128, 255,  1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5091        {  bs3CpuInstr3_vmovntdq_FSxBX_XMM10_icebp_c64,  X86_XCPT_GP, RM_MEM, T_AVX_128, 255, 10, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5092        {  bs3CpuInstr3_vmovntdq_FSxBX_YMM1_icebp_c64,   X86_XCPT_GP, RM_MEM, T_AVX_256, 255,  1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5093        {  bs3CpuInstr3_vmovntdq_FSxBX_YMM10_icebp_c64,  X86_XCPT_GP, RM_MEM, T_AVX_256, 255, 10, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
    50545094    };
    50555095    static BS3CPUINSTR3_TEST3_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST3_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     
    58865926#if defined(ALL_TESTS)
    58875927        { "[v]movntdqa",                                    bs3CpuInstr3_v_movntdqa, 0 },
     5928        { "[v]movntdq",                                     bs3CpuInstr3_v_movntdq, 0 },
    58885929        { "[v]movntps_movntpd",                             bs3CpuInstr3_v_movntps_movntpd, 0 },
    58895930        { "[v]movups",                                      bs3CpuInstr3_v_movups, 0 },
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