TILE-Gx big endian support.
authorwalt <walt@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 24 Feb 2014 15:08:00 +0000 (15:08 +0000)
committerwalt <walt@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 24 Feb 2014 15:08:00 +0000 (15:08 +0000)
commit2da355155a16445440cdd9ffedd55dd9c5771eb8
tree53162bb2cdbb19111069e925e278cefd4d970326
parent54c625050e1f4836d5b250c82723e34eafd184a7
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
23 files changed:
ChangeLog
configure
configure.ac
contrib/ChangeLog
contrib/config-list.mk
gcc/ChangeLog
gcc/common/config/tilegx/tilegx-common.c
gcc/config.gcc
gcc/config/tilegx/linux.h
gcc/config/tilegx/sync.md
gcc/config/tilegx/tilegx.c
gcc/config/tilegx/tilegx.h
gcc/config/tilegx/tilegx.md
gcc/config/tilegx/tilegx.opt
gcc/doc/install.texi
gcc/doc/invoke.texi
libcpp/ChangeLog
libcpp/configure
libcpp/configure.ac
libgcc/ChangeLog
libgcc/config.host
libgcc/config/tilegx/sfp-machine32.h
libgcc/config/tilegx/sfp-machine64.h