Commit Graph

490 Commits

Author SHA1 Message Date
Robin Dapp db4ce4a3d7 s390: Add scheduler description for z16.
This patch adds the scheduler description for the z16 machine.

gcc/ChangeLog:

	* config/s390/s390.cc (s390_get_sched_attrmask): Add z16.
	(s390_get_unit_mask): Likewise.
	(s390_is_fpd): Likewise.
	(s390_is_fxd): Likewise.
	* config/s390/s390.h (s390_tune_attr): Set max tune level to z16.
	* config/s390/s390.md (z900,z990,z9_109,z9_ec,z10,z196,zEC12,z13,z14,z15):
	Add z16.
	(z900,z990,z9_109,z9_ec,z10,z196,zEC12,z13,z14,z15,z16):
	Likewise.
	* config/s390/3931.md: New file.
2022-04-14 13:23:18 +02:00
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 2472dcaa8c s390: Fix up *cmp_and_trap_unsigned_int<mode> constraints [PR104775]
The following testcase fails to assemble due to clgte %r6,0(%r1,%r10)
insn not being accepted by assembler.
My rough understanding is that in the RSY-b insn format the spot
in other formats used for index registers is used instead for M3 what
kind of comparison it is, so this patch follows what other similar
instructions use for constraint (i.e. one without index register).

2022-03-07  Jakub Jelinek  <jakub@redhat.com>

	PR target/104775
	* config/s390/s390.md (*cmp_and_trap_unsigned_int<mode>): Use
	S constraint instead of T in the last alternative.

	* gcc.target/s390/pr104775.c: New test.
2022-03-07 11:14:04 +01:00
Robin Dapp 1e3185e714 s390: Increase costs for load on condition and change movqicc expander.
This patch changes the costs for a load on condition from 5 to 6 in
order to ensure that we only if-convert two and not three or more SETS like

if (cond)
{
  a = b;
  c = d;
  e = f;
}

In the movqicc expander we emit a paradoxical subreg directly that
combine would otherwise try to create by using a non-optimal sequence
(which would be too expensive).

Also, fix two oversights in ifcvt testcases.

gcc/ChangeLog:

	* config/s390/s390.cc (s390_rtx_costs): Increase costs for load
	on condition.
	* config/s390/s390.md: Use paradoxical subreg.

gcc/testsuite/ChangeLog:

	* gcc.target/s390/ifcvt-two-insns-int.c: Fix array size.
	* gcc.target/s390/ifcvt-two-insns-long.c: Dito.
2022-02-08 15:28:53 +01:00
Martin Liska e53b6e564a Change references of .c files to .cc files
ChangeLog:

	* MAINTAINERS: Rename .c names to .cc.

contrib/ChangeLog:

	* filter-clang-warnings.py: Rename .c names to .cc.
	* gcc_update: Likewise.
	* paranoia.cc: Likewise.

contrib/header-tools/ChangeLog:

	* README: Rename .c names to .cc.

