arm - use the new CPU alias option to simplify the list of CPUs.
authorRichard Earnshaw <rearnsha@arm.com>
Fri, 9 Nov 2018 10:58:59 +0000 (10:58 +0000)
committerRichard Earnshaw <rearnsha@gcc.gnu.org>
Fri, 9 Nov 2018 10:58:59 +0000 (10:58 +0000)
This patch simplifies the table of CPUs supported in GCC by making
use of the new alias feature.  Most of the changes are fairly
straight-forward:
- arm7tdmi and arm7tdmi-s are the same thing.
- arm710t, arm720t and arm740t differ only in features external to the core
- arm920 and arm920t are the same thing; arm922t and arm940t differ from
  arm920t only in features external to the core; ep9312 is an arm920t-derived
  core that we continue to recognize for legacy reasons.
- arm10tdmi and arm1020t differ only in features external to the core.
- arm9e, arm946te-s, arm966e-s and arm968e-s differ only in features external
  to the core.
- arm10e, arm1020e and arm1022e differ only in features external to the core.

The arm10e/arm1020e/arm1022e change is the only one which changes
behaviour of the compiler slightly.  Previously, and for no reason
that I can remember, the scheduler for arm1020e/arm1022e was not used
for arm10e: this was probably an oversight.  The unification means
that the same scheduler is now used for all three cores.

* config/arm/arm-cpus.in (arm7tdmi): Add an alias for arm7tdmi-s.
(arm7tdmi-s): Delete CPU.
(arm710t): Add aliases for arm720t and arm740t.
(arm720t, arm740t): Delete CPUs.
(arm920t): Add aliases for arm920, arm922t and arm940t.
(arm920, arm922t, arm940t): Delete CPUs.
(arm10tdmi): Add alias for arm1020t.
(arm1020t): Delete CPU.
(arm9e): Add aliases for arm946e-s, arm966e-s and arm968e-s.
(arm946e-s, arm966e-s, arm968e-s): Delete CPUs.
(arm10e): Add aliases for arm1020e and arm1022e.
(arm1020e, arm1022e): Delete CPU.
* config/arm/arm.md (generic_sched): Remove entries that are now
handled by aliases.
(generic_vfp): Likewise.
* config/arm/arm1020e.md: Simplify tuning selection based on alias
changes.
* config/arm/arm-tune.md: Regenerated.
* config/arm/arm-tables.opt: Regenerated.

From-SVN: r265960

gcc/ChangeLog
gcc/config/arm/arm-cpus.in
gcc/config/arm/arm-tables.opt
gcc/config/arm/arm-tune.md
gcc/config/arm/arm.md
gcc/config/arm/arm1020e.md

index ff8f822..953f3e3 100644 (file)
@@ -1,3 +1,25 @@
+2018-11-09  Richard Earnshaw  <rearnsha@arm.com>
+
+       * config/arm/arm-cpus.in (arm7tdmi): Add an alias for arm7tdmi-s.
+       (arm7tdmi-s): Delete CPU.
+       (arm710t): Add aliases for arm720t and arm740t.
+       (arm720t, arm740t): Delete CPUs.
+       (arm920t): Add aliases for arm920, arm922t and arm940t.
+       (arm920, arm922t, arm940t): Delete CPUs.
+       (arm10tdmi): Add alias for arm1020t.
+       (arm1020t): Delete CPU.
+       (arm9e): Add aliases for arm946e-s, arm966e-s and arm968e-s.
+       (arm946e-s, arm966e-s, arm968e-s): Delete CPUs.
+       (arm10e): Add aliases for arm1020e and arm1022e.
+       (arm1020e, arm1022e): Delete CPU.
+       * config/arm/arm.md (generic_sched): Remove entries that are now
+       handled by aliases.
+       (generic_vfp): Likewise.
+       * config/arm/arm1020e.md: Simplify tuning selection based on alias
+       changes.
+       * config/arm/arm-tune.md: Regenerated.
+       * config/arm/arm-tables.opt: Regenerated.
+
 2018-11-09  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/87621
index 1def1ca..7189fc9 100644 (file)
@@ -683,36 +683,19 @@ end cpu fa626
 
 # V4T Architecture Processors
 begin cpu arm7tdmi
+ alias arm7tdmi-s
  tune flags CO_PROC
  architecture armv4t
  costs fastmul
 end cpu arm7tdmi
 
