diff options
author | Georg-Johann Lay <avr@gjlay.de> | 2020-01-08 09:31:07 +0000 |
---|---|---|
committer | Georg-Johann Lay <gjl@gcc.gnu.org> | 2020-01-08 09:31:07 +0000 |
commit | f30dd607669212de135dec1f1d8a93b8954c327c (patch) | |
tree | 497248e433c158b74b956765c29800219a4f94e2 /gcc/config.gcc | |
parent | d5bc18085c8b0344e7b53febc3cd3cc681a98ea3 (diff) | |
download | gcc-f30dd607669212de135dec1f1d8a93b8954c327c.zip gcc-f30dd607669212de135dec1f1d8a93b8954c327c.tar.gz gcc-f30dd607669212de135dec1f1d8a93b8954c327c.tar.bz2 |
Implement 64-bit double functions.
gcc/
PR target/92055
* config.gcc (tm_defines) [target=avr]: Support --with-libf7,
--with-double-comparison.
* doc/install.texi: Document them.
* config/avr/avr-c.c (avr_cpu_cpp_builtins)
<WITH_LIBF7_LIBGCC, WITH_LIBF7_MATH, WITH_LIBF7_MATH_SYMBOLS>
<WITH_DOUBLE_COMPARISON>: New built-in defines.
* doc/invoke.texi (AVR Built-in Macros): Document them.
* config/avr/avr-protos.h (avr_float_lib_compare_returns_bool): New.
* config/avr/avr.c (avr_float_lib_compare_returns_bool): New function.
* config/avr/avr.h (FLOAT_LIB_COMPARE_RETURNS_BOOL): New macro.
libgcc/
PR target/92055
* config.host (tmake_file) [target=avr]: Add t-libf7,
t-libf7-math, t-libf7-math-symbols as specified by --with-libf7=.
* config/avr/t-avrlibc: Don't copy libgcc.a if there are modules
depending on sizeof (double) or sizeof (long double).
* config/avr/libf7: New folder.
libgcc/config/avr/libf7/
PR target/92055
* t-libf7: New file.
* t-libf7-math: New file.
* t-libf7-math-symbols: New file.
* libf7-common.mk: New file.
* libf7-asm-object.mk: New file.
* libf7-c-object.mk: New file.
* asm-defs.h: New file.
* libf7.h: New file.
* libf7.c: New file.
* libf7-asm.sx: New file.
* libf7-array.def: New file.
* libf7-const.def: New file.
* libf7-constdef.h: New file.
* f7renames.sh: New script.
* f7wraps.sh: New script.
* f7-renames.h: New generated file.
* f7-wraps.h: New generated file.
From-SVN: r279994
Diffstat (limited to 'gcc/config.gcc')
-rw-r--r-- | gcc/config.gcc | 48 |
1 files changed, 44 insertions, 4 deletions
diff --git a/gcc/config.gcc b/gcc/config.gcc index c3d6464..6c957c4 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -1336,8 +1336,48 @@ avr-*-*) tm_file="${tm_file} ${cpu_type}/avrlibc.h" tm_defines="${tm_defines} WITH_AVRLIBC" fi + # Work out avr_double_comparison which is 2 or 3 and is used in + # target hook FLOAT_LIB_COMPARE_RETURNS_BOOL to determine whether + # DFmode comparisons return 3-state or 2-state results. + case y${with_double_comparison} in + y | ytristate) + avr_double_comparison=3 + ;; + ybool | ylibf7) + avr_double_comparison=2 + ;; + *) + echo "Error: --with-double-comparison= can only be used with: 'tristate', 'bool', 'libf7'" 1>&2 + exit 1 + ;; + esac + case "y${with_libf7}" in + yno) + # avr_double_comparison as set above. + ;; + ylibgcc) + avr_double_comparison=2 + tm_defines="${tm_defines} WITH_LIBF7_LIBGCC" + ;; + y | yyes | ymath-symbols) + avr_double_comparison=2 + tm_defines="${tm_defines} WITH_LIBF7_LIBGCC" + tm_defines="${tm_defines} WITH_LIBF7_MATH" + tm_defines="${tm_defines} WITH_LIBF7_MATH_SYMBOLS" + ;; + ymath) + avr_double_comparison=2 + tm_defines="${tm_defines} WITH_LIBF7_LIBGCC" + tm_defines="${tm_defines} WITH_LIBF7_MATH" + ;; + *) + echo "Error: --with-libf7=${with_libf7} but can only be used with: 'libgcc', 'math', 'math-symbols', 'yes', 'no'" 1>&2 + exit 1 + ;; + esac + tm_defines="${tm_defines} WITH_DOUBLE_COMPARISON=${avr_double_comparison}" case y${with_double} in - y | y32) + y32) avr_double=32 tm_defines="${tm_defines} HAVE_DOUBLE32" ;; @@ -1352,7 +1392,7 @@ avr-*-*) tm_defines="${tm_defines} HAVE_DOUBLE64" tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB" ;; - y32,64) + y | y32,64) avr_double=32 avr_double_multilib=1 tm_defines="${tm_defines} HAVE_DOUBLE32" @@ -1365,7 +1405,7 @@ avr-*-*) ;; esac case y${with_long_double} in - y | y32) + y32) avr_long_double=32 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32" ;; @@ -1373,7 +1413,7 @@ avr-*-*) avr_long_double=64 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64" ;; - y64,32) + y | y64,32) avr_long_double=64 avr_long_double_multilib=1 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32" |