gcc/ChangeLog:

	* Makefile.in: Rename .c names to .cc.
	* alias.h: Likewise.
	* asan.cc: Likewise.
	* auto-profile.h: Likewise.
	* basic-block.h (struct basic_block_d): Likewise.
	* btfout.cc: Likewise.
	* builtins.cc (expand_builtin_longjmp): Likewise.
	(validate_arg): Likewise.
	(access_ref::offset_bounded): Likewise.
	* caller-save.cc (reg_restore_code): Likewise.
	(setup_save_areas): Likewise.
	* calls.cc (initialize_argument_information): Likewise.
	(expand_call): Likewise.
	(emit_library_call_value_1): Likewise.
	* cfg-flags.def (RTL): Likewise.
	(SIBCALL): Likewise.
	(CAN_FALLTHRU): Likewise.
	* cfganal.cc (post_order_compute): Likewise.
	* cfgcleanup.cc (try_simplify_condjump): Likewise.
	(merge_blocks_move_predecessor_nojumps): Likewise.
	(merge_blocks_move_successor_nojumps): Likewise.
	(merge_blocks_move): Likewise.
	(old_insns_match_p): Likewise.
	(try_crossjump_bb): Likewise.
	* cfgexpand.cc (expand_gimple_stmt): Likewise.
	* cfghooks.cc (split_block_before_cond_jump): Likewise.
	(profile_record_check_consistency): Likewise.
	* cfghooks.h: Likewise.
	* cfgrtl.cc (pass_free_cfg::execute): Likewise.
	(rtl_can_merge_blocks): Likewise.
	(try_redirect_by_replacing_jump): Likewise.
	(make_pass_outof_cfg_layout_mode): Likewise.
	(cfg_layout_can_merge_blocks_p): Likewise.
	* cgraph.cc (release_function_body): Likewise.
	(cgraph_node::get_fun): Likewise.
	* cgraph.h (struct cgraph_node): Likewise.
	(asmname_hasher::equal): Likewise.
	(cgraph_inline_failed_type): Likewise.
	(thunk_adjust): Likewise.
	(dump_callgraph_transformation): Likewise.
	(record_references_in_initializer): Likewise.
	(ipa_discover_variable_flags): Likewise.
	* cgraphclones.cc (GTY): Likewise.
	* cgraphunit.cc (symbol_table::finalize_compilation_unit): Likewise.
	* collect-utils.h (GCC_COLLECT_UTILS_H): Likewise.
	* collect2-aix.h (GCC_COLLECT2_AIX_H): Likewise.
	* collect2.cc (maybe_run_lto_and_relink): Likewise.
	* combine-stack-adj.cc: Likewise.
	* combine.cc (setup_incoming_promotions): Likewise.
	(combine_simplify_rtx): Likewise.
	(count_rtxs): Likewise.
	* common.opt: Likewise.
	* common/config/aarch64/aarch64-common.cc: Likewise.
	* common/config/arm/arm-common.cc (arm_asm_auto_mfpu): Likewise.
	* common/config/avr/avr-common.cc: Likewise.
	* common/config/i386/i386-isas.h (struct _isa_names_table): Likewise.
	* conditions.h: Likewise.
	* config.gcc: Likewise.
	* config/aarch64/aarch64-builtins.cc (aarch64_resolve_overloaded_memtag): Likewise.
	* config/aarch64/aarch64-protos.h (aarch64_classify_address): Likewise.
	(aarch64_get_extension_string_for_isa_flags): Likewise.
	* config/aarch64/aarch64-sve-builtins.cc (function_builder::add_function): Likewise.
	* config/aarch64/aarch64.cc (aarch64_regmode_natural_size): Likewise.
	(aarch64_sched_first_cycle_multipass_dfa_lookahead): Likewise.
	(aarch64_option_valid_attribute_p): Likewise.
	(aarch64_short_vector_p): Likewise.
	(aarch64_float_const_representable_p): Likewise.
	* config/aarch64/aarch64.h (DBX_REGISTER_NUMBER): Likewise.
	(ASM_OUTPUT_POOL_EPILOGUE): Likewise.
	(GTY): Likewise.
	* config/aarch64/cortex-a57-fma-steering.cc: Likewise.
	* config/aarch64/driver-aarch64.cc (contains_core_p): Likewise.
	* config/aarch64/t-aarch64: Likewise.
	* config/aarch64/x-aarch64: Likewise.
	* config/aarch64/x-darwin: Likewise.
	* config/alpha/alpha-protos.h: Likewise.
	* config/alpha/alpha.cc (alpha_scalar_mode_supported_p): Likewise.
	* config/alpha/alpha.h (LONG_DOUBLE_TYPE_SIZE): Likewise.
	(enum reg_class): Likewise.
	* config/alpha/alpha.md: Likewise.
	* config/alpha/driver-alpha.cc (AMASK_LOCKPFTCHOK): Likewise.
	* config/alpha/x-alpha: Likewise.
	* config/arc/arc-protos.h (arc_eh_uses): Likewise.
	* config/arc/arc.cc (ARC_OPT): Likewise.
	(arc_ccfsm_advance): Likewise.
	(arc_arg_partial_bytes): Likewise.
	(conditionalize_nonjump): Likewise.
	* config/arc/arc.md: Likewise.
	* config/arc/builtins.def: Likewise.
	* config/arc/t-arc: Likewise.
	* config/arm/arm-c.cc (arm_resolve_overloaded_builtin): Likewise.
	(arm_pragma_target_parse): Likewise.
	* config/arm/arm-protos.h (save_restore_target_globals): Likewise.
	(arm_cpu_cpp_builtins): Likewise.
	* config/arm/arm.cc (vfp3_const_double_index): Likewise.
	(shift_op): Likewise.
	(thumb2_final_prescan_insn): Likewise.
	(arm_final_prescan_insn): Likewise.
	(arm_asm_output_labelref): Likewise.
	(arm_small_register_classes_for_mode_p): Likewise.
	* config/arm/arm.h: Likewise.
	* config/arm/arm.md: Likewise.
	* config/arm/driver-arm.cc: Likewise.
	* config/arm/symbian.h: Likewise.
	* config/arm/t-arm: Likewise.
	* config/arm/thumb1.md: Likewise.
	* config/arm/x-arm: Likewise.
	* config/avr/avr-c.cc (avr_register_target_pragmas): Likewise.
	* config/avr/avr-fixed.md: Likewise.
	* config/avr/avr-log.cc (avr_log_vadump): Likewise.
	* config/avr/avr-mcus.def: Likewise.
	* config/avr/avr-modes.def (FRACTIONAL_INT_MODE): Likewise.
	* config/avr/avr-passes.def (INSERT_PASS_BEFORE): Likewise.
	* config/avr/avr-protos.h (make_avr_pass_casesi): Likewise.
	* config/avr/avr.cc (avr_option_override): Likewise.
	(avr_build_builtin_va_list): Likewise.
	(avr_mode_dependent_address_p): Likewise.
	(avr_function_arg_advance): Likewise.
	(avr_asm_output_aligned_decl_common): Likewise.
	* config/avr/avr.h (RETURN_ADDR_RTX): Likewise.
	(SUPPORTS_INIT_PRIORITY): Likewise.
	* config/avr/avr.md: Likewise.
	* config/avr/builtins.def: Likewise.
	* config/avr/gen-avr-mmcu-specs.cc (IN_GEN_AVR_MMCU_TEXI): Likewise.
	* config/avr/gen-avr-mmcu-texi.cc (IN_GEN_AVR_MMCU_TEXI): Likewise.
	(main): Likewise.
	* config/avr/t-avr: Likewise.
	* config/bfin/bfin.cc (frame_related_constant_load): Likewise.
	* config/bpf/bpf-protos.h (GCC_BPF_PROTOS_H): Likewise.
	* config/bpf/bpf.h (enum reg_class): Likewise.
	* config/bpf/t-bpf: Likewise.
	* config/c6x/c6x-protos.h (GCC_C6X_PROTOS_H): Likewise.
	* config/cr16/cr16-protos.h: Likewise.
	* config/cris/cris.cc (cris_address_cost): Likewise.
	(cris_side_effect_mode_ok): Likewise.
	(cris_init_machine_status): Likewise.
	(cris_emit_movem_store): Likewise.
	* config/cris/cris.h (INDEX_REG_CLASS): Likewise.
	(enum reg_class): Likewise.
	(struct cum_args): Likewise.
	* config/cris/cris.opt: Likewise.
	* config/cris/sync.md: Likewise.
	* config/csky/csky.cc (csky_expand_prologue): Likewise.
	* config/darwin-c.cc: Likewise.
	* config/darwin-f.cc: Likewise.
	* config/darwin-sections.def (zobj_const_section): Likewise.
	* config/darwin.cc (output_objc_section_asm_op): Likewise.
	(fprintf): Likewise.
	* config/darwin.h (GTY): Likewise.
	* config/elfos.h: Likewise.
	* config/epiphany/epiphany-sched.md: Likewise.
	* config/epiphany/epiphany.cc (epiphany_function_value): Likewise.
	* config/epiphany/epiphany.h (GTY): Likewise.
	(NO_FUNCTION_CSE): Likewise.
	* config/epiphany/mode-switch-use.cc: Likewise.
	* config/epiphany/predicates.md: Likewise.
	* config/epiphany/t-epiphany: Likewise.
	* config/fr30/fr30-protos.h: Likewise.
	* config/frv/frv-protos.h: Likewise.
	* config/frv/frv.cc (TLS_BIAS): Likewise.
	* config/frv/frv.h (ASM_OUTPUT_ALIGNED_LOCAL): Likewise.
	* config/ft32/ft32-protos.h: Likewise.
	* config/gcn/gcn-hsa.h (ASM_APP_OFF): Likewise.
	* config/gcn/gcn.cc (gcn_init_libfuncs): Likewise.
	* config/gcn/mkoffload.cc (copy_early_debug_info): Likewise.
	* config/gcn/t-gcn-hsa: Likewise.
	* config/gcn/t-omp-device: Likewise.
	* config/h8300/h8300-protos.h (GCC_H8300_PROTOS_H): Likewise.
	(same_cmp_following_p): Likewise.
	* config/h8300/h8300.cc (F): Likewise.
	* config/h8300/h8300.h (struct cum_arg): Likewise.
	(BRANCH_COST): Likewise.
	* config/i386/cygming.h (DEFAULT_PCC_STRUCT_RETURN): Likewise.
	* config/i386/djgpp.h (TARGET_ASM_LTO_END): Likewise.
	* config/i386/dragonfly.h (NO_PROFILE_COUNTERS): Likewise.
	* config/i386/driver-i386.cc (detect_caches_intel): Likewise.
	* config/i386/freebsd.h (NO_PROFILE_COUNTERS): Likewise.
	* config/i386/i386-c.cc (ix86_target_macros): Likewise.
	* config/i386/i386-expand.cc (get_mode_wider_vector): Likewise.
	* config/i386/i386-options.cc (ix86_set_func_type): Likewise.
	* config/i386/i386-protos.h (ix86_extract_perm_from_pool_constant): Likewise.
	(ix86_register_pragmas): Likewise.
	(ix86_d_has_stdcall_convention): Likewise.
	(i386_pe_seh_init_sections): Likewise.
	* config/i386/i386.cc (ix86_function_arg_regno_p): Likewise.
	(ix86_function_value_regno_p): Likewise.
	(ix86_compute_frame_layout): Likewise.
	(legitimize_pe_coff_symbol): Likewise.
	(output_pic_addr_const): Likewise.
	* config/i386/i386.h (defined): Likewise.
	(host_detect_local_cpu): Likewise.
	(CONSTANT_ADDRESS_P): Likewise.
	(DEFAULT_LARGE_SECTION_THRESHOLD): Likewise.
	(struct machine_frame_state): Likewise.
	* config/i386/i386.md: Likewise.
	* config/i386/lynx.h (ASM_OUTPUT_ALIGN): Likewise.
	* config/i386/mmx.md: Likewise.
	* config/i386/sse.md: Likewise.
	* config/i386/t-cygming: Likewise.
	* config/i386/t-djgpp: Likewise.
	* config/i386/t-gnu-property: Likewise.
	* config/i386/t-i386: Likewise.
	* config/i386/t-intelmic: Likewise.
	* config/i386/t-omp-device: Likewise.
	* config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Likewise.
	(i386_pe_adjust_class_at_definition): Likewise.
	* config/i386/winnt.cc (gen_stdcall_or_fastcall_suffix): Likewise.
	(i386_pe_mangle_decl_assembler_name): Likewise.
	(i386_pe_encode_section_info): Likewise.
	* config/i386/x-cygwin: Likewise.
	* config/i386/x-darwin: Likewise.
	* config/i386/x-i386: Likewise.
	* config/i386/x-mingw32: Likewise.
	* config/i386/x86-tune-sched-core.cc: Likewise.
	* config/i386/x86-tune.def: Likewise.
	* config/i386/xm-djgpp.h (STANDARD_STARTFILE_PREFIX_1): Likewise.
	* config/ia64/freebsd.h: Likewise.
	* config/ia64/hpux.h (REGISTER_TARGET_PRAGMAS): Likewise.
	* config/ia64/ia64-protos.h (ia64_except_unwind_info): Likewise.
	* config/ia64/ia64.cc (ia64_function_value_regno_p): Likewise.
	(ia64_secondary_reload_class): Likewise.
	(bundling): Likewise.
	* config/ia64/ia64.h: Likewise.
	* config/ia64/ia64.md: Likewise.
	* config/ia64/predicates.md: Likewise.
	* config/ia64/sysv4.h: Likewise.
	* config/ia64/t-ia64: Likewise.
	* config/iq2000/iq2000.h (FUNCTION_MODE): Likewise.
	* config/iq2000/iq2000.md: Likewise.
	* config/linux.h (TARGET_HAS_BIONIC): Likewise.
	(if): Likewise.
	* config/m32c/m32c.cc (m32c_function_needs_enter): Likewise.
	* config/m32c/m32c.h (MAX_REGS_PER_ADDRESS): Likewise.
	* config/m32c/t-m32c: Likewise.
	* config/m32r/m32r-protos.h: Likewise.
	* config/m32r/m32r.cc (m32r_print_operand): Likewise.
	* config/m32r/m32r.h: Likewise.
	* config/m32r/m32r.md: Likewise.
	* config/m68k/m68k-isas.def: Likewise.
	* config/m68k/m68k-microarchs.def: Likewise.
	* config/m68k/m68k-protos.h (strict_low_part_peephole_ok): Likewise.
	(m68k_epilogue_uses): Likewise.
	* config/m68k/m68k.cc (m68k_call_tls_get_addr): Likewise.
	(m68k_sched_adjust_cost): Likewise.
	(m68k_sched_md_init): Likewise.
	* config/m68k/m68k.h (__transfer_from_trampoline): Likewise.
	(enum m68k_function_kind): Likewise.
	* config/m68k/m68k.md: Likewise.
	* config/m68k/m68kemb.h: Likewise.
	* config/m68k/uclinux.h (ENDFILE_SPEC): Likewise.
	* config/mcore/mcore-protos.h: Likewise.
	* config/mcore/mcore.cc (mcore_expand_insv): Likewise.
	(mcore_expand_prolog): Likewise.
	* config/mcore/mcore.h (TARGET_MCORE): Likewise.
	* config/mcore/mcore.md: Likewise.
	* config/microblaze/microblaze-protos.h: Likewise.
	* config/microblaze/microblaze.cc (microblaze_legitimate_pic_operand): Likewise.
	(microblaze_function_prologue): Likewise.
	(microblaze_function_epilogue): Likewise.
	(microblaze_select_section): Likewise.
	(microblaze_asm_output_mi_thunk): Likewise.
	(microblaze_eh_return): Likewise.
	* config/microblaze/microblaze.h: Likewise.
	* config/microblaze/microblaze.md: Likewise.
	* config/microblaze/t-microblaze: Likewise.
	* config/mips/driver-native.cc: Likewise.
	* config/mips/loongson2ef.md: Likewise.
	* config/mips/mips-protos.h (mips_expand_vec_cmp_expr): Likewise.
	* config/mips/mips.cc (mips_rtx_costs): Likewise.
	(mips_output_filename): Likewise.
	(mips_output_function_prologue): Likewise.
	(mips_output_function_epilogue): Likewise.
	(mips_output_mi_thunk): Likewise.
	* config/mips/mips.h: Likewise.
	* config/mips/mips.md: Likewise.
	* config/mips/t-mips: Likewise.
	* config/mips/x-native: Likewise.
	* config/mmix/mmix-protos.h: Likewise.
	* config/mmix/mmix.cc (mmix_option_override): Likewise.
	(mmix_dbx_register_number): Likewise.
	(mmix_expand_prologue): Likewise.
	* config/mmix/mmix.h: Likewise.
	* config/mmix/mmix.md: Likewise.
	* config/mmix/predicates.md: Likewise.
	* config/mn10300/mn10300.cc (mn10300_symbolic_operand): Likewise.
	(mn10300_legitimate_pic_operand_p): Likewise.
	* config/mn10300/mn10300.h (enum reg_class): Likewise.
	(NO_FUNCTION_CSE): Likewise.
	* config/moxie/moxie-protos.h: Likewise.
	* config/moxie/uclinux.h (TARGET_LIBC_HAS_FUNCTION): Likewise.
	* config/msp430/msp430-devices.cc (extract_devices_dir_from_exec_prefix): Likewise.
	* config/msp430/msp430.cc (msp430_gimplify_va_arg_expr): Likewise.
	(msp430_incoming_return_addr_rtx): Likewise.
	* config/msp430/msp430.h (msp430_get_linker_devices_include_path): Likewise.
	* config/msp430/t-msp430: Likewise.
	* config/nds32/nds32-cost.cc (nds32_rtx_costs_speed_prefer): Likewise.
	(nds32_rtx_costs_size_prefer): Likewise.
	(nds32_init_rtx_costs): Likewise.
	* config/nds32/nds32-doubleword.md: Likewise.
	* config/nds32/nds32.cc (nds32_memory_move_cost): Likewise.
	(nds32_builtin_decl): Likewise.
	* config/nds32/nds32.h (enum nds32_16bit_address_type): Likewise.
	(enum nds32_isr_nested_type): Likewise.
	(enum reg_class): Likewise.
	* config/nds32/predicates.md: Likewise.
	* config/nds32/t-nds32: Likewise.
	* config/nios2/nios2.cc (nios2_pragma_target_parse): Likewise.
	* config/nvptx/nvptx-protos.h: Likewise.
	* config/nvptx/nvptx.cc (nvptx_goacc_expand_var_decl): Likewise.
	* config/nvptx/nvptx.h (TARGET_CPU_CPP_BUILTINS): Likewise.
	* config/nvptx/t-nvptx: Likewise.
	* config/nvptx/t-omp-device: Likewise.
	* config/pa/elf.h: Likewise.
	* config/pa/pa-linux.h (GLOBAL_ASM_OP): Likewise.
	* config/pa/pa-netbsd.h (GLOBAL_ASM_OP): Likewise.
	* config/pa/pa-openbsd.h (TARGET_ASM_GLOBALIZE_LABEL): Likewise.
	* config/pa/pa-protos.h (pa_eh_return_handler_rtx): Likewise.
	(pa_legitimize_reload_address): Likewise.
	(pa_can_use_return_insn): Likewise.
	* config/pa/pa.cc (mem_shadd_or_shadd_rtx_p): Likewise.
	(som_output_text_section_asm_op): Likewise.
	* config/pa/pa.h (PROFILE_BEFORE_PROLOGUE): Likewise.
	* config/pa/pa.md: Likewise.
	* config/pa/som.h: Likewise.
	* config/pa/t-pa: Likewise.
	* config/pdp11/pdp11.cc (decode_pdp11_d): Likewise.
	* config/pdp11/pdp11.h: Likewise.
	* config/pdp11/pdp11.md: Likewise.
	* config/pdp11/t-pdp11: Likewise.
	* config/pru/pru.md: Likewise.
	* config/pru/t-pru: Likewise.
	* config/riscv/riscv-protos.h (NUM_SYMBOL_TYPES): Likewise.
	(riscv_gpr_save_operation_p): Likewise.
	(riscv_d_register_target_info): Likewise.
	(riscv_init_builtins): Likewise.
	* config/riscv/riscv.cc (riscv_output_mi_thunk): Likewise.
	* config/riscv/riscv.h (CSW_MAX_OFFSET): Likewise.
	* config/riscv/t-riscv: Likewise.
	* config/rl78/rl78.cc (rl78_asm_ctor_dtor): Likewise.
	* config/rl78/t-rl78: Likewise.
	* config/rs6000/aix.h: Likewise.
	* config/rs6000/aix71.h (ASM_SPEC_COMMON): Likewise.
	* config/rs6000/aix72.h (ASM_SPEC_COMMON): Likewise.
	* config/rs6000/aix73.h (ASM_SPEC_COMMON): Likewise.
	* config/rs6000/darwin.h (TARGET_ASM_GLOBALIZE_LABEL): Likewise.
	* config/rs6000/driver-rs6000.cc: Likewise.
	* config/rs6000/freebsd.h: Likewise.
	* config/rs6000/freebsd64.h: Likewise.
	* config/rs6000/lynx.h (ASM_OUTPUT_ALIGN): Likewise.
	* config/rs6000/rbtree.cc: Likewise.
	* config/rs6000/rbtree.h: Likewise.
	* config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Likewise.
	* config/rs6000/rs6000-call.cc (rs6000_invalid_builtin): Likewise.
	(rs6000_expand_builtin): Likewise.
	(rs6000_init_builtins): Likewise.
	* config/rs6000/rs6000-cpus.def: Likewise.
	* config/rs6000/rs6000-gen-builtins.cc (write_init_ovld_table): Likewise.
	* config/rs6000/rs6000-internal.h (ALTIVEC_REG_BIT): Likewise.
	(quad_address_offset_p): Likewise.
	* config/rs6000/rs6000-logue.cc (interesting_frame_related_regno): Likewise.
	(rs6000_emit_epilogue): Likewise.
	* config/rs6000/rs6000-overload.def: Likewise.
	* config/rs6000/rs6000-p8swap.cc: Likewise.
	* config/rs6000/rs6000-protos.h (GCC_RS6000_PROTOS_H): Likewise.
	(rs6000_const_f32_to_i32): Likewise.
	* config/rs6000/rs6000.cc (legitimate_lo_sum_address_p): Likewise.
	(rs6000_debug_legitimize_address): Likewise.
	(rs6000_mode_dependent_address): Likewise.
	(rs6000_adjust_priority): Likewise.
	(rs6000_c_mode_for_suffix): Likewise.
	* config/rs6000/rs6000.h (defined): Likewise.
	(LONG_DOUBLE_TYPE_SIZE): Likewise.
	* config/rs6000/rs6000.md: Likewise.
	* config/rs6000/sysv4.h: Likewise.
	* config/rs6000/t-linux: Likewise.
	* config/rs6000/t-linux64: Likewise.
	* config/rs6000/t-rs6000: Likewise.
	* config/rs6000/x-darwin: Likewise.
	* config/rs6000/x-darwin64: Likewise.
	* config/rs6000/x-rs6000: Likewise.
	* config/rs6000/xcoff.h (ASM_OUTPUT_LABELREF): Likewise.
	* config/rx/rx.cc (rx_expand_builtin): Likewise.
	* config/s390/constraints.md: Likewise.
	* config/s390/driver-native.cc: Likewise.
	* config/s390/htmxlintrin.h: Likewise.
	* config/s390/s390-builtins.def (B_DEF): Likewise.
	(OB_DEF_VAR): Likewise.
	* config/s390/s390-builtins.h: Likewise.
	* config/s390/s390-c.cc: Likewise.
	* config/s390/s390-opts.h: Likewise.
	* config/s390/s390-protos.h (s390_check_symref_alignment): Likewise.
	(s390_register_target_pragmas): Likewise.
	* config/s390/s390.cc (s390_init_builtins): Likewise.
	(s390_expand_plus_operand): Likewise.
	(s390_expand_atomic): Likewise.
	(s390_valid_target_attribute_inner_p): Likewise.
	* config/s390/s390.h (LONG_DOUBLE_TYPE_SIZE): Likewise.
	* config/s390/s390.md: Likewise.
	* config/s390/t-s390: Likewise.
	* config/s390/vx-builtins.md: Likewise.
	* config/s390/x-native: Likewise.
	* config/sh/divtab-sh4-300.cc (main): Likewise.
	* config/sh/divtab-sh4.cc (main): Likewise.
	* config/sh/divtab.cc (main): Likewise.
	* config/sh/elf.h: Likewise.
	* config/sh/sh-protos.h (sh_fsca_int2sf): Likewise.
	* config/sh/sh.cc (SYMBOL_FLAG_FUNCVEC_FUNCTION): Likewise.
	(sh_struct_value_rtx): Likewise.
	(sh_remove_reg_dead_or_unused_notes): Likewise.
	* config/sh/sh.h (MIN_UNITS_PER_WORD): Likewise.
	* config/sh/t-sh: Likewise.
	* config/sol2-protos.h (solaris_override_options): Likewise.
	* config/sol2.h: Likewise.
	* config/sparc/driver-sparc.cc: Likewise.
	* config/sparc/freebsd.h: Likewise.
	* config/sparc/sparc-protos.h (make_pass_work_around_errata): Likewise.
	* config/sparc/sparc.cc (sparc_output_mi_thunk): Likewise.
	(sparc_asan_shadow_offset): Likewise.
	* config/sparc/sparc.h: Likewise.
	* config/sparc/sparc.md: Likewise.
	* config/sparc/t-sparc: Likewise.
	* config/sparc/x-sparc: Likewise.
	* config/stormy16/stormy16.cc (xstormy16_mode_dependent_address_p): Likewise.
	* config/t-darwin: Likewise.
	* config/t-dragonfly: Likewise.
	* config/t-freebsd: Likewise.
	* config/t-glibc: Likewise.
	* config/t-linux: Likewise.
	* config/t-netbsd: Likewise.
	* config/t-openbsd: Likewise.
	* config/t-pnt16-warn: Likewise.
	* config/t-sol2: Likewise.
	* config/t-vxworks: Likewise.
	* config/t-winnt: Likewise.
	* config/tilegx/t-tilegx: Likewise.
	* config/tilegx/tilegx-c.cc: Likewise.
	* config/tilegx/tilegx-protos.h (tilegx_function_profiler): Likewise.
	* config/tilegx/tilegx.md: Likewise.
	* config/tilepro/t-tilepro: Likewise.
	* config/tilepro/tilepro-c.cc: Likewise.
	* config/v850/t-v850: Likewise.
	* config/v850/v850-protos.h: Likewise.
	* config/v850/v850.cc (F): Likewise.
	* config/v850/v850.h (enum reg_class): Likewise.
	(SLOW_BYTE_ACCESS): Likewise.
	* config/vax/vax.cc (vax_mode_dependent_address_p): Likewise.
	* config/vax/vax.h (enum reg_class): Likewise.
	* config/vax/vax.md: Likewise.
	* config/visium/visium.cc (visium_legitimate_address_p): Likewise.
	* config/visium/visium.h: Likewise.
	* config/vms/t-vms: Likewise.
	* config/vms/vms-crtlmap.map: Likewise.
	* config/vms/vms-protos.h (vms_c_get_vms_ver): Likewise.
	* config/vx-common.h: Likewise.
	* config/x-darwin: Likewise.
	* config/x-hpux: Likewise.
	* config/x-linux: Likewise.
	* config/x-netbsd: Likewise.
	* config/x-openbsd: Likewise.
	* config/x-solaris: Likewise.
	* config/xtensa/xtensa-protos.h (xtensa_mem_offset): Likewise.
	* config/xtensa/xtensa.cc (xtensa_option_override): Likewise.
	* config/xtensa/xtensa.h: Likewise.
	* configure.ac: Likewise.
	* context.cc: Likewise.
	* convert.h: Likewise.
	* coretypes.h: Likewise.
	* coverage.cc: Likewise.
	* coverage.h: Likewise.
	* cppdefault.h (struct default_include): Likewise.
	* cprop.cc (local_cprop_pass): Likewise.
	(one_cprop_pass): Likewise.
	* cse.cc (hash_rtx_cb): Likewise.
	(fold_rtx): Likewise.
	* ctfc.h (ctfc_get_num_vlen_bytes): Likewise.
	* data-streamer.h (bp_unpack_var_len_int): Likewise.
	(streamer_write_widest_int): Likewise.
	* dbgcnt.def: Likewise.
	* dbxout.cc (dbxout_early_global_decl): Likewise.
	(dbxout_common_check): Likewise.
	* dbxout.h: Likewise.
	* debug.h (struct gcc_debug_hooks): Likewise.
	(dump_go_spec_init): Likewise.
	* df-core.cc: Likewise.
	* df-scan.cc (df_insn_info_delete): Likewise.
	(df_insn_delete): Likewise.
	* df.h (debug_df_chain): Likewise.
	(can_move_insns_across): Likewise.
	* dfp.cc (decimal_from_binary): Likewise.
	* diagnostic-color.cc: Likewise.
	* diagnostic-event-id.h: Likewise.
	* diagnostic-show-locus.cc (test_one_liner_labels): Likewise.
	* diagnostic.cc (bt_callback): Likewise.
	(num_digits): Likewise.
	* doc/avr-mmcu.texi: Likewise.
	* doc/cfg.texi: Likewise.
	* doc/contrib.texi: Likewise.
	* doc/cppinternals.texi: Likewise.
	* doc/extend.texi: Likewise.
	* doc/generic.texi: Likewise.
	* doc/gimple.texi: Likewise.
	* doc/gty.texi: Likewise.
	* doc/invoke.texi: Likewise.
	* doc/loop.texi: Likewise.
	* doc/lto.texi: Likewise.
	* doc/match-and-simplify.texi: Likewise.
	* doc/md.texi: Likewise.
	* doc/optinfo.texi: Likewise.
	* doc/options.texi: Likewise.
	* doc/passes.texi: Likewise.
	* doc/plugins.texi: Likewise.
	* doc/rtl.texi: Likewise.
	* doc/sourcebuild.texi: Likewise.
	* doc/tm.texi: Likewise.
	* doc/tm.texi.in: Likewise.
	* doc/tree-ssa.texi: Likewise.
	* dojump.cc (do_jump): Likewise.
	* dojump.h: Likewise.
	* dumpfile.cc (test_impl_location): Likewise.
	(test_capture_of_dump_calls): Likewise.
	* dumpfile.h (enum dump_kind): Likewise.
	(class dump_location_t): Likewise.
	(dump_enabled_p): Likewise.
	(enable_rtl_dump_file): Likewise.
	(dump_combine_total_stats): Likewise.
	* dwarf2asm.cc (dw2_asm_output_delta_uleb128): Likewise.
	* dwarf2ctf.h (ctf_debug_finish): Likewise.
	* dwarf2out.cc (dwarf2out_begin_prologue): Likewise.
	(struct loc_descr_context): Likewise.
	(rtl_for_decl_location): Likewise.
	(gen_subprogram_die): Likewise.
	(gen_label_die): Likewise.
	(is_trivial_indirect_ref): Likewise.
	(dwarf2out_late_global_decl): Likewise.
	(dwarf_file_hasher::hash): Likewise.
	(dwarf2out_end_source_file): Likewise.
	(dwarf2out_define): Likewise.
	(dwarf2out_early_finish): Likewise.
	* dwarf2out.h (struct dw_fde_node): Likewise.
	(struct dw_discr_list_node): Likewise.
	(output_loc_sequence_raw): Likewise.
	* emit-rtl.cc (gen_raw_REG): Likewise.
	(maybe_set_max_label_num): Likewise.
	* emit-rtl.h (struct rtl_data): Likewise.
	* errors.cc (internal_error): Likewise.
	(trim_filename): Likewise.
	* et-forest.cc: Likewise.
	* except.cc (init_eh_for_function): Likewise.
	* explow.cc (promote_ssa_mode): Likewise.
	(get_dynamic_stack_size): Likewise.
	* explow.h: Likewise.
	* expmed.h: Likewise.
	* expr.cc (safe_from_p): Likewise.
	(expand_expr_real_2): Likewise.
	(expand_expr_real_1): Likewise.
	* file-prefix-map.cc (remap_filename): Likewise.
	* final.cc (app_enable): Likewise.
	(make_pass_compute_alignments): Likewise.
	(final_scan_insn_1): Likewise.
	(final_scan_insn): Likewise.
	* fixed-value.h (fixed_from_string): Likewise.
	* flag-types.h (NO_DEBUG): Likewise.
	(DWARF2_DEBUG): Likewise.
	(VMS_DEBUG): Likewise.
	(BTF_DEBUG): Likewise.
	(enum ctf_debug_info_levels): Likewise.
	* fold-const.cc (const_binop): Likewise.
	(fold_binary_loc): Likewise.
	(fold_checksum_tree): Likewise.
	* fp-test.cc: Likewise.
	* function.cc (expand_function_end): Likewise.
	* function.h (struct function): Likewise.
	* fwprop.cc (should_replace_address): Likewise.
	* gcc-main.cc: Likewise.
	* gcc-rich-location.h (class gcc_rich_location): Likewise.
	* gcc-symtab.h: Likewise.
	* gcc.cc (MIN_FATAL_STATUS): Likewise.
	(driver_handle_option): Likewise.
	(quote_spec_arg): Likewise.
	(driver::finalize): Likewise.
	* gcc.h (set_input): Likewise.
	* gcov-dump.cc: Likewise.
	* gcov.cc (solve_flow_graph): Likewise.
	* gcse-common.cc: Likewise.
	* gcse.cc (make_pass_rtl_hoist): Likewise.
	* genattr-common.cc: Likewise.
	* genattrtab.cc (min_fn): Likewise.
	(write_const_num_delay_slots): Likewise.
	* genautomata.cc: Likewise.
	* genconditions.cc (write_one_condition): Likewise.
	* genconstants.cc: Likewise.
	* genemit.cc (gen_exp): Likewise.
	* generic-match-head.cc: Likewise.
	* genextract.cc: Likewise.
	* gengenrtl.cc (always_void_p): Likewise.
	* gengtype-parse.cc (gtymarker_opt): Likewise.
	* gengtype-state.cc (state_writer::state_writer): Likewise.
	(write_state_trailer): Likewise.
	(equals_type_number): Likewise.
	(read_state): Likewise.
	* gengtype.cc (open_base_files): Likewise.
	(struct file_rule_st): Likewise.
	(header_dot_h_frul): Likewise.
	* gengtype.h: Likewise.
	* genmatch.cc (main): Likewise.
	* genmddeps.cc: Likewise.
	* genmodes.cc (emit_mode_inner): Likewise.
	(emit_mode_unit_size): Likewise.
	* genpeep.cc (gen_peephole): Likewise.
	* genpreds.cc (write_tm_preds_h): Likewise.
	* genrecog.cc (validate_pattern): Likewise.
	(write_header): Likewise.
	(main): Likewise.
	* gensupport.cc (change_subst_attribute): Likewise.
	(traverse_c_tests): Likewise.
	(add_predicate): Likewise.
	(init_predicate_table): Likewise.
	* gensupport.h (struct optab_pattern): Likewise.
	(get_num_insn_codes): Likewise.
	(maybe_eval_c_test): Likewise.
	(struct pred_data): Likewise.
	* ggc-internal.h: Likewise.
	* gimple-fold.cc (maybe_fold_reference): Likewise.
	(get_range_strlen_tree): Likewise.
	* gimple-fold.h (gimple_stmt_integer_valued_real_p): Likewise.
	* gimple-low.cc: Likewise.
	* gimple-match-head.cc (directly_supported_p): Likewise.
	* gimple-pretty-print.h: Likewise.
	* gimple-ssa-sprintf.cc (format_percent): Likewise.
	(adjust_range_for_overflow): Likewise.
	* gimple-streamer.h: Likewise.
	* gimple.h (struct GTY): Likewise.
	(is_gimple_resx): Likewise.
	* gimplify.cc (gimplify_expr): Likewise.
	(gimplify_init_constructor): Likewise.
	(omp_construct_selector_matches): Likewise.
	(gimplify_omp_target_update): Likewise.
	(gimplify_omp_ordered): Likewise.
	(gimplify_va_arg_expr): Likewise.
	* graphite-isl-ast-to-gimple.cc (should_copy_to_new_region): Likewise.
	* haifa-sched.cc (increase_insn_priority): Likewise.
	(try_ready): Likewise.
	(sched_create_recovery_edges): Likewise.
	* ifcvt.cc (find_if_case_1): Likewise.
	(find_if_case_2): Likewise.
	* inchash.h: Likewise.
	* incpath.cc (add_env_var_paths): Likewise.
	* input.cc (dump_location_info): Likewise.
	(assert_loceq): Likewise.
	(test_lexer_string_locations_concatenation_1): Likewise.
	(test_lexer_string_locations_concatenation_2): Likewise.
	(test_lexer_string_locations_concatenation_3): Likewise.
	* input.h (BUILTINS_LOCATION): Likewise.
	(class string_concat_db): Likewise.
	* internal-fn.cc (expand_MUL_OVERFLOW): Likewise.
	(expand_LOOP_VECTORIZED): Likewise.
	* ipa-cp.cc (make_pass_ipa_cp): Likewise.
	* ipa-fnsummary.cc (remap_freqcounting_preds_after_dup): Likewise.
	(ipa_fn_summary_t::duplicate): Likewise.
	(make_pass_ipa_fn_summary): Likewise.
	* ipa-fnsummary.h (enum ipa_hints_vals): Likewise.
	* ipa-free-lang-data.cc (fld_simplified_type): Likewise.
	(free_lang_data_in_decl): Likewise.
	* ipa-inline.cc (compute_inlined_call_time): Likewise.
	(inline_always_inline_functions): Likewise.
	* ipa-inline.h (free_growth_caches): Likewise.
	(inline_account_function_p): Likewise.
	* ipa-modref.cc (modref_access_analysis::analyze_stmt): Likewise.
	(modref_eaf_analysis::analyze_ssa_name): Likewise.
	* ipa-param-manipulation.cc (ipa_param_body_adjustments::mark_dead_statements): Likewise.
	(ipa_param_body_adjustments::remap_with_debug_expressions): Likewise.
	* ipa-prop.cc (ipa_set_node_agg_value_chain): Likewise.
	* ipa-prop.h (IPA_UNDESCRIBED_USE): Likewise.
	(unadjusted_ptr_and_unit_offset): Likewise.
	* ipa-reference.cc (make_pass_ipa_reference): Likewise.
	* ipa-reference.h (GCC_IPA_REFERENCE_H): Likewise.
	* ipa-split.cc (consider_split): Likewise.
	* ipa-sra.cc (isra_read_node_info): Likewise.
	* ipa-utils.h (struct ipa_dfs_info): Likewise.
	(recursive_call_p): Likewise.
	(ipa_make_function_pure): Likewise.
	* ira-build.cc (ira_create_allocno): Likewise.
	(ira_flattening): Likewise.
	* ira-color.cc (do_coloring): Likewise.
	(update_curr_costs): Likewise.
	* ira-conflicts.cc (process_regs_for_copy): Likewise.
	* ira-int.h (struct ira_emit_data): Likewise.
	(ira_prohibited_mode_move_regs): Likewise.
	(ira_get_dup_out_num): Likewise.
	(ira_destroy): Likewise.
	(ira_tune_allocno_costs): Likewise.
	(ira_implicitly_set_insn_hard_regs): Likewise.
	(ira_build_conflicts): Likewise.
	(ira_color): Likewise.
	* ira-lives.cc (process_bb_node_lives): Likewise.
	* ira.cc (class ira_spilled_reg_stack_slot): Likewise.
	(setup_uniform_class_p): Likewise.
	(def_dominates_uses): Likewise.
	* ira.h (ira_nullify_asm_goto): Likewise.
	* langhooks.cc (lhd_post_options): Likewise.
	* langhooks.h (class substring_loc): Likewise.
	(struct lang_hooks_for_tree_inlining): Likewise.
	(struct lang_hooks_for_types): Likewise.
	(struct lang_hooks): Likewise.
	* libfuncs.h (synchronize_libfunc): Likewise.
	* loop-doloop.cc (doloop_condition_get): Likewise.
	* loop-init.cc (fix_loop_structure): Likewise.
	* loop-invariant.cc: Likewise.
	* lower-subreg.h: Likewise.
	* lra-constraints.cc (curr_insn_transform): Likewise.
	* lra-int.h (struct lra_insn_reg): Likewise.
	(lra_undo_inheritance): Likewise.
	(lra_setup_reload_pseudo_preferenced_hard_reg): Likewise.
	(lra_split_hard_reg_for): Likewise.
	(lra_coalesce): Likewise.
	(lra_final_code_change): Likewise.
	* lra-spills.cc (lra_final_code_change): Likewise.
	* lra.cc (lra_process_new_insns): Likewise.
	* lto-compress.h (struct lto_compression_stream): Likewise.
	* lto-streamer-out.cc (DFS::DFS_write_tree_body): Likewise.
	(write_symbol): Likewise.
	* lto-streamer.h (enum LTO_tags): Likewise.
	(lto_value_range_error): Likewise.
	(lto_append_block): Likewise.
	(lto_streamer_hooks_init): Likewise.
	(stream_read_tree_ref): Likewise.
	(lto_prepare_function_for_streaming): Likewise.
	(select_what_to_stream): Likewise.
	(omp_lto_input_declare_variant_alt): Likewise.
	(cl_optimization_stream_in): Likewise.
	* lto-wrapper.cc (append_compiler_options): Likewise.
	* machmode.def: Likewise.
	* machmode.h (struct int_n_data_t): Likewise.
	* main.cc (main): Likewise.
	* match.pd: Likewise.
	* omp-builtins.def (BUILT_IN_GOMP_CRITICAL_NAME_END): Likewise.
	(BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): Likewise.
	* omp-expand.cc (expand_omp_atomic_fetch_op): Likewise.
	(make_pass_expand_omp_ssa): Likewise.
	* omp-low.cc (struct omp_context): Likewise.
	(struct omp_taskcopy_context): Likewise.
	(lower_omp): Likewise.
	* omp-oacc-neuter-broadcast.cc (omp_sese_active_worker_call): Likewise.
	(mask_name): Likewise.
	(omp_sese_dump_pars): Likewise.
	(worker_single_simple): Likewise.
	* omp-offload.cc (omp_finish_file): Likewise.
	(execute_oacc_loop_designation): Likewise.
	* optabs-query.cc (lshift_cheap_p): Likewise.
	* optc-gen.awk: Likewise.
	* optc-save-gen.awk: Likewise.
	* optinfo-emit-json.cc (optrecord_json_writer::optrecord_json_writer): Likewise.
	* opts-common.cc: Likewise.
	* output.h (app_enable): Likewise.
	(output_operand_lossage): Likewise.
	(insn_current_reference_address): Likewise.
	(get_insn_template): Likewise.
	(output_quoted_string): Likewise.
	* pass_manager.h (struct register_pass_info): Likewise.
	* plugin.cc: Likewise.
	* plugin.def (PLUGIN_ANALYZER_INIT): Likewise.
	* plugin.h (invoke_plugin_callbacks): Likewise.
	* pointer-query.cc (handle_mem_ref): Likewise.
	* postreload-gcse.cc (alloc_mem): Likewise.
	* predict.h (enum prediction): Likewise.
	(add_reg_br_prob_note): Likewise.
	* prefix.h: Likewise.
	* profile.h (get_working_sets): Likewise.
	* read-md.cc: Likewise.
	* read-md.h (struct mapping): Likewise.
	(class md_reader): Likewise.
	(class noop_reader): Likewise.
	* read-rtl-function.cc (function_reader::create_function): Likewise.
	(function_reader::extra_parsing_for_operand_code_0): Likewise.
	* read-rtl.cc (initialize_iterators): Likewise.
	* real.cc: Likewise.
	* real.h (struct real_value): Likewise.
	(format_helper::format_helper): Likewise.
	(real_hash): Likewise.
	(real_can_shorten_arithmetic): Likewise.
	* recog.cc (struct target_recog): Likewise.
	(offsettable_nonstrict_memref_p): Likewise.
	(constrain_operands): Likewise.
	* recog.h (MAX_RECOG_ALTERNATIVES): Likewise.
	(which_op_alt): Likewise.
	(struct insn_gen_fn): Likewise.
	* reg-notes.def (REG_NOTE): Likewise.
	* reg-stack.cc: Likewise.
	* regs.h (reg_is_parm_p): Likewise.
	* regset.h: Likewise.
	* reload.cc (push_reload): Likewise.
	(find_reloads): Likewise.
	(find_reloads_address_1): Likewise.
	(find_replacement): Likewise.
	(refers_to_regno_for_reload_p): Likewise.
	(refers_to_mem_for_reload_p): Likewise.
	* reload.h (push_reload): Likewise.
	(deallocate_reload_reg): Likewise.
	* reload1.cc (emit_input_reload_insns): Likewise.
	* reorg.cc (relax_delay_slots): Likewise.
	* rtl.def (UNKNOWN): Likewise.
	(SEQUENCE): Likewise.
	(BARRIER): Likewise.
	(ASM_OPERANDS): Likewise.
	(EQ_ATTR_ALT): Likewise.
	* rtl.h (struct GTY): Likewise.
	(LABEL_NAME): Likewise.
	(LABEL_ALT_ENTRY_P): Likewise.
	(SUBREG_BYTE): Likewise.
	(get_stack_check_protect): Likewise.
	(dump_rtx_statistics): Likewise.
	(unwrap_const_vec_duplicate): Likewise.
	(subreg_promoted_mode): Likewise.
	(gen_lowpart_common): Likewise.
	(operand_subword): Likewise.
	(immed_wide_int_const): Likewise.
	(decide_function_section): Likewise.
	(active_insn_p): Likewise.
	(delete_related_insns): Likewise.
	(try_split): Likewise.
	(val_signbit_known_clear_p): Likewise.
	(simplifiable_subregs): Likewise.
	(set_insn_deleted): Likewise.
	(subreg_get_info): Likewise.
	(remove_free_EXPR_LIST_node): Likewise.
	(finish_subregs_of_mode): Likewise.
	(get_mem_attrs): Likewise.
	(lookup_constant_def): Likewise.
	(rtx_to_tree_code): Likewise.
	(hash_rtx): Likewise.
	(condjump_in_parallel_p): Likewise.
	(validate_subreg): Likewise.
	(make_compound_operation): Likewise.
	(schedule_ebbs): Likewise.
	(print_inline_rtx): Likewise.
	(fixup_args_size_notes): Likewise.
	(expand_dec): Likewise.
	(prepare_copy_insn): Likewise.
	(mark_elimination): Likewise.
	(valid_mode_changes_for_regno): Likewise.
	(make_debug_expr_from_rtl): Likewise.
	(delete_vta_debug_insns): Likewise.
	(simplify_using_condition): Likewise.
	(set_insn_locations): Likewise.
	(fatal_insn_not_found): Likewise.
	(word_register_operation_p): Likewise.
	* rtlanal.cc (get_call_fndecl): Likewise.
	(side_effects_p): Likewise.
	(subreg_nregs): Likewise.
	(rtx_cost): Likewise.
	(canonicalize_condition): Likewise.
	* rtlanal.h (rtx_properties::try_to_add_note): Likewise.
	* run-rtl-passes.cc (run_rtl_passes): Likewise.
	* sanitizer.def (BUILT_IN_ASAN_VERSION_MISMATCH_CHECK): Likewise.
	* sched-deps.cc (add_dependence_1): Likewise.
	* sched-ebb.cc (begin_move_insn): Likewise.
	(add_deps_for_risky_insns): Likewise.
	(advance_target_bb): Likewise.
	* sched-int.h (reemit_notes): Likewise.
	(struct _haifa_insn_data): Likewise.
	(HID): Likewise.
	(DEP_CANCELLED): Likewise.
	(debug_ds): Likewise.
	(number_in_ready): Likewise.
	(schedule_ebbs_finish): Likewise.
	(find_modifiable_mems): Likewise.
	* sched-rgn.cc (debug_rgn_dependencies): Likewise.
	* sel-sched-dump.cc (dump_lv_set): Likewise.
	* sel-sched-dump.h: Likewise.
	* sel-sched-ir.cc (sel_insn_rtx_cost): Likewise.
	(setup_id_reg_sets): Likewise.
	(has_dependence_p): Likewise.
	(sel_num_cfg_preds_gt_1): Likewise.
	(bb_ends_ebb_p): Likewise.
	* sel-sched-ir.h (struct _list_node): Likewise.
	(struct idata_def): Likewise.
	(bb_next_bb): Likewise.
	* sel-sched.cc (vinsn_writes_one_of_regs_p): Likewise.
	(choose_best_pseudo_reg): Likewise.
	(verify_target_availability): Likewise.
	(can_speculate_dep_p): Likewise.
	(sel_rank_for_schedule): Likewise.
	* selftest-run-tests.cc (selftest::run_tests): Likewise.
	* selftest.h (class auto_fix_quotes): Likewise.
	* shrink-wrap.cc (handle_simple_exit): Likewise.
	* shrink-wrap.h: Likewise.
	* simplify-rtx.cc (simplify_context::simplify_associative_operation): Likewise.
	(simplify_context::simplify_gen_vec_select): Likewise.
	* spellcheck-tree.h: Likewise.
	* spellcheck.h: Likewise.
	* statistics.h (struct function): Likewise.
	* stmt.cc (conditional_probability): Likewise.
	* stmt.h: Likewise.
	* stor-layout.h: Likewise.
	* streamer-hooks.h: Likewise.
	* stringpool.h: Likewise.
	* symtab.cc (symbol_table::change_decl_assembler_name): Likewise.
	* target.def (HOOK_VECTOR_END): Likewise.
	(type.): Likewise.
	* target.h (union cumulative_args_t): Likewise.
	(by_pieces_ninsns): Likewise.
	(class predefined_function_abi): Likewise.
	* targhooks.cc (default_translate_mode_attribute): Likewise.
	* timevar.def: Likewise.
	* timevar.h (class timer): Likewise.
	* toplev.h (enable_rtl_dump_file): Likewise.
	* trans-mem.cc (collect_bb2reg): Likewise.
	* tree-call-cdce.cc (gen_conditions_for_pow): Likewise.
	* tree-cfg.cc (remove_bb): Likewise.
	(verify_gimple_debug): Likewise.
	(remove_edge_and_dominated_blocks): Likewise.
	(push_fndecl): Likewise.
	* tree-cfgcleanup.h (GCC_TREE_CFGCLEANUP_H): Likewise.
	* tree-complex.cc (expand_complex_multiplication): Likewise.
	(expand_complex_div_straight): Likewise.
	* tree-core.h (enum tree_index): Likewise.
	(enum operand_equal_flag): Likewise.
	* tree-eh.cc (honor_protect_cleanup_actions): Likewise.
	* tree-if-conv.cc (if_convertible_gimple_assign_stmt_p): Likewise.
	* tree-inline.cc (initialize_inlined_parameters): Likewise.
	* tree-inline.h (force_value_to_type): Likewise.
	* tree-nested.cc (get_chain_decl): Likewise.
	(walk_all_functions): Likewise.
	* tree-object-size.h: Likewise.
	* tree-outof-ssa.cc: Likewise.
	* tree-parloops.cc (create_parallel_loop): Likewise.
	* tree-pretty-print.cc (print_generic_expr_to_str): Likewise.
	(dump_generic_node): Likewise.
	* tree-profile.cc (tree_profiling): Likewise.
	* tree-sra.cc (maybe_add_sra_candidate): Likewise.
	* tree-ssa-address.cc: Likewise.
	* tree-ssa-alias.cc: Likewise.
	* tree-ssa-alias.h (ao_ref::max_size_known_p): Likewise.
	(dump_alias_stats): Likewise.
	* tree-ssa-ccp.cc: Likewise.
	* tree-ssa-coalesce.h: Likewise.
	* tree-ssa-live.cc (remove_unused_scope_block_p): Likewise.
	* tree-ssa-loop-manip.cc (copy_phi_node_args): Likewise.
	* tree-ssa-loop-unswitch.cc: Likewise.
	* tree-ssa-math-opts.cc: Likewise.
	* tree-ssa-operands.cc (class operands_scanner): Likewise.
	* tree-ssa-pre.cc: Likewise.
	* tree-ssa-reassoc.cc (optimize_ops_list): Likewise.
	(debug_range_entry): Likewise.
	* tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt): Likewise.
	* tree-ssa-sccvn.h (TREE_SSA_SCCVN_H): Likewise.
	* tree-ssa-scopedtables.cc (add_expr_commutative): Likewise.
	(equal_mem_array_ref_p): Likewise.
	* tree-ssa-strlen.cc (is_strlen_related_p): Likewise.
	* tree-ssa-strlen.h (get_range_strlen_dynamic): Likewise.
	* tree-ssa-tail-merge.cc (stmt_local_def): Likewise.
	* tree-ssa-ter.h: Likewise.
	* tree-ssa-threadupdate.h (enum bb_dom_status): Likewise.
	* tree-streamer-in.cc (lto_input_ts_block_tree_pointers): Likewise.
	* tree-streamer-out.cc (pack_ts_block_value_fields): Likewise.
	(write_ts_block_tree_pointers): Likewise.
	* tree-streamer.h (struct streamer_tree_cache_d): Likewise.
	(streamer_read_tree_bitfields): Likewise.
	(streamer_write_integer_cst): Likewise.
	* tree-vect-patterns.cc (apply_binop_and_append_stmt): Likewise.
	(vect_synth_mult_by_constant): Likewise.
	* tree-vect-stmts.cc (vectorizable_operation): Likewise.
	* tree-vectorizer.cc: Likewise.
	* tree-vectorizer.h (class auto_purge_vect_location): Likewise.
	(vect_update_inits_of_drs): Likewise.
	(vect_get_mask_type_for_stmt): Likewise.
	(vect_rgroup_iv_might_wrap_p): Likewise.
	(cse_and_gimplify_to_preheader): Likewise.
	(vect_free_slp_tree): Likewise.
	(vect_pattern_recog): Likewise.
	(vect_stmt_dominates_stmt_p): Likewise.
	* tree.cc (initialize_tree_contains_struct): Likewise.
	(need_assembler_name_p): Likewise.
	(type_with_interoperable_signedness): Likewise.
	* tree.def (SWITCH_EXPR): Likewise.
	* tree.h (TYPE_SYMTAB_ADDRESS): Likewise.
	(poly_int_tree_p): Likewise.
	(inlined_function_outer_scope_p): Likewise.
	(tree_code_for_canonical_type_merging): Likewise.
	* value-prof.cc: Likewise.
	* value-prof.h (get_nth_most_common_value): Likewise.
	(find_func_by_profile_id): Likewise.
	* value-range.cc (vrp_operand_equal_p): Likewise.
	* value-range.h: Likewise.
	* var-tracking.cc: Likewise.
	* varasm.cc (default_function_section): Likewise.
	(function_section_1): Likewise.
	(assemble_variable): Likewise.
	(handle_vtv_comdat_section): Likewise.
	* vec.h (struct vec_prefix): Likewise.
	* vmsdbgout.cc (full_name): Likewise.
	* vtable-verify.cc: Likewise.
	* vtable-verify.h (struct vtv_graph_node): Likewise.
	* xcoffout.cc: Likewise.
	* xcoffout.h (DEBUG_SYMS_TEXT): Likewise.

