From: Paul A. Clarke Date: Thu, 19 Sep 2019 16:31:31 +0000 (-0500) Subject: [powerpc] libc_feholdsetround_noex_ppc_ctx: optimize FPSCR write X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f8a5de73854ee1d90f2482327f5cf0778e54524b;p=thirdparty%2Fglibc.git [powerpc] libc_feholdsetround_noex_ppc_ctx: optimize FPSCR write libc_feholdsetround_noex_ppc_ctx currently performs: 1. Read FPSCR, save to context. 2. Create new FPSCR value: clear enables and set new rounding mode. 3. Write new value to FPSCR. Since other bits just pass through, there is no need to write them. Instead, write just the changed values (enables and rounding mode), which can be a bit more efficient. --- diff --git a/ChangeLog b/ChangeLog index d8e1dd5d17e..c9a4b3cb962 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2019-09-27 Paul A. Clarke + + * sysdeps/powerpc/fpu/fenv_private.h + (libc_feholdsetround_noex_ppc_ctx): Call fesetenv_mode instead + of fesetenv_register. + 2019-09-27 Paul A. Clarke * sysdeps/powerpc/fpu/fenv_libc.h (fegetenv_status): Rename to diff --git a/sysdeps/powerpc/fpu/fenv_private.h b/sysdeps/powerpc/fpu/fenv_private.h index d0805534fd5..084289ec50d 100644 --- a/sysdeps/powerpc/fpu/fenv_private.h +++ b/sysdeps/powerpc/fpu/fenv_private.h @@ -142,7 +142,7 @@ libc_feholdsetround_noex_ppc_ctx (struct rm_ctx *ctx, int r) if (__glibc_unlikely (new.l != old.l)) { __TEST_AND_ENTER_NON_STOP (old.l, 0ULL); - fesetenv_register (new.fenv); + fesetenv_mode (new.fenv); ctx->updated_status = true; } else