]> gcc.gnu.org Git - gcc.git/commitdiff
[ARM] [Neon types 8/10] Cortex-A7 neon pipeline model
authorJames Greenhalgh <james.greenhalgh@arm.com>
Tue, 15 Oct 2013 15:36:15 +0000 (15:36 +0000)
committerJames Greenhalgh <jgreenhalgh@gcc.gnu.org>
Tue, 15 Oct 2013 15:36:15 +0000 (15:36 +0000)
gcc/
* config/arm/cortex-a7.md
(cortex_a7_neon_type): New.
(cortex_a7_neon_mul): Update for new types.
(cortex_a7_neon_mla): Likewise.
(cortex_a7_neon): Likewise.

From-SVN: r203619

gcc/ChangeLog
gcc/config/arm/cortex-a7.md

index da50c5e841ea80d5b4cf415c326d354e9df35d53..28cc6d7c6a483dcdf492ffee6447d4a692645e2c 100644 (file)
@@ -1,3 +1,11 @@
+2013-10-15  James Greenhalgh  <james.greenhalgh@arm.com>
+
+       * config/arm/cortex-a7.md
+       (cortex_a7_neon_type): New.
+       (cortex_a7_neon_mul): Update for new types.
+       (cortex_a7_neon_mla): Likewise.
+       (cortex_a7_neon): Likewise.
+
 2013-10-15  James Greenhalgh  <james.greenhalgh@arm.com>
 
        * config/arm/cortex-a15-neon.md
index a72a88d90af1c5491115ee84af47ec6d4f593535..7db6c5b24fb9cfe0c8a6a9837798736bd94b7788 100644 (file)
 ;; along with GCC; see the file COPYING3.  If not see
 ;; <http://www.gnu.org/licenses/>.
 
+(define_attr "cortex_a7_neon_type"
+  "neon_mul, neon_mla, neon_other"
+  (cond [
+          (eq_attr "type" "neon_mul_b, neon_mul_b_q,\
+                          neon_mul_h, neon_mul_h_q,\
+                          neon_mul_s, neon_mul_s_q,\
+                          neon_mul_b_long, neon_mul_h_long,\
+                          neon_mul_s_long, neon_mul_h_scalar,\
+                          neon_mul_h_scalar_q, neon_mul_s_scalar,\
+                          neon_mul_s_scalar_q, neon_mul_h_scalar_long,\
+                          neon_mul_s_scalar_long,\
+                          neon_sat_mul_b, neon_sat_mul_b_q,\
+                          neon_sat_mul_h, neon_sat_mul_h_q,\
+                          neon_sat_mul_s, neon_sat_mul_s_q,\
+                          neon_sat_mul_b_long, neon_sat_mul_h_long,\
+                          neon_sat_mul_s_long,\
+                          neon_sat_mul_h_scalar, neon_sat_mul_h_scalar_q,\
+                          neon_sat_mul_s_scalar, neon_sat_mul_s_scalar_q,\
+                          neon_sat_mul_h_scalar_long,\
+                          neon_sat_mul_s_scalar_long,\
+                          neon_fp_mul_s, neon_fp_mul_s_q,\
+                          neon_fp_mul_s_scalar, neon_fp_mul_s_scalar_q")
+             (const_string "neon_mul")
+          (eq_attr "type" "neon_mla_b, neon_mla_b_q, neon_mla_h,\
+                          neon_mla_h_q, neon_mla_s, neon_mla_s_q,\
+                          neon_mla_b_long, neon_mla_h_long,\
+                           neon_mla_s_long,\
+                          neon_mla_h_scalar, neon_mla_h_scalar_q,\
+                          neon_mla_s_scalar, neon_mla_s_scalar_q,\
+                          neon_mla_h_scalar_long, neon_mla_s_scalar_long,\
+                          neon_sat_mla_b_long, neon_sat_mla_h_long,\
+                          neon_sat_mla_s_long,\
+                          neon_sat_mla_h_scalar_long,\
+                           neon_sat_mla_s_scalar_long,\
+                          neon_fp_mla_s, neon_fp_mla_s_q,\
+                          neon_fp_mla_s_scalar, neon_fp_mla_s_scalar_q")
+             (const_string "neon_mla")]
+           (const_string "neon_other")))
+
 (define_automaton "cortex_a7")
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (define_insn_reservation "cortex_a7_neon_mul" 4
   (and (eq_attr "tune" "cortexa7")
-       (eq_attr "type"
-                "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
-                 neon_mul_qqq_8_16_32_ddd_32,\
-                 neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar,\
-                 neon_mul_ddd_16_scalar_32_16_long_scalar,\
-                 neon_mul_qqd_32_scalar,\
-                 neon_fp_vmul_ddd,\
-                 neon_fp_vmul_qqd"))
+       (eq_attr "cortex_a7_neon_type" "neon_mul"))
   "(cortex_a7_both+cortex_a7_fpmul_pipe)*2")
 
 (define_insn_reservation "cortex_a7_fpmacs" 8
 
 (define_insn_reservation "cortex_a7_neon_mla" 8
   (and (eq_attr "tune" "cortexa7")
-       (eq_attr "type"
-                "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
-                 neon_mla_qqq_8_16,\
-                 neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long,\
-                 neon_mla_qqq_32_qqd_32_scalar,\
-                 neon_mla_ddd_16_scalar_qdd_32_16_long_scalar,\
-                 neon_fp_vmla_ddd,\
-                 neon_fp_vmla_qqq,\
-                 neon_fp_vmla_ddd_scalar,\
-                 neon_fp_vmla_qqq_scalar"))
+       (eq_attr "cortex_a7_neon_type" "neon_mla"))
   "cortex_a7_both+cortex_a7_fpmul_pipe")
 
 (define_bypass 4 "cortex_a7_fpmacs,cortex_a7_neon_mla"
 
 (define_insn_reservation "cortex_a7_neon" 4
   (and (eq_attr "tune" "cortexa7")
-       (eq_attr "type"
-                "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
-                 neon_mul_qqq_8_16_32_ddd_32,\
-                 neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar,\
-                 neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
-                 neon_mla_qqq_8_16,\
-                 neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long,\
-                 neon_mla_qqq_32_qqd_32_scalar,\
-                 neon_mul_ddd_16_scalar_32_16_long_scalar,\
-                 neon_mul_qqd_32_scalar,\
-                 neon_mla_ddd_16_scalar_qdd_32_16_long_scalar,\
-                 neon_fp_vmul_ddd,\
-                 neon_fp_vmul_qqd,\
-                 neon_fp_vmla_ddd,\
-                 neon_fp_vmla_qqq,\
-                 neon_fp_vmla_ddd_scalar,\
-                 neon_fp_vmla_qqq_scalar"))
+       (and (eq_attr "is_neon_type" "yes")
+            (eq_attr "cortex_a7_neon_type" "neon_other")))
   "cortex_a7_both*2")
This page took 0.085238 seconds and 5 git commands to generate.