gcc/ada/ChangeLog:

	* Make-generated.in: Rename .c names to .cc.
	* adaint.c: Likewise.
	* ctrl_c.c (dummy_handler): Likewise.
	* gcc-interface/Makefile.in: Likewise.
	* gcc-interface/config-lang.in: Likewise.
	* gcc-interface/decl.cc (concat_name): Likewise.
	(init_gnat_decl): Likewise.
	* gcc-interface/gigi.h (concat_name): Likewise.
	(init_gnat_utils): Likewise.
	(build_call_raise_range): Likewise.
	(gnat_mark_addressable): Likewise.
	(gnat_protect_expr): Likewise.
	(gnat_rewrite_reference): Likewise.
	* gcc-interface/lang-specs.h (ADA_DUMPS_OPTIONS): Likewise.
	* gcc-interface/utils.cc (GTY): Likewise.
	(add_deferred_type_context): Likewise.
	(init_gnat_utils): Likewise.
	* gcc-interface/utils2.cc (gnat_stable_expr_p): Likewise.
	(gnat_protect_expr): Likewise.
	(gnat_stabilize_reference_1): Likewise.
	(gnat_rewrite_reference): Likewise.
	* gsocket.h: Likewise.
	* init.cc (__gnat_error_handler): Likewise.
	* libgnarl/s-intman.ads: Likewise.
	* libgnarl/s-osinte__android.ads: Likewise.
	* libgnarl/s-osinte__darwin.ads: Likewise.
	* libgnarl/s-osinte__hpux.ads: Likewise.
	* libgnarl/s-osinte__linux.ads: Likewise.
	* libgnarl/s-osinte__qnx.ads: Likewise.
	* libgnarl/s-taskin.ads: Likewise.
	* rtfinal.cc: Likewise.
	* s-oscons-tmplt.c (CND): Likewise.
	* set_targ.ads: Likewise.

