]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
vfp.md: Document fmul{s,d} and fmac{s,d} types.
authorPaul Brook <paul@codesourcery.com>
Tue, 26 Aug 2008 17:16:53 +0000 (17:16 +0000)
committerPaul Brook <pbrook@gcc.gnu.org>
Tue, 26 Aug 2008 17:16:53 +0000 (17:16 +0000)
2008-08-28  Paul Brook  <paul@codesourcery.com>

* config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
Remove documentation entry for fmul type.
Use fmuls to annotate single-precision multiplication patterns,
fmuld to annotate double-precision multiplication patterns,
fmacs to annotate single-precision multiply-accumulate patterns
and fmacd to annotate double-precision multiply-accumulate patterns.
* config/arm/vfp11.md: Update reservations accordingly.
* config/arm/arm.md: Note that certain values of the "type"
attribute are documented in vfp.md.
* config/arm/arm1020e.md: Remove out of date duplicate comment.
(v10_cvt): Use new fmul types.

From-SVN: r139604

gcc/ChangeLog
gcc/config/arm/arm.md
gcc/config/arm/arm1020e.md
gcc/config/arm/vfp.md
gcc/config/arm/vfp11.md

index d86f5505b086764d908bf78df37ea14514485bd2..eec19752b6822a6f7665ca8cc397d554a00767c0 100644 (file)
@@ -1,3 +1,17 @@
+2008-08-28  Paul Brook  <paul@codesourcery.com>
+
+       * config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
+       Remove documentation entry for fmul type.
+       Use fmuls to annotate single-precision multiplication patterns,
+       fmuld to annotate double-precision multiplication patterns,
+       fmacs to annotate single-precision multiply-accumulate patterns
+       and fmacd to annotate double-precision multiply-accumulate patterns.
+       * config/arm/vfp11.md: Update reservations accordingly.
+       * config/arm/arm.md: Note that certain values of the "type"
+       attribute are documented in vfp.md.
+       * config/arm/arm1020e.md: Remove out of date duplicate comment.
+       (v10_cvt): Use new fmul types.
+
 2008-08-26  Paul Brook   <paul@codesourcery.com>
 
        * config/arm/vfp.md: Move pipeline description for VFP11 to...
index f24338f5aa7bf2c38e267107cb0a748cc9bd2e29..0ef91c6a00382db0a1c58e815252d634b3a3dae3 100644 (file)
 ; scheduling of writes.
 
 ; Classification of each insn
+; Note: vfp.md has different meanings for some of these, and some further
+; types as well.  See that file for details.
 ; alu          any alu  instruction that doesn't hit memory or fp
 ;              regs or have a shifted source operand
 ; alu_shift    any data instruction that doesn't hit memory or fp
index bec8766c287963e069c247c2acd0580b8a2aa9d9..ed170c4b170ac259f56184dbd0433191af1bd4e0 100644 (file)
                            (eq_attr "fpu" "vfp"))
                       (const_string "yes") (const_string "no"))))
 
