diff options
author | gretay <gretay@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-01-29 18:34:12 +0000 |
---|---|---|
committer | gretay <gretay@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-01-29 18:34:12 +0000 |
commit | 56df0c0594d67c32cb5ec44114063bf0b8ce7a5b (patch) | |
tree | 04e5d0a4453b5c383943158b60fda4d604f7874a /gcc/config | |
parent | f88705baba66aa71f0b84bd780093206382aff44 (diff) | |
download | gcc-56df0c0594d67c32cb5ec44114063bf0b8ce7a5b.tar.gz |
2013-01-29 Greta Yorsh <Greta.Yorsh@arm.com>
* config/arm/arm.md (type): Add ffmas and ffmad to "type" attribute.
* config/arm/vfp.md (fma,fmsub,fnmsub,fnmadd): Change type
from fmac to ffma.
* config/arm/vfp11.md (vfp_farith): Use ffmas.
(vfp_fmul): Use ffmad.
* config/arm/cortex-r4f.md (cortex_r4_fmacs): Use ffmas.
(cortex_r4_fmacd): Use ffmad.
* config/arm/cortex-m4-fpu.md (cortex_m4_fmacs): Use ffmas.
* config/arm/cortex-a9.md (cortex_a9_fmacs): Use ffmas.
(cortex_a9_fmacd): Use ffmad.
* config/arm/cortex-a8-neon.md (cortex_a8_vfp_macs): Use ffmas.
(cortex_a8_vfp_macd): Use ffmad.
* config/arm/cortex-a5.md (cortex_a5_fpmacs): Use ffmas.
(cortex_a5_fpmacd): Use ffmad.
* config/arm/cortex-a15-neon.md (cortex_a15_vfp_macs) Use ffmas.
(cortex_a15_vfp_macd): Use ffmad.
* config/arm/arm1020e.md (v10_fmul): Use ffmas and ffmad.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@195551 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/arm/arm.md | 2 | ||||
-rw-r--r-- | gcc/config/arm/arm1020e.md | 2 | ||||
-rw-r--r-- | gcc/config/arm/cortex-a15-neon.md | 4 | ||||
-rw-r--r-- | gcc/config/arm/cortex-a5.md | 4 | ||||
-rw-r--r-- | gcc/config/arm/cortex-a8-neon.md | 4 | ||||
-rw-r--r-- | gcc/config/arm/cortex-a9.md | 6 | ||||
-rw-r--r-- | gcc/config/arm/cortex-m4-fpu.md | 2 | ||||
-rw-r--r-- | gcc/config/arm/cortex-r4f.md | 4 | ||||
-rw-r--r-- | gcc/config/arm/vfp.md | 10 | ||||
-rw-r--r-- | gcc/config/arm/vfp11.md | 4 |
10 files changed, 23 insertions, 19 deletions
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 1bc21890b7e..64888f978b2 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -282,6 +282,8 @@ fmuld,\ fmacs,\ fmacd,\ + ffmas,\ + ffmad,\ f_rints,\ f_rintd,\ f_minmaxs,\ diff --git a/gcc/config/arm/arm1020e.md b/gcc/config/arm/arm1020e.md index ea7ef51e98e..ab65978aebc 100644 --- a/gcc/config/arm/arm1020e.md +++ b/gcc/config/arm/arm1020e.md @@ -284,7 +284,7 @@ (define_insn_reservation "v10_fmul" 6 (and (eq_attr "vfp10" "yes") - (eq_attr "type" "fmuls,fmacs,fmuld,fmacd")) + (eq_attr "type" "fmuls,fmacs,ffmas,fmuld,fmacd,ffmad")) "1020a_e+v10_fmac*2") (define_insn_reservation "v10_fdivs" 18 diff --git a/gcc/config/arm/cortex-a15-neon.md b/gcc/config/arm/cortex-a15-neon.md index 34b48a6c3f5..bfa2f5e8818 100644 --- a/gcc/config/arm/cortex-a15-neon.md +++ b/gcc/config/arm/cortex-a15-neon.md @@ -505,12 +505,12 @@ (define_insn_reservation "cortex_a15_vfp_macs" 6 (and (eq_attr "tune" "cortexa15") - (eq_attr "type" "fmacs")) + (eq_attr "type" "fmacs,ffmas")) "ca15_issue1,ca15_cx_vfp") (define_insn_reservation "cortex_a15_vfp_macd" 11 (and (eq_attr "tune" "cortexa15") - (eq_attr "type" "fmacd")) + (eq_attr "type" "fmacd,ffmad")) "ca15_issue2,ca15_cx_vfp*2") (define_insn_reservation "cortex_a15_vfp_cvt" 6 diff --git a/gcc/config/arm/cortex-a5.md b/gcc/config/arm/cortex-a5.md index 654d6fb208e..41a2c37e8fa 100644 --- a/gcc/config/arm/cortex-a5.md +++ b/gcc/config/arm/cortex-a5.md @@ -185,7 +185,7 @@ (define_insn_reservation "cortex_a5_fpmacs" 8 (and (eq_attr "tune" "cortexa5") - (eq_attr "type" "fmacs")) + (eq_attr "type" "fmacs,ffmas")) "cortex_a5_ex1+cortex_a5_fpmul_pipe, nothing*3, cortex_a5_fpadd_pipe") ;; Non-multiply instructions can issue in the middle two instructions of a @@ -201,7 +201,7 @@ (define_insn_reservation "cortex_a5_fpmacd" 11 (and (eq_attr "tune" "cortexa5") - (eq_attr "type" "fmacd")) + (eq_attr "type" "fmacd,ffmad")) "cortex_a5_ex1+cortex_a5_fpmul_pipe, cortex_a5_fpmul_pipe*2,\ cortex_a5_ex1+cortex_a5_fpmul_pipe, nothing*3, cortex_a5_fpadd_pipe") diff --git a/gcc/config/arm/cortex-a8-neon.md b/gcc/config/arm/cortex-a8-neon.md index 7d8cfb65626..2f0cc7b3a5a 100644 --- a/gcc/config/arm/cortex-a8-neon.md +++ b/gcc/config/arm/cortex-a8-neon.md @@ -149,12 +149,12 @@ (define_insn_reservation "cortex_a8_vfp_macs" 21 (and (eq_attr "tune" "cortexa8") - (eq_attr "type" "fmacs")) + (eq_attr "type" "fmacs,ffmas")) "cortex_a8_vfp,cortex_a8_vfplite*20") (define_insn_reservation "cortex_a8_vfp_macd" 26 (and (eq_attr "tune" "cortexa8") - (eq_attr "type" "fmacd")) + (eq_attr "type" "fmacd,ffmad")) "cortex_a8_vfp,cortex_a8_vfplite*25") (define_insn_reservation "cortex_a8_vfp_divs" 37 diff --git a/gcc/config/arm/cortex-a9.md b/gcc/config/arm/cortex-a9.md index b1aac60b0cb..abbaa8d4e1e 100644 --- a/gcc/config/arm/cortex-a9.md +++ b/gcc/config/arm/cortex-a9.md @@ -203,7 +203,7 @@ cortex_a9_store3_4, cortex_a9_store1_2, cortex_a9_load3_4") ;; Pipeline Instruction Classification. ;; FPS - fcpys, ffariths, ffarithd,r_2_f,f_2_r ;; FP_ADD - fadds, faddd, fcmps (1) -;; FPMUL - fmul{s,d}, fmac{s,d} +;; FPMUL - fmul{s,d}, fmac{s,d}, ffma{s,d} ;; FPDIV - fdiv{s,d} (define_cpu_unit "ca9fps" "cortex_a9") (define_cpu_unit "ca9fp_add1, ca9fp_add2, ca9fp_add3, ca9fp_add4" "cortex_a9") @@ -253,12 +253,12 @@ cortex_a9_store3_4, cortex_a9_store1_2, cortex_a9_load3_4") (define_insn_reservation "cortex_a9_fmacs" 8 (and (eq_attr "tune" "cortexa9") - (eq_attr "type" "fmacs")) + (eq_attr "type" "fmacs,ffmas")) "ca9fmuls, ca9fp_add") (define_insn_reservation "cortex_a9_fmacd" 9 (and (eq_attr "tune" "cortexa9") - (eq_attr "type" "fmacd")) + (eq_attr "type" "fmacd,ffmad")) "ca9fmuld, ca9fp_add") ;; Division pipeline description. diff --git a/gcc/config/arm/cortex-m4-fpu.md b/gcc/config/arm/cortex-m4-fpu.md index d40858cc496..a1945bed3a3 100644 --- a/gcc/config/arm/cortex-m4-fpu.md +++ b/gcc/config/arm/cortex-m4-fpu.md @@ -46,7 +46,7 @@ (define_insn_reservation "cortex_m4_fmacs" 4 (and (eq_attr "tune" "cortexm4") - (eq_attr "type" "fmacs")) + (eq_attr "type" "fmacs,ffmas")) "cortex_m4_ex_v*3") (define_insn_reservation "cortex_m4_ffariths" 1 diff --git a/gcc/config/arm/cortex-r4f.md b/gcc/config/arm/cortex-r4f.md index a189f0f9d9e..0c0bae0cd74 100644 --- a/gcc/config/arm/cortex-r4f.md +++ b/gcc/config/arm/cortex-r4f.md @@ -63,7 +63,7 @@ (define_insn_reservation "cortex_r4_fmacs" 6 (and (eq_attr "tune_cortexr4" "yes") - (eq_attr "type" "fmacs")) + (eq_attr "type" "fmacs,ffmas")) "(cortex_r4_issue_a+cortex_r4_v1)|(cortex_r4_issue_b+cortex_r4_vmla)") (define_insn_reservation "cortex_r4_fdivs" 17 @@ -119,7 +119,7 @@ (define_insn_reservation "cortex_r4_fmacd" 20 (and (eq_attr "tune_cortexr4" "yes") - (eq_attr "type" "fmacd")) + (eq_attr "type" "fmacd,ffmad")) "cortex_r4_single_issue*13") (define_insn_reservation "cortex_r4_farith" 10 diff --git a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md index 6891fb9e8bb..923624ffc6f 100644 --- a/gcc/config/arm/vfp.md +++ b/gcc/config/arm/vfp.md @@ -32,6 +32,8 @@ ;; fmuld Double precision multiply. ;; fmacs Single precision multiply-accumulate. ;; fmacd Double precision multiply-accumulate. +;; ffmas Single precision fused multiply-accumulate. +;; ffmad Double precision fused multiply-accumulate. ;; fdivs Single precision sqrt or division. ;; fdivd Double precision sqrt or division. ;; f_flag fmstat operation @@ -909,7 +911,7 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FMA" "vfma%?.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2" [(set_attr "predicable" "yes") - (set_attr "type" "fmac<vfp_type>")] + (set_attr "type" "ffma<vfp_type>")] ) (define_insn "*fmsub<SDF:mode>4" @@ -921,7 +923,7 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FMA" "vfms%?.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2" [(set_attr "predicable" "yes") - (set_attr "type" "fmac<vfp_type>")] + (set_attr "type" "ffma<vfp_type>")] ) (define_insn "*fnmsub<SDF:mode>4" @@ -932,7 +934,7 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FMA" "vfnms%?.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2" [(set_attr "predicable" "yes") - (set_attr "type" "fmac<vfp_type>")] + (set_attr "type" "ffma<vfp_type>")] ) (define_insn "*fnmadd<SDF:mode>4" @@ -944,7 +946,7 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FMA" "vfnma%?.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2" [(set_attr "predicable" "yes") - (set_attr "type" "fmac<vfp_type>")] + (set_attr "type" "ffma<vfp_type>")] ) diff --git a/gcc/config/arm/vfp11.md b/gcc/config/arm/vfp11.md index 25882c41830..b027fe6c3cd 100644 --- a/gcc/config/arm/vfp11.md +++ b/gcc/config/arm/vfp11.md @@ -56,12 +56,12 @@ (define_insn_reservation "vfp_farith" 8 (and (eq_attr "generic_vfp" "yes") - (eq_attr "type" "fadds,faddd,fconsts,fconstd,f_cvt,fmuls,fmacs")) + (eq_attr "type" "fadds,faddd,fconsts,fconstd,f_cvt,fmuls,fmacs,ffmas")) "fmac") (define_insn_reservation "vfp_fmul" 9 (and (eq_attr "generic_vfp" "yes") - (eq_attr "type" "fmuld,fmacd")) + (eq_attr "type" "fmuld,fmacd,ffmad")) "fmac*2") (define_insn_reservation "vfp_fdivs" 19 |