This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch master updated. glibc-2.17-886-g6bed143
- From: jsm28 at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 2 Jul 2013 19:51:35 -0000
- Subject: GNU C Library master sources branch master updated. glibc-2.17-886-g6bed143
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via 6bed143eb4bd42be907d143cca456d527e25efec (commit)
from c87156e5e913532f6c470baadd7ca636678d7c8b (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=6bed143eb4bd42be907d143cca456d527e25efec
commit 6bed143eb4bd42be907d143cca456d527e25efec
Author: Joseph Myers <joseph@codesourcery.com>
Date: Tue Jul 2 19:51:19 2013 +0000
Make soft-float ARM use soft-fp fma/fmaf.
diff --git a/ports/ChangeLog.arm b/ports/ChangeLog.arm
index 2674d0e..c7e98af 100644
--- a/ports/ChangeLog.arm
+++ b/ports/ChangeLog.arm
@@ -1,3 +1,12 @@
+2013-07-02 Joseph Myers <joseph@codesourcery.com>
+
+ [BZ #13304]
+ * sysdeps/arm/s_fma.c: New file.
+ * sysdeps/arm/s_fmaf.c: New file.
+ * sysdeps/arm/soft-fp/sfp-machine.h: New file. Based on powerpc
+ version.
+ * sysdeps/arm/Implies: Add arm/soft-fp.
+
2013-07-02 Will Newton <will.newton@linaro.org>
* sysdeps/arm/dl-machine.h (elf_machine_rela): Pass dl_hwcap
diff --git a/ports/sysdeps/arm/Implies b/ports/sysdeps/arm/Implies
index 780c4e2..10bd93a 100644
--- a/ports/sysdeps/arm/Implies
+++ b/ports/sysdeps/arm/Implies
@@ -1,3 +1,4 @@
+arm/soft-fp
wordsize-32
ieee754/flt-32
ieee754/dbl-64
diff --git a/ports/sysdeps/arm/s_fma.c b/ports/sysdeps/arm/s_fma.c
new file mode 100644
index 0000000..dc4e27b
--- /dev/null
+++ b/ports/sysdeps/arm/s_fma.c
@@ -0,0 +1,5 @@
+#ifdef __SOFTFP__
+# include <soft-fp/fmadf4.c>
+#else
+# include <sysdeps/ieee754/dbl-64/s_fma.c>
+#endif
diff --git a/ports/sysdeps/arm/s_fmaf.c b/ports/sysdeps/arm/s_fmaf.c
new file mode 100644
index 0000000..550d8b8
--- /dev/null
+++ b/ports/sysdeps/arm/s_fmaf.c
@@ -0,0 +1,5 @@
+#ifdef __SOFTFP__
+# include <soft-fp/fmasf4.c>
+#else
+# include <sysdeps/ieee754/dbl-64/s_fmaf.c>
+#endif
diff --git a/ports/sysdeps/arm/soft-fp/sfp-machine.h b/ports/sysdeps/arm/soft-fp/sfp-machine.h
new file mode 100644
index 0000000..eba6e35
--- /dev/null
+++ b/ports/sysdeps/arm/soft-fp/sfp-machine.h
@@ -0,0 +1,49 @@
+#define _FP_W_TYPE_SIZE 32
+#define _FP_W_TYPE unsigned long
+#define _FP_WS_TYPE signed long
+#define _FP_I_TYPE long
+
+#define _FP_MUL_MEAT_S(R,X,Y) \
+ _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm)
+#define _FP_MUL_MEAT_D(R,X,Y) \
+ _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm)
+#define _FP_MUL_MEAT_Q(R,X,Y) \
+ _FP_MUL_MEAT_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
+
+#define _FP_MUL_MEAT_DW_S(R,X,Y) \
+ _FP_MUL_MEAT_DW_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm)
+#define _FP_MUL_MEAT_DW_D(R,X,Y) \
+ _FP_MUL_MEAT_DW_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm)
+#define _FP_MUL_MEAT_DW_Q(R,X,Y) \
+ _FP_MUL_MEAT_DW_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
+
+#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_loop(S,R,X,Y)
+#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y)
+#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y)
+
+#define _FP_NANFRAC_S ((_FP_QNANBIT_S << 1) - 1)
+#define _FP_NANFRAC_D ((_FP_QNANBIT_D << 1) - 1), -1
+#define _FP_NANFRAC_Q ((_FP_QNANBIT_Q << 1) - 1), -1, -1, -1
+#define _FP_NANSIGN_S 0
+#define _FP_NANSIGN_D 0
+#define _FP_NANSIGN_Q 0
+
+#define _FP_KEEPNANFRACP 1
+#define _FP_QNANNEGATEDP 0
+
+/* Someone please check this. */
+#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \
+ do { \
+ if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs) \
+ && !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs)) \
+ { \
+ R##_s = Y##_s; \
+ _FP_FRAC_COPY_##wc(R,Y); \
+ } \
+ else \
+ { \
+ R##_s = X##_s; \
+ _FP_FRAC_COPY_##wc(R,X); \
+ } \
+ R##_c = FP_CLS_NAN; \
+ } while (0)
-----------------------------------------------------------------------
Summary of changes:
ports/ChangeLog.arm | 9 ++++++
ports/sysdeps/arm/Implies | 1 +
ports/sysdeps/arm/s_fma.c | 5 +++
ports/sysdeps/arm/s_fmaf.c | 5 +++
ports/sysdeps/arm/soft-fp/sfp-machine.h | 49 +++++++++++++++++++++++++++++++
5 files changed, 69 insertions(+), 0 deletions(-)
create mode 100644 ports/sysdeps/arm/s_fma.c
create mode 100644 ports/sysdeps/arm/s_fmaf.c
create mode 100644 ports/sysdeps/arm/soft-fp/sfp-machine.h
hooks/post-receive
--
GNU C Library master sources