gcc/analyzer/ChangeLog:

	* analyzer.cc (is_special_named_call_p): Rename .c names to .cc.
	(is_named_call_p): Likewise.
	* region-model-asm.cc (deterministic_p): Likewise.
	* region.cc (field_region::get_relative_concrete_offset): Likewise.
	* sm-malloc.cc (method_p): Likewise.
	* supergraph.cc (superedge::dump_dot): Likewise.

gcc/c-family/ChangeLog:

	* c-ada-spec.cc: Rename .c names to .cc.
	* c-ada-spec.h: Likewise.
	* c-common.cc (c_build_vec_convert): Likewise.
	(warning_candidate_p): Likewise.
	* c-common.h (enum rid): Likewise.
	(build_real_imag_expr): Likewise.
	(finish_label_address_expr): Likewise.
	(c_get_substring_location): Likewise.
	(c_build_bind_expr): Likewise.
	(conflict_marker_get_final_tok_kind): Likewise.
	(c_parse_error): Likewise.
	(check_missing_format_attribute): Likewise.
	(invalid_array_size_error): Likewise.
	(warn_for_multistatement_macros): Likewise.
	(build_attr_access_from_parms): Likewise.
	* c-cppbuiltin.cc (c_cpp_builtins): Likewise.
	* c-format.cc: Likewise.
	* c-gimplify.cc (c_gimplify_expr): Likewise.
	* c-indentation.h: Likewise.
	* c-objc.h (objc_prop_attr_kind_for_rid): Likewise.
	* c-omp.cc (c_omp_predetermined_mapping): Likewise.
	* c-opts.cc (c_common_post_options): Likewise.
	(set_std_cxx23): Likewise.
	* c-pragma.cc (handle_pragma_redefine_extname): Likewise.
	* c-pretty-print.h: Likewise.

gcc/c/ChangeLog:

	* Make-lang.in: Rename .c names to .cc.
	* c-convert.cc: Likewise.
	* c-decl.cc (struct lang_identifier): Likewise.
	(pop_scope): Likewise.
	(finish_decl): Likewise.
	* c-objc-common.h (GCC_C_OBJC_COMMON): Likewise.
	* c-parser.cc (c_parser_skip_to_end_of_block_or_statement): Likewise.
	* c-parser.h (GCC_C_PARSER_H): Likewise.
	* c-tree.h (c_keyword_starts_typename): Likewise.
	(finish_declspecs): Likewise.
	(c_get_alias_set): Likewise.
	(enum c_oracle_request): Likewise.
	(tag_exists_p): Likewise.
	(set_c_expr_source_range): Likewise.
	* c-typeck.cc (c_common_type): Likewise.
	(c_finish_omp_clauses): Likewise.
	* config-lang.in: Likewise.

gcc/cp/ChangeLog:

	* Make-lang.in: Rename .c names to .cc.
	* config-lang.in: Likewise.
	* constexpr.cc (cxx_eval_constant_expression): Likewise.
	* coroutines.cc (morph_fn_to_coro): Likewise.
	* cp-gimplify.cc (cp_gimplify_expr): Likewise.
	* cp-lang.cc (struct lang_hooks): Likewise.
	(get_template_argument_pack_elems_folded): Likewise.
	* cp-objcp-common.cc (cp_tree_size): Likewise.
	(cp_unit_size_without_reusable_padding): Likewise.
	(pop_file_scope): Likewise.
	(cp_pushdecl): Likewise.
	* cp-objcp-common.h (GCC_CP_OBJCP_COMMON): Likewise.
	(cxx_simulate_record_decl): Likewise.
	* cp-tree.h (struct named_label_entry): Likewise.
	(current_function_return_value): Likewise.
	(more_aggr_init_expr_args_p): Likewise.
	(get_function_version_dispatcher): Likewise.
	(common_enclosing_class): Likewise.
	(strip_fnptr_conv): Likewise.
	(current_decl_namespace): Likewise.
	(do_aggregate_paren_init): Likewise.
	(cp_check_const_attributes): Likewise.
	(qualified_name_lookup_error): Likewise.
	(generic_targs_for): Likewise.
	(mark_exp_read): Likewise.
	(is_global_friend): Likewise.
	(maybe_reject_flexarray_init): Likewise.
	(module_token_lang): Likewise.
	(handle_module_option): Likewise.
	(literal_integer_zerop): Likewise.
	(build_extra_args): Likewise.
	(build_if_nonnull): Likewise.
	(maybe_check_overriding_exception_spec): Likewise.
	(finish_omp_target_clauses): Likewise.
	(maybe_warn_zero_as_null_pointer_constant): Likewise.
	(cxx_print_error_function): Likewise.
	(decl_in_std_namespace_p): Likewise.
	(merge_exception_specifiers): Likewise.
	(mangle_module_global_init): Likewise.
	(cxx_block_may_fallthru): Likewise.
	(fold_builtin_source_location): Likewise.
	(enum cp_oracle_request): Likewise.
	(subsumes): Likewise.
	(cp_finish_injected_record_type): Likewise.
	(vtv_build_vtable_verify_fndecl): Likewise.
	(cp_tree_c_finish_parsing): Likewise.
	* cvt.cc (diagnose_ref_binding): Likewise.
	(convert_to_void): Likewise.
	(convert_force): Likewise.
	(type_promotes_to): Likewise.
	* decl.cc (make_unbound_class_template_raw): Likewise.
	(cxx_init_decl_processing): Likewise.
	(check_class_member_definition_namespace): Likewise.
	(cxx_maybe_build_cleanup): Likewise.
	* decl2.cc (maybe_emit_vtables): Likewise.
	* error.cc (dump_function_name): Likewise.
	* init.cc (is_class_type): Likewise.
	(build_new_1): Likewise.
	* lang-specs.h: Likewise.
	* method.cc (make_alias_for_thunk): Likewise.
	* module.cc (specialization_add): Likewise.
	(module_state::read_cluster): Likewise.
	* name-lookup.cc (check_extern_c_conflict): Likewise.
	* name-lookup.h (struct cxx_binding): Likewise.
	* parser.cc (cp_parser_identifier): Likewise.
	* parser.h (struct cp_parser): Likewise.
	* pt.cc (has_value_dependent_address): Likewise.
	(push_tinst_level_loc): Likewise.
	* semantics.cc (finish_omp_clauses): Likewise.
	(finish_omp_atomic): Likewise.
	* tree.cc (cp_save_expr): Likewise.
	(cp_free_lang_data): Likewise.
	* typeck.cc (cp_common_type): Likewise.
	(strip_array_domain): Likewise.
	(rationalize_conditional_expr): Likewise.
	(check_return_expr): Likewise.
	* vtable-class-hierarchy.cc: Likewise.

gcc/d/ChangeLog:

	* d-gimplify.cc: Rename .c names to .cc.
	* d-incpath.cc: Likewise.
	* lang-specs.h: Likewise.

