diff options
author | walt <walt@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-02-24 15:08:00 +0000 |
---|---|---|
committer | walt <walt@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-02-24 15:08:00 +0000 |
commit | 2da355155a16445440cdd9ffedd55dd9c5771eb8 (patch) | |
tree | 53162bb2cdbb19111069e925e278cefd4d970326 /libgcc | |
parent | 54c625050e1f4836d5b250c82723e34eafd184a7 (diff) | |
download | gcc-2da355155a16445440cdd9ffedd55dd9c5771eb8.tar.gz |
TILE-Gx big endian support.
/:
* configure.ac (tilepro-*-*) Change to tilepro*-*-*.
(tilegx-*-*): Change to tilegx*-*-*.
* configure: Regenerate.
contrib/:
* config-list.mk (LIST): Add tilegxbe-linux-gnu.
libcpp/:
* configure.ac: Change "tilepro" triplet to "tilepro*".
* configure: Regenerate.
libgcc/:
* config.host: Support "tilegx*" and "tilepro*" triplets.
* config/tilegx/sfp-machine32.h (__BYTE_ORDER): Handle big endian.
* config/tilegx/sfp-machine64.h (__BYTE_ORDER): Handle big endian.
gcc/:
* config.gcc (tilepro-*-*): Change to tilepro*-*-*.
(tilegx-*-linux*): Change to tilegx*-*-linux*; Support tilegxbe
triplet.
* common/config/tilegx/tilegx-common.c
(TARGET_DEFAULT_TARGET_FLAGS): Define.
* config/tilegx/linux.h (ASM_SPEC): Add endian_spec.
(LINK_SPEC): Ditto.
* config/tilegx/sync.md (atomic_test_and_set): Handle big endian.
* config/tilegx/tilegx.c (tilegx_return_in_msb): New.
(tilegx_gimplify_va_arg_expr): Handle big endian.
(tilegx_expand_unaligned_load): Ditto.
(tilegx_expand_unaligned_store): Ditto.
(TARGET_RETURN_IN_MSB): New.
* config/tilegx/tilegx.h (TARGET_DEFAULT): New.
(TARGET_ENDIAN_DEFAULT): New.
(TARGET_BIG_ENDIAN): Handle big endian.
(BYTES_BIG_ENDIAN): Ditto.
(WORDS_BIG_ENDIAN): Ditto.
(FLOAT_WORDS_BIG_ENDIAN): Ditto.
(ENDIAN_SPEC): New.
(EXTRA_SPECS): New.
* config/tilegx/tilegx.md (extv): Handle big endian.
(extzv): Ditto.
(insn_st<n>): Ditto.
(insn_st<n>_add<bitsuffix>): Ditto.
(insn_stnt<n>): Ditto.
(insn_stnt<n>_add<bitsuffix>):Ditto.
(vec_interleave_highv8qi): Handle big endian.
(vec_interleave_highv8qi_be): New.
(vec_interleave_highv8qi_le): New.
(insn_v1int_h): Handle big endian.
(vec_interleave_lowv8qi): Handle big endian.
(vec_interleave_lowv8qi_be): New.
(vec_interleave_lowv8qi_le): New.
(insn_v1int_l): Handle big endian.
(vec_interleave_highv4hi): Handle big endian.
(vec_interleave_highv4hi_be): New.
(vec_interleave_highv4hi_le): New.
(insn_v2int_h): Handle big endian.
(vec_interleave_lowv4hi): Handle big endian.
(vec_interleave_lowv4hi_be): New.
(vec_interleave_lowv4hi_le): New.
(insn_v2int_l): Handle big endian.
(vec_interleave_highv2si): Handle big endian.
(vec_interleave_highv2si_be): New.
(vec_interleave_highv2si_le): New.
(insn_v4int_h): Handle big endian.
(vec_interleave_lowv2si): Handle big endian.
(vec_interleave_lowv2si_be): New.
(vec_interleave_lowv2si_le): New.
(insn_v4int_l): Handle big endian.
* config/tilegx/tilegx.opt (mbig-endian): New option.
(mlittle-endian): New option.
* doc/install.texi: Document tilegxbe-linux.
* doc/invoke.texi: Document -mbig-endian and -mlittle-endian.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@208069 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgcc')
-rw-r--r-- | libgcc/ChangeLog | 6 | ||||
-rw-r--r-- | libgcc/config.host | 10 | ||||
-rw-r--r-- | libgcc/config/tilegx/sfp-machine32.h | 4 | ||||
-rw-r--r-- | libgcc/config/tilegx/sfp-machine64.h | 4 |
4 files changed, 22 insertions, 2 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 1dae0204892..167e7a90b3c 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,9 @@ +2014-02-24 Walter Lee <walt@tilera.com> + + * config.host: Support "tilegx*" and "tilepro*" triplets. + * config/tilegx/sfp-machine32.h (__BYTE_ORDER): Handle big endian. + * config/tilegx/sfp-machine64.h (__BYTE_ORDER): Handle big endian. + 2014-02-20 Sandra Loosemore <sandra@codesourcery.com> Chung-Lin Tang <cltang@codesourcery.com> diff --git a/libgcc/config.host b/libgcc/config.host index 0b83fc05464..185d40bf676 100644 --- a/libgcc/config.host +++ b/libgcc/config.host @@ -186,6 +186,12 @@ s390*-*-*) sh[123456789lbe]*-*-*) cpu_type=sh ;; +tilegx*-*-*) + cpu_type=tilegx + ;; +tilepro*-*-*) + cpu_type=tilepro + ;; v850*-*-*) cpu_type=v850 ;; @@ -1177,11 +1183,11 @@ tic6x-*-elf) extra_parts="$extra_parts crtbeginS.o crtendS.o crti.o crtn.o" unwind_header=config/c6x/unwind-c6x.h ;; -tilegx-*-linux*) +tilegx*-*-linux*) tmake_file="${tmake_file} tilegx/t-crtstuff t-softfp-sfdf tilegx/t-softfp t-softfp tilegx/t-tilegx" md_unwind_header=tilepro/linux-unwind.h ;; -tilepro-*-linux*) +tilepro*-*-linux*) tmake_file="${tmake_file} tilepro/t-crtstuff t-softfp-sfdf t-softfp tilepro/t-tilepro" md_unwind_header=tilepro/linux-unwind.h ;; diff --git a/libgcc/config/tilegx/sfp-machine32.h b/libgcc/config/tilegx/sfp-machine32.h index 1fefb5a41ce..9fc281cc8ed 100644 --- a/libgcc/config/tilegx/sfp-machine32.h +++ b/libgcc/config/tilegx/sfp-machine32.h @@ -55,7 +55,11 @@ typedef int __gcc_CMPtype __attribute__ ((mode (__libgcc_cmp_return__))); #define __LITTLE_ENDIAN 1234 #define __BIG_ENDIAN 4321 +#if defined __BIG_ENDIAN__ +#define __BYTE_ORDER __BIG_ENDIAN +#else #define __BYTE_ORDER __LITTLE_ENDIAN +#endif /* Define ALIASNAME as a strong alias for NAME. */ # define strong_alias(name, aliasname) _strong_alias(name, aliasname) diff --git a/libgcc/config/tilegx/sfp-machine64.h b/libgcc/config/tilegx/sfp-machine64.h index 3e2bd41e6a9..5dbbe60c46b 100644 --- a/libgcc/config/tilegx/sfp-machine64.h +++ b/libgcc/config/tilegx/sfp-machine64.h @@ -55,7 +55,11 @@ typedef int __gcc_CMPtype __attribute__ ((mode (__libgcc_cmp_return__))); #define __LITTLE_ENDIAN 1234 #define __BIG_ENDIAN 4321 +#if defined __BIG_ENDIAN__ +#define __BYTE_ORDER __BIG_ENDIAN +#else #define __BYTE_ORDER __LITTLE_ENDIAN +#endif /* Define ALIASNAME as a strong alias for NAME. */ # define strong_alias(name, aliasname) _strong_alias(name, aliasname) |