Commit Graph

56 Commits

Author SHA1 Message Date
Andreas Krebbel 82a4c5c704 IBM zSystems: Add support for z16 as CPU name.
So far z16 was identified as arch14. After the machine has been
announced we can now add the real name.

gcc/ChangeLog:

	* common/config/s390/s390-common.cc: Rename PF_ARCH14 to PF_Z16.
	* config.gcc: Add z16 as march/mtune switch.
	* config/s390/driver-native.cc (s390_host_detect_local_cpu):
	Recognize z16 with -march=native.
	* config/s390/s390-opts.h (enum processor_type): Rename
	PROCESSOR_ARCH14 to PROCESSOR_3931_Z16.
	* config/s390/s390.cc (PROCESSOR_ARCH14): Rename to ...
	(PROCESSOR_3931_Z16): ... throughout the file.
	(s390_processor processor_table): Add z16 as cpu string.
	* config/s390/s390.h (enum processor_flags): Rename PF_ARCH14 to
	PF_Z16.
	(TARGET_CPU_ARCH14): Rename to ...
	(TARGET_CPU_Z16): ... this.
	(TARGET_CPU_ARCH14_P): Rename to ...
	(TARGET_CPU_Z16_P): ... this.
	(TARGET_ARCH14): Rename to ...
	(TARGET_Z16): ... this.
	(TARGET_ARCH14_P): Rename to ...
	(TARGET_Z16_P): ... this.
	* config/s390/s390.md (cpu_facility): Rename arch14 to z16 and
	check TARGET_Z16 instead of TARGET_ARCH14.
	* config/s390/s390.opt: Add z16 to processor_type.
	* doc/invoke.texi: Document z16 and arch14.
2022-04-12 07:58:57 +02:00
Jakub Jelinek 7adcbafe45 Update copyright years. 2022-01-03 10:42:10 +01:00
Andreas Krebbel 796a35b2bd IBM Z: arch14: Add command line options
Prepare GCC for a future architecture extension.

gcc/ChangeLog:

	* common/config/s390/s390-common.c (processor_flags_table): New entry.
	* config.gcc: Enable arch14 for --with-arch and --with-tune.
	* config/s390/driver-native.c (s390_host_detect_local_cpu): Pick
	arch14 for unknown CPU models.
	* config/s390/s390-opts.h (enum processor_type): Add PROCESSOR_ARCH14.
	* config/s390/s390.c (s390_issue_rate): Add case for PROCESSOR_ARCH14.
	(s390_get_sched_attrmask): Likewise.
	(s390_get_unit_mask): Likewise.
	* config/s390/s390.h (enum processor_flags): Add PF_NNPA and PF_ARCH14.
	(TARGET_CPU_ARCH14, TARGET_CPU_ARCH14_P, TARGET_CPU_NNPA)
	(TARGET_CPU_NNPA_P, TARGET_ARCH14, TARGET_ARCH14_P, TARGET_NNPA)
	(TARGET_NNPA_P): New macro definitions.
	* config/s390/s390.md ("cpu_facility", "enabled"): Add arch14 and nnpa.
	* config/s390/s390.opt: Add PROCESSOR_ARCH14.

gcc/testsuite/ChangeLog:

	* lib/target-supports.exp: Add check for nnpa facility.
2021-03-02 11:58:31 +01:00
Jakub Jelinek 99dee82307 Update copyright years. 2021-01-04 10:26:59 +01:00
Martin Liska eece52b53b opts: Remove all usages of Report keyword.
gcc/brig/ChangeLog:

	* lang.opt: Remove usage of Report.

gcc/c-family/ChangeLog:

	* c.opt: Remove usage of Report.

gcc/ChangeLog:

	* common.opt: Remove usage of Report.
	* config/aarch64/aarch64.opt: Ditto.
	* config/alpha/alpha.opt: Ditto.
	* config/arc/arc.opt: Ditto.
	* config/arm/arm.opt: Ditto.
	* config/avr/avr.opt: Ditto.
	* config/bfin/bfin.opt: Ditto.
	* config/bpf/bpf.opt: Ditto.
	* config/c6x/c6x.opt: Ditto.
	* config/cr16/cr16.opt: Ditto.
	* config/cris/cris.opt: Ditto.
	* config/cris/elf.opt: Ditto.
	* config/csky/csky.opt: Ditto.
	* config/darwin.opt: Ditto.
	* config/fr30/fr30.opt: Ditto.
	* config/frv/frv.opt: Ditto.
	* config/ft32/ft32.opt: Ditto.
	* config/gcn/gcn.opt: Ditto.
	* config/i386/cygming.opt: Ditto.
	* config/i386/i386.opt: Ditto.
	* config/ia64/ia64.opt: Ditto.
	* config/ia64/ilp32.opt: Ditto.
	* config/linux-android.opt: Ditto.
	* config/linux.opt: Ditto.
	* config/lm32/lm32.opt: Ditto.
	* config/m32r/m32r.opt: Ditto.
	* config/m68k/m68k.opt: Ditto.
	* config/mcore/mcore.opt: Ditto.
	* config/microblaze/microblaze.opt: Ditto.
	* config/mips/mips.opt: Ditto.
	* config/mmix/mmix.opt: Ditto.
	* config/mn10300/mn10300.opt: Ditto.
	* config/moxie/moxie.opt: Ditto.
	* config/msp430/msp430.opt: Ditto.
	* config/nds32/nds32.opt: Ditto.
	* config/nios2/elf.opt: Ditto.
	* config/nios2/nios2.opt: Ditto.
	* config/nvptx/nvptx.opt: Ditto.
	* config/pa/pa.opt: Ditto.
	* config/pdp11/pdp11.opt: Ditto.
	* config/pru/pru.opt: Ditto.
	* config/riscv/riscv.opt: Ditto.
	* config/rl78/rl78.opt: Ditto.
	* config/rs6000/aix64.opt: Ditto.
	* config/rs6000/linux64.opt: Ditto.
	* config/rs6000/rs6000.opt: Ditto.
	* config/rs6000/sysv4.opt: Ditto.
	* config/rx/elf.opt: Ditto.
	* config/rx/rx.opt: Ditto.
	* config/s390/s390.opt: Ditto.
	* config/s390/tpf.opt: Ditto.
	* config/sh/sh.opt: Ditto.
	* config/sol2.opt: Ditto.
	* config/sparc/long-double-switch.opt: Ditto.
	* config/sparc/sparc.opt: Ditto.
	* config/tilegx/tilegx.opt: Ditto.
	* config/tilepro/tilepro.opt: Ditto.
	* config/v850/v850.opt: Ditto.
	* config/visium/visium.opt: Ditto.
	* config/vms/vms.opt: Ditto.
	* config/vxworks.opt: Ditto.
	* config/xtensa/xtensa.opt: Ditto.

gcc/lto/ChangeLog:

	* lang.opt: Remove usage of Report.
2020-12-16 12:44:19 +01:00
Ilya Leoshkevich e627cda568 IBM Z: Store long doubles in vector registers when possible
On z14+, there are instructions for working with 128-bit floats (long
doubles) in vector registers.  It's beneficial to use them instead of
instructions that operate on floating point register pairs, because it
allows to store 4 times more data in registers at a time, relieving
register pressure.  The raw performance of the new instructions is
almost the same as that of the new ones.

Implement by storing TFmode values in vector registers on z14+.  Since
not all operations are available with the new instructions, keep the
old ones available using the new FPRX2 mode, and convert between it and
TFmode when necessary (this is called "forwarder" expanders below).
Change the existing TFmode expanders to call either new- or old-style
ones depending on whether we are on z14+ or older machines
("dispatcher" expanders).

gcc/ChangeLog:

