On Thu, May 25, 2017 at 2:25 AM, Richard Earnshaw (lists) <richard.earns...@arm.com> wrote: > Having pondered this over night, I think the lowest risk thing to do, > provided it applies cleanly to the gcc-7 branch, is just commit the > entire patch on the branch and be done with it. The risk from removing > this code is pretty minimal and removing it all is the best way of > avoiding things like unexpected compiler warnings breaking the build. > If it doesn't apply cleanly, then just drop the documentation.
The patch backports cleanly. I've tested the patch on the gcc-7-branch, with both armv8 and aarch64 bootstraps and make checks, with no regressions. Ok to check in? Jim
gcc/ * config/aarch64/aarch64-cost-tables.h (qdf24xx_extra_costs): Move to here. * config/arm/aarch-cost-tables.h (qdf24xx_extra_costs): From here. * config/arm/arm-cpu-cdata.h: Regenerate. * config/arm/arm-cpu-data.h, config/arm/arm-cpu.h: Likewise. * config/arm/arm-tables.opt, config/arm/arm-tune.md: Likewise. * config/arm/arm-cpus.in: Delete falkor and qdf24xx entries. * config/arm/arm.c (arm_qdf24xx_tune): Delete. * config/arm/bpabi.h (BE8_LINK_SPEC): Delete falkor and qdf24xx support. * config/arm/t-aprofile (MULTILIB_MATCHES): Delete falkor and qdf24xx support. * config/arm/t-rmprofile: Likewise. * doc/invoke.texi (ARM Options): Drop falkor and qdf24xx support. Index: gcc/config/aarch64/aarch64-cost-tables.h =================================================================== --- gcc/config/aarch64/aarch64-cost-tables.h (revision 249025) +++ gcc/config/aarch64/aarch64-cost-tables.h (working copy) @@ -23,7 +23,111 @@ #include "config/arm/aarch-cost-tables.h" -/* ThunderX does not have implement AArch32. */ +/* QDF24xx does not implement AArch32. */ +const struct cpu_cost_table qdf24xx_extra_costs = +{ + /* ALU */ + { + 0, /* arith. */ + 0, /* logical. */ + 0, /* shift. */ + 0, /* shift_reg. */ + COSTS_N_INSNS (1), /* arith_shift. */ + COSTS_N_INSNS (1), /* arith_shift_reg. */ + 0, /* log_shift. */ + 0, /* log_shift_reg. */ + 0, /* extend. */ + 0, /* extend_arith. */ + 0, /* bfi. */ + 0, /* bfx. */ + 0, /* clz. */ + 0, /* rev. */ + 0, /* non_exec. */ + true /* non_exec_costs_exec. */ + }, + { + /* MULT SImode */ + { + COSTS_N_INSNS (2), /* simple. */ + COSTS_N_INSNS (2), /* flag_setting. */ + COSTS_N_INSNS (2), /* extend. */ + COSTS_N_INSNS (2), /* add. */ + COSTS_N_INSNS (2), /* extend_add. */ + COSTS_N_INSNS (4) /* idiv. */ + }, + /* MULT DImode */ + { + COSTS_N_INSNS (3), /* simple. */ + 0, /* flag_setting (N/A). */ + COSTS_N_INSNS (3), /* extend. */ + COSTS_N_INSNS (3), /* add. */ + COSTS_N_INSNS (3), /* extend_add. */ + COSTS_N_INSNS (9) /* idiv. */ + } + }, + /* LD/ST */ + { + COSTS_N_INSNS (2), /* load. */ + COSTS_N_INSNS (2), /* load_sign_extend. */ + COSTS_N_INSNS (2), /* ldrd. */ + COSTS_N_INSNS (2), /* ldm_1st. */ + 1, /* ldm_regs_per_insn_1st. */ + 2, /* ldm_regs_per_insn_subsequent. */ + COSTS_N_INSNS (2), /* loadf. */ + COSTS_N_INSNS (2), /* loadd. */ + COSTS_N_INSNS (3), /* load_unaligned. */ + 0, /* store. */ + 0, /* strd. */ + 0, /* stm_1st. */ + 1, /* stm_regs_per_insn_1st. */ + 2, /* stm_regs_per_insn_subsequent. */ + 0, /* storef. */ + 0, /* stored. */ + COSTS_N_INSNS (1), /* store_unaligned. */ + COSTS_N_INSNS (1), /* loadv. */ + COSTS_N_INSNS (1) /* storev. */ + }, + { + /* FP SFmode */ + { + COSTS_N_INSNS (6), /* div. */ + COSTS_N_INSNS (5), /* mult. */ + COSTS_N_INSNS (5), /* mult_addsub. */ + COSTS_N_INSNS (5), /* fma. */ + COSTS_N_INSNS (3), /* addsub. */ + COSTS_N_INSNS (1), /* fpconst. */ + COSTS_N_INSNS (1), /* neg. */ + COSTS_N_INSNS (2), /* compare. */ + COSTS_N_INSNS (4), /* widen. */ + COSTS_N_INSNS (4), /* narrow. */ + COSTS_N_INSNS (4), /* toint. */ + COSTS_N_INSNS (4), /* fromint. */ + COSTS_N_INSNS (2) /* roundint. */ + }, + /* FP DFmode */ + { + COSTS_N_INSNS (11), /* div. */ + COSTS_N_INSNS (6), /* mult. */ + COSTS_N_INSNS (6), /* mult_addsub. */ + COSTS_N_INSNS (6), /* fma. */ + COSTS_N_INSNS (3), /* addsub. */ + COSTS_N_INSNS (1), /* fpconst. */ + COSTS_N_INSNS (1), /* neg. */ + COSTS_N_INSNS (2), /* compare. */ + COSTS_N_INSNS (4), /* widen. */ + COSTS_N_INSNS (4), /* narrow. */ + COSTS_N_INSNS (4), /* toint. */ + COSTS_N_INSNS (4), /* fromint. */ + COSTS_N_INSNS (2) /* roundint. */ + } + }, + /* Vector */ + { + COSTS_N_INSNS (1) /* alu. */ + } +}; + +/* ThunderX does not implement AArch32. */ const struct cpu_cost_table thunderx_extra_costs = { /* ALU */ @@ -230,6 +334,4 @@ const struct cpu_cost_table thunderx2t99_extra_cos } }; - #endif - Index: gcc/config/arm/aarch-cost-tables.h =================================================================== --- gcc/config/arm/aarch-cost-tables.h (revision 249025) +++ gcc/config/arm/aarch-cost-tables.h (working copy) @@ -537,107 +537,4 @@ const struct cpu_cost_table xgene1_extra_costs = } }; -const struct cpu_cost_table qdf24xx_extra_costs = -{ - /* ALU */ - { - 0, /* arith. */ - 0, /* logical. */ - 0, /* shift. */ - 0, /* shift_reg. */ - COSTS_N_INSNS (1), /* arith_shift. */ - COSTS_N_INSNS (1), /* arith_shift_reg. */ - 0, /* log_shift. */ - 0, /* log_shift_reg. */ - 0, /* extend. */ - 0, /* extend_arith. */ - 0, /* bfi. */ - 0, /* bfx. */ - 0, /* clz. */ - 0, /* rev. */ - 0, /* non_exec. */ - true /* non_exec_costs_exec. */ - }, - { - /* MULT SImode */ - { - COSTS_N_INSNS (2), /* simple. */ - COSTS_N_INSNS (2), /* flag_setting. */ - COSTS_N_INSNS (2), /* extend. */ - COSTS_N_INSNS (2), /* add. */ - COSTS_N_INSNS (2), /* extend_add. */ - COSTS_N_INSNS (4) /* idiv. */ - }, - /* MULT DImode */ - { - COSTS_N_INSNS (3), /* simple. */ - 0, /* flag_setting (N/A). */ - COSTS_N_INSNS (3), /* extend. */ - COSTS_N_INSNS (3), /* add. */ - COSTS_N_INSNS (3), /* extend_add. */ - COSTS_N_INSNS (9) /* idiv. */ - } - }, - /* LD/ST */ - { - COSTS_N_INSNS (2), /* load. */ - COSTS_N_INSNS (2), /* load_sign_extend. */ - COSTS_N_INSNS (2), /* ldrd. */ - COSTS_N_INSNS (2), /* ldm_1st. */ - 1, /* ldm_regs_per_insn_1st. */ - 2, /* ldm_regs_per_insn_subsequent. */ - COSTS_N_INSNS (2), /* loadf. */ - COSTS_N_INSNS (2), /* loadd. */ - COSTS_N_INSNS (3), /* load_unaligned. */ - 0, /* store. */ - 0, /* strd. */ - 0, /* stm_1st. */ - 1, /* stm_regs_per_insn_1st. */ - 2, /* stm_regs_per_insn_subsequent. */ - 0, /* storef. */ - 0, /* stored. */ - COSTS_N_INSNS (1), /* store_unaligned. */ - COSTS_N_INSNS (1), /* loadv. */ - COSTS_N_INSNS (1) /* storev. */ - }, - { - /* FP SFmode */ - { - COSTS_N_INSNS (6), /* div. */ - COSTS_N_INSNS (5), /* mult. */ - COSTS_N_INSNS (5), /* mult_addsub. */ - COSTS_N_INSNS (5), /* fma. */ - COSTS_N_INSNS (3), /* addsub. */ - COSTS_N_INSNS (1), /* fpconst. */ - COSTS_N_INSNS (1), /* neg. */ - COSTS_N_INSNS (2), /* compare. */ - COSTS_N_INSNS (4), /* widen. */ - COSTS_N_INSNS (4), /* narrow. */ - COSTS_N_INSNS (4), /* toint. */ - COSTS_N_INSNS (4), /* fromint. */ - COSTS_N_INSNS (2) /* roundint. */ - }, - /* FP DFmode */ - { - COSTS_N_INSNS (11), /* div. */ - COSTS_N_INSNS (6), /* mult. */ - COSTS_N_INSNS (6), /* mult_addsub. */ - COSTS_N_INSNS (6), /* fma. */ - COSTS_N_INSNS (3), /* addsub. */ - COSTS_N_INSNS (1), /* fpconst. */ - COSTS_N_INSNS (1), /* neg. */ - COSTS_N_INSNS (2), /* compare. */ - COSTS_N_INSNS (4), /* widen. */ - COSTS_N_INSNS (4), /* narrow. */ - COSTS_N_INSNS (4), /* toint. */ - COSTS_N_INSNS (4), /* fromint. */ - COSTS_N_INSNS (2) /* roundint. */ - } - }, - /* Vector */ - { - COSTS_N_INSNS (1) /* alu. */ - } -}; - #endif /* GCC_AARCH_COST_TABLES_H */ Index: gcc/config/arm/arm-cpu-cdata.h =================================================================== --- gcc/config/arm/arm-cpu-cdata.h (revision 249025) +++ gcc/config/arm/arm-cpu-cdata.h (working copy) @@ -740,20 +740,6 @@ static const struct arm_arch_core_flag arm_arch_co }, }, { - "falkor", - { - ISA_ARMv8a,isa_bit_crc32, - isa_nobit - }, - }, - { - "qdf24xx", - { - ISA_ARMv8a,isa_bit_crc32, - isa_nobit - }, - }, - { "xgene1", { ISA_ARMv8a, Index: gcc/config/arm/arm-cpu-data.h =================================================================== --- gcc/config/arm/arm-cpu-data.h (revision 249025) +++ gcc/config/arm/arm-cpu-data.h (working copy) @@ -1144,28 +1144,6 @@ static const struct processors all_cores[] = &arm_exynosm1_tune }, { - "falkor", - TARGET_CPU_cortexa57, - (TF_LDSCHED), - "8A", BASE_ARCH_8A, - { - ISA_ARMv8a,isa_bit_crc32, - isa_nobit - }, - &arm_qdf24xx_tune - }, - { - "qdf24xx", - TARGET_CPU_cortexa57, - (TF_LDSCHED), - "8A", BASE_ARCH_8A, - { - ISA_ARMv8a,isa_bit_crc32, - isa_nobit - }, - &arm_qdf24xx_tune - }, - { "xgene1", TARGET_CPU_xgene1, (TF_LDSCHED), Index: gcc/config/arm/arm-cpu.h =================================================================== --- gcc/config/arm/arm-cpu.h (revision 249025) +++ gcc/config/arm/arm-cpu.h (working copy) @@ -123,8 +123,6 @@ enum processor_type TARGET_CPU_cortexa72, TARGET_CPU_cortexa73, TARGET_CPU_exynosm1, - TARGET_CPU_falkor, - TARGET_CPU_qdf24xx, TARGET_CPU_xgene1, TARGET_CPU_cortexa57cortexa53, TARGET_CPU_cortexa72cortexa53, Index: gcc/config/arm/arm-cpus.in =================================================================== --- gcc/config/arm/arm-cpus.in (revision 249025) +++ gcc/config/arm/arm-cpus.in (working copy) @@ -1020,20 +1020,6 @@ begin cpu exynos-m1 costs exynosm1 end cpu exynos-m1 -begin cpu falkor - tune for cortex-a57 - tune flags LDSCHED - architecture armv8-a+crc - costs qdf24xx -end cpu falkor - -begin cpu qdf24xx - tune for cortex-a57 - tune flags LDSCHED - architecture armv8-a+crc - costs qdf24xx -end cpu qdf24xx - begin cpu xgene1 tune flags LDSCHED architecture armv8-a Index: gcc/config/arm/arm-tables.opt =================================================================== --- gcc/config/arm/arm-tables.opt (revision 249025) +++ gcc/config/arm/arm-tables.opt (working copy) @@ -328,12 +328,6 @@ EnumValue Enum(processor_type) String(exynos-m1) Value( TARGET_CPU_exynosm1) EnumValue -Enum(processor_type) String(falkor) Value( TARGET_CPU_falkor) - -EnumValue -Enum(processor_type) String(qdf24xx) Value( TARGET_CPU_qdf24xx) - -EnumValue Enum(processor_type) String(xgene1) Value( TARGET_CPU_xgene1) EnumValue Index: gcc/config/arm/arm-tune.md =================================================================== --- gcc/config/arm/arm-tune.md (revision 249025) +++ gcc/config/arm/arm-tune.md (working copy) @@ -54,8 +54,7 @@ cortexm3,marvell_pj4,cortexa15cortexa7, cortexa17cortexa7,cortexa32,cortexa35, cortexa53,cortexa57,cortexa72, - cortexa73,exynosm1,falkor, - qdf24xx,xgene1,cortexa57cortexa53, - cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53, - cortexm23,cortexm33" + cortexa73,exynosm1,xgene1, + cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35, + cortexa73cortexa53,cortexm23,cortexm33" (const (symbol_ref "((enum attr_tune) arm_tune)"))) Index: gcc/config/arm/arm.c =================================================================== --- gcc/config/arm/arm.c (revision 249025) +++ gcc/config/arm/arm.c (working copy) @@ -2090,28 +2090,6 @@ const struct tune_params arm_xgene1_tune = tune_params::SCHED_AUTOPREF_OFF }; -const struct tune_params arm_qdf24xx_tune = -{ - &qdf24xx_extra_costs, - NULL, /* Scheduler cost adjustment. */ - arm_default_branch_cost, - &arm_default_vec_cost, /* Vectorizer costs. */ - 1, /* Constant limit. */ - 2, /* Max cond insns. */ - 8, /* Memset max inline. */ - 4, /* Issue rate. */ - ARM_PREFETCH_BENEFICIAL (0, -1, 64), - tune_params::PREF_CONST_POOL_FALSE, - tune_params::PREF_LDRD_TRUE, - tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE, /* Thumb. */ - tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE, /* ARM. */ - tune_params::DISPARAGE_FLAGS_ALL, - tune_params::PREF_NEON_64_FALSE, - tune_params::PREF_NEON_STRINGOPS_TRUE, - FUSE_OPS (tune_params::FUSE_MOVW_MOVT), - tune_params::SCHED_AUTOPREF_FULL -}; - /* Branches can be dual-issued on Cortex-A5, so conditional execution is less appealing. Set max_insns_skipped to a low value. */ Index: gcc/config/arm/bpabi.h =================================================================== --- gcc/config/arm/bpabi.h (revision 249025) +++ gcc/config/arm/bpabi.h (working copy) @@ -79,8 +79,6 @@ |mcpu=cortex-a73.cortex-a35 \ |mcpu=cortex-a73.cortex-a53 \ |mcpu=exynos-m1 \ - |mcpu=falkor \ - |mcpu=qdf24xx \ |mcpu=xgene1 \ |mcpu=cortex-m1.small-multiply \ |mcpu=cortex-m0.small-multiply \ @@ -118,8 +116,6 @@ |mcpu=cortex-a73.cortex-a35 \ |mcpu=cortex-a73.cortex-a53 \ |mcpu=exynos-m1 \ - |mcpu=falkor \ - |mcpu=qdf24xx \ |mcpu=xgene1 \ |mcpu=cortex-m1.small-multiply \ |mcpu=cortex-m0.small-multiply \ Index: gcc/config/arm/t-aprofile =================================================================== --- gcc/config/arm/t-aprofile (revision 249025) +++ gcc/config/arm/t-aprofile (working copy) @@ -92,8 +92,6 @@ MULTILIB_MATCHES += march?armv8-a=mcpu?corte MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a73.cortex-a35 MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a73.cortex-a53 MULTILIB_MATCHES += march?armv8-a=mcpu?exynos-m1 -MULTILIB_MATCHES += march?armv8-a=mcpu?falkor -MULTILIB_MATCHES += march?armv8-a=mcpu?qdf24xx MULTILIB_MATCHES += march?armv8-a=mcpu?xgene1 # Arch Matches Index: gcc/config/arm/t-rmprofile =================================================================== --- gcc/config/arm/t-rmprofile (revision 249025) +++ gcc/config/arm/t-rmprofile (working copy) @@ -131,7 +131,6 @@ MULTILIB_MATCHES += march?armv7=mcpu?cortex- MULTILIB_MATCHES += march?armv7=mcpu?cortex-a73.cortex-a35 MULTILIB_MATCHES += march?armv7=mcpu?cortex-a73.cortex-a53 MULTILIB_MATCHES += march?armv7=mcpu?exynos-m1 -MULTILIB_MATCHES += march?armv7=mcpu?qdf24xx MULTILIB_MATCHES += march?armv7=mcpu?xgene1 # Arch Matches Index: gcc/doc/invoke.texi =================================================================== --- gcc/doc/invoke.texi (revision 249025) +++ gcc/doc/invoke.texi (working copy) @@ -13983,8 +13983,8 @@ processors implementing the target architecture. Specify the name of the target processor for which GCC should tune the performance of the code. Permissible values for this option are: @samp{generic}, @samp{cortex-a35}, @samp{cortex-a53}, @samp{cortex-a57}, -@samp{cortex-a72}, @samp{cortex-a73}, @samp{exynos-m1}, @samp{falkor}, -@samp{qdf24xx}, @samp{xgene1}, @samp{vulcan}, @samp{thunderx}, +@samp{cortex-a72}, @samp{cortex-a73}, @samp{exynos-m1}, +@samp{xgene1}, @samp{vulcan}, @samp{thunderx}, @samp{thunderxt88}, @samp{thunderxt88p1}, @samp{thunderxt81}, @samp{thunderxt83}, @samp{thunderx2t99}, @samp{cortex-a57.cortex-a53}, @samp{cortex-a72.cortex-a53}, @samp{cortex-a73.cortex-a35},