-;; The VFP "type" attributes differ from those used in the FPA model.
-;; ffarith     Fast floating point insns, e.g. abs, neg, cpy, cmp.
-;; farith      Most arithmetic insns.
-;; fmul                Double precision multiply.
-;; fdivs       Single precision sqrt or division.
-;; fdivd       Double precision sqrt or division.
-;; f_flag      fmstat operation
-;; f_load      Floating point load from memory.
-;; f_store     Floating point store to memory.
-;; f_2_r       Transfer vfp to arm reg.
-;; r_2_f       Transfer arm to vfp reg.
-
 ;; Note, no instruction can issue to the VFP if the core is stalled in the
 ;; first execute state.  We model this by using 1020a_e in the first cycle.
 (define_insn_reservation "v10_ffarith" 5
 
 (define_insn_reservation "v10_fmul" 6
  (and (eq_attr "vfp10" "yes")
-      (eq_attr "type" "fmul"))
+      (eq_attr "type" "fmuls,fmacs,fmuld,fmacd"))
  "1020a_e+v10_fmac*2")
 
 (define_insn_reservation "v10_fdivs" 18
index 65c081d448efeff8eb4324ce4c1af361c8aa6a21..64bb9564d9c703727f803540b90e658fed333810 100644 (file)
 ;; The VFP "type" attributes differ from those used in the FPA model.
 ;; ffarith     Fast floating point insns, e.g. abs, neg, cpy, cmp.
 ;; farith      Most arithmetic insns.
-;; fmul                Double precision multiply.
+;; fmuls       Single precision multiply.
+;; fmuld       Double precision multiply.
+;; fmacs       Single precision multiply-accumulate.
+;; fmacd       Double precision multiply-accumulate.
 ;; fdivs       Single precision sqrt or division.
 ;; fdivd       Double precision sqrt or division.
 ;; f_flag      fmstat operation
   "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
   "fmuls%?\\t%0, %1, %2"
   [(set_attr "predicable" "yes")
-   (set_attr "type" "farith")]
+   (set_attr "type" "fmuls")]
 )
 
 (define_insn "*muldf3_vfp"
   "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
   "fmuld%?\\t%P0, %P1, %P2"
   [(set_attr "predicable" "yes")
-   (set_attr "type" "fmul")]
+   (set_attr "type" "fmuld")]
 )
 
 
   "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
   "fnmuls%?\\t%0, %1, %2"
   [(set_attr "predicable" "yes")
-   (set_attr "type" "farith")]
+   (set_attr "type" "fmuls")]
 )
 
 (define_insn "*muldf3negdf_vfp"
   "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
   "fnmuld%?\\t%P0, %P1, %P2"
   [(set_attr "predicable" "yes")
-   (set_attr "type" "fmul")]
+   (set_attr "type" "fmuld")]
 )
 
 
   "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
   "fmacs%?\\t%0, %2, %3"
   [(set_attr "predicable" "yes")
-   (set_attr "type" "farith")]
+   (set_attr "type" "fmacs")]
 )
 
 (define_insn "*muldf3adddf_vfp"
   "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
   "fmacd%?\\t%P0, %P2, %P3"
   [(set_attr "predicable" "yes")
-   (set_attr "type" "fmul")]
+   (set_attr "type" "fmacd")]
 )
 
 ;; 0 = 1 * 2 - 0
   "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
   "fmscs%?\\t%0, %2, %3"
   [(set_attr "predicable" "yes")
-   (set_attr "type" "farith")]
+   (set_attr "type" "fmacs")]
 )
 
 (define_insn "*muldf3subdf_vfp"
   "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
   "fmscd%?\\t%P0, %P2, %P3"
   [(set_attr "predicable" "yes")
-   (set_attr "type" "fmul")]
+   (set_attr "type" "fmacd")]
 )
 
 ;; 0 = -(1 * 2) + 0
   "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
   "fnmacs%?\\t%0, %2, %3"
   [(set_attr "predicable" "yes")
-   (set_attr "type" "farith")]
+   (set_attr "type" "fmacs")]
 )
 
 (define_insn "*fmuldf3negdfadddf_vfp"
   "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
   "fnmacd%?\\t%P0, %P2, %P3"
   [(set_attr "predicable" "yes")
-   (set_attr "type" "fmul")]
+   (set_attr "type" "fmacd")]
 )
 
 
   "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
   "fnmscs%?\\t%0, %2, %3"
   [(set_attr "predicable" "yes")
-   (set_attr "type" "farith")]
+   (set_attr "type" "fmacs")]
 )
 
 (define_insn "*muldf3negdfsubdf_vfp"
   "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
   "fnmscd%?\\t%P0, %P2, %P3"
   [(set_attr "predicable" "yes")
-   (set_attr "type" "fmul")]
+   (set_attr "type" "fmacd")]
 )
 
 
index fa953d7c4b2827889ad682edf7beda7d5695db1c..7b297d2ed868b55c21c95bbf0a521e0b3819fd99 100644 (file)
 
 (define_insn_reservation "vfp_farith" 8
  (and (eq_attr "generic_vfp" "yes")
-      (eq_attr "type" "farith,f_cvt"))
+      (eq_attr "type" "farith,f_cvt,fmuls,fmacs"))
  "fmac")
 
 (define_insn_reservation "vfp_fmul" 9
  (and (eq_attr "generic_vfp" "yes")
-      (eq_attr "type" "fmul"))
+      (eq_attr "type" "fmuld,fmacd"))
  "fmac*2")
 
 (define_insn_reservation "vfp_fdivs" 19