aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/libgcc/config/i386/64
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/libgcc/config/i386/64')
-rw-r--r--gcc-4.9/libgcc/config/i386/64/_divtc3.c16
-rw-r--r--gcc-4.9/libgcc/config/i386/64/_multc3.c16
-rw-r--r--gcc-4.9/libgcc/config/i386/64/_powitf2.c16
-rw-r--r--gcc-4.9/libgcc/config/i386/64/eqtf2.c15
-rw-r--r--gcc-4.9/libgcc/config/i386/64/getf2.c15
-rw-r--r--gcc-4.9/libgcc/config/i386/64/letf2.c15
-rw-r--r--gcc-4.9/libgcc/config/i386/64/sfp-machine.h38
-rw-r--r--gcc-4.9/libgcc/config/i386/64/t-softfp-compat15
8 files changed, 146 insertions, 0 deletions
diff --git a/gcc-4.9/libgcc/config/i386/64/_divtc3.c b/gcc-4.9/libgcc/config/i386/64/_divtc3.c
new file mode 100644
index 000000000..0095d245e
--- /dev/null
+++ b/gcc-4.9/libgcc/config/i386/64/_divtc3.c
@@ -0,0 +1,16 @@
+#ifdef SHARED
+#define __divtc3 __divtc3_shared
+#endif
+
+#define L_divtc3
+#include "libgcc2.c"
+
+#ifdef SHARED
+#undef __divtc3
+extern __typeof__ (__divtc3_shared) __divtc3_compat __attribute__((alias ("__divtc3_shared")));
+
+#ifndef _WIN32
+asm (".symver __divtc3_compat,__divtc3@GCC_4.0.0");
+asm (".symver __divtc3_shared,__divtc3@@GCC_4.3.0");
+#endif
+#endif
diff --git a/gcc-4.9/libgcc/config/i386/64/_multc3.c b/gcc-4.9/libgcc/config/i386/64/_multc3.c
new file mode 100644
index 000000000..08b5ee451
--- /dev/null
+++ b/gcc-4.9/libgcc/config/i386/64/_multc3.c
@@ -0,0 +1,16 @@
+#ifdef SHARED
+#define __multc3 __multc3_shared
+#endif
+
+#define L_multc3
+#include "libgcc2.c"
+
+#ifdef SHARED
+#undef __multc3
+extern __typeof__ (__multc3_shared) __multc3_compat __attribute__((alias ("__multc3_shared")));
+
+#ifndef _WIN32
+asm (".symver __multc3_compat,__multc3@GCC_4.0.0");
+asm (".symver __multc3_shared,__multc3@@GCC_4.3.0");
+#endif
+#endif
diff --git a/gcc-4.9/libgcc/config/i386/64/_powitf2.c b/gcc-4.9/libgcc/config/i386/64/_powitf2.c
new file mode 100644
index 000000000..e8360156b
--- /dev/null
+++ b/gcc-4.9/libgcc/config/i386/64/_powitf2.c
@@ -0,0 +1,16 @@
+#ifdef SHARED
+#define __powitf2 __powitf2_shared
+#endif
+
+#define L_powitf2
+#include "libgcc2.c"
+
+#ifdef SHARED
+#undef __powitf2
+extern __typeof__ (__powitf2_shared) __powitf2_compat __attribute__((alias ("__powitf2_shared")));
+
+#ifndef _WIN32
+asm (".symver __powitf2_compat,__powitf2@GCC_4.0.0");
+asm (".symver __powitf2_shared,__powitf2@@GCC_4.3.0");
+#endif
+#endif
diff --git a/gcc-4.9/libgcc/config/i386/64/eqtf2.c b/gcc-4.9/libgcc/config/i386/64/eqtf2.c
new file mode 100644
index 000000000..23982fb9e
--- /dev/null
+++ b/gcc-4.9/libgcc/config/i386/64/eqtf2.c
@@ -0,0 +1,15 @@
+#ifdef SHARED
+#define __netf2 __netf2_shared
+#endif
+
+#include "soft-fp/eqtf2.c"
+
+#ifdef SHARED
+#undef __netf2
+strong_alias (__netf2_shared, __netf2_compat);
+
+#ifndef _WIN32
+asm (".symver __netf2_compat,__netf2@GCC_3.0");
+asm (".symver __netf2_shared,__netf2@@GCC_4.3.0");
+#endif
+#endif
diff --git a/gcc-4.9/libgcc/config/i386/64/getf2.c b/gcc-4.9/libgcc/config/i386/64/getf2.c
new file mode 100644
index 000000000..e2c416490
--- /dev/null
+++ b/gcc-4.9/libgcc/config/i386/64/getf2.c
@@ -0,0 +1,15 @@
+#ifdef SHARED
+#define __gttf2 __gttf2_shared
+#endif
+
+#include "soft-fp/getf2.c"
+
+#ifdef SHARED
+#undef __gttf2
+strong_alias (__gttf2_shared, __gttf2_compat);
+
+#ifndef _WIN32
+asm (".symver __gttf2_compat,__gttf2@GCC_3.0");
+asm (".symver __gttf2_shared,__gttf2@@GCC_4.3.0");
+#endif
+#endif
diff --git a/gcc-4.9/libgcc/config/i386/64/letf2.c b/gcc-4.9/libgcc/config/i386/64/letf2.c
new file mode 100644
index 000000000..784337fff
--- /dev/null
+++ b/gcc-4.9/libgcc/config/i386/64/letf2.c
@@ -0,0 +1,15 @@
+#ifdef SHARED
+#define __lttf2 __lttf2_shared
+#endif
+
+#include "soft-fp/letf2.c"
+
+#ifdef SHARED
+#undef __lttf2
+strong_alias (__lttf2_shared, __lttf2_compat);
+
+#ifndef _WIN32
+asm (".symver __lttf2_compat,__lttf2@GCC_3.0");
+asm (".symver __lttf2_shared,__lttf2@@GCC_4.3.0");
+#endif
+#endif
diff --git a/gcc-4.9/libgcc/config/i386/64/sfp-machine.h b/gcc-4.9/libgcc/config/i386/64/sfp-machine.h
new file mode 100644
index 000000000..1ff94c23e
--- /dev/null
+++ b/gcc-4.9/libgcc/config/i386/64/sfp-machine.h
@@ -0,0 +1,38 @@
+#define _FP_W_TYPE_SIZE 64
+#define _FP_W_TYPE unsigned long long
+#define _FP_WS_TYPE signed long long
+#define _FP_I_TYPE long long
+
+typedef int TItype __attribute__ ((mode (TI)));
+typedef unsigned int UTItype __attribute__ ((mode (TI)));
+
+#define TI_BITS (__CHAR_BIT__ * (int)sizeof(TItype))
+
+#define _FP_MUL_MEAT_Q(R,X,Y) \
+ _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
+
+#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_2_udiv(Q,R,X,Y)
+
+#define _FP_NANFRAC_S _FP_QNANBIT_S
+#define _FP_NANFRAC_D _FP_QNANBIT_D
+#define _FP_NANFRAC_E _FP_QNANBIT_E, 0
+#define _FP_NANFRAC_Q _FP_QNANBIT_Q, 0
+
+#ifndef _SOFT_FLOAT
+#define FP_EX_SHIFT 7
+
+#define _FP_DECL_EX \
+ unsigned int _fcw __attribute__ ((unused)) = FP_RND_NEAREST;
+
+#define FP_RND_NEAREST 0
+#define FP_RND_ZERO 0x6000
+#define FP_RND_PINF 0x4000
+#define FP_RND_MINF 0x2000
+
+#define FP_RND_MASK 0x6000
+
+#define FP_INIT_ROUNDMODE \
+ do { \
+ __asm__ __volatile__ ("%vstmxcsr\t%0" : "=m" (_fcw)); \
+ } while (0)
+#endif
diff --git a/gcc-4.9/libgcc/config/i386/64/t-softfp-compat b/gcc-4.9/libgcc/config/i386/64/t-softfp-compat
new file mode 100644
index 000000000..0978695c3
--- /dev/null
+++ b/gcc-4.9/libgcc/config/i386/64/t-softfp-compat
@@ -0,0 +1,15 @@
+# When TFmode was first added to x86-64 in gcc 4.3.0, some TFmode
+# support functions got improper versions by accident. Here we
+# correct the version and provide backward binary compatibility.
+
+# Filter out the following TFmode functions.
+tf-compats = getf2.c letf2.c eqtf2.c
+tf-functions := $(addprefix $(srcdir)/soft-fp/, $(tf-compats))
+LIB2ADD := $(filter-out $(tf-functions), $(LIB2ADD))
+LIB2ADD += $(addprefix $(srcdir)/config/i386/64/, $(tf-compats))
+
+# Replace _divtc3, _multc3 and _powitf2.
+libgcc2-tf-functions = _divtc3 _multc3 _powitf2
+LIB2FUNCS_EXCLUDE += $(libgcc2-tf-functions)
+libgcc2-tf-compats = $(addsuffix .c, $(libgcc2-tf-functions))
+LIB2ADD += $(addprefix $(srcdir)/config/i386/64/, $(libgcc2-tf-compats))