aboutsummaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorliuhongt <hongtao.liu@intel.com>2021-07-05 17:31:46 +0800
committerliuhongt <hongtao.liu@intel.com>2021-09-02 14:11:59 +0800
commitb387e664cfa4e9dd010a3f64d446308d6d84a5d2 (patch)
tree70d356bb6f7c419e7fa031059c630aacfc1809dd /libgcc
parent7cbc870c495cebc61f5d0ebb975856c207a42fab (diff)
downloadgcc-b387e664cfa4e9dd010a3f64d446308d6d84a5d2.zip
gcc-b387e664cfa4e9dd010a3f64d446308d6d84a5d2.tar.gz
gcc-b387e664cfa4e9dd010a3f64d446308d6d84a5d2.tar.bz2
libgcc: Enable hfmode soft-sf/df/xf/tf extensions and truncations.
libgcc/ChangeLog: * config/i386/32/sfp-machine.h (_FP_NANFRAC_H): New macro. * config/i386/64/sfp-machine.h (_FP_NANFRAC_H): Ditto. * config/i386/sfp-machine.h (_FP_NANSIGN_H): Ditto. * config/i386/t-softfp: Add hf soft-fp. * config.host: Add i386/64/t-softfp. * config/i386/64/t-softfp: New file.
Diffstat (limited to 'libgcc')
-rw-r--r--libgcc/config.host5
-rw-r--r--libgcc/config/i386/32/sfp-machine.h1
-rw-r--r--libgcc/config/i386/64/sfp-machine.h1
-rw-r--r--libgcc/config/i386/64/t-softfp1
-rw-r--r--libgcc/config/i386/sfp-machine.h1
-rw-r--r--libgcc/config/i386/t-softfp5
6 files changed, 10 insertions, 4 deletions
diff --git a/libgcc/config.host b/libgcc/config.host
index 8b63674..e2b4be4 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -1539,10 +1539,7 @@ i[34567]86-*-elfiamcu | i[34567]86-*-rtems*)
;;
i[34567]86-*-* | x86_64-*-*)
tmake_file="${tmake_file} t-softfp-tf"
- if test "${host_address}" = 32; then
- tmake_file="${tmake_file} i386/${host_address}/t-softfp"
- fi
- tmake_file="${tmake_file} i386/t-softfp t-softfp"
+ tmake_file="${tmake_file} i386/${host_address}/t-softfp i386/t-softfp t-softfp"
;;
esac
diff --git a/libgcc/config/i386/32/sfp-machine.h b/libgcc/config/i386/32/sfp-machine.h
index 1fa282d..e24cbc8 100644
--- a/libgcc/config/i386/32/sfp-machine.h
+++ b/libgcc/config/i386/32/sfp-machine.h
@@ -86,6 +86,7 @@
#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_H _FP_QNANBIT_H
#define _FP_NANFRAC_S _FP_QNANBIT_S
#define _FP_NANFRAC_D _FP_QNANBIT_D, 0
/* Even if XFmode is 12byte, we have to pad it to
diff --git a/libgcc/config/i386/64/sfp-machine.h b/libgcc/config/i386/64/sfp-machine.h
index 1ff94c2..e1c6166 100644
--- a/libgcc/config/i386/64/sfp-machine.h
+++ b/libgcc/config/i386/64/sfp-machine.h
@@ -13,6 +13,7 @@ typedef unsigned int UTItype __attribute__ ((mode (TI)));
#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_2_udiv(Q,R,X,Y)
+#define _FP_NANFRAC_H _FP_QNANBIT_H
#define _FP_NANFRAC_S _FP_QNANBIT_S
#define _FP_NANFRAC_D _FP_QNANBIT_D
#define _FP_NANFRAC_E _FP_QNANBIT_E, 0
diff --git a/libgcc/config/i386/64/t-softfp b/libgcc/config/i386/64/t-softfp
new file mode 100644
index 0000000..f9d8b3a
--- /dev/null
+++ b/libgcc/config/i386/64/t-softfp
@@ -0,0 +1 @@
+softfp_extras := fixhfti fixunshfti floattihf floatuntihf
diff --git a/libgcc/config/i386/sfp-machine.h b/libgcc/config/i386/sfp-machine.h
index 8319f05..f15d29d 100644
--- a/libgcc/config/i386/sfp-machine.h
+++ b/libgcc/config/i386/sfp-machine.h
@@ -17,6 +17,7 @@ typedef int __gcc_CMPtype __attribute__ ((mode (__libgcc_cmp_return__)));
#define _FP_KEEPNANFRACP 1
#define _FP_QNANNEGATEDP 0
+#define _FP_NANSIGN_H 1
#define _FP_NANSIGN_S 1
#define _FP_NANSIGN_D 1
#define _FP_NANSIGN_E 1
diff --git a/libgcc/config/i386/t-softfp b/libgcc/config/i386/t-softfp
index 685d9cf..4ac214e 100644
--- a/libgcc/config/i386/t-softfp
+++ b/libgcc/config/i386/t-softfp
@@ -1 +1,6 @@
LIB2ADD += $(srcdir)/config/i386/sfp-exceptions.c
+
+softfp_extensions := hfsf hfdf hftf hfxf sfdf sftf dftf xftf
+softfp_truncations := tfhf xfhf dfhf sfhf tfsf dfsf tfdf tfxf
+
+softfp_extras += eqhf2 \ No newline at end of file