Glibc on powerpcspe
Hi!
I only recently started the transition from eglibc to glibc on
powerpcspe. See the attached patch.
Unfortunately, this still contains some rough architecture specific
changes: Besides conditionals around powerpc (vs. powerpcspe) specific
asm which should be ok, I just deleted some powerpc specific files (e.g.
s_fabs.S in sysdeps/powerpc/fpu/ and sysdeps/powerpc/powerpc32/fpu/) to
force generic implementations of those functions instead of powerpc
specific.
This is of course not a solution to patch into the standard Debian package.
Now my question to more experienced glibc developers: What would be the
best way here to do those changes powerpcspe/e500 compatibly and at the
same time keep the default powerpc asm files etc.?
Thanks in advance,
Roland
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/s_copysign.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/s_copysign.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,59 +0,0 @@
-/* Copy a sign bit between floating-point values.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-/* This has been coded in assembler because GCC makes such a mess of it
- when it's coded in C. */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-ENTRY(__copysign)
-/* double [f1] copysign (double [f1] x, double [f2] y);
- copysign(x,y) returns a value with the magnitude of x and
- with the sign bit of y. */
- stwu r1,-16(r1)
- cfi_adjust_cfa_offset (16)
- stfd fp2,8(r1)
- lwz r3,8+HIWORD(r1)
- cmpwi r3,0
- addi r1,r1,16
- cfi_adjust_cfa_offset (-16)
- blt L(0)
- fabs fp1,fp1
- blr
-L(0): fnabs fp1,fp1
- blr
- END (__copysign)
-
-weak_alias (__copysign,copysign)
-
-/* It turns out that it's safe to use this code even for single-precision. */
-weak_alias (__copysign,copysignf)
-strong_alias(__copysign,__copysignf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__copysign,copysignl)
-strong_alias(__copysign,__copysignl)
-#endif
-#ifdef IS_IN_libm
-# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __copysign, copysignl, GLIBC_2_0)
-# endif
-#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __copysign, copysignl, GLIBC_2_0)
-#endif
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/s_copysignl.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/s_copysignl.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,49 +0,0 @@
-/* Copy a sign bit between floating-point values.
- IBM extended format long double version.
- Copyright (C) 2006-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-ENTRY(__copysignl)
-/* long double [f1,f2] copysign (long double [f1,f2] x, long double [f3,f4] y);
- copysign(x,y) returns a value with the magnitude of x and
- with the sign bit of y. */
- stwu r1,-16(r1)
- cfi_adjust_cfa_offset (16)
- stfd fp3,8(r1)
- fmr fp0,fp1
- fabs fp1,fp1
- fcmpu cr7,fp0,fp1
- lwz r3,8+HIWORD(r1)
- cmpwi cr6,r3,0
- addi r1,r1,16
- cfi_adjust_cfa_offset (-16)
- beq cr7,L(0)
- fneg fp2,fp2
-L(0): bgelr cr6
- fneg fp1,fp1
- fneg fp2,fp2
- blr
-END (__copysignl)
-
-#ifdef IS_IN_libm
-long_double_symbol (libm, __copysignl, copysignl)
-#else
-long_double_symbol (libc, __copysignl, copysignl)
-#endif
Index: glibc-2.19/sysdeps/powerpc/fpu/math_ldbl.h
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/fpu/math_ldbl.h 2014-11-10 14:30:05.192139074 +0100
+++ glibc-2.19/sysdeps/powerpc/fpu/math_ldbl.h 2014-11-10 14:30:05.156138824 +0100
@@ -2,6 +2,7 @@
#error "Never use <math_ldbl.h> directly; include <math_private.h> instead."
#endif
+#ifndef __NO_FPRS__
/* GCC does not optimize the default ldbl_pack code to not spill register
in the stack. The following optimization tells gcc that pack/unpack
is really a nop. We use fr1/fr2 because those are the regs used to
@@ -32,5 +33,5 @@
#define ldbl_pack ldbl_pack_ppc
#define ldbl_unpack ldbl_unpack_ppc
-
+#endif
#include <sysdeps/ieee754/ldbl-128ibm/math_ldbl.h>
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S 2014-11-10 14:30:05.192139074 +0100
+++ glibc-2.19/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S 2014-11-10 14:30:05.156138824 +0100
@@ -40,47 +40,83 @@
(-4@4), and target address (4@0), respectively. */
LIBC_PROBE (setjmp, 3, 4@3, -4@4, 4@0)
stw r14,((JB_GPRS+0)*4)(3)
+#ifndef __NO_FPRS__
stfd fp14,((JB_FPRS+0*2)*4)(3)
+#endif
#ifdef PTR_MANGLE
PTR_MANGLE2 (r0, r6)
#endif
stw r0,(JB_LR*4)(3)
stw r15,((JB_GPRS+1)*4)(3)
+#ifndef __NO_FPRS__
stfd fp15,((JB_FPRS+1*2)*4)(3)
+#endif
mfcr r0
stw r16,((JB_GPRS+2)*4)(3)
+#ifndef __NO_FPRS__
stfd fp16,((JB_FPRS+2*2)*4)(3)
+#endif
stw r0,(JB_CR*4)(3)
stw r17,((JB_GPRS+3)*4)(3)
+#ifndef __NO_FPRS__
stfd fp17,((JB_FPRS+3*2)*4)(3)
+#endif
stw r18,((JB_GPRS+4)*4)(3)
+#ifndef __NO_FPRS__
stfd fp18,((JB_FPRS+4*2)*4)(3)
+#endif
stw r19,((JB_GPRS+5)*4)(3)
+#ifndef __NO_FPRS__
stfd fp19,((JB_FPRS+5*2)*4)(3)
+#endif
stw r20,((JB_GPRS+6)*4)(3)
+#ifndef __NO_FPRS__
stfd fp20,((JB_FPRS+6*2)*4)(3)
+#endif
stw r21,((JB_GPRS+7)*4)(3)
+#ifndef __NO_FPRS__
stfd fp21,((JB_FPRS+7*2)*4)(3)
+#endif
stw r22,((JB_GPRS+8)*4)(3)
+#ifndef __NO_FPRS__
stfd fp22,((JB_FPRS+8*2)*4)(3)
+#endif
stw r23,((JB_GPRS+9)*4)(3)
+#ifndef __NO_FPRS__
stfd fp23,((JB_FPRS+9*2)*4)(3)
+#endif
stw r24,((JB_GPRS+10)*4)(3)
+#ifndef __NO_FPRS__
stfd fp24,((JB_FPRS+10*2)*4)(3)
+#endif
stw r25,((JB_GPRS+11)*4)(3)
+#ifndef __NO_FPRS__
stfd fp25,((JB_FPRS+11*2)*4)(3)
+#endif
stw r26,((JB_GPRS+12)*4)(3)
+#ifndef __NO_FPRS__
stfd fp26,((JB_FPRS+12*2)*4)(3)
+#endif
stw r27,((JB_GPRS+13)*4)(3)
+#ifndef __NO_FPRS__
stfd fp27,((JB_FPRS+13*2)*4)(3)
+#endif
stw r28,((JB_GPRS+14)*4)(3)
+#ifndef __NO_FPRS__
stfd fp28,((JB_FPRS+14*2)*4)(3)
+#endif
stw r29,((JB_GPRS+15)*4)(3)
+#ifndef __NO_FPRS__
stfd fp29,((JB_FPRS+15*2)*4)(3)
+#endif
stw r30,((JB_GPRS+16)*4)(3)
+#ifndef __NO_FPRS__
stfd fp30,((JB_FPRS+16*2)*4)(3)
+#endif
stw r31,((JB_GPRS+17)*4)(3)
+#ifndef __NO_FPRS__
stfd fp31,((JB_FPRS+17*2)*4)(3)
+#endif
#ifndef __NO_VMX__
# ifdef PIC
mflr r6
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S 2014-11-10 14:30:05.192139074 +0100
+++ glibc-2.19/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S 2014-11-10 14:30:05.156138824 +0100
@@ -125,19 +125,33 @@
#endif
lwz r0,(JB_LR*4)(r3)
lwz r14,((JB_GPRS+0)*4)(r3)
+#ifndef __NO_FPRS__
lfd fp14,((JB_FPRS+0*2)*4)(r3)
+#endif
lwz r15,((JB_GPRS+1)*4)(r3)
+#ifndef __NO_FPRS__
lfd fp15,((JB_FPRS+1*2)*4)(r3)
+#endif
lwz r16,((JB_GPRS+2)*4)(r3)
+#ifndef __NO_FPRS__
lfd fp16,((JB_FPRS+2*2)*4)(r3)
+#endif
lwz r17,((JB_GPRS+3)*4)(r3)
+#ifndef __NO_FPRS__
lfd fp17,((JB_FPRS+3*2)*4)(r3)
+#endif
lwz r18,((JB_GPRS+4)*4)(r3)
+#ifndef __NO_FPRS__
lfd fp18,((JB_FPRS+4*2)*4)(r3)
+#endif
lwz r19,((JB_GPRS+5)*4)(r3)
+#ifndef __NO_FPRS__
lfd fp19,((JB_FPRS+5*2)*4)(r3)
+#endif
lwz r20,((JB_GPRS+6)*4)(r3)
+#ifndef __NO_FPRS__
lfd fp20,((JB_FPRS+6*2)*4)(r3)
+#endif
#ifdef PTR_DEMANGLE
# ifndef CHECK_SP
PTR_DEMANGLE3 (r1, r24, r25)
@@ -149,29 +163,51 @@
LIBC_PROBE (longjmp, 3, 4@3, -4@4, 4@0)
mtlr r0
lwz r21,((JB_GPRS+7)*4)(r3)
+#ifndef __NO_FPRS__
lfd fp21,((JB_FPRS+7*2)*4)(r3)
+#endif
lwz r22,((JB_GPRS+8)*4)(r3)
+#ifndef __NO_FPRS__
lfd fp22,((JB_FPRS+8*2)*4)(r3)
+#endif
lwz r5,(JB_CR*4)(r3)
lwz r23,((JB_GPRS+9)*4)(r3)
+#ifndef __NO_FPRS__
lfd fp23,((JB_FPRS+9*2)*4)(r3)
+#endif
lwz r24,((JB_GPRS+10)*4)(r3)
+#ifndef __NO_FPRS__
lfd fp24,((JB_FPRS+10*2)*4)(r3)
+#endif
lwz r25,((JB_GPRS+11)*4)(r3)
+#ifndef __NO_FPRS__
lfd fp25,((JB_FPRS+11*2)*4)(r3)
+#endif
mtcrf 0xFF,r5
lwz r26,((JB_GPRS+12)*4)(r3)
+#ifndef __NO_FPRS__
lfd fp26,((JB_FPRS+12*2)*4)(r3)
+#endif
lwz r27,((JB_GPRS+13)*4)(r3)
+#ifndef __NO_FPRS__
lfd fp27,((JB_FPRS+13*2)*4)(r3)
+#endif
lwz r28,((JB_GPRS+14)*4)(r3)
+#ifndef __NO_FPRS__
lfd fp28,((JB_FPRS+14*2)*4)(r3)
+#endif
lwz r29,((JB_GPRS+15)*4)(r3)
+#ifndef __NO_FPRS__
lfd fp29,((JB_FPRS+15*2)*4)(r3)
+#endif
lwz r30,((JB_GPRS+16)*4)(r3)
+#ifndef __NO_FPRS__
lfd fp30,((JB_FPRS+16*2)*4)(r3)
+#endif
lwz r31,((JB_GPRS+17)*4)(r3)
+#ifndef __NO_FPRS__
lfd fp31,((JB_FPRS+17*2)*4)(r3)
+#endif
LIBC_PROBE (longjmp_target, 3, 4@3, -4@4, 4@0)
mr r3,r4
blr
Index: glibc-2.19/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S
===================================================================
--- glibc-2.19.orig/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S 2014-11-10 14:30:05.192139074 +0100
+++ glibc-2.19/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S 2014-11-10 14:30:05.160138852 +0100
@@ -106,6 +106,7 @@
#ifdef __CONTEXT_ENABLE_FPRS
/* Save the floating-point registers */
+#ifndef __NO_FPRS__
stfd fp0,_UC_FREGS+(0*8)(r3)
stfd fp1,_UC_FREGS+(1*8)(r3)
stfd fp2,_UC_FREGS+(2*8)(r3)
@@ -140,6 +141,7 @@
stfd fp30,_UC_FREGS+(30*8)(r3)
stfd fp31,_UC_FREGS+(31*8)(r3)
stfd fp0,_UC_FREGS+(32*8)(r3)
+#endif
# ifdef __CONTEXT_ENABLE_VRS
# ifdef PIC
Index: glibc-2.19/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S
===================================================================
--- glibc-2.19.orig/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S 2014-11-10 14:30:05.192139074 +0100
+++ glibc-2.19/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S 2014-11-10 14:30:05.160138852 +0100
@@ -192,11 +192,15 @@
2: /* L(has_no_vec): */
# endif /* __CONTEXT_ENABLE_VRS */
/* Restore the floating-point registers */
+#ifndef __NO_FPRS__
lfd fp31,_UC_FREGS+(32*8)(r31)
lfd fp0,_UC_FREGS+(0*8)(r31)
+#endif
# ifdef _ARCH_PWR6
/* Use the extended four-operand version of the mtfsf insn. */
+#ifndef __NO_FPRS__
mtfsf 0xff,fp31,1,0
+#endif
# else
.machine push
.machine "power6"
@@ -204,12 +208,18 @@
andi. r6,r7,PPC_FEATURE_HAS_DFP
beq 7f
/* Use the extended four-operand version of the mtfsf insn. */
+#ifndef __NO_FPRS__
mtfsf 0xff,fp31,1,0
+#endif
b 8f
/* Continue to operate on the FPSCR as if it were 32-bits. */
-7: mtfsf 0xff,fp31
+7:
+#ifndef __NO_FPRS__
+ mtfsf 0xff,fp31
+#endif
8: .machine pop
# endif /* _ARCH_PWR6 */
+#ifndef __NO_FPRS__
lfd fp1,_UC_FREGS+(1*8)(r31)
lfd fp2,_UC_FREGS+(2*8)(r31)
lfd fp3,_UC_FREGS+(3*8)(r31)
@@ -241,6 +251,7 @@
lfd fp29,_UC_FREGS+(29*8)(r31)
lfd fp30,_UC_FREGS+(30*8)(r31)
lfd fp31,_UC_FREGS+(31*8)(r31)
+#endif
#endif /* __CONTEXT_ENABLE_FPRS */
#ifdef __CONTEXT_ENABLE_E500
Index: glibc-2.19/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S
===================================================================
--- glibc-2.19.orig/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S 2014-11-10 14:30:05.192139074 +0100
+++ glibc-2.19/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S 2014-11-10 14:30:05.160138852 +0100
@@ -108,6 +108,7 @@
#ifdef __CONTEXT_ENABLE_FPRS
/* Save the floating-point registers */
+#ifndef __NO_FPRS__
stfd fp0,_UC_FREGS+(0*8)(r3)
stfd fp1,_UC_FREGS+(1*8)(r3)
stfd fp2,_UC_FREGS+(2*8)(r3)
@@ -142,6 +143,7 @@
stfd fp30,_UC_FREGS+(30*8)(r3)
stfd fp31,_UC_FREGS+(31*8)(r3)
stfd fp0,_UC_FREGS+(32*8)(r3)
+#endif
# ifdef PIC
mflr r8
@@ -421,11 +423,15 @@
6: /* L(has_no_vec): */
# endif /* __CONTEXT_ENABLE_VRS */
/* Restore the floating-point registers */
+#ifndef __NO_FPRS__
lfd fp31,_UC_FREGS+(32*8)(r31)
lfd fp0,_UC_FREGS+(0*8)(r31)
+#endif
# ifdef _ARCH_PWR6
/* Use the extended four-operand version of the mtfsf insn. */
+#ifndef __NO_FPRS__
mtfsf 0xff,fp31,1,0
+#endif
# else
.machine push
.machine "power6"
@@ -433,12 +439,18 @@
andi. r6,r7,PPC_FEATURE_HAS_DFP
beq 7f
/* Use the extended four-operand version of the mtfsf insn. */
+#ifndef __NO_FPRS__
mtfsf 0xff,fp31,1,0
+#endif
b 8f
/* Continue to operate on the FPSCR as if it were 32-bits. */
-7: mtfsf 0xff,fp31
+7:
+#ifndef __NO_FPRS__
+ mtfsf 0xff,fp31
+#endif
8: .machine pop
#endif /* _ARCH_PWR6 */
+#ifndef __NO_FPRS__
lfd fp1,_UC_FREGS+(1*8)(r31)
lfd fp2,_UC_FREGS+(2*8)(r31)
lfd fp3,_UC_FREGS+(3*8)(r31)
@@ -470,6 +482,7 @@
lfd fp29,_UC_FREGS+(29*8)(r31)
lfd fp30,_UC_FREGS+(30*8)(r31)
lfd fp31,_UC_FREGS+(31*8)(r31)
+#endif
#endif /* __CONTEXT_ENABLE_FPRS */
#ifdef __CONTEXT_ENABLE_E500
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/fprsave.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/fprsave.S 2014-11-10 14:30:05.192139074 +0100
+++ glibc-2.19/sysdeps/powerpc/powerpc32/fpu/fprsave.S 2014-11-10 14:30:05.164138881 +0100
@@ -25,84 +25,132 @@
.globl C_TEXT(_savef14)
.globl C_TEXT(_savefpr_14)
C_TEXT(_savef14):
-C_TEXT(_savefpr_14): stfd fp14,-144(r1)
+C_TEXT(_savefpr_14):
+#ifndef __NO_FPRS__
+ stfd fp14,-144(r1)
+#endif
cfi_offset(fp14,-144)
.globl C_TEXT(_savef15)
.globl C_TEXT(_savefpr_15)
C_TEXT(_savef15):
-C_TEXT(_savefpr_15): stfd fp15,-136(r1)
+C_TEXT(_savefpr_15):
+#ifndef __NO_FPRS__
+ stfd fp15,-136(r1)
+#endif
cfi_offset(fp15,-136)
.globl C_TEXT(_savef16)
.globl C_TEXT(_savefpr_16)
C_TEXT(_savef16):
-C_TEXT(_savefpr_16): stfd fp16,-128(r1)
+C_TEXT(_savefpr_16):
+#ifndef __NO_FPRS__
+ stfd fp16,-128(r1)
+#endif
cfi_offset(fp16,-128)
.globl C_TEXT(_savef17)
.globl C_TEXT(_savefpr_17)
C_TEXT(_savef17):
-C_TEXT(_savefpr_17): stfd fp17,-120(r1)
+C_TEXT(_savefpr_17):
+#ifndef __NO_FPRS__
+ stfd fp17,-120(r1)
+#endif
cfi_offset(fp17,-120)
.globl C_TEXT(_savef18)
.globl C_TEXT(_savefpr_18)
C_TEXT(_savef18):
-C_TEXT(_savefpr_18): stfd fp18,-112(r1)
+C_TEXT(_savefpr_18):
+#ifndef __NO_FPRS__
+ stfd fp18,-112(r1)
+#endif
cfi_offset(fp18,-112)
.globl C_TEXT(_savef19)
.globl C_TEXT(_savefpr_19)
C_TEXT(_savef19):
-C_TEXT(_savefpr_19): stfd fp19,-104(r1)
+C_TEXT(_savefpr_19):
+#ifndef __NO_FPRS__
+ stfd fp19,-104(r1)
+#endif
cfi_offset(fp19,-104)
.globl C_TEXT(_savef20)
.globl C_TEXT(_savefpr_20)
C_TEXT(_savef20):
-C_TEXT(_savefpr_20): stfd fp20,-96(r1)
+C_TEXT(_savefpr_20):
+#ifndef __NO_FPRS__
+ stfd fp20,-96(r1)
+#endif
cfi_offset(fp20,-96)
.globl C_TEXT(_savef21)
.globl C_TEXT(_savefpr_21)
C_TEXT(_savef21):
-C_TEXT(_savefpr_21): stfd fp21,-88(r1)
+C_TEXT(_savefpr_21):
+#ifndef __NO_FPRS__
+ stfd fp21,-88(r1)
+#endif
cfi_offset(fp21,-88)
.globl C_TEXT(_savef22)
.globl C_TEXT(_savefpr_22)
C_TEXT(_savef22):
-C_TEXT(_savefpr_22): stfd fp22,-80(r1)
+C_TEXT(_savefpr_22):
+#ifndef __NO_FPRS__
+ stfd fp22,-80(r1)
+#endif
cfi_offset(fp22,-80)
.globl C_TEXT(_savef23)
.globl C_TEXT(_savefpr_23)
C_TEXT(_savef23):
-C_TEXT(_savefpr_23): stfd fp23,-72(r1)
+C_TEXT(_savefpr_23):
+#ifndef __NO_FPRS__
+ stfd fp23,-72(r1)
+#endif
cfi_offset(fp23,-72)
.globl C_TEXT(_savef24)
.globl C_TEXT(_savefpr_24)
C_TEXT(_savef24):
-C_TEXT(_savefpr_24): stfd fp24,-64(r1)
+C_TEXT(_savefpr_24):
+#ifndef __NO_FPRS__
+ stfd fp24,-64(r1)
+#endif
cfi_offset(fp24,-64)
.globl C_TEXT(_savef25)
.globl C_TEXT(_savefpr_25)
C_TEXT(_savef25):
-C_TEXT(_savefpr_25): stfd fp25,-56(r1)
+C_TEXT(_savefpr_25):
+#ifndef __NO_FPRS__
+ stfd fp25,-56(r1)
+#endif
cfi_offset(fp25,-56)
.globl C_TEXT(_savef26)
.globl C_TEXT(_savefpr_26)
C_TEXT(_savef26):
-C_TEXT(_savefpr_26): stfd fp26,-48(r1)
+C_TEXT(_savefpr_26):
+#ifndef __NO_FPRS__
+ stfd fp26,-48(r1)
+#endif
cfi_offset(fp26,-48)
.globl C_TEXT(_savef27)
.globl C_TEXT(_savefpr_27)
C_TEXT(_savef27):
-C_TEXT(_savefpr_27): stfd fp27,-40(r1)
+C_TEXT(_savefpr_27):
+#ifndef __NO_FPRS__
+ stfd fp27,-40(r1)
+#endif
cfi_offset(fp27,-40)
.globl C_TEXT(_savef28)
.globl C_TEXT(_savefpr_28)
C_TEXT(_savef28):
-C_TEXT(_savefpr_28): stfd fp28,-32(r1)
+C_TEXT(_savefpr_28):
+#ifndef __NO_FPRS__
+ stfd fp28,-32(r1)
+#endif
cfi_offset(fp28,-32)
.globl C_TEXT(_savef29)
.globl C_TEXT(_savefpr_29)
C_TEXT(_savef29):
-C_TEXT(_savefpr_29): stfd fp29,-24(r1) #save f29
+C_TEXT(_savefpr_29):
+#ifndef __NO_FPRS__
+ stfd fp29,-24(r1) #save f29
stfd fp30,-16(r1) #save f30
stfd fp31,-8(r1) #save f31
+#endif
cfi_offset(fp29,-24)
cfi_offset(fp30,-16)
cfi_offset(fp31,-8)
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/fprrest.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/fprrest.S 2014-11-10 14:30:05.192139074 +0100
+++ glibc-2.19/sysdeps/powerpc/powerpc32/fpu/fprrest.S 2014-11-10 14:30:05.164138881 +0100
@@ -25,70 +25,119 @@
.globl C_TEXT(_restf14)
.globl C_TEXT(_restfpr_14)
C_TEXT(_restf14):
-C_TEXT(_restfpr_14): lfd fp14,-144(r1)
+C_TEXT(_restfpr_14):
+#ifndef __NO_FPRS__
+ lfd fp14,-144(r1)
+#endif
.globl C_TEXT(_restf15)
.globl C_TEXT(_restfpr_15)
C_TEXT(_restf15):
-C_TEXT(_restfpr_15): lfd fp15,-136(r1)
+C_TEXT(_restfpr_15):
+#ifndef __NO_FPRS__
+ lfd fp15,-136(r1)
+#endif
.globl C_TEXT(_restf16)
.globl C_TEXT(_restfpr_16)
C_TEXT(_restf16):
-C_TEXT(_restfpr_16): lfd fp16,-128(r1)
+C_TEXT(_restfpr_16):
+#ifndef __NO_FPRS__
+ lfd fp16,-128(r1)
+#endif
.globl C_TEXT(_restf17)
.globl C_TEXT(_restfpr_17)
C_TEXT(_restf17):
-C_TEXT(_restfpr_17): lfd fp17,-120(r1)
+C_TEXT(_restfpr_17):
+#ifndef __NO_FPRS__
+ lfd fp17,-120(r1)
+#endif
.globl C_TEXT(_restf18)
.globl C_TEXT(_restfpr_18)
C_TEXT(_restf18):
-C_TEXT(_restfpr_18): lfd fp18,-112(r1)
+C_TEXT(_restfpr_18):
+#ifndef __NO_FPRS__
+ lfd fp18,-112(r1)
+#endif
.globl C_TEXT(_restf19)
.globl C_TEXT(_restfpr_19)
C_TEXT(_restf19):
-C_TEXT(_restfpr_19): lfd fp19,-104(r1)
+C_TEXT(_restfpr_19):
+#ifndef __NO_FPRS__
+ lfd fp19,-104(r1)
+#endif
.globl C_TEXT(_restf20)
.globl C_TEXT(_restfpr_20)
C_TEXT(_restf20):
-C_TEXT(_restfpr_20): lfd fp20,-96(r1)
+C_TEXT(_restfpr_20):
+#ifndef __NO_FPRS__
+ lfd fp20,-96(r1)
+#endif
.globl C_TEXT(_restf21)
.globl C_TEXT(_restfpr_21)
C_TEXT(_restf21):
-C_TEXT(_restfpr_21): lfd fp21,-88(r1)
+C_TEXT(_restfpr_21):
+#ifndef __NO_FPRS__
+ lfd fp21,-88(r1)
+#endif
.globl C_TEXT(_restf22)
.globl C_TEXT(_restfpr_22)
C_TEXT(_restf22):
-C_TEXT(_restfpr_22): lfd fp22,-80(r1)
+C_TEXT(_restfpr_22):
+#ifndef __NO_FPRS__
+ lfd fp22,-80(r1)
+#endif
.globl C_TEXT(_restf23)
.globl C_TEXT(_restfpr_23)
C_TEXT(_restf23):
-C_TEXT(_restfpr_23): lfd fp23,-72(r1)
+C_TEXT(_restfpr_23):
+#ifndef __NO_FPRS__
+ lfd fp23,-72(r1)
+#endif
.globl C_TEXT(_restf24)
.globl C_TEXT(_restfpr_24)
C_TEXT(_restf24):
-C_TEXT(_restfpr_24): lfd fp24,-64(r1)
+C_TEXT(_restfpr_24):
+#ifndef __NO_FPRS__
+ lfd fp24,-64(r1)
+#endif
.globl C_TEXT(_restf25)
.globl C_TEXT(_restfpr_25)
C_TEXT(_restf25):
-C_TEXT(_restfpr_25): lfd fp25,-56(r1)
+C_TEXT(_restfpr_25):
+#ifndef __NO_FPRS__
+ lfd fp25,-56(r1)
+#endif
.globl C_TEXT(_restf26)
.globl C_TEXT(_restfpr_26)
C_TEXT(_restf26):
-C_TEXT(_restfpr_26): lfd fp26,-48(r1)
+C_TEXT(_restfpr_26):
+#ifndef __NO_FPRS__
+ lfd fp26,-48(r1)
+#endif
.globl C_TEXT(_restf27)
.globl C_TEXT(_restfpr_27)
C_TEXT(_restf27):
-C_TEXT(_restfpr_27): lfd fp27,-40(r1)
+C_TEXT(_restfpr_27):
+#ifndef __NO_FPRS__
+ lfd fp27,-40(r1)
+#endif
.globl C_TEXT(_restf28)
.globl C_TEXT(_restfpr_28)
C_TEXT(_restf28):
-C_TEXT(_restfpr_28): lfd fp28,-32(r1)
+C_TEXT(_restfpr_28):
+#ifndef __NO_FPRS__
+ lfd fp28,-32(r1)
+#endif
.globl C_TEXT(_restf29)
.globl C_TEXT(_restfpr_29)
C_TEXT(_restf29):
C_TEXT(_restfpr_29): lwz r0,8(r1) #get return address from frame
+#ifndef __NO_FPRS__
lfd fp29,-24(r1) #restore f29
+#endif
mtlr r0 #move return address to LR
+#ifndef __NO_FPRS__
lfd fp30,-16(r1) #restore f30
lfd fp31,-8(r1) #restore f31
+#endif
blr #return
END (_restfpr_all)
Index: glibc-2.19/sysdeps/powerpc/fpu/fenv_libc.h
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/fpu/fenv_libc.h 2014-11-10 14:30:05.192139074 +0100
+++ glibc-2.19/sysdeps/powerpc/fpu/fenv_libc.h 2014-11-10 14:30:05.164138881 +0100
@@ -32,11 +32,14 @@
/* Equivalent to fegetenv, but returns a fenv_t instead of taking a
pointer. */
-#define fegetenv_register() \
+#define fegetenv_register() ({fenv_t env; /* fegetenv(&env);*/ env; })
+#if 0
({ fenv_t env; asm volatile ("mffs %0" : "=f" (env)); env; })
+#endif
/* Equivalent to fesetenv, but takes a fenv_t instead of a pointer. */
-#define fesetenv_register(env) \
+#define fesetenv_register(env) do { /*fesetenv(&env);*/ } while(0)
+#if 0
do { \
double d = (env); \
if(GLRO(dl_hwcap) & PPC_FEATURE_HAS_DFP) \
@@ -47,6 +50,7 @@
else \
asm volatile ("mtfsf 0xff,%0" : : "f" (d)); \
} while(0)
+#endif
/* This very handy macro:
- Sets the rounding mode to 'round to nearest';
Index: glibc-2.19/sysdeps/powerpc/fpu/math_private.h
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/fpu/math_private.h 2014-11-10 14:30:05.192139074 +0100
+++ glibc-2.19/sysdeps/powerpc/fpu/math_private.h 2014-11-10 14:30:05.164138881 +0100
@@ -25,11 +25,15 @@
#include <fenv_private.h>
#include_next <math_private.h>
+#ifdef __NO_FPRS__
+# define __CPU_HAS_FSQRT 0
+#else
# if __WORDSIZE == 64 || defined _ARCH_PWR4
# define __CPU_HAS_FSQRT 1
# else
# define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0)
# endif
+#endif
extern double __slow_ieee754_sqrt (double);
extern __always_inline double
Index: glibc-2.19/sysdeps/powerpc/fpu/e_sqrt.c
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/fpu/e_sqrt.c 2014-11-10 14:30:05.192139074 +0100
+++ glibc-2.19/sysdeps/powerpc/fpu/e_sqrt.c 2014-11-10 14:30:05.164138881 +0100
@@ -150,7 +150,11 @@
feraiseexcept (FE_INVALID);
x = a_nan.value;
}
+#ifdef __NO_FPRS__
+ return x;
+#else
return f_wash (x);
+#endif
}
#undef __ieee754_sqrt
Index: glibc-2.19/sysdeps/powerpc/fpu/e_sqrtf.c
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/fpu/e_sqrtf.c 2014-11-10 14:30:05.192139074 +0100
+++ glibc-2.19/sysdeps/powerpc/fpu/e_sqrtf.c 2014-11-10 14:30:05.168138909 +0100
@@ -126,7 +126,11 @@
feraiseexcept (FE_INVALID);
x = a_nan.value;
}
+#ifdef __NO_FPRS__
+ return x;
+#else
return f_washf (x);
+#endif
}
#undef __ieee754_sqrtf
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/s_ceil.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/s_ceil.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,74 +0,0 @@
-/* ceil function. PowerPC32 version.
- Copyright (C) 2004-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
- .section .rodata.cst4,"aM",@progbits,4
- .align 2
-.LC0: /* 2**52 */
- .long 0x59800000
-
- .section ".text"
-ENTRY (__ceil)
- mffs fp11 /* Save current FPU rounding mode. */
-#ifdef SHARED
- mflr r11
- cfi_register(lr,r11)
- SETUP_GOT_ACCESS(r9,got_label)
- addis r9,r9,.LC0-got_label@ha
- lfs fp13,.LC0-got_label@l(r9)
- mtlr r11
- cfi_same_value (lr)
-#else
- lis r9,.LC0@ha
- lfs fp13,.LC0@l(r9)
-#endif
- fabs fp0,fp1
- fsub fp12,fp13,fp13 /* generate 0.0 */
- fcmpu cr7,fp0,fp13 /* if (fabs(x) > TWO52) */
- fcmpu cr6,fp1,fp12 /* if (x > 0.0) */
- bnllr- cr7
- mtfsfi 7,2 /* Set rounding mode toward +inf. */
- ble- cr6,.L4
- fadd fp1,fp1,fp13 /* x+= TWO52; */
- fsub fp1,fp1,fp13 /* x-= TWO52; */
- fabs fp1,fp1 /* if (x == 0.0) */
- /* x = 0.0; */
- mtfsf 0x01,fp11 /* restore previous rounding mode. */
- blr
-.L4:
- bge- cr6,.L9 /* if (x < 0.0) */
- fsub fp1,fp1,fp13 /* x-= TWO52; */
- fadd fp1,fp1,fp13 /* x+= TWO52; */
- fnabs fp1,fp1 /* if (x == 0.0) */
- /* x = -0.0; */
-.L9:
- mtfsf 0x01,fp11 /* restore previous rounding mode. */
- blr
- END (__ceil)
-
-weak_alias (__ceil, ceil)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__ceil, ceill)
-strong_alias (__ceil, __ceill)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __ceil, ceill, GLIBC_2_0)
-#endif
Index: glibc-2.19/sysdeps/powerpc/fpu/s_fabs.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/fpu/s_fabs.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,36 +0,0 @@
-/* Floating-point absolute value. PowerPC version.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-
-ENTRY(__fabs)
-/* double [f1] fabs (double [f1] x); */
- fabs fp1,fp1
- blr
-END(__fabs)
-
-weak_alias (__fabs,fabs)
-
-/* It turns out that it's safe to use this code even for single-precision. */
-strong_alias(__fabs,__fabsf)
-weak_alias (__fabs,fabsf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__fabs,__fabsl)
-weak_alias (__fabs,fabsl)
-#endif
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/s_floor.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/s_floor.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,74 +0,0 @@
-/* Floor function. PowerPC32 version.
- Copyright (C) 2004-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
- .section .rodata.cst4,"aM",@progbits,4
- .align 2
-.LC0: /* 2**52 */
- .long 0x59800000
-
- .section ".text"
-ENTRY (__floor)
- mffs fp11 /* Save current FPU rounding mode. */
-#ifdef SHARED
- mflr r11
- cfi_register(lr,r11)
- SETUP_GOT_ACCESS(r9,got_label)
- addis r9,r9,.LC0-got_label@ha
- lfs fp13,.LC0-got_label@l(r9)
- mtlr r11
- cfi_same_value (lr)
-#else
- lis r9,.LC0@ha
- lfs fp13,.LC0@l(r9)
-#endif
- fabs fp0,fp1
- fsub fp12,fp13,fp13 /* generate 0.0 */
- fcmpu cr7,fp0,fp13 /* if (fabs(x) > TWO52) */
- fcmpu cr6,fp1,fp12 /* if (x > 0.0) */
- bnllr- cr7
- mtfsfi 7,3 /* Set rounding mode toward -inf. */
- ble- cr6,.L4
- fadd fp1,fp1,fp13 /* x+= TWO52; */
- fsub fp1,fp1,fp13 /* x-= TWO52; */
- fabs fp1,fp1 /* if (x == 0.0) */
- /* x = 0.0; */
- mtfsf 0x01,fp11 /* restore previous rounding mode. */
- blr
-.L4:
- bge- cr6,.L9 /* if (x < 0.0) */
- fsub fp1,fp1,fp13 /* x-= TWO52; */
- fadd fp1,fp1,fp13 /* x+= TWO52; */
- fnabs fp1,fp1 /* if (x == 0.0) */
- /* x = -0.0; */
-.L9:
- mtfsf 0x01,fp11 /* restore previous rounding mode. */
- blr
- END (__floor)
-
-weak_alias (__floor, floor)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__floor, floorl)
-strong_alias (__floor, __floorl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __floor, floorl, GLIBC_2_0)
-#endif
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/s_rint.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/s_rint.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,70 +0,0 @@
-/* Round to int floating-point values. PowerPC32 version.
- Copyright (C) 2004-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-/* This has been coded in assembler because GCC makes such a mess of it
- when it's coded in C. */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
- .section .rodata.cst4,"aM",@progbits,4
- .align 2
-.LC0: /* 2**52 */
- .long 0x59800000
-
- .section ".text"
-ENTRY (__rint)
-#ifdef SHARED
- mflr r11
- cfi_register(lr,r11)
- SETUP_GOT_ACCESS(r9,got_label)
- addis r9,r9,.LC0-got_label@ha
- lfs fp13,.LC0-got_label@l(r9)
- mtlr r11
- cfi_same_value (lr)
-#else
- lis r9,.LC0@ha
- lfs fp13,.LC0@l(r9)
-#endif
- fabs fp0,fp1
- fsub fp12,fp13,fp13 /* generate 0.0 */
- fcmpu cr7,fp0,fp13 /* if (fabs(x) > TWO52) */
- fcmpu cr6,fp1,fp12 /* if (x > 0.0) */
- bnllr cr7
- bng cr6,.L4
- fadd fp1,fp1,fp13 /* x+= TWO52; */
- fsub fp1,fp1,fp13 /* x-= TWO52; */
- fabs fp1,fp1 /* if (x == 0.0) */
- blr /* x = 0.0; */
-.L4:
- bnllr cr6 /* if (x < 0.0) */
- fsub fp1,fp1,fp13 /* x-= TWO52; */
- fadd fp1,fp1,fp13 /* x+= TWO52; */
- fnabs fp1,fp1 /* if (x == 0.0) */
- blr /* x = -0.0; */
- END (__rint)
-
-weak_alias (__rint, rint)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__rint, rintl)
-strong_alias (__rint, __rintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __rint, rintl, GLIBC_2_0)
-#endif
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/s_ceilf.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/s_ceilf.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,66 +0,0 @@
-/* float ceil function. PowerPC32 version.
- Copyright (C) 2004-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-
- .section .rodata.cst4,"aM",@progbits,4
- .align 2
-.LC0: /* 2**23 */
- .long 0x4b000000
-
- .section ".text"
-ENTRY (__ceilf)
- mffs fp11 /* Save current FPU rounding mode. */
-#ifdef SHARED
- mflr r11
- cfi_register(lr,r11)
- SETUP_GOT_ACCESS(r9,got_label)
- addis r9,r9,.LC0-got_label@ha
- lfs fp13,.LC0-got_label@l(r9)
- mtlr r11
- cfi_same_value (lr)
-#else
- lis r9,.LC0@ha
- lfs fp13,.LC0@l(r9)
-#endif
- fabs fp0,fp1
- fsubs fp12,fp13,fp13 /* generate 0.0 */
- fcmpu cr7,fp0,fp13 /* if (fabs(x) > TWO23) */
- fcmpu cr6,fp1,fp12 /* if (x > 0.0) */
- bnllr- cr7
- mtfsfi 7,2 /* Set rounding mode toward +inf. */
- ble- cr6,.L4
- fadds fp1,fp1,fp13 /* x+= TWO23; */
- fsubs fp1,fp1,fp13 /* x-= TWO23; */
- fabs fp1,fp1 /* if (x == 0.0) */
- /* x = 0.0; */
- mtfsf 0x01,fp11 /* restore previous rounding mode. */
- blr
-.L4:
- bge- cr6,.L9 /* if (x < 0.0) */
- fsubs fp1,fp1,fp13 /* x-= TWO23; */
- fadds fp1,fp1,fp13 /* x+= TWO23; */
- fnabs fp1,fp1 /* if (x == 0.0) */
- /* x = -0.0; */
-.L9:
- mtfsf 0x01,fp11 /* restore previous rounding mode. */
- blr
- END (__ceilf)
-
-weak_alias (__ceilf, ceilf)
-
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/s_fabsl.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/s_fabsl.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,35 +0,0 @@
-/* Copy a sign bit between floating-point values.
- IBM extended format long double version.
- Copyright (C) 2004-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-ENTRY(__fabsl)
-/* long double [f1,f2] fabs (long double [f1,f2] x);
- fabs(x,y) returns a value with the magnitude of x and
- with the sign bit of y. */
- fmr fp0,fp1
- fabs fp1,fp1
- fcmpu cr1,fp0,fp1
- beqlr cr1
- fneg fp2,fp2
- blr
-END (__fabsl)
-
-long_double_symbol (libm, __fabsl, fabsl)
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/s_floorf.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/s_floorf.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,66 +0,0 @@
-/* float Floor function. PowerPC32 version.
- Copyright (C) 2004-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-
- .section .rodata.cst4,"aM",@progbits,4
- .align 2
-.LC0: /* 2**23 */
- .long 0x4b000000
-
- .section ".text"
-ENTRY (__floorf)
- mffs fp11 /* Save current FPU rounding mode. */
-#ifdef SHARED
- mflr r11
- cfi_register(lr,r11)
- SETUP_GOT_ACCESS(r9,got_label)
- addis r9,r9,.LC0-got_label@ha
- lfs fp13,.LC0-got_label@l(r9)
- mtlr r11
- cfi_same_value (lr)
-#else
- lis r9,.LC0@ha
- lfs fp13,.LC0@l(r9)
-#endif
- fabs fp0,fp1
- fsubs fp12,fp13,fp13 /* generate 0.0 */
- fcmpu cr7,fp0,fp13 /* if (fabs(x) > TWO23) */
- fcmpu cr6,fp1,fp12 /* if (x > 0.0) */
- bnllr- cr7
- mtfsfi 7,3 /* Set rounding mode toward -inf. */
- ble- cr6,.L4
- fadds fp1,fp1,fp13 /* x+= TWO23; */
- fsubs fp1,fp1,fp13 /* x-= TWO23; */
- fabs fp1,fp1 /* if (x == 0.0) */
- /* x = 0.0; */
- mtfsf 0x01,fp11 /* restore previous rounding mode. */
- blr
-.L4:
- bge- cr6,.L9 /* if (x < 0.0) */
- fsubs fp1,fp1,fp13 /* x-= TWO23; */
- fadds fp1,fp1,fp13 /* x+= TWO23; */
- fnabs fp1,fp1 /* if (x == 0.0) */
- /* x = -0.0; */
-.L9:
- mtfsf 0x01,fp11 /* restore previous rounding mode. */
- blr
- END (__floorf)
-
-weak_alias (__floorf, floorf)
-
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/s_isnan.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/s_isnan.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,57 +0,0 @@
-/* isnan(). PowerPC32 version.
- Copyright (C) 2008-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* int __isnan(x) */
- .machine power4
-EALIGN (__isnan, 4, 0)
- mffs fp0
- mtfsb0 4*cr6+lt /* reset_fpscr_bit (FPSCR_VE) */
- fcmpu cr7,fp1,fp1
- mtfsf 255,fp0
- li r3,0
- beqlr+ cr7 /* (x == x) then not a NAN */
- li r3,1 /* else must be a NAN */
- blr
- END (__isnan)
-
-hidden_def (__isnan)
-weak_alias (__isnan, isnan)
-
-/* It turns out that the 'double' version will also always work for
- single-precision. */
-#ifndef __isnan
-strong_alias (__isnan, __isnanf)
-hidden_def (__isnanf)
-weak_alias (__isnanf, isnanf)
-#endif
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__isnan, __isnanl)
-weak_alias (__isnan, isnanl)
-#endif
-
-#ifndef IS_IN_libm
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
-compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
-# endif
-#endif
-
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/s_lrint.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/s_lrint.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,46 +0,0 @@
-/* Round double to long int. PowerPC32 version.
- Copyright (C) 2004-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* long int[r3] __lrint (double x[fp1]) */
-ENTRY (__lrint)
- stwu r1,-16(r1)
- fctiw fp13,fp1
- stfd fp13,8(r1)
- nop /* Ensure the following load is in a different dispatch group */
- nop /* to avoid pipe stall on POWER4&5. */
- nop
- lwz r3,8+LOWORD(r1)
- addi r1,r1,16
- blr
- END (__lrint)
-
-weak_alias (__lrint, lrint)
-
-strong_alias (__lrint, __lrintf)
-weak_alias (__lrint, lrintf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__lrint, __lrintl)
-weak_alias (__lrint, lrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __lrint, lrintl, GLIBC_2_1)
-#endif
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/s_lround.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/s_lround.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,90 +0,0 @@
-/* lround function. PowerPC32 version.
- Copyright (C) 2004-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
- .section .rodata.cst4,"aM",@progbits,4
- .align 2
-.LC0: /* 0.5 */
- .long 0x3f000000
- .section ".text"
-
-/* long [r3] lround (float x [fp1])
- IEEE 1003.1 lround function. IEEE specifies "round to the nearest
- integer value, rounding halfway cases away from zero, regardless of
- the current rounding mode." However PowerPC Architecture defines
- "round to Nearest" as "Choose the best approximation. In case of a
- tie, choose the one that is even (least significant bit o).".
- So we can't use the PowerPC "round to Nearest" mode. Instead we set
- "round toward Zero" mode and round by adding +-0.5 before rounding
- to the integer value. It is necessary to detect when x is
- (+-)0x1.fffffffffffffp-2 because adding +-0.5 in this case will
- cause an erroneous shift, carry and round. We simply return 0 if
- 0.5 > x > -0.5. */
-
-ENTRY (__lround)
- stwu r1,-16(r1)
- cfi_adjust_cfa_offset (16)
-#ifdef SHARED
- mflr r11
- cfi_register(lr,r11)
- SETUP_GOT_ACCESS(r9,got_label)
- addis r9,r9,.LC0-got_label@ha
- lfs fp10,.LC0-got_label@l(r9)
- mtlr r11
- cfi_same_value (lr)
-#else
- lis r9,.LC0@ha
- lfs fp10,.LC0@l(r9)
-#endif
- fabs fp2, fp1 /* Get the absolute value of x. */
- fsub fp12,fp10,fp10 /* Compute 0.0. */
- fcmpu cr6, fp2, fp10 /* if |x| < 0.5 */
- fcmpu cr7, fp1, fp12 /* x is negative? x < 0.0 */
- blt- cr6,.Lretzero
- fadd fp3,fp2,fp10 /* |x|+=0.5 bias to prepare to round. */
- bge cr7,.Lconvert /* x is positive so don't negate x. */
- fnabs fp3,fp3 /* -(|x|+=0.5) */
-.Lconvert:
- fctiwz fp4,fp3 /* Convert to Integer word lround toward 0. */
- stfd fp4,8(r1)
- nop /* Ensure the following load is in a different dispatch */
- nop /* group to avoid pipe stall on POWER4&5. */
- nop
- lwz r3,8+LOWORD(r1) /* Load return as integer. */
-.Lout:
- addi r1,r1,16
- blr
-.Lretzero: /* when 0.5 > x > -0.5 */
- li r3,0 /* return 0. */
- b .Lout
- END (__lround)
-
-weak_alias (__lround, lround)
-
-strong_alias (__lround, __lroundf)
-weak_alias (__lround, lroundf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__lround, lroundl)
-strong_alias (__lround, __lroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __lround, lroundl, GLIBC_2_1)
-#endif
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/s_nearbyintf.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/s_nearbyintf.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,70 +0,0 @@
-/* Round to int floating-point values. PowerPC32 version.
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Adhemerval Zanella <azanella@br.ibm.com>, 2011
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-/* This has been coded in assembler because GCC makes such a mess of it
- when it's coded in C. */
-
-#include <sysdep.h>
-
-
-/* float [fp1] nearbyintf(float [fp1] x) */
-
- .section .rodata.cst4,"aM",@progbits,4
- .align 2
-.LC0:
- .long 0x4B000000 /* TWO23: 2**23 */
-
- .section ".text"
-ENTRY (__nearbyintf)
-#ifdef SHARED
- mflr r11
- cfi_register(lr,r11)
- bcl 20,31,1f
-1: mflr r9
- addis r9,r9,.LC0-1b@ha
- lfs fp13,.LC0-1b@l(r9)
- mtlr r11
- cfi_same_value (lr)
-#else
- lis r9,.LC0@ha
- lfs fp13,.LC0@l(r9)
-#endif
- fabs fp0,fp1
- fsub fp12,fp13,fp13 /* generate 0.0 */
- fcmpu cr7,fp0,fp13 /* if (fabs(x) > TWO23 */
- bgelr cr7
- fcmpu cr7,fp1,fp12 /* if (x > 0.0 */
- ble cr7,L(lessthanzero)
- mtfsb0 4*cr7+lt /* Disable FE_INEXACT exception */
- fadds fp1,fp1,fp13 /* x += TWO23 */
- fsubs fp1,fp1,fp13 /* x -= TWO23 */
- fabs fp1,fp1 /* if (x == 0.0) */
- mtfsb0 4*cr1+eq /* Clear any FE_INEXACT exception */
- blr
-L(lessthanzero):
- bgelr cr7
- mtfsb0 4*cr7+lt /* Disable FE_INEXACT exception */
- fsubs fp1,fp1,fp13 /* x -= TWO23 */
- fadds fp1,fp1,fp13 /* x += TWO23 */
- fnabs fp1,fp1 /* if (x == 0.0) */
- mtfsb0 4*cr1+eq /* Clear any FE_INEXACT exception */
- blr
-END (__nearbyintf)
-
-weak_alias (__nearbyintf, nearbyintf)
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/s_nearbyint.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/s_nearbyint.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,79 +0,0 @@
-/* Round to int floating-point values. PowerPC32 version.
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Adhemerval Zanella <azanella@br.ibm.com>, 2011
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-/* This has been coded in assembler because GCC makes such a mess of it
- when it's coded in C. */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-
-/* double [fp1] nearbyint(double [fp1] x) */
-
- .section .rodata.cst4,"aM",@progbits,4
- .align 2
-.LC0: /* 2**52 */
- .long 0x59800000 /* TWO52: 2**52 */
-
- .section ".text"
-ENTRY (__nearbyint)
-#ifdef SHARED
- mflr r11
- cfi_register(lr,r11)
- bcl 20,31,1f
-1: mflr r9
- addis r9,r9,.LC0-1b@ha
- lfs fp13,.LC0-1b@l(r9)
- mtlr r11
- cfi_same_value (lr)
-#else
- lis r9,.LC0@ha
- lfs fp13,.LC0@l(r9)
-#endif
- fabs fp0,fp1
- fsub fp12,fp13,fp13 /* generate 0.0 */
- fcmpu cr7,fp0,fp13 /* if (fabs(x) > TWO52 */
- bgelr cr7
- fcmpu cr7,fp1,fp12 /* if (x > 0.0 */
- ble cr7,L(lessthanzero)
- mtfsb0 4*cr7+lt /* Disable FE_INEXACT exception */
- fadd fp1,fp1,fp13 /* x += TWO52 */
- fsub fp1,fp1,fp13 /* x -= TWO52 */
- fabs fp1,fp1 /* if (x == 0.0 */
- mtfsb0 4*cr1+eq /* Clear any FE_INEXACT exception */
- blr
-L(lessthanzero):
- bgelr cr7
- mtfsb0 4*cr7+lt /* Disable FE_INEXACT exception */
- fsub fp1,fp1,fp13 /* x -= TWO52 */
- fadd fp1,fp1,fp13 /* x += TWO52 */
- fnabs fp1,fp1 /* if (x == 0.0) */
- mtfsb0 4*cr1+eq /* Clear any FE_INEXACT exception */
- blr
-END (__nearbyint)
-
-weak_alias (__nearbyint, nearbyint)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__nearbyint, nearbyintl)
-strong_alias (__nearbyint, __nearbyintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __nearbyint, nearbyintl, GLIBC_2_1)
-#endif
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/s_rintf.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/s_rintf.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,59 +0,0 @@
-/* Round float to int floating-point values. PowerPC32 version.
- Copyright (C) 2004-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-
- .section .rodata.cst4,"aM",@progbits,4
- .align 2
-.LC0: /* 2**23 */
- .long 0x4b000000
-
- .section ".text"
-ENTRY (__rintf)
-#ifdef SHARED
- mflr r11
- cfi_register(lr,r11)
- SETUP_GOT_ACCESS(r9,got_label)
- addis r9,r9,.LC0-got_label@ha
- lfs fp13,.LC0-got_label@l(r9)
- mtlr r11
- cfi_same_value (lr)
-#else
- lis r9,.LC0@ha
- lfs fp13,.LC0@l(r9)
-#endif
- fabs fp0,fp1
- fsubs fp12,fp13,fp13 /* generate 0.0 */
- fcmpu cr7,fp0,fp13 /* if (fabs(x) > TWO23) */
- fcmpu cr6,fp1,fp12 /* if (x > 0.0) */
- bnllr cr7
- bng cr6,.L4
- fadds fp1,fp1,fp13 /* x+= TWO23; */
- fsubs fp1,fp1,fp13 /* x-= TWO23; */
- fabs fp1,fp1 /* if (x == 0.0) */
- blr /* x = 0.0; */
-.L4:
- bnllr cr6 /* if (x < 0.0) */
- fsubs fp1,fp1,fp13 /* x-= TWO23; */
- fadds fp1,fp1,fp13 /* x+= TWO23; */
- fnabs fp1,fp1 /* if (x == 0.0) */
- blr /* x = -0.0; */
- END (__rintf)
-
-weak_alias (__rintf, rintf)
-
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/s_roundf.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/s_roundf.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,86 +0,0 @@
-/* roundf function. PowerPC32 version.
- Copyright (C) 2004-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-
- .section .rodata.cst8,"aM",@progbits,8
- .align 3
-.LC0: /* 2**23 */
- .long 0x4b000000
-.LC1: /* 0.5 */
- .long 0x3f000000
-
-/* float [fp1] roundf (float x [fp1])
- IEEE 1003.1 round function. IEEE specifies "round to the nearest
- integer value, rounding halfway cases away from zero, regardless of
- the current rounding mode." However PowerPC Architecture defines
- "Round to Nearest" as "Choose the best approximation. In case of a
- tie, choose the one that is even (least significant bit o).".
- So we can't use the PowerPC "Round to Nearest" mode. Instead we set
- "Round toward Zero" mode and round by adding +-0.5 before rounding
- to the integer value. */
-
- .section ".text"
-ENTRY (__roundf )
- mffs fp11 /* Save current FPU rounding mode. */
-#ifdef SHARED
- mflr r11
- cfi_register(lr,r11)
- SETUP_GOT_ACCESS(r9,got_label)
- addis r9,r9,.LC0-got_label@ha
- addi r9,r9,.LC0-got_label@l
- mtlr r11
- cfi_same_value (lr)
- lfs fp13,0(r9)
-#else
- lis r9,.LC0@ha
- lfs fp13,.LC0@l(r9)
-#endif
- fabs fp0,fp1
- fsubs fp12,fp13,fp13 /* generate 0.0 */
- fcmpu cr7,fp0,fp13 /* if (fabs(x) > TWO23) */
- fcmpu cr6,fp1,fp12 /* if (x > 0.0) */
- bnllr- cr7
- mtfsfi 7,1 /* Set rounding mode toward 0. */
-#ifdef SHARED
- lfs fp10,.LC1-.LC0(r9)
-#else
- lfs fp10,.LC1@l(r9)
-#endif
- ble- cr6,.L4
- fadds fp1,fp1,fp10 /* x+= 0.5; */
- fadds fp1,fp1,fp13 /* x+= TWO23; */
- fsubs fp1,fp1,fp13 /* x-= TWO23; */
- fabs fp1,fp1 /* if (x == 0.0) */
- /* x = 0.0; */
- mtfsf 0x01,fp11 /* restore previous rounding mode. */
- blr
-.L4:
- fsubs fp9,fp1,fp10 /* x+= 0.5; */
- bge- cr6,.L9 /* if (x < 0.0) */
- fsubs fp1,fp9,fp13 /* x-= TWO23; */
- fadds fp1,fp1,fp13 /* x+= TWO23; */
- fnabs fp1,fp1 /* if (x == 0.0) */
- /* x = -0.0; */
-.L9:
- mtfsf 0x01,fp11 /* restore previous rounding mode. */
- blr
- END (__roundf)
-
-weak_alias (__roundf, roundf)
-
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/s_round.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/s_round.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,95 +0,0 @@
-/* round function. PowerPC32 version.
- Copyright (C) 2004-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
- .section .rodata.cst8,"aM",@progbits,8
- .align 2
-.LC0: /* 2**52 */
- .long 0x59800000
-.LC1: /* 0.5 */
- .long 0x3f000000
-
-/* double [fp1] round (double x [fp1])
- IEEE 1003.1 round function. IEEE specifies "round to the nearest
- integer value, rounding halfway cases away from zero, regardless of
- the current rounding mode." However PowerPC Architecture defines
- "Round to Nearest" as "Choose the best approximation. In case of a
- tie, choose the one that is even (least significant bit o).".
- So we can't use the PowerPC "Round to Nearest" mode. Instead we set
- "Round toward Zero" mode and round by adding +-0.5 before rounding
- to the integer value. */
-
- .section ".text"
-ENTRY (__round)
- mffs fp11 /* Save current FPU rounding mode. */
-#ifdef SHARED
- mflr r11
- cfi_register(lr,r11)
- SETUP_GOT_ACCESS(r9,got_label)
- addis r9,r9,.LC0-got_label@ha
- addi r9,r9,.LC0-got_label@l
- mtlr r11
- cfi_same_value (lr)
- lfs fp13,0(r9)
-#else
- lis r9,.LC0@ha
- lfs fp13,.LC0@l(r9)
-#endif
- fabs fp0,fp1
- fsub fp12,fp13,fp13 /* generate 0.0 */
- fcmpu cr7,fp0,fp13 /* if (fabs(x) > TWO52) */
- fcmpu cr6,fp1,fp12 /* if (x > 0.0) */
- bnllr- cr7
- mtfsfi 7,1 /* Set rounding mode toward 0. */
-#ifdef SHARED
- lfs fp10,.LC1-.LC0(r9)
-#else
- lis r9,.LC1@ha
- lfs fp10,.LC1@l(r9)
-#endif
- ble- cr6,.L4
- fadd fp1,fp1,fp10 /* x+= 0.5; */
- fadd fp1,fp1,fp13 /* x+= TWO52; */
- fsub fp1,fp1,fp13 /* x-= TWO52; */
- fabs fp1,fp1 /* if (x == 0.0) */
- /* x = 0.0; */
- mtfsf 0x01,fp11 /* restore previous rounding mode. */
- blr
-.L4:
- fsub fp9,fp1,fp10 /* x+= 0.5; */
- bge- cr6,.L9 /* if (x < 0.0) */
- fsub fp1,fp9,fp13 /* x-= TWO52; */
- fadd fp1,fp1,fp13 /* x+= TWO52; */
- fnabs fp1,fp1 /* if (x == 0.0) */
- /* x = -0.0; */
-.L9:
- mtfsf 0x01,fp11 /* restore previous rounding mode. */
- blr
- END (__round)
-
-weak_alias (__round, round)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__round, roundl)
-strong_alias (__round, __roundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __round, roundl, GLIBC_2_1)
-#endif
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/s_truncf.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/s_truncf.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,73 +0,0 @@
-/* truncf function. PowerPC32 version.
- Copyright (C) 2004-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-
- .section .rodata.cst4,"aM",@progbits,4
- .align 2
-.LC0: /* 2**23 */
- .long 0x4b000000
-
-/* float [fp1] truncf (float x [fp1])
- IEEE 1003.1 trunc function. IEEE specifies "trunc to the integer
- value, in floating format, nearest to but no larger in magnitude
- then the argument."
- We set "round toward Zero" mode and trunc by adding +-2**23 then
- subtracting +-2**23. */
-
- .section ".text"
-ENTRY (__truncf)
- mffs fp11 /* Save current FPU rounding mode. */
-#ifdef SHARED
- mflr r11
- cfi_register(lr,r11)
- SETUP_GOT_ACCESS(r9,got_label)
- addis r9,r9,.LC0-got_label@ha
- lfs fp13,.LC0-got_label@l(r9)
- mtlr r11
- cfi_same_value (lr)
-#else
- lis r9,.LC0@ha
- lfs fp13,.LC0@l(r9)
-#endif
- fabs fp0,fp1
- fsubs fp12,fp13,fp13 /* generate 0.0 */
- fcmpu cr7,fp0,fp13 /* if (fabs(x) > TWO23) */
- fcmpu cr6,fp1,fp12 /* if (x > 0.0) */
- bnllr- cr7
- mtfsfi 7,1 /* Set rounding toward 0 mode. */
- ble- cr6,.L4
- fadds fp1,fp1,fp13 /* x+= TWO23; */
- fsubs fp1,fp1,fp13 /* x-= TWO23; */
- fabs fp1,fp1 /* if (x == 0.0) */
- /* x = 0.0; */
- mtfsf 0x01,fp11 /* restore previous rounding mode. */
- blr
-.L4:
- bge- cr6,.L9 /* if (x < 0.0) */
- fsubs fp1,fp1,fp13 /* x-= TWO23; */
- fadds fp1,fp1,fp13 /* x+= TWO23; */
- fnabs fp1,fp1 /* if (x == 0.0) */
- /* x = -0.0; */
-.L9:
- mtfsf 0x01,fp11 /* restore previous rounding mode. */
- blr
- END (__truncf)
-
-weak_alias (__truncf, truncf)
-
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/s_trunc.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/s_trunc.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,81 +0,0 @@
-/* trunc function. PowerPC32 version.
- Copyright (C) 2004-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
- .section .rodata.cst4,"aM",@progbits,4
- .align 2
-.LC0: /* 2**52 */
- .long 0x59800000
-
-/* double [fp1] trunc (double x [fp1])
- IEEE 1003.1 trunc function. IEEE specifies "trunc to the integer
- value, in floating format, nearest to but no larger in magnitude
- then the argument."
- We set "round toward Zero" mode and trunc by adding +-2**52 then
- subtracting +-2**52. */
-
- .section ".text"
-ENTRY (__trunc)
- mffs fp11 /* Save current FPU rounding mode. */
-#ifdef SHARED
- mflr r11
- cfi_register(lr,r11)
- SETUP_GOT_ACCESS(r9,got_label)
- addis r9,r9,.LC0-got_label@ha
- lfs fp13,.LC0-got_label@l(r9)
- mtlr r11
- cfi_same_value (lr)
-#else
- lis r9,.LC0@ha
- lfs fp13,.LC0@l(r9)
-#endif
- fabs fp0,fp1
- fsub fp12,fp13,fp13 /* generate 0.0 */
- fcmpu cr7,fp0,fp13 /* if (fabs(x) > TWO52) */
- fcmpu cr6,fp1,fp12 /* if (x > 0.0) */
- bnllr- cr7
- mtfsfi 7,1 /* Set rounding toward 0 mode. */
- ble- cr6,.L4
- fadd fp1,fp1,fp13 /* x+= TWO52; */
- fsub fp1,fp1,fp13 /* x-= TWO52; */
- fabs fp1,fp1 /* if (x == 0.0) */
- /* x = 0.0; */
- mtfsf 0x01,fp11 /* restore previous rounding mode. */
- blr
-.L4:
- bge- cr6,.L9 /* if (x < 0.0) */
- fsub fp1,fp1,fp13 /* x-= TWO52; */
- fadd fp1,fp1,fp13 /* x+= TWO52; */
- fnabs fp1,fp1 /* if (x == 0.0) */
- /* x = -0.0; */
-.L9:
- mtfsf 0x01,fp11 /* restore previous rounding mode. */
- blr
- END (__trunc)
-
-weak_alias (__trunc, trunc)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__trunc, truncl)
-strong_alias (__trunc, __truncl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __trunc, truncl, GLIBC_2_1)
-#endif
Index: glibc-2.19/sysdeps/powerpc/fpu/s_fmax.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/fpu/s_fmax.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,42 +0,0 @@
-/* Floating-point maximum. PowerPC version.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-
-ENTRY(__fmax)
-/* double [f1] fmax (double [f1] x, double [f2] y); */
- fcmpu cr0,fp1,fp2
- blt cr0,0f /* if x < y, neither x nor y can be NaN... */
- bnulr+ cr0
-/* x and y are unordered, so one of x or y must be a NaN... */
- fcmpu cr1,fp2,fp2
- bunlr cr1
-0: fmr fp1,fp2
- blr
-END(__fmax)
-
-weak_alias (__fmax,fmax)
-
-/* It turns out that it's safe to use this code even for single-precision. */
-strong_alias(__fmax,__fmaxf)
-weak_alias (__fmax,fmaxf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__fmax,__fmaxl)
-weak_alias (__fmax,fmaxl)
-#endif
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/s_fmax.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/s_fmax.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,5 +0,0 @@
-#include <math_ldbl_opt.h>
-#include <sysdeps/powerpc/fpu/s_fmax.S>
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __fmax, fmaxl, GLIBC_2_1)
-#endif
Index: glibc-2.19/sysdeps/powerpc/fpu/s_fmin.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/fpu/s_fmin.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,42 +0,0 @@
-/* Floating-point minimum. PowerPC version.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-
-ENTRY(__fmin)
-/* double [f1] fmin (double [f1] x, double [f2] y); */
- fcmpu cr0,fp1,fp2
- bgt cr0,0f /* if x > y, neither x nor y can be NaN... */
- bnulr+ cr0
-/* x and y are unordered, so one of x or y must be a NaN... */
- fcmpu cr1,fp2,fp2
- bunlr cr1
-0: fmr fp1,fp2
- blr
-END(__fmin)
-
-weak_alias (__fmin,fmin)
-
-/* It turns out that it's safe to use this code even for single-precision. */
-strong_alias(__fmin,__fminf)
-weak_alias (__fmin,fminf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__fmin,__fminl)
-weak_alias (__fmin,fminl)
-#endif
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/s_fmin.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/s_fmin.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,5 +0,0 @@
-#include <math_ldbl_opt.h>
-#include <sysdeps/powerpc/fpu/s_fmin.S>
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __fmin, fminl, GLIBC_2_1)
-#endif
Index: glibc-2.19/sysdeps/powerpc/fpu/s_fma.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/fpu/s_fma.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,32 +0,0 @@
-/* Compute x * y + z as ternary operation. PowerPC version.
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-
-ENTRY(__fma)
-/* double [f1] fma (double [f1] x, double [f2] y, double [f3] z); */
- fmadd fp1,fp1,fp2,fp3
- blr
-END(__fma)
-
-weak_alias (__fma,fma)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__fma,__fmal)
-weak_alias (__fma,fmal)
-#endif
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/s_fma.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/s_fma.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,5 +0,0 @@
-#include <math_ldbl_opt.h>
-#include <sysdeps/powerpc/fpu/s_fma.S>
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __fma, fmal, GLIBC_2_1)
-#endif
Index: glibc-2.19/sysdeps/powerpc/fpu/s_fmaf.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/fpu/s_fmaf.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,27 +0,0 @@
-/* Compute x * y + z as ternary operation. PowerPC version.
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-
-ENTRY(__fmaf)
-/* float [f1] fmaf (float [f1] x, float [f2] y, float [f3] z); */
- fmadds fp1,fp1,fp2,fp3
- blr
-END(__fmaf)
-
-weak_alias (__fmaf,fmaf)
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/s_copysignf.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/s_copysignf.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1 +0,0 @@
-/* __copysignf is in s_copysign.S */
Index: glibc-2.19/sysdeps/powerpc/fpu/s_lrintf.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/fpu/s_lrintf.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1 +0,0 @@
-/* __lrintf is in s_lrint.c */
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/s_fabs.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/s_fabs.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,5 +0,0 @@
-#include <math_ldbl_opt.h>
-#include <sysdeps/powerpc/fpu/s_fabs.S>
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __fabs, fabsl, GLIBC_2_0)
-#endif
Index: glibc-2.19/sysdeps/powerpc/powerpc32/fpu/s_lroundf.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/fpu/s_lroundf.S 2014-11-10 14:30:05.192139074 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1 +0,0 @@
-/* __lroundf is in s_lround.S */
Index: glibc-2.19/sysdeps/powerpc/fpu/s_fabsf.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/fpu/s_fabsf.S 2014-02-07 10:04:38.000000000 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1 +0,0 @@
-/* __fabsf is in s_fabs.S */
Index: glibc-2.19/sysdeps/powerpc/fpu/s_fmaxf.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/fpu/s_fmaxf.S 2014-02-07 10:04:38.000000000 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1 +0,0 @@
-/* __fmaxf is in s_fmax.c */
Index: glibc-2.19/sysdeps/powerpc/fpu/s_fminf.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/fpu/s_fminf.S 2014-02-07 10:04:38.000000000 +0100
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1 +0,0 @@
-/* __fminf is in s_fmin.c */
Reply to: