arm-cores.def (cortex-m7): New core name.
authorTerry Guo <terry.guo@arm.com>
Tue, 30 Sep 2014 10:02:39 +0000 (10:02 +0000)
committerXuepeng Guo <xguo@gcc.gnu.org>
Tue, 30 Sep 2014 10:02:39 +0000 (10:02 +0000)
2014-09-30  Terry Guo  <terry.guo@arm.com>

* config/arm/arm-cores.def (cortex-m7): New core name.
* config/arm/arm-fpus.def (fpv5-sp-d16): New fpu name.
(fpv5-d16): Ditto.
* config/arm/arm-tables.opt: Regenerated.
* config/arm/arm-tune.md: Regenerated.
* config/arm/arm.h (TARGET_VFP5): New macro.
* config/arm/bpabi.h (BE8_LINK_SPEC): Include cortex-m7.
* config/arm/vfp.md (<vrint_pattern><SDF:mode>2,
smax<mode>3, smin<mode>3): Enabled for FPU FPv5.
* doc/invoke.texi: Document new cpu and fpu names.

From-SVN: r215711

gcc/ChangeLog
gcc/config/arm/arm-cores.def
gcc/config/arm/arm-fpus.def
gcc/config/arm/arm-tables.opt
gcc/config/arm/arm-tune.md
gcc/config/arm/arm.h
gcc/config/arm/bpabi.h
gcc/config/arm/vfp.md
gcc/doc/invoke.texi

index 9e78a93f569135160b3b24838cf4e169f63fa6a3..766e935638b959433bc597544e4abc5d4d2bc1e4 100644 (file)
@@ -1,3 +1,16 @@
+2014-09-30  Terry Guo  <terry.guo@arm.com>
+
+       * config/arm/arm-cores.def (cortex-m7): New core name.
+       * config/arm/arm-fpus.def (fpv5-sp-d16): New fpu name.
+       (fpv5-d16): Ditto.
+       * config/arm/arm-tables.opt: Regenerated.
+       * config/arm/arm-tune.md: Regenerated.
+       * config/arm/arm.h (TARGET_VFP5): New macro.
+       * config/arm/bpabi.h (BE8_LINK_SPEC): Include cortex-m7.
+       * config/arm/vfp.md (<vrint_pattern><SDF:mode>2,
+       smax<mode>3, smin<mode>3): Enabled for FPU FPv5.
+       * doc/invoke.texi: Document new cpu and fpu names.
+
 2014-09-30  Jiong Wang  <jiong.wang@arm.com>
 
        * shrink-wrap.c (move_insn_for_shrink_wrap): Check "can_throw_internal"
index a830a83baebeb808b42c7f03d94c608f79cc2b3f..56ec7fd8fe7b262f9ebff8dd4d76b2dbcd58fecc 100644 (file)
@@ -149,6 +149,7 @@ ARM_CORE("cortex-r4",               cortexr4, cortexr4,             7R,  FL_LDSCHED, cortex)
 ARM_CORE("cortex-r4f",         cortexr4f, cortexr4f,           7R,  FL_LDSCHED, cortex)
 ARM_CORE("cortex-r5",          cortexr5, cortexr5,             7R,  FL_LDSCHED | FL_ARM_DIV, cortex)
 ARM_CORE("cortex-r7",          cortexr7, cortexr7,             7R,  FL_LDSCHED | FL_ARM_DIV, cortex)
+ARM_CORE("cortex-m7",          cortexm7, cortexm7,             7EM, FL_LDSCHED, v7m)
 ARM_CORE("cortex-m4",          cortexm4, cortexm4,             7EM, FL_LDSCHED, v7m)
 ARM_CORE("cortex-m3",          cortexm3, cortexm3,             7M,  FL_LDSCHED, v7m)
 ARM_CORE("marvell-pj4",                marvell_pj4, marvell_pj4,       7A,  FL_LDSCHED, 9e)
index 85d9693c1fecf234c25bf51fda0804a891a4d7a0..edd0c35247426f58b7fcd85c2be38f4bc6907c5d 100644 (file)
@@ -37,6 +37,8 @@ ARM_FPU("neon-fp16",  ARM_FP_MODEL_VFP, 3, VFP_REG_D32, true, true, false)
 ARM_FPU("vfpv4",       ARM_FP_MODEL_VFP, 4, VFP_REG_D32, false, true, false)
 ARM_FPU("vfpv4-d16",   ARM_FP_MODEL_VFP, 4, VFP_REG_D16, false, true, false)
 ARM_FPU("fpv4-sp-d16", ARM_FP_MODEL_VFP, 4, VFP_REG_SINGLE, false, true, false)
