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

FloatCompTest() private method

private FloatCompTest ( ) : void
return void
        public void FloatCompTest()
        {
            // %t, %s, %a, %ne
            CpuThreadState.FPR[1] = 1.0f;
            CpuThreadState.FPR[2] = 2.0f;

            ExecuteAssembly(@"c.eq.s f1, f2");
            Assert.AreEqual(false, CpuThreadState.Fcr31.CC);

            ExecuteAssembly(@"c.eq.s f1, f1");
            Assert.AreEqual(true, CpuThreadState.Fcr31.CC);

            ExecuteAssembly(@"c.lt.s f1, f2");
            Assert.AreEqual(true, CpuThreadState.Fcr31.CC);

            ExecuteAssembly(@"c.lt.s f2, f1");
            Assert.AreEqual(false, CpuThreadState.Fcr31.CC);

            ExecuteAssembly(@"c.lt.s f1, f1");
            Assert.AreEqual(false, CpuThreadState.Fcr31.CC);

            Action<String> Gen = (INSTRUCTION_NAME) =>
            {
                ExecuteAssembly(@"
                    li r1, -1
                    c.eq.s f1, f1
                    %INSTRUCTION_NAME% label
                    nop
                    li r1, 0
                    b end
                    nop
                label:
                    li r1, 1
                    b end
                    nop
                end:
                    nop
                ".Replace("%INSTRUCTION_NAME%", INSTRUCTION_NAME));
            };

            Gen("bc1t");
            Assert.AreEqual(1, CpuThreadState.GPR[1]);

            Gen("bc1f");
            Assert.AreEqual(0, CpuThreadState.GPR[1]);
        }