- Timestamp:
- Oct 8, 2024 10:57:34 AM (6 months ago)
- svn:sync-xref-src-repo-rev:
- 165023
- Location:
- trunk/src/VBox/ValidationKit/bootsectors
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-4-template.mac
r106184 r106234 631 631 632 632 ; 633 ;; [v]rcpps 634 ; 635 EMIT_INSTR_PLUS_ICEBP rcpps, XMM1, XMM2 636 EMIT_INSTR_PLUS_ICEBP rcpps, XMM1, FSxBX 637 EMIT_INSTR_PLUS_ICEBP_C64 rcpps, XMM8, XMM9 638 EMIT_INSTR_PLUS_ICEBP_C64 rcpps, XMM8, FSxBX 639 640 EMIT_INSTR_PLUS_ICEBP vrcpps, XMM1, XMM2 641 EMIT_INSTR_PLUS_ICEBP vrcpps, XMM1, FSxBX 642 EMIT_INSTR_PLUS_ICEBP_C64 vrcpps, XMM8, XMM9 643 EMIT_INSTR_PLUS_ICEBP_C64 vrcpps, XMM8, FSxBX 644 645 EMIT_INSTR_PLUS_ICEBP vrcpps, YMM1, YMM2 646 EMIT_INSTR_PLUS_ICEBP vrcpps, YMM1, FSxBX 647 EMIT_INSTR_PLUS_ICEBP_C64 vrcpps, YMM8, YMM9 648 EMIT_INSTR_PLUS_ICEBP_C64 vrcpps, YMM8, FSxBX 649 650 ; 651 ;; [v]rcpss 652 ; 653 EMIT_INSTR_PLUS_ICEBP rcpss, XMM1, XMM2 654 EMIT_INSTR_PLUS_ICEBP rcpss, XMM1, FSxBX 655 656 EMIT_INSTR_PLUS_ICEBP vrcpss, XMM1, XMM2, XMM3 657 EMIT_INSTR_PLUS_ICEBP vrcpss, XMM1, XMM2, FSxBX 658 EMIT_INSTR_PLUS_ICEBP_C64 vrcpss, XMM13, XMM14, XMM15 659 EMIT_INSTR_PLUS_ICEBP_C64 vrcpss, XMM13, XMM14, FSxBX 660 661 ; 633 662 ;; [v]sqrtps 634 663 ; … … 666 695 EMIT_INSTR_PLUS_ICEBP_C64 vsqrtpd, YMM8, FSxBX 667 696 668 ;669 ;; [v]rcpps670 ;671 EMIT_INSTR_PLUS_ICEBP rcpps, XMM1, XMM2672 EMIT_INSTR_PLUS_ICEBP rcpps, XMM1, FSxBX673 EMIT_INSTR_PLUS_ICEBP_C64 rcpps, XMM8, XMM9674 EMIT_INSTR_PLUS_ICEBP_C64 rcpps, XMM8, FSxBX675 676 EMIT_INSTR_PLUS_ICEBP vrcpps, XMM1, XMM2677 EMIT_INSTR_PLUS_ICEBP vrcpps, XMM1, FSxBX678 EMIT_INSTR_PLUS_ICEBP_C64 vrcpps, XMM8, XMM9679 EMIT_INSTR_PLUS_ICEBP_C64 vrcpps, XMM8, FSxBX680 681 EMIT_INSTR_PLUS_ICEBP vrcpps, YMM1, YMM2682 EMIT_INSTR_PLUS_ICEBP vrcpps, YMM1, FSxBX683 EMIT_INSTR_PLUS_ICEBP_C64 vrcpps, YMM8, YMM9684 EMIT_INSTR_PLUS_ICEBP_C64 vrcpps, YMM8, FSxBX685 686 697 %endif ; BS3_INSTANTIATING_CMN 687 698 -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-4.c32
r106233 r106234 688 688 { 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, X86_XCPT_GP, X86_XCPT_DB }, /* #10 */ 689 689 { 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, X86_XCPT_GP, X86_XCPT_DB }, /* #11 */ 690 { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, X86_XCPT_DB, X86_XCPT_DB }, /* #12 */ 691 /* AMD only: */ 692 { 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, X86_XCPT_DB, X86_XCPT_GP }, /* #13 */ 693 { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, X86_XCPT_AC, X86_XCPT_GP }, /* #14 */ 694 }; 695 696 /** Exceptions type 5 (<16 byte memory arguments and not floating-point exceptions). */ 697 static const BS3CPUINSTR4_CONFIG_T g_aXcptConfig5[] = 698 { 699 /* 700 * X87 SSE SSE SSE AVX SSE AVX AVX SSE AVX AMD/SSE <-- applies to 701 * +AVX +AVX +AMD/SSE +AMD/SSE 702 * CR0 CR0 CR0 CR4 CR4 CR4 XCR0 XCR0 MXCSR 703 * MP, EM, TS, OSFXSR, OSXSAVE, OSXMMEXCPT SSE, AVX, fAligned, AC/AM, MM, bXcptSse, bXcptAvx */ 704 { 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, X86_XCPT_DB, X86_XCPT_DB }, /* #0 */ 705 { 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, X86_XCPT_DB, X86_XCPT_DB }, /* #1 */ 706 { 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, X86_XCPT_DB, X86_XCPT_DB }, /* #2 */ 707 { 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, X86_XCPT_UD, X86_XCPT_DB }, /* #3 */ 708 { 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, X86_XCPT_NM, X86_XCPT_NM }, /* #4 */ 709 { 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, X86_XCPT_UD, X86_XCPT_NM }, /* #5 */ 710 { 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, X86_XCPT_UD, X86_XCPT_DB }, /* #6 */ 711 { 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, X86_XCPT_DB, X86_XCPT_UD }, /* #7 */ 712 { 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, X86_XCPT_DB, X86_XCPT_UD }, /* #8 */ 713 { 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, X86_XCPT_DB, X86_XCPT_UD }, /* #9 */ 714 /* Memory misalignment and alignment checks: */ 715 { 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, X86_XCPT_DB, X86_XCPT_DB }, /* #10 */ 716 { 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, X86_XCPT_AC, X86_XCPT_AC }, /* #11 */ 690 717 { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, X86_XCPT_DB, X86_XCPT_DB }, /* #12 */ 691 718 /* AMD only: */ … … 13227 13254 13228 13255 /* 13256 * [V]RCPSS. 13257 */ 13258 BS3_DECL_FAR(uint8_t) bs3CpuInstr4_v_rcpss(uint8_t bMode) 13259 { 13260 static BS3CPUINSTR4_TEST1_VALUES_SS_T const s_aValues[] = 13261 { 13262 /* 13263 * Zero. 13264 */ 13265 /* 0*/{ { /*src1 */ { FP32_0(0), FP32_RAND_x7_V7 } }, 13266 { /*src2 */ { FP32_0(0), FP32_RAND_x7_V2 } }, 13267 { /* => */ { FP32_INF(0), FP32_RAND_x7_V2 } }, 13268 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 13269 /*128:out */ X86_MXCSR_XCPT_MASK, 13270 /*256:out */ -1, 13271 /*xcpt? */ false, false }, 13272 { { /*src1 */ { FP32_0(1), FP32_RAND_x7_V0 } }, 13273 { /*src2 */ { FP32_0(1), FP32_RAND_x7_V1 } }, 13274 { /* => */ { FP32_INF(1), FP32_RAND_x7_V1 } }, 13275 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 13276 /*128:out */ X86_MXCSR_XCPT_MASK, 13277 /*256:out */ -1, 13278 /*xcpt? */ false, false }, 13279 { { /*src1 */ { FP32_0(1), FP32_RAND_x7_V2 } }, 13280 { /*src2 */ { FP32_0(1), FP32_RAND_x7_V1 } }, 13281 { /* => */ { FP32_INF(1), FP32_RAND_x7_V1 } }, 13282 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO, 13283 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO, 13284 /*256:out */ -1, 13285 /*xcpt? */ false, false }, 13286 { { /*src1 */ { FP32_0(1), FP32_RAND_x7_V0 } }, 13287 { /*src2 */ { FP32_0(1), FP32_RAND_x7_V3 } }, 13288 { /* => */ { FP32_INF(1), FP32_RAND_x7_V3 } }, 13289 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_UP, 13290 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_UP, 13291 /*256:out */ -1, 13292 /*xcpt? */ false, false }, 13293 { { /*src1 */ { FP32_0(1), FP32_RAND_x7_V0 } }, 13294 { /*src2 */ { FP32_0(1), FP32_RAND_x7_V3 } }, 13295 { /* => */ { FP32_INF(1), FP32_RAND_x7_V3 } }, 13296 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN, 13297 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN, 13298 /*256:out */ -1, 13299 /*xcpt? */ false, false }, 13300 { { /*src1 */ { FP32_0(0), FP32_RAND_x7_V0 } }, 13301 { /*src2 */ { FP32_0(0), FP32_RAND_x7_V3 } }, 13302 { /* => */ { FP32_INF(0), FP32_RAND_x7_V3 } }, 13303 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ, 13304 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ, 13305 /*256:out */ -1, 13306 /*xcpt? */ false, false }, 13307 }; 13308 13309 #define PASS_s_aValues RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues 13310 static BS3CPUINSTR4_TEST1_T const s_aTests16[] = 13311 { 13312 { bs3CpuInstr4_rcpss_XMM1_XMM2_icebp_c16, 255, RM_REG, T_SSE, 1, 1, 2, PASS_s_aValues }, 13313 { bs3CpuInstr4_rcpss_XMM1_FSxBX_icebp_c16, 255, RM_MEM, T_SSE, 1, 1, 255, PASS_s_aValues }, 13314 13315 { bs3CpuInstr4_vrcpss_XMM1_XMM2_XMM3_icebp_c16, X86_XCPT_AC, RM_REG, T_AVX_128, 1, 2, 3, PASS_s_aValues }, 13316 { bs3CpuInstr4_vrcpss_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_AC, RM_MEM, T_AVX_128, 1, 2, 255, PASS_s_aValues }, 13317 }; 13318 static BS3CPUINSTR4_TEST1_T const s_aTests32[] = 13319 { 13320 { bs3CpuInstr4_rcpss_XMM1_XMM2_icebp_c32, 255, RM_REG, T_SSE, 1, 1, 2, PASS_s_aValues }, 13321 { bs3CpuInstr4_rcpss_XMM1_FSxBX_icebp_c32, 255, RM_MEM, T_SSE, 1, 1, 255, PASS_s_aValues }, 13322 13323 { bs3CpuInstr4_vrcpss_XMM1_XMM2_XMM3_icebp_c32, X86_XCPT_AC, RM_REG, T_AVX_128, 1, 2, 3, PASS_s_aValues }, 13324 { bs3CpuInstr4_vrcpss_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_AC, RM_MEM, T_AVX_128, 1, 2, 255, PASS_s_aValues }, 13325 }; 13326 static BS3CPUINSTR4_TEST1_T const s_aTests64[] = 13327 { 13328 { bs3CpuInstr4_rcpss_XMM1_XMM2_icebp_c64, 255, RM_REG, T_SSE, 1, 1, 2, PASS_s_aValues }, 13329 { bs3CpuInstr4_rcpss_XMM1_FSxBX_icebp_c64, 255, RM_MEM, T_SSE, 1, 1, 255, PASS_s_aValues }, 13330 13331 { bs3CpuInstr4_vrcpss_XMM1_XMM2_XMM3_icebp_c64, X86_XCPT_AC, RM_REG, T_AVX_128, 1, 2, 3, PASS_s_aValues }, 13332 { bs3CpuInstr4_vrcpss_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM, T_AVX_128, 1, 2, 255, PASS_s_aValues }, 13333 13334 { bs3CpuInstr4_vrcpss_XMM13_XMM14_XMM15_icebp_c64, X86_XCPT_AC, RM_REG, T_AVX_128, 13, 14, 15, PASS_s_aValues }, 13335 { bs3CpuInstr4_vrcpss_XMM13_XMM14_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM, T_AVX_128, 13, 14, 255, PASS_s_aValues }, 13336 }; 13337 #undef PASS_s_aValues 13338 13339 static BS3CPUINSTR4_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR4_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64); 13340 unsigned const iTest = BS3CPUINSTR4_TEST_MODES_INDEX(bMode); 13341 return bs3CpuInstr4_WorkerTestType1A(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests, 13342 g_aXcptConfig5, RT_ELEMENTS(g_aXcptConfig5)); 13343 } 13344 13345 13346 /* 13229 13347 * [V]SQRTPS. 13230 13348 */ … … 13828 13946 { "[v]minsd", bs3CpuInstr4_v_minsd, 0 }, 13829 13947 { "[v]rcpps", bs3CpuInstr4_v_rcpps, 0 }, 13948 { "[v]rcpss", bs3CpuInstr4_v_rcpss, 0 }, 13830 13949 { "[v]sqrtps", bs3CpuInstr4_v_sqrtps, 0 }, 13831 13950 { "[v]sqrtpd", bs3CpuInstr4_v_sqrtpd, 0 },
Note:
See TracChangeset
for help on using the changeset viewer.