+ARM_FPU("fpv5-sp-d16", ARM_FP_MODEL_VFP, 5, VFP_REG_SINGLE, false, true, false)
+ARM_FPU("fpv5-d16",    ARM_FP_MODEL_VFP, 5, VFP_REG_D16, false, true, false)
 ARM_FPU("neon-vfpv4",  ARM_FP_MODEL_VFP, 4, VFP_REG_D32, true, true, false)
 ARM_FPU("fp-armv8",    ARM_FP_MODEL_VFP, 8, VFP_REG_D32, false, true, false)
 ARM_FPU("neon-fp-armv8",ARM_FP_MODEL_VFP, 8, VFP_REG_D32, true, true, false)
index bc046a0de8e5ef7aae9d469223f2a6bdfdefe78c..04191bceefbb1f279f031d18ac11c083ea9d7d15 100644 (file)
@@ -273,6 +273,9 @@ Enum(processor_type) String(cortex-r5) Value(cortexr5)
 EnumValue
 Enum(processor_type) String(cortex-r7) Value(cortexr7)
 
+EnumValue
+Enum(processor_type) String(cortex-m7) Value(cortexm7)
+
 EnumValue
 Enum(processor_type) String(cortex-m4) Value(cortexm4)
 
@@ -423,17 +426,23 @@ EnumValue
 Enum(arm_fpu) String(fpv4-sp-d16) Value(11)
 
 EnumValue
-Enum(arm_fpu) String(neon-vfpv4) Value(12)
+Enum(arm_fpu) String(fpv5-sp-d16) Value(12)
+
+EnumValue
+Enum(arm_fpu) String(fpv5-d16) Value(13)
+
+EnumValue
+Enum(arm_fpu) String(neon-vfpv4) Value(14)
 
 EnumValue
-Enum(arm_fpu) String(fp-armv8) Value(13)
+Enum(arm_fpu) String(fp-armv8) Value(15)
 
 EnumValue
-Enum(arm_fpu) String(neon-fp-armv8) Value(14)
+Enum(arm_fpu) String(neon-fp-armv8) Value(16)
 
 EnumValue
-Enum(arm_fpu) String(crypto-neon-fp-armv8) Value(15)
+Enum(arm_fpu) String(crypto-neon-fp-armv8) Value(17)
 
 EnumValue
-Enum(arm_fpu) String(vfp3) Value(16)
+Enum(arm_fpu) String(vfp3) Value(18)
 
index 954cab8efb10329eb40042acb0de2c361d6c13d2..4217fbe8b2c8e62c3098fa531ad40600f948944b 100644 (file)
@@ -28,7 +28,8 @@
        genericv7a,cortexa5,cortexa7,
        cortexa8,cortexa9,cortexa12,
        cortexa15,cortexr4,cortexr4f,
-       cortexr5,cortexr7,cortexm4,
-       cortexm3,marvell_pj4,cortexa15cortexa7,
-       cortexa53,cortexa57,cortexa57cortexa53"
+       cortexr5,cortexr7,cortexm7,
+       cortexm4,cortexm3,marvell_pj4,
+       cortexa15cortexa7,cortexa53,cortexa57,
+       cortexa57cortexa53"
        (const (symbol_ref "((enum attr_tune) arm_tune)")))
index ff4ddace2b5e27dba01d18e68924acc5355f6c33..3623c70441e68481421174398488ce4359b573ff 100644 (file)
@@ -296,6 +296,9 @@ extern void (*arm_lang_output_object_attributes_hook)(void);
 /* FPU supports VFPv3 instructions.  */
 #define TARGET_VFP3 (TARGET_VFP && arm_fpu_desc->rev >= 3)
 
+/* FPU supports FPv5 instructions.  */
+#define TARGET_VFP5 (TARGET_VFP && arm_fpu_desc->rev >= 5)
+
 /* FPU only supports VFP single-precision instructions.  */
 #define TARGET_VFP_SINGLE (TARGET_VFP && arm_fpu_desc->regs == VFP_REG_SINGLE)
 
index 7a576ac466c8a373563168e512fac8680c0a1533..9a471c251a8d5aa565f423fbf1e49d0380b80178 100644 (file)
@@ -73,7 +73,7 @@
    |mcpu=generic-armv7-a                                \
    |march=armv7ve                                      \
    |march=armv7-m|mcpu=cortex-m3                        \