-begin cpu arm7tdmi-s
- cname arm7tdmis
- tune flags CO_PROC
- architecture armv4t
- costs fastmul
-end cpu arm7tdmi-s
-
 begin cpu arm710t
+ alias arm720t arm740t
  tune flags WBUF
  architecture armv4t
  costs fastmul
 end cpu arm710t
 
-begin cpu arm720t
- tune flags WBUF
- architecture armv4t
- costs fastmul
-end cpu arm720t
-
-begin cpu arm740t
- tune flags WBUF
- architecture armv4t
- costs fastmul
-end cpu arm740t
-
 begin cpu arm9
  tune flags LDSCHED
  architecture armv4t
@@ -725,105 +708,41 @@ begin cpu arm9tdmi
  costs fastmul
 end cpu arm9tdmi
 
-begin cpu arm920
- tune flags LDSCHED
- architecture armv4t
- costs fastmul
-end cpu arm920
-
 begin cpu arm920t
+ alias arm920 arm922t arm940t ep9312
  tune flags LDSCHED
  architecture armv4t
  costs fastmul
 end cpu arm920t
 
-begin cpu arm922t
- tune flags LDSCHED
- architecture armv4t
- costs fastmul
-end cpu arm922t
-
-begin cpu arm940t
- tune flags LDSCHED
- architecture armv4t
- costs fastmul
-end cpu arm940t
-
-begin cpu ep9312
- tune flags LDSCHED
- architecture armv4t
- costs fastmul
-end cpu ep9312
-
 
 # V5T Architecture Processors
 # These used VFPv1 which isn't supported by GCC
 begin cpu arm10tdmi
+ alias arm1020t
  tune flags LDSCHED
  architecture armv5t
  costs fastmul
 end cpu arm10tdmi
 
-begin cpu arm1020t
- tune flags LDSCHED
- architecture armv5t
- costs fastmul
-end cpu arm1020t
-
 
 # V5TE Architecture Processors
 begin cpu arm9e
+ alias arm946e-s arm966e-s arm968e-s
  tune flags LDSCHED
  architecture armv5te+fp
  option nofp remove ALL_FP
  costs 9e
 end cpu arm9e
 
-begin cpu arm946e-s
- cname arm946es
- tune flags LDSCHED
- architecture armv5te+fp
- option nofp remove ALL_FP
- costs 9e
-end cpu arm946e-s
-
-begin cpu arm966e-s
- cname arm966es
- tune flags LDSCHED
- architecture armv5te+fp
- option nofp remove ALL_FP
- costs 9e
-end cpu arm966e-s
-
-begin cpu arm968e-s
- cname arm968es
- tune flags LDSCHED
- architecture armv5te+fp
- option nofp remove ALL_FP
- costs 9e
-end cpu arm968e-s
-
 begin cpu arm10e
+ alias arm1020e arm1022e
  tune flags LDSCHED
  architecture armv5te+fp
  option nofp remove ALL_FP
  costs fastmul
 end cpu arm10e
 
-begin cpu arm1020e
- tune flags LDSCHED
- architecture armv5te+fp
- option nofp remove ALL_FP
- costs fastmul
-end cpu arm1020e
-
-begin cpu arm1022e
- tune flags LDSCHED
- architecture armv5te+fp
- option nofp remove ALL_FP
- costs fastmul
-end cpu arm1022e
-
 begin cpu xscale
  tune flags LDSCHED XSCALE
  architecture armv5te
index cd49636..b314ec3 100644 (file)
@@ -43,66 +43,27 @@ EnumValue
 Enum(processor_type) String(arm7tdmi) Value( TARGET_CPU_arm7tdmi)
 
 EnumValue
-Enum(processor_type) String(arm7tdmi-s) Value( TARGET_CPU_arm7tdmis)
-
-EnumValue
 Enum(processor_type) String(arm710t) Value( TARGET_CPU_arm710t)
 
 EnumValue
-Enum(processor_type) String(arm720t) Value( TARGET_CPU_arm720t)
-
-EnumValue
-Enum(processor_type) String(arm740t) Value( TARGET_CPU_arm740t)
-
-EnumValue
 Enum(processor_type) String(arm9) Value( TARGET_CPU_arm9)
 
 EnumValue
 Enum(processor_type) String(arm9tdmi) Value( TARGET_CPU_arm9tdmi)
 
 EnumValue
