about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPaul Clarke <pc@us.ibm.com>2019-02-04 19:16:50 -0600
committerGabriel F. T. Gomes <gabriel@inconstante.eti.br>2019-02-11 12:03:23 -0200
commita51bc4fe9da9f2b97877beb6692f7043f6c14a16 (patch)
treea64960fa4e31858e5d96bc9d7e943cd105212c6e
parentfb25b1356ae6a0b2d27a307091ad4f384814cc77 (diff)
downloadglibc-a51bc4fe9da9f2b97877beb6692f7043f6c14a16.tar.gz
glibc-a51bc4fe9da9f2b97877beb6692f7043f6c14a16.tar.xz
glibc-a51bc4fe9da9f2b97877beb6692f7043f6c14a16.zip
Use float in e_sqrt.c
The type used within e_sqrt.c(__slow_ieee754_sqrtf) was, unnecessarily and
likely inadvertently, double.  float is not only appropriate, but also
more efficient, avoiding the need for the compiler to emit a
round-to-single-precision instruction.

This is the difference in compiled code:
 0000000000000000 <__ieee754_sqrtf>:
    0:  2c 08 20 ec     fsqrts  f1,f1
-   4:  18 08 20 fc     frsp    f1,f1
-   8:  20 00 80 4e     blr
+   4:  20 00 80 4e     blr

(Found by Anton Blanchard.)
-rw-r--r--ChangeLog5
-rw-r--r--sysdeps/powerpc/fpu/e_sqrtf.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index f12f435b26..6f1d967f62 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2019-02-11  Paul A. Clarke  <pc@us.ibm.com>
+
+	* sysdeps/powerpc/fpu/e_sqrt.c (__slow_ieee754_sqrtf):
+	Use float instead of double.
+
 2019-02-11  TAMUKI Shoichi  <tamuki@linet.gr.jp>
 
 	* time/strftime_l.c: Fix a few whitespace arrangement inconsistencies.
diff --git a/sysdeps/powerpc/fpu/e_sqrtf.c b/sysdeps/powerpc/fpu/e_sqrtf.c
index 65df94bb80..5d9e900005 100644
--- a/sysdeps/powerpc/fpu/e_sqrtf.c
+++ b/sysdeps/powerpc/fpu/e_sqrtf.c
@@ -138,7 +138,7 @@ __slow_ieee754_sqrtf (float x)
 float
 __ieee754_sqrtf (float x)
 {
-  double z;
+  float z;
 
 #ifdef _ARCH_PPCSQ
   asm ("fsqrts	%0,%1\n" :"=f" (z):"f" (x));