Changeset 104238 in vbox for trunk/src/VBox/VMM/testcase
- Timestamp:
- Apr 8, 2024 8:15:10 PM (12 months ago)
- svn:sync-xref-src-repo-rev:
- 162690
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/testcase/tstIEMAImpl.cpp
r104208 r104238 2783 2783 a_TestType Test; \ 2784 2784 Test.fEflIn = RandEFlags(); \ 2785 Test.fEflOut = Test.fEflIn; \2786 2785 Test.uDstIn = RandU ## a_cBits ## Dst(iTest); \ 2787 2786 Test.uDstOut = Test.uDstIn; \ 2788 2787 Test.uSrcIn = 0; \ 2789 2788 Test.uMisc = RandU8() & (a_cBits * 4 - 1); /* need to go way beyond the a_cBits limit */ \ 2790 a_aSubTests[iFn].pfnNative(&Test.uDstOut, Test.uMisc, &Test.fEflOut); \2789 Test.fEflOut = a_aSubTests[iFn].pfnNative(Test.fEflIn, &Test.uDstOut, Test.uMisc); \ 2791 2790 GenerateBinaryWrite(&BinOut, &Test, sizeof(Test)); \ 2792 2791 \ 2793 2792 Test.fEflIn = (~Test.fEflIn & X86_EFL_LIVE_MASK) | X86_EFL_RA1_MASK; \ 2794 Test.fEflOut = Test.fEflIn; \2795 2793 Test.uDstOut = Test.uDstIn; \ 2796 a_aSubTests[iFn].pfnNative(&Test.uDstOut, Test.uMisc, &Test.fEflOut); \2794 Test.fEflOut = a_aSubTests[iFn].pfnNative(Test.fEflIn, &Test.uDstOut, Test.uMisc); \ 2797 2795 GenerateBinaryWrite(&BinOut, &Test, sizeof(Test)); \ 2798 2796 } \ … … 2838 2836 for (uint32_t i = 0; i < cIterations; i++) \ 2839 2837 { \ 2840 uint32_t fBenchEfl = fEflIn; \2841 2838 a_uType uBenchDst = uDstIn; \ 2842 pfn( &uBenchDst, cShift, &fBenchEfl); \2839 pfn(fEflIn, &uBenchDst, cShift); \ 2843 2840 \ 2844 fBenchEfl = fEflIn; \2845 2841 uBenchDst = uDstIn; \ 2846 pfn( &uBenchDst, cShift, &fBenchEfl); \2842 pfn(fEflIn, &uBenchDst, cShift); \ 2847 2843 \ 2848 fBenchEfl = fEflIn; \2849 2844 uBenchDst = uDstIn; \ 2850 pfn( &uBenchDst, cShift, &fBenchEfl); \2845 pfn(fEflIn, &uBenchDst, cShift); \ 2851 2846 \ 2852 fBenchEfl = fEflIn; \2853 2847 uBenchDst = uDstIn; \ 2854 pfn( &uBenchDst, cShift, &fBenchEfl); \2848 pfn(fEflIn, &uBenchDst, cShift); \ 2855 2849 } \ 2856 2850 return RTTimeNanoTS() - nsStart; \ … … 2872 2866 for (uint32_t iTest = 0; iTest < cTests; iTest++ ) \ 2873 2867 { \ 2874 uint32_t fEfl = paTests[iTest].fEflIn; \ 2875 a_uType uDst = paTests[iTest].uDstIn; \ 2876 pfn(&uDst, paTests[iTest].uMisc, &fEfl); \ 2877 if ( uDst != paTests[iTest].uDstOut \ 2878 || fEfl != paTests[iTest].fEflOut ) \ 2868 a_uType uDst = paTests[iTest].uDstIn; \ 2869 uint32_t fEflOut = pfn(paTests[iTest].fEflIn, &uDst, paTests[iTest].uMisc); \ 2870 if ( uDst != paTests[iTest].uDstOut \ 2871 || fEflOut != paTests[iTest].fEflOut ) \ 2879 2872 RTTestFailed(g_hTest, "#%u%s: efl=%#08x dst=" a_Fmt " shift=%2u -> efl=%#08x dst=" a_Fmt ", expected %#08x & " a_Fmt "%s\n", \ 2880 2873 iTest, iVar == 0 ? "" : "/n", \ 2881 2874 paTests[iTest].fEflIn, paTests[iTest].uDstIn, paTests[iTest].uMisc, \ 2882 fEfl , uDst, paTests[iTest].fEflOut, paTests[iTest].uDstOut, \2883 EFlagsDiff(fEfl , paTests[iTest].fEflOut)); \2875 fEflOut, uDst, paTests[iTest].fEflOut, paTests[iTest].uDstOut, \ 2876 EFlagsDiff(fEflOut, paTests[iTest].fEflOut)); \ 2884 2877 else \ 2885 2878 { \ 2886 2879 *g_pu ## a_cBits = paTests[iTest].uDstIn; \ 2887 *g_pfEfl = paTests[iTest].fEflIn; \ 2888 pfn(g_pu ## a_cBits, paTests[iTest].uMisc, g_pfEfl); \ 2880 fEflOut = pfn(paTests[iTest].fEflIn, g_pu ## a_cBits, paTests[iTest].uMisc); \ 2889 2881 RTTEST_CHECK(g_hTest, *g_pu ## a_cBits == paTests[iTest].uDstOut); \ 2890 RTTEST_CHECK(g_hTest, *g_pfEfl== paTests[iTest].fEflOut); \2882 RTTEST_CHECK(g_hTest, fEflOut == paTests[iTest].fEflOut); \ 2891 2883 } \ 2892 2884 } \
Note:
See TracChangeset
for help on using the changeset viewer.