| commit 36c17c7079a5243a890ba43affff326a041775a9 |
| Author: Paul A. Clarke <pc@us.ibm.com> |
| Date: Thu Sep 19 11:31:31 2019 -0500 |
| |
| [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/sysdeps/powerpc/fpu/fenv_private.h b/sysdeps/powerpc/fpu/fenv_private.h |
| index 86a3611b3ef41759..c88142fe3053580f 100644 |
| |
| |
| @@ -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 |