Changeset 103697 in vbox for trunk/src/VBox/ValidationKit
- Timestamp:
- Mar 6, 2024 7:17:34 AM (12 months ago)
- svn:sync-xref-src-repo-rev:
- 162064
- Location:
- trunk/src/VBox/ValidationKit/bootsectors
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3-template.mac
r103695 r103697 2655 2655 EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, YMM8, FSxBX, 091h 2656 2656 2657 ; 2658 ; [V]PMADDUBSW 2659 ; 2660 EMIT_INSTR_PLUS_ICEBP_MMX pmaddwd 2661 EMIT_INSTR_PLUS_ICEBP_XMM pmaddwd 2662 EMIT_INSTR_PLUS_ICEBP_XMM_123 vpmaddwd 2663 EMIT_INSTR_PLUS_ICEBP_YMM_123 vpmaddwd 2664 EMIT_INSTR_PLUS_ICEBP_XMM_89 pmaddwd 2665 EMIT_INSTR_PLUS_ICEBP_XMM_890 vpmaddwd 2666 EMIT_INSTR_PLUS_ICEBP_YMM_890 vpmaddwd 2667 2657 2668 %endif ; BS3_INSTANTIATING_CMN 2658 2669 -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32
r103694 r103697 12527 12527 12528 12528 12529 12529 /* 12530 * [V]PMADDWD - Multiply and add packed signed word integers. 12531 */ 12532 BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_pmaddwd(uint8_t bMode) 12533 { 12534 static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues64W[] = 12535 { 12536 { /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0), 12537 /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0), 12538 /* => */ RTUINT256_INIT_C(0, 0, 0, 0) }, 12539 { /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8), 12540 /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788), 12541 /* => */ RTUINT256_INIT_C( 1, 2, 3, 0x3c0b6394364ffde4) }, 12542 { /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb), 12543 /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd), 12544 /* => */ RTUINT256_INIT_C( 5, 6, 7, 0xebcf52b41ad4c573) }, 12545 }; 12546 static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues128W[] = 12547 { 12548 { /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0), 12549 /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0), 12550 /* => */ RTUINT256_INIT_C(0, 0, 0, 0) }, 12551 { /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8), 12552 /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788), 12553 /* => */ RTUINT256_INIT_C( 9, 10, 0x26a0ce5421e769a4, 0x3c0b6394364ffde4) }, 12554 { /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb), 12555 /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd), 12556 /* => */ RTUINT256_INIT_C( 13, 14, 0x1f5960b8c391d7d2, 0xebcf52b41ad4c573) }, 12557 }; 12558 static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues256W[] = 12559 { 12560 { /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0), 12561 /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0), 12562 /* => */ RTUINT256_INIT_C(0, 0, 0, 0) }, 12563 { /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8), 12564 /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788), 12565 /* => */ RTUINT256_INIT_C(0x07e3afd4052e4d24, 0x153e3d141186d964, 0x26a0ce5421e769a4, 0x3c0b6394364ffde4) }, 12566 { /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c880008000, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb), 12567 /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec80008000, 0x8800e95bbf9962c3, 0x43d3cda0238499fd), 12568 /* => */ RTUINT256_INIT_C(0x0b692cfd1ae06638, 0xf3dcd01080000000, 0x1f5960b8c391d7d2, 0xebcf52b41ad4c573) }, 12569 }; 12570 12571 static BS3CPUINSTR3_TEST1_T const s_aTests16[] = 12572 { 12573 { bs3CpuInstr3_pmaddwd_MM1_MM2_icebp_c16, 255, RM_REG, T_MMX, 1, 1, 2, RT_ELEMENTS(s_aValues64W), s_aValues64W }, 12574 { bs3CpuInstr3_pmaddwd_MM1_FSxBX_icebp_c16, 255, RM_MEM, T_MMX, 1, 1, 255, RT_ELEMENTS(s_aValues64W), s_aValues64W }, 12575 { bs3CpuInstr3_pmaddwd_XMM1_XMM2_icebp_c16, 255, RM_REG, T_SSE2, 1, 1, 2, RT_ELEMENTS(s_aValues128W), s_aValues128W }, 12576 { bs3CpuInstr3_pmaddwd_XMM1_FSxBX_icebp_c16, 255, RM_MEM, T_SSE2, 1, 1, 255, RT_ELEMENTS(s_aValues128W), s_aValues128W }, 12577 { bs3CpuInstr3_vpmaddwd_XMM1_XMM2_XMM3_icebp_c16, 255, RM_REG, T_AVX_128, 1, 2, 3, RT_ELEMENTS(s_aValues128W), s_aValues128W }, 12578 { bs3CpuInstr3_vpmaddwd_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128, 1, 2, 255, RT_ELEMENTS(s_aValues128W), s_aValues128W }, 12579 { bs3CpuInstr3_vpmaddwd_YMM1_YMM2_YMM3_icebp_c16, 255, RM_REG, T_AVX2_256, 1, 2, 3, RT_ELEMENTS(s_aValues256W), s_aValues256W }, 12580 { bs3CpuInstr3_vpmaddwd_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256, 1, 2, 255, RT_ELEMENTS(s_aValues256W), s_aValues256W }, 12581 }; 12582 static BS3CPUINSTR3_TEST1_T const s_aTests32[] = 12583 { 12584 { bs3CpuInstr3_pmaddwd_MM1_MM2_icebp_c32, 255, RM_REG, T_MMX, 1, 1, 2, RT_ELEMENTS(s_aValues64W), s_aValues64W }, 12585 { bs3CpuInstr3_pmaddwd_MM1_FSxBX_icebp_c32, 255, RM_MEM, T_MMX, 1, 1, 255, RT_ELEMENTS(s_aValues64W), s_aValues64W }, 12586 { bs3CpuInstr3_pmaddwd_XMM1_XMM2_icebp_c32, 255, RM_REG, T_SSE2, 1, 1, 2, RT_ELEMENTS(s_aValues128W), s_aValues128W }, 12587 { bs3CpuInstr3_pmaddwd_XMM1_FSxBX_icebp_c32, 255, RM_MEM, T_SSE2, 1, 1, 255, RT_ELEMENTS(s_aValues128W), s_aValues128W }, 12588 { bs3CpuInstr3_vpmaddwd_XMM1_XMM2_XMM3_icebp_c32, 255, RM_REG, T_AVX_128, 1, 2, 3, RT_ELEMENTS(s_aValues128W), s_aValues128W }, 12589 { bs3CpuInstr3_vpmaddwd_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128, 1, 2, 255, RT_ELEMENTS(s_aValues128W), s_aValues128W }, 12590 { bs3CpuInstr3_vpmaddwd_YMM1_YMM2_YMM3_icebp_c32, 255, RM_REG, T_AVX2_256, 1, 2, 3, RT_ELEMENTS(s_aValues256W), s_aValues256W }, 12591 { bs3CpuInstr3_vpmaddwd_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256, 1, 2, 255, RT_ELEMENTS(s_aValues256W), s_aValues256W }, 12592 }; 12593 static BS3CPUINSTR3_TEST1_T const s_aTests64[] = 12594 { 12595 { bs3CpuInstr3_pmaddwd_MM1_MM2_icebp_c64, 255, RM_REG, T_MMX, 1, 1, 2, RT_ELEMENTS(s_aValues64W), s_aValues64W }, 12596 { bs3CpuInstr3_pmaddwd_MM1_FSxBX_icebp_c64, 255, RM_MEM, T_MMX, 1, 1, 255, RT_ELEMENTS(s_aValues64W), s_aValues64W }, 12597 { bs3CpuInstr3_pmaddwd_XMM1_XMM2_icebp_c64, 255, RM_REG, T_SSE2, 1, 1, 2, RT_ELEMENTS(s_aValues128W), s_aValues128W }, 12598 { bs3CpuInstr3_pmaddwd_XMM1_FSxBX_icebp_c64, 255, RM_MEM, T_SSE2, 1, 1, 255, RT_ELEMENTS(s_aValues128W), s_aValues128W }, 12599 { bs3CpuInstr3_pmaddwd_XMM8_XMM9_icebp_c64, 255, RM_REG, T_SSE2, 8, 8, 9, RT_ELEMENTS(s_aValues128W), s_aValues128W }, 12600 { bs3CpuInstr3_pmaddwd_XMM8_FSxBX_icebp_c64, 255, RM_MEM, T_SSE2, 8, 8, 255, RT_ELEMENTS(s_aValues128W), s_aValues128W }, 12601 { bs3CpuInstr3_vpmaddwd_XMM1_XMM2_XMM3_icebp_c64, 255, RM_REG, T_AVX_128, 1, 2, 3, RT_ELEMENTS(s_aValues128W), s_aValues128W }, 12602 { bs3CpuInstr3_vpmaddwd_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, 1, 2, 255, RT_ELEMENTS(s_aValues128W), s_aValues128W }, 12603 { bs3CpuInstr3_vpmaddwd_XMM8_XMM9_XMM10_icebp_c64, 255, RM_REG, T_AVX_128, 8, 9, 10, RT_ELEMENTS(s_aValues128W), s_aValues128W }, 12604 { bs3CpuInstr3_vpmaddwd_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, 8, 9, 255, RT_ELEMENTS(s_aValues128W), s_aValues128W }, 12605 { bs3CpuInstr3_vpmaddwd_YMM1_YMM2_YMM3_icebp_c64, 255, RM_REG, T_AVX2_256, 1, 2, 3, RT_ELEMENTS(s_aValues256W), s_aValues256W }, 12606 { bs3CpuInstr3_vpmaddwd_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256, 1, 2, 255, RT_ELEMENTS(s_aValues256W), s_aValues256W }, 12607 { bs3CpuInstr3_vpmaddwd_YMM8_YMM9_YMM10_icebp_c64, 255, RM_REG, T_AVX2_256, 8, 9, 10, RT_ELEMENTS(s_aValues256W), s_aValues256W }, 12608 { bs3CpuInstr3_vpmaddwd_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256, 8, 9, 255, RT_ELEMENTS(s_aValues256W), s_aValues256W }, 12609 }; 12610 static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64); 12611 unsigned const iTest = BS3CPUINSTR3_TEST_MODES_INDEX(bMode); 12612 return bs3CpuInstr3_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests, 12613 g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4)); 12614 } 12530 12615 12531 12616 /** … … 12712 12797 { "vpermilpd", bs3CpuInstr3_vpermilpd, 0 }, 12713 12798 #endif 12799 #if defined (ALL_TESTS) 12800 { "[v]pmaddwd", bs3CpuInstr3_v_pmaddwd, 0 }, 12801 #endif 12714 12802 }; 12715 12803 Bs3TestInit("bs3-cpu-instr-3");
Note:
See TracChangeset
for help on using the changeset viewer.