diff options
author | Andreas Krebbel <krebbel@gcc.gnu.org> | 2015-05-19 17:32:07 +0000 |
---|---|---|
committer | Andreas Krebbel <krebbel@gcc.gnu.org> | 2015-05-19 17:32:07 +0000 |
commit | 3af82a61fa223fad00f5396b8f0ebb93cde646d1 (patch) | |
tree | 7d357e75cc6b0f15e4628fcdd9db4c4262d0f65f /gcc/config.gcc | |
parent | 6e5b5de88b7764a779cee87591186a01cab96f50 (diff) | |
download | gcc-3af82a61fa223fad00f5396b8f0ebb93cde646d1.zip gcc-3af82a61fa223fad00f5396b8f0ebb93cde646d1.tar.gz gcc-3af82a61fa223fad00f5396b8f0ebb93cde646d1.tar.bz2 |
S/390 zvector builtin support.
With this patch GCC implements an Altivec style set of builtins to
make use of vector instructions in C/C++ code. This is provided for
compatibility with the IBM XL compiler.
gcc/
* config.gcc: Add vecintrin.h to extra_headers. Add s390-c.o to
c_target_objs and cxx_target_objs. Add t-s390 to tmake_file.
* config/s390/s390-builtin-types.def: New file.
* config/s390/s390-builtins.def: New file.
* config/s390/s390-builtins.h: New file.
* config/s390/s390-c.c: New file.
* config/s390/s390-modes.def: Add modes CCVEQANY, CCVH,
CCVHANY, CCVHU, CCVHUANY, CCVFHANY, CCVFHEANY.
* config/s390/s390-protos.h (s390_expand_vec_compare_cc)
(s390_cpu_cpp_builtins, s390_register_target_pragmas): Add
prototypes.
* config/s390/s390.c (s390-builtins.h, s390-builtins.def):
Include.
(flags_builtin, flags_overloaded_builtin_var, s390_builtin_types)
(s390_builtin_fn_types, s390_builtin_decls, code_for_builtin): New
variable definitions.
(s390_const_operand_ok): New function.
(s390_expand_builtin): Rewrite.
(s390_init_builtins): New function.
(s390_handle_vectorbool_attribute): New function.
(s390_attribute_table): Add s390_vector_bool attribute.
(s390_match_ccmode_set): Handle new cc modes CCVH, CCVHU.
(s390_branch_condition_mask): Generate masks for new modes.
(s390_expand_vec_compare_cc): New function.
(s390_mangle_type): Add mangling for vector bool types.
(enum s390_builtin): Remove.
(s390_atomic_assign_expand_fenv): Rename constants for sfpc and
efpc builtins.
* config/s390/s390.h (TARGET_CPU_CPP_BUILTINS): Call
s390_cpu_cpp_builtins.
(REGISTER_TARGET_PRAGMAS): New macro.
* config/s390/s390.md: Define more UNSPEC_VEC_* constants.
(insn_cmp mode attribute): Add new CC modes.
(s390_sfpc, s390_efpc): Rename patterns to sfpc and efpc.
(lcbb): New pattern definition.
* config/s390/s390intrin.h: Include vecintrin.h.
* config/s390/t-s390: New file.
* config/s390/vecintrin.h: New file.
* config/s390/vector.md: Include vx-builtins.md.
* config/s390/vx-builtins.md: New file.S/390 zvector builtin support.
From-SVN: r223398
Diffstat (limited to 'gcc/config.gcc')
-rw-r--r-- | gcc/config.gcc | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/gcc/config.gcc b/gcc/config.gcc index eb08a1d..aa0c389 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -457,7 +457,7 @@ spu*-*-*) s390*-*-*) cpu_type=s390 extra_options="${extra_options} fused-madd.opt" - extra_headers="s390intrin.h htmintrin.h htmxlintrin.h" + extra_headers="s390intrin.h htmintrin.h htmxlintrin.h vecintrin.h" ;; # Note the 'l'; we need to be able to match e.g. "shle" or "shl". sh[123456789lbe]*-*-* | sh-*-*) @@ -2538,27 +2538,35 @@ rx-*-elf*) s390-*-linux*) default_gnu_indirect_function=yes tm_file="s390/s390.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h" + c_target_objs="${c_target_objs} s390-c.o" + cxx_target_objs="${cxx_target_objs} s390-c.o" if test x$enable_targets = xall; then tmake_file="${tmake_file} s390/t-linux64" fi + tmake_file="${tmake_file} s390/t-s390" ;; s390x-*-linux*) default_gnu_indirect_function=yes tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h" tm_p_file="linux-protos.h s390/s390-protos.h" + c_target_objs="${c_target_objs} s390-c.o" + cxx_target_objs="${cxx_target_objs} s390-c.o" md_file=s390/s390.md extra_modes=s390/s390-modes.def out_file=s390/s390.c - tmake_file="${tmake_file} s390/t-linux64" + tmake_file="${tmake_file} s390/t-linux64 s390/t-s390" ;; s390x-ibm-tpf*) - tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h s390/tpf.h" - tm_p_file=s390/s390-protos.h - md_file=s390/s390.md - extra_modes=s390/s390-modes.def - out_file=s390/s390.c - thread_file='tpf' + tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h s390/tpf.h" + tm_p_file=s390/s390-protos.h + c_target_objs="${c_target_objs} s390-c.o" + cxx_target_objs="${cxx_target_objs} s390-c.o" + md_file=s390/s390.md + extra_modes=s390/s390-modes.def + out_file=s390/s390.c + thread_file='tpf' extra_options="${extra_options} s390/tpf.opt" + tmake_file="${tmake_file} s390/t-s390" ;; sh-*-elf* | sh[12346l]*-*-elf* | \ sh-*-linux* | sh[2346lbe]*-*-linux* | \ |