This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH] [powerpc] Use float in e_sqrt.c
- From: Paul Clarke <pc at us dot ibm dot com>
- To: GNU C Library <libc-alpha at sourceware dot org>
- Cc: Tulio Magno Quites Machado Filho <tuliom at linux dot vnet dot ibm dot com>, Anton Blanchard <anton at ozlabs dot org>
- Date: Mon, 4 Feb 2019 19:16:50 -0600
- Subject: [PATCH] [powerpc] 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.)
2019-02-04 Paul A. Clarke <pc@us.ibm.com>
* sysdeps/powerpc/fpu/e_sqrt.c (__slow_ieee754_sqrtf):
Use float instead of double.
---
sysdeps/powerpc/fpu/e_sqrtf.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sysdeps/powerpc/fpu/e_sqrtf.c b/sysdeps/powerpc/fpu/e_sqrtf.c
index 65df94b..5d9e900 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));
--
Regards,
PC