Changeset 96732 in vbox
- Timestamp:
- Sep 14, 2022 9:21:31 AM (3 years ago)
- svn:sync-xref-src-repo-rev:
- 153619
- Location:
- trunk/src/VBox/VMM/testcase
- Files:
-
- 4 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/testcase/Makefile.kmk
r96727 r96732 284 284 tstIEMAImplDataSseBinary-cvtsd2si_i32_r64.bin \ 285 285 tstIEMAImplDataSseBinary-cvttsd2si_i64_r64.bin \ 286 tstIEMAImplDataSseBinary-cvtsd2si_i64_r64.bin 286 tstIEMAImplDataSseBinary-cvtsd2si_i64_r64.bin \ 287 tstIEMAImplDataSseBinary-cvttss2si_i32_r32.bin \ 288 tstIEMAImplDataSseBinary-cvtss2si_i32_r32.bin \ 289 tstIEMAImplDataSseBinary-cvttss2si_i64_r32.bin \ 290 tstIEMAImplDataSseBinary-cvtss2si_i64_r32.bin 287 291 288 292 tstIEMAImpl_TEMPLATE = VBOXR3TSTEXE -
trunk/src/VBox/VMM/testcase/tstIEMAImpl.cpp
r96727 r96732 5581 5581 5582 5582 5583 /* 5584 * SSE operations converting single single-precision floating point values to signed double-word integers (cvttss2si and friends). 5585 */ 5586 TYPEDEF_SUBTEST_TYPE(SSE_BINARY_I32_R32_T, SSE_BINARY_I32_R32_TEST_T, PFNIEMAIMPLSSEF2I32U32); 5587 5588 static const SSE_BINARY_I32_R32_T g_aSseBinaryI32R32[] = 5589 { 5590 ENTRY_BIN(cvttss2si_i32_r32), 5591 ENTRY_BIN(cvtss2si_i32_r32), 5592 }; 5593 5594 #ifdef TSTIEMAIMPL_WITH_GENERATOR 5595 static RTEXITCODE SseBinaryI32R32Generate(const char *pszDataFileFmt, uint32_t cTests) 5596 { 5597 cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */ 5598 5599 static struct { RTFLOAT32U Val; } const s_aSpecials[] = 5600 { 5601 { RTFLOAT32U_INIT_C(0, 8388607, RTFLOAT32U_EXP_MAX - 1) }, 5602 /** @todo More specials. */ 5603 }; 5604 5605 X86FXSTATE State; 5606 RT_ZERO(State); 5607 uint32_t cMinNormalPairs = (cTests - 144) / 4; 5608 for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aSseBinaryI32R32); iFn++) 5609 { 5610 PFNIEMAIMPLSSEF2I32U32 const pfn = g_aSseBinaryI32R32[iFn].pfnNative ? g_aSseBinaryI32R32[iFn].pfnNative : g_aSseBinaryI32R32[iFn].pfn; 5611 5612 PRTSTREAM pStrmOut = NULL; 5613 int rc = RTStrmOpenF("wb", &pStrmOut, pszDataFileFmt, g_aSseBinaryI32R32[iFn].pszName); 5614 if (RT_FAILURE(rc)) 5615 { 5616 RTMsgError("Failed to open data file for %s for writing: %Rrc", g_aSseBinaryI32R32[iFn].pszName, rc); 5617 return RTEXITCODE_FAILURE; 5618 } 5619 5620 uint32_t cNormalInputPairs = 0; 5621 for (uint32_t iTest = 0; iTest < cTests + RT_ELEMENTS(s_aSpecials); iTest += 1) 5622 { 5623 SSE_BINARY_I32_R32_TEST_T TestData; RT_ZERO(TestData); 5624 5625 TestData.r32ValIn = iTest < cTests ? RandR32Src(iTest) : s_aSpecials[iTest - cTests].Val; 5626 5627 if (RTFLOAT32U_IS_NORMAL(&TestData.r32ValIn)) 5628 cNormalInputPairs++; 5629 else if (cNormalInputPairs < cMinNormalPairs && iTest + cMinNormalPairs >= cTests && iTest < cTests) 5630 { 5631 iTest -= 1; 5632 continue; 5633 } 5634 5635 uint32_t const fMxcsr = RandMxcsr() & X86_MXCSR_XCPT_FLAGS; 5636 for (uint16_t iRounding = 0; iRounding < 4; iRounding++) 5637 for (uint8_t iDaz = 0; iDaz < 2; iDaz++) 5638 for (uint8_t iFz = 0; iFz < 2; iFz++) 5639 { 5640 State.MXCSR = (fMxcsr & ~X86_MXCSR_RC_MASK) 5641 | (iRounding << X86_MXCSR_RC_SHIFT) 5642 | (iDaz ? X86_MXCSR_DAZ : 0) 5643 | (iFz ? X86_MXCSR_FZ : 0) 5644 | X86_MXCSR_XCPT_MASK; 5645 uint32_t fMxcsrM; int32_t i32OutM; 5646 pfn(&State, &fMxcsrM, &i32OutM, &TestData.r32ValIn.u); 5647 TestData.fMxcsrIn = State.MXCSR; 5648 TestData.fMxcsrOut = fMxcsrM; 5649 TestData.i32ValOut = i32OutM; 5650 RTStrmWrite(pStrmOut, &TestData, sizeof(TestData)); 5651 5652 State.MXCSR = State.MXCSR & ~X86_MXCSR_XCPT_MASK; 5653 uint32_t fMxcsrU; int32_t i32OutU; 5654 pfn(&State, &fMxcsrU, &i32OutU, &TestData.r32ValIn.u); 5655 TestData.fMxcsrIn = State.MXCSR; 5656 TestData.fMxcsrOut = fMxcsrU; 5657 TestData.i32ValOut = i32OutU; 5658 RTStrmWrite(pStrmOut, &TestData, sizeof(TestData)); 5659 5660 uint16_t fXcpt = (fMxcsrM | fMxcsrU) & X86_MXCSR_XCPT_FLAGS; 5661 if (fXcpt) 5662 { 5663 State.MXCSR = (State.MXCSR & ~X86_MXCSR_XCPT_MASK) | fXcpt; 5664 uint32_t fMxcsr1; int32_t i32Out1; 5665 pfn(&State, &fMxcsr1, &i32Out1, &TestData.r32ValIn.u); 5666 TestData.fMxcsrIn = State.MXCSR; 5667 TestData.fMxcsrOut = fMxcsr1; 5668 TestData.i32ValOut = i32Out1; 5669 RTStrmWrite(pStrmOut, &TestData, sizeof(TestData)); 5670 5671 if (((fMxcsr1 & X86_MXCSR_XCPT_FLAGS) & fXcpt) != (fMxcsr1 & X86_MXCSR_XCPT_FLAGS)) 5672 { 5673 fXcpt |= fMxcsr1 & X86_MXCSR_XCPT_FLAGS; 5674 State.MXCSR = (State.MXCSR & ~X86_MXCSR_XCPT_MASK) | (fXcpt << X86_MXCSR_XCPT_MASK_SHIFT); 5675 uint32_t fMxcsr2; int32_t i32Out2; 5676 pfn(&State, &fMxcsr2, &i32Out2, &TestData.r32ValIn.u); 5677 TestData.fMxcsrIn = State.MXCSR; 5678 TestData.fMxcsrOut = fMxcsr2; 5679 TestData.i32ValOut = i32Out2; 5680 RTStrmWrite(pStrmOut, &TestData, sizeof(TestData)); 5681 } 5682 if (!RT_IS_POWER_OF_TWO(fXcpt)) 5683 for (uint16_t fUnmasked = 1; fUnmasked <= X86_MXCSR_PE; fUnmasked <<= 1) 5684 if (fUnmasked & fXcpt) 5685 { 5686 State.MXCSR = (State.MXCSR & ~X86_MXCSR_XCPT_MASK) | ((fXcpt & ~fUnmasked) << X86_MXCSR_XCPT_MASK_SHIFT); 5687 uint32_t fMxcsr3; int32_t i32Out3; 5688 pfn(&State, &fMxcsr3, &i32Out3, &TestData.r32ValIn.u); 5689 TestData.fMxcsrIn = State.MXCSR; 5690 TestData.fMxcsrOut = fMxcsr3; 5691 TestData.i32ValOut = i32Out3; 5692 RTStrmWrite(pStrmOut, &TestData, sizeof(TestData)); 5693 } 5694 } 5695 } 5696 } 5697 rc = RTStrmClose(pStrmOut); 5698 if (RT_FAILURE(rc)) 5699 { 5700 RTMsgError("Failed to close data file for %s: %Rrc", g_aSseBinaryI32R32[iFn].pszName, rc); 5701 return RTEXITCODE_FAILURE; 5702 } 5703 } 5704 5705 return RTEXITCODE_SUCCESS; 5706 } 5707 #endif 5708 5709 5710 static void SseBinaryI32R32Test(void) 5711 { 5712 X86FXSTATE State; 5713 RT_ZERO(State); 5714 for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aSseBinaryI32R32); iFn++) 5715 { 5716 if (!SubTestAndCheckIfEnabled(g_aSseBinaryI32R32[iFn].pszName)) 5717 continue; 5718 5719 uint32_t const cTests = *g_aSseBinaryI32R32[iFn].pcTests; 5720 SSE_BINARY_I32_R32_TEST_T const * const paTests = g_aSseBinaryI32R32[iFn].paTests; 5721 PFNIEMAIMPLSSEF2I32U32 pfn = g_aSseBinaryI32R32[iFn].pfn; 5722 uint32_t const cVars = COUNT_VARIATIONS(g_aSseBinaryI32R32[iFn]); 5723 if (!cTests) RTTestSkipped(g_hTest, "no tests"); 5724 for (uint32_t iVar = 0; iVar < cVars; iVar++) 5725 { 5726 for (uint32_t iTest = 0; iTest < cTests / sizeof(SSE_BINARY_I32_R32_TEST_T); iTest++) 5727 { 5728 uint32_t fMxcsr = 0; 5729 int32_t i32Dst = 0; 5730 5731 State.MXCSR = paTests[iTest].fMxcsrIn; 5732 pfn(&State, &fMxcsr, &i32Dst, &paTests[iTest].r32ValIn.u); 5733 if ( fMxcsr != paTests[iTest].fMxcsrOut 5734 || i32Dst != paTests[iTest].i32ValOut) 5735 RTTestFailed(g_hTest, "#%04u%s: mxcsr=%#08x in1=%s\n" 5736 "%s -> mxcsr=%#08x %RI32\n" 5737 "%s expected %#08x %RI32%s%s (%s)\n", 5738 iTest, iVar ? "/n" : "", paTests[iTest].fMxcsrIn, 5739 FormatR32(&paTests[iTest].r32ValIn), 5740 iVar ? " " : "", fMxcsr, i32Dst, 5741 iVar ? " " : "", paTests[iTest].fMxcsrOut, paTests[iTest].i32ValOut, 5742 MxcsrDiff(fMxcsr, paTests[iTest].fMxcsrOut), 5743 i32Dst != paTests[iTest].i32ValOut 5744 ? " - val" : "", 5745 FormatMxcsr(paTests[iTest].fMxcsrIn) ); 5746 } 5747 } 5748 } 5749 } 5750 5751 5752 /* 5753 * SSE operations converting single single-precision floating point values to signed quad-word integers (cvttss2si and friends). 5754 */ 5755 TYPEDEF_SUBTEST_TYPE(SSE_BINARY_I64_R32_T, SSE_BINARY_I64_R32_TEST_T, PFNIEMAIMPLSSEF2I64U32); 5756 5757 static const SSE_BINARY_I64_R32_T g_aSseBinaryI64R32[] = 5758 { 5759 ENTRY_BIN(cvttss2si_i64_r32), 5760 ENTRY_BIN(cvtss2si_i64_r32), 5761 }; 5762 5763 #ifdef TSTIEMAIMPL_WITH_GENERATOR 5764 static RTEXITCODE SseBinaryI64R32Generate(const char *pszDataFileFmt, uint32_t cTests) 5765 { 5766 cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */ 5767 5768 static struct { RTFLOAT32U Val; } const s_aSpecials[] = 5769 { 5770 { RTFLOAT32U_INIT_C(0, 8388607, RTFLOAT32U_EXP_MAX - 1) }, 5771 /** @todo More specials. */ 5772 }; 5773 5774 X86FXSTATE State; 5775 RT_ZERO(State); 5776 uint32_t cMinNormalPairs = (cTests - 144) / 4; 5777 for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aSseBinaryI64R32); iFn++) 5778 { 5779 PFNIEMAIMPLSSEF2I64U32 const pfn = g_aSseBinaryI64R32[iFn].pfnNative ? g_aSseBinaryI64R32[iFn].pfnNative : g_aSseBinaryI64R32[iFn].pfn; 5780 5781 PRTSTREAM pStrmOut = NULL; 5782 int rc = RTStrmOpenF("wb", &pStrmOut, pszDataFileFmt, g_aSseBinaryI64R32[iFn].pszName); 5783 if (RT_FAILURE(rc)) 5784 { 5785 RTMsgError("Failed to open data file for %s for writing: %Rrc", g_aSseBinaryI64R32[iFn].pszName, rc); 5786 return RTEXITCODE_FAILURE; 5787 } 5788 5789 uint32_t cNormalInputPairs = 0; 5790 for (uint32_t iTest = 0; iTest < cTests + RT_ELEMENTS(s_aSpecials); iTest += 1) 5791 { 5792 SSE_BINARY_I64_R32_TEST_T TestData; RT_ZERO(TestData); 5793 5794 TestData.r32ValIn = iTest < cTests ? RandR32Src(iTest) : s_aSpecials[iTest - cTests].Val; 5795 5796 if (RTFLOAT32U_IS_NORMAL(&TestData.r32ValIn)) 5797 cNormalInputPairs++; 5798 else if (cNormalInputPairs < cMinNormalPairs && iTest + cMinNormalPairs >= cTests && iTest < cTests) 5799 { 5800 iTest -= 1; 5801 continue; 5802 } 5803 5804 uint32_t const fMxcsr = RandMxcsr() & X86_MXCSR_XCPT_FLAGS; 5805 for (uint16_t iRounding = 0; iRounding < 4; iRounding++) 5806 for (uint8_t iDaz = 0; iDaz < 2; iDaz++) 5807 for (uint8_t iFz = 0; iFz < 2; iFz++) 5808 { 5809 State.MXCSR = (fMxcsr & ~X86_MXCSR_RC_MASK) 5810 | (iRounding << X86_MXCSR_RC_SHIFT) 5811 | (iDaz ? X86_MXCSR_DAZ : 0) 5812 | (iFz ? X86_MXCSR_FZ : 0) 5813 | X86_MXCSR_XCPT_MASK; 5814 uint32_t fMxcsrM; int64_t i64OutM; 5815 pfn(&State, &fMxcsrM, &i64OutM, &TestData.r32ValIn.u); 5816 TestData.fMxcsrIn = State.MXCSR; 5817 TestData.fMxcsrOut = fMxcsrM; 5818 TestData.i64ValOut = i64OutM; 5819 RTStrmWrite(pStrmOut, &TestData, sizeof(TestData)); 5820 5821 State.MXCSR = State.MXCSR & ~X86_MXCSR_XCPT_MASK; 5822 uint32_t fMxcsrU; int64_t i64OutU; 5823 pfn(&State, &fMxcsrU, &i64OutU, &TestData.r32ValIn.u); 5824 TestData.fMxcsrIn = State.MXCSR; 5825 TestData.fMxcsrOut = fMxcsrU; 5826 TestData.i64ValOut = i64OutU; 5827 RTStrmWrite(pStrmOut, &TestData, sizeof(TestData)); 5828 5829 uint16_t fXcpt = (fMxcsrM | fMxcsrU) & X86_MXCSR_XCPT_FLAGS; 5830 if (fXcpt) 5831 { 5832 State.MXCSR = (State.MXCSR & ~X86_MXCSR_XCPT_MASK) | fXcpt; 5833 uint32_t fMxcsr1; int64_t i64Out1; 5834 pfn(&State, &fMxcsr1, &i64Out1, &TestData.r32ValIn.u); 5835 TestData.fMxcsrIn = State.MXCSR; 5836 TestData.fMxcsrOut = fMxcsr1; 5837 TestData.i64ValOut = i64Out1; 5838 RTStrmWrite(pStrmOut, &TestData, sizeof(TestData)); 5839 5840 if (((fMxcsr1 & X86_MXCSR_XCPT_FLAGS) & fXcpt) != (fMxcsr1 & X86_MXCSR_XCPT_FLAGS)) 5841 { 5842 fXcpt |= fMxcsr1 & X86_MXCSR_XCPT_FLAGS; 5843 State.MXCSR = (State.MXCSR & ~X86_MXCSR_XCPT_MASK) | (fXcpt << X86_MXCSR_XCPT_MASK_SHIFT); 5844 uint32_t fMxcsr2; int64_t i64Out2; 5845 pfn(&State, &fMxcsr2, &i64Out2, &TestData.r32ValIn.u); 5846 TestData.fMxcsrIn = State.MXCSR; 5847 TestData.fMxcsrOut = fMxcsr2; 5848 TestData.i64ValOut = i64Out2; 5849 RTStrmWrite(pStrmOut, &TestData, sizeof(TestData)); 5850 } 5851 if (!RT_IS_POWER_OF_TWO(fXcpt)) 5852 for (uint16_t fUnmasked = 1; fUnmasked <= X86_MXCSR_PE; fUnmasked <<= 1) 5853 if (fUnmasked & fXcpt) 5854 { 5855 State.MXCSR = (State.MXCSR & ~X86_MXCSR_XCPT_MASK) | ((fXcpt & ~fUnmasked) << X86_MXCSR_XCPT_MASK_SHIFT); 5856 uint32_t fMxcsr3; int64_t i64Out3; 5857 pfn(&State, &fMxcsr3, &i64Out3, &TestData.r32ValIn.u); 5858 TestData.fMxcsrIn = State.MXCSR; 5859 TestData.fMxcsrOut = fMxcsr3; 5860 TestData.i64ValOut = i64Out3; 5861 RTStrmWrite(pStrmOut, &TestData, sizeof(TestData)); 5862 } 5863 } 5864 } 5865 } 5866 rc = RTStrmClose(pStrmOut); 5867 if (RT_FAILURE(rc)) 5868 { 5869 RTMsgError("Failed to close data file for %s: %Rrc", g_aSseBinaryI64R32[iFn].pszName, rc); 5870 return RTEXITCODE_FAILURE; 5871 } 5872 } 5873 5874 return RTEXITCODE_SUCCESS; 5875 } 5876 #endif 5877 5878 5879 static void SseBinaryI64R32Test(void) 5880 { 5881 X86FXSTATE State; 5882 RT_ZERO(State); 5883 for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aSseBinaryI64R32); iFn++) 5884 { 5885 if (!SubTestAndCheckIfEnabled(g_aSseBinaryI64R32[iFn].pszName)) 5886 continue; 5887 5888 uint32_t const cTests = *g_aSseBinaryI64R32[iFn].pcTests; 5889 SSE_BINARY_I64_R32_TEST_T const * const paTests = g_aSseBinaryI64R32[iFn].paTests; 5890 PFNIEMAIMPLSSEF2I64U32 pfn = g_aSseBinaryI64R32[iFn].pfn; 5891 uint32_t const cVars = COUNT_VARIATIONS(g_aSseBinaryI64R32[iFn]); 5892 if (!cTests) RTTestSkipped(g_hTest, "no tests"); 5893 for (uint32_t iVar = 0; iVar < cVars; iVar++) 5894 { 5895 for (uint32_t iTest = 0; iTest < cTests / sizeof(SSE_BINARY_I64_R64_TEST_T); iTest++) 5896 { 5897 uint32_t fMxcsr = 0; 5898 int64_t i64Dst = 0; 5899 5900 State.MXCSR = paTests[iTest].fMxcsrIn; 5901 pfn(&State, &fMxcsr, &i64Dst, &paTests[iTest].r32ValIn.u); 5902 if ( fMxcsr != paTests[iTest].fMxcsrOut 5903 || i64Dst != paTests[iTest].i64ValOut) 5904 RTTestFailed(g_hTest, "#%04u%s: mxcsr=%#08x in1=%s\n" 5905 "%s -> mxcsr=%#08x %RI64\n" 5906 "%s expected %#08x %RI64%s%s (%s)\n", 5907 iTest, iVar ? "/n" : "", paTests[iTest].fMxcsrIn, 5908 FormatR32(&paTests[iTest].r32ValIn), 5909 iVar ? " " : "", fMxcsr, i64Dst, 5910 iVar ? " " : "", paTests[iTest].fMxcsrOut, paTests[iTest].i64ValOut, 5911 MxcsrDiff(fMxcsr, paTests[iTest].fMxcsrOut), 5912 i64Dst != paTests[iTest].i64ValOut 5913 ? " - val" : "", 5914 FormatMxcsr(paTests[iTest].fMxcsrIn) ); 5915 } 5916 } 5917 } 5918 } 5919 5920 5583 5921 5584 5922 int main(int argc, char **argv) … … 5927 6265 if (rcExit == RTEXITCODE_SUCCESS) 5928 6266 rcExit = SseBinaryI64R64Generate(pszDataFileFmt, cTests); 6267 if (rcExit == RTEXITCODE_SUCCESS) 6268 rcExit = SseBinaryI32R32Generate(pszDataFileFmt, cTests); 6269 if (rcExit == RTEXITCODE_SUCCESS) 6270 rcExit = SseBinaryI64R32Generate(pszDataFileFmt, cTests); 5929 6271 if (rcExit != RTEXITCODE_SUCCESS) 5930 6272 return rcExit; … … 6028 6370 SseBinaryI32R64Test(); 6029 6371 SseBinaryI64R64Test(); 6372 SseBinaryI32R32Test(); 6373 SseBinaryI64R32Test(); 6030 6374 } 6031 6375 } -
trunk/src/VBox/VMM/testcase/tstIEMAImpl.h
r96727 r96732 401 401 RTFLOAT64U r64ValIn; 402 402 } SSE_BINARY_I64_R64_TEST_T; 403 404 typedef struct SSE_BINARY_I32_R32_TEST_T 405 { 406 uint32_t fMxcsrIn; 407 uint32_t fMxcsrOut; 408 uint32_t u32Padding; 409 int32_t i32ValOut; 410 RTFLOAT32U r32ValIn; 411 } SSE_BINARY_I32_R32_TEST_T; 412 413 typedef struct SSE_BINARY_I64_R32_TEST_T 414 { 415 uint32_t fMxcsrIn; 416 uint32_t fMxcsrOut; 417 int64_t i64ValOut; 418 RTFLOAT32U r32ValIn; 419 } SSE_BINARY_I64_R32_TEST_T; 403 420 404 421 /** @} */ … … 826 843 TSTIEM_DECLARE_TEST_ARRAY_BIN(SseBinary, SSE_BINARY_I64_R64_TEST_T, cvtsd2si_i64_r64 ); 827 844 845 TSTIEM_DECLARE_TEST_ARRAY_BIN(SseBinary, SSE_BINARY_I32_R32_TEST_T, cvttss2si_i32_r32 ); 846 TSTIEM_DECLARE_TEST_ARRAY_BIN(SseBinary, SSE_BINARY_I32_R32_TEST_T, cvtss2si_i32_r32 ); 847 848 TSTIEM_DECLARE_TEST_ARRAY_BIN(SseBinary, SSE_BINARY_I64_R32_TEST_T, cvttss2si_i64_r32 ); 849 TSTIEM_DECLARE_TEST_ARRAY_BIN(SseBinary, SSE_BINARY_I64_R32_TEST_T, cvtss2si_i64_r32 ); 850 828 851 RT_C_DECLS_END 829 852 -
trunk/src/VBox/VMM/testcase/tstIEMAImplDataSseBinary.S
r96727 r96732 107 107 IEM_TEST_DATA cvttsd2si_i64_r64, "tstIEMAImplDataSseBinary-cvttsd2si_i64_r64.bin" 108 108 IEM_TEST_DATA cvtsd2si_i64_r64, "tstIEMAImplDataSseBinary-cvtsd2si_i64_r64.bin" 109 110 IEM_TEST_DATA cvttss2si_i32_r32, "tstIEMAImplDataSseBinary-cvttss2si_i32_r32.bin" 111 IEM_TEST_DATA cvtss2si_i32_r32, "tstIEMAImplDataSseBinary-cvtss2si_i32_r32.bin" 112 113 IEM_TEST_DATA cvttss2si_i64_r32, "tstIEMAImplDataSseBinary-cvttss2si_i64_r32.bin" 114 IEM_TEST_DATA cvtss2si_i64_r32, "tstIEMAImplDataSseBinary-cvtss2si_i64_r32.bin" -
trunk/src/VBox/VMM/testcase/tstIEMAImplDataSseBinary.asm
r96727 r96732 105 105 IEM_TEST_DATA cvttsd2si_i64_r64, "tstIEMAImplDataSseBinary-cvttsd2si_i64_r64.bin" 106 106 IEM_TEST_DATA cvtsd2si_i64_r64, "tstIEMAImplDataSseBinary-cvtsd2si_i64_r64.bin" 107 108 IEM_TEST_DATA cvttss2si_i32_r32, "tstIEMAImplDataSseBinary-cvttss2si_i32_r32.bin" 109 IEM_TEST_DATA cvtss2si_i32_r32, "tstIEMAImplDataSseBinary-cvtss2si_i32_r32.bin" 110 111 IEM_TEST_DATA cvttss2si_i64_r32, "tstIEMAImplDataSseBinary-cvttss2si_i64_r32.bin" 112 IEM_TEST_DATA cvtss2si_i64_r32, "tstIEMAImplDataSseBinary-cvtss2si_i64_r32.bin"
Note:
See TracChangeset
for help on using the changeset viewer.