gcc/fortran/ChangeLog:

	* check.cc (gfc_check_all_any): Rename .c names to .cc.
	* class.cc (find_intrinsic_vtab): Likewise.
	* config-lang.in: Likewise.
	* cpp.cc (cpp_define_builtins): Likewise.
	* data.cc (get_array_index): Likewise.
	* decl.cc (match_clist_expr): Likewise.
	(get_proc_name): Likewise.
	(gfc_verify_c_interop_param): Likewise.
	(gfc_get_pdt_instance): Likewise.
	(gfc_match_formal_arglist): Likewise.
	(gfc_get_type_attr_spec): Likewise.
	* dependency.cc: Likewise.
	* error.cc (gfc_format_decoder): Likewise.
	* expr.cc (check_restricted): Likewise.
	(gfc_build_default_init_expr): Likewise.
	* f95-lang.cc: Likewise.
	* gfc-internals.texi: Likewise.
	* gfortran.h (enum match): Likewise.
	(enum procedure_type): Likewise.
	(enum oacc_routine_lop): Likewise.
	(gfc_get_pdt_instance): Likewise.
	(gfc_end_source_files): Likewise.
	(gfc_mpz_set_hwi): Likewise.
	(gfc_get_option_string): Likewise.
	(gfc_find_sym_in_expr): Likewise.
	(gfc_errors_to_warnings): Likewise.
	(gfc_real_4_kind): Likewise.
	(gfc_free_finalizer): Likewise.
	(gfc_sym_get_dummy_args): Likewise.
	(gfc_check_intrinsic_standard): Likewise.
	(gfc_free_case_list): Likewise.
	(gfc_resolve_oacc_routines): Likewise.
	(gfc_check_vardef_context): Likewise.
	(gfc_free_association_list): Likewise.
	(gfc_implicit_pure_function): Likewise.
	(gfc_ref_dimen_size): Likewise.
	(gfc_compare_actual_formal): Likewise.
	(gfc_resolve_wait): Likewise.
	(gfc_dt_upper_string): Likewise.
	(gfc_generate_module_code): Likewise.
	(gfc_delete_bbt): Likewise.
	(debug): Likewise.
	(gfc_build_block_ns): Likewise.
	(gfc_dep_difference): Likewise.
	(gfc_invalid_null_arg): Likewise.
	(gfc_is_finalizable): Likewise.
	(gfc_fix_implicit_pure): Likewise.
	(gfc_is_size_zero_array): Likewise.
	(gfc_is_reallocatable_lhs): Likewise.
	* gfortranspec.cc: Likewise.
	* interface.cc (compare_actual_expr): Likewise.
	* intrinsic.cc (add_functions): Likewise.
	* iresolve.cc (gfc_resolve_matmul): Likewise.
	(gfc_resolve_alarm_sub): Likewise.
	* iso-c-binding.def: Likewise.
	* lang-specs.h: Likewise.
	* libgfortran.h (GFC_STDERR_UNIT_NUMBER): Likewise.
	* match.cc (gfc_match_label): Likewise.
	(gfc_match_symbol): Likewise.
	(match_derived_type_spec): Likewise.
	(copy_ts_from_selector_to_associate): Likewise.
	* match.h (gfc_match_call): Likewise.
	(gfc_get_common): Likewise.
	(gfc_match_omp_end_single): Likewise.
	(gfc_match_volatile): Likewise.
	(gfc_match_bind_c): Likewise.
	(gfc_match_literal_constant): Likewise.
	(gfc_match_init_expr): Likewise.
	(gfc_match_array_constructor): Likewise.
	(gfc_match_end_interface): Likewise.
	(gfc_match_print): Likewise.
	(gfc_match_expr): Likewise.
	* matchexp.cc (next_operator): Likewise.
	* mathbuiltins.def: Likewise.
	* module.cc (free_true_name): Likewise.
	* openmp.cc (gfc_resolve_omp_parallel_blocks): Likewise.
	(gfc_omp_save_and_clear_state): Likewise.
	* parse.cc (parse_union): Likewise.
	(set_syms_host_assoc): Likewise.
	* resolve.cc (resolve_actual_arglist): Likewise.
	(resolve_elemental_actual): Likewise.
	(check_host_association): Likewise.
	(resolve_typebound_function): Likewise.
	(resolve_typebound_subroutine): Likewise.
	(gfc_resolve_expr): Likewise.
	(resolve_assoc_var): Likewise.
	(resolve_typebound_procedures): Likewise.
	(resolve_equivalence_derived): Likewise.
	* simplify.cc (simplify_bound): Likewise.
	* symbol.cc (gfc_set_default_type): Likewise.
	(gfc_add_ext_attribute): Likewise.
	* target-memory.cc (gfc_target_interpret_expr): Likewise.
	* target-memory.h (gfc_target_interpret_expr): Likewise.
	* trans-array.cc (gfc_get_cfi_dim_sm): Likewise.
	(gfc_conv_shift_descriptor_lbound): Likewise.
	(gfc_could_be_alias): Likewise.
	(gfc_get_dataptr_offset): Likewise.
	* trans-const.cc: Likewise.
	* trans-decl.cc (trans_function_start): Likewise.
	(gfc_trans_deferred_vars): Likewise.
	(generate_local_decl): Likewise.
	(gfc_generate_function_code): Likewise.
	* trans-expr.cc (gfc_vptr_size_get): Likewise.
	(gfc_trans_class_array_init_assign): Likewise.
	(POWI_TABLE_SIZE): Likewise.
	(gfc_conv_procedure_call): Likewise.
	(gfc_trans_arrayfunc_assign): Likewise.
	* trans-intrinsic.cc (gfc_conv_intrinsic_len): Likewise.
	(gfc_conv_intrinsic_loc): Likewise.
	(conv_intrinsic_event_query): Likewise.
	* trans-io.cc (gfc_build_st_parameter): Likewise.
	* trans-openmp.cc (gfc_omp_check_optional_argument): Likewise.
	(gfc_omp_unshare_expr_r): Likewise.
	(gfc_trans_omp_array_section): Likewise.
	(gfc_trans_omp_clauses): Likewise.
	* trans-stmt.cc (trans_associate_var): Likewise.
	(gfc_trans_deallocate): Likewise.
	* trans-stmt.h (gfc_trans_class_init_assign): Likewise.
	(gfc_trans_deallocate): Likewise.
	(gfc_trans_oacc_declare): Likewise.
	* trans-types.cc: Likewise.
	* trans-types.h (enum gfc_packed): Likewise.
	* trans.cc (N_): Likewise.
	(trans_code): Likewise.
	* trans.h (gfc_build_compare_string): Likewise.
	(gfc_conv_expr_type): Likewise.
	(gfc_trans_deferred_vars): Likewise.
	(getdecls): Likewise.
	(gfc_get_array_descr_info): Likewise.
	(gfc_omp_firstprivatize_type_sizes): Likewise.
	(GTY): Likewise.

gcc/go/ChangeLog:

	* config-lang.in: Rename .c names to .cc.
	* go-backend.cc: Likewise.
	* go-lang.cc: Likewise.
	* gospec.cc: Likewise.
	* lang-specs.h: Likewise.

gcc/jit/ChangeLog:

	* config-lang.in: Rename .c names to .cc.
	* docs/_build/texinfo/libgccjit.texi: Likewise.
	* docs/internals/index.rst: Likewise.
	* jit-builtins.cc (builtins_manager::make_builtin_function): Likewise.
	* jit-playback.cc (fold_const_var): Likewise.
	(playback::context::~context): Likewise.
	(new_field): Likewise.
	(new_bitfield): Likewise.
	(new_compound_type): Likewise.
	(playback::compound_type::set_fields): Likewise.
	(global_set_init_rvalue): Likewise.
	(load_blob_in_ctor): Likewise.
	(new_global_initialized): Likewise.
	(double>): Likewise.
	(new_string_literal): Likewise.
	(as_truth_value): Likewise.
	(build_call): Likewise.
	(playback::context::build_cast): Likewise.
	(new_array_access): Likewise.
	(new_field_access): Likewise.
	(dereference): Likewise.
	(postprocess): Likewise.
	(add_jump): Likewise.
	(add_switch): Likewise.
	(build_goto_operands): Likewise.
	(playback::context::read_dump_file): Likewise.
	(init_types): Likewise.
	* jit-recording.cc (recording::context::get_int_type): Likewise.
	* jit-recording.h: Likewise.
	* libgccjit.cc (compatible_types): Likewise.
	(gcc_jit_context_acquire): Likewise.
	(gcc_jit_context_release): Likewise.
	(gcc_jit_context_new_child_context): Likewise.
	(gcc_jit_type_as_object): Likewise.
	(gcc_jit_context_get_type): Likewise.
	(gcc_jit_context_get_int_type): Likewise.
	(gcc_jit_type_get_pointer): Likewise.
	(gcc_jit_type_get_const): Likewise.
	(gcc_jit_type_get_volatile): Likewise.
	(gcc_jit_type_dyncast_array): Likewise.
	(gcc_jit_type_is_bool): Likewise.
	(gcc_jit_type_is_pointer): Likewise.
	(gcc_jit_type_is_integral): Likewise.
	(gcc_jit_type_dyncast_vector): Likewise.
	(gcc_jit_type_is_struct): Likewise.
	(gcc_jit_vector_type_get_num_units): Likewise.
	(gcc_jit_vector_type_get_element_type): Likewise.
	(gcc_jit_type_unqualified): Likewise.
	(gcc_jit_type_dyncast_function_ptr_type): Likewise.
	(gcc_jit_function_type_get_return_type): Likewise.
	(gcc_jit_function_type_get_param_count): Likewise.
	(gcc_jit_function_type_get_param_type): Likewise.
	(gcc_jit_context_new_array_type): Likewise.
	(gcc_jit_context_new_field): Likewise.
	(gcc_jit_field_as_object): Likewise.
	(gcc_jit_context_new_struct_type): Likewise.
	(gcc_jit_struct_as_type): Likewise.
	(gcc_jit_struct_set_fields): Likewise.
	(gcc_jit_struct_get_field_count): Likewise.
	(gcc_jit_context_new_union_type): Likewise.
	(gcc_jit_context_new_function_ptr_type): Likewise.
	(gcc_jit_param_as_rvalue): Likewise.
	(gcc_jit_context_new_function): Likewise.
	(gcc_jit_function_get_return_type): Likewise.
	(gcc_jit_function_dump_to_dot): Likewise.
	(gcc_jit_block_get_function): Likewise.
	(gcc_jit_global_set_initializer_rvalue): Likewise.
	(gcc_jit_rvalue_get_type): Likewise.
	(gcc_jit_context_new_rvalue_from_int): Likewise.
	(gcc_jit_context_one): Likewise.
	(gcc_jit_context_new_rvalue_from_double): Likewise.
	(gcc_jit_context_null): Likewise.
	(gcc_jit_context_new_string_literal): Likewise.
	(valid_binary_op_p): Likewise.
	(gcc_jit_context_new_binary_op): Likewise.
	(gcc_jit_context_new_comparison): Likewise.
	(gcc_jit_context_new_call): Likewise.
	(is_valid_cast): Likewise.
	(gcc_jit_context_new_cast): Likewise.
	(gcc_jit_object_get_context): Likewise.
	(gcc_jit_object_get_debug_string): Likewise.
	(gcc_jit_lvalue_access_field): Likewise.
	(gcc_jit_rvalue_access_field): Likewise.
	(gcc_jit_rvalue_dereference_field): Likewise.
	(gcc_jit_rvalue_dereference): Likewise.
	(gcc_jit_lvalue_get_address): Likewise.
	(gcc_jit_lvalue_set_tls_model): Likewise.
	(gcc_jit_lvalue_set_link_section): Likewise.
	(gcc_jit_function_new_local): Likewise.
	(gcc_jit_block_add_eval): Likewise.
	(gcc_jit_block_add_assignment): Likewise.
	(is_bool): Likewise.
	(gcc_jit_block_end_with_conditional): Likewise.
	(gcc_jit_block_add_comment): Likewise.
	(gcc_jit_block_end_with_jump): Likewise.
	(gcc_jit_block_end_with_return): Likewise.
	(gcc_jit_block_end_with_void_return): Likewise.
	(case_range_validator::case_range_validator): Likewise.
	(case_range_validator::validate): Likewise.
	(case_range_validator::get_wide_int): Likewise.
	(gcc_jit_block_end_with_switch): Likewise.
	(gcc_jit_context_set_str_option): Likewise.
	(gcc_jit_context_set_int_option): Likewise.
	(gcc_jit_context_set_bool_option): Likewise.
	(gcc_jit_context_set_bool_allow_unreachable_blocks): Likewise.
	(gcc_jit_context_set_bool_use_external_driver): Likewise.
	(gcc_jit_context_add_command_line_option): Likewise.
	(gcc_jit_context_add_driver_option): Likewise.
	(gcc_jit_context_enable_dump): Likewise.
	(gcc_jit_context_compile): Likewise.
	(gcc_jit_context_compile_to_file): Likewise.
	(gcc_jit_context_set_logfile): Likewise.
	(gcc_jit_context_dump_reproducer_to_file): Likewise.
	(gcc_jit_context_get_first_error): Likewise.
	(gcc_jit_context_get_last_error): Likewise.
	(gcc_jit_result_get_code): Likewise.
	(gcc_jit_result_get_global): Likewise.
	(gcc_jit_rvalue_set_bool_require_tail_call): Likewise.
	(gcc_jit_type_get_aligned): Likewise.
	(gcc_jit_type_get_vector): Likewise.
	(gcc_jit_function_get_address): Likewise.
	(gcc_jit_version_patchlevel): Likewise.
	(gcc_jit_block_add_extended_asm): Likewise.
	(gcc_jit_extended_asm_as_object): Likewise.
	(gcc_jit_extended_asm_set_volatile_flag): Likewise.
	(gcc_jit_extended_asm_set_inline_flag): Likewise.
	(gcc_jit_extended_asm_add_output_operand): Likewise.
	(gcc_jit_extended_asm_add_input_operand): Likewise.
	(gcc_jit_extended_asm_add_clobber): Likewise.
	* notes.txt: Likewise.

gcc/lto/ChangeLog:

	* config-lang.in: Rename .c names to .cc.
	* lang-specs.h: Likewise.
	* lto-common.cc (gimple_register_canonical_type_1): Likewise.
	* lto-common.h: Likewise.
	* lto-dump.cc (lto_main): Likewise.
	* lto-lang.cc (handle_fnspec_attribute): Likewise.
	(lto_getdecls): Likewise.
	(lto_init): Likewise.
	* lto.cc (lto_main): Likewise.
	* lto.h: Likewise.

gcc/objc/ChangeLog:

	* Make-lang.in: Rename .c names to .cc.
	* config-lang.in: Likewise.
	* lang-specs.h: Likewise.
	* objc-act.cc (objc_build_component_ref): Likewise.
	(objc_copy_binfo): Likewise.
	(lookup_method_in_hash_lists): Likewise.
	(objc_finish_foreach_loop): Likewise.
	* objc-act.h (objc_common_init_ts): Likewise.
	* objc-gnu-runtime-abi-01.cc: Likewise.
	* objc-lang.cc (struct lang_hooks): Likewise.
	* objc-map.cc: Likewise.
	* objc-next-runtime-abi-01.cc (generate_objc_symtab_decl): Likewise.
	* objc-runtime-shared-support.cc: Likewise.
	* objc-runtime-shared-support.h (build_protocol_initializer): Likewise.

gcc/objcp/ChangeLog:

	* Make-lang.in: Rename .c names to .cc.
	* config-lang.in: Likewise.
	* lang-specs.h: Likewise.
	* objcp-decl.cc (objcp_end_compound_stmt): Likewise.
	* objcp-lang.cc (struct lang_hooks): Likewise.

gcc/po/ChangeLog:

	* EXCLUDES: Rename .c names to .cc.

libcpp/ChangeLog:

	* Makefile.in: Rename .c names to .cc.
	* charset.cc (convert_escape): Likewise.
	* directives.cc (directive_diagnostics): Likewise.
	(_cpp_handle_directive): Likewise.
	(lex_macro_node): Likewise.
	* include/cpplib.h (struct _cpp_file): Likewise.
	(PURE_ZERO): Likewise.
	(cpp_defined): Likewise.
	(cpp_error_at): Likewise.
	(cpp_forall_identifiers): Likewise.
	(cpp_compare_macros): Likewise.
	(cpp_get_converted_source): Likewise.
	(cpp_read_state): Likewise.
	(cpp_directive_only_process): Likewise.
	(struct cpp_decoded_char): Likewise.
	* include/line-map.h (enum lc_reason): Likewise.
	(enum location_aspect): Likewise.
	* include/mkdeps.h: Likewise.
	* init.cc (cpp_destroy): Likewise.
	(cpp_finish): Likewise.
	* internal.h (struct cpp_reader): Likewise.
	(_cpp_defined_macro_p): Likewise.
	(_cpp_backup_tokens_direct): Likewise.
	(_cpp_destroy_hashtable): Likewise.
	(_cpp_has_header): Likewise.
	(_cpp_expand_op_stack): Likewise.
	(_cpp_commit_buff): Likewise.
	(_cpp_restore_special_builtin): Likewise.
	(_cpp_bracket_include): Likewise.
	(_cpp_replacement_text_len): Likewise.
	(ufputs): Likewise.
	* line-map.cc (linemap_macro_loc_to_exp_point): Likewise.
	(linemap_check_files_exited): Likewise.
	(line_map_new_raw): Likewise.
	* traditional.cc (enum ls): Likewise.
