CSPspEmu.Core.Cpu.Emitter.CpuEmitter._vcmovtf C# (CSharp) Method

_vcmovtf() public method

public _vcmovtf ( bool True ) : AstNodeStm
True bool
return AstNodeStm
        public AstNodeStm _vcmovtf(bool True)
        {
            var Register = (int)Instruction.IMM3;

            Func<int, AstNodeExpr> _VCC = (Index) =>
            {
                AstNodeExpr Ret = ast.VCC(Index);
                if (!True) Ret = ast.Unary("!", Ret);
                return Ret;
            };

            if (Register < 6)
            {
                // TODO: CHECK THIS!
                return ast.IfElse(
                    _VCC(Register),
                    VEC_VD.SetVector(Index => VEC_VS[Index], PC),
                    ast.Statements(
                        ast.Assign(ast.PrefixSourceEnabled(), false),
                        //ast.If(ast.PrefixDestinationEnabled(), VEC_VD.SetVector(Index => VEC_VD[Index], PC))
                        ast.If(ast.PrefixDestinationEnabled(), VEC_VD.SetVector(Index => VEC_VD[Index], PC))
                    )
                );
            }

            if (Register == 6)
            {
                return VEC_VD.SetVector(Index => ast.Ternary(_VCC(Index), VEC_VS[Index], VEC_VD[Index]), PC);
            }

            // Register == 7

            // Never copy (checked on a PSP)
            return ast.Statement();
        }
CpuEmitter