2020-11-03  Ilya Leoshkevich  <iii@linux.ibm.com>

	* config/s390/s390-modes.def (FPRX2): New mode.
	* config/s390/s390-protos.h (s390_fma_allowed_p): New function.
	* config/s390/s390.c (s390_fma_allowed_p): Likewise.
	(s390_build_signbit_mask): Support 128-bit masks.
	(print_operand): Support printing the second word of a TFmode
	operand as vector register.
	(constant_modes): Add FPRX2mode.
	(s390_class_max_nregs): Return 1 for TFmode on z14+.
	(s390_is_fpr128): New function.
	(s390_is_vr128): Likewise.
	(s390_can_change_mode_class): Use s390_is_fpr128 and
	s390_is_vr128 in order to determine whether mode refers to a FPR
	pair or to a VR.
	(s390_emit_compare): Force TFmode operands into registers on
	z14+.
	* config/s390/s390.h (HAVE_TF): New macro.
	(EXPAND_MOVTF): New macro.
	(EXPAND_TF): Likewise.
	* config/s390/s390.md (PFPO_OP_TYPE_FPRX2): PFPO_OP_TYPE_TF
	alias.
	(ALL): Add FPRX2.
	(FP_ALL): Add FPRX2 for z14+, restrict TFmode to z13-.
	(FP): Likewise.
	(FP_ANYTF): New mode iterator.
	(BFP): Add FPRX2 for z14+, restrict TFmode to z13-.
	(TD_TF): Likewise.
	(xde): Add FPRX2.
	(nBFP): Likewise.
	(nDFP): Likewise.
	(DSF): Likewise.
	(DFDI): Likewise.
	(SFSI): Likewise.
	(DF): Likewise.
	(SF): Likewise.
	(fT0): Likewise.
	(bt): Likewise.
	(_d): Likewise.
	(HALF_TMODE): Likewise.
	(tf_fpr): New mode_attr.
	(type): New mode_attr.
	(*cmp<mode>_ccz_0): Use type instead of mode with fsimp.
	(*cmp<mode>_ccs_0_fastmath): Likewise.
	(*cmptf_ccs): New pattern for wfcxb.
	(*cmptf_ccsfps): New pattern for wfkxb.
	(mov<mode>): Rename to mov<mode><tf_fpr>.
	(signbit<mode>2): Rename to signbit<mode>2<tf_fpr>.
	(isinf<mode>2): Renamed to isinf<mode>2<tf_fpr>.
	(*TDC_insn_<mode>): Use type instead of mode with fsimp.
	(fixuns_trunc<FP:mode><GPR:mode>2): Rename to
	fixuns_trunc<FP:mode><GPR:mode>2<FP:tf_fpr>.
	(fix_trunctf<mode>2): Rename to fix_trunctf<mode>2_fpr.
	(floatdi<mode>2): Rename to floatdi<mode>2<tf_fpr>, use type
	instead of mode with itof.
	(floatsi<mode>2): Rename to floatsi<mode>2<tf_fpr>, use type
	instead of mode with itof.
	(*floatuns<GPR:mode><FP:mode>2): Use type instead of mode for
	itof.
	(floatuns<GPR:mode><FP:mode>2): Rename to
	floatuns<GPR:mode><FP:mode>2<tf_fpr>.
	(trunctf<mode>2): Rename to trunctf<mode>2_fpr, use type instead
	of mode with fsimp.
	(extend<DSF:mode><BFP:mode>2): Rename to
	extend<DSF:mode><BFP:mode>2<BFP:tf_fpr>.
	(<FPINT:fpint_name><BFP:mode>2): Rename to
	<FPINT:fpint_name><BFP:mode>2<BFP:tf_fpr>, use type instead of
	mode with fsimp.
	(rint<BFP:mode>2): Rename to rint<BFP:mode>2<BFP:tf_fpr>, use
	type instead of mode with fsimp.
	(<FPINT:fpint_name><DFP:mode>2): Use type instead of mode for
	fsimp.
	(rint<DFP:mode>2): Likewise.
	(trunc<BFP:mode><DFP_ALL:mode>2): Rename to
	trunc<BFP:mode><DFP_ALL:mode>2<BFP:tf_fpr>.
	(trunc<DFP_ALL:mode><BFP:mode>2): Rename to
	trunc<DFP_ALL:mode><BFP:mode>2<BFP:tf_fpr>.
	(extend<BFP:mode><DFP_ALL:mode>2): Rename to
	extend<BFP:mode><DFP_ALL:mode>2<BFP:tf_fpr>.
	(extend<DFP_ALL:mode><BFP:mode>2): Rename to
	extend<DFP_ALL:mode><BFP:mode>2<BFP:tf_fpr>.
	(add<mode>3): Rename to add<mode>3<tf_fpr>, use type instead of
	mode with fsimp.
	(*add<mode>3_cc): Use type instead of mode with fsimp.
	(*add<mode>3_cconly): Likewise.
	(sub<mode>3): Rename to sub<mode>3<tf_fpr>, use type instead of
	mode with fsimp.
	(*sub<mode>3_cc): Use type instead of mode with fsimp.
	(*sub<mode>3_cconly): Likewise.
	(mul<mode>3): Rename to mul<mode>3<tf_fpr>, use type instead of
	mode with fsimp.
	(fma<mode>4): Restrict using s390_fma_allowed_p.
	(fms<mode>4): Restrict using s390_fma_allowed_p.
	(div<mode>3): Rename to div<mode>3<tf_fpr>, use type instead of
	mode with fdiv.
	(neg<mode>2): Rename to neg<mode>2<tf_fpr>.
	(*neg<mode>2_cc): Use type instead of mode with fsimp.
	(*neg<mode>2_cconly): Likewise.
	(*neg<mode>2_nocc): Likewise.
	(*neg<mode>2): Likeiwse.
	(abs<mode>2): Rename to abs<mode>2<tf_fpr>, use type instead of
	mode with fdiv.
	(*abs<mode>2_cc): Use type instead of mode with fsimp.
	(*abs<mode>2_cconly): Likewise.
	(*abs<mode>2_nocc): Likewise.
	(*abs<mode>2): Likewise.
	(*negabs<mode>2_cc): Likewise.
	(*negabs<mode>2_cconly): Likewise.
	(*negabs<mode>2_nocc): Likewise.
	(*negabs<mode>2): Likewise.
	(sqrt<mode>2): Rename to sqrt<mode>2<tf_fpr>, use type instead
	of mode with fsqrt.
	(cbranch<mode>4): Use FP_ANYTF instead of FP.
	(copysign<mode>3): Rename to copysign<mode>3<tf_fpr>, use type
	instead of mode with fsimp.
	* config/s390/s390.opt (flag_vx_long_double_fma): New
	undocumented option.
	* config/s390/vector.md (V_HW): Add TF for z14+.
	(V_HW2): Likewise.
	(VFT): Likewise.
	(VF_HW): Likewise.
	(V_128): Likewise.
	(tf_vr): New mode_attr.
	(tointvec): Add TF.
	(mov<mode>): Rename to mov<mode><tf_vr>.
	(movetf): New dispatcher.
	(*vec_tf_to_v1tf): Rename to *vec_tf_to_v1tf_fpr, restrict to
	z13-.
	(*vec_tf_to_v1tf_vr): New pattern for z14+.
	(*fprx2_to_tf): Likewise.
	(*mov_tf_to_fprx2_0): Likewise.
	(*mov_tf_to_fprx2_1): Likewise.
	(add<mode>3): Rename to add<mode>3<tf_vr>.
	(addtf3): New dispatcher.
	(sub<mode>3): Rename to sub<mode>3<tf_vr>.
	(subtf3): New dispatcher.
	(mul<mode>3): Rename to mul<mode>3<tf_vr>.
	(multf3): New dispatcher.
	(div<mode>3): Rename to div<mode>3<tf_vr>.
	(divtf3): New dispatcher.
	(sqrt<mode>2): Rename to sqrt<mode>2<tf_vr>.
	(sqrttf2): New dispatcher.
	(fma<mode>4): Restrict using s390_fma_allowed_p.
	(fms<mode>4): Likewise.
	(neg_fma<mode>4): Likewise.
	(neg_fms<mode>4): Likewise.
	(neg<mode>2): Rename to neg<mode>2<tf_vr>.
	(negtf2): New dispatcher.
	(abs<mode>2): Rename to abs<mode>2<tf_vr>.
	(abstf2): New dispatcher.
	(float<mode>tf2_vr): New forwarder.
	(float<mode>tf2): New dispatcher.
	(floatuns<mode>tf2_vr): New forwarder.
	(floatuns<mode>tf2): New dispatcher.
	(fix_trunctf<mode>2_vr): New forwarder.
	(fix_trunctf<mode>2): New dispatcher.
	(fixuns_trunctf<mode>2_vr): New forwarder.
	(fixuns_trunctf<mode>2): New dispatcher.
	(<FPINT:fpint_name><VF_HW:mode>2<VF_HW:tf_vr>): New pattern.
	(<FPINT:fpint_name>tf2): New forwarder.
	(rint<mode>2<tf_vr>): New pattern.
	(rinttf2): New forwarder.
	(*trunctfdf2_vr): New pattern.
	(trunctfdf2_vr): New forwarder.
	(trunctfdf2): New dispatcher.
	(trunctfsf2_vr): New forwarder.
	(trunctfsf2): New dispatcher.
	(extenddftf2_vr): New pattern.
	(extenddftf2): New dispatcher.
	(extendsftf2_vr): New forwarder.
	(extendsftf2): New dispatcher.
	(signbittf2_vr): New forwarder.
	(signbittf2): New dispatchers.
	(isinftf2_vr): New forwarder.
	(isinftf2): New dispatcher.
	* config/s390/vx-builtins.md (*vftci<mode>_cconly): Use VF_HW
	instead of VECF_HW, add missing constraint, add vw support.
	(vftci<mode>_intcconly): Use VF_HW instead of VECF_HW.
	(*vftci<mode>): Rename to vftci<mode>, use VF_HW instead of
	VECF_HW, and vw support.
	(vftci<mode>_intcc): Use VF_HW instead of VECF_HW.
2020-11-10 12:13:37 +01:00
Jakub Jelinek 8d9254fc8a Update copyright years.
From-SVN: r279813
2020-01-01 12:51:42 +01:00
Andreas Krebbel 80f8cd7730 S/390: Add support for z15 as CPU name.
So far z15 was identified as arch13. After the machine has been
announced we can now add the real name.

gcc/ChangeLog:

2019-10-10  Andreas Krebbel  <krebbel@linux.ibm.com>

	* common/config/s390/s390-common.c (PF_ARCH13): Rename to...
	(PF_Z15): ... this.
	* config.gcc: Add z15 as option for --with-arch and --with-tune
	configure switches.
	* config/s390/s390-c.c (s390_resolve_overloaded_builtin): Add
	error reporting for unsupported builtins.
	* config/s390/s390-opts.h (enum processor_type): Rename
	PROCESSOR_8561_ARCH13 to PROCESSOR_8561_Z15.
	* config/s390/8561.md: Rename arch13 to z15 throughout the file.
	* config/s390/driver-native.c (s390_host_detect_local_cpu):
	Likewise.
	* config/s390/s390-builtins.def: Likewise.
	* config/s390/s390.c (processor_table): Add z15 as option and keep arch13 as alternative.
	(s390_expand_builtin): Add missing check for unsupported builtins.
	(s390_canonicalize_comparison): Rename TARGET_ARCH13 to TARGET_Z15.
	(s390_rtx_costs): Likewise.
	(s390_get_sched_attrmask): Rename arch13 to z15.
	(s390_get_unit_mask): Likewise.
	(s390_is_fpd): Likewise.
	(s390_is_fxd): Likewise.
	* config/s390/s390.h (enum processor_flags): Likewise.
	* config/s390/s390.md: Likewise.
	* config/s390/vector.md: Likewise.
	* config/s390/vx-builtins.md: Likewise.
	* config/s390/s390.opt: Add z15 to processor_type value.

From-SVN: r276792
2019-10-10 09:04:02 +00:00
Robin Dapp 375a6bc674 S/390: Add arch13 pipeline and model number
This patch adds the pipeline description and the CPU model number for
arch13.

From-SVN: r270272
2019-04-11 07:04:03 +00:00
Andreas Krebbel 511ea1538b S/390: arch13: Add arch13 as architecture option
This patch enables the command line options and provides the proper
macros for checking.

gcc/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

	* common/config/s390/s390-common.c (processor_flags_table): New
	entry for arch13.
	* config.gcc: Support arch13 with the --with-arch= configure flag.
	* config/s390/driver-native.c (s390_host_detect_local_cpu):
	* config/s390/s390-opts.h (enum processor_type): Add PROCESSOR_ARCH13.
	* config/s390/s390.c (s390_get_sched_attrmask)
	(s390_get_unit_mask): Add PROCESSOR_ARCH13.
	* config/s390/s390.h (enum processor_flags): Add PF_VXE2 and PF_ARCH13.
	* config/s390/s390.md (TARGET_CPU_ARCH13, TARGET_CPU_ARCH13_P)
	(TARGET_CPU_VXE2, TARGET_CPU_VXE2_P, TARGET_ARCH13)
	(TARGET_ARCH13_P, TARGET_VXE2, TARGET_VXE2_P): New macro
	definitions.
	* config/s390/s390.opt: Support arch13 as processor type in
	command line options.

gcc/testsuite/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

	* gcc.target/s390/s390.exp: Run tests in arch13 subdir.
	* lib/target-supports.exp (check_effective_target_s390_vxe2): New
	runtime check for the vxe2 hardware feature on IBM Z.

From-SVN: r270077
2019-04-02 10:50:03 +00:00
Jakub Jelinek a554497024 Update copyright years.
From-SVN: r267494
2019-01-01 13:31:55 +01:00
Ilya Leoshkevich 52d4aa4fcf S/390: Remove support for g5 and g6 machines
g5 and g6 were deprecated since gcc 6.1.0 (commit 3bd8520f).

gcc/ChangeLog:

2018-08-08  Ilya Leoshkevich  <iii@linux.ibm.com>

	* common/config/s390/s390-common.c (processor_flags_table):
        Remove flags.
	* config.gcc: Remove with_arch/with_tune support.
	* config/s390/2064.md: Remove cpu attribute comparisons.
	* config/s390/driver-native.c (s390_host_detect_local_cpu):
        Remove MTN.
	* config/s390/linux.h (ASM_SPEC):
        Remove -march support.
	* config/s390/s390-c.c (s390_cpu_cpp_builtins_internal):
        Use a table to get an arch level.
	* config/s390/s390-opts.h (enum processor_type):
        Remove enum values.
	* config/s390/s390.c
        (processor_table): Remove entries, add arch_level values.
        (s390_issue_rate): Remove cases.
        (s390_option_override): Adjust
        s390_option_override_internal() call.
	(s390_option_override_internal): Remove deprecation warning.
        (s390_valid_target_attribute_tree): Adjust
        s390_option_override_internal() call.
	* config/s390/s390.h (struct s390_processor):
        Share with s390-c.c, add arch_level field.
	* config/s390/s390.md:
        Remove occurrences in cpu attribute.
	* config/s390/s390.opt: Remove -march/-mtune support.
	* config/s390/tpf.h (ASM_SPEC): Remove -march support.
	* doc/invoke.texi: Remove deprecation warning.

gcc/testsuite/ChangeLog:

2018-08-08  Ilya Leoshkevich  <iii@linux.ibm.com>

	* gcc.target/s390/hotpatch-8.c: Remove.
	* gcc.target/s390/hotpatch-9.c: Remove.
	* gcc.target/s390/mnop-mcount-m31-fpic.c: Remove.
	* gcc.target/s390/mnop-mcount-m31.c: Remove.

From-SVN: r263393
2018-08-08 10:55:56 +00:00
Ilya Leoshkevich 79c2f6d7de S/390: Implement -mnop-mcount
On i386 the profiler call sequence always consists of 1 call
instruction, so -mnop-mcount generates a single nop with the same
length as a call. For S/390 longer sequences may be used in some
cases, so -mnop-mcount generates the corresponding amount of nops.

2018-07-16  Ilya Leoshkevich  <iii@linux.ibm.com>

	* config/s390/s390.c (s390_function_profiler): Generate nops
	instead of profiler call sequences.
	* config/s390/s390.opt: Add the new option.

2018-07-16  Ilya Leoshkevich  <iii@linux.ibm.com>

	* gcc.target/s390/mnop-mcount-m31-fpic.c: New testcase.
	* gcc.target/s390/mnop-mcount-m31-mzarch.c: New testcase.
	* gcc.target/s390/mnop-mcount-m31.c: New testcase.
	* gcc.target/s390/mnop-mcount-m64-mfentry.c: New testcase.
	* gcc.target/s390/mnop-mcount-m64.c: New testcase.

From-SVN: r262734
2018-07-16 14:41:57 +00:00
Ilya Leoshkevich 605090dc79 S/390: Implement -mrecord-mcount
This is the counterpart of the i386 feature introduced by
39a5a6a4: Add direct support for Linux kernel __fentry__ patching.

2018-07-16  Ilya Leoshkevich  <iii@linux.ibm.com>

	* config/s390/s390.c (s390_function_profiler): Generate
	__mcount_loc section.
	* config/s390/s390.opt: Add the new option.

