Changeset 96439 in vbox
- Timestamp:
- Aug 23, 2022 1:16:46 PM (2 years ago)
- Location:
- trunk/src/VBox/ValidationKit/bootsectors
- Files:
-
- 2 edited
-
bs3-cpu-instr-3-template.mac (modified) (1 diff)
-
bs3-cpu-instr-3.c32 (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3-template.mac
r96436 r96439 2585 2585 %endif 2586 2586 2587 ; 2588 ; [V]PHMINPOSUW 2589 ; 2590 EMIT_INSTR_PLUS_ICEBP phminposuw, XMM1, XMM2 2591 EMIT_INSTR_PLUS_ICEBP phminposuw, XMM1, FSxBX 2592 EMIT_INSTR_PLUS_ICEBP vphminposuw, XMM1, XMM2 2593 EMIT_INSTR_PLUS_ICEBP vphminposuw, XMM1, FSxBX 2594 %if TMPL_BITS == 64 2595 EMIT_INSTR_PLUS_ICEBP phminposuw, XMM9, XMM8 2596 EMIT_INSTR_PLUS_ICEBP phminposuw, XMM9, FSxBX 2597 EMIT_INSTR_PLUS_ICEBP vphminposuw, XMM9, XMM8 2598 EMIT_INSTR_PLUS_ICEBP vphminposuw, XMM9, FSxBX 2599 %endif 2600 2587 2601 %endif ; BS3_INSTANTIATING_CMN 2588 2602 -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32
r96436 r96439 9656 9656 return bs3CpuInstr3_WorkerTestType3(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests, 9657 9657 g_aXcptConfig4Unaligned, RT_ELEMENTS(g_aXcptConfig4Unaligned), 0 /*cbMaxAlign*/); 9658 } 9659 9660 9661 /* 9662 * [V]PHMINPOSUW 9663 */ 9664 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_phminposuw_XMM1_XMM2_icebp); 9665 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_phminposuw_XMM1_FSxBX_icebp); 9666 extern FNBS3FAR bs3CpuInstr3_phminposuw_XMM9_XMM8_icebp_c64; 9667 extern FNBS3FAR bs3CpuInstr3_phminposuw_XMM9_FSxBX_icebp_c64; 9668 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vphminposuw_XMM1_XMM2_icebp); 9669 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vphminposuw_XMM1_FSxBX_icebp); 9670 extern FNBS3FAR bs3CpuInstr3_vphminposuw_XMM9_XMM8_icebp_c64; 9671 extern FNBS3FAR bs3CpuInstr3_vphminposuw_XMM9_FSxBX_icebp_c64; 9672 9673 BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_phminposuw(uint8_t bMode) 9674 { 9675 static BS3CPUINSTR3_TEST3_VALUES_T const s_aValues[] = 9676 { 9677 { RTUINT256_INIT_C(0, 0, 0, 0), 9678 /* => */ RTUINT256_INIT_C(0, 0, 0, 0) }, 9679 { RTUINT256_INIT_C(0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff), 9680 /* => */ RTUINT256_INIT_C(1, 2, 0x0000000000000000, 0x000000000000ffff) }, /* No 256-bit variant */ 9681 { RTUINT256_INIT_C(0x9999aaaabbbbcccc, 0xddddeeeeffff2121, 0x1111222233334444, 0x5555666677778888), 9682 /* => */ RTUINT256_INIT_C(5, 6, 0x0000000000000000, 0x0000000000071111) }, /* No 256-bit variant */ 9683 { RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb), 9684 /* => */ RTUINT256_INIT_C(9, 10, 0x0000000000000000, 0x0000000000062fa8) }, /* No 256-bit variant */ 9685 }; 9686 9687 static BS3CPUINSTR3_TEST3_T const s_aTests16[] = 9688 { 9689 { bs3CpuInstr3_phminposuw_XMM1_XMM2_icebp_c16, 255, RM_REG, T_SSE4_1, 1, 2, RT_ELEMENTS(s_aValues), s_aValues }, 9690 { bs3CpuInstr3_phminposuw_XMM1_FSxBX_icebp_c16, 255, RM_MEM, T_SSE4_1, 1, 255, RT_ELEMENTS(s_aValues), s_aValues }, 9691 { bs3CpuInstr3_vphminposuw_XMM1_XMM2_icebp_c16, 255, RM_REG, T_AVX_128, 1, 2, RT_ELEMENTS(s_aValues), s_aValues }, 9692 { bs3CpuInstr3_vphminposuw_XMM1_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128, 1, 255, RT_ELEMENTS(s_aValues), s_aValues }, 9693 }; 9694 static BS3CPUINSTR3_TEST3_T const s_aTests32[] = 9695 { 9696 { bs3CpuInstr3_phminposuw_XMM1_XMM2_icebp_c32, 255, RM_REG, T_SSE4_1, 1, 2, RT_ELEMENTS(s_aValues), s_aValues }, 9697 { bs3CpuInstr3_phminposuw_XMM1_FSxBX_icebp_c32, 255, RM_MEM, T_SSE4_1, 1, 255, RT_ELEMENTS(s_aValues), s_aValues }, 9698 { bs3CpuInstr3_vphminposuw_XMM1_XMM2_icebp_c32, 255, RM_REG, T_AVX_128, 1, 2, RT_ELEMENTS(s_aValues), s_aValues }, 9699 { bs3CpuInstr3_vphminposuw_XMM1_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128, 1, 255, RT_ELEMENTS(s_aValues), s_aValues }, 9700 }; 9701 static BS3CPUINSTR3_TEST3_T const s_aTests64[] = 9702 { 9703 { bs3CpuInstr3_phminposuw_XMM1_XMM2_icebp_c64, 255, RM_REG, T_SSE4_1, 1, 2, RT_ELEMENTS(s_aValues), s_aValues }, 9704 { bs3CpuInstr3_phminposuw_XMM1_FSxBX_icebp_c64, 255, RM_MEM, T_SSE4_1, 1, 255, RT_ELEMENTS(s_aValues), s_aValues }, 9705 { bs3CpuInstr3_phminposuw_XMM9_XMM8_icebp_c64, 255, RM_REG, T_SSE4_1, 9, 8, RT_ELEMENTS(s_aValues), s_aValues }, 9706 { bs3CpuInstr3_phminposuw_XMM9_FSxBX_icebp_c64, 255, RM_MEM, T_SSE4_1, 9, 255, RT_ELEMENTS(s_aValues), s_aValues }, 9707 { bs3CpuInstr3_vphminposuw_XMM1_XMM2_icebp_c64, 255, RM_REG, T_AVX_128, 1, 2, RT_ELEMENTS(s_aValues), s_aValues }, 9708 { bs3CpuInstr3_vphminposuw_XMM1_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, 1, 255, RT_ELEMENTS(s_aValues), s_aValues }, 9709 { bs3CpuInstr3_vphminposuw_XMM9_XMM8_icebp_c64, 255, RM_REG, T_AVX_128, 9, 8, RT_ELEMENTS(s_aValues), s_aValues }, 9710 { bs3CpuInstr3_vphminposuw_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, 9, 255, RT_ELEMENTS(s_aValues), s_aValues }, 9711 }; 9712 static BS3CPUINSTR3_TEST3_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST3_MODES_INIT(s_aTests16, s_aTests32, s_aTests64); 9713 unsigned const iTest = BS3CPUINSTR3_TEST_MODES_INDEX(bMode); 9714 return bs3CpuInstr3_WorkerTestType3(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests, 9715 g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4), X86_EFL_STATUS_BITS); 9658 9716 } 9659 9717 … … 10122 10180 { "[v]lddqu", bs3CpuInstr3_v_lddqu, 0 }, 10123 10181 #endif 10182 #if defined(ALL_TESTS) 10183 { "[v]phminposuw", bs3CpuInstr3_v_phminposuw, 0 }, 10184 #endif 10124 10185 }; 10125 10186 Bs3TestInit("bs3-cpu-instr-3");
Note:
See TracChangeset
for help on using the changeset viewer.

