CSPspEmu.Core.Tests.CpuEmitterTest.FloatTest C# (CSharp) Method

FloatTest() private method

private FloatTest ( ) : void
return void
        public void FloatTest()
        {
            //CpuThreadState.FPR[27] = 2.0f;
            //CpuThreadState.FPR[28] = 20.0f;
            CpuThreadState.FPR[29] = 81.0f;
            CpuThreadState.FPR[30] = -1.0f;
            CpuThreadState.FPR[31] = 3.5f;
            float MemoryValue = -2.0f;

            CpuThreadState.Memory.WriteSafe<float>(0x88000000, MemoryValue);

            ExecuteAssembly(@"
                ; Unary
                mov.s  f0, f30
                neg.s  f1, f31
                sqrt.s f2, f29
                abs.s  f3, f30
                abs.s  f4, f31

                ; Binary
                add.s f10, f30, f31
                sub.s f11, f30, f31
                div.s f12, f30, f31
                mul.s f13, f30, f31

                li r10, 0x88000000
                lwc1 f14, 0(r10)
                swc1 f14, 4(r10)
                lwc1 f15, 4(r10)
            ");

            // Unary
            Assert.AreEqual(CpuThreadState.FPR[0], CpuThreadState.FPR[30]);
            Assert.AreEqual(CpuThreadState.FPR[1], -CpuThreadState.FPR[31]);
            Assert.AreEqual(CpuThreadState.FPR[2], Math.Sqrt(CpuThreadState.FPR[29]));
            Assert.AreEqual(CpuThreadState.FPR[3], Math.Abs(CpuThreadState.FPR[30]));
            Assert.AreEqual(CpuThreadState.FPR[4], Math.Abs(CpuThreadState.FPR[31]));

            Assert.AreEqual(CpuThreadState.FPR[10], CpuThreadState.FPR[30] + CpuThreadState.FPR[31]);
            Assert.AreEqual(CpuThreadState.FPR[11], CpuThreadState.FPR[30] - CpuThreadState.FPR[31]);
            Assert.AreEqual(CpuThreadState.FPR[12], CpuThreadState.FPR[30] / CpuThreadState.FPR[31]);
            Assert.AreEqual(CpuThreadState.FPR[13], CpuThreadState.FPR[30] * CpuThreadState.FPR[31]);
            Assert.AreEqual(CpuThreadState.FPR[14], MemoryValue);
            Assert.AreEqual(CpuThreadState.FPR[15], MemoryValue);
        }