Changeset 105274 in vbox for trunk/src/VBox/VMM/testcase
- Timestamp:
- Jul 11, 2024 3:07:58 PM (9 months ago)
- svn:sync-xref-src-repo-rev:
- 163926
- Location:
- trunk/src/VBox/VMM/testcase
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/testcase/tstIEMAImpl.cpp
r104521 r105274 7837 7837 #define SSE_COMPARE_F2_XMM_IMM8_MAX 0x1f 7838 7838 7839 TYPEDEF_SUBTEST_TYPE(SSE_COMPARE_F 2_XMM_IMM8_T, SSE_COMPARE_F2_XMM_IMM8_TEST_T, PFNIEMAIMPLMXCSRF2XMMIMM8);7840 7841 static SSE_COMPARE_F 2_XMM_IMM8_T g_aSseCompareF2XmmR32Imm8[] =7839 TYPEDEF_SUBTEST_TYPE(SSE_COMPARE_F3_XMM_IMM8_T, SSE_COMPARE_F3_XMM_IMM8_TEST_T, PFNIEMAIMPLMEDIAF3XMMIMM8); 7840 7841 static SSE_COMPARE_F3_XMM_IMM8_T g_aSseCompareF3XmmR32Imm8[] = 7842 7842 { 7843 7843 ENTRY_BIN(cmpps_u128), … … 7846 7846 7847 7847 #ifdef TSTIEMAIMPL_WITH_GENERATOR 7848 DUMP_ALL_FN(SseCompareF 2XmmR32Imm8, g_aSseCompareF2XmmR32Imm8)7849 static RTEXITCODE SseCompareF 2XmmR32Imm8Generate(uint32_t cTests, const char * const *papszNameFmts)7848 DUMP_ALL_FN(SseCompareF3XmmR32Imm8, g_aSseCompareF3XmmR32Imm8) 7849 static RTEXITCODE SseCompareF3XmmR32Imm8Generate(uint32_t cTests, const char * const *papszNameFmts) 7850 7850 { 7851 7851 cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */ … … 7865 7865 7866 7866 uint32_t cMinNormalPairs = (cTests - 144) / 4; 7867 for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aSseCompareF 2XmmR32Imm8); iFn++)7868 { 7869 PFNIEMAIMPLM XCSRF2XMMIMM8 const pfn = g_aSseCompareF2XmmR32Imm8[iFn].pfnNative ? g_aSseCompareF2XmmR32Imm8[iFn].pfnNative : g_aSseCompareF2XmmR32Imm8[iFn].pfn;7867 for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aSseCompareF3XmmR32Imm8); iFn++) 7868 { 7869 PFNIEMAIMPLMEDIAF3XMMIMM8 const pfn = g_aSseCompareF3XmmR32Imm8[iFn].pfnNative ? g_aSseCompareF3XmmR32Imm8[iFn].pfnNative : g_aSseCompareF3XmmR32Imm8[iFn].pfn; 7870 7870 7871 7871 IEMBINARYOUTPUT BinOut; 7872 AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseCompareF 2XmmR32Imm8[iFn]), RTEXITCODE_FAILURE);7872 AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseCompareF3XmmR32Imm8[iFn]), RTEXITCODE_FAILURE); 7873 7873 7874 7874 uint32_t cNormalInputPairs = 0; 7875 7875 for (uint32_t iTest = 0; iTest < cTests + RT_ELEMENTS(s_aSpecials); iTest += 1) 7876 7876 { 7877 SSE_COMPARE_F 2_XMM_IMM8_TEST_T TestData; RT_ZERO(TestData);7877 SSE_COMPARE_F3_XMM_IMM8_TEST_T TestData; RT_ZERO(TestData); 7878 7878 7879 7879 TestData.InVal1.ar32[0] = iTest < cTests ? RandR32Src(iTest) : s_aSpecials[iTest - cTests].Val1; … … 7980 7980 #endif 7981 7981 7982 static void SseCompareF 2XmmR32Imm8Test(void)7983 { 7984 for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aSseCompareF 2XmmR32Imm8); iFn++)7985 { 7986 if (!SUBTEST_CHECK_IF_ENABLED_AND_DECOMPRESS(g_aSseCompareF 2XmmR32Imm8[iFn]))7982 static void SseCompareF3XmmR32Imm8Test(void) 7983 { 7984 for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aSseCompareF3XmmR32Imm8); iFn++) 7985 { 7986 if (!SUBTEST_CHECK_IF_ENABLED_AND_DECOMPRESS(g_aSseCompareF3XmmR32Imm8[iFn])) 7987 7987 continue; 7988 7988 7989 SSE_COMPARE_F 2_XMM_IMM8_TEST_T const * const paTests = g_aSseCompareF2XmmR32Imm8[iFn].paTests;7990 uint32_t const cTests = g_aSseCompareF 2XmmR32Imm8[iFn].cTests;7991 PFNIEMAIMPLM XCSRF2XMMIMM8 pfn = g_aSseCompareF2XmmR32Imm8[iFn].pfn;7992 uint32_t const cVars = COUNT_VARIATIONS(g_aSseCompareF 2XmmR32Imm8[iFn]);7989 SSE_COMPARE_F3_XMM_IMM8_TEST_T const * const paTests = g_aSseCompareF3XmmR32Imm8[iFn].paTests; 7990 uint32_t const cTests = g_aSseCompareF3XmmR32Imm8[iFn].cTests; 7991 PFNIEMAIMPLMEDIAF3XMMIMM8 pfn = g_aSseCompareF3XmmR32Imm8[iFn].pfn; 7992 uint32_t const cVars = COUNT_VARIATIONS(g_aSseCompareF3XmmR32Imm8[iFn]); 7993 7993 if (!cTests) RTTestSkipped(g_hTest, "no tests"); 7994 7994 for (uint32_t iVar = 0; iVar < cVars; iVar++) … … 8030 8030 } 8031 8031 8032 FREE_DECOMPRESSED_TESTS(g_aSseCompareF 2XmmR32Imm8[iFn]);8032 FREE_DECOMPRESSED_TESTS(g_aSseCompareF3XmmR32Imm8[iFn]); 8033 8033 } 8034 8034 } … … 8038 8038 * Compare SSE operations on packed and single double-precision floating point values - outputting a mask. 8039 8039 */ 8040 static SSE_COMPARE_F 2_XMM_IMM8_T g_aSseCompareF2XmmR64Imm8[] =8040 static SSE_COMPARE_F3_XMM_IMM8_T g_aSseCompareF3XmmR64Imm8[] = 8041 8041 { 8042 8042 ENTRY_BIN(cmppd_u128), … … 8045 8045 8046 8046 #ifdef TSTIEMAIMPL_WITH_GENERATOR 8047 DUMP_ALL_FN(SseCompareF 2XmmR64Imm8, g_aSseCompareF2XmmR64Imm8)8048 static RTEXITCODE SseCompareF 2XmmR64Imm8Generate(uint32_t cTests, const char * const *papszNameFmts)8047 DUMP_ALL_FN(SseCompareF3XmmR64Imm8, g_aSseCompareF3XmmR64Imm8) 8048 static RTEXITCODE SseCompareF3XmmR64Imm8Generate(uint32_t cTests, const char * const *papszNameFmts) 8049 8049 { 8050 8050 cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */ … … 8064 8064 8065 8065 uint32_t cMinNormalPairs = (cTests - 144) / 4; 8066 for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aSseCompareF 2XmmR64Imm8); iFn++)8067 { 8068 PFNIEMAIMPLM XCSRF2XMMIMM8 const pfn = g_aSseCompareF2XmmR64Imm8[iFn].pfnNative ? g_aSseCompareF2XmmR64Imm8[iFn].pfnNative : g_aSseCompareF2XmmR64Imm8[iFn].pfn;8066 for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aSseCompareF3XmmR64Imm8); iFn++) 8067 { 8068 PFNIEMAIMPLMEDIAF3XMMIMM8 const pfn = g_aSseCompareF3XmmR64Imm8[iFn].pfnNative ? g_aSseCompareF3XmmR64Imm8[iFn].pfnNative : g_aSseCompareF3XmmR64Imm8[iFn].pfn; 8069 8069 8070 8070 IEMBINARYOUTPUT BinOut; 8071 AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseCompareF 2XmmR64Imm8[iFn]), RTEXITCODE_FAILURE);8071 AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseCompareF3XmmR64Imm8[iFn]), RTEXITCODE_FAILURE); 8072 8072 8073 8073 uint32_t cNormalInputPairs = 0; 8074 8074 for (uint32_t iTest = 0; iTest < cTests + RT_ELEMENTS(s_aSpecials); iTest += 1) 8075 8075 { 8076 SSE_COMPARE_F 2_XMM_IMM8_TEST_T TestData; RT_ZERO(TestData);8076 SSE_COMPARE_F3_XMM_IMM8_TEST_T TestData; RT_ZERO(TestData); 8077 8077 8078 8078 TestData.InVal1.ar64[0] = iTest < cTests ? RandR64Src(iTest) : s_aSpecials[iTest - cTests].Val1; … … 8171 8171 #endif 8172 8172 8173 static void SseCompareF 2XmmR64Imm8Test(void)8174 { 8175 for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aSseCompareF 2XmmR64Imm8); iFn++)8176 { 8177 if (!SUBTEST_CHECK_IF_ENABLED_AND_DECOMPRESS(g_aSseCompareF 2XmmR64Imm8[iFn]))8173 static void SseCompareF3XmmR64Imm8Test(void) 8174 { 8175 for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aSseCompareF3XmmR64Imm8); iFn++) 8176 { 8177 if (!SUBTEST_CHECK_IF_ENABLED_AND_DECOMPRESS(g_aSseCompareF3XmmR64Imm8[iFn])) 8178 8178 continue; 8179 8179 8180 SSE_COMPARE_F 2_XMM_IMM8_TEST_T const * const paTests = g_aSseCompareF2XmmR64Imm8[iFn].paTests;8181 uint32_t const cTests = g_aSseCompareF 2XmmR64Imm8[iFn].cTests;8182 PFNIEMAIMPLM XCSRF2XMMIMM8 pfn = g_aSseCompareF2XmmR64Imm8[iFn].pfn;8183 uint32_t const cVars = COUNT_VARIATIONS(g_aSseCompareF 2XmmR64Imm8[iFn]);8180 SSE_COMPARE_F3_XMM_IMM8_TEST_T const * const paTests = g_aSseCompareF3XmmR64Imm8[iFn].paTests; 8181 uint32_t const cTests = g_aSseCompareF3XmmR64Imm8[iFn].cTests; 8182 PFNIEMAIMPLMEDIAF3XMMIMM8 pfn = g_aSseCompareF3XmmR64Imm8[iFn].pfn; 8183 uint32_t const cVars = COUNT_VARIATIONS(g_aSseCompareF3XmmR64Imm8[iFn]); 8184 8184 if (!cTests) RTTestSkipped(g_hTest, "no tests"); 8185 8185 for (uint32_t iVar = 0; iVar < cVars; iVar++) … … 8214 8214 } 8215 8215 8216 FREE_DECOMPRESSED_TESTS(g_aSseCompareF 2XmmR64Imm8[iFn]);8216 FREE_DECOMPRESSED_TESTS(g_aSseCompareF3XmmR64Imm8[iFn]); 8217 8217 } 8218 8218 } … … 10237 10237 GROUP_ENTRY(CATEGORY_SSE_FP_OTHER, SseCompareEflR32R32, "tstIEMAImplDataSseCompare-%s.bin.gz", 0), 10238 10238 GROUP_ENTRY(CATEGORY_SSE_FP_OTHER, SseCompareEflR64R64, "tstIEMAImplDataSseCompare-%s.bin.gz", 0), 10239 GROUP_ENTRY(CATEGORY_SSE_FP_OTHER, SseCompareF 2XmmR32Imm8, "tstIEMAImplDataSseCompare-%s.bin.gz", 0),10240 GROUP_ENTRY(CATEGORY_SSE_FP_OTHER, SseCompareF 2XmmR64Imm8, "tstIEMAImplDataSseCompare-%s.bin.gz", 0),10239 GROUP_ENTRY(CATEGORY_SSE_FP_OTHER, SseCompareF3XmmR32Imm8, "tstIEMAImplDataSseCompare-%s.bin.gz", 0), 10240 GROUP_ENTRY(CATEGORY_SSE_FP_OTHER, SseCompareF3XmmR64Imm8, "tstIEMAImplDataSseCompare-%s.bin.gz", 0), 10241 10241 10242 10242 GROUP_ENTRY(CATEGORY_SSE_FP_OTHER, SseConvertXmmI32R32, "tstIEMAImplDataSseConvert-%s.bin.gz", 0), -
trunk/src/VBox/VMM/testcase/tstIEMAImpl.h
r104521 r105274 473 473 } SSE_COMPARE_EFL_R64_R64_TEST_T; 474 474 475 typedef struct SSE_COMPARE_F 2_XMM_IMM8_TEST_T475 typedef struct SSE_COMPARE_F3_XMM_IMM8_TEST_T 476 476 { 477 477 uint32_t fMxcsrIn; … … 483 483 X86XMMREG InVal2; 484 484 X86XMMREG OutVal; 485 } SSE_COMPARE_F 2_XMM_IMM8_TEST_T;485 } SSE_COMPARE_F3_XMM_IMM8_TEST_T; 486 486 487 487 typedef struct SSE_CONVERT_XMM_TEST_T … … 1004 1004 TSTIEM_DECLARE_TEST_ARRAY_BIN(SseCompare, SSE_COMPARE_EFL_R64_R64_TEST_T, vcomisd_u128 ); 1005 1005 1006 TSTIEM_DECLARE_TEST_ARRAY_BIN(SseCompare, SSE_COMPARE_F 2_XMM_IMM8_TEST_T, cmpps_u128 );1007 TSTIEM_DECLARE_TEST_ARRAY_BIN(SseCompare, SSE_COMPARE_F 2_XMM_IMM8_TEST_T, cmppd_u128 );1008 TSTIEM_DECLARE_TEST_ARRAY_BIN(SseCompare, SSE_COMPARE_F 2_XMM_IMM8_TEST_T, cmpss_u128 );1009 TSTIEM_DECLARE_TEST_ARRAY_BIN(SseCompare, SSE_COMPARE_F 2_XMM_IMM8_TEST_T, cmpsd_u128 );1006 TSTIEM_DECLARE_TEST_ARRAY_BIN(SseCompare, SSE_COMPARE_F3_XMM_IMM8_TEST_T, cmpps_u128 ); 1007 TSTIEM_DECLARE_TEST_ARRAY_BIN(SseCompare, SSE_COMPARE_F3_XMM_IMM8_TEST_T, cmppd_u128 ); 1008 TSTIEM_DECLARE_TEST_ARRAY_BIN(SseCompare, SSE_COMPARE_F3_XMM_IMM8_TEST_T, cmpss_u128 ); 1009 TSTIEM_DECLARE_TEST_ARRAY_BIN(SseCompare, SSE_COMPARE_F3_XMM_IMM8_TEST_T, cmpsd_u128 ); 1010 1010 1011 1011 TSTIEM_DECLARE_TEST_ARRAY_BIN(SseConvert, SSE_CONVERT_XMM_TEST_T, cvtdq2ps_u128 );
Note:
See TracChangeset
for help on using the changeset viewer.