예제 #1
0
        private void ManageFpSkips(FpSkips fpSkips)
        {
            if (fpSkips.HasFlag(FpSkips.IfNaNS))
            {
                if (float.IsNaN(VectorExtractSingle(_unicornEmu.Q[0], (byte)0)))
                {
                    Assert.Ignore("NaN test.");
                }
            }
            else if (fpSkips.HasFlag(FpSkips.IfNaND))
            {
                if (double.IsNaN(VectorExtractDouble(_unicornEmu.Q[0], (byte)0)))
                {
                    Assert.Ignore("NaN test.");
                }
            }

            if (fpSkips.HasFlag(FpSkips.IfUnderflow))
            {
                if ((_unicornEmu.Fpsr & (int)Fpsr.Ufc) != 0)
                {
                    Assert.Ignore("Underflow test.");
                }
            }

            if (fpSkips.HasFlag(FpSkips.IfOverflow))
            {
                if ((_unicornEmu.Fpsr & (int)Fpsr.Ofc) != 0)
                {
                    Assert.Ignore("Overflow test.");
                }
            }
        }
예제 #2
0
파일: CpuTest.cs 프로젝트: xuebai5/Ryujinx
        private void ManageFpSkips(FpSkips fpSkips)
        {
            if (fpSkips.HasFlag(FpSkips.IfNaNS))
            {
                if (float.IsNaN(_unicornEmu.Q[0].AsFloat()))
                {
                    Assert.Ignore("NaN test.");
                }
            }
            else if (fpSkips.HasFlag(FpSkips.IfNaND))
            {
                if (double.IsNaN(_unicornEmu.Q[0].AsDouble()))
                {
                    Assert.Ignore("NaN test.");
                }
            }

            if (fpSkips.HasFlag(FpSkips.IfUnderflow))
            {
                if ((_unicornEmu.Fpsr & (int)Fpsr.Ufc) != 0)
                {
                    Assert.Ignore("Underflow test.");
                }
            }

            if (fpSkips.HasFlag(FpSkips.IfOverflow))
            {
                if ((_unicornEmu.Fpsr & (int)Fpsr.Ofc) != 0)
                {
                    Assert.Ignore("Overflow test.");
                }
            }
        }
예제 #3
0
        private void ManageFpSkips(FpSkips FpSkips)
        {
            if (FpSkips.HasFlag(FpSkips.IfNaN_S))
            {
                if (float.IsNaN(VectorExtractSingle(UnicornEmu.Q[0], (byte)0)))
                {
                    Assert.Ignore("NaN test.");
                }
            }
            else if (FpSkips.HasFlag(FpSkips.IfNaN_D))
            {
                if (double.IsNaN(VectorExtractDouble(UnicornEmu.Q[0], (byte)0)))
                {
                    Assert.Ignore("NaN test.");
                }
            }

            if (FpSkips.HasFlag(FpSkips.IfUnderflow))
            {
                if ((UnicornEmu.Fpsr & (int)FPSR.UFC) != 0)
                {
                    Assert.Ignore("Underflow test.");
                }
            }

            if (FpSkips.HasFlag(FpSkips.IfOverflow))
            {
                if ((UnicornEmu.Fpsr & (int)FPSR.OFC) != 0)
                {
                    Assert.Ignore("Overflow test.");
                }
            }
        }