2018-07-16  Ilya Leoshkevich  <iii@linux.ibm.com>

	* testsuite/gcc.target/s390/mrecord-mcount.c: New testcase.

From-SVN: r262733
2018-07-16 14:36:21 +00:00
Ilya Leoshkevich 6902799c8d S/390: Add direct support for Linux kernel __fentry__ patching.
On i386, the difference between mcount and fentry is that fentry
comes before the prolog. On s390 mcount already comes before the
prolog, but takes 4 instructions. This patch introduces the more
efficient implementation (just 1 instruction) and puts it under
-mfentry flag.

The produced code is compatible only with newer glibc versions,
which provide the __fentry__ symbol and do not clobber %r0 when
resolving lazily bound functions. Because 31-bit PLT stubs assume
%r12 contains GOT address, which is not the case when the code runs
before the prolog, -mfentry is allowed only for 64-bit code.

Also, code compiled with -mfentry cannot be used for the nested C
functions, since they both use %r0. In this case instrumentation is
not insterted, and a new warning is issued for each affected nested
function.

2018-07-16  Ilya Leoshkevich  <iii@linux.ibm.com>

	* common.opt: Add the new warning.
	* config/s390/s390.c (s390_function_profiler): Emit "brasl
	%r0,__fentry__" when -mfentry is specified.
	(s390_option_override_internal): Disallow -mfentry for 31-bit
	CPUs.
	* config/s390/s390.opt: Add the new option.

2018-07-16  Ilya Leoshkevich  <iii@linux.ibm.com>

	* gcc.target/s390/mfentry-m64.c: New testcase.

From-SVN: r262732
2018-07-16 14:29:08 +00:00
Andreas Krebbel 84b4c7b593 S/390: Disable prediction of indirect branches
This patch implements GCC support for mitigating vulnerability
CVE-2017-5715 known as Spectre #2 on IBM Z.

In order to disable prediction of indirect branches the implementation
makes use of an IBM Z specific feature - the execute instruction.
Performing an indirect branch via execute prevents the branch from
being subject to dynamic branch prediction.

The implementation tries to stay close to the x86 solution regarding
user interface.

x86 style options supported (without thunk-inline):

-mindirect-branch=(keep|thunk|thunk-extern)
-mfunction-return=(keep|thunk|thunk-extern)

IBM Z specific options:

-mindirect-branch-jump=(keep|thunk|thunk-extern|thunk-inline)
-mindirect-branch-call=(keep|thunk|thunk-extern)
-mfunction-return-reg=(keep|thunk|thunk-extern)
-mfunction-return-mem=(keep|thunk|thunk-extern)

These options allow us to enable/disable the branch conversion at a
finer granularity.

-mindirect-branch sets the value of -mindirect-branch-jump and
 -mindirect-branch-call.

-mfunction-return sets the value of -mfunction-return-reg and
 -mfunction-return-mem.

All these options are supported on GCC command line as well as
function attributes.

'thunk' triggers the generation of out of line thunks (expolines) and
replaces the formerly indirect branch with a direct branch to the
thunk.  Depending on the -march= setting two different types of thunks
are generated.  With -march=z10 or higher exrl (execute relative long)
is being used while targeting older machines makes use of larl/ex
instead.  From a security perspective the exrl variant is preferable.

'thunk-extern' does the branch replacement like 'thunk' but does not
emit the thunks.

'thunk-inline' is only available for indirect jumps.  It should be used
in environments where correct CFI is important - known as user space.

Additionally the patch introduces the -mindirect-branch-table option
which generates tables pointing to the locations which have been
modified.  This is supposed to allow reverting the changes without
re-compilation in situations where it isn't required. The sections are
split up into one section per option.

gcc/ChangeLog:

