Changeset 104195 in vbox for trunk/src/VBox/VMM/testcase
- Timestamp:
- Apr 5, 2024 2:45:23 PM (13 months ago)
- svn:sync-xref-src-repo-rev:
- 162624
- Location:
- trunk/src/VBox/VMM/testcase
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/testcase/tstIEMAImpl.cpp
r104174 r104195 1761 1761 a_TestType Test; \ 1762 1762 Test.fEflIn = RandEFlags(); \ 1763 Test.fEflOut = Test.fEflIn; \1764 1763 Test.uDstIn = RandU ## a_cBits ## Dst(iTest); \ 1765 1764 Test.uDstOut = Test.uDstIn; \ … … 1768 1767 Test.uSrcIn &= a_cBits - 1; /* Restrict bit index according to operand width */ \ 1769 1768 Test.uMisc = 0; \ 1770 pfn(&Test.uDstOut, Test.uSrcIn, &Test.fEflOut); \1769 Test.fEflOut = pfn(Test.fEflIn, &Test.uDstOut, Test.uSrcIn); \ 1771 1770 GenerateBinaryWrite(&BinOut, &Test, sizeof(Test)); \ 1772 1771 } \ … … 1776 1775 Test.fEflIn = g_aBinU ## a_cBits[iFn].paFixedTests[iTest].fEflIn == UINT32_MAX ? RandEFlags() \ 1777 1776 : g_aBinU ## a_cBits[iFn].paFixedTests[iTest].fEflIn; \ 1778 Test.fEflOut = Test.fEflIn; \1779 1777 Test.uDstIn = g_aBinU ## a_cBits[iFn].paFixedTests[iTest].uDstIn; \ 1780 1778 Test.uDstOut = Test.uDstIn; \ 1781 1779 Test.uSrcIn = g_aBinU ## a_cBits[iFn].paFixedTests[iTest].uSrcIn; \ 1782 1780 Test.uMisc = g_aBinU ## a_cBits[iFn].paFixedTests[iTest].uMisc; \ 1783 pfn(&Test.uDstOut, Test.uSrcIn, &Test.fEflOut); \1781 Test.fEflOut = pfn(Test.fEflIn, &Test.uDstOut, Test.uSrcIn); \ 1784 1782 GenerateBinaryWrite(&BinOut, &Test, sizeof(Test)); \ 1785 1783 } \ … … 1818 1816 cIterations /= 4; \ 1819 1817 RTThreadYield(); \ 1820 uint64_t const nsStart 1818 uint64_t const nsStart = RTTimeNanoTS(); \ 1821 1819 for (uint32_t i = 0; i < cIterations; i++) \ 1822 1820 { \ 1823 uint32_t fBenchEfl = fEflIn; \ 1824 a_uType uBenchDst = uDstIn; \ 1825 pfn(&uBenchDst, uSrcIn, &fBenchEfl); \ 1821 a_uType uBenchDst = uDstIn; \ 1822 pfn(fEflIn, &uBenchDst, uSrcIn); \ 1826 1823 \ 1827 fBenchEfl = fEflIn; \1828 1824 uBenchDst = uDstIn; \ 1829 pfn( &uBenchDst, uSrcIn, &fBenchEfl); \1825 pfn(fEflIn, &uBenchDst, uSrcIn); \ 1830 1826 \ 1831 fBenchEfl = fEflIn; \1832 1827 uBenchDst = uDstIn; \ 1833 pfn( &uBenchDst, uSrcIn, &fBenchEfl); \1828 pfn(fEflIn, &uBenchDst, uSrcIn); \ 1834 1829 \ 1835 fBenchEfl = fEflIn; \1836 1830 uBenchDst = uDstIn; \ 1837 pfn( &uBenchDst, uSrcIn, &fBenchEfl); \1831 pfn(fEflIn, &uBenchDst, uSrcIn); \ 1838 1832 } \ 1839 1833 return RTTimeNanoTS() - nsStart; \ … … 1855 1849 for (uint32_t iTest = 0; iTest < cTests; iTest++ ) \ 1856 1850 { \ 1857 uint32_t fEfl = paTests[iTest].fEflIn; \1858 1851 a_uType uDst = paTests[iTest].uDstIn; \ 1859 pfn(&uDst, paTests[iTest].uSrcIn, &fEfl); \1852 uint32_t fEfl = pfn(paTests[iTest].fEflIn, &uDst, paTests[iTest].uSrcIn); \ 1860 1853 if ( uDst != paTests[iTest].uDstOut \ 1861 || fEfl != paTests[iTest].fEflOut 1854 || fEfl != paTests[iTest].fEflOut) \ 1862 1855 RTTestFailed(g_hTest, "#%u%s: efl=%#08x dst=" a_Fmt " src=" a_Fmt " -> efl=%#08x dst=" a_Fmt ", expected %#08x & " a_Fmt "%s - %s\n", \ 1863 1856 iTest, !iVar ? "" : "/n", paTests[iTest].fEflIn, paTests[iTest].uDstIn, paTests[iTest].uSrcIn, \ … … 1868 1861 { \ 1869 1862 *g_pu ## a_cBits = paTests[iTest].uDstIn; \ 1870 *g_pfEfl = paTests[iTest].fEflIn; \ 1871 pfn(g_pu ## a_cBits, paTests[iTest].uSrcIn, g_pfEfl); \ 1863 fEfl = pfn(paTests[iTest].fEflIn, g_pu ## a_cBits, paTests[iTest].uSrcIn); \ 1872 1864 RTTEST_CHECK(g_hTest, *g_pu ## a_cBits == paTests[iTest].uDstOut); \ 1873 RTTEST_CHECK(g_hTest, *g_pfEfl == paTests[iTest].fEflOut); \1865 RTTEST_CHECK(g_hTest, fEfl == paTests[iTest].fEflOut); \ 1874 1866 } \ 1875 1867 } \ … … 1946 1938 ENTRY_BIN_PFN_CAST(cmp_u16, PFNIEMAIMPLBINU16), 1947 1939 ENTRY_BIN_PFN_CAST(test_u16, PFNIEMAIMPLBINU16), 1940 #if 0 /** @todo convert to new eflags format */ 1948 1941 ENTRY_BIN_PFN_CAST_EX(bt_u16, PFNIEMAIMPLBINU16, 1), 1949 1942 ENTRY_BIN_EX(btc_u16, 1), … … 1960 1953 ENTRY_BIN_INTEL(imul_two_u16, X86_EFL_PF | X86_EFL_AF | X86_EFL_ZF | X86_EFL_SF), 1961 1954 ENTRY_BIN(arpl), 1955 #endif 1962 1956 }; 1963 1957 TEST_BINARY_OPS(16, uint16_t, "%#06x", BINU16_TEST_T, g_aBinU16) … … 1992 1986 ENTRY_BIN_PFN_CAST(cmp_u32, PFNIEMAIMPLBINU32), 1993 1987 ENTRY_BIN_PFN_CAST(test_u32, PFNIEMAIMPLBINU32), 1988 #if 0 /** @todo convert to new eflags format */ 1994 1989 ENTRY_BIN_PFN_CAST_EX(bt_u32, PFNIEMAIMPLBINU32, 1), 1995 1990 ENTRY_BIN_EX(btc_u32, 1), … … 2007 2002 ENTRY_BIN(adcx_u32), 2008 2003 ENTRY_BIN(adox_u32), 2004 #endif 2009 2005 }; 2010 2006 TEST_BINARY_OPS(32, uint32_t, "%#010RX32", BINU32_TEST_T, g_aBinU32) … … 2039 2035 ENTRY_BIN_PFN_CAST(cmp_u64, PFNIEMAIMPLBINU64), 2040 2036 ENTRY_BIN_PFN_CAST(test_u64, PFNIEMAIMPLBINU64), 2037 #if 0 /** @todo convert to new eflags format */ 2041 2038 ENTRY_BIN_PFN_CAST_EX(bt_u64, PFNIEMAIMPLBINU64, 1), 2042 2039 ENTRY_BIN_EX(btc_u64, 1), … … 2054 2051 ENTRY_BIN(adcx_u64), 2055 2052 ENTRY_BIN(adox_u64), 2053 #endif 2056 2054 }; 2057 2055 TEST_BINARY_OPS(64, uint64_t, "%#018RX64", BINU64_TEST_T, g_aBinU64) … … 2229 2227 EFlagsDiff(fEfl, paTests[iTest].fEflOut)); \ 2230 2228 /* positive */ \ 2231 uint32_t fEflExpect = paTests[iTest].fEflIn; \2232 2229 uA = paTests[iTest].uDstIn; \ 2233 s_aFuncs[iFn].pfnSub(&uA, uA, &fEflExpect); \2230 uint32_t fEflExpect = s_aFuncs[iFn].pfnSub(paTests[iTest].fEflIn, &uA, uA); \ 2234 2231 fEfl = paTests[iTest].fEflIn; \ 2235 2232 uA = paTests[iTest].uDstIn; \ -
trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp
r104183 r104195 662 662 uint32_t *a_pName = &a_Name; \ 663 663 NOREF(a_pName) 664 #define IEM_MC_ARG_EFLAGS(a_Name, a_iArg) IEM_MC_ARG(uint32_t, a_Name, a_iArg); IEM_MC_FETCH_EFLAGS(a_Name) 664 665 665 666 #define IEM_MC_COMMIT_EFLAGS(a_EFlags) do { CHK_TYPE(uint32_t, a_EFlags); (void)fMcBegin; } while (0) … … 1002 1003 #define IEM_MC_CALL_VOID_AIMPL_4(a_pfn, a0, a1, a2, a3) \ 1003 1004 do { CHK_CALL_ARG(a0, 0); CHK_CALL_ARG(a1, 1); CHK_CALL_ARG(a2, 2); CHK_CALL_ARG(a3, 3); (void)fMcBegin; } while (0) 1004 #define IEM_MC_CALL_AIMPL_3(a_rc, a_pfn, a0, a1, a2) \ 1005 #define IEM_MC_CALL_AIMPL_3(a_rcType, a_rc, a_pfn, a0, a1, a2) \ 1006 IEM_MC_LOCAL(a_rcType, a_rc); \ 1005 1007 do { CHK_CALL_ARG(a0, 0); CHK_CALL_ARG(a1, 1); CHK_CALL_ARG(a2, 2); (a_rc) = VINF_SUCCESS; (void)fMcBegin; } while (0) 1006 #define IEM_MC_CALL_AIMPL_4(a_rc, a_pfn, a0, a1, a2, a3) \ 1008 #define IEM_MC_CALL_AIMPL_4(a_rcType, a_rc, a_pfn, a0, a1, a2, a3) \ 1009 IEM_MC_LOCAL(a_rcType, a_rc); \ 1007 1010 do { CHK_CALL_ARG(a0, 0); CHK_CALL_ARG(a1, 1); CHK_CALL_ARG(a2, 2); CHK_CALL_ARG(a3, 3); (a_rc) = VINF_SUCCESS; (void)fMcBegin; } while (0) 1008 1011 #define IEM_MC_CALL_CIMPL_0(a_fFlags, a_fGstShwFlush, a_pfnCImpl) do { (void)fMcBegin; } while (0)
Note:
See TracChangeset
for help on using the changeset viewer.