Example #1
0
        public static int _vf2iz(float value, int imm5)
        {
            var scalabValue = MathFloat.Scalb(value, imm5);
            var doubleValue = value >= 0 ? MathFloat.Floor(scalabValue) : MathFloat.Ceil(scalabValue);

            return(double.IsNaN(doubleValue) ? 0x7FFFFFFF : doubleValue);
        }
Example #2
0
        public static int _cvt_w_s_impl(CpuThreadState cpuThreadState, float fs)
        {
            //Console.WriteLine("_cvt_w_s_impl: {0}", CpuThreadState.FPR[FS]);
            switch (cpuThreadState.Fcr31.Rm)
            {
            case CpuThreadState.Fcr31Struct.TypeEnum.Rint: return((int)MathFloat.Rint(fs));

            case CpuThreadState.Fcr31Struct.TypeEnum.Cast: return((int)MathFloat.Cast(fs));

            case CpuThreadState.Fcr31Struct.TypeEnum.Ceil: return((int)MathFloat.Ceil(fs));

            case CpuThreadState.Fcr31Struct.TypeEnum.Floor: return((int)MathFloat.Floor(fs));
            }

            throw new InvalidCastException("RM has an invalid value!!");
            //case CpuThreadState.FCR31.TypeEnum.Floor: CpuThreadState.FPR_I[FD] = (int)MathFloat.Floor(CpuThreadState.FPR[FS]); break;
        }
Example #3
0
 public void floor_w_s() => AdvancePC().SetFD_I(MathFloat.Floor(FS));
Example #4
0
        static public void _cvt_w_s_impl(CpuThreadState CpuThreadState, int FD, int FS)
        {
            //Console.WriteLine("_cvt_w_s_impl: {0}", CpuThreadState.FPR[FS]);
            switch (CpuThreadState.Fcr31.RM)
            {
            case CpuThreadState.FCR31.TypeEnum.Rint: CpuThreadState.FPR_I[FD] = (int)MathFloat.Rint(CpuThreadState.FPR[FS]); break;

            case CpuThreadState.FCR31.TypeEnum.Cast: CpuThreadState.FPR_I[FD] = (int)CpuThreadState.FPR[FS]; break;

            case CpuThreadState.FCR31.TypeEnum.Ceil: CpuThreadState.FPR_I[FD] = (int)MathFloat.Ceil(CpuThreadState.FPR[FS]); break;

            case CpuThreadState.FCR31.TypeEnum.Floor: CpuThreadState.FPR_I[FD] = (int)MathFloat.Floor(CpuThreadState.FPR[FS]); break;
            }
        }