public inbox for newlib-cvs@sourceware.org help / color / mirror / Atom feed
From: Corinna Vinschen <corinna@sourceware.org> To: newlib-cvs@sourceware.org Subject: [newlib-cygwin] Removed Soft float from MIPS Date: Fri, 5 Feb 2021 09:32:43 +0000 (GMT) [thread overview] Message-ID: <20210205093243.79F06397142B@sourceware.org> (raw) https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=55a6e49a0813232bbca3b3e97bb03c22c5857639 commit 55a6e49a0813232bbca3b3e97bb03c22c5857639 Author: Eshan dhawan <eshandhawan51@gmail.com> Date: Thu Feb 4 03:34:06 2021 +0530 Removed Soft float from MIPS This Patch removes Soft Float code from MIPS. Instead It adds the soft float code from RISCV The code came from FreeBSD and assumes the FreeBSD softfp implementation not the one with GCC. That was an overlooked and fixed in the other fenv code already. Signed-off-by: Eshan Dhawan <eshandhawan51@gmail.com> Diff: --- newlib/libc/machine/mips/machine/fenv-softfloat.h | 49 +++++++++-------------- newlib/libm/machine/mips/fenv.c | 10 ----- 2 files changed, 18 insertions(+), 41 deletions(-) diff --git a/newlib/libc/machine/mips/machine/fenv-softfloat.h b/newlib/libc/machine/mips/machine/fenv-softfloat.h index cf13e73fc..43340e596 100644 --- a/newlib/libc/machine/mips/machine/fenv-softfloat.h +++ b/newlib/libc/machine/mips/machine/fenv-softfloat.h @@ -50,16 +50,11 @@ * doesn't matter how you define them. */ #include <errno.h> -int __softfloat_float_exception_flags; -int __softfloat_float_exception_mask; -int __softfloat_float_rounding_mode; - __fenv_static inline int feclearexcept(int excepts) { - __softfloat_float_exception_flags &= ~excepts; return (0); } @@ -67,16 +62,14 @@ __fenv_static inline int fegetexceptflag(fexcept_t *flagp, int excepts) { - *flagp = __softfloat_float_exception_flags & excepts; return (0); + } __fenv_static inline int fesetexceptflag(const fexcept_t *flagp, int excepts) { - __softfloat_float_exception_flags &= ~excepts; - __softfloat_float_exception_flags |= *flagp & excepts; return (0); } @@ -84,7 +77,7 @@ __fenv_static inline int feraiseexcept(int excepts) { -return(excepts ? -ENOTSUP : 0 ); + return( excepts != 0 ); } @@ -92,21 +85,25 @@ __fenv_static inline int fetestexcept(int excepts) { - return (__softfloat_float_exception_flags & excepts); + return (0); } __fenv_static inline int fegetround(void) { - return (__softfloat_float_rounding_mode); +#ifdef FE_TONEAREST + return FE_TONEAREST; +#else + return 0; +#endif + } __fenv_static inline int fesetround(int rounding_mode) { - __softfloat_float_rounding_mode = rounding_mode; return (0); } @@ -114,19 +111,13 @@ __fenv_static inline int fegetenv(fenv_t *envp) { - __set_env(*envp, __softfloat_float_exception_flags, - __softfloat_float_exception_mask, __softfloat_float_rounding_mode); return (0); } __fenv_static inline int feholdexcept(fenv_t *envp) { - fenv_t __env; - fegetenv(envp); - __softfloat_float_exception_flags = 0; - __softfloat_float_exception_mask = 0; return (0); } @@ -134,19 +125,19 @@ __fenv_static inline int fesetenv(const fenv_t *envp) { - __softfloat_float_exception_flags = __env_flags(*envp); - __softfloat_float_exception_mask = __env_mask(*envp); - __softfloat_float_rounding_mode = __env_round(*envp); + return (0); } __fenv_static inline int feupdateenv(const fenv_t *envp) { - int __oflags = __softfloat_float_exception_flags; - fesetenv(envp); - feraiseexcept(__oflags); +#if defined FE_NOMASK_ENV && FE_ALL_EXCEPT != 0 + if (envp == FE_NOMASK_ENV) + return 1; +#endif + return (0); } @@ -157,26 +148,22 @@ feupdateenv(const fenv_t *envp) __fenv_static inline int feenableexcept(int __mask) { - int __omask = __softfloat_float_exception_mask; - __softfloat_float_exception_mask |= __mask; - return (__omask); + return (0); } __fenv_static inline int fedisableexcept(int __mask) { - int __omask = __softfloat_float_exception_mask; - __softfloat_float_exception_mask &= ~__mask; - return (__omask); + return (0); } __fenv_static inline int fegetexcept(void) { - return (__softfloat_float_exception_mask); + return (0); } #endif /* __BSD_VISIBLE */ diff --git a/newlib/libm/machine/mips/fenv.c b/newlib/libm/machine/mips/fenv.c index 6e4bb8f33..e2179eb20 100644 --- a/newlib/libm/machine/mips/fenv.c +++ b/newlib/libm/machine/mips/fenv.c @@ -44,20 +44,10 @@ * this as a default environment. */ - #ifdef __mips_soft_float -#define __set_env(env, flags, mask, rnd) env = ((flags) \ - | (mask)<<_FPUSW_SHIFT \ - | (rnd) << 24) -#define __env_flags(env) ((env) & FE_ALL_EXCEPT) -#define __env_mask(env) (((env) >> _FPUSW_SHIFT) \ - & FE_ALL_EXCEPT) -#define __env_round(env) (((env) >> 24) & _ROUND_MASK) #include <machine/fenv-softfloat.h> #endif - - extern inline int feclearexcept(int excepts); extern inline int fegetexceptflag(fexcept_t *flagp, int excepts); extern inline int fesetexceptflag(const fexcept_t *flagp, int excepts);
reply other threads:[~2021-02-05 9:32 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210205093243.79F06397142B@sourceware.org \ --to=corinna@sourceware.org \ --cc=newlib-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).