gcc/libgcc/config/rs6000
Joseph Myers bc1b3a8840 Optimize powerpc*-*-linux* e500 hardfp/soft-fp use.
Continuing the cleanups of libgcc soft-fp configuration for
powerpc*-*-linux* in preparation for implementing
TARGET_ATOMIC_ASSIGN_EXPAND_FENV for soft-float and e500, this patch
optimizes the choice of which functions to build for the e500 cases.

For e500v2, use of hardfp is generally right, except that calls to
__unordsf2 and __unorddf2 are actually generated by GCC from
__builtin_isunordered and so they need to be implemented with soft-fp
to avoid recursively calling themselves.  For e500v1, hardfp is right
for SFmode (except for __unordsf2) but soft-fp for DFmode (and when
using soft-fp, as usual it's best for the conversions between DFmode
and integers all to come directly from soft-fp rather than some coming
from libgcc2.c).  Thus, new variables hardfp_exclusions and
softfp_extras are added that configurations using t-hardfp and
t-softfp can use to achieve the desired effect of selectively mixing
the two sources of functions.

Tested with no regressions for crosses to powerpc-linux-gnuspe (both
e500v1 and e500v2); also checked that the same set of symbols and
versions is exported from shared libgcc before and after the patch.

	* config/t-hardfp (hardfp_exclusions): Document new variable for
	user to define.
	(hardfp_func_list): Exclude functions from $(hardfp_exclusions).
	* config/t-softfp (softfp_extras): Document new variable for user
	to define.
	(softfp_func_list): Add functions from $(softfp_extras).
	* config/rs6000/t-e500v1-fp, config/rs6000/t-e500v2-fp: New files.
	* config.host (powerpc*-*-linux*): For e500v1, use
	rs6000/t-e500v1-fp and t-hardfp; do not use t-softfp-sfdf and
	t-softfp-excl.  For e500v2, use t-hardfp-sfdf, rs6000/t-e500v2-fp
	and t-hardfp; do not use t-softfp-sfdf and t-softfp-excl.

From-SVN: r216835
2014-10-29 12:59:16 +00:00
..
aix-unwind.h Use -fbuilding-libgcc for more target macros used in libgcc. 2014-09-05 13:03:46 +01:00
aixinitfini.c re PR target/33704 (AIX runs c++ constructors in incorrect order) 2013-11-23 10:38:07 -05:00
crtcxa.c Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
crtresfpr.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
crtresgpr.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
crtrestvr.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
crtresxfpr.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
crtresxgpr.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
crtsavevr.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
crtsavfpr.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
crtsavgpr.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
cxa_atexit.c Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
cxa_finalize.c Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
darwin-asm.h Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
darwin-crt2.c Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
darwin-fallback.c Use -fbuilding-libgcc for more target macros used in libgcc. 2014-09-05 13:03:46 +01:00
darwin-fpsave.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
darwin-gpsave.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
darwin-tramp.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
darwin-unwind.h Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
darwin-vecsave.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
darwin-world.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
e500crtres32gpr.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
e500crtres64gpr.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
e500crtres64gprctr.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
e500crtrest32gpr.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
e500crtrest64gpr.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
e500crtresx32gpr.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
e500crtresx64gpr.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
e500crtsav32gpr.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
e500crtsav64gpr.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
e500crtsav64gprctr.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
e500crtsavg32gpr.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
e500crtsavg64gpr.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
e500crtsavg64gprctr.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
eabi-ci.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
eabi-cn.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
eabi.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
exit.h Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
freebsd-unwind.h Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
gthr-aix.h Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
ibm-ldouble-format Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
ibm-ldouble.c ibm-ldouble.c (typedef union longDblUnion): Delete. 2014-07-31 11:22:58 -05:00
libgcc-aix-cxa.ver re PR target/33704 (AIX runs c++ constructors in incorrect order) 2013-11-23 10:38:07 -05:00
libgcc-darwin.10.4.ver Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
libgcc-darwin.10.5.ver Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
libgcc-glibc.ver Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
libgcc-ibm-ldouble.ver Move shlib support to toplevel libgcc 2011-11-02 10:49:46 +00:00
linux-unwind.h Use -fbuilding-libgcc for more target macros used in libgcc. 2014-09-05 13:03:46 +01:00
ppc64-fp.c Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
sfp-machine.h float128-mul-underflow.c, [...]: New tests. 2014-02-12 23:24:49 +00:00
sol-ci.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
sol-cn.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
t-aix-cxa re PR target/33704 (AIX runs c++ constructors in incorrect order) 2013-11-23 10:38:07 -05:00
t-crtstuff Move crtstuff support to toplevel libgcc 2011-11-02 14:33:56 +00:00
t-darwin Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
t-darwin64 t-darwin64 (LIB2ADD): Add fp and gp save routines. 2011-12-04 15:46:28 +00:00
t-e500v1-fp Optimize powerpc*-*-linux* e500 hardfp/soft-fp use. 2014-10-29 12:59:16 +00:00
t-e500v2-fp Optimize powerpc*-*-linux* e500 hardfp/soft-fp use. 2014-10-29 12:59:16 +00:00
t-freebsd Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
t-freebsd64 config.host: Add bits to support powerpc64-*-freebsd*. 2012-03-21 21:12:16 +01:00
t-ibm-ldouble Move shlib support to toplevel libgcc 2011-11-02 10:49:46 +00:00
t-linux t-linux64: Delete. 2012-01-25 06:05:22 +10:30
t-lynx Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
t-netbsd rs6000 (SAVE_INLINE_VRS, [...]): Define. 2012-04-25 12:02:56 +09:30
t-ppc64-fp Do not build soft-fp code at all for powerpc64-linux-gnu. 2014-10-22 18:29:14 +01:00
t-ppccomm Cleanup rs6000/t-ppccomm configurations (PR other/51022) 2011-11-28 16:02:10 +00:00
t-savresfgpr rs6000 (SAVE_INLINE_VRS, [...]): Define. 2012-04-25 12:02:56 +09:30
t-slibgcc-aix Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
tramp.S Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00