Changeset 95342 in vbox
- Timestamp:
- Jun 22, 2022 1:48:46 PM (2 years ago)
- Location:
- trunk/src/VBox/ValidationKit/bootsectors
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-2-template.c
r95340 r95342 139 139 extern FNBS3FAR BS3_CMN_NM(bs3CpuInstr2_bextr_EAX_EBX_ECX_icebp); 140 140 extern FNBS3FAR BS3_CMN_NM(bs3CpuInstr2_bextr_EAX_FSxBX_ECX_icebp); 141 142 extern FNBS3FAR BS3_CMN_NM(bs3CpuInstr2_bzhi_RAX_RBX_RCX_icebp); 143 extern FNBS3FAR BS3_CMN_NM(bs3CpuInstr2_bzhi_RAX_FSxBX_RCX_icebp); 144 extern FNBS3FAR BS3_CMN_NM(bs3CpuInstr2_bzhi_EAX_EBX_ECX_icebp); 145 extern FNBS3FAR BS3_CMN_NM(bs3CpuInstr2_bzhi_EAX_FSxBX_ECX_icebp); 146 147 extern FNBS3FAR BS3_CMN_NM(bs3CpuInstr2_pdep_RAX_RCX_RBX_icebp); 148 extern FNBS3FAR BS3_CMN_NM(bs3CpuInstr2_pdep_RAX_RCX_FSxBX_icebp); 149 extern FNBS3FAR BS3_CMN_NM(bs3CpuInstr2_pdep_EAX_ECX_EBX_icebp); 150 extern FNBS3FAR BS3_CMN_NM(bs3CpuInstr2_pdep_EAX_ECX_FSxBX_icebp); 151 152 extern FNBS3FAR BS3_CMN_NM(bs3CpuInstr2_pext_RAX_RCX_RBX_icebp); 153 extern FNBS3FAR BS3_CMN_NM(bs3CpuInstr2_pext_RAX_RCX_FSxBX_icebp); 154 extern FNBS3FAR BS3_CMN_NM(bs3CpuInstr2_pext_EAX_ECX_EBX_icebp); 155 extern FNBS3FAR BS3_CMN_NM(bs3CpuInstr2_pext_EAX_ECX_FSxBX_icebp); 141 156 142 157 extern FNBS3FAR BS3_CMN_NM(bs3CpuInstr2_shlx_RAX_RBX_RCX_icebp); … … 808 823 if ( (TrapFrame.Ctx.rflags.u16 & paTests[i].fEflCheck) 809 824 != (paTests[i].paSubTests[k].fEflOut & paTests[i].fEflCheck)) 810 Bs3TestFailedF("Expected EFLAGS = %#06RX 64, got %#06RX64(output)",825 Bs3TestFailedF("Expected EFLAGS = %#06RX32, got %#06RX32 (output)", 811 826 paTests[i].paSubTests[k].fEflOut & paTests[i].fEflCheck, 812 827 TrapFrame.Ctx.rflags.u16 & paTests[i].fEflCheck); … … 1454 1469 if ( (TrapFrame.Ctx.rflags.u16 & ANDN_CHECK_EFLAGS) 1455 1470 != ((fOkay ? s_aTests[i].fEFlags : Ctx.rflags.u16) & ANDN_CHECK_EFLAGS)) 1456 Bs3TestFailedF("Expected EFLAGS = %#06RX 64, got %#06RX64(output)",1471 Bs3TestFailedF("Expected EFLAGS = %#06RX32, got %#06RX32 (output)", 1457 1472 (fOkay ? s_aTests[i].fEFlags : Ctx.rflags.u16) & ANDN_CHECK_EFLAGS, TrapFrame.Ctx.rflags.u16 & ANDN_CHECK_EFLAGS); 1458 1473 if ( (TrapFrame.Ctx.rflags.u16 & ~(ANDN_CHECK_EFLAGS | ANDN_IGNORE_EFLAGS) & X86_EFL_STATUS_BITS) 1459 1474 != (Ctx.rflags.u16 & ~(ANDN_CHECK_EFLAGS | ANDN_IGNORE_EFLAGS) & X86_EFL_STATUS_BITS)) 1460 Bs3TestFailedF("Expected EFLAGS = %#06RX 64, got %#06RX64(immutable)",1475 Bs3TestFailedF("Expected EFLAGS = %#06RX32, got %#06RX32 (immutable)", 1461 1476 Ctx.rflags.u16 & ~(ANDN_CHECK_EFLAGS | ANDN_IGNORE_EFLAGS) & X86_EFL_STATUS_BITS, 1462 1477 TrapFrame.Ctx.rflags.u16 & ~(ANDN_CHECK_EFLAGS | ANDN_IGNORE_EFLAGS) & X86_EFL_STATUS_BITS); … … 1591 1606 if ( (TrapFrame.Ctx.rflags.u16 & fEflCheck) 1592 1607 != ((fOkay ? paTests[i].paSubTests[k].fEflOut : Ctx.rflags.u16) & fEflCheck)) 1593 Bs3TestFailedF("Expected EFLAGS = %#06RX 64, got %#06RX64(output)",1608 Bs3TestFailedF("Expected EFLAGS = %#06RX32, got %#06RX32 (output)", 1594 1609 (fOkay ? paTests[i].paSubTests[k].fEflOut : Ctx.rflags.u16) & fEflCheck, 1595 1610 TrapFrame.Ctx.rflags.u16 & fEflCheck); 1596 1611 if ( (TrapFrame.Ctx.rflags.u16 & ~(fEflCheck | fEflIgnore) & X86_EFL_STATUS_BITS) 1597 1612 != (Ctx.rflags.u16 & ~(fEflCheck | fEflIgnore) & X86_EFL_STATUS_BITS)) 1598 Bs3TestFailedF("Expected EFLAGS = %#06RX 64, got %#06RX64(immutable)",1613 Bs3TestFailedF("Expected EFLAGS = %#06RX32, got %#06RX32 (immutable)", 1599 1614 Ctx.rflags.u16 & ~(fEflCheck | fEflIgnore) & X86_EFL_STATUS_BITS, 1600 1615 TrapFrame.Ctx.rflags.u16 & ~(fEflCheck | fEflIgnore) & X86_EFL_STATUS_BITS); … … 1653 1668 return bs3CpuInstr2_Common_Gy_Ey_By(bMode, s_aTests, RT_ELEMENTS(s_aTests), X86_CPUID_STEXT_FEATURE_EBX_BMI1, 1654 1669 X86_EFL_STATUS_BITS, X86_EFL_AF | X86_EFL_SF | X86_EFL_PF); 1670 } 1671 1672 1673 BS3_DECL_FAR(uint8_t) BS3_CMN_NM(bs3CpuInstr2_bzhi)(uint8_t bMode) 1674 { 1675 /* 64 bits register width (32 bits in 32- and 16-bit modes): */ 1676 static BS3CPUINSTR2_SUBTEST_Gy_Ey_By_T const s_aSubTests64[] = 1677 { 1678 { 0, 0, /* -> */ 0, X86_EFL_ZF }, 1679 { 0, ~(RTCCUINTXREG)255, /* -> */ 0, X86_EFL_ZF }, 1680 { 0, 64, /* -> */ 0, X86_EFL_ZF | X86_EFL_CF }, 1681 { ~(RTCCUINTXREG)0, 64, /* -> */ ~(RTCCUINTXREG)0, X86_EFL_CF | X86_EFL_SF }, 1682 { ~(RTCCUINTXREG)0, 63, 1683 /* -> */ ARCH_BITS >= 64 ? ~(RTCCUINTXREG)0 >> 1 : ~(RTCCUINTXREG)0, ARCH_BITS >= 64 ? 0 : X86_EFL_CF | X86_EFL_SF }, 1684 { ~(RTCCUINTXREG)0 << 31 | UINT32_C(0x63849607), 24, /* -> */ UINT32_C(0x00849607), 0 }, 1685 { ~(RTCCUINTXREG)0 << 31 | UINT32_C(0x63849607), 33, 1686 /* -> */ ARCH_BITS >= 64 ? UINT64_C(0x1e3849607) : UINT32_C(0xe3849607), ARCH_BITS >= 64 ? 0 : X86_EFL_CF | X86_EFL_SF }, 1687 }; 1688 1689 /* 32-bit register width */ 1690 static BS3CPUINSTR2_SUBTEST_Gy_Ey_By_T const s_aSubTests32[] = 1691 { 1692 { 0, 0, /* -> */ 0, X86_EFL_ZF }, 1693 { 0, ~(RTCCUINTXREG)255, /* -> */ 0, X86_EFL_ZF }, 1694 { 0, 32, /* -> */ 0, X86_EFL_ZF | X86_EFL_CF }, 1695 { ~(RTCCUINTXREG)0, 32, /* -> */ UINT32_MAX, X86_EFL_CF | X86_EFL_SF }, 1696 { ~(RTCCUINTXREG)0, 31, /* -> */ UINT32_MAX >> 1, 0 }, 1697 { UINT32_C(0x1230fd34), 15, /* -> */ UINT32_C(0x00007d34), 0 }, 1698 }; 1699 1700 static BS3CPUINSTR2_TEST_Gy_Ey_By_T const s_aTests[] = 1701 { 1702 { BS3_CMN_NM(bs3CpuInstr2_bzhi_RAX_RBX_RCX_icebp), false, 5, RT_ELEMENTS(s_aSubTests64), s_aSubTests64 }, 1703 { BS3_CMN_NM(bs3CpuInstr2_bzhi_RAX_FSxBX_RCX_icebp), true, 6, RT_ELEMENTS(s_aSubTests64), s_aSubTests64 }, 1704 { BS3_CMN_NM(bs3CpuInstr2_bzhi_EAX_EBX_ECX_icebp), false, 5, RT_ELEMENTS(s_aSubTests32), s_aSubTests32 }, 1705 { BS3_CMN_NM(bs3CpuInstr2_bzhi_EAX_FSxBX_ECX_icebp), true, 6, RT_ELEMENTS(s_aSubTests32), s_aSubTests32 }, 1706 }; 1707 return bs3CpuInstr2_Common_Gy_Ey_By(bMode, s_aTests, RT_ELEMENTS(s_aTests), X86_CPUID_STEXT_FEATURE_EBX_BMI2, 1708 X86_EFL_STATUS_BITS, 0); 1709 } 1710 1711 1712 /** @note This is a Gy_By_Ey format instruction, so we're switching the two 1713 * source registers around when calling bs3CpuInstr2_Common_Gy_Ey_By. 1714 * Sorry for the confusion, but it saves some unnecessary code dup. */ 1715 BS3_DECL_FAR(uint8_t) BS3_CMN_NM(bs3CpuInstr2_pdep)(uint8_t bMode) 1716 { 1717 /* 64 bits register width (32 bits in 32- and 16-bit modes): */ 1718 static BS3CPUINSTR2_SUBTEST_Gy_Ey_By_T const s_aSubTests64[] = 1719 { /* Mask (RBX/[FS:xBX]), source=RCX */ 1720 { 0, 0, /* -> */ 0, 0 }, 1721 { 0, ~(RTCCUINTXREG)0, /* -> */ 0, 0 }, 1722 { ~(RTCCUINTXREG)0, 0, /* -> */ 0, 0 }, 1723 { ~(RTCCUINTXREG)0, ~(RTCCUINTXREG)0, /* -> */ ~(RTCCUINTXREG)0, 0 }, 1724 #if ARCH_BITS >= 64 1725 { UINT64_C(0x3586049947589201), ~(RTCCUINTXREG)0, /* -> */ UINT64_C(0x3586049947589201), 0 }, 1726 { UINT64_C(0x3586049947589201), ~(RTCCUINTXREG)7, /* -> */ UINT64_C(0x3586049947588000), 0 }, 1727 #endif 1728 { UINT32_C(0x47589201), ~(RTCCUINTXREG)0, /* -> */ UINT32_C(0x47589201), 0 }, 1729 { UINT32_C(0x47589201), ~(RTCCUINTXREG)7, /* -> */ UINT32_C(0x47588000), 0 }, 1730 }; 1731 1732 /* 32-bit register width */ 1733 static BS3CPUINSTR2_SUBTEST_Gy_Ey_By_T const s_aSubTests32[] = 1734 { /* Mask (EBX/[FS:xBX]), source=ECX */ 1735 { 0, 0, /* -> */ 0, 0 }, 1736 { 0, ~(RTCCUINTXREG)0, /* -> */ 0, 0 }, 1737 { ~(RTCCUINTXREG)0, 0, /* -> */ 0, 0 }, 1738 { ~(RTCCUINTXREG)0, ~(RTCCUINTXREG)0, /* -> */ UINT32_MAX, 0 }, 1739 { UINT32_C(0x01010101), ~(RTCCUINTXREG)0, /* -> */ UINT32_C(0x01010101), 0 }, 1740 { UINT32_C(0x01010101), ~(RTCCUINTXREG)3, /* -> */ UINT32_C(0x01010000), 0 }, 1741 { UINT32_C(0x47589201), ~(RTCCUINTXREG)0, /* -> */ UINT32_C(0x47589201), 0 }, 1742 }; 1743 1744 static BS3CPUINSTR2_TEST_Gy_Ey_By_T const s_aTests[] = 1745 { 1746 { BS3_CMN_NM(bs3CpuInstr2_pdep_RAX_RCX_RBX_icebp), false, 5, RT_ELEMENTS(s_aSubTests64), s_aSubTests64 }, 1747 { BS3_CMN_NM(bs3CpuInstr2_pdep_RAX_RCX_FSxBX_icebp), true, 6, RT_ELEMENTS(s_aSubTests64), s_aSubTests64 }, 1748 { BS3_CMN_NM(bs3CpuInstr2_pdep_EAX_ECX_EBX_icebp), false, 5, RT_ELEMENTS(s_aSubTests32), s_aSubTests32 }, 1749 { BS3_CMN_NM(bs3CpuInstr2_pdep_EAX_ECX_FSxBX_icebp), true, 6, RT_ELEMENTS(s_aSubTests32), s_aSubTests32 }, 1750 }; 1751 return bs3CpuInstr2_Common_Gy_Ey_By(bMode, s_aTests, RT_ELEMENTS(s_aTests), X86_CPUID_STEXT_FEATURE_EBX_BMI2, 0, 0); 1752 } 1753 1754 1755 /** @note Same note as for bs3CpuInstr2_pdep */ 1756 BS3_DECL_FAR(uint8_t) BS3_CMN_NM(bs3CpuInstr2_pext)(uint8_t bMode) 1757 { 1758 /* 64 bits register width (32 bits in 32- and 16-bit modes): */ 1759 static BS3CPUINSTR2_SUBTEST_Gy_Ey_By_T const s_aSubTests64[] = 1760 { /* Mask (RBX/[FS:xBX]), source=RCX */ 1761 { 0, 0, /* -> */ 0, 0 }, 1762 { 0, ~(RTCCUINTXREG)0, /* -> */ 0, 0 }, 1763 { ~(RTCCUINTXREG)0, 0, /* -> */ 0, 0 }, 1764 { ~(RTCCUINTXREG)0, ~(RTCCUINTXREG)0, /* -> */ ~(RTCCUINTXREG)0, 0 }, 1765 #if ARCH_BITS >= 64 1766 { UINT64_C(0x3586049947589201), ~(RTCCUINTXREG)0, /* -> */ UINT64_C(0x00000000007fffff), 0 }, 1767 { UINT64_C(0x3586049947589201), ~(RTCCUINTXREG)7, /* -> */ UINT64_C(0x00000000007ffffe), 0 }, 1768 #endif 1769 { UINT32_C(0x47589201), ~(RTCCUINTXREG)0, /* -> */ UINT32_C(0x000007ff), 0 }, 1770 { UINT32_C(0x47589201), ~(RTCCUINTXREG)7, /* -> */ UINT32_C(0x000007fe), 0 }, 1771 }; 1772 1773 /* 32-bit register width */ 1774 static BS3CPUINSTR2_SUBTEST_Gy_Ey_By_T const s_aSubTests32[] = 1775 { /* Mask (EBX/[FS:xBX]), source=ECX */ 1776 { 0, 0, /* -> */ 0, 0 }, 1777 { 0, ~(RTCCUINTXREG)0, /* -> */ 0, 0 }, 1778 { ~(RTCCUINTXREG)0, 0, /* -> */ 0, 0 }, 1779 { ~(RTCCUINTXREG)0, ~(RTCCUINTXREG)0, /* -> */ UINT32_MAX, 0 }, 1780 { UINT32_C(0x01010101), ~(RTCCUINTXREG)0, /* -> */ UINT32_C(0x0000000f), 0 }, 1781 { UINT32_C(0x01010101), ~(RTCCUINTXREG)3, /* -> */ UINT32_C(0x0000000e), 0 }, 1782 { UINT32_C(0x47589201), ~(RTCCUINTXREG)0, /* -> */ UINT32_C(0x000007ff), 0 }, 1783 { UINT32_C(0x47589201), ~(RTCCUINTXREG)7, /* -> */ UINT32_C(0x000007fe), 0 }, 1784 }; 1785 1786 static BS3CPUINSTR2_TEST_Gy_Ey_By_T const s_aTests[] = 1787 { 1788 { BS3_CMN_NM(bs3CpuInstr2_pext_RAX_RCX_RBX_icebp), false, 5, RT_ELEMENTS(s_aSubTests64), s_aSubTests64 }, 1789 { BS3_CMN_NM(bs3CpuInstr2_pext_RAX_RCX_FSxBX_icebp), true, 6, RT_ELEMENTS(s_aSubTests64), s_aSubTests64 }, 1790 { BS3_CMN_NM(bs3CpuInstr2_pext_EAX_ECX_EBX_icebp), false, 5, RT_ELEMENTS(s_aSubTests32), s_aSubTests32 }, 1791 { BS3_CMN_NM(bs3CpuInstr2_pext_EAX_ECX_FSxBX_icebp), true, 6, RT_ELEMENTS(s_aSubTests32), s_aSubTests32 }, 1792 }; 1793 return bs3CpuInstr2_Common_Gy_Ey_By(bMode, s_aTests, RT_ELEMENTS(s_aTests), X86_CPUID_STEXT_FEATURE_EBX_BMI2, 0, 0); 1655 1794 } 1656 1795 … … 1866 2005 if ( (TrapFrame.Ctx.rflags.u16 & fEflCheck) 1867 2006 != ((fOkay ? paTests[i].paSubTests[k].fEflOut : Ctx.rflags.u16) & fEflCheck)) 1868 Bs3TestFailedF("Expected EFLAGS = %#06RX 64, got %#06RX64(output)",2007 Bs3TestFailedF("Expected EFLAGS = %#06RX32, got %#06RX32 (output)", 1869 2008 (fOkay ? paTests[i].paSubTests[k].fEflOut : Ctx.rflags.u16) & fEflCheck, 1870 2009 TrapFrame.Ctx.rflags.u16 & fEflCheck); 1871 2010 if ( (TrapFrame.Ctx.rflags.u16 & ~(fEflCheck | fEflIgnore) & X86_EFL_STATUS_BITS) 1872 2011 != (Ctx.rflags.u16 & ~(fEflCheck | fEflIgnore) & X86_EFL_STATUS_BITS)) 1873 Bs3TestFailedF("Expected EFLAGS = %#06RX 64, got %#06RX64(immutable)",2012 Bs3TestFailedF("Expected EFLAGS = %#06RX32, got %#06RX32 (immutable)", 1874 2013 Ctx.rflags.u16 & ~(fEflCheck | fEflIgnore) & X86_EFL_STATUS_BITS, 1875 2014 TrapFrame.Ctx.rflags.u16 & ~(fEflCheck | fEflIgnore) & X86_EFL_STATUS_BITS); -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-2-template.mac
r95340 r95342 269 269 270 270 ; 271 ; BEXTR / SHLX / SARX / SHRX - BMI1 272 ; These are encoded in the exact same way, only the VEX.pp differs. 271 ; BEXTR / SHLX / SARX / SHRX - BMI1 (opcode f7h) 272 ; BZHI - BMI2 (opcode f5h) 273 ; 274 ; @param %1 instruction 275 ; @param %2 opcode 276 ; @param %3 prefix 273 277 ; 274 278 %ifndef SHLX_SARX_SHRX_DEFINED 275 279 %define SHLX_SARX_SHRX_DEFINED 276 %macro SHLX_SARX_SHRX 2280 %macro SHLX_SARX_SHRX 3 277 281 278 282 BS3_PROC_BEGIN_CMN bs3CpuInstr2_ %+ %1 %+ _RAX_RBX_RCX_icebp, BS3_PBC_NEAR … … 280 284 %1 rax, rbx, rcx ; SHLX=C4E2F1F7C3 281 285 %else 282 db 0C4h,0E2h,0F0h|% 2,0F7h,0C3h; 32-bit & 16-bit ignores VEX.W=1 (10980xe)286 db 0C4h,0E2h,0F0h|%3,%2,0C3h ; 32-bit & 16-bit ignores VEX.W=1 (10980xe) 283 287 %endif 284 288 .again: … … 298 302 %1 rax, [fs:rbx], rcx ; SHLX=64C4E2F1F703 299 303 %elif TMPL_BITS == 32 300 db 064h,0C4h,0E2h,0F0h|% 2,0F7h,003h304 db 064h,0C4h,0E2h,0F0h|%3,%2,003h 301 305 %else 302 db 064h,0C4h,0E2h,0F0h|% 2,0F7h,007h306 db 064h,0C4h,0E2h,0F0h|%3,%2,007h 303 307 %endif 304 308 .again: … … 317 321 %endif 318 322 319 SHLX_SARX_SHRX bextr, 0 ; none 320 SHLX_SARX_SHRX shlx, 1 ; 66h 321 SHLX_SARX_SHRX sarx, 2 ; f3h 322 SHLX_SARX_SHRX shrx, 3 ; f2h 323 SHLX_SARX_SHRX bextr, 0f7h, 0 ; none 324 SHLX_SARX_SHRX shlx, 0f7h, 1 ; 66h 325 SHLX_SARX_SHRX sarx, 0f7h, 2 ; f3h 326 SHLX_SARX_SHRX shrx, 0f7h, 3 ; f2h 327 SHLX_SARX_SHRX bzhi, 0f5h, 0 ; none 328 329 ; 330 ; PPEP / PEXT - BMI2 (opcode f5h) 331 ; 332 ; @param %1 instruction 333 ; @param %2 opcode 334 ; @param %3 prefix 335 ; 336 %ifndef PDEP_PEXT_DEFINED 337 %define PDEP_PEXT_DEFINED 338 %macro PDEP_PEXT_ 3 339 340 BS3_PROC_BEGIN_CMN bs3CpuInstr2_ %+ %1 %+ _RAX_RCX_RBX_icebp, BS3_PBC_NEAR 341 %if TMPL_BITS == 64 342 %1 rax, rcx, rbx 343 %else 344 db 0C4h,0E2h,0F0h|%3,%2,0C3h ; 32-bit & 16-bit ignores VEX.W=1 (10980xe) 345 %endif 346 .again: 347 icebp 348 jmp .again 349 BS3_PROC_END_CMN bs3CpuInstr2_ %+ %1 %+ _RAX_RCX_RBX_icebp 350 351 BS3_PROC_BEGIN_CMN bs3CpuInstr2_ %+ %1 %+ _EAX_ECX_EBX_icebp, BS3_PBC_NEAR 352 %1 eax, ecx, ebx 353 .again: 354 icebp 355 jmp .again 356 BS3_PROC_END_CMN bs3CpuInstr2_ %+ %1 %+ _EAX_ECX_EBX_icebp 357 358 BS3_PROC_BEGIN_CMN bs3CpuInstr2_ %+ %1 %+ _RAX_RCX_FSxBX_icebp, BS3_PBC_NEAR 359 %if TMPL_BITS == 64 360 %1 rax, rcx, [fs:rbx] 361 %elif TMPL_BITS == 32 362 db 064h,0C4h,0E2h,0F0h|%3,%2,003h 363 %else 364 db 064h,0C4h,0E2h,0F0h|%3,%2,007h 365 %endif 366 .again: 367 icebp 368 jmp .again 369 BS3_PROC_END_CMN bs3CpuInstr2_ %+ %1 %+ _RAX_RCX_FSxBX_icebp 370 371 BS3_PROC_BEGIN_CMN bs3CpuInstr2_ %+ %1 %+ _EAX_ECX_FSxBX_icebp, BS3_PBC_NEAR 372 %1 eax, ecx, [fs:xBX] 373 .again: 374 icebp 375 jmp .again 376 BS3_PROC_END_CMN bs3CpuInstr2_ %+ %1 %+ _EAX_ECX_FSxBX_icebp 377 378 %endmacro 379 %endif 380 381 PDEP_PEXT_ pext, 0f5h, 2 ; f3h 382 PDEP_PEXT_ pdep, 0f5h, 3 ; f2h 323 383 324 384 ; -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-2.c
r95340 r95342 46 46 BS3TESTMODE_PROTOTYPES_CMN(bs3CpuInstr2_blsmsk); 47 47 BS3TESTMODE_PROTOTYPES_CMN(bs3CpuInstr2_blsi); 48 BS3TESTMODE_PROTOTYPES_CMN(bs3CpuInstr2_bzhi); 49 BS3TESTMODE_PROTOTYPES_CMN(bs3CpuInstr2_pdep); 50 BS3TESTMODE_PROTOTYPES_CMN(bs3CpuInstr2_pext); 48 51 BS3TESTMODE_PROTOTYPES_CMN(bs3CpuInstr2_rorx); 49 52 BS3TESTMODE_PROTOTYPES_CMN(bs3CpuInstr2_shlx); … … 80 83 #endif 81 84 #if 1 /* BMI2 */ 85 BS3TESTMODEENTRY_CMN("bzhi", bs3CpuInstr2_bzhi), 86 BS3TESTMODEENTRY_CMN("pdep", bs3CpuInstr2_pdep), 87 BS3TESTMODEENTRY_CMN("pext", bs3CpuInstr2_pext), 82 88 BS3TESTMODEENTRY_CMN("rorx", bs3CpuInstr2_rorx), 83 89 BS3TESTMODEENTRY_CMN("shlx", bs3CpuInstr2_shlx),
Note:
See TracChangeset
for help on using the changeset viewer.