aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaul Brook <paul@codesourcery.com>2008-08-26 17:16:53 +0000
committerPaul Brook <pbrook@gcc.gnu.org>2008-08-26 17:16:53 +0000
commita8e17e9ea71adffbceaecb8e217042a8f998bd93 (patch)
tree751c6b7b8ebe6005b0c413d0678452c37846286f /gcc
parentf08d75a9e666d5679af36ef4696c4fa820a7223b (diff)
downloadgcc-a8e17e9ea71adffbceaecb8e217042a8f998bd93.zip
gcc-a8e17e9ea71adffbceaecb8e217042a8f998bd93.tar.gz
gcc-a8e17e9ea71adffbceaecb8e217042a8f998bd93.tar.bz2
vfp.md: Document fmul{s,d} and fmac{s,d} types.
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog14
-rw-r--r--gcc/config/arm/arm.md2
-rw-r--r--gcc/config/arm/arm1020e.md14
-rw-r--r--gcc/config/arm/vfp.md29
-rw-r--r--gcc/config/arm/vfp11.md4
5 files changed, 35 insertions, 28 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d86f550..eec1975 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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...
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
index f24338f..0ef91c6 100644
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -193,6 +193,8 @@
; 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
diff --git a/gcc/config/arm/arm1020e.md b/gcc/config/arm/arm1020e.md
index bec8766..ed170c4 100644
--- a/gcc/config/arm/arm1020e.md
+++ b/gcc/config/arm/arm1020e.md
@@ -265,18 +265,6 @@
(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
@@ -296,7 +284,7 @@
(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
diff --git a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md
index 65c081d..64bb956 100644
--- a/gcc/config/arm/vfp.md
+++ b/gcc/config/arm/vfp.md
@@ -26,7 +26,10 @@
;; 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
@@ -573,7 +576,7 @@
"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"
@@ -583,7 +586,7 @@
"TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
"fmuld%?\\t%P0, %P1, %P2"
[(set_attr "predicable" "yes")
- (set_attr "type" "fmul")]
+ (set_attr "type" "fmuld")]
)
@@ -594,7 +597,7 @@
"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"
@@ -604,7 +607,7 @@
"TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
"fnmuld%?\\t%P0, %P1, %P2"
[(set_attr "predicable" "yes")
- (set_attr "type" "fmul")]
+ (set_attr "type" "fmuld")]
)
@@ -619,7 +622,7 @@
"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"
@@ -630,7 +633,7 @@
"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
@@ -642,7 +645,7 @@
"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"
@@ -653,7 +656,7 @@
"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
@@ -665,7 +668,7 @@
"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"
@@ -676,7 +679,7 @@
"TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
"fnmacd%?\\t%P0, %P2, %P3"
[(set_attr "predicable" "yes")
- (set_attr "type" "fmul")]
+ (set_attr "type" "fmacd")]
)
@@ -690,7 +693,7 @@
"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"
@@ -702,7 +705,7 @@
"TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
"fnmscd%?\\t%P0, %P2, %P3"
[(set_attr "predicable" "yes")
- (set_attr "type" "fmul")]
+ (set_attr "type" "fmacd")]
)
diff --git a/gcc/config/arm/vfp11.md b/gcc/config/arm/vfp11.md
index fa953d7..7b297d2 100644
--- a/gcc/config/arm/vfp11.md
+++ b/gcc/config/arm/vfp11.md
@@ -57,12 +57,12 @@
(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