Changeset 95532 in vbox for trunk/src/VBox/ValidationKit/bootsectors
- Timestamp:
- Jul 6, 2022 6:10:43 PM (3 years ago)
- svn:sync-xref-src-repo-rev:
- 152156
- Location:
- trunk/src/VBox/ValidationKit/bootsectors
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3-template.mac
r95530 r95532 1017 1017 %endif 1018 1018 1019 ; 1020 ; [V]MOVLPS - not testing the 2nd register variant. 1021 ; 1022 EMIT_INSTR_PLUS_ICEBP movlps, XMM1, FSxBX 1023 EMIT_INSTR_PLUS_ICEBP movlps, FSxBX, XMM1 1024 EMIT_INSTR_PLUS_ICEBP vmovlps, XMM1, XMM2, FSxBX 1025 EMIT_INSTR_PLUS_ICEBP vmovlps, FSxBX, XMM1 1026 %if TMPL_BITS == 64 1027 EMIT_INSTR_PLUS_ICEBP movlps, XMM8, FSxBX 1028 EMIT_INSTR_PLUS_ICEBP movlps, FSxBX, XMM11 1029 EMIT_INSTR_PLUS_ICEBP vmovlps, XMM10, XMM14, FSxBX 1030 EMIT_INSTR_PLUS_ICEBP vmovlps, FSxBX, XMM9 1031 %endif 1032 1033 1019 1034 %endif ; BS3_INSTANTIATING_CMN 1020 1035 -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32
r95530 r95532 3536 3536 g_aXcptConfig5, RT_ELEMENTS(g_aXcptConfig5)); 3537 3537 } 3538 3539 3540 /* 3541 * [V]MOVLPS - Merge a low qword (two single precision floating-point values) 3542 * from memory with the high qword from a register (SSE destination 3543 * or VEX 2nd source). 3544 * The store variant just stores the lower qword. 3545 */ 3546 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_movlps_XMM1_FSxBX_icebp); 3547 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_movlps_FSxBX_XMM1_icebp); 3548 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vmovlps_XMM1_XMM2_FSxBX_icebp); 3549 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vmovlps_FSxBX_XMM1_icebp); 3550 extern FNBS3FAR bs3CpuInstr3_movlps_XMM8_FSxBX_icebp_c64; 3551 extern FNBS3FAR bs3CpuInstr3_movlps_FSxBX_XMM11_icebp_c64; 3552 extern FNBS3FAR bs3CpuInstr3_vmovlps_XMM10_XMM14_FSxBX_icebp_c64; 3553 extern FNBS3FAR bs3CpuInstr3_vmovlps_FSxBX_XMM9_icebp_c64; 3554 3555 BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_movlps(uint8_t bMode) 3556 { 3557 static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesLd[] = 3558 { 3559 { /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0), 3560 /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0), 3561 /* => */ RTUINT256_INIT_C(0, 0, 0, 0) }, 3562 { /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8), 3563 /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788), 3564 /* => */ RTUINT256_INIT_C(0x0000000000000000, 0x0000000000000000, 0x9192939495969798, 0xc1c2c3c4c5c6c7c8) }, 3565 { /*src2*/ RTUINT256_INIT_C(0x5555666677778888, 0x1111222233334444, 0x1111222233334444, 0x81828384c5c6c7c8), 3566 /*src1*/ RTUINT256_INIT_C(0xddddeeeeffff0000, 0x9999aaaabbbbcccc, 0x9999aaaabbbbcccc, 0xddddeeeeffff0000), 3567 /* => */ RTUINT256_INIT_C(0x0000000000000000, 0x0000000000000000, 0x9999aaaabbbbcccc, 0x81828384c5c6c7c8) }, 3568 { /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb), 3569 /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd), 3570 /* => */ RTUINT256_INIT_C(0x0000000000000000, 0x0000000000000000, 0x8800e95bbf9962c3, 0x9c5ce073930996bb) }, 3571 }; 3572 static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesSt[] = 3573 { 3574 { /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0), 3575 /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0), 3576 /* => */ RTUINT256_INIT_C(0, 0, 0, 0) }, 3577 { /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8), 3578 /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788), 3579 /* => */ RTUINT256_INIT_C(0x0000000000000000, 0x0000000000000000, 0x9192939495969798, 0xc1c2c3c4c5c6c7c8) }, 3580 { /*src2*/ RTUINT256_INIT_C(0x5555666677778888, 0x1111222233334444, 0x1111222233334444, 0x81828384c5c6c7c8), 3581 /*src1*/ RTUINT256_INIT_C(0xddddeeeeffff0000, 0x9999aaaabbbbcccc, 0x9999aaaabbbbcccc, 0xddddeeeeffff0000), 3582 /* => */ RTUINT256_INIT_C(0x0000000000000000, 0x0000000000000000, 0x9999aaaabbbbcccc, 0x81828384c5c6c7c8) }, 3583 { /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb), 3584 /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd), 3585 /* => */ RTUINT256_INIT_C(0x0000000000000000, 0x0000000000000000, 0x8800e95bbf9962c3, 0x9c5ce073930996bb) }, 3586 }; 3587 3588 static BS3CPUINSTR3_TEST1_T const s_aTests16[] = 3589 { 3590 { bs3CpuInstr3_movlps_XMM1_FSxBX_icebp_c16, X86_XCPT_AC, RM_MEM64, T_SSE, 1, 1, 255, RT_ELEMENTS(s_aValuesLd), s_aValuesLd }, 3591 { bs3CpuInstr3_movlps_FSxBX_XMM1_icebp_c16, X86_XCPT_AC, RM_MEM64, T_SSE, 255, 128, 1, RT_ELEMENTS(s_aValuesSt), s_aValuesSt }, 3592 3593 { bs3CpuInstr3_vmovlps_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_AC, RM_MEM64, T_AVX_128, 1, 2, 255, RT_ELEMENTS(s_aValuesLd), s_aValuesLd }, 3594 { bs3CpuInstr3_vmovlps_FSxBX_XMM1_icebp_c16, X86_XCPT_AC, RM_MEM64, T_AVX_128, 255, 128, 1, RT_ELEMENTS(s_aValuesSt), s_aValuesSt}, 3595 }; 3596 static BS3CPUINSTR3_TEST1_T const s_aTests32[] = 3597 { 3598 { bs3CpuInstr3_movlps_XMM1_FSxBX_icebp_c32, X86_XCPT_AC, RM_MEM64, T_SSE, 1, 1, 255, RT_ELEMENTS(s_aValuesLd), s_aValuesLd }, 3599 { bs3CpuInstr3_movlps_FSxBX_XMM1_icebp_c32, X86_XCPT_AC, RM_MEM64, T_SSE, 255, 128, 1, RT_ELEMENTS(s_aValuesSt), s_aValuesSt }, 3600 3601 { bs3CpuInstr3_vmovlps_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_AC, RM_MEM64, T_AVX_128, 1, 2, 255, RT_ELEMENTS(s_aValuesLd), s_aValuesLd }, 3602 { bs3CpuInstr3_vmovlps_FSxBX_XMM1_icebp_c32, X86_XCPT_AC, RM_MEM64, T_AVX_128, 255, 128, 1, RT_ELEMENTS(s_aValuesSt), s_aValuesSt}, 3603 }; 3604 static BS3CPUINSTR3_TEST1_T const s_aTests64[] = 3605 { 3606 { bs3CpuInstr3_movlps_XMM1_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM64, T_SSE, 1, 1, 255, RT_ELEMENTS(s_aValuesLd), s_aValuesLd }, 3607 { bs3CpuInstr3_movlps_XMM8_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM64, T_SSE, 8, 8, 255, RT_ELEMENTS(s_aValuesLd), s_aValuesLd }, 3608 { bs3CpuInstr3_movlps_FSxBX_XMM1_icebp_c64, X86_XCPT_AC, RM_MEM64, T_SSE, 255, 128, 1, RT_ELEMENTS(s_aValuesSt), s_aValuesSt }, 3609 { bs3CpuInstr3_movlps_FSxBX_XMM11_icebp_c64, X86_XCPT_AC, RM_MEM64, T_SSE, 255, 128, 11, RT_ELEMENTS(s_aValuesSt), s_aValuesSt }, 3610 3611 { bs3CpuInstr3_vmovlps_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM64, T_AVX_128, 1, 2, 255, RT_ELEMENTS(s_aValuesLd), s_aValuesLd }, 3612 { bs3CpuInstr3_vmovlps_XMM10_XMM14_FSxBX_icebp_c64,X86_XCPT_AC, RM_MEM64, T_AVX_128, 10, 14, 255, RT_ELEMENTS(s_aValuesLd), s_aValuesLd }, 3613 { bs3CpuInstr3_vmovlps_FSxBX_XMM1_icebp_c64, X86_XCPT_AC, RM_MEM64, T_AVX_128, 255, 128, 1, RT_ELEMENTS(s_aValuesSt), s_aValuesSt}, 3614 { bs3CpuInstr3_vmovlps_FSxBX_XMM9_icebp_c64, X86_XCPT_AC, RM_MEM64, T_AVX_128, 255, 128, 9, RT_ELEMENTS(s_aValuesSt), s_aValuesSt}, 3615 }; 3616 static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64); 3617 unsigned const iTest = BS3CPUINSTR3_TEST_MODES_INDEX(bMode); 3618 return bs3CpuInstr3_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests, 3619 g_aXcptConfig5, RT_ELEMENTS(g_aXcptConfig5)); 3620 } 3621 3538 3622 3539 3623 … … 4718 4802 static const BS3TESTMODEBYONEENTRY g_aTests[] = 4719 4803 { 4720 #define ALL_TESTS4804 //#define ALL_TESTS 4721 4805 #if defined(ALL_TESTS) 4722 4806 { "[v]andps/[v]andpd/[v]pand", bs3CpuInstr3_v_andps_andpd_pand, 0 }, … … 4765 4849 { "[v]movss", bs3CpuInstr3_v_movss, 0 }, 4766 4850 { "[v]movsd", bs3CpuInstr3_v_movsd, 0 }, 4851 { "[v]movlps", bs3CpuInstr3_v_movlps, 0 }, 4767 4852 #endif 4768 4853 };
Note:
See TracChangeset
for help on using the changeset viewer.