-Enum(processor_type) String(arm920) Value( TARGET_CPU_arm920)
-
-EnumValue
 Enum(processor_type) String(arm920t) Value( TARGET_CPU_arm920t)
 
 EnumValue
-Enum(processor_type) String(arm922t) Value( TARGET_CPU_arm922t)
-
-EnumValue
-Enum(processor_type) String(arm940t) Value( TARGET_CPU_arm940t)
-
-EnumValue
-Enum(processor_type) String(ep9312) Value( TARGET_CPU_ep9312)
-
-EnumValue
 Enum(processor_type) String(arm10tdmi) Value( TARGET_CPU_arm10tdmi)
 
 EnumValue
-Enum(processor_type) String(arm1020t) Value( TARGET_CPU_arm1020t)
-
-EnumValue
 Enum(processor_type) String(arm9e) Value( TARGET_CPU_arm9e)
 
 EnumValue
-Enum(processor_type) String(arm946e-s) Value( TARGET_CPU_arm946es)
-
-EnumValue
-Enum(processor_type) String(arm966e-s) Value( TARGET_CPU_arm966es)
-
-EnumValue
-Enum(processor_type) String(arm968e-s) Value( TARGET_CPU_arm968es)
-
-EnumValue
 Enum(processor_type) String(arm10e) Value( TARGET_CPU_arm10e)
 
 EnumValue
-Enum(processor_type) String(arm1020e) Value( TARGET_CPU_arm1020e)
-
-EnumValue
-Enum(processor_type) String(arm1022e) Value( TARGET_CPU_arm1022e)
-
-EnumValue
 Enum(processor_type) String(xscale) Value( TARGET_CPU_xscale)
 
 EnumValue
index bbe09cf..b9bcfa7 100644 (file)
 (define_attr "tune"
        "arm8,arm810,strongarm,
        fa526,fa626,arm7tdmi,
-       arm7tdmis,arm710t,arm720t,
-       arm740t,arm9,arm9tdmi,
-       arm920,arm920t,arm922t,
-       arm940t,ep9312,arm10tdmi,
-       arm1020t,arm9e,arm946es,
-       arm966es,arm968es,arm10e,
-       arm1020e,arm1022e,xscale,
-       iwmmxt,iwmmxt2,fa606te,
-       fa626te,fmp626,fa726te,
-       arm926ejs,arm1026ejs,arm1136js,
-       arm1136jfs,arm1176jzs,arm1176jzfs,
-       mpcorenovfp,mpcore,arm1156t2s,
-       arm1156t2fs,cortexm1,cortexm0,
-       cortexm0plus,cortexm1smallmultiply,cortexm0smallmultiply,
-       cortexm0plussmallmultiply,genericv7a,cortexa5,
-       cortexa7,cortexa8,cortexa9,
-       cortexa12,cortexa15,cortexa17,
-       cortexr4,cortexr4f,cortexr5,
-       cortexr7,cortexr8,cortexm7,
-       cortexm4,cortexm3,marvell_pj4,
-       cortexa15cortexa7,cortexa17cortexa7,cortexa32,
-       cortexa35,cortexa53,cortexa57,
-       cortexa72,cortexa73,exynosm1,
-       xgene1,cortexa57cortexa53,cortexa72cortexa53,
-       cortexa73cortexa35,cortexa73cortexa53,cortexa55,
-       cortexa75,cortexa76,ares,
-       cortexa75cortexa55,cortexa76cortexa55,cortexm23,
-       cortexm33,cortexr52"
+       arm710t,arm9,arm9tdmi,
+       arm920t,arm10tdmi,arm9e,
+       arm10e,xscale,iwmmxt,
+       iwmmxt2,fa606te,fa626te,
+       fmp626,fa726te,arm926ejs,
+       arm1026ejs,arm1136js,arm1136jfs,
+       arm1176jzs,arm1176jzfs,mpcorenovfp,
+       mpcore,arm1156t2s,arm1156t2fs,
+       cortexm1,cortexm0,cortexm0plus,
+       cortexm1smallmultiply,cortexm0smallmultiply,cortexm0plussmallmultiply,
+       genericv7a,cortexa5,cortexa7,
+       cortexa8,cortexa9,cortexa12,
+       cortexa15,cortexa17,cortexr4,
+       cortexr4f,cortexr5,cortexr7,
+       cortexr8,cortexm7,cortexm4,
+       cortexm3,marvell_pj4,cortexa15cortexa7,
+       cortexa17cortexa7,cortexa32,cortexa35,
+       cortexa53,cortexa57,cortexa72,
+       cortexa73,exynosm1,xgene1,
+       cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,
+       cortexa73cortexa53,cortexa55,cortexa75,
+       cortexa76,ares,cortexa75cortexa55,
+       cortexa76cortexa55,cortexm23,cortexm33,
+       cortexr52"
        (const (symbol_ref "((enum attr_tune) arm_tune)")))
