summaryrefslogtreecommitdiff
path: root/gcc/config/s390/t-s390
diff options
context:
space:
mode:
authorkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>2015-05-19 17:32:07 +0000
committerkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>2015-05-19 17:32:07 +0000
commit07f323599ff8187dd83433ac4ff69609d723b5c7 (patch)
tree7d357e75cc6b0f15e4628fcdd9db4c4262d0f65f /gcc/config/s390/t-s390
parent26233f43b28b0e073ba048c09f84ebf19a6c607f (diff)
downloadgcc-07f323599ff8187dd83433ac4ff69609d723b5c7.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@223398 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/s390/t-s390')
-rw-r--r--gcc/config/s390/t-s39027
1 files changed, 27 insertions, 0 deletions
diff --git a/gcc/config/s390/t-s390 b/gcc/config/s390/t-s390
new file mode 100644
index 00000000000..800412c9dd2
--- /dev/null
+++ b/gcc/config/s390/t-s390
@@ -0,0 +1,27 @@
+# Copyright (C) 2015 Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+
+TM_H += $(srcdir)/config/s390/s390-builtins.def
+TM_H += $(srcdir)/config/s390/s390-builtin-types.def
+
+s390-c.o: $(srcdir)/config/s390/s390-c.c \
+ $(srcdir)/config/s390/s390-protos.h $(CONFIG_H) $(SYSTEM_H) coretypes.h \
+ $(TM_H) $(TREE_H) $(TM_P_H) $(FLAGS_H) $(C_COMMON_H) $(GGC_H) \
+ $(TARGET_H) $(TARGET_DEF_H) $(CPPLIB_H) $(C_PRAGMA_H)
+ $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+ $(srcdir)/config/s390/s390-c.c