2018-02-08  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* config/s390/s390-opts.h (enum indirect_branch): Define.
	* config/s390/s390-protos.h (s390_return_addr_from_memory)
	(s390_indirect_branch_via_thunk)
	(s390_indirect_branch_via_inline_thunk): Add function prototypes.
	(enum s390_indirect_branch_type): Define.
	* config/s390/s390.c (struct s390_frame_layout, struct
	machine_function): Remove.
	(indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
	(indirect_branch_table_label_no, indirect_branch_table_name):
	Define variables.
	(INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
	(enum s390_indirect_branch_option): Define.
	(s390_return_addr_from_memory): New function.
	(s390_handle_string_attribute): New function.
	(s390_attribute_table): Add new attribute handler.
	(s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
	(s390_indirect_branch_via_thunk): New function.
	(s390_indirect_branch_via_inline_thunk): New function.
	(s390_function_ok_for_sibcall): When jumping via thunk disallow
	sibling call optimization for non z10 compiles.
	(s390_emit_call): Force indirect branch target to be a single
	register.  Add r1 clobber for non-z10 compiles.
	(s390_emit_epilogue): Emit return jump via return_use expander.
	(s390_reorg): Handle JUMP_INSNs as execute targets.
	(s390_option_override_internal): Perform validity checks for the
	new command line options.
	(s390_indirect_branch_attrvalue): New function.
	(s390_indirect_branch_settings): New function.
	(s390_set_current_function): Invoke s390_indirect_branch_settings.
	(s390_output_indirect_thunk_function):  New function.
	(s390_code_end): Implement target hook.
	(s390_case_values_threshold): Implement target hook.
	(TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
	macros.
	* config/s390/s390.h (struct s390_frame_layout)
	(struct	machine_function): Move here from s390.c.
	(TARGET_INDIRECT_BRANCH_NOBP_RET)
	(TARGET_INDIRECT_BRANCH_NOBP_JUMP)
	(TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
	(TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
	(TARGET_INDIRECT_BRANCH_NOBP_CALL)
	(TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
	(TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
	(TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
	(TARGET_INDIRECT_BRANCH_TABLE): Define macros.
	* config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
	(INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
	(mnemonic attribute): Add values which aren't recognized
	automatically.
	("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
	pattern for branch conversion.  Fix mnemonic attribute.
	("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
	indirect branch via thunk if requested.
	("indirect_jump", "<code>"): Expand patterns for branch conversion.
	("*indirect_jump"): Disable for branch conversion using out of
	line thunks.
	("indirect_jump_via_thunk<mode>_z10")
	("indirect_jump_via_thunk<mode>")
	("indirect_jump_via_inlinethunk<mode>_z10")
	("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
	("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
	("casesi_jump_via_inlinethunk<mode>_z10")
	("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
	("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
	("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
	("*indirect2_jump"): Disable for branch conversion.
	("casesi_jump"): Turn into expander and expand patterns for branch
	conversion.
	("return_use"): New expander.
	("*return"): Emit return via thunk and rename it to ...
	("*return<mode>"): ... this one.
	* config/s390/s390.opt: Add new options and and enum for the
	option values.

gcc/testsuite/ChangeLog:

2018-02-08  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* gcc.target/s390/nobp-function-pointer-attr.c: New test.
	* gcc.target/s390/nobp-function-pointer-nothunk.c: New test.
	* gcc.target/s390/nobp-function-pointer-z10.c: New test.
	* gcc.target/s390/nobp-function-pointer-z900.c: New test.
	* gcc.target/s390/nobp-indirect-jump-attr.c: New test.
	* gcc.target/s390/nobp-indirect-jump-inline-attr.c: New test.
	* gcc.target/s390/nobp-indirect-jump-inline-z10.c: New test.
	* gcc.target/s390/nobp-indirect-jump-inline-z900.c: New test.
	* gcc.target/s390/nobp-indirect-jump-nothunk.c: New test.
	* gcc.target/s390/nobp-indirect-jump-z10.c: New test.
	* gcc.target/s390/nobp-indirect-jump-z900.c: New test.
	* gcc.target/s390/nobp-return-attr-all.c: New test.
	* gcc.target/s390/nobp-return-attr-neg.c: New test.
	* gcc.target/s390/nobp-return-mem-attr.c: New test.
	* gcc.target/s390/nobp-return-mem-nothunk.c: New test.
	* gcc.target/s390/nobp-return-mem-z10.c: New test.
	* gcc.target/s390/nobp-return-mem-z900.c: New test.
	* gcc.target/s390/nobp-return-reg-attr.c: New test.
	* gcc.target/s390/nobp-return-reg-mixed.c: New test.
	* gcc.target/s390/nobp-return-reg-nothunk.c: New test.
	* gcc.target/s390/nobp-return-reg-z10.c: New test.
	* gcc.target/s390/nobp-return-reg-z900.c: New test.
	* gcc.target/s390/nobp-table-jump-inline-z10.c: New test.
	* gcc.target/s390/nobp-table-jump-inline-z900.c: New test.
	* gcc.target/s390/nobp-table-jump-z10.c: New test.
	* gcc.target/s390/nobp-table-jump-z900.c: New test.

From-SVN: r257489
2018-02-08 14:45:53 +00:00
Jakub Jelinek 85ec4feb11 Update copyright years.
From-SVN: r256169
2018-01-03 11:03:58 +01:00
Andreas Krebbel 2731a5b331 [Committed] S/390: Support z14 as CPU name.
With IBM z14 officially announced we can add support for z14 as
preferred CPU name.  We still pass arch12 to Binutils in order to keep
older Binutils versions supported.

gcc/ChangeLog:

2017-07-31  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* config.gcc: Add z14.
	* config/s390/driver-native.c (s390_host_detect_local_cpu): Add
	CPU model numbers for z13s and z14.
	* config/s390/s390-c.c (s390_resolve_overloaded_builtin): Replace
	arch12 with z14.
	* config/s390/s390-opts.h (enum processor_type): Rename
	PROCESSOR_ARCH12 to PROCESSOR_3906_Z14.
	* config/s390/s390.c (processor_table): Add field for CPU name to
	be passed to Binutils.
	(s390_asm_output_machine_for_arch): Use the new field in
	processor_table for Binutils.
	(s390_expand_builtin): Replace arch12 with z14.
	(s390_issue_rate): Rename PROCESSOR_ARCH12 to PROCESSOR_3906_Z14.
	(s390_get_sched_attrmask): Likewise.
	(s390_get_unit_mask): Likewise.
	* config/s390/s390.opt: Add z14 to processor_type enum.

From-SVN: r250739
2017-07-31 11:31:09 +00:00
Andreas Krebbel 935b5226c3 S/390: New option -mpic-data-is-text-relative
For hotpatching it might be required to introduce new .text parts
while keep using the existing .data/.bss sections.  To make this work
the backend needs to be prevented from using relative addressing
between code and data.
This only works when already building PIC
since the addressing will then be handling via GOT.

gcc/testsuite/ChangeLog:

2017-06-28  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* gcc.target/s390/nodatarel-1.c: New test.

gcc/ChangeLog:

2017-06-28  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* config/s390/predicates.md: Use s390_rel_address_ok_p.
	* config/s390/s390-protos.h: Add prototype of
	s390_rel_address_ok_p.
	* config/s390/s390.c (s390_got_symbol): New function.
	(s390_rel_address_ok_p): New function.
	(legitimize_pic_address): Use s390_rel_address_ok_p.
	(s390_load_got): Use s390_got_symbol.
	(s390_option_override): Issue error if
	-mno-pic-data-is-text-relative is used without -fpic/-fPIC.
	* config/s390/s390.h (TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE):
	New macro.
	* config/s390/s390.opt: New option mpic-data-is-text-relative.

From-SVN: r249720
2017-06-28 07:03:35 +00:00
Andreas Krebbel 6654e96fc8 S/390: arch12: Add arch12 option.
This patch covers the mechanical work of making the new architecture
option arch12 available wherever it will be needed later.

gcc/testsuite/ChangeLog:

2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* gcc.target/s390/s390.exp: Run tests in arch12 and vxe dirs.
	* lib/target-supports.exp: Add effective target check s390_vxe.

gcc/ChangeLog:

2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* common/config/s390/s390-common.c (processor_flags_table): Add
	arch12.
	* config.gcc: Add arch12.
	* config/s390/driver-native.c (s390_host_detect_local_cpu):
	Default to arch12 for unknown CPU model numbers.
	* config/s390/s390-builtins.def: Add B_VXE builtin flag.
	* config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Adjust
	PROCESSOR_max sanity check.
	* config/s390/s390-opts.h (enum processor_type): Add
	PROCESSOR_ARCH12.
	* config/s390/s390.c (processor_table): Add arch12.
	(s390_expand_builtin): Add check for B_VXE flag.
	(s390_issue_rate): Add PROCESSOR_ARCH12.
	(s390_get_sched_attrmask): Likewise.
	(s390_get_unit_mask): Likewise.
	(s390_sched_score): Enable z13 scheduling for arch12.
	(s390_sched_reorder): Likewise.
	(s390_sched_variable_issue): Likewise.
	* config/s390/s390.h (enum processor_flags): Add PF_ARCH12 and
	PF_VXE.
	(s390_tune_attr): Use z13 scheduling also for arch12.
	(TARGET_CPU_ARCH12, TARGET_CPU_ARCH12_P, TARGET_CPU_VXE)
	(TARGET_CPU_VXE_P, TARGET_ARCH12, TARGET_ARCH12_P, TARGET_VXE)
	(TARGET_VXE_P): New macros.
	* config/s390/s390.md: Add arch12 to cpu attribute.  Add arch12
	and vxe to cpu_facility.  Add arch12 and vxe to enabled attribute.
	* config/s390/s390.opt: Add arch12 as processor_type.

From-SVN: r246452
2017-03-24 13:59:51 +00:00
Jakub Jelinek cbe34bb5ed Update copyright years.
From-SVN: r243994
2017-01-01 13:07:43 +01:00
Andreas Krebbel 0dbb19f0f1 S/390: Add support for arch<n> arch/tune options.
This patch adds an alternate CPU level naming following the
architecture level number in the Principles of Operations manual.  So
instead of having z196, zEC12, and z13 you can use arch9, arch10, and
arch11.  The old cpu names stay valid and should preferably be used.

The alternate names are supposed to improve compatibility with the IBM
XL compiler toolchain which uses the arch numbering.

gcc/testsuite/ChangeLog:

2016-10-28  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* gcc.target/s390/target-attribute/tattr-m64-33.c: New test.

gcc/ChangeLog:

2016-10-28  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* config/s390/s390.opt: Support alternate cpu level naming (archXX).
	* config.gcc: Support alternate archXX cpu levels with
	--with-arch= and --with-tune=.
	* config/s390/linux.h: Translate new archXX cpu levels to the
	original names when calling GAS.
	* config/s390/tpf.h: Likewise.
	* doc/invoke.texi: Document the alternate cpu level names.

From-SVN: r241643
2016-10-28 12:28:24 +00:00
Dominik Vogt aa189aee2e S/390: Better help text for -mmvcle.
gcc/ChangeLog

	* config/s390/s390.opt (mmvcle): More verbose help text.

From-SVN: r232418
2016-01-15 12:41:51 +00:00
Dominik Vogt 6a86b9a14b S/390: s390.opt: Add period to -mzvector option text.
gcc/ChangeLog:

2016-01-15  Dominik Vogt  <vogt@linux.vnet.ibm.com>

	* config/s390/s390.opt: Add period to -mzvector option text.

From-SVN: r232417
2016-01-15 12:38:09 +00:00
Jakub Jelinek 818ab71a41 Update copyright years.
From-SVN: r232055
2016-01-04 15:30:50 +01:00
Dominik Vogt ec47b0863a [PATCH 1/2] S/390: Implement "target" attribute.
gcc/ChangeLog

	* config/s390/s390.opt (s390_arch_string): Remove.
	(s390_tune_string): Likewise.
	(s390_cost_pointer): Add Variable.
	(s390_tune_flags): Add TargetVariable.
	(s390_arch_flags, march=, mbackchain, mdebug, mesa, mhard-dfp),
	(mhard-float, mlong-double-128, mlong-double-64, mhtm, mvx),
	(mpacked-stack, msmall-exec, msoft-float, mstack-guard=, mstack-size=),
	(mtune=, mmvcle, mzvector, mzarch, mbranch-cost=, mwarn-dynamicstack),
	(mwarn-framesize=): Save option.
	(mno-stack-guard, mno-stack-guard): New option.
	(mwarn-dynamicstack): Allow mno-warn-dynamicstack.
	(mwarn-framesize=): Convert to UInteger (negative values are rejected
	now).
	* config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Split setting
	macros changeable through the GCC target pragma into a separate
	function.
	(s390_cpu_cpp_builtins): Likewise.
	(s390_pragma_target_parse): New function, implement GCC target pragma
	if enabled.
	(s390_register_target_pragmas): Register s390_pragma_target_parse if
	available.
	* common/config/s390/s390-common.c (s390_handle_option):
	Export.
	Move setting s390_arch_flags to s390.c.
	Remove s390_tune_flags.
	Allow 0 as argument to -mstack-size (switch to default value).
	Allow 0 as argument to -mstack-guard (switch off).
	Remove now unnecessary explicit parsing code for -mwarn-framesize.
	* config/s390/s390-protos.h (s390_handle_option): Export.
	(s390_valid_target_attribute_tree): Export.
	(s390_reset_previous_fndecl): Export.
	* config/s390/s390-builtins.def: Use new macro B_GROUP to mark the start
	and end of HTM and VX builtins.
	(s390_asm_output_function_prefix): Declare hook.
	(s390_asm_declare_function_size): Likewise.
	* config/s390/s390-builtins.h (B_GROUP): Use macro.
	* config/s390/s390-opts.h: Add comment about processor_type usage.
	* config/s390/s390.h (TARGET_CPU_IEEE_FLOAT_P, TARGET_CPU_ZARCH_P),
	(TARGET_CPU_LONG_DISPLACEMENT_P, TARGET_CPU_EXTIMM_P, TARGET_CPU_DFP_P),
	(TARGET_CPU_Z10_P, TARGET_CPU_Z196_P, TARGET_CPU_ZEC12_P),
	(TARGET_CPU_HTM_P, TARGET_CPU_Z13_P, TARGET_CPU_VX_P),
	(TARGET_HARD_FLOAT_P, TARGET_LONG_DISPLACEMENT_P, TARGET_EXTIMM_P),
	(TARGET_DFP_P, TARGET_Z10_P, TARGET_Z196_P, TARGET_ZEC12_P),
	(TARGET_HTM_P, TARGET_Z13_P, TARGET_VX_P, TARGET_CPU_EXTIMM),
	(TARGET_CPU_DFP, TARGET_CPU_Z10, TARGET_CPU_Z196, TARGET_CPU_ZEC12),
	(TARGET_CPU_HTM, TARGET_CPU_Z13, TARGET_LONG_DISPLACEMENT),
	(TARGET_EXTIMM, TARGET_DFP, TARGET_Z10, TARGET_Z196, TARGET_ZEC12),
	(TARGET_Z13, TARGET_VX, S390_USE_TARGET_ATTRIBUTE),
	(S390_USE_ARCHITECTURE_MODIFIERS, SWITCHABLE_TARGET),
	(ASM_DECLARE_FUNCTION_SIZE, ASM_OUTPUT_FUNCTION_PREFIX): Likewise.
	* config/s390/vecintrin.h: Use vector definitions even if __VEC__ is
	undefined.
	(vec_all_nan): Rewrite as macro using statement expressions to avoid
	that the vector keyword needs to be defined when including the file.
	(vec_all_numeric): Likewise.
	(vec_any_nan): Likewise.
	(vec_any_numeric):  Likewise.
	* config/s390/s390.c (s390_previous_fndecl): New static variable.
	(s390_set_current_function): New function.
	(s390_cost): Wrapper macro to allow defining the cost table pointer in
	the options file.
	(processor_table): Table for march= and mtune= parsing.
	(s390_init_builtins): Enable all builtins and types unconditionally.
	(s390_expand_builtin): Generate an error message if builtin is not
	supported by current options.
	Correct an error message.
	(s390_function_specific_restore): New function to set s390_cost.
	(s390_asm_output_machine_for_arch): New function for emitting .machine
	and .machinmode directives to the assembler file.
	(s390_asm_output_function_prefix): Likewise.
	(s390_asm_declare_function_size):  Likewise.
	(s390_asm_output_function_label): Add mdebug output for feature testing.
	(s390_option_override): Move implementation into internal function.
	(s390_option_override_internal): Likewise.
	Implement option overriding based on current options.
	(s390_valid_target_attribute_inner_p): New function implementing target
	attribute logic.
	(s390_valid_target_attribute_tree): Likewise.
	(s390_valid_target_attribute_p): Likewise.
	(s390_reset_previous_fndecl): Likewise.
	(s390_set_current_function): Likewise.
	(TARGET_SET_CURRENT_FUNCTION): Provide target hook function.
	(TARGET_OPTION_VALID_ATTRIBUTE_P): Likewise.
	(TARGET_OPTION_RESTORE): Likewise.
	* doc/extend.texi: S390: Document target attribute and pragma.
	* config.in: Regenerated.
	* configure: Regenerated.
	* configure.ac: S390: Check for .machinemode and .machine in gas.
	S390: Check for architecture modifiers support in gas.

gcc/testsuite/ChangeLog

	* gcc.target/s390/asm-machine-1.c: New test.
	* gcc.target/s390/asm-machine-2.c: New test.
	* gcc.target/s390/asm-machine-3.c: New test.
	* gcc.target/s390/asm-machine-4.c: New test.
	* gcc.target/s390/target-attribute/tattr-1.c: New test.
	* gcc.target/s390/target-attribute/tattr-2.c: New test.
	* gcc.target/s390/target-attribute/tattr-3.c: New test.
	* gcc.target/s390/target-attribute/tattr-4.c: New test.
	* gcc.target/s390/target-attribute/tattr-5.c: New test.
	* gcc.target/s390/target-attribute/tattr-6.c: New test.
	* gcc.target/s390/target-attribute/tattr-7.c: New test.
	* gcc.target/s390/target-attribute/tattr-8.c: New test.
	* gcc.target/s390/target-attribute/tattr-9.c: New test.
	* gcc.target/s390/target-attribute/tattr-10.c: New test.
	* gcc.target/s390/target-attribute/tattr-11.c: New test.
	* gcc.target/s390/target-attribute/tattr-12.c: New test.
	* gcc.target/s390/target-attribute/tattr-13.c: New test.
	* gcc.target/s390/target-attribute/tattr-14.c: New test.
	* gcc.target/s390/target-attribute/tattr-15.c: New test.
	* gcc.target/s390/target-attribute/tattr-16.c: New test.
	* gcc.target/s390/target-attribute/tattr-17.c: New test.
	* gcc.target/s390/target-attribute/tattr-18.c: New test.
	* gcc.target/s390/target-attribute/tattr-19.c: New test.
	* gcc.target/s390/target-attribute/tattr-arch-tune-1.c: New test.
	* gcc.target/s390/target-attribute/tattr-arch-tune-2.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-1.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-2.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-3.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-4.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-5.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-6.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-7.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-8.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-9.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-10.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-11.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-12.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-13.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-14.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-15.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-16.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-17.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-18.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-19.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-20.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-21.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-22.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-23.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-24.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-25.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-26.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-27.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-28.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-29.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-30.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-31.c: New test.
	* gcc.target/s390/target-attribute/tattr-m31-32.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-1.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-2.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-3.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-4.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-5.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-6.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-7.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-8.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-9.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-10.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-11.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-12.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-13.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-14.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-15.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-16.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-17.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-18.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-19.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-20.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-21.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-22.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-23.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-24.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-25.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-26.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-27.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-28.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-29.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-30.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-31.c: New test.
	* gcc.target/s390/target-attribute/tattr-m64-32.c: New test.
	* gcc.target/s390/target-attribute/tpragma-struct-vx-2.c: New test.
	* gcc.target/s390/s390.exp (check_effective_target_target_attribute):
	Add check whether target attribute is available.
	Run test in target-attribute subdir.
	* gcc.target/s390/s390-c++.exp
	(check_effective_target_target_attribute): Likewise.

From-SVN: r231271
2015-12-04 14:30:42 +00:00
Martin Sebor a7b2e1845f Improve --help output to generate references to option aliases.
gcc/
	PR driver/68043
	* opts.c (undocumented_msg, use_diagnosed_msg): New globals.
	(print_filtered_help): Reference aliased option's name and encourage
	readers to use it in preference to the alias if the former is not
	documented.  Mention when using an option is diagnosed.
	* gcc.c (display_help): End each sentence with a period.

	* ada/gcc-interface/lang.opt: End each sentence that describes
	an option with a period.
	* c-family/c.opt: Same.
	* common.opt: Same.
	* config/aarch64/aarch64.opt: Same.
	* config/alpha/alpha.opt: Same.
	* config/arc/arc.opt: Same.
	* config/arm/arm.opt: Same.
	* config/avr/avr.opt: Same.
	* config/bfin/bfin.opt: Same.
	* config/c6x/c6x.opt: Same.
	* config/cr16/cr16.opt: Same.
	* config/cris/cris.opt: Same.
	* config/cris/linux.opt: Same.
	* config/darwin.opt: Same.
	* config/epiphany/epiphany.opt: Same.
	* config/fr30/fr30.opt: Same.
	* config/frv/frv.opt: Same.
	* config/ft32/ft32.opt: Same.
	* config/g.opt: Same.
	* config/h8300/h8300.opt: Same.
	* config/i386/cygming.opt: Same.
	* config/i386/djgpp.opt: Same.
	* config/i386/i386.opt: Same.
	* config/i386/interix.opt: Same.
	* config/i386/mingw-w64.opt: Same.
	* config/i386/mingw.opt: Same.
	* config/ia64/ia64.opt: Same.
	* config/ia64/ilp32.opt: Same.
	* config/iq2000/iq2000.opt: Same.
	* config/linux.opt: Same.
	* config/lm32/lm32.opt: Same.
	* config/lynx.opt: Same.
	* config/m32c/m32c.opt: Same.
	* config/m32r/m32r.opt: Same.
	* config/m68k/ieee.opt: Same.
	* config/m68k/m68k.opt: Same.
	* config/mcore/mcore.opt: Same.
	* config/mep/mep.opt: Same.
	* config/microblaze/microblaze.opt: Same.
	* config/mips/mips.opt: Same.
	* config/mmix/mmix.opt: Same.
	* config/mn10300/mn10300.opt: Same.
	* config/moxie/moxie.opt: Same.
	* config/msp430/msp430.opt: Same.
	* config/nios2/elf.opt: Same.
	* config/nios2/nios2.opt: Same.
	* config/nvptx/nvptx.opt: Same.
	* config/pa/pa-hpux.opt: Same.
	* config/pa/pa-hpux1010.opt: Same.
	* config/pa/pa-hpux1111.opt: Same.
	* config/pa/pa-hpux1131.opt: Same.
	* config/pa/pa.opt: Same.
	* config/pa/pa64-hpux.opt: Same.
	* config/pdp11/pdp11.opt: Same.
	* config/rl78/rl78.opt: Same.
	* config/rs6000/476.opt: Same.
	* config/rs6000/aix64.opt: Same.
	* config/rs6000/darwin.opt: Same.
	* config/rs6000/linux64.opt: Same.
	* config/rs6000/rs6000.opt: Same.
	* config/rs6000/sysv4.opt: Same.
	* config/s390/s390.opt: Same.
	* config/s390/tpf.opt: Same.
	* config/sh/sh.opt: Same.
	* config/sol2.opt: Same.
	* config/sparc/long-double-switch.opt: Same.
	* config/sparc/sparc.opt: Same.
	* config/spu/spu.opt: Same.
	* config/stormy16/stormy16.opt: Same.
	* config/tilegx/tilegx.opt: Same.
	* config/tilepro/tilepro.opt: Same.
	* config/v850/v850.opt: Same.
	* config/vax/vax.opt: Same.
	* config/visium/visium.opt: Same.
	* config/vms/vms.opt: Same.
	* config/vxworks.opt: Same.
	* config/xtensa/xtensa.opt: Same.
	* fortran/lang.opt: Same.

testsuite/
	PR driver/68043
	* gcc.misc-tests/help.exp: Adjust.
	* lib/options.exp (check_for_options): Add detail to output.

From-SVN: r229155
2015-10-21 16:24:41 -06:00
Andreas Krebbel 17f262c539 S/390: Doc: Add documentation for -mhtm, -mvx, and -mzvector.
gcc/ChangeLog:
	    * config/s390/s390.opt: Clarify description for -mzvector
	    * doc/invoke.texi: Add documentation for -mhtm, -mvx, and
	    -mzvector.

From-SVN: r226671
2015-08-06 10:18:20 +00:00
Dominik Vogt cb0edc3993 S390: Support -mtune=native and -march=native.
gcc/ChangeLog

2015-06-01  Dominik Vogt  <vogt@linux.vnet.ibm.com>

	    * config/s390/driver-native.c: New file.
	    * config/s390/x-native: New file.
	    * config.host: Add new files for s390.
	    * config/s390/s390.h (DRIVER_SELF_SPECS): Add support for -mtune=native
	    and -march=native
	    * config.gcc: Likewise.
	    * config/s390/s390.opt (march): Likewise; add PROCESSOR_NATIVE
	    * config/s390/s390-opts.h (enum processor_type): Ditto.
	    * config/s390/s390.c (s390_option_override): Catch unhandled
	    PROCESSOR_NATIVE

From-SVN: r223934
2015-06-01 11:38:44 +00:00
Andreas Krebbel 3af82a61fa 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
2015-05-19 17:32:07 +00:00
Andreas Krebbel 55ac540cd6 S/390 Add -march/-mtune=z13 option.
gcc/
	* common/config/s390/s390-common.c (processor_flags_table): Add
	z13.
	* config.gcc: Add z13.
	* config/s390/s390-opts.h (enum processor_type): Add
	PROCESSOR_2964_Z13.
	* config/s390/s390.c (s390_adjust_priority): Check for
	PROCESSOR_2964_Z13.
	(s390_reorg): Likewise.
	(s390_sched_reorder): Likewise.
	(s390_sched_variable_issue): Likewise.
	(s390_loop_unroll_adjust): Likewise.
	(s390_option_override): Likewise. Default to -mvx when available.
	* config/s390/s390.h (enum processor_flags): Add PF_Z13 and PF_VX.
	(TARGET_CPU_Z13, TARGET_CPU_VX, TARGET_Z13, TARGET_VX)
	(TARGET_VX_ABI): Define macros.
	macros.
	(TARGET_DEFAULT): Add MASK_OPT_VX.
	* config/s390/s390.md ("cpu" attribute): Add z13.
	("cpu_facility" attribute): Add vec.
	* config/s390/s390.opt (processor_type): Add z13.
	(mvx): New options.
	* doc/invoke.texi: Add z13 option for -march.

From-SVN: r223393
2015-05-19 17:24:24 +00:00
Dominik Vogt 94091f43bd extend.texi: s/390: Update documentation of hotpatch attribute.
2015-01-27  Dominik Vogt  <vogt@linux.vnet.ibm.com>

        * doc/extend.texi: s/390: Update documentation of hotpatch attribute.
        * doc/invoke.texi (-mhotpatch): s/390: Update documentation of
        -mhotpatch= option.
        * config/s390/s390.opt (mhotpatch): s/390: Remove -mhotpatch and
        -mno-hotpatch options.  Change syntax of -mhotpatch= option.
        * config/s390/s390.c (s390_hotpatch_trampoline_halfwords_default):
        Renamed.
        (s390_hotpatch_trampoline_halfwords_max): Renamed.
        (s390_hotpatch_hw_max): New name.
        (s390_hotpatch_trampoline_halfwords): Renamed.
        (s390_hotpatch_hw_before_label): New name.
        (get_hotpatch_attribute): Removed.
        (s390_hotpatch_hw_after_label): New name.
        (s390_handle_hotpatch_attribute): Add second parameter to hotpatch
        attribute.
        (s390_attribute_table): Ditto.
        (s390_function_num_hotpatch_trampoline_halfwords): Renamed.
        (s390_function_num_hotpatch_hw): New name.
        Remove special handling of inline functions and hotpatching.
        Return number of nops before and after the function label.
        (s390_can_inline_p): Removed.
        (s390_asm_output_function_label): Emit a configurable number of nops
        after the function label.
        (s390_option_override): Update -mhotpatch= syntax and remove -mhotpatch.
        (TARGET_CAN_INLINE_P) Removed.
        (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): New.

2015-01-27  Dominik Vogt  <vogt@linux.vnet.ibm.com>

	* gcc/testsuite/gcc.target/s390/hotpatch-13.c: New testcase.
	* gcc/testsuite/gcc.target/s390/hotpatch-14.c: New testcase.
	* gcc/testsuite/gcc.target/s390/hotpatch-15.c: New testcase.
	* gcc/testsuite/gcc.target/s390/hotpatch-16.c: New testcase.
	* gcc/testsuite/gcc.target/s390/hotpatch-17.c: New testcase.
	* gcc/testsuite/gcc.target/s390/hotpatch-18.c: New testcase.
	* gcc/testsuite/gcc.target/s390/hotpatch-19.c: New testcase.
	* gcc/testsuite/gcc.target/s390/hotpatch-20.c: New testcase.
	* gcc/testsuite/gcc.target/s390/hotpatch-compile-10.c: New testcase.
	* gcc/testsuite/gcc.target/s390/hotpatch-compile-11.c: New testcase.
	* gcc/testsuite/gcc.target/s390/hotpatch-compile-12.c: New testcase.
	* gcc/testsuite/gcc.target/s390/hotpatch-compile-13.c: New testcase.
	* gcc/testsuite/gcc.target/s390/hotpatch-compile-14.c: New testcase.
	* gcc/testsuite/gcc.target/s390/hotpatch-compile-15.c: New testcase.
	* gcc/testsuite/gcc.target/s390/hotpatch-compile-16.c: New testcase.
	* gcc/testsuite/gcc.target/s390/hotpatch-compile-9.c: New
	testcase.
	* gcc/testsuite/gcc.target/s390/hotpatch-1.c: Testcase adjusted to
	new -mhotpatch.
	* gcc/testsuite/gcc.target/s390/hotpatch-10.c: Likewise.
	* gcc/testsuite/gcc.target/s390/hotpatch-11.c: Likewise.
	* gcc/testsuite/gcc.target/s390/hotpatch-12.c: Likewise.
	* gcc/testsuite/gcc.target/s390/hotpatch-2.c: Likewise.
	* gcc/testsuite/gcc.target/s390/hotpatch-3.c: Likewise.
	* gcc/testsuite/gcc.target/s390/hotpatch-4.c: Likewise.
	* gcc/testsuite/gcc.target/s390/hotpatch-5.c: Likewise.
	* gcc/testsuite/gcc.target/s390/hotpatch-6.c: Likewise.
	* gcc/testsuite/gcc.target/s390/hotpatch-7.c: Likewise.
	* gcc/testsuite/gcc.target/s390/hotpatch-8.c: Likewise.
	* gcc/testsuite/gcc.target/s390/hotpatch-9.c: Likewise.
	* gcc/testsuite/gcc.target/s390/hotpatch-compile-1.c: Likewise.
	* gcc/testsuite/gcc.target/s390/hotpatch-compile-2.c: Likewise.
	* gcc/testsuite/gcc.target/s390/hotpatch-compile-3.c: Likewise.
	* gcc/testsuite/gcc.target/s390/hotpatch-compile-4.c: Likewise.
	* gcc/testsuite/gcc.target/s390/hotpatch-compile-5.c: Likewise.
	* gcc/testsuite/gcc.target/s390/hotpatch-compile-6.c: Likewise.
	* gcc/testsuite/gcc.target/s390/hotpatch-compile-7.c: Likewise.
	* gcc/testsuite/gcc.target/s390/hotpatch-compile-8.c: Likewise.

From-SVN: r220171
2015-01-27 15:26:16 +00:00
Jakub Jelinek 5624e564d2 Update copyright years.
From-SVN: r219188
2015-01-05 13:33:28 +01:00
Richard Sandiford 23a5b65a92 Update copyright years in gcc/
From-SVN: r206289
2014-01-02 22:23:26 +00:00
Dominik Vogt d0de9e136f s390.c (s390_hotpatch_trampoline_halfwords_default): New constant
2013-12-19  Dominik Vogt  <vogt@linux.vnet.ibm.com>
	    Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>

	* config/s390/s390.c (s390_hotpatch_trampoline_halfwords_default): New
	constant
	(s390_hotpatch_trampoline_halfwords_max): New constant
	(s390_hotpatch_trampoline_halfwords): New static variable
	(get_hotpatch_attribute): New function
	(s390_handle_hotpatch_attribute): New function
	(s390_attribute_table): New target specific attribute table to implement
	the hotpatch attribute
	(s390_option_override): Parse hotpatch options
	(s390_function_num_hotpatch_trampoline_halfwords): New function
	(s390_can_inline_p): Implement target hook to
	suppress hotpatching for explicitly inlined functions
	(s390_asm_output_function_label): Generate hotpatch prologue
	(TARGET_ATTRIBUTE_TABLE): Define to implement target attribute table
	(TARGET_CAN_INLINE_P): Define to implement target hook
	* config/s390/s390.opt (mhotpatch): New options -mhotpatch, -mhotpatch=
	* config/s390/s390-protos.h (s390_asm_output_function_label): Add
	prototype
	* config/s390/s390.h (ASM_OUTPUT_FUNCTION_LABEL): Target specific
	function label generation for hotpatching
	(FUNCTION_BOUNDARY): Align functions to eight bytes
	* doc/extend.texi: Document hotpatch attribute
	* doc/invoke.texi: Document -mhotpatch option

2013-12-19  Dominik Vogt  <vogt@linux.vnet.ibm.com>
	    Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>

	* gcc/testsuite/gcc.target/s390/hotpatch-1.c: New test
	* gcc/testsuite/gcc.target/s390/hotpatch-2.c: New test
	* gcc/testsuite/gcc.target/s390/hotpatch-3.c: New test
	* gcc/testsuite/gcc.target/s390/hotpatch-4.c: New test
	* gcc/testsuite/gcc.target/s390/hotpatch-5.c: New test
	* gcc/testsuite/gcc.target/s390/hotpatch-6.c: New test
	* gcc/testsuite/gcc.target/s390/hotpatch-7.c: New test
	* gcc/testsuite/gcc.target/s390/hotpatch-8.c: New test
	* gcc/testsuite/gcc.target/s390/hotpatch-9.c: New test
	* gcc/testsuite/gcc.target/s390/hotpatch-10.c: New test
	* gcc/testsuite/gcc.target/s390/hotpatch-11.c: New test
	* gcc/testsuite/gcc.target/s390/hotpatch-12.c: New test
	* gcc/testsuite/gcc.target/s390/hotpatch-compile-1.c: New test
	* gcc/testsuite/gcc.target/s390/hotpatch-compile-2.c: New test
	* gcc/testsuite/gcc.target/s390/hotpatch-compile-3.c: New test
	* gcc/testsuite/gcc.target/s390/hotpatch-compile-4.c: New test
	* gcc/testsuite/gcc.target/s390/hotpatch-compile-5.c: New test
	* gcc/testsuite/gcc.target/s390/hotpatch-compile-6.c: New test
	* gcc/testsuite/gcc.target/s390/hotpatch-compile-7.c: New test



Co-Authored-By: Andreas Krebbel <Andreas.Krebbel@de.ibm.com>

From-SVN: r206111
2013-12-19 12:00:43 +00:00
Andreas Krebbel 5a3fe9b607 s390.c: Rename UNSPEC_CCU_TO_INT to UNSPEC_STRCMPCC_TO_INT and UNSPEC_CCZ_TO_INT to...
2013-06-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>

	* config/s390/s390.c: Rename UNSPEC_CCU_TO_INT to
	UNSPEC_STRCMPCC_TO_INT and UNSPEC_CCZ_TO_INT to UNSPEC_CC_TO_INT.
	(struct machine_function): Add tbegin_p.
	(s390_canonicalize_comparison): Fold CC mode compares to
	conditional jump if possible.
	(s390_emit_jump): Return the emitted jump.
	(s390_branch_condition_mask, s390_branch_condition_mnemonic):
	Handle CCRAWmode compares.
	(s390_option_override): Default to -mhtm if available.
	(s390_reg_clobbered_rtx): Handle floating point regs as well.
	(s390_regs_ever_clobbered): Use s390_regs_ever_clobbered also for
	FPRs instead of df_regs_ever_live_p.
	(s390_optimize_nonescaping_tx): New function.
	(s390_init_frame_layout): Extend clobbered_regs array to cover
	FPRs as well.
	(s390_emit_prologue): Call s390_optimize_nonescaping_tx.
	(s390_expand_tbegin): New function.
	(enum s390_builtin): New enum definition.
	(code_for_builtin): New array definition.
	(s390_init_builtins): New function.
	(s390_expand_builtin): New function.
	(TARGET_INIT_BUILTINS): Define.
	(TARGET_EXPAND_BUILTIN): Define.
	* common/config/s390/s390-common.c (processor_flags_table): Add
	PF_TX.
	* config/s390/predicates.md (s390_comparison): Handle CCRAWmode.
	(s390_alc_comparison): Likewise.
	* config/s390/s390-modes.def: Add CCRAWmode.
	* config/s390/s390.h (processor_flags): Add PF_TX.
	(TARGET_CPU_HTM): Define macro.
	(TARGET_HTM): Define macro.
	(TARGET_CPU_CPP_BUILTINS): Define __HTM__ for htm.
	* config/s390/s390.md: Rename UNSPEC_CCU_TO_INT to
	UNSPEC_STRCMPCC_TO_INT and UNSPEC_CCZ_TO_INT to UNSPEC_CC_TO_INT.
	(UNSPECV_TBEGIN, UNSPECV_TBEGINC, UNSPECV_TEND, UNSPECV_TABORT)
	(UNSPECV_ETND, UNSPECV_NTSTG, UNSPECV_PPA): New unspecv enum
	values.
	(TBEGIN_MASK, TBEGINC_MASK): New constants.
	("*cc_to_int"): Move up.
	("*mov<mode>cc", "*cjump_64", "*cjump_31"): Accept integer
	constants other than 0.
	("*ccraw_to_int"): New insn and splitter definition.
	("tbegin", "tbegin_nofloat", "tbegin_retry")
	("tbegin_retry_nofloat", "tbeginc", "tend", "tabort")
	("tx_assist"): New expander.
	("tbegin_1", "tbegin_nofloat_1", "*tbeginc_1", "*tend_1")
	("*tabort_1", "etnd", "ntstg", "*ppa"): New insn definition.
	* config/s390/s390.opt: Add -mhtm option.
	* config/s390/s390-protos.h (s390_emit_jump): Add return type.
	* config/s390/htmxlintrin.h: New file.
	* config/s390/htmintrin.h: New file.
	* config/s390/s390intrin.h: New file.
	* doc/extend.texi: Document htm builtins.
	* config.gcc: Add the new header files to extra_headers.

2013-06-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>

	* gcc.target/s390/htm-1.c: New file.
	* gcc.target/s390/htm-nofloat-1.c: New file.
	* gcc.target/s390/htm-xl-intrin-1.c: New file.

2013-06-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>

	* config/s390/target.h: Include htmintrin.h.
	(_HTM_ITM_RETRIES): New macro definition.
	(htm_available, htm_init, htm_begin, htm_begin_success)
	(htm_commit, htm_abort, htm_abort_should_retry): New functions.

From-SVN: r200454
2013-06-27 07:44:11 +00:00
Vladimir Makarov 3597e1135e s390.opt (mlra): New option.
2013-06-06  Vladimir Makarov  <vmakarov@redhat.com>

	* config/s390/s390.opt (mlra): New option.
	* config/s390/s390.c (s390_decompose_address): Check displacement
	for all registers for LRA.
	(s390_secondary_reload): Don't used secondary reloads for LRA.
	(s390_lra_p): New function.
	(TARGET_LRA_P): Define.
	* config/s390/s390.md (*movmem_short, *clrmem_short): Change value
	of attribute cpu_facility to zarch for the last alternative.
	(*cmpmem_short): Ditto.

From-SVN: r199754
2013-06-06 20:05:16 +00:00
Richard Sandiford d1e082c2c2 Update copyright years in gcc/
From-SVN: r195098
2013-01-10 20:38:27 +00:00
Jakub Jelinek 90d04a445c Update Copyright years for files modified in 2011 and/or 2012.
From-SVN: r194903
2013-01-04 13:49:55 +01:00
Andreas Krebbel 22ac2c2f18 config.gcc: Enable zEC12 for with-arch and with-tune configure switches.
2012-10-10  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>

	* config.gcc: Enable zEC12 for with-arch and with-tune
          configure switches.
	* common/config/s390/s390-common.c (processor_flags_table): Add
	zEC12 entry.
	* config/s390/2827.md: New file.
	* config/s390/s390-opts.h (enum processor_type): Add
	PROCESSOR_2827_ZEC12.
	* config/s390/s390.h (enum processor_flags): Add PF_ZEC12.
	(TARGET_CPU_ZEC12, TARGET_ZEC12): New macro definitions.
	* config/s390/s390.c (zEC12_cost): New definition.
	(s390_option_override): Set costs for zEC12.
	Set parameter defaults for zEC12.
	(legitimate_reload_fp_constant_p): Adjust comment.
	(preferred_la_operand_p): Adjust comment.
	(s390_expand_insv): Generate insv pattern without CC clobber for
	zEC12.
	(s390_adjust_priority): Add zEC12 check.
	(s390_issue_rate): Return 2 for zEC12.
	(s390_reorg): Enable code optimizations for zEC12.
	(s390_sched_reorder): Reorder insns according to OOO attributes.
	(s390_get_sched_attrmask): New function.
	(s390_sched_score): New function.
	(s390_sched_variable_issue): Update s390_sched_state.
	(s390_sched_init): Reset s390_sched_state.
	(s390_loop_unroll_adjust): Enable for zEC12.
	* config/s390/s390.opt: Add zEC12 processor type value.
	* config/s390/s390.md: Enable mnemonic attribute.
	(attr cpu, cpu_facility): Add zEC12.
	Include 2827.md.
	("*insv<mode>_zEC12", "*insv<mode>_zEC12_noshift")
	("*load_and_trap<mode>"): New insn definition.
	("*cmp_and_trap_unsigned_int<mode>"): Add clt and clgt.

From-SVN: r192289
2012-10-10 05:02:11 +00:00
Andreas Krebbel 3d427cc1c8 s390.h: Make BRANCH_COST an option.
2012-01-26  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>

	* config/s390/s390.h: Make BRANCH_COST an option.
	* config/s390/s390.opt: New option -mbranch-cost.

2012-01-26  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>

	* gcc.dg/pr46309.c: Set branch-cost to 2 for s390 and s390x.
	* gcc.dg/pr44194-1.c: Disable since s390 returns structs always in
	memory.
	* gfortran.dg/reassoc_4.f: Force max-completely-peeled-insns to
	the default value for s390 and s390x.

From-SVN: r183555
2012-01-26 10:04:43 +00:00
Andreas Krebbel f137aa6354 2084.md: Enable all insn reservations also for z9_ec cpu attribute value.
2011-03-23  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>

	* config/s390/2084.md: Enable all insn reservations also for z9_ec
	cpu attribute value.
	* config/s390/s390-opts.h (enum s390_arch_option): Remove.
	(enum processor_type): Add PROCESSOR_2094_Z9_EC.
	* config/s390/s390.c (processor_flags_table): New constant array.
	(s390_handle_arch_option): Remove.
	(s390_handle_option): Remove s390_handle_arch_option invocations
	and OPT_mwarn_framesize_ handling.
	(s390_option_override): Remove s390_handle_arch_option invocation.
	(s390_emit_prologue): Remove use of HOST_WIDE_INT_PRINT_DEC in
	warnings.
	* config/s390/s390.md (cpu attribute): Add z9_ec value.
	* config/s390/s390.opt (s390_tune, s390_arch)
	(march=): Replace s390_arch_option enum and values with
	processor_type.  Set variable name to s390_arch.  Set
	initialization value.
	(mtune=): Replace s390_arch_option with processor_type.  Set
	variable name to s390_tune.  Set initialization value.

From-SVN: r171350
2011-03-23 13:42:46 +00:00
Joseph Myers cabbe12a25 s390-opts.h: New.
* config/s390/s390-opts.h: New.
	* config/s390/s390.c (s390_tune, s390_tune_flags, s390_arch,
	s390_arch_flags, s390_warn_framesize, s390_stack_size,
	s390_stack_guard): Remove.
	(s390_handle_arch_option): Return void.  Take enum
	s390_arch_option value instead of string and searching array.
	(s390_handle_option): Don't assert that global structures are in
	use.  Access variables via opts pointer.  Use error_at.  Don't use
	sscanf for -mstack-guard= or -mstack-size=.  Update call to
	s390_handle_arch_option.
	(s390_option_override): Update call to s390_handle_arch_option.
	(s390_emit_prologue): Use %d format for s390_stack_size in
	diagnostic.  Use %wd for HOST_WIDE_INT.
	* config/s390/s390.h (enum processor_type): Move to s390-opts.h.
	(s390_tune, s390_tune_flags, s390_arch, s390_arch_flags): Remove.
	* config/s390/s390.opt (config/s390/s390-opts.h): New
	HeaderInclude entry.
	(s390_arch_string, s390_tune, s390_tune_flags, s390_arch,
	s390_arch_flags, s390_warn_framesize): New Variable entries.
	(s390_arch_option): New Enum and EnumValue entries.
	(march=): Use Enum instead of Var.
	(mstack-guard=, mstack-size=): Use UInteger and Var.
	(mtune=): Use Enum.

From-SVN: r171330
2011-03-22 22:53:32 +00:00
Jakub Jelinek d652f226fc Update Copyright years for files modified in 2010.
From-SVN: r168438
2011-01-03 21:52:22 +01:00
Richard Henderson d7ecb504b9 s390: -mfused-madd cleanup
* config.gcc [s390*-*] (extra_options): Add fused-madd.opt.
        * config/s390/s390.opt (mfused-madd): Remove.
        * config/s390/s390.c (s390_rtx_costs): Handle FMA.
        (TARGET_DEFAULT_TARGET_FLAGS): Remove MASK_FUSED_MADD.
        * config/s390/s390.md (fma<DSF>4): Rename from *fmadd<DSF>; use FMA.
        (fms<DSF>4): Rename from *fmsub<DSF>; use FMA.

From-SVN: r166838
2010-11-16 15:24:53 -08:00
Andreas Krebbel 512d15e0ff s390.opt (mhard-float): Add the option to be overridden.
2007-11-27  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.opt (mhard-float): Add the option to be
	overridden.  That was missing in my last patch.

From-SVN: r130469
2007-11-27 15:12:45 +00:00
Andreas Krebbel cba04b9660 s390.opt (m31, [...]): Add the option to be overridden.
2007-11-27  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.opt (m31, m64, mesa, mzarch, msoft-float,
	mhard-float, mlong-double-64, mlong-double-128): Add the
	option to be overridden.

From-SVN: r130466
2007-11-27 12:52:31 +00:00
Andreas Krebbel 47d94c1a50 rs6000.opt: Rename -mdfp option to -mhard-dfp.
2007-10-31  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/rs6000/rs6000.opt: Rename -mdfp option to -mhard-dfp.

	* config/s390/s390.c: (override_options): Replace -mhard-dfp/-msoft-dfp
	with -mhard-dfp/-mno-hard-dfp.
	* config/s390/s390.opt: Likewise.
	* config/s390/s390.h: Add MASK_HARD_DFP to the TARGET_DEFAULT
	definition.

From-SVN: r129793
2007-10-31 07:56:01 +00:00
Nick Clifton 2f83c7d6b5 host-hpux.c: Change copyright header to refer to version 3 of the GNU General Public License...
* config/host-hpux.c: Change copyright header to refer to version 3 of the GNU
  General Public License and to point readers at the COPYING3 file and the FSF's
  license web page.
* config/alpha/predicates.md, config/alpha/vms-ld.c,
config/alpha/linux.h, config/alpha/alpha.opt,
config/alpha/linux-elf.h, config/alpha/vms.h, config/alpha/elf.h,
config/alpha/vms-unwind.h, config/alpha/ev4.md,
config/alpha/ev6.md, config/alpha/alpha.c, config/alpha/vms-cc.c,
config/alpha/alpha.h, config/alpha/sync.md,
config/alpha/openbsd.h, config/alpha/alpha.md,
config/alpha/alpha-modes.def, config/alpha/ev5.md,
config/alpha/alpha-protos.h, config/alpha/freebsd.h,
config/alpha/osf5.h, config/alpha/netbsd.h, config/alpha/vms64.h,
config/alpha/constraints.md, config/alpha/osf.h,
config/alpha/xm-vms.h, config/alpha/unicosmk.h, config/linux.h,
config/frv/predicates.md, config/frv/frv.h, config/frv/linux.h,
config/frv/frv.md, config/frv/frv.opt, config/frv/frv-modes.def,
config/frv/frv-asm.h, config/frv/frv-protos.h,
config/frv/frv-abi.h, config/frv/frv.c, config/s390/tpf.h,
config/s390/s390.c, config/s390/predicates.md, config/s390/s390.h,
config/s390/linux.h, config/s390/tpf.md, config/s390/tpf.opt,
config/s390/2064.md, config/s390/2084.md, config/s390/s390.md,
config/s390/s390.opt, config/s390/s390-modes.def,
config/s390/fixdfdi.h, config/s390/constraints.md,
config/s390/s390-protos.h, config/s390/s390x.h, config/elfos.h,
config/dbxcoff.h, config/m32c/predicates.md, config/m32c/cond.md,
config/m32c/m32c.c, config/m32c/minmax.md, config/m32c/blkmov.md,
config/m32c/m32c-pragma.c, config/m32c/m32c.h,
config/m32c/prologue.md, config/m32c/m32c.abi,
config/m32c/muldiv.md, config/m32c/bitops.md, config/m32c/mov.md,
config/m32c/addsub.md, config/m32c/m32c.md, config/m32c/m32c.opt,
config/m32c/t-m32c, config/m32c/m32c-modes.def,
config/m32c/jump.md, config/m32c/shift.md,
config/m32c/m32c-protos.h, config/libgloss.h,
config/spu/spu-protos.h, config/spu/predicates.md,
config/spu/spu-builtins.h, config/spu/spu.c,
config/spu/spu-builtins.def, config/spu/spu-builtins.md,
config/spu/spu.h, config/spu/spu-elf.h, config/spu/constraints.md,
config/spu/spu.md, config/spu/spu-c.c, config/spu/spu.opt,
config/spu/spu-modes.def, config/spu/t-spu-elf, config/interix.h,
config/sparc/hypersparc.md, config/sparc/predicates.md,
config/sparc/linux.h, config/sparc/sp64-elf.h,
config/sparc/supersparc.md, config/sparc/cypress.md,
config/sparc/openbsd1-64.h, config/sparc/openbsd64.h,
config/sparc/niagara.md, config/sparc/sparc.md,
config/sparc/long-double-switch.opt, config/sparc/ultra3.md,
config/sparc/sparc.opt, config/sparc/sync.md,
config/sparc/sp-elf.h, config/sparc/sparc-protos.h,
config/sparc/ultra1_2.md, config/sparc/biarch64.h,
config/sparc/sparc.c, config/sparc/little-endian.opt,
config/sparc/sysv4-only.h, config/sparc/sparc.h,
config/sparc/linux64.h, config/sparc/freebsd.h,
config/sparc/sol2.h, config/sparc/rtemself.h,
config/sparc/netbsd-elf.h, config/sparc/vxworks.h,
config/sparc/sparc-modes.def, config/sparc/sparclet.md,
config/sparc/sysv4.h, config/vx-common.h, config/netbsd-aout.h,
config/flat.h, config/m32r/m32r.md, config/m32r/predicates.md,
config/m32r/little.h, config/m32r/m32r.c, config/m32r/m32r.opt,
config/m32r/linux.h, config/m32r/constraints.md,
config/m32r/m32r.h, config/m32r/m32r-protos.h, config/vxworks.opt,
config/darwin-c.c, config/darwin.opt, config/i386/i386.h,
config/i386/cygming.h, config/i386/linux.h, config/i386/cygwin.h,
config/i386/i386.md, config/i386/netware-crt0.c,
config/i386/sco5.h, config/i386/mmx.md, config/i386/vx-common.h,
config/i386/kaos-i386.h, config/i386/winnt-stubs.c,
config/i386/netbsd64.h, config/i386/djgpp.h, config/i386/gas.h,
config/i386/sol2.h, config/i386/constraints.md,
config/i386/netware-libgcc.c, config/i386/sysv5.h,
config/i386/predicates.md, config/i386/geode.md,
config/i386/x86-64.h, config/i386/kfreebsd-gnu.h,
config/i386/freebsd64.h, config/i386/vxworksae.h,
config/i386/pentium.md, config/i386/lynx.h, config/i386/i386elf.h,
config/i386/rtemself.h, config/i386/netbsd-elf.h,
config/i386/ppro.md, config/i386/k6.md, config/i386/netware.c,
config/i386/netware.h, config/i386/i386-modes.def,
config/i386/sysv4-cpp.h, config/i386/i386-interix.h,
config/i386/cygwin1.c, config/i386/djgpp.opt, config/i386/uwin.h,
config/i386/unix.h, config/i386/ptx4-i.h, config/i386/xm-djgpp.h,
config/i386/att.h, config/i386/winnt.c, config/i386/beos-elf.h,
config/i386/sol2-10.h, config/i386/darwin64.h, config/i386/sse.md,
config/i386/i386.opt, config/i386/bsd.h, config/i386/cygming.opt,
config/i386/xm-mingw32.h, config/i386/linux64.h,
config/i386/openbsdelf.h, config/i386/xm-cygwin.h,
config/i386/sco5.opt, config/i386/darwin.h, config/i386/mingw32.h,
config/i386/winnt-cxx.c, config/i386/i386-interix3.h,
config/i386/nwld.c, config/i386/nwld.h, config/i386/host-cygwin.c,
config/i386/cygwin2.c, config/i386/i386-protos.h,
config/i386/sync.md, config/i386/openbsd.h,
config/i386/host-mingw32.c, config/i386/i386-aout.h,
config/i386/nto.h, config/i386/biarch64.h,
config/i386/i386-coff.h, config/i386/freebsd.h,
config/i386/driver-i386.c, config/i386/knetbsd-gnu.h,
config/i386/host-i386-darwin.c, config/i386/vxworks.h,
config/i386/crtdll.h, config/i386/i386.c, config/i386/sysv4.h,
config/darwin-protos.h, config/linux.opt, config/sol2.c,
config/sol2.h, config/sh/symbian.c, config/sh/sh-protos.h,
config/sh/linux.h, config/sh/elf.h, config/sh/superh.h,
config/sh/sh4.md, config/sh/coff.h, config/sh/newlib.h,
config/sh/embed-elf.h, config/sh/symbian-pre.h, config/sh/rtems.h,
config/sh/kaos-sh.h, config/sh/sh4a.md, config/sh/constraints.md,
config/sh/sh64.h, config/sh/sh.opt, config/sh/symbian-post.h,
config/sh/sh-c.c, config/sh/predicates.md, config/sh/sh.c,
config/sh/sh.h, config/sh/shmedia.md, config/sh/sh-modes.def,
config/sh/little.h, config/sh/sh1.md, config/sh/sh4-300.md,
config/sh/superh64.h, config/sh/rtemself.h,
config/sh/netbsd-elf.h, config/sh/sh.md, config/sh/vxworks.h,
config/usegas.h, config/svr3.h, config/pdp11/pdp11-protos.h,
config/pdp11/2bsd.h, config/pdp11/pdp11.md, config/pdp11/pdp11.c,
config/pdp11/pdp11.opt, config/pdp11/pdp11-modes.def,
config/pdp11/pdp11.h, config/avr/rtems.h, config/avr/avr-protos.h,
config/avr/predicates.md, config/avr/constraints.md,
config/avr/avr.md, config/avr/avr.c, config/avr/avr.opt,
config/avr/avr.h, config/sol2-protos.h, config/dbxelf.h,
config/lynx.opt, config/crx/crx.h, config/crx/crx-protos.h,
config/crx/crx.md, config/crx/crx.c, config/crx/crx.opt,
config/c4x/c4x-c.c, config/c4x/c4x.c, config/c4x/c4x.opt,
config/c4x/c4x-modes.def, config/c4x/rtems.h,
config/c4x/predicates.md, config/c4x/c4x.h,
config/c4x/c4x-protos.h, config/c4x/c4x.md, config/kfreebsd-gnu.h,
config/xtensa/predicates.md, config/xtensa/xtensa.c,
config/xtensa/linux.h, config/xtensa/xtensa.h,
config/xtensa/elf.h, config/xtensa/xtensa.md,
config/xtensa/xtensa.opt, config/xtensa/constraints.md,
config/xtensa/xtensa-protos.h, config/dbx.h,
config/stormy16/predicates.md, config/stormy16/stormy16.md,
config/stormy16/stormy16.c, config/stormy16/stormy16.opt,
config/stormy16/stormy16.h, config/stormy16/stormy16-protos.h,
config/host-solaris.c, config/fr30/fr30.h,
config/fr30/predicates.md, config/fr30/fr30-protos.h,
config/fr30/fr30.md, config/fr30/fr30.c, config/fr30/fr30.opt,
config/vxworksae.h, config/sol2-c.c, config/lynx.h,
config/m68hc11/m68hc11-protos.h, config/m68hc11/predicates.md,
config/m68hc11/m68hc11.md, config/m68hc11/m68hc11.c,
config/m68hc11/m68hc11.opt, config/m68hc11/m68hc11.h,
config/m68hc11/m68hc12.h, config/openbsd-oldgas.h,
config/host-linux.c, config/interix3.h, config/cris/cris.c,
config/cris/predicates.md, config/cris/linux.h,
config/cris/cris.h, config/cris/aout.h, config/cris/cris.md,
config/cris/linux.opt, config/cris/cris.opt, config/cris/elf.opt,
config/cris/aout.opt, config/cris/cris-protos.h,
config/vxworks-dummy.h, config/netbsd.h, config/netbsd-elf.h,
config/iq2000/iq2000.h, config/iq2000/predicates.md,
config/iq2000/iq2000-protos.h, config/iq2000/iq2000.md,
config/iq2000/iq2000.c, config/iq2000/iq2000.opt,
config/host-darwin.c, config/mt/mt.md, config/mt/mt.c,
config/mt/mt.opt, config/mt/t-mt, config/mt/mt.h,
config/mt/mt-protos.h, config/svr4.h, config/host-darwin.h,
config/chorus.h, config/mn10300/mn10300.c,
config/mn10300/mn10300.opt, config/mn10300/predicates.md,
config/mn10300/mn10300.h, config/mn10300/linux.h,
config/mn10300/constraints.md, config/mn10300/mn10300-protos.h,
config/mn10300/mn10300.md, config/ia64/predicates.md,
config/ia64/itanium1.md, config/ia64/unwind-ia64.h,
config/ia64/ia64-c.c, config/ia64/sync.md, config/ia64/ia64.c,
config/ia64/itanium2.md, config/ia64/ia64.h, config/ia64/vect.md,
config/ia64/freebsd.h, config/ia64/ia64.md,
config/ia64/ia64-modes.def, config/ia64/constraints.md,
config/ia64/hpux.h, config/ia64/ia64-protos.h, config/windiss.h,
config/gofast.h, config/rtems.h, config/sol2-10.h,
config/m68k/predicates.md, config/m68k/m68k.md,
config/m68k/linux.h, config/m68k/m68k-modes.def,
config/m68k/print-sysroot-suffix.sh, config/m68k/m68k-protos.h,
config/m68k/coff.h, config/m68k/m68k-none.h, config/m68k/ieee.opt,
config/m68k/openbsd.h, config/m68k/m68k-aout.h,
config/m68k/m68k.opt, config/m68k/m68020-elf.h,
config/m68k/m68kelf.h, config/m68k/m68k-devices.def,
config/m68k/uclinux-oldabi.h, config/m68k/m68k.c,
config/m68k/constraints.md, config/m68k/rtemself.h,
config/m68k/netbsd-elf.h, config/m68k/m68k.h,
config/m68k/uclinux.h, config/rs6000/power4.md,
config/rs6000/host-darwin.c, config/rs6000/6xx.md,
config/rs6000/linux.h, config/rs6000/eabi.h,
config/rs6000/aix41.opt, config/rs6000/xcoff.h,
config/rs6000/secureplt.h, config/rs6000/linuxspe.h,
config/rs6000/eabialtivec.h, config/rs6000/8540.md,
config/rs6000/darwin8.h, config/rs6000/kaos-ppc.h,
config/rs6000/windiss.h, config/rs6000/603.md,
config/rs6000/aix41.h, config/rs6000/cell.md,
config/rs6000/mpc.md, config/rs6000/aix43.h, config/rs6000/beos.h,
config/rs6000/gnu.h, config/rs6000/rtems.h, config/rs6000/aix.opt,
config/rs6000/darwin.md, config/rs6000/darwin64.h,
config/rs6000/default64.h, config/rs6000/7xx.md,
config/rs6000/darwin.opt, config/rs6000/spe.md,
config/rs6000/rs6000.opt, config/rs6000/rs6000-c.c,
config/rs6000/rios2.md, config/rs6000/linuxaltivec.h,
config/rs6000/7450.md, config/rs6000/linux64.h,
config/rs6000/constraints.md, config/rs6000/440.md,
config/rs6000/darwin.h, config/rs6000/host-ppc64-darwin.c,
config/rs6000/rs6000.c, config/rs6000/aix52.h,
config/rs6000/rs6000.h, config/rs6000/power6.md,
config/rs6000/predicates.md, config/rs6000/altivec.md,
config/rs6000/aix64.opt, config/rs6000/rios1.md,
config/rs6000/rs6000-modes.def, config/rs6000/rs64.md,
config/rs6000/eabisim.h, config/rs6000/sysv4le.h,
config/rs6000/darwin7.h, config/rs6000/dfp.md,
config/rs6000/linux64.opt, config/rs6000/sync.md,
config/rs6000/vxworksae.h, config/rs6000/power5.md,
config/rs6000/lynx.h, config/rs6000/biarch64.h,
config/rs6000/rs6000.md, config/rs6000/sysv4.opt,
config/rs6000/eabispe.h, config/rs6000/e500.h,
config/rs6000/freebsd.h, config/rs6000/rs6000-protos.h,
config/rs6000/netbsd.h, config/rs6000/e500-double.h,
config/rs6000/aix.h, config/rs6000/vxworks.h,
config/rs6000/40x.md, config/rs6000/aix51.h,
config/rs6000/sysv4.h, config/arc/arc-protos.h, config/arc/arc.md,
config/arc/arc.c, config/arc/arc.opt, config/arc/arc-modes.def,
config/arc/arc.h, config/mcore/mcore-elf.h,
config/mcore/mcore-protos.h, config/mcore/predicates.md,
config/mcore/mcore.md, config/mcore/mcore.c,
config/mcore/mcore.opt, config/mcore/mcore.h,
config/mcore/mcore-pe.h, config/darwin.c, config/freebsd-nthr.h,
config/score/predicates.md, config/score/score-version.h,
config/score/score-protos.h, config/score/misc.md,
config/score/elf.h, config/score/score.c, config/score/mac.md,
config/score/score7.md, config/score/score.h,
config/score/score-conv.h, config/score/score-mdaux.c,
config/score/score.md, config/score/score.opt,
config/score/score-modes.def, config/score/score-mdaux.h,
config/score/mul-div.S, config/arm/uclinux-elf.h,
config/arm/semi.h, config/arm/ecos-elf.h, config/arm/arm1020e.md,
config/arm/symbian.h, config/arm/linux-elf.h,
config/arm/arm1026ejs.md, config/arm/arm1136jfs.md,
config/arm/elf.h, config/arm/aout.h, config/arm/arm.c,
config/arm/thumb2.md, config/arm/vec-common.md, config/arm/coff.h,
config/arm/strongarm-pe.h, config/arm/arm.h,
config/arm/cortex-a8-neon.md, config/arm/semiaof.h,
config/arm/cortex-a8.md, config/arm/uclinux-eabi.h,
config/arm/arm-modes.def, config/arm/linux-eabi.h,
config/arm/rtems-elf.h, config/arm/neon-schedgen.ml,
config/arm/arm-cores.def, config/arm/arm-protos.h,
config/arm/vfp.md, config/arm/aof.h, config/arm/linux-gas.h,
config/arm/wince-pe.h, config/arm/neon.md,
config/arm/constraints.md, config/arm/neon.ml,
config/arm/xscale-elf.h, config/arm/strongarm-coff.h,
config/arm/arm.opt, config/arm/arm926ejs.md,
config/arm/predicates.md, config/arm/iwmmxt.md,
config/arm/arm_neon.h, config/arm/unknown-elf.h,
config/arm/kaos-arm.h, config/arm/bpabi.h, config/arm/pe.opt,
config/arm/neon-testgen.ml, config/arm/arm.md,
config/arm/xscale-coff.h, config/arm/pe.c,
config/arm/arm-generic.md, config/arm/pe.h,
config/arm/kaos-strongarm.h, config/arm/freebsd.h,
config/arm/neon-docgen.ml, config/arm/netbsd.h, config/arm/fpa.md,
config/arm/strongarm-elf.h, config/arm/cirrus.md,
config/arm/netbsd-elf.h, config/arm/vxworks.h,
config/arm/neon-gen.ml, config/kaos.h, config/darwin-driver.c,
config/pa/predicates.md, config/pa/pa64-hpux.h,
config/pa/pa-hpux.opt, config/pa/som.h, config/pa/pa-hpux1010.opt,
config/pa/pa-hpux1111.opt, config/pa/pa-pro-end.h,
config/pa/elf.h, config/pa/fptr.c, config/pa/pa64-linux.h,
config/pa/pa.md, config/pa/pa.opt, config/pa/pa-hpux.h,
config/pa/pa-hpux10.h, config/pa/pa-hpux11.h,
config/pa/pa-hpux1010.h, config/pa/pa-protos.h,
config/pa/pa-osf.h, config/pa/pa-hpux1111.h, config/pa/pa-64.h,
config/pa/milli64.S, config/pa/pa.c, config/pa/pa-linux.h,
config/pa/pa.h, config/pa/pa32-linux.h, config/pa/pa64-hpux.opt,
config/pa/pa64-regs.h, config/pa/pa-modes.def,
config/pa/constraints.md, config/darwin9.h, config/mips/4100.md,
config/mips/linux.h, config/mips/elfoabi.h, config/mips/elf.h,
config/mips/sdb.h, config/mips/windiss.h, config/mips/rtems.h,
config/mips/3000.md, config/mips/iris5.h, config/mips/5000.md,
config/mips/7000.md, config/mips/9000.md, config/mips/4600.md,
config/mips/linux64.h, config/mips/elforion.h,
config/mips/constraints.md, config/mips/generic.md,
config/mips/predicates.md, config/mips/4300.md,
config/mips/mips-ps-3d.md, config/mips/iris.h, config/mips/24k.md,
config/mips/mips.md, config/mips/mips.opt, config/mips/4k.md,
config/mips/5k.md, config/mips/vr4120-div.S,
config/mips/openbsd.h, config/mips/iris6.h, config/mips/4000.md,
config/mips/mips-protos.h, config/mips/6000.md,
config/mips/mips.c, config/mips/mips.h, config/mips/r3900.h,
config/mips/74k.md, config/mips/netbsd.h, config/mips/vxworks.h,
config/mips/mips-modes.def, config/mips/vr.h,
config/soft-fp/t-softfp, config/openbsd.h, config/ptx4.h,
config/freebsd-spec.h, config/vax/vax.c, config/vax/openbsd.h,
config/vax/vax.h, config/vax/elf.h, config/vax/vax.md,
config/vax/bsd.h, config/vax/vax.opt, config/vax/vax-modes.def,
config/vax/openbsd1.h, config/vax/netbsd.h,
config/vax/vax-protos.h, config/vax/netbsd-elf.h,
config/vax/vaxv.h, config/vax/ultrix.h, config/freebsd.h,
config/h8300/rtems.h, config/h8300/predicates.md,
config/h8300/h8300.c, config/h8300/h8300.h, config/h8300/elf.h,
config/h8300/h8300.md, config/h8300/h8300.opt,
config/h8300/coff.h, config/h8300/h8300-protos.h,
config/v850/v850.md, config/v850/predicates.md,
config/v850/v850-c.c, config/v850/v850.c, config/v850/v850.opt,
config/v850/v850.h, config/v850/v850-protos.h, config/vxworks.c,
config/knetbsd-gnu.h, config/sol2-6.h, config/vxworks.h,
config/mmix/mmix.h, config/mmix/predicates.md,
config/mmix/mmix-protos.h, config/mmix/mmix.md,
config/mmix/mmix.c, config/mmix/mmix.opt,
config/mmix/mmix-modes.def, config/bfin/bfin.opt,
config/bfin/rtems.h, config/bfin/bfin-modes.def,
config/bfin/predicates.md, config/bfin/bfin-protos.h,
config/bfin/bfin.c, config/bfin/bfin.h, config/bfin/bfin.md: Likewise.

From-SVN: r127157
2007-08-02 10:49:31 +00:00
Andreas Krebbel 3443392a8a s390.opt ("mhard-float", [...]): Bit value inverted and documentation adjusted.
2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
	inverted and documentation adjusted.
	("mhard-dfp", "msoft-dfp"): New options.
	* config/s390/s390.c (s390_handle_arch_option): New architecture
	switch: z9-ec.
	(override_options): Sanity checks for the new options added.
	* config.gcc: New architecture switch: z9-ec.
	* config/s390/s390.h (processor_flags): PF_DFP added.
	(TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
	(TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
	when the bit is NOT set so remove it from the defaults.

From-SVN: r123055
2007-03-19 08:46:57 +00:00