VirtualBox

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

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

    r95550 r95552  
    13251325 %endif
    13261326
     1327;
     1328; [V]MOVDQA - not testing the 2nd register variant.
     1329;
     1330EMIT_INSTR_PLUS_ICEBP movdqa,  XMM1, XMM2
     1331EMIT_INSTR_PLUS_ICEBP_BYTES 07f_movdqa_XMM1_XMM2, 066h, 00fh, 07fh, X86_MODRM_MAKE(3, 2, 1)
     1332EMIT_INSTR_PLUS_ICEBP movdqa,  XMM1, FSxBX
     1333EMIT_INSTR_PLUS_ICEBP movdqa,  FSxBX, XMM1
     1334EMIT_INSTR_PLUS_ICEBP vmovdqa, XMM1, XMM2
     1335EMIT_INSTR_PLUS_ICEBP_BYTES 07f_vmovdqa_XMM1_XMM2, 0c5h, 0f9h, 07fh, X86_MODRM_MAKE(3, 2, 1)
     1336EMIT_INSTR_PLUS_ICEBP vmovdqa, XMM1, FSxBX
     1337EMIT_INSTR_PLUS_ICEBP vmovdqa, FSxBX, XMM1
     1338EMIT_INSTR_PLUS_ICEBP vmovdqa, YMM1, YMM2
     1339EMIT_INSTR_PLUS_ICEBP_BYTES 07f_vmovdqa_YMM1_YMM2, 0c5h, 0fdh, 07fh, X86_MODRM_MAKE(3, 2, 1)
     1340EMIT_INSTR_PLUS_ICEBP vmovdqa, YMM1, FSxBX
     1341EMIT_INSTR_PLUS_ICEBP vmovdqa, FSxBX, YMM1
     1342 %if TMPL_BITS == 64
     1343EMIT_INSTR_PLUS_ICEBP movdqa,  XMM8,  XMM12      ; 66 45 0F 6F C4
     1344EMIT_INSTR_PLUS_ICEBP_BYTES 07f_movdqa_XMM8_XMM12, 066h, 045h, 00fh, 07fh, X86_MODRM_MAKE(3, 4, 0)
     1345EMIT_INSTR_PLUS_ICEBP movdqa,  XMM10, FSxBX
     1346EMIT_INSTR_PLUS_ICEBP movdqa,  FSxBX, XMM10
     1347EMIT_INSTR_PLUS_ICEBP vmovdqa, XMM8,  XMM14       ; C4     C1   79    6F   FE
     1348EMIT_INSTR_PLUS_ICEBP_BYTES 07f_vmovdqa_XMM8_XMM14, 0c4h, 041h, 79h, 07fh, X86_MODRM_MAKE(3, 6, 0)
     1349EMIT_INSTR_PLUS_ICEBP vmovdqa, XMM11, FSxBX
     1350EMIT_INSTR_PLUS_ICEBP vmovdqa, FSxBX, XMM11
     1351EMIT_INSTR_PLUS_ICEBP vmovdqa, YMM12, YMM8
     1352EMIT_INSTR_PLUS_ICEBP_BYTES 07f_vmovdqa_YMM12_YMM8, 0c4h, 041h, 7dh, 07fh, X86_MODRM_MAKE(3, 0, 4)
     1353EMIT_INSTR_PLUS_ICEBP vmovdqa, YMM12, FSxBX
     1354EMIT_INSTR_PLUS_ICEBP vmovdqa, FSxBX, YMM12
     1355 %endif
     1356
    13271357
    13281358%endif ; BS3_INSTANTIATING_CMN
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32

    r95550 r95552  
    57245724}
    57255725
     5726
     5727/*
     5728 * [V]MOVDQA - move aligned packed qwords.
     5729 */
     5730BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_movdqa_XMM1_XMM2_icebp);
     5731BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_07f_movdqa_XMM1_XMM2_icebp);
     5732BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_movdqa_XMM1_FSxBX_icebp);
     5733extern FNBS3FAR             bs3CpuInstr3_movdqa_XMM8_XMM12_icebp_c64;
     5734extern FNBS3FAR             bs3CpuInstr3_07f_movdqa_XMM8_XMM12_icebp_c64;
     5735extern FNBS3FAR             bs3CpuInstr3_movdqa_XMM10_FSxBX_icebp_c64;
     5736BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vmovdqa_XMM1_XMM2_icebp);
     5737BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_07f_vmovdqa_XMM1_XMM2_icebp);
     5738BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vmovdqa_XMM1_FSxBX_icebp);
     5739extern FNBS3FAR             bs3CpuInstr3_vmovdqa_XMM8_XMM14_icebp_c64;
     5740extern FNBS3FAR             bs3CpuInstr3_07f_vmovdqa_XMM8_XMM14_icebp_c64;
     5741extern FNBS3FAR             bs3CpuInstr3_vmovdqa_XMM11_FSxBX_icebp_c64;
     5742BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vmovdqa_YMM1_YMM2_icebp);
     5743BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_07f_vmovdqa_YMM1_YMM2_icebp);
     5744BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vmovdqa_YMM1_FSxBX_icebp);
     5745extern FNBS3FAR             bs3CpuInstr3_vmovdqa_YMM12_YMM8_icebp_c64;
     5746extern FNBS3FAR             bs3CpuInstr3_07f_vmovdqa_YMM12_YMM8_icebp_c64;
     5747extern FNBS3FAR             bs3CpuInstr3_vmovdqa_YMM12_FSxBX_icebp_c64;
     5748
     5749BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_movdqa_FSxBX_XMM1_icebp);
     5750extern FNBS3FAR             bs3CpuInstr3_movdqa_FSxBX_XMM10_icebp_c64;
     5751BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vmovdqa_FSxBX_XMM1_icebp);
     5752extern FNBS3FAR             bs3CpuInstr3_vmovdqa_FSxBX_XMM11_icebp_c64;
     5753BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vmovdqa_FSxBX_YMM1_icebp);
     5754extern FNBS3FAR             bs3CpuInstr3_vmovdqa_FSxBX_YMM12_icebp_c64;
     5755
     5756BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_movdqa(uint8_t bMode)
     5757{
     5758    static BS3CPUINSTR3_TEST3_T const s_aTests16[] =
     5759    {
     5760        {  bs3CpuInstr3_movdqa_XMM1_XMM2_icebp_c16,         255,         RM_REG, T_SSE,       1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5761        {  bs3CpuInstr3_07f_movdqa_XMM1_XMM2_icebp_c16,     255,         RM_REG, T_SSE,       1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5762        {  bs3CpuInstr3_movdqa_XMM1_FSxBX_icebp_c16,        255,         RM_MEM, T_SSE,       1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5763        {  bs3CpuInstr3_movdqa_FSxBX_XMM1_icebp_c16,        255,         RM_MEM, T_SSE,       255, 1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5764
     5765        {  bs3CpuInstr3_vmovdqa_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_AVX_128,   1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5766        {  bs3CpuInstr3_07f_vmovdqa_XMM1_XMM2_icebp_c16,    255,         RM_REG, T_AVX_128,   1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5767        {  bs3CpuInstr3_vmovdqa_XMM1_FSxBX_icebp_c16,       X86_XCPT_AC, RM_MEM, T_AVX_128,   1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5768        {  bs3CpuInstr3_vmovdqa_FSxBX_XMM1_icebp_c16,       X86_XCPT_AC, RM_MEM, T_AVX_128,   255, 1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5769
     5770        {  bs3CpuInstr3_vmovdqa_YMM1_YMM2_icebp_c16,        255,         RM_REG, T_AVX_256,   1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5771        {  bs3CpuInstr3_07f_vmovdqa_YMM1_YMM2_icebp_c16,    255,         RM_REG, T_AVX_256,   1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5772        {  bs3CpuInstr3_vmovdqa_YMM1_FSxBX_icebp_c16,       X86_XCPT_AC, RM_MEM, T_AVX_256,   1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5773        {  bs3CpuInstr3_vmovdqa_FSxBX_YMM1_icebp_c16,       X86_XCPT_AC, RM_MEM, T_AVX_256,   255, 1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5774    };
     5775    static BS3CPUINSTR3_TEST3_T const s_aTests32[] =
     5776    {
     5777        {  bs3CpuInstr3_movdqa_XMM1_XMM2_icebp_c32,         255,         RM_REG, T_SSE,       1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5778        {  bs3CpuInstr3_07f_movdqa_XMM1_XMM2_icebp_c32,     255,         RM_REG, T_SSE,       1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5779        {  bs3CpuInstr3_movdqa_XMM1_FSxBX_icebp_c32,        255,         RM_MEM, T_SSE,       1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5780        {  bs3CpuInstr3_movdqa_FSxBX_XMM1_icebp_c32,        255,         RM_MEM, T_SSE,       255, 1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5781
     5782        {  bs3CpuInstr3_vmovdqa_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_AVX_128,   1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5783        {  bs3CpuInstr3_07f_vmovdqa_XMM1_XMM2_icebp_c32,    255,         RM_REG, T_AVX_128,   1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5784        {  bs3CpuInstr3_vmovdqa_XMM1_FSxBX_icebp_c32,       X86_XCPT_AC, RM_MEM, T_AVX_128,   1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5785        {  bs3CpuInstr3_vmovdqa_FSxBX_XMM1_icebp_c32,       X86_XCPT_AC, RM_MEM, T_AVX_128,   255, 1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5786
     5787        {  bs3CpuInstr3_vmovdqa_YMM1_YMM2_icebp_c32,        255,         RM_REG, T_AVX_256,   1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5788        {  bs3CpuInstr3_07f_vmovdqa_YMM1_YMM2_icebp_c32,    255,         RM_REG, T_AVX_256,   1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5789        {  bs3CpuInstr3_vmovdqa_YMM1_FSxBX_icebp_c32,       X86_XCPT_AC, RM_MEM, T_AVX_256,   1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5790        {  bs3CpuInstr3_vmovdqa_FSxBX_YMM1_icebp_c32,       X86_XCPT_AC, RM_MEM, T_AVX_256,   255, 1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5791    };
     5792    static BS3CPUINSTR3_TEST3_T const s_aTests64[] =
     5793    {
     5794        {  bs3CpuInstr3_movdqa_XMM1_XMM2_icebp_c64,         255,         RM_REG, T_SSE,       1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5795        {  bs3CpuInstr3_07f_movdqa_XMM1_XMM2_icebp_c64,     255,         RM_REG, T_SSE,       1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5796        {  bs3CpuInstr3_movdqa_XMM8_XMM12_icebp_c64,        255,         RM_REG, T_SSE,       8,  12, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5797        {  bs3CpuInstr3_07f_movdqa_XMM8_XMM12_icebp_c64,    255,         RM_REG, T_SSE,       8,  12, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5798        {  bs3CpuInstr3_movdqa_XMM1_FSxBX_icebp_c64,        255,         RM_MEM, T_SSE,       1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5799        {  bs3CpuInstr3_movdqa_XMM10_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE,      10, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5800        {  bs3CpuInstr3_movdqa_FSxBX_XMM1_icebp_c64,        255,         RM_MEM, T_SSE,     255,   1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5801        {  bs3CpuInstr3_movdqa_FSxBX_XMM10_icebp_c64,       255,         RM_MEM, T_SSE,     255,  10, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5802
     5803        {  bs3CpuInstr3_vmovdqa_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_AVX_128,   1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5804        {  bs3CpuInstr3_07f_vmovdqa_XMM1_XMM2_icebp_c64,    255,         RM_REG, T_AVX_128,   1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5805        {  bs3CpuInstr3_vmovdqa_XMM8_XMM14_icebp_c64,       255,         RM_REG, T_AVX_128,   8,  14, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5806        {  bs3CpuInstr3_07f_vmovdqa_XMM8_XMM14_icebp_c64,   255,         RM_REG, T_AVX_128,   8,  14, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5807        {  bs3CpuInstr3_vmovdqa_XMM1_FSxBX_icebp_c64,       X86_XCPT_AC, RM_MEM, T_AVX_128,   1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5808        {  bs3CpuInstr3_vmovdqa_XMM11_FSxBX_icebp_c64,      X86_XCPT_AC, RM_MEM, T_AVX_128,  11, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5809        {  bs3CpuInstr3_vmovdqa_FSxBX_XMM1_icebp_c64,       X86_XCPT_AC, RM_MEM, T_AVX_128, 255,   1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5810        {  bs3CpuInstr3_vmovdqa_FSxBX_XMM11_icebp_c64,      X86_XCPT_AC, RM_MEM, T_AVX_128, 255,  11, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5811
     5812        {  bs3CpuInstr3_vmovdqa_YMM1_YMM2_icebp_c64,        255,         RM_REG, T_AVX_256,   1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5813        {  bs3CpuInstr3_07f_vmovdqa_YMM1_YMM2_icebp_c64,    255,         RM_REG, T_AVX_256,   1,   2, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5814        {  bs3CpuInstr3_vmovdqa_YMM12_YMM8_icebp_c64,       255,         RM_REG, T_AVX_256,  12,   8, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5815        {  bs3CpuInstr3_07f_vmovdqa_YMM12_YMM8_icebp_c64,  255,         RM_REG, T_AVX_256,  12,   8, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5816        {  bs3CpuInstr3_vmovdqa_YMM1_FSxBX_icebp_c64,       X86_XCPT_AC, RM_MEM, T_AVX_256,   1, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5817        {  bs3CpuInstr3_vmovdqa_YMM12_FSxBX_icebp_c64,      X86_XCPT_AC, RM_MEM, T_AVX_256,  12, 255, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5818        {  bs3CpuInstr3_vmovdqa_FSxBX_YMM1_icebp_c64,       X86_XCPT_AC, RM_MEM, T_AVX_256, 255,   1, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5819        {  bs3CpuInstr3_vmovdqa_FSxBX_YMM12_icebp_c64,      X86_XCPT_AC, RM_MEM, T_AVX_256, 255,  12, RT_ELEMENTS(g_aMoveValues3), g_aMoveValues3 },
     5820    };
     5821    static BS3CPUINSTR3_TEST3_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST3_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     5822    unsigned const                         iTest       = BS3CPUINSTR3_TEST_MODES_INDEX(bMode);
     5823    return bs3CpuInstr3_WorkerTestType3(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     5824                                        g_aXcptConfig1, RT_ELEMENTS(g_aXcptConfig1), 255 /*cbMaxAlign*/);
     5825}
    57265826
    57275827
     
    58005900        { "[v]movd_movq",                                   bs3CpuInstr3_v_movd_movq, 0 },
    58015901        { "[v]movdqu",                                      bs3CpuInstr3_v_movdqu, 0 },
     5902        { "[v]movdqa",                                      bs3CpuInstr3_v_movdqa, 0 },
    58025903#endif
    58035904    };
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