index a773518..c8dc947 100644 (file)
 (define_attr "generic_sched" "yes,no"
   (const (if_then_else
           (ior (eq_attr "tune" "fa526,fa626,fa606te,fa626te,fmp626,fa726te,\
-                                arm926ejs,arm1020e,arm1026ejs,arm1136js,\
+                                arm926ejs,arm10e,arm1026ejs,arm1136js,\
                                 arm1136jfs,cortexa5,cortexa7,cortexa8,\
                                 cortexa9,cortexa12,cortexa15,cortexa17,\
                                 cortexa53,cortexa57,cortexm4,cortexm7,\
 (define_attr "generic_vfp" "yes,no"
   (const (if_then_else
          (and (eq_attr "fpu" "vfp")
-              (eq_attr "tune" "!arm1020e,arm1022e,cortexa5,cortexa7,\
+              (eq_attr "tune" "!arm10e,cortexa5,cortexa7,\
                                 cortexa8,cortexa9,cortexa53,cortexm4,\
                                 cortexm7,marvell_pj4,xgene1")
               (eq_attr "tune_cortexr4" "no"))
index 3a00104..9b800f8 100644 (file)
@@ -65,7 +65,7 @@
 
 ;; ALU operations with no shifted operand
 (define_insn_reservation "1020alu_op" 1 
- (and (eq_attr "tune" "arm1020e,arm1022e")
+ (and (eq_attr "tune" "arm10e")
       (eq_attr "type" "alu_imm,alus_imm,logic_imm,logics_imm,\
                        alu_sreg,alus_sreg,logic_reg,logics_reg,\
                        adc_imm,adcs_imm,adc_reg,adcs_reg,\
@@ -77,7 +77,7 @@
 
 ;; ALU operations with a shift-by-constant operand
 (define_insn_reservation "1020alu_shift_op" 1 
- (and (eq_attr "tune" "arm1020e,arm1022e")
+ (and (eq_attr "tune" "arm10e")
       (eq_attr "type" "alu_shift_imm,alus_shift_imm,\
                        logic_shift_imm,logics_shift_imm,\
                        extend,mov_shift,mvn_shift"))
@@ -88,7 +88,7 @@
 ;; the shift value in a second cycle. Pretend we take two cycles in
 ;; the execute stage.
 (define_insn_reservation "1020alu_shift_reg_op" 2 
- (and (eq_attr "tune" "arm1020e,arm1022e")
+ (and (eq_attr "tune" "arm10e")
       (eq_attr "type" "alu_shift_reg,alus_shift_reg,\
                        logic_shift_reg,logics_shift_reg,\
                        mov_shift_reg,mvn_shift_reg"))
 ;; The result of the "smul" and "smulw" instructions is not available
 ;; until after the memory stage.
 (define_insn_reservation "1020mult1" 2
- (and (eq_attr "tune" "arm1020e,arm1022e")
+ (and (eq_attr "tune" "arm10e")
       (eq_attr "type" "smulxy,smulwy"))
  "1020a_e,1020a_m,1020a_w")
 
 ;; the execute stage; the result is available immediately following
 ;; the execute stage.
 (define_insn_reservation "1020mult2" 2
- (and (eq_attr "tune" "arm1020e,arm1022e")
+ (and (eq_attr "tune" "arm10e")
       (eq_attr "type" "smlaxy,smlalxy,smlawx"))
  "1020a_e*2,1020a_m,1020a_w")
 
 ;; through the execute stage; the result is not available until after
 ;; the memory stage.
 (define_insn_reservation "1020mult3" 3
- (and (eq_attr "tune" "arm1020e,arm1022e")
+ (and (eq_attr "tune" "arm10e")
       (eq_attr "type" "smlalxy,mul,mla"))
  "1020a_e*2,1020a_m,1020a_w")
 
 ;; four iterations in order to set the flags.  The value result is
 ;; available after three iterations.
 (define_insn_reservation "1020mult4" 3
- (and (eq_attr "tune" "arm1020e,arm1022e")
+ (and (eq_attr "tune" "arm10e")
       (eq_attr "type" "muls,mlas"))
  "1020a_e*4,1020a_m,1020a_w")
 
 ;; three iterations through the execute cycle, and make their results
 ;; available after the memory cycle.
 (define_insn_reservation "1020mult5" 4
- (and (eq_attr "tune" "arm1020e,arm1022e")
+ (and (eq_attr "tune" "arm10e")
       (eq_attr "type" "umull,umlal,smull,smlal"))
  "1020a_e*3,1020a_m,1020a_w")
 
 ;; the execute stage for five iterations in order to set the flags.
 ;; The value result is available after four iterations.
 (define_insn_reservation "1020mult6" 4
- (and (eq_attr "tune" "arm1020e,arm1022e")
+ (and (eq_attr "tune" "arm10e")
       (eq_attr "type" "umulls,umlals,smulls,smlals"))
  "1020a_e*5,1020a_m,1020a_w")
 
 ;; For 4byte loads there is a bypass from the load stage
 
 (define_insn_reservation "1020load1_op" 2
- (and (eq_attr "tune" "arm1020e,arm1022e")
+ (and (eq_attr "tune" "arm10e")
       (eq_attr "type" "load_byte,load_4"))
  "1020a_e+1020l_e,1020l_m,1020l_w")
 
 (define_insn_reservation "1020store1_op" 0
- (and (eq_attr "tune" "arm1020e,arm1022e")
+ (and (eq_attr "tune" "arm10e")
       (eq_attr "type" "store_4"))
  "1020a_e+1020l_e,1020l_m,1020l_w")
 
 ;; PC, there are additional stalls; that is not modeled.
 
 (define_insn_reservation "1020load2_op" 2
- (and (eq_attr "tune" "arm1020e,arm1022e")
+ (and (eq_attr "tune" "arm10e")
       (eq_attr "type" "load_8"))
  "1020a_e+1020l_e,1020l_m,1020l_w")
 
 (define_insn_reservation "1020store2_op" 0
- (and (eq_attr "tune" "arm1020e,arm1022e")
+ (and (eq_attr "tune" "arm10e")
       (eq_attr "type" "store_8"))
  "1020a_e+1020l_e,1020l_m,1020l_w")
 
 (define_insn_reservation "1020load34_op" 3
- (and (eq_attr "tune" "arm1020e,arm1022e")
+ (and (eq_attr "tune" "arm10e")
       (eq_attr "type" "load_12,load_16"))
  "1020a_e+1020l_e,1020l_e+1020l_m,1020l_m,1020l_w")
 
 (define_insn_reservation "1020store34_op" 0
- (and (eq_attr "tune" "arm1020e,arm1022e")
+ (and (eq_attr "tune" "arm10e")
       (eq_attr "type" "store_12,store_16"))
  "1020a_e+1020l_e,1020l_e+1020l_m,1020l_m,1020l_w")
 
 ;; therefore the minimum value.
 
 (define_insn_reservation "1020branch_op" 0
- (and (eq_attr "tune" "arm1020e,arm1022e")
+ (and (eq_attr "tune" "arm10e")
       (eq_attr "type" "branch"))
  "1020a_e")
 
 ;; than that.
 
 (define_insn_reservation "1020call_op" 32
- (and (eq_attr "tune" "arm1020e,arm1022e")
+ (and (eq_attr "tune" "arm10e")
       (eq_attr "type" "call"))
  "1020a_e*4")
 
 (exclusion_set "v10_fmac,v10_ds" "v10_fmstat")
 
 (define_attr "vfp10" "yes,no" 
-  (const (if_then_else (and (eq_attr "tune" "arm1020e,arm1022e")
+  (const (if_then_else (and (eq_attr "tune" "arm10e")
                            (eq_attr "fpu" "vfp"))
                       (const_string "yes") (const_string "no"))))