2022-01-17 22:12:07 +01:00
Jakub Jelinek 7adcbafe45 Update copyright years. 2022-01-03 10:42:10 +01:00
Stefan Schulze Frielinghaus f47870e6a2 IBM Z: Fix load-and-test peephole2 condition
For a peephole2 condition variable insn points to the first matched
insn.  In order to refer to the second matched insn use
peep2_next_insn(1) instead.

gcc/ChangeLog:

	* config/s390/s390.md (define_peephole2): Variable insn points
	to the first matched insn.  Use peep2_next_insn(1) to refer to
	the second matched insn.

gcc/testsuite/ChangeLog:

	* gcc.target/s390/20211119.c: New test.
2021-11-19 16:56:56 +01:00
Stefan Schulze Frielinghaus e72f783c86 IBM Z: Fix address of operands will never be NULL warnings
Since a recent enhancement of -Waddress a couple of warnings are emitted
and turned into errors during bootstrap:

gcc/config/s390/s390.md:12087:25: error: the address of 'operands' will never be NULL [-Werror=address]
12087 |   "TARGET_HTM && operands != NULL
build/gencondmd.c:59:12: note: 'operands' declared here
   59 | extern rtx operands[];
      |            ^~~~~~~~

Fixed by removing those non-null checks.

gcc/ChangeLog:

	* config/s390/s390.md ("*cc_to_int", "tabort", "*tabort_1",
	"*tabort_1_plus"): Remove operands non-null check.
2021-11-02 09:19:44 +01:00
Stefan Schulze Frielinghaus 6e3c4bfd0c IBM Z: Provide rawmemchr{qi,hi,si} expander
gcc/ChangeLog:

	* config/s390/s390-protos.h (s390_rawmemchr): Add prototype.
	* config/s390/s390.c (s390_rawmemchr): New function.
	* config/s390/s390.md (rawmemchr<SINT:mode>): New expander.
	* config/s390/vector.md (@vec_vfees<mode>): Basically a copy of
	the pattern vfees<mode> from vx-builtins.md.
	* config/s390/vx-builtins.md (*vfees<mode>): Remove.

gcc/testsuite/ChangeLog:

	* gcc.target/s390/rawmemchr-1.c: New test.
2021-10-11 09:59:32 +02:00
Andreas Krebbel 0aa7091bef IBM Z: Get rid of vpdi unspec
The patch gets rid of the unspec used for the vector permute double
immediate instruction and replaces it with generic rtx.

gcc/ChangeLog:

	* config/s390/s390.md (UNSPEC_VEC_PERMI): Remove constant
	definition.
	* config/s390/vector.md (*vpdi1<mode>, *vpdi4<mode>): New pattern
	definitions.
	* config/s390/vx-builtins.md (*vec_permi<mode>): Emit generic rtx
	instead of an unspec.

gcc/testsuite/ChangeLog:

	* gcc.target/s390/zvector/vec-permi.c: Removed.
	* gcc.target/s390/zvector/vec_permi.c: New test.
2021-08-04 18:40:09 +02:00
Andreas Krebbel 5391688acc IBM Z: Get rid of vec merge unspec
This patch gets rid of the unspecs we were using for the vector merge
instruction and replaces it with generic rtx.

gcc/ChangeLog:

	* config/s390/s390-modes.def: Add more vector modes to support
	concatenation of two vectors.
	* config/s390/s390-protos.h (s390_expand_merge_perm_const): Add
	prototype.
	(s390_expand_merge): Likewise.
	* config/s390/s390.c (s390_expand_merge_perm_const): New function.
	(s390_expand_merge): New function.
	* config/s390/s390.md (UNSPEC_VEC_MERGEH, UNSPEC_VEC_MERGEL):
	Remove constant definitions.
	* config/s390/vector.md (V_HW_2): Add mode iterators.
	(VI_HW_4, V_HW_4): Rename VI_HW_4 to V_HW_4.
	(vec_2x_nelts, vec_2x_wide): New mode attributes.
	(*vmrhb, *vmrlb, *vmrhh, *vmrlh, *vmrhf, *vmrlf, *vmrhg, *vmrlg):
	New pattern definitions.
	(vec_widen_umult_lo_<mode>, vec_widen_umult_hi_<mode>)
	(vec_widen_smult_lo_<mode>, vec_widen_smult_hi_<mode>)
	(vec_unpacks_lo_v4sf, vec_unpacks_hi_v4sf, vec_unpacks_lo_v2df)
	(vec_unpacks_hi_v2df): Adjust expanders to emit non-unspec RTX for
	vec merge.
	* config/s390/vx-builtins.md (V_HW_4): Remove mode iterator. Now
	in vector.md.
	(vec_mergeh<mode>, vec_mergel<mode>): Use s390_expand_merge to
	emit vec merge pattern.

gcc/testsuite/ChangeLog:

	* gcc.target/s390/vector/long-double-asm-in-out-hard-fp-reg.c:
	Instead of vpdi with 0 and 5 vmrlg and vmrhg are used now.
	* gcc.target/s390/vector/long-double-asm-inout-hard-fp-reg.c: Likewise.
	* gcc.target/s390/zvector/vec-types.h: New test.
	* gcc.target/s390/zvector/vec_merge.c: New test.
2021-08-04 18:40:09 +02:00
Ilya Leoshkevich 0990d93dd8 IBM Z: Use @PLT symbols for local functions in 64-bit mode
This helps with generating code for kernel hotpatches, which contain
individual functions and are loaded more than 2G away from vmlinux.
This should not create performance regressions for the normal use
cases, because for local functions ld replaces @PLT calls with direct
calls.

gcc/ChangeLog:

	* config/s390/predicates.md (bras_sym_operand): Accept all
	functions in 64-bit mode, use UNSPEC_PLT31.
	(larl_operand): Use UNSPEC_PLT31.
	* config/s390/s390.c (s390_loadrelative_operand_p): Likewise.
	(legitimize_pic_address): Likewise.
	(s390_emit_tls_call_insn): Mark __tls_get_offset as function,
	use UNSPEC_PLT31.
	(s390_delegitimize_address): Use UNSPEC_PLT31.
	(s390_output_addr_const_extra): Likewise.
	(print_operand): Add @PLT to TLS calls, handle %K.
	(s390_function_profiler): Mark __fentry__/_mcount as function,
	use %K, use UNSPEC_PLT31.
	(s390_output_mi_thunk): Use only UNSPEC_GOT, use %K.
	(s390_emit_call): Use UNSPEC_PLT31.
	(s390_emit_tpf_eh_return): Mark __tpf_eh_return as function.
	* config/s390/s390.md (UNSPEC_PLT31): Rename from UNSPEC_PLT.
	(*movdi_64): Use %K.
	(reload_base_64): Likewise.
	(*sibcall_brc): Likewise.
	(*sibcall_brcl): Likewise.
	(*sibcall_value_brc): Likewise.
	(*sibcall_value_brcl): Likewise.
	(*bras): Likewise.
	(*brasl): Likewise.
	(*bras_r): Likewise.
	(*brasl_r): Likewise.
	(*bras_tls): Likewise.
	(*brasl_tls): Likewise.
	(main_base_64): Likewise.
	(reload_base_64): Likewise.
	(@split_stack_call<mode>): Likewise.

gcc/testsuite/ChangeLog:

	* g++.dg/ext/visibility/noPLT.C: Skip on s390x.
	* g++.target/s390/mi-thunk.C: New test.
	* gcc.target/s390/nodatarel-1.c: Move foostatic to the new
	tests.
	* gcc.target/s390/pr80080-4.c: Allow @PLT suffix.
	* gcc.target/s390/risbg-ll-3.c: Likewise.
	* gcc.target/s390/call.h: Common code for the new tests.
	* gcc.target/s390/call-z10-pic-nodatarel.c: New test.
	* gcc.target/s390/call-z10-pic.c: New test.
	* gcc.target/s390/call-z10.c: New test.
	* gcc.target/s390/call-z9-pic-nodatarel.c: New test.
	* gcc.target/s390/call-z9-pic.c: New test.
	* gcc.target/s390/call-z9.c: New test.
	* gcc.target/s390/mfentry-m64-pic.c: New test.
	* gcc.target/s390/tls.h: Common code for the new TLS tests.
	* gcc.target/s390/tls-pic.c: New test.
	* gcc.target/s390/tls.c: New test.