-   |march=armv7e-m|mcpu=cortex-m4                       \
+   |march=armv7e-m|mcpu=cortex-m4|mcpu=cortex-m7        \
    |march=armv6-m|mcpu=cortex-m0                        \
    |march=armv8-a                                      \
    :%{!r:--be8}}}"
@@ -91,7 +91,7 @@
    |mcpu=generic-armv7-a                                \
    |march=armv7ve                                      \
    |march=armv7-m|mcpu=cortex-m3                        \
-   |march=armv7e-m|mcpu=cortex-m4                       \
+   |march=armv7e-m|mcpu=cortex-m4|mcpu=cortex-m7        \
    |march=armv6-m|mcpu=cortex-m0                        \
    |march=armv8-a                                      \
    :%{!r:--be8}}}"
index a2034498518c0e5315c11cb5d8877a7d480ef5d9..6522c9082fa4998a814c8c203ea4a3e9e8cf5547 100644 (file)
         (unspec:SDF [(match_operand:SDF 1
                         "register_operand" "<F_constraint>")]
          VRINT))]
-  "TARGET_HARD_FLOAT && TARGET_FPU_ARMV8 <vfp_double_cond>"
+  "TARGET_HARD_FLOAT && TARGET_VFP5 <vfp_double_cond>"
   "vrint<vrint_variant>%?.<V_if_elem>\\t%<V_reg>0, %<V_reg>1"
   [(set_attr "predicable" "<vrint_predicable>")
    (set_attr "predicable_short_it" "no")
   [(set (match_operand:SDF 0 "register_operand" "=<F_constraint>")
         (smax:SDF (match_operand:SDF 1 "register_operand" "<F_constraint>")
                  (match_operand:SDF 2 "register_operand" "<F_constraint>")))]
-  "TARGET_HARD_FLOAT && TARGET_FPU_ARMV8 <vfp_double_cond>"
+  "TARGET_HARD_FLOAT && TARGET_VFP5 <vfp_double_cond>"
   "vmaxnm.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
   [(set_attr "type" "f_minmax<vfp_type>")
    (set_attr "conds" "unconditional")]
   [(set (match_operand:SDF 0 "register_operand" "=<F_constraint>")
         (smin:SDF (match_operand:SDF 1 "register_operand" "<F_constraint>")
                  (match_operand:SDF 2 "register_operand" "<F_constraint>")))]
-  "TARGET_HARD_FLOAT && TARGET_FPU_ARMV8 <vfp_double_cond>"
+  "TARGET_HARD_FLOAT && TARGET_VFP5 <vfp_double_cond>"
   "vminnm.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
   [(set_attr "type" "f_minmax<vfp_type>")
    (set_attr "conds" "unconditional")]
index f6c3b420da18c61fa5d837317f7bad961f3f8bdf..5fe7e15b4e9146ddadfd48b7e4da38c708f5405a 100644 (file)
@@ -12632,7 +12632,8 @@ Permissible names are: @samp{arm2}, @samp{arm250},
 @samp{cortex-a5}, @samp{cortex-a7}, @samp{cortex-a8}, @samp{cortex-a9},
 @samp{cortex-a12}, @samp{cortex-a15}, @samp{cortex-a53}, @samp{cortex-a57},
 @samp{cortex-r4},
-@samp{cortex-r4f}, @samp{cortex-r5}, @samp{cortex-r7}, @samp{cortex-m4},
+@samp{cortex-r4f}, @samp{cortex-r5}, @samp{cortex-r7}, @samp{cortex-m7},
+@samp{cortex-m4},
 @samp{cortex-m3},
 @samp{cortex-m1},
 @samp{cortex-m0},
@@ -12686,6 +12687,7 @@ available on the target.  Permissible names are: @samp{vfp}, @samp{vfpv3},
 @samp{vfpv3-fp16}, @samp{vfpv3-d16}, @samp{vfpv3-d16-fp16}, @samp{vfpv3xd},
 @samp{vfpv3xd-fp16}, @samp{neon}, @samp{neon-fp16}, @samp{vfpv4},
 @samp{vfpv4-d16}, @samp{fpv4-sp-d16}, @samp{neon-vfpv4},
+@samp{fpv5-d16}, @samp{fpv5-sp-d16},
 @samp{fp-armv8}, @samp{neon-fp-armv8}, and @samp{crypto-neon-fp-armv8}.
 
 If @option{-msoft-float} is specified this specifies the format of