- Timestamp:
- Sep 28, 2022 7:23:12 PM (2 years ago)
- svn:sync-xref-src-repo-rev:
- 153833
- Location:
- trunk/src/VBox/VMM/testcase
- Files:
-
- 2 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/testcase/Makefile.kmk
r96917 r96922 312 312 tstIEMAImplDataSseConvert-cvttpd2dq_u128.bin \ 313 313 tstIEMAImplDataSseConvert-cvtpd2pi_u128.bin \ 314 tstIEMAImplDataSseConvert-cvttpd2pi_u128.bin 314 tstIEMAImplDataSseConvert-cvttpd2pi_u128.bin \ 315 tstIEMAImplDataSseConvert-cvtpi2ps_u128.bin \ 316 tstIEMAImplDataSseConvert-cvtpi2pd_u128.bin 315 317 316 318 tstIEMAImpl_TEMPLATE = VBOXR3TSTEXE -
trunk/src/VBox/VMM/testcase/tstIEMAImpl.cpp
r96917 r96922 8103 8103 }; 8104 8104 8105 X86FXSTATE State;8106 RT_ZERO(State);8107 8105 uint32_t cMinNormalPairs = (cTests - 144) / 4; 8108 8106 for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aSseConvertMmXmm); iFn++) … … 8250 8248 ( ValOut.ai32[0] != paTests[iTest].OutVal.ai32[0] 8251 8249 || ValOut.ai32[1] != paTests[iTest].OutVal.ai32[1]) 8250 ? " - val" : "", 8251 FormatMxcsr(paTests[iTest].fMxcsrIn)); 8252 } 8253 } 8254 } 8255 } 8256 8257 8258 /* 8259 * Convert SSE operations converting signed double-word values to double precision floating-point values (probably only cvtpi2pd). 8260 */ 8261 TYPEDEF_SUBTEST_TYPE(SSE_CONVERT_XMM_R64_MM_T, SSE_CONVERT_XMM_MM_TEST_T, PFNIEMAIMPLMXCSRU128U64); 8262 8263 static const SSE_CONVERT_XMM_R64_MM_T g_aSseConvertXmmR64Mm[] = 8264 { 8265 ENTRY_BIN(cvtpi2pd_u128) 8266 }; 8267 8268 #ifdef TSTIEMAIMPL_WITH_GENERATOR 8269 static RTEXITCODE SseConvertXmmR64MmGenerate(const char *pszDataFileFmt, uint32_t cTests) 8270 { 8271 cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */ 8272 8273 static struct { int32_t aVal[2]; } const s_aSpecials[] = 8274 { 8275 { { INT32_MIN, INT32_MIN } }, 8276 { { INT32_MAX, INT32_MAX } } 8277 /** @todo More specials. */ 8278 }; 8279 8280 for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aSseConvertXmmR64Mm); iFn++) 8281 { 8282 PFNIEMAIMPLMXCSRU128U64 const pfn = g_aSseConvertXmmR64Mm[iFn].pfnNative ? g_aSseConvertXmmR64Mm[iFn].pfnNative : g_aSseConvertXmmR64Mm[iFn].pfn; 8283 8284 PRTSTREAM pStrmOut = NULL; 8285 int rc = RTStrmOpenF("wb", &pStrmOut, pszDataFileFmt, g_aSseConvertXmmR64Mm[iFn].pszName); 8286 if (RT_FAILURE(rc)) 8287 { 8288 RTMsgError("Failed to open data file for %s for writing: %Rrc", g_aSseConvertXmmR64Mm[iFn].pszName, rc); 8289 return RTEXITCODE_FAILURE; 8290 } 8291 8292 for (uint32_t iTest = 0; iTest < cTests + RT_ELEMENTS(s_aSpecials); iTest += 1) 8293 { 8294 SSE_CONVERT_XMM_MM_TEST_T TestData; RT_ZERO(TestData); 8295 8296 TestData.InVal.ai32[0] = iTest < cTests ? RandI32Src2(iTest) : s_aSpecials[iTest - cTests].aVal[0]; 8297 TestData.InVal.ai32[1] = iTest < cTests ? RandI32Src2(iTest) : s_aSpecials[iTest - cTests].aVal[1]; 8298 8299 uint32_t const fMxcsr = RandMxcsr() & X86_MXCSR_XCPT_FLAGS; 8300 for (uint16_t iRounding = 0; iRounding < 4; iRounding++) 8301 for (uint8_t iDaz = 0; iDaz < 2; iDaz++) 8302 for (uint8_t iFz = 0; iFz < 2; iFz++) 8303 { 8304 uint32_t fMxcsrIn = (fMxcsr & ~X86_MXCSR_RC_MASK) 8305 | (iRounding << X86_MXCSR_RC_SHIFT) 8306 | (iDaz ? X86_MXCSR_DAZ : 0) 8307 | (iFz ? X86_MXCSR_FZ : 0) 8308 | X86_MXCSR_XCPT_MASK; 8309 uint32_t fMxcsrM = fMxcsrIn; 8310 pfn(&fMxcsrM, &TestData.OutVal, TestData.InVal.u); 8311 TestData.fMxcsrIn = fMxcsrIn; 8312 TestData.fMxcsrOut = fMxcsrM; 8313 RTStrmWrite(pStrmOut, &TestData, sizeof(TestData)); 8314 8315 fMxcsrIn &= ~X86_MXCSR_XCPT_MASK; 8316 uint32_t fMxcsrU = fMxcsrIn; 8317 pfn(&fMxcsrU, &TestData.OutVal, TestData.InVal.u); 8318 TestData.fMxcsrIn = fMxcsrIn; 8319 TestData.fMxcsrOut = fMxcsrU; 8320 RTStrmWrite(pStrmOut, &TestData, sizeof(TestData)); 8321 8322 uint16_t fXcpt = (fMxcsrM | fMxcsrU) & X86_MXCSR_XCPT_FLAGS; 8323 if (fXcpt) 8324 { 8325 fMxcsrIn = (fMxcsrIn & ~X86_MXCSR_XCPT_MASK) | fXcpt; 8326 uint32_t fMxcsr1 = fMxcsrIn; 8327 pfn(&fMxcsr1, &TestData.OutVal, TestData.InVal.u); 8328 TestData.fMxcsrIn = fMxcsrIn; 8329 TestData.fMxcsrOut = fMxcsr1; 8330 RTStrmWrite(pStrmOut, &TestData, sizeof(TestData)); 8331 8332 if (((fMxcsr1 & X86_MXCSR_XCPT_FLAGS) & fXcpt) != (fMxcsr1 & X86_MXCSR_XCPT_FLAGS)) 8333 { 8334 fXcpt |= fMxcsr1 & X86_MXCSR_XCPT_FLAGS; 8335 fMxcsrIn = (fMxcsrIn & ~X86_MXCSR_XCPT_MASK) | (fXcpt << X86_MXCSR_XCPT_MASK_SHIFT); 8336 uint32_t fMxcsr2 = fMxcsrIn; 8337 pfn(&fMxcsr2, &TestData.OutVal, TestData.InVal.u); 8338 TestData.fMxcsrIn = fMxcsrIn; 8339 TestData.fMxcsrOut = fMxcsr2; 8340 RTStrmWrite(pStrmOut, &TestData, sizeof(TestData)); 8341 } 8342 if (!RT_IS_POWER_OF_TWO(fXcpt)) 8343 for (uint16_t fUnmasked = 1; fUnmasked <= X86_MXCSR_PE; fUnmasked <<= 1) 8344 if (fUnmasked & fXcpt) 8345 { 8346 fMxcsrIn = (fMxcsrIn & ~X86_MXCSR_XCPT_MASK) | ((fXcpt & ~fUnmasked) << X86_MXCSR_XCPT_MASK_SHIFT); 8347 uint32_t fMxcsr3 = fMxcsrIn; 8348 pfn(&fMxcsr3, &TestData.OutVal, TestData.InVal.u); 8349 TestData.fMxcsrIn = fMxcsrIn; 8350 TestData.fMxcsrOut = fMxcsr3; 8351 RTStrmWrite(pStrmOut, &TestData, sizeof(TestData)); 8352 } 8353 } 8354 } 8355 } 8356 rc = RTStrmClose(pStrmOut); 8357 if (RT_FAILURE(rc)) 8358 { 8359 RTMsgError("Failed to close data file for %s: %Rrc", g_aSseConvertXmmR64Mm[iFn].pszName, rc); 8360 return RTEXITCODE_FAILURE; 8361 } 8362 } 8363 8364 return RTEXITCODE_SUCCESS; 8365 } 8366 #endif 8367 8368 static void SseConvertXmmR64MmTest(void) 8369 { 8370 for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aSseConvertXmmR64Mm); iFn++) 8371 { 8372 if (!SubTestAndCheckIfEnabled(g_aSseConvertXmmR64Mm[iFn].pszName)) 8373 continue; 8374 8375 uint32_t const cTests = *g_aSseConvertXmmR64Mm[iFn].pcTests; 8376 SSE_CONVERT_XMM_MM_TEST_T const * const paTests = g_aSseConvertXmmR64Mm[iFn].paTests; 8377 PFNIEMAIMPLMXCSRU128U64 pfn = g_aSseConvertXmmR64Mm[iFn].pfn; 8378 uint32_t const cVars = COUNT_VARIATIONS(g_aSseConvertXmmR64Mm[iFn]); 8379 if (!cTests) RTTestSkipped(g_hTest, "no tests"); 8380 for (uint32_t iVar = 0; iVar < cVars; iVar++) 8381 { 8382 for (uint32_t iTest = 0; iTest < cTests / sizeof(*paTests); iTest++) 8383 { 8384 X86XMMREG ValOut; 8385 uint32_t fMxcsr = paTests[iTest].fMxcsrIn; 8386 pfn(&fMxcsr, &ValOut, paTests[iTest].InVal.u); 8387 if ( fMxcsr != paTests[iTest].fMxcsrOut 8388 || !RTFLOAT64U_ARE_IDENTICAL(&ValOut.ar64[0], &paTests[iTest].OutVal.ar64[0]) 8389 || !RTFLOAT64U_ARE_IDENTICAL(&ValOut.ar64[1], &paTests[iTest].OutVal.ar64[1])) 8390 RTTestFailed(g_hTest, "#%04u%s: mxcsr=%#08x in1=%RI32'%RI32\n" 8391 "%s -> mxcsr=%#08x %s'%s\n" 8392 "%s expected %#08x %s'%s%s%s (%s)\n", 8393 iTest, iVar ? "/n" : "", paTests[iTest].fMxcsrIn, 8394 paTests[iTest].InVal.ai32[0], paTests[iTest].InVal.ai32[1], 8395 iVar ? " " : "", fMxcsr, 8396 FormatR64(&ValOut.ar64[0]), FormatR64(&ValOut.ar64[1]), 8397 iVar ? " " : "", paTests[iTest].fMxcsrOut, 8398 FormatR64(&paTests[iTest].OutVal.ar64[0]), FormatR64(&paTests[iTest].OutVal.ar64[1]), 8399 MxcsrDiff(fMxcsr, paTests[iTest].fMxcsrOut), 8400 ( !RTFLOAT64U_ARE_IDENTICAL(&ValOut.ar64[0], &paTests[iTest].OutVal.ar64[0]) 8401 || !RTFLOAT64U_ARE_IDENTICAL(&ValOut.ar64[1], &paTests[iTest].OutVal.ar64[1])) 8402 ? " - val" : "", 8403 FormatMxcsr(paTests[iTest].fMxcsrIn)); 8404 } 8405 } 8406 } 8407 } 8408 8409 8410 /* 8411 * Convert SSE operations converting signed double-word values to double precision floating-point values (probably only cvtpi2pd). 8412 */ 8413 TYPEDEF_SUBTEST_TYPE(SSE_CONVERT_XMM_R32_MM_T, SSE_CONVERT_XMM_MM_TEST_T, PFNIEMAIMPLMXCSRU128U64); 8414 8415 static const SSE_CONVERT_XMM_R32_MM_T g_aSseConvertXmmR32Mm[] = 8416 { 8417 ENTRY_BIN(cvtpi2ps_u128) 8418 }; 8419 8420 #ifdef TSTIEMAIMPL_WITH_GENERATOR 8421 static RTEXITCODE SseConvertXmmR32MmGenerate(const char *pszDataFileFmt, uint32_t cTests) 8422 { 8423 cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */ 8424 8425 static struct { int32_t aVal[2]; } const s_aSpecials[] = 8426 { 8427 { { INT32_MIN, INT32_MIN } }, 8428 { { INT32_MAX, INT32_MAX } } 8429 /** @todo More specials. */ 8430 }; 8431 8432 for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aSseConvertXmmR32Mm); iFn++) 8433 { 8434 PFNIEMAIMPLMXCSRU128U64 const pfn = g_aSseConvertXmmR32Mm[iFn].pfnNative ? g_aSseConvertXmmR32Mm[iFn].pfnNative : g_aSseConvertXmmR32Mm[iFn].pfn; 8435 8436 PRTSTREAM pStrmOut = NULL; 8437 int rc = RTStrmOpenF("wb", &pStrmOut, pszDataFileFmt, g_aSseConvertXmmR32Mm[iFn].pszName); 8438 if (RT_FAILURE(rc)) 8439 { 8440 RTMsgError("Failed to open data file for %s for writing: %Rrc", g_aSseConvertXmmR32Mm[iFn].pszName, rc); 8441 return RTEXITCODE_FAILURE; 8442 } 8443 8444 for (uint32_t iTest = 0; iTest < cTests + RT_ELEMENTS(s_aSpecials); iTest += 1) 8445 { 8446 SSE_CONVERT_XMM_MM_TEST_T TestData; RT_ZERO(TestData); 8447 8448 TestData.InVal.ai32[0] = iTest < cTests ? RandI32Src2(iTest) : s_aSpecials[iTest - cTests].aVal[0]; 8449 TestData.InVal.ai32[1] = iTest < cTests ? RandI32Src2(iTest) : s_aSpecials[iTest - cTests].aVal[1]; 8450 8451 uint32_t const fMxcsr = RandMxcsr() & X86_MXCSR_XCPT_FLAGS; 8452 for (uint16_t iRounding = 0; iRounding < 4; iRounding++) 8453 for (uint8_t iDaz = 0; iDaz < 2; iDaz++) 8454 for (uint8_t iFz = 0; iFz < 2; iFz++) 8455 { 8456 uint32_t fMxcsrIn = (fMxcsr & ~X86_MXCSR_RC_MASK) 8457 | (iRounding << X86_MXCSR_RC_SHIFT) 8458 | (iDaz ? X86_MXCSR_DAZ : 0) 8459 | (iFz ? X86_MXCSR_FZ : 0) 8460 | X86_MXCSR_XCPT_MASK; 8461 uint32_t fMxcsrM = fMxcsrIn; 8462 pfn(&fMxcsrM, &TestData.OutVal, TestData.InVal.u); 8463 TestData.fMxcsrIn = fMxcsrIn; 8464 TestData.fMxcsrOut = fMxcsrM; 8465 RTStrmWrite(pStrmOut, &TestData, sizeof(TestData)); 8466 8467 fMxcsrIn &= ~X86_MXCSR_XCPT_MASK; 8468 uint32_t fMxcsrU = fMxcsrIn; 8469 pfn(&fMxcsrU, &TestData.OutVal, TestData.InVal.u); 8470 TestData.fMxcsrIn = fMxcsrIn; 8471 TestData.fMxcsrOut = fMxcsrU; 8472 RTStrmWrite(pStrmOut, &TestData, sizeof(TestData)); 8473 8474 uint16_t fXcpt = (fMxcsrM | fMxcsrU) & X86_MXCSR_XCPT_FLAGS; 8475 if (fXcpt) 8476 { 8477 fMxcsrIn = (fMxcsrIn & ~X86_MXCSR_XCPT_MASK) | fXcpt; 8478 uint32_t fMxcsr1 = fMxcsrIn; 8479 pfn(&fMxcsr1, &TestData.OutVal, TestData.InVal.u); 8480 TestData.fMxcsrIn = fMxcsrIn; 8481 TestData.fMxcsrOut = fMxcsr1; 8482 RTStrmWrite(pStrmOut, &TestData, sizeof(TestData)); 8483 8484 if (((fMxcsr1 & X86_MXCSR_XCPT_FLAGS) & fXcpt) != (fMxcsr1 & X86_MXCSR_XCPT_FLAGS)) 8485 { 8486 fXcpt |= fMxcsr1 & X86_MXCSR_XCPT_FLAGS; 8487 fMxcsrIn = (fMxcsrIn & ~X86_MXCSR_XCPT_MASK) | (fXcpt << X86_MXCSR_XCPT_MASK_SHIFT); 8488 uint32_t fMxcsr2 = fMxcsrIn; 8489 pfn(&fMxcsr2, &TestData.OutVal, TestData.InVal.u); 8490 TestData.fMxcsrIn = fMxcsrIn; 8491 TestData.fMxcsrOut = fMxcsr2; 8492 RTStrmWrite(pStrmOut, &TestData, sizeof(TestData)); 8493 } 8494 if (!RT_IS_POWER_OF_TWO(fXcpt)) 8495 for (uint16_t fUnmasked = 1; fUnmasked <= X86_MXCSR_PE; fUnmasked <<= 1) 8496 if (fUnmasked & fXcpt) 8497 { 8498 fMxcsrIn = (fMxcsrIn & ~X86_MXCSR_XCPT_MASK) | ((fXcpt & ~fUnmasked) << X86_MXCSR_XCPT_MASK_SHIFT); 8499 uint32_t fMxcsr3 = fMxcsrIn; 8500 pfn(&fMxcsr3, &TestData.OutVal, TestData.InVal.u); 8501 TestData.fMxcsrIn = fMxcsrIn; 8502 TestData.fMxcsrOut = fMxcsr3; 8503 RTStrmWrite(pStrmOut, &TestData, sizeof(TestData)); 8504 } 8505 } 8506 } 8507 } 8508 rc = RTStrmClose(pStrmOut); 8509 if (RT_FAILURE(rc)) 8510 { 8511 RTMsgError("Failed to close data file for %s: %Rrc", g_aSseConvertXmmR32Mm[iFn].pszName, rc); 8512 return RTEXITCODE_FAILURE; 8513 } 8514 } 8515 8516 return RTEXITCODE_SUCCESS; 8517 } 8518 #endif 8519 8520 static void SseConvertXmmR32MmTest(void) 8521 { 8522 for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aSseConvertXmmR32Mm); iFn++) 8523 { 8524 if (!SubTestAndCheckIfEnabled(g_aSseConvertXmmR32Mm[iFn].pszName)) 8525 continue; 8526 8527 uint32_t const cTests = *g_aSseConvertXmmR32Mm[iFn].pcTests; 8528 SSE_CONVERT_XMM_MM_TEST_T const * const paTests = g_aSseConvertXmmR32Mm[iFn].paTests; 8529 PFNIEMAIMPLMXCSRU128U64 pfn = g_aSseConvertXmmR32Mm[iFn].pfn; 8530 uint32_t const cVars = COUNT_VARIATIONS(g_aSseConvertXmmR32Mm[iFn]); 8531 if (!cTests) RTTestSkipped(g_hTest, "no tests"); 8532 for (uint32_t iVar = 0; iVar < cVars; iVar++) 8533 { 8534 for (uint32_t iTest = 0; iTest < cTests / sizeof(*paTests); iTest++) 8535 { 8536 X86XMMREG ValOut; 8537 uint32_t fMxcsr = paTests[iTest].fMxcsrIn; 8538 pfn(&fMxcsr, &ValOut, paTests[iTest].InVal.u); 8539 if ( fMxcsr != paTests[iTest].fMxcsrOut 8540 || !RTFLOAT32U_ARE_IDENTICAL(&ValOut.ar32[0], &paTests[iTest].OutVal.ar32[0]) 8541 || !RTFLOAT32U_ARE_IDENTICAL(&ValOut.ar32[1], &paTests[iTest].OutVal.ar32[1])) 8542 RTTestFailed(g_hTest, "#%04u%s: mxcsr=%#08x in1=%RI32'%RI32\n" 8543 "%s -> mxcsr=%#08x %s'%s\n" 8544 "%s expected %#08x %s'%s%s%s (%s)\n", 8545 iTest, iVar ? "/n" : "", paTests[iTest].fMxcsrIn, 8546 paTests[iTest].InVal.ai32[0], paTests[iTest].InVal.ai32[1], 8547 iVar ? " " : "", fMxcsr, 8548 FormatR32(&ValOut.ar32[0]), FormatR32(&ValOut.ar32[1]), 8549 iVar ? " " : "", paTests[iTest].fMxcsrOut, 8550 FormatR32(&paTests[iTest].OutVal.ar32[0]), FormatR32(&paTests[iTest].OutVal.ar32[1]), 8551 MxcsrDiff(fMxcsr, paTests[iTest].fMxcsrOut), 8552 ( !RTFLOAT32U_ARE_IDENTICAL(&ValOut.ar32[0], &paTests[iTest].OutVal.ar32[0]) 8553 || !RTFLOAT32U_ARE_IDENTICAL(&ValOut.ar32[1], &paTests[iTest].OutVal.ar32[1])) 8252 8554 ? " - val" : "", 8253 8555 FormatMxcsr(paTests[iTest].fMxcsrIn)); … … 8653 8955 if (rcExit == RTEXITCODE_SUCCESS) 8654 8956 rcExit = SseConvertMmXmmGenerate(pszDataFileFmtConv, cTests); 8957 if (rcExit == RTEXITCODE_SUCCESS) 8958 rcExit = SseConvertXmmR32MmGenerate(pszDataFileFmtConv, cTests); 8959 if (rcExit == RTEXITCODE_SUCCESS) 8960 rcExit = SseConvertXmmR64MmGenerate(pszDataFileFmtConv, cTests); 8655 8961 if (rcExit != RTEXITCODE_SUCCESS) 8656 8962 return rcExit; … … 8776 9082 SseConvertXmmR64I32Test(); 8777 9083 SseConvertMmXmmTest(); 9084 SseConvertXmmR32MmTest(); 9085 SseConvertXmmR64MmTest(); 8778 9086 } 8779 9087 } -
trunk/src/VBox/VMM/testcase/tstIEMAImpl.h
r96917 r96922 501 501 X86XMMREG InVal; 502 502 } SSE_CONVERT_MM_XMM_TEST_T; 503 504 typedef struct SSE_CONVERT_XMM_MM_TEST_T 505 { 506 uint32_t fMxcsrIn; 507 uint32_t fMxcsrOut; 508 RTUINT64U InVal; 509 X86XMMREG OutVal; 510 } SSE_CONVERT_XMM_MM_TEST_T; 503 511 504 512 /** @} */ … … 964 972 TSTIEM_DECLARE_TEST_ARRAY_BIN(SseConvert, SSE_CONVERT_MM_XMM_TEST_T, cvttpd2pi_u128 ); 965 973 974 TSTIEM_DECLARE_TEST_ARRAY_BIN(SseConvert, SSE_CONVERT_XMM_MM_TEST_T, cvtpi2ps_u128 ); 975 TSTIEM_DECLARE_TEST_ARRAY_BIN(SseConvert, SSE_CONVERT_XMM_MM_TEST_T, cvtpi2pd_u128 ); 976 966 977 RT_C_DECLS_END 967 978 -
trunk/src/VBox/VMM/testcase/tstIEMAImplDataSseBinary.S
r96917 r96922 145 145 IEM_TEST_DATA cvtpd2pi_u128, "tstIEMAImplDataSseConvert-cvtpd2pi_u128.bin" 146 146 IEM_TEST_DATA cvttpd2pi_u128, "tstIEMAImplDataSseConvert-cvttpd2pi_u128.bin" 147 148 IEM_TEST_DATA cvtpi2ps_u128, "tstIEMAImplDataSseConvert-cvtpi2ps_u128.bin" 149 IEM_TEST_DATA cvtpi2pd_u128, "tstIEMAImplDataSseConvert-cvtpi2pd_u128.bin" -
trunk/src/VBox/VMM/testcase/tstIEMAImplDataSseBinary.asm
r96917 r96922 143 143 IEM_TEST_DATA cvtpd2pi_u128, "tstIEMAImplDataSseConvert-cvtpd2pi_u128.bin" 144 144 IEM_TEST_DATA cvttpd2pi_u128, "tstIEMAImplDataSseConvert-cvttpd2pi_u128.bin" 145 146 IEM_TEST_DATA cvtpi2ps_u128, "tstIEMAImplDataSseConvert-cvtpi2ps_u128.bin" 147 IEM_TEST_DATA cvtpi2pd_u128, "tstIEMAImplDataSseConvert-cvtpi2pd_u128.bin"
Note:
See TracChangeset
for help on using the changeset viewer.