From: Greta Yorsh Date: Tue, 29 Jan 2013 18:34:12 +0000 (+0000) Subject: arm.md (type): Add ffmas and ffmad to "type" attribute. X-Git-Tag: upstream/12.2.0~71529 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=29637783d5b642e5ab85c20f598de3ded0a7a100;p=platform%2Fupstream%2Fgcc.git arm.md (type): Add ffmas and ffmad to "type" attribute. 2013-01-29 Greta Yorsh * 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. From-SVN: r195551 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 42cb624..8a49fd8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,23 @@ +2013-01-29 Greta Yorsh + + * 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. + 2013-01-29 Jason Merrill PR libstdc++/54314 diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 1bc2189..64888f9 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 ea7ef51..ab65978 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 34b48a6..bfa2f5e 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 654d6fb..41a2c37 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 7d8cfb6..2f0cc7b 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 b1aac60..abbaa8d 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 d40858c..a1945be 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 a189f0f..0c0bae0 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 6891fb9..923624f 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%?.\\t%0, %1, %2" [(set_attr "predicable" "yes") - (set_attr "type" "fmac")] + (set_attr "type" "ffma")] ) (define_insn "*fmsub4" @@ -921,7 +923,7 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FMA" "vfms%?.\\t%0, %1, %2" [(set_attr "predicable" "yes") - (set_attr "type" "fmac")] + (set_attr "type" "ffma")] ) (define_insn "*fnmsub4" @@ -932,7 +934,7 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FMA" "vfnms%?.\\t%0, %1, %2" [(set_attr "predicable" "yes") - (set_attr "type" "fmac")] + (set_attr "type" "ffma")] ) (define_insn "*fnmadd4" @@ -944,7 +946,7 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FMA" "vfnma%?.\\t%0, %1, %2" [(set_attr "predicable" "yes") - (set_attr "type" "fmac")] + (set_attr "type" "ffma")] ) diff --git a/gcc/config/arm/vfp11.md b/gcc/config/arm/vfp11.md index 25882c4..b027fe6 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