2021-07-16 12:51:42 +02:00
Ilya Leoshkevich 22d834e32b IBM Z: Remove match_scratch workaround
Since commit dd1ef00c45 ("Fix bug in the define_subst handling that
made match_scratch unusable for multi-alternative patterns.") the
workaround for that bug in *ashrdi3_31<setcc><cconly> is not only no
longer necessary, but actually breaks the build.

Get rid of it by using only one alternative in (match_scratch).  It
will be replicated as many times as needed in order to match the
pattern with which (define_subst) is used.

gcc/ChangeLog:

	* config/s390/s390.md(*ashrdi3_31<setcc><cconly>): Use a single
	constraint.
	* config/s390/subst.md(cconly_subst): Use a single constraint
	in (match_scratch).

gcc/testsuite/ChangeLog:

	* gcc.target/s390/ashr.c: New test.
2021-06-02 11:56:32 +02:00
Stefan Schulze Frielinghaus 46c47420a5 IBM Z: Add alternative to *movdi_{31,64} in order to load a DFP zero
gcc/ChangeLog:

	* config/s390/s390.md ("*movdi_31", "*movdi_64"): Add
	  alternative in order to load a DFP zero.
2021-04-12 16:08:42 +02:00
Andreas Krebbel 2bd58910b0 IBM Z: arch14: New instrinsics
This adds support for 5 new builtins.

gcc/ChangeLog:

	* config/s390/s390-builtin-types.def (BT_FN_V4SF_V8HI_UINT): New
	builtin signature.
	(BT_FN_V8HI_V8HI_UINT): Likewise.
	(BT_FN_V8HI_V4SF_V4SF_UINT): Likewise.
	* config/s390/s390-builtins.def (B_NNPA): New macro definition.
	(s390_vclfnhs, s390_vclfnls, s390_vcrnfs, s390_vcfn, s390_vcnf):
	New builtin definitions.
	* config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Bump
	vector extension version.
	* config/s390/s390.c (s390_expand_builtin): Check if builtins are
	available with current -march level.
	* config/s390/s390.md (UNSPEC_NNPA_VCLFNHS_V8HI)
	(UNSPEC_NNPA_VCLFNLS_V8HI, UNSPEC_NNPA_VCRNFS_V8HI)
	(UNSPEC_NNPA_VCFN_V8HI, UNSPEC_NNPA_VCNF_V8HI): New constants.
	* config/s390/vecintrin.h (vec_extend_to_fp32_hi): New macro.
	(vec_extend_to_fp32_lo): Likewise.
	(vec_round_from_fp32): Likewise.
	(vec_convert_to_fp16): Likewise.
	(vec_convert_from_fp16): Likewise.
	* config/s390/vx-builtins.md (vclfnhs_v8hi): New insn pattern.
	(vclfnls_v8hi): Likewise.
	(vcrnfs_v8hi): Likewise.
	(vcfn_v8hi): Likewise.
	(vcnf_v8hi): Likewise.

gcc/testsuite/ChangeLog:

	* gcc.target/s390/zvector/vec-nnpa-fp16-convert.c: New test.
	* gcc.target/s390/zvector/vec-nnpa-fp32-convert-1.c: New test.
	* gcc.target/s390/zvector/vec_convert_from_fp16.c: New test.
	* gcc.target/s390/zvector/vec_convert_to_fp16.c: New test.
	* gcc.target/s390/zvector/vec_extend_to_fp32_hi.c: New test.
	* gcc.target/s390/zvector/vec_extend_to_fp32_lo.c: New test.
	* gcc.target/s390/zvector/vec_round_from_fp32.c: New test.
2021-03-02 11:58:31 +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
Andreas Krebbel 65af6bc9f8 IBM Z: Fix mode in probe_stack pattern
The probe pattern uses Pmode but the middle-end wants to emit a
word_mode probe check.  This - as usual - breaks on Z with -m31
-mzarch were word_mode doesn't match Pmode.

gcc/ChangeLog:

	* config/s390/s390.md ("@probe_stack2<mode>"): Change mode
	iterator to W.

gcc/testsuite/ChangeLog:

	* gcc.target/s390/stack-clash-4.c: New test.
2020-12-03 17:04:17 +01:00
Ilya Leoshkevich 9776b4653b IBM Z: Use llihf and oilf to load large immediates into GPRs
Currently GCC loads large immediates into GPRs from the literal pool,
which is not as efficient as loading two halves with llihf and oilf.

gcc/ChangeLog:

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

	* config/s390/s390-protos.h (s390_const_int_pool_entry_p): New
	function.
	* config/s390/s390.c (s390_const_int_pool_entry_p): New
	function.
	* config/s390/s390.md: Add define_peephole2 that produces llihf
	and oilf.

gcc/testsuite/ChangeLog:

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

	* gcc.target/s390/load-imm64-1.c: New test.
	* gcc.target/s390/load-imm64-2.c: New test.
2020-12-02 19:10:34 +01:00
Haochen Gui d5ac0401eb Relocatable read-only section support for absolute jump table
This patch puts absolute jump tables into a relocatable read-only section
if they are on ELF target and relocation is supported.

gcc/ChangeLog:

	* final.c (final_scan_insn_1): Set jump table relocatable as the
	second argument of targetm.asm_out.function_rodata_section.
	* output.h (default_function_rodata_section,
	default_no_function_rodata_section): Add the second argument to the
	declarations.
	* target.def (function_rodata_section): Change the doc and add
	the second argument.
	* doc/tm.texi: Regenerate.
	* varasm.c (jumptable_relocatable): Implement.
	(default_function_rodata_section): Add the second argument
	and the support for relocatable read only sections.
	(default_no_function_rodata_section): Add the second argument.
	(function_mergeable_rodata_prefix): Set the second argument to false.
	* config/mips/mips.c (mips_function_rodata_section): Add the second
	arugment and set it to false.
	* config/s390/s390.c (targetm.asm_out.function_rodata_section): Set
	the second argument to false.
	* config/s390/s390.md: Likewise.
2020-11-17 13:53:14 +08: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
Ilya Leoshkevich 88ea64e941 IBM Z: Remove unused RRe and RXe mode_attrs
gcc/ChangeLog:

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

	* config/s390/s390.md (RRe): Remove.
	(RXe): Remove.
2020-11-04 22:33:30 +01:00
Stefan Schulze Frielinghaus 1a84651d16 IBM Z: Try to make use of load-and-test instructions
This patch enables a peephole2 optimization which transforms a load of
constant zero into a temporary register which is then finally used to
compare against a floating-point register of interest into a single load
and test instruction.  However, the optimization is only applied if both
registers are dead afterwards and if we test for (in)equality only.
This is relaxed in case of fast math.

This is a follow up to PR88856.

gcc/ChangeLog:

	* config/s390/s390.md ("*cmp<mode>_ccs_0", "*cmp<mode>_ccz_0",
	"*cmp<mode>_ccs_0_fastmath"): Basically change "*cmp<mode>_ccs_0" into
	"*cmp<mode>_ccz_0" and for fast math add "*cmp<mode>_ccs_0_fastmath".

gcc/testsuite/ChangeLog:

	* gcc.target/s390/load-and-test-fp-1.c: Change test to include all
	possible combinations of dead/live registers and comparisons (equality,
	relational).
	* gcc.target/s390/load-and-test-fp-2.c: Same as load-and-test-fp-1.c
	but for fast math.
	* gcc.target/s390/load-and-test-fp.h: New test included by
	load-and-test-fp-{1,2}.c.
2020-09-22 13:55:42 +02:00
Andreas Krebbel 8002956182 Fix PR96127
In s390_expand_insv the movstrict patterns are always generated with a
CC clobber although only movstricthi actually needs one.  The patch
invokes the expanders instead of constructing the pattern by hand.

Bootstrapped and regression tested on s390x.

gcc/ChangeLog:

	PR target/96127
	* config/s390/s390.c (s390_expand_insv): Invoke the movstrict
	expanders to generate the pattern.
	* config/s390/s390.md ("*movstricthi", "*movstrictqi"): Remove the
	'*' to have callable expanders.

gcc/testsuite/ChangeLog:

	PR target/96127
	* gcc.target/s390/pr96127.c: New test.
2020-07-17 09:26:49 +02:00
Andreas Krebbel 0473885be8 IBM Z: Define probe_stack expander
Probes emitted by the common code routines still use a store.  Define
the "probe_stack" pattern to use a compare instead.

gcc/ChangeLog:

2020-05-14  Andreas Krebbel  <krebbel@linux.ibm.com>

	* config/s390/s390.c (s390_emit_stack_probe): Call the probe_stack
	expander.
	* config/s390/s390.md ("@probe_stack2<mode>", "probe_stack"): New
	expanders.

gcc/testsuite/ChangeLog:

2020-05-14  Andreas Krebbel  <krebbel@linux.ibm.com>

	* gcc.target/s390/stack-clash-2.c: New test.
2020-05-14 08:16:27 +02:00
Andreas Krebbel d3e5bae174 Make anti_adjust_stack_and_probe_stack_clash extern and use it for Z
When compiling with -mbackchain -fstack-clash-protection currently no
probes are emitted.  This patch adjusts the "allocate_stack" expander
to call anti_adjust_stack_and_probe_stack_clash when needed. In order
to do this I had to export that function from explow.c.

Ok for mainline?

gcc/ChangeLog:

2020-05-14  Andreas Krebbel  <krebbel@linux.ibm.com>

	* config/s390/s390.md ("allocate_stack"): Call
	anti_adjust_stack_and_probe_stack_clash when stack clash
	protection is enabled.
	* explow.c (anti_adjust_stack_and_probe_stack_clash): Remove
	prototype. Remove static.
	* explow.h (anti_adjust_stack_and_probe_stack_clash): Add
	prototype.

gcc/testsuite/ChangeLog:

2020-05-14  Andreas Krebbel  <krebbel@linux.ibm.com>

	* gcc.target/s390/stack-clash-3.c: New test.
2020-05-14 08:16:27 +02:00
Stefan Schulze Frielinghaus 803596fe95 S/390: Fix several test cases
gcc/ChangeLog:

2020-04-21  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>

	* config/s390/s390.md ("*<risbg_n>_ior_and_sr_ze<mode>"): Lift from SI
	mode to DSI. ("*trunc_sidi_and_subreg_ze<clobbercc_or_nocc>"): New
	insn pattern.

gcc/testsuite/ChangeLog:

2020-04-21  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>

	* gcc.target/s390/addsub-signed-overflow-1.c: Fix options.
	* gcc.target/s390/addsub-signed-overflow-2.c: Fix options.
	* gcc.target/s390/bswap-1.c: Fix scan assembler regex.
	* gcc.target/s390/global-array-element-pic2.c: Fix scan assembler regex.
	* gcc.target/s390/load-relative-check.c: Fix options.
	* gcc.target/s390/morestack.c: Fix options.
	* gcc.target/s390/nobp-return-mem-z900.c: Temporarily silence this case.
	* gcc.target/s390/risbg-ll-1.c: Fix scan assembler regex.
	* gcc.target/s390/risbg-ll-2.c: Fix scan assembler regex.
	* gcc.target/s390/risbg-ll-3.c: Fix scan assembler regex.
	* gcc.target/s390/target-attribute/pr82012.c: Fix error message.
2020-04-22 16:57:37 +02:00
Andreas Krebbel 655e5c29ae Fix error format string.
gcc/ChangeLog:

2020-03-06  Andreas Krebbel  <krebbel@linux.ibm.com>

	* config/s390/s390.md ("tabort"): Get rid of two consecutive
	blanks in format string.
2020-03-06 09:51:43 +01:00
Jakub Jelinek f626ae5478 s390x: Fix popcounthi2_z196 expander [PR93533]
The following testcase started to ICE when .POPCOUNT matching has been added
to match.pd; we had __builtin_popcount*, but nothing would use the
popcounthi2 expander before.

The problem is that the popcounthi2_z196 expander doesn't emit valid RTL:
error: unrecognizable insn:
(insn 138 137 139 27 (set (reg:SI 190)
        (ashift:SI (reg:HI 95 [ _105 ])
            (const_int 8 [0x8]))) -1
     (nil))
during RTL pass: vregs
The following patch is an attempt to fix that, furthermore I've tried to
slightly simplify it as well, it makes no sense to me to perform
(x + (x << 8)) >> 8 when we need to either zero extend or mask the result
at the end in order to avoid bits from above HImode to affect it, when we
can do
(x + (x >> 8)) & 0xff (or zero extension).

2020-02-03  Jakub Jelinek  <jakub@redhat.com>

	PR target/93533
	* config/s390/s390.md (popcounthi2_z196): Fix up expander to emit
	valid RTL to sum up the lowest and second lowest bytes of the popcnt
	result.

	* gcc.c-torture/compile/pr93533.c: New test.
	* gcc.target/s390/pr93533.c: New test.
2020-02-03 09:03:12 +01:00
Jakub Jelinek 8d9254fc8a Update copyright years.
From-SVN: r279813
2020-01-01 12:51:42 +01:00
Andreas Krebbel 163f23d21e IBM Z: Add pattern for load truth value of comparison into reg
The RTXs used to express an overflow condition check in add/sub/mul are
too complex for if conversion.  However, there is code in
noce_emit_store_flag which generates a simple CC compare as the base
for using a conditional load.  All we have to do is to provide a
pattern to store the truth value of a CC compare into a GPR.

Done with the attached patch.

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

	* config/s390/s390.md ("*cstorecc<mode>_z13"): New insn_and_split
	pattern.

gcc/testsuite/ChangeLog:

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

	* gcc.target/s390/addsub-signed-overflow-1.c: Expect lochi
	instructions to be used.
	* gcc.target/s390/addsub-signed-overflow-2.c: Likewise.
	* gcc.target/s390/mul-signed-overflow-1.c: Likewise.
	* gcc.target/s390/mul-signed-overflow-2.c: Likewise.
	* gcc.target/s390/vector/vec-scalar-cmp-1.c: Check for 32 and 64
	bit variant of lochi.  Swap the values for the lochi's.
	* gcc.target/s390/zvector/vec-cmp-1.c: Likewise.

From-SVN: r277922
2019-11-07 11:52:05 +00:00
Ilya Leoshkevich 8f4f98f617 S/390: Use UNSPEC_GET_TP for thread pointer loads
gcc/ChangeLog:

2019-10-24  Ilya Leoshkevich  <iii@linux.ibm.com>

	* config/s390/s390.c (s390_get_thread_pointer): Use
	gen_get_thread_pointer.
	(s390_expand_split_stack_prologue): Likewise.
	* config/s390/s390.md (UNSPEC_GET_TP): New UNSPEC.
	(*get_tp_31): New 31-bit splitter for UNSPEC_GET_TP.
	(*get_tp_64): New 64-bit splitter for UNSPEC_GET_TP.
	(get_thread_pointer<mode>): Use UNSPEC_GET_TP, use
	parameterized name.

gcc/testsuite/ChangeLog:

2019-10-24  Ilya Leoshkevich  <iii@linux.ibm.com>

	* gcc.target/s390/load-thread-pointer-once-2.c: New test.

From-SVN: r277368
2019-10-24 09:00:41 +00:00
Ilya Leoshkevich 0d552c1b67 [PATCH] S/390: Run %a0:DI splitters only after reload
gcc/ChangeLog:

2019-10-15  Ilya Leoshkevich  <iii@linux.ibm.com>

	* config/s390/s390.md: Run %a0:DI splitters only after reload.

gcc/testsuite/ChangeLog:

2019-10-15  Ilya Leoshkevich  <iii@linux.ibm.com>

	* gcc.target/s390/load-thread-pointer-once.c: New test.

From-SVN: r276989
2019-10-15 10:22:35 +00:00
Ilya Leoshkevich d0a0cacaba S/390: Use signaling FP comparison instructions
dg-torture.exp=inf-compare-1.c is failing, because (qNaN > +Inf)
comparison is compiled to CDB instruction, which does not signal an
invalid operation exception. KDB should have been used instead.

This patch introduces a new CCmode and a new pattern in order to
generate signaling instructions in this and similar cases.

gcc/ChangeLog:

2019-10-11  Ilya Leoshkevich  <iii@linux.ibm.com>

	PR target/77918
	* config/s390/2827.md: Add new opcodes.
	* config/s390/2964.md: Likewise.
	* config/s390/3906.md: Likewise.
	* config/s390/8561.md: Likewise.
	* config/s390/s390-builtins.def (s390_vfchesb): Use
	the new vec_cmpgev4sf_quiet_nocc.
	(s390_vfchedb): Use the new vec_cmpgev2df_quiet_nocc.
	(s390_vfchsb): Use the new vec_cmpgtv4sf_quiet_nocc.
	(s390_vfchdb): Use the new vec_cmpgtv2df_quiet_nocc.
	(vec_cmplev4sf): Use the new vec_cmplev4sf_quiet_nocc.
	(vec_cmplev2df): Use the new vec_cmplev2df_quiet_nocc.
	(vec_cmpltv4sf): Use the new vec_cmpltv4sf_quiet_nocc.
	(vec_cmpltv2df): Use the new vec_cmpltv2df_quiet_nocc.
	* config/s390/s390-modes.def (CCSFPS): New mode.
	* config/s390/s390.c (s390_match_ccmode_set): Support CCSFPS.
	(s390_select_ccmode): Return CCSFPS for LT, LE, GT, GE and LTGT.
	(s390_branch_condition_mask): Reuse CCS for CCSFPS.
	(s390_expand_vec_compare): Use non-signaling patterns where
	necessary.
	(s390_reverse_condition): Support CCSFPS.
	* config/s390/s390.md (*cmp<mode>_ccsfps): New pattern.
	* config/s390/vector.md: (VFCMP_HW_OP): Remove.
	(asm_fcmp_op): Likewise.
	(*smaxv2df3_vx): Use pattern for quiet comparison.
	(*sminv2df3_vx): Likewise.
	(*vec_cmp<VFCMP_HW_OP:code><mode>_nocc): Remove.
	(*vec_cmpeq<mode>_quiet_nocc): New pattern.
	(vec_cmpgt<mode>_quiet_nocc): Likewise.
	(vec_cmplt<mode>_quiet_nocc): New expander.
	(vec_cmpge<mode>_quiet_nocc): New pattern.
	(vec_cmple<mode>_quiet_nocc): New expander.
	(*vec_cmpeq<mode>_signaling_nocc): New pattern.
	(*vec_cmpgt<mode>_signaling_nocc): Likewise.
	(*vec_cmpgt<mode>_signaling_finite_nocc): Likewise.
	(*vec_cmpge<mode>_signaling_nocc): Likewise.
	(*vec_cmpge<mode>_signaling_finite_nocc): Likewise.
	(vec_cmpungt<mode>): New expander.
	(vec_cmpunge<mode>): Likewise.
	(vec_cmpuneq<mode>): Use quiet patterns.
	(vec_cmpltgt<mode>): Allow only on z14+.
	(vec_cmpordered<mode>): Use quiet patterns.
	(vec_cmpunordered<mode>): Likewise.
	(VEC_CMP_EXPAND): Add ungt and unge.

gcc/testsuite/ChangeLog:

2019-10-11  Ilya Leoshkevich  <iii@linux.ibm.com>

	* gcc.target/s390/vector/vec-scalar-cmp-1.c: Adjust
	expectations.

From-SVN: r276871
2019-10-11 09:00:26 +00: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
Andreas Krebbel 051fb43f81 S/390: PR91035 Fix call to __morestack
For the call to __morestack we use a special ABI in the S/390 back-end
which requires us to emit a parameter block to the .rodata section.
It contains the label whereto __morestack needs to return.  The
parameter block needs to be explicit in RTL since we also need to take
the address of it loaded into r1 in order to pass its address to
__morestack.  In order to express correctly what __morestack does its
RTX also contained the return label. Hence we had the return label to
occur twice in the insn stream.  This is problematic when it comes to
redirecting edges.  The correlation between these two occurrences of
the label cannot be expressed so when doing a redirect only the label
in the jump RTX gets modified while the parameter block label stays as
is.

The patch avoids having two instancs of the label by merging the
parameter block generation and the __morestack call RTX into one. By
doing this I could also get rid of the unspec which was required for
the parameter block generation so far.

gcc/ChangeLog:

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

	PR target/91035
	* config/s390/s390-protos.h (s390_output_split_stack_data): Add
	prototype.
	* config/s390/s390.md (UNSPECV_SPLIT_STACK_DATA): Remove.
	("split_stack_data", "split_stack_call")
	("split_stack_call_<mode>", "split_stack_cond_call")
	("split_stack_cond_call_<mode>"): Remove.
	("@split_stack_call<mode>", "@split_stack_cond_call<mode>"): New
	insn definition.
	* config/s390/s390.c (s390_output_split_stack_data): New function.
	(s390_expand_split_stack_prologue): Use the merged expander.

From-SVN: r276790
2019-10-10 07:56:25 +00:00
Andreas Krebbel 4caa6bab76 S/390: Add add/sub/mul overflow check patterns
This patch implements the addv, subv, and mulv patterns for signed
integers.

gcc/ChangeLog:

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

	* config/s390/predicates.md (addv_const_operand): New predicate.
	* config/s390/s390-modes.def (CCO): New condition code mode.
	* config/s390/s390.c (s390_match_ccmode_set): Handle E_CCOmode.
	(s390_branch_condition_mask): Likewise.
	* config/s390/s390.md ("addv<mode>4", "subv<mode>4")
	("mulv<mode>4"): New expanders.
	("*addv<mode>3_ccoverflow", "*addv<mode>3_ccoverflow_const")
	("*subv<mode>3_ccoverflow", "*mulv<mode>3_ccoverflow"): New
	pattern definitions.

gcc/testsuite/ChangeLog:

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

	* gcc.target/s390/addsub-signed-overflow-1.c: New test.
	* gcc.target/s390/addsub-signed-overflow-2.c: New test.
	* gcc.target/s390/mul-signed-overflow-1.c: New test.
	* gcc.target/s390/mul-signed-overflow-2.c: New test.

From-SVN: r273759
2019-07-24 11:27:56 +00:00
Robin Dapp e2839e4789 S/390: Rework shift count handling.
Add s390_valid_shift_count to determine the validity of a
shift-count operand.  This is used to replace increasingly
complex substitutions that should have allowed address-style
shift-count handling, an and mask as well as no-op subregs
on the operand.

gcc/ChangeLog:

2019-07-08  Robin Dapp  <rdapp@linux.ibm.com>

        * config/s390/constraints.md: Add new jsc constraint.
        * config/s390/predicates.md: New predicates.
        * config/s390/s390-protos.h (s390_valid_shift_count): New function.
        * config/s390/s390.c (s390_valid_shift_count): New function.
        (print_shift_count_operand): Use s390_valid_shift_count.
        (print_operand): Likewise.
        * config/s390/s390.md: Use new predicate.
        * config/s390/subst.md: Remove addr_style_op and masked_op substs.
        * config/s390/vector.md: Use new predicate.

2019-07-08  Robin Dapp  <rdapp@linux.ibm.com>

        * gcc.target/s390/combine-rotate-modulo.c: New test.
        * gcc.target/s390/combine-shift-rotate-add-mod.c: New test.
        * gcc.target/s390/vector/combine-shift-vec.c: New test.

From-SVN: r273236
2019-07-08 14:40:48 +00:00
Richard Sandiford ef2df51671 [s390] Fix ambiguous .md attribute uses
This patch is part of a series that fixes ambiguous attribute
uses in .md files, i.e. cases in which attributes didn't use
<ITER:ATTR> to specify an iterator, and in which <ATTR> could
have different values depending on the iterator chosen.

The vx-builtins.md part changes the choice of <mode> from the
implicit <VFCMP:mode> to an explicit <VF_HW:mode> (i.e. from the
mode of the comparison result to the mode of the operands being
compared).  That seemed like the intended behaviour given later
patterns like vec_cmpeq<mode>_cc.

The use of BFP in the s390.md LNDFR pattern looks like a typo,
since the operand to (abs ...) has to have the same mode as the result.
The only effect before this series was to create some extra variants
that would never match, making it harmless apart from very minor code
bloat.

2019-07-06  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* config/s390/s390.md (*negabs<FP:mode>2_nocc): Use FP for
	operand 1.
	* config/s390/vx-builtins.md (*vec_cmp<insn_cmp><mode>_cconly):
	Make the choice of <mode> explicit, giving...
	(*vec_cmp<insn_cmp><VF_HW:mode>_cconly): ...this.

From-SVN: r273162
2019-07-06 08:26:44 +00:00
Aaron Sawdey 76715c3216 builtins.c (get_memory_rtx): Fix comment.
2019-06-27  Aaron Sawdey <acsawdey@linux.ibm.com>

	* builtins.c (get_memory_rtx): Fix comment.
	* optabs.def (movmem_optab): Change to cpymem_optab.
	* expr.c (emit_block_move_via_cpymem): Change movmem to cpymem.
	(emit_block_move_hints): Change movmem to cpymem.
	* defaults.h: Change movmem to cpymem.
	* targhooks.c (get_move_ratio): Change movmem to cpymem.
	(default_use_by_pieces_infrastructure_p): Ditto.
	* config/aarch64/aarch64-protos.h: Change movmem to cpymem.
	* config/aarch64/aarch64.c (aarch64_expand_movmem): Change movmem
	to cpymem.
	* config/aarch64/aarch64.h: Change movmem to cpymem.
	* config/aarch64/aarch64.md (movmemdi): Change name to cpymemdi.
	* config/alpha/alpha.h: Change movmem to cpymem in comment.
	* config/alpha/alpha.md (movmemqi, movmemdi, *movmemdi_1): Change
	movmem to cpymem.
	* config/arc/arc-protos.h: Change movmem to cpymem.
	* config/arc/arc.c (arc_expand_movmem): Change movmem to cpymem.
	* config/arc/arc.h: Change movmem to cpymem in comment.
	* config/arc/arc.md (movmemsi): Change movmem to cpymem.
	* config/arm/arm-protos.h: Change movmem to cpymem in names.
	* config/arm/arm.c (arm_movmemqi_unaligned, arm_gen_movmemqi, 
	gen_movmem_ldrd_strd, thumb_expand_movmemqi) Change movmem to cpymem.
	* config/arm/arm.md (movmemqi): Change movmem to cpymem.
	* config/arm/thumb1.md (movmem12b, movmem8b): Change movmem to cpymem.
	* config/avr/avr-protos.h: Change movmem to cpymem.
	* config/avr/avr.c (avr_adjust_insn_length, avr_emit_movmemhi,
	avr_out_movmem): Change movmem to cpymem.
	* config/avr/avr.md (movmemhi, movmem_<mode>, movmemx_<mode>):
	Change movmem to cpymem.
	* config/bfin/bfin-protos.h: Change movmem to cpymem.
	* config/bfin/bfin.c (single_move_for_movmem, bfin_expand_movmem):
	Change movmem to cpymem.
	* config/bfin/bfin.h: Change movmem to cpymem in comment.
	* config/bfin/bfin.md (movmemsi): Change name to cpymemsi.
	* config/c6x/c6x-protos.h: Change movmem to cpymem.
	* config/c6x/c6x.c (c6x_expand_movmem): Change movmem to cpymem.
	* config/c6x/c6x.md (movmemsi): Change name to cpymemsi.
	* config/frv/frv.md (movmemsi): Change name to cpymemsi.
	* config/ft32/ft32.md (movmemsi): Change name to cpymemsi.
	* config/h8300/h8300.md (movmemsi): Change name to cpymemsi.
	* config/i386/i386-expand.c (expand_set_or_movmem_via_loop,
	expand_set_or_movmem_via_rep, expand_movmem_epilogue,
	expand_setmem_epilogue_via_loop, expand_set_or_cpymem_prologue,
	expand_small_cpymem_or_setmem,
	expand_set_or_cpymem_prologue_epilogue_by_misaligned_moves,
	expand_set_or_cpymem_constant_prologue, 
	ix86_expand_set_or_cpymem): Change movmem to cpymem.
	* config/i386/i386-protos.h: Change movmem to cpymem.
	* config/i386/i386.h: Change movmem to cpymem in comment.
	* config/i386/i386.md (movmem<mode>): Change name to cpymem.
	(setmem<mode>): Change expansion function name.
	* config/lm32/lm32.md (movmemsi): Change name to cpymemsi.
	* config/m32c/blkmov.md (movmemhi, movmemhi_bhi_op, movmemhi_bpsi_op,
	movmemhi_whi_op, movmemhi_wpsi_op): Change movmem to cpymem.
	* config/m32c/m32c-protos.h: Change movmem to cpymem.
	* config/m32c/m32c.c (m32c_expand_movmemhi): Change movmem to cpymem.
	* config/m32r/m32r.c (m32r_expand_block_move): Change movmem to cpymem.
	* config/m32r/m32r.md (movmemsi, movmemsi_internal): Change movmem
	to cpymem.
	* config/mcore/mcore.md (movmemsi): Change name to cpymemsi.
	* config/microblaze/microblaze.c: Change movmem to cpymem in comment.
	* config/microblaze/microblaze.md (movmemsi): Change name to cpymemsi.
	* config/mips/mips.c (mips_use_by_pieces_infrastructure_p):
	Change movmem to cpymem.
	* config/mips/mips.h: Change movmem to cpymem.
	* config/mips/mips.md (movmemsi): Change name to cpymemsi.
	* config/nds32/nds32-memory-manipulation.c
	(nds32_expand_movmemsi_loop_unknown_size,
	nds32_expand_movmemsi_loop_known_size, nds32_expand_movmemsi_loop,
	nds32_expand_movmemsi_unroll,
	nds32_expand_movmemsi): Change movmem to cpymem.
	* config/nds32/nds32-multiple.md (movmemsi): Change name to cpymemsi.
	* config/nds32/nds32-protos.h: Change movmem to cpymem.
	* config/pa/pa.c (compute_movmem_length): Change movmem to cpymem.
	(pa_adjust_insn_length): Change call to compute_movmem_length.
	* config/pa/pa.md (movmemsi, movmemsi_prereload, movmemsi_postreload,
	movmemdi, movmemdi_prereload, 
	movmemdi_postreload): Change movmem to cpymem.
	* config/pdp11/pdp11.md (movmemhi, movmemhi1, 
	movmemhi_nocc, UNSPEC_MOVMEM): Change movmem to cpymem.
	* config/riscv/riscv.c: Change movmem to cpymem in comment.
	* config/riscv/riscv.h: Change movmem to cpymem.
	* config/riscv/riscv.md: (movmemsi) Change name to cpymemsi.
	* config/rs6000/rs6000.md: (movmemsi) Change name to cpymemsi.
	* config/rx/rx.md: (UNSPEC_MOVMEM, movmemsi, rx_movmem): Change
	movmem to cpymem.
	* config/s390/s390-protos.h: Change movmem to cpymem.
	* config/s390/s390.c (s390_expand_movmem, s390_expand_setmem,
	s390_expand_insv): Change movmem to cpymem.
	* config/s390/s390.md (movmem<mode>, movmem_short, *movmem_short,
	movmem_long, *movmem_long, *movmem_long_31z): Change movmem to cpymem.
	* config/sh/sh.md (movmemsi): Change name to cpymemsi.
	* config/sparc/sparc.h: Change movmem to cpymem in comment.
	* config/vax/vax-protos.h (vax_output_movmemsi): Remove prototype
	for nonexistent function.
	* config/vax/vax.h: Change movmem to cpymem in comment.
	* config/vax/vax.md (movmemhi, movmemhi1): Change movmem to cpymem.
	* config/visium/visium.h: Change movmem to cpymem in comment.
	* config/visium/visium.md (movmemsi): Change name to cpymemsi.
	* config/xtensa/xtensa.md (movmemsi): Change name to cpymemsi.
	* doc/md.texi: Change movmem to cpymem and update description to match.
	* doc/rtl.texi: Change movmem to cpymem.
	* target.def (use_by_pieces_infrastructure_p): Change movmem to cpymem.
        * doc/tm.texi: Regenerate.

From-SVN: r272755
2019-06-27 09:45:36 -05: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 49adc46180 S/390: arch13: vector string search builtins
gcc/ChangeLog:

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

	* config/s390/s390-builtin-types.def: New builtin function type
	definitions.
	* config/s390/s390-builtins.def (s390_vec_search_string_cc)
	(s390_vec_search_string_until_zero_cc): New overloaded builtins.
	(s390_vstrsb, s390_vstrsh, s390_vstrsf, s390_vstrszb)
	(s390_vstrszh, s390_vstrszf): New low-level builtins.
	* config/s390/s390.md (UNSPEC_VEC_VSTRS, UNSPEC_VEC_VSTRSCC): New
	constant definitions.
	* config/s390/vecintrin.h (vec_search_string_cc)
	(vec_search_string_until_zero_cc): New builtin name definitions.
	* config/s390/vx-builtins.md ("vstrs<mode>", "vstrsz<mode>"): New
	expanders.
	("vec_vstrs<mode>"): New insn definition.

gcc/testsuite/ChangeLog:

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

	* gcc.target/s390/zvector/vec-search-string-cc-1.c: New test.
	* gcc.target/s390/zvector/vec-search-string-cc-compile.c: New test.
	* gcc.target/s390/zvector/vec-search-string-until-zero-cc-1.c: New test.
	* gcc.target/s390/zvector/vec-search-string-until-zero-cc-compile.c: New test.

From-SVN: r270090
2019-04-02 11:08:54 +00:00
Andreas Krebbel ad7a3e3997 S/390: arch13: vector shift double by bit builtins
gcc/ChangeLog:

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

	* config/s390/s390-builtin-types.def: Add new builtin function
	types.
	* config/s390/s390-builtins.def (s390_vec_sldb, s390_vec_srdb):
	New overloaded builtins.
	(s390_vec_sldb, s390_vec_srdb): New low-level builtins.  and
	s390_vsrd.
	* config/s390/s390.md (UNSPEC_VEC_SLDB): Rename to ...
	(UNSPEC_VEC_SLDBYTE): ... this.
	(UNSPEC_VEC_SLDBIT, UNSPEC_VEC_SRDBIT): New constant definitions.
	* config/s390/vecintrin.h (vec_sldb, vec_srdb): New builtin name
	definitions.
	* config/s390/vx-builtins.md ("vec_sld<mode>", "vec_sldw<mode>"):
	Rename UNSPEC_VEC_SLDB to UNSPEC_VEC_SLDBYTE.
	("vec_sldb<mode>", "vec_srdb<mode>"): New insn definitions.

gcc/testsuite/ChangeLog:

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

	* gcc.target/s390/zvector/vec-shift-left-double-by-bit-1.c: New test.
	* gcc.target/s390/zvector/vec-shift-right-double-by-bit-1.c: New test.

From-SVN: r270089
2019-04-02 11:07:44 +00:00
Andreas Krebbel 3278804e59 S/390: arch13: vec_reve element order reversal builtins
gcc/ChangeLog:

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

	* config/s390/s390-builtin-types.def: Add new builtin function type.
	* config/s390/s390-builtins.def: Add overloaded builtin
	s390_vec_reve and low-level builtins for s390_vler and s390_vster.
	* config/s390/s390.md (UNSPEC_VEC_ELTSWAP): New constant definition.
	* config/s390/vecintrin.h (vec_reve): New builtin name definition.
	* config/s390/vx-builtins.md (V_HW_HSD): New mode iterator.
	("eltswap<mode>"): New expander.
	("*eltswapv16qi", "*eltswap<mode>", "*eltswap<mode>_emu"): New
	insn definitions.

gcc/testsuite/ChangeLog:

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

	* gcc.target/s390/zvector/vec-reve-load-byte-z14.c: New test.
	* gcc.target/s390/zvector/vec-reve-load-byte.c: New test.
	* gcc.target/s390/zvector/vec-reve-load-halfword-z14.c: New test.
	* gcc.target/s390/zvector/vec-reve-load-halfword.c: New test.
	* gcc.target/s390/zvector/vec-reve-store-byte-z14.c: New test.
	* gcc.target/s390/zvector/vec-reve-store-byte.c: New test.

From-SVN: r270085
2019-04-02 11:02:22 +00:00
Andreas Krebbel 026bfe8937 S/390: arch13: Support 32 bit fp-int scalar converts
gcc/ChangeLog:

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

	* config/s390/s390.md (VX_CONV_BFP, VX_CONV_INT): New mode
	iterators.
	(SFSI): New mode attribute.
	("*fixuns_truncdfdi2_vx", "*fix_truncdfdi2_bfp_z13")
	("*floatunsdidf2_z13", ): Add support for 32 bit conversions and
	rename to ...
	("*fixuns_trunc<VX_CONV_BFP:mode><VX_CONV_INT:mode>2_z13")
	("*fix_trunc<VX_CONV_BFP:mode><VX_CONV_INT:mode>2_bfp_z13")
	("*floatuns<VX_CONV_INT:mode><VX_CONV_BFP:mode>2_z13"): ... these.
	("floatsi<mode>2"): Add wcefb instruction.

From-SVN: r270082
2019-04-02 10:58:33 +00:00
Andreas Krebbel 4156b05639 S/390: arch13: Support 32 bit fp-int vector converts
gcc/ChangeLog:

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

	* config/s390/s390.md ("xde"): Extend mode attribute to vector
	types.
	* config/s390/vector.md (VX_VEC_CONV_BFP, VX_VEC_CONV_INT): New
	mode iterators.
	("floatv2div2df2", "floatunsv2div2df2", "fix_truncv2dfv2di2")
	("fixuns_truncv2dfv2di2"): Enhance with mode iterator to also
	support 32 bit fp-int conversions. Rename to ...
	("float<VX_VEC_CONV_INT:mode><VX_VEC_CONV_BFP:mode>2")
	("floatuns<VX_VEC_CONV_INT:mode><VX_VEC_CONV_BFP:mode>2")
	("fix_trunc<VX_VEC_CONV_BFP:mode><VX_VEC_CONV_INT:mode>2")
	("fixuns_trunc<VX_VEC_CONV_BFP:mode><VX_VEC_CONV_INT:mode>2"):
	... to these.

gcc/testsuite/ChangeLog:

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

	* gcc.target/s390/arch13/fp-signedint-convert-1.c: New test.
	* gcc.target/s390/arch13/fp-unsignedint-convert-1.c: New test.

From-SVN: r270081
2019-04-02 10:57:39 +00:00
Andreas Krebbel 618eef38d9 S/390: arch13: Add support for new select instruction
Compared to the load on condition instructions we already have the new
select instruction allows to have a THEN and and ELSE source operand -
but only for register to register loads.

gcc/ChangeLog:

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

	* config/s390/s390.c (s390_rtx_costs): Do not add extra costs for
	if-then-else constructs if we can use the select instruction.
	* config/s390/s390.md ("*mov<mode>cc"): Add the new instructions.

gcc/testsuite/ChangeLog:

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

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

From-SVN: r270080
2019-04-02 10:56:34 +00:00
Andreas Krebbel 25cb5165c1 S/390: arch13: Support new popcount instruction
variant.

The new arch13 popcount instruction counts bits in the entire 64 bit
register instead of just in 8 bit portions.

gcc/ChangeLog:

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

	* config/s390/s390.md ("*popcountdi_arch13_cc")
	("*popcountdi_arch13_cconly", "*popcountdi_arch13"): New insn
	definition.
	("*popcount<mode>", "popcountdi2", "popcountsi2", "popcounthi2"):
	Append _z196 to make it ...
	("*popcount<mode>_z196", "popcountdi2_z196", "popcountsi2_z196")
	("popcounthi2_z196"): ... this.
	("popcountdi2_z196"): Remove TARGET_64BIT from the insn condition.
	("popcountdi2", "popcountsi2", "popcounthi2"): New expanders.

gcc/testsuite/ChangeLog:

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

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

From-SVN: r270079
2019-04-02 10:55:26 +00:00
Andreas Krebbel 4a9733f3df S/390: arch13: Support new bit operations
Make use of the new bit operation instructions when generating code
for the arch13 level.

gcc/ChangeLog:

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

	* config/s390/s390.c (s390_canonicalize_comparison): Convert
	certain compares for arch13 in order to make use of the condition
	code result produced by the new instructions.
	(s390_rtx_costs): Adjust the costs for nnrk, nngrk, nork, nogrk,
	nxrk, and nxgrk instruction patterns.
	* config/s390/s390.md (ANDOR, bitops_name, inv_bitops_name)
	(inv_no): Add new code iterator together with some attributes.
	("*andc_split_<mode>"): Disable splitter for arch13.
	("*<ANDOR:bitops_name>c<GPR:mode>_cc")
	("*<ANDOR:bitops_name>c<GPR:mode>_cconly")
	("*<ANDOR:bitops_name>c<GPR:mode>")
	("*n<ANDOR:inv_bitops_name><GPR:mode>_cc")
	("*n<ANDOR:inv_bitops_name><mode>_cconly")
	("*n<ANDOR:inv_bitops_name><mode>", "*nxor<GPR:mode>_cc")
	("*nxor<mode>_cconly", "*nxor<mode>"): New insn definitions.

gcc/testsuite/ChangeLog:

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

	* gcc.target/s390/arch13/bitops-1.c: New test.
	* gcc.target/s390/arch13/bitops-2.c: New test.
	* gcc.target/s390/md/andc-splitter-1.c: Add -march=z14 build
	option and adjust line numbers.
	* gcc.target/s390/md/andc-splitter-2.c: Likewise.

From-SVN: r270078
2019-04-02 10:51:53 +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