diff options
author | Julian Brown <julian@codesourcery.com> | 2011-08-01 12:41:30 +0000 |
---|---|---|
committer | Julian Brown <jules@gcc.gnu.org> | 2011-08-01 12:41:30 +0000 |
commit | 655b30bfde9172bd40189a787b85b16e461ef1ef (patch) | |
tree | 42de6b523b06d8fd9304883974cdc19b9dcf95b2 /libgcc | |
parent | 3d6c3bd710cae34a0a4e7e69061f42fe19c442cb (diff) | |
download | gcc-655b30bfde9172bd40189a787b85b16e461ef1ef.zip gcc-655b30bfde9172bd40189a787b85b16e461ef1ef.tar.gz gcc-655b30bfde9172bd40189a787b85b16e461ef1ef.tar.bz2 |
configure.ac (fixed-point): Add ARM support.
gcc/
* configure.ac (fixed-point): Add ARM support.
* configure: Regenerate.
* config/arm/arm.c (arm_fixed_mode_set): New struct.
(arm_set_fixed_optab_libfunc): New.
(arm_set_fixed_conv_libfunc): New.
(arm_init_libfuncs): Initialise fixed-point helper libfuncs with
ARM-specific names.
(aapcs_libcall_value): Return sub-word-size fixed-point libcall
return values in SImode.
(arm_return_in_msb): Return fixed-point types in the msb.
(arm_pad_reg_upwards, arm_pad_arg_upwards): Pad fixed-point types
upwards.
(arm_scalar_mode_supported_p): Support fixed-point modes.
(arm_vector_mode_supported_p): Support vector fixed-point modes.
* config/arm/arm.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE)
(LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE)
(SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE)
(LONG_LONG_ACCUM_TYPE_SIZE, MAX_FIXED_MODE_SIZE): Define.
* config/arm/iterators.md (FIXED, ADDSUB, UQADDSUB, QADDSUB, QMUL):
New mode iterators.
(qaddsub_suf): New mode attribute.
* config/arm/arm-modes.def (FRACT, UFRACT, ACCUM, UACCUM): Declare
vector modes.
* config/arm/predicates.md (sat_shift_operator): New predicate.
* config/arm/arm-fixed.md: New.
* config/arm/arm.md: Include arm-fixed.md.
* config/arm/t-arm (MD_INCLUDES): Add arm-fixed.md.
libgcc/
* config.host (arm*-*-linux*, arm*-*-uclinux*, arm*-*-eabi*)
(arm*-*-symbianelf*): Add t-fixedpoint-gnu-prefix makefile fragment.
* config/arm/bpabi-lib.h (LIBGCC2_FIXEDBIT_GNU_PREFIX): Define.
gcc/testsuite/
* gcc.target/arm/fixed-point-exec.c: New test.
From-SVN: r177025
Diffstat (limited to 'libgcc')
-rw-r--r-- | libgcc/ChangeLog | 6 | ||||
-rw-r--r-- | libgcc/config.host | 3 | ||||
-rw-r--r-- | libgcc/config/arm/bpabi-lib.h | 5 |
3 files changed, 14 insertions, 0 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 70118f8..9108e46 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,5 +1,11 @@ 2011-08-01 Julian Brown <julian@codesourcery.com> + * config.host (arm*-*-linux*, arm*-*-uclinux*, arm*-*-eabi*) + (arm*-*-symbianelf*): Add t-fixedpoint-gnu-prefix makefile fragment. + * config/arm/bpabi-lib.h (LIBGCC2_FIXEDBIT_GNU_PREFIX): Define. + +2011-08-01 Julian Brown <julian@codesourcery.com> + * Makefile.in (LIBGCC_VER_FIXEDPOINT_GNU_PREFIX): New. (libgcc-std.ver.in): Use above. * fixed-bit.h (LIBGCC2_FIXEDBIT_GNU_PREFIX): Define, if diff --git a/libgcc/config.host b/libgcc/config.host index 11760d0..f7c1b3b 100644 --- a/libgcc/config.host +++ b/libgcc/config.host @@ -264,12 +264,15 @@ arm*-*-freebsd*) arm*-*-netbsdelf*) ;; arm*-*-linux*) # ARM GNU/Linux with ELF + tmake_file="${tmake_file} t-fixedpoint-gnu-prefix" ;; arm*-*-uclinux*) # ARM ucLinux + tmake_file="${tmake_file} t-fixedpoint-gnu-prefix" ;; arm*-*-ecos-elf) ;; arm*-*-eabi* | arm*-*-symbianelf* ) + tmake_file="${tmake_file} t-fixedpoint-gnu-prefix" ;; arm*-*-rtems*) ;; diff --git a/libgcc/config/arm/bpabi-lib.h b/libgcc/config/arm/bpabi-lib.h index 49a28c3..cfa09cf 100644 --- a/libgcc/config/arm/bpabi-lib.h +++ b/libgcc/config/arm/bpabi-lib.h @@ -78,3 +78,8 @@ #ifdef L_floatundisf #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatundisf, ul2f) #endif + +/* For ARM bpabi, we only want to use a "__gnu_" prefix for the fixed-point + helper functions - not everything in libgcc - in the interests of + maintaining backward compatibility. */ +#define LIBGCC2_FIXEDBIT_GNU_PREFIX |