aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorGeorg-Johann Lay <avr@gjlay.de>2012-10-08 08:32:46 +0000
committerGeorg-Johann Lay <gjl@gcc.gnu.org>2012-10-08 08:32:46 +0000
commitf70308d411efebfce8f15b54fedd21c17d44740c (patch)
treeef82840ab6d62bdf028d053d48d6edabdaae0c1f /gcc
parentb122a75f8fd79439bda5e0e5d3a96d4fc9a25e3e (diff)
downloadgcc-f70308d411efebfce8f15b54fedd21c17d44740c.zip
gcc-f70308d411efebfce8f15b54fedd21c17d44740c.tar.gz
gcc-f70308d411efebfce8f15b54fedd21c17d44740c.tar.bz2
re PR target/54815 ([avr] missed optimization with operations with constant operands)
PR target/54815 * config/avr/avr.md (*add<mode>3, add<mode>3, addpsi3): Make constraint alternative "r,0,r" slighly more expensive. (sub<mode>3, (andqi3, andhi3, andpsi3, andsi3): Ditto. (iorqi3, iorhi3, iorpsi3, iorsi3): Ditto. (xorhi3, xorpsi3, xorsi3): Ditto. From-SVN: r192198
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/config/avr/avr.md34
2 files changed, 27 insertions, 17 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d3835a3..e879031 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,13 @@
+2012-10-08 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/54815
+ * config/avr/avr.md (*add<mode>3, add<mode>3, addpsi3): Make
+ constraint alternative "r,0,r" slighly more expensive.
+ (sub<mode>3,
+ (andqi3, andhi3, andpsi3, andsi3): Ditto.
+ (iorqi3, iorhi3, iorpsi3, iorsi3): Ditto.
+ (xorhi3, xorpsi3, xorsi3): Ditto.
+
2012-10-08 Oleg Endo <olegendo@gcc.gnu.org>
PR target/54760
diff --git a/gcc/config/avr/avr.md b/gcc/config/avr/avr.md
index 19424b6..8b071f0 100644
--- a/gcc/config/avr/avr.md
+++ b/gcc/config/avr/avr.md
@@ -1177,7 +1177,7 @@
;; "*addhq3" "*adduhq3"
;; "*addha3" "*adduha3"
(define_insn "*add<mode>3"
- [(set (match_operand:ALL2 0 "register_operand" "=?r,d,!w ,d")
+ [(set (match_operand:ALL2 0 "register_operand" "=??r,d,!w ,d")
(plus:ALL2 (match_operand:ALL2 1 "register_operand" "%0,0,0 ,0")
(match_operand:ALL2 2 "nonmemory_or_const_operand" "r,s,IJ YIJ,n Ynn")))]
""
@@ -1244,7 +1244,7 @@
;; "addsq3" "addusq3"
;; "addsa3" "addusa3"
(define_insn "add<mode>3"
- [(set (match_operand:ALL4 0 "register_operand" "=r,d ,r")
+ [(set (match_operand:ALL4 0 "register_operand" "=??r,d ,r")
(plus:ALL4 (match_operand:ALL4 1 "register_operand" "%0,0 ,0")
(match_operand:ALL4 2 "nonmemory_operand" "r,i ,n Ynn")))
(clobber (match_scratch:QI 3 "=X,X ,&d"))]
@@ -1302,7 +1302,7 @@
(set_attr "cc" "set_n")])
(define_insn "addpsi3"
- [(set (match_operand:PSI 0 "register_operand" "=r,d ,d,r")
+ [(set (match_operand:PSI 0 "register_operand" "=??r,d ,d,r")
(plus:PSI (match_operand:PSI 1 "register_operand" "%0,0 ,0,0")
(match_operand:PSI 2 "nonmemory_operand" "r,s ,n,n")))
(clobber (match_scratch:QI 3 "=X,X ,X,&d"))]
@@ -1356,7 +1356,7 @@
;; "subqi3"
;; "subqq3" "subuqq3"
(define_insn "sub<mode>3"
- [(set (match_operand:ALL1 0 "register_operand" "=r,d ,r ,r ,r ,r")
+ [(set (match_operand:ALL1 0 "register_operand" "=??r,d ,r ,r ,r ,r")
(minus:ALL1 (match_operand:ALL1 1 "register_operand" "0,0 ,0 ,0 ,0 ,0")
(match_operand:ALL1 2 "nonmemory_or_const_operand" "r,n Ynn,Y01,Ym1,Y02,Ym2")))]
""
@@ -1374,7 +1374,7 @@
;; "subhq3" "subuhq3"
;; "subha3" "subuha3"
(define_insn "sub<mode>3"
- [(set (match_operand:ALL2 0 "register_operand" "=r,d ,*r")
+ [(set (match_operand:ALL2 0 "register_operand" "=??r,d ,*r")
(minus:ALL2 (match_operand:ALL2 1 "register_operand" "0,0 ,0")
(match_operand:ALL2 2 "nonmemory_or_const_operand" "r,i Ynn,Ynn")))
(clobber (match_scratch:QI 3 "=X,X ,&d"))]
@@ -1411,7 +1411,7 @@
;; "subsq3" "subusq3"
;; "subsa3" "subusa3"
(define_insn "sub<mode>3"
- [(set (match_operand:ALL4 0 "register_operand" "=r,d ,r")
+ [(set (match_operand:ALL4 0 "register_operand" "=??r,d ,r")
(minus:ALL4 (match_operand:ALL4 1 "register_operand" "0,0 ,0")
(match_operand:ALL4 2 "nonmemory_or_const_operand" "r,n Ynn,Ynn")))
(clobber (match_scratch:QI 3 "=X,X ,&d"))]
@@ -2932,7 +2932,7 @@
; and
(define_insn "andqi3"
- [(set (match_operand:QI 0 "register_operand" "=r,d")
+ [(set (match_operand:QI 0 "register_operand" "=??r,d")
(and:QI (match_operand:QI 1 "register_operand" "%0,0")
(match_operand:QI 2 "nonmemory_operand" "r,i")))]
""
@@ -2943,7 +2943,7 @@
(set_attr "cc" "set_zn,set_zn")])
(define_insn "andhi3"
- [(set (match_operand:HI 0 "register_operand" "=r,d,d,r ,r")
+ [(set (match_operand:HI 0 "register_operand" "=??r,d,d,r ,r")
(and:HI (match_operand:HI 1 "register_operand" "%0,0,0,0 ,0")
(match_operand:HI 2 "nonmemory_operand" "r,s,n,Ca2,n")))
(clobber (match_scratch:QI 3 "=X,X,X,X ,&d"))]
@@ -2961,7 +2961,7 @@
(set_attr "cc" "set_n,set_n,clobber,clobber,clobber")])
(define_insn "andpsi3"
- [(set (match_operand:PSI 0 "register_operand" "=r,d,r ,r")
+ [(set (match_operand:PSI 0 "register_operand" "=??r,d,r ,r")
(and:PSI (match_operand:PSI 1 "register_operand" "%0,0,0 ,0")
(match_operand:PSI 2 "nonmemory_operand" "r,n,Ca3,n")))
(clobber (match_scratch:QI 3 "=X,X,X ,&d"))]
@@ -2979,7 +2979,7 @@
(set_attr "cc" "set_n,clobber,clobber,clobber")])
(define_insn "andsi3"
- [(set (match_operand:SI 0 "register_operand" "=r,d,r ,r")
+ [(set (match_operand:SI 0 "register_operand" "=??r,d,r ,r")
(and:SI (match_operand:SI 1 "register_operand" "%0,0,0 ,0")
(match_operand:SI 2 "nonmemory_operand" "r,n,Ca4,n")))
(clobber (match_scratch:QI 3 "=X,X,X ,&d"))]
@@ -3014,7 +3014,7 @@
;; ior
(define_insn "iorqi3"
- [(set (match_operand:QI 0 "register_operand" "=r,d")
+ [(set (match_operand:QI 0 "register_operand" "=??r,d")
(ior:QI (match_operand:QI 1 "register_operand" "%0,0")
(match_operand:QI 2 "nonmemory_operand" "r,i")))]
""
@@ -3025,7 +3025,7 @@
(set_attr "cc" "set_zn,set_zn")])
(define_insn "iorhi3"
- [(set (match_operand:HI 0 "register_operand" "=r,d,d,r ,r")
+ [(set (match_operand:HI 0 "register_operand" "=??r,d,d,r ,r")
(ior:HI (match_operand:HI 1 "register_operand" "%0,0,0,0 ,0")
(match_operand:HI 2 "nonmemory_operand" "r,s,n,Co2,n")))
(clobber (match_scratch:QI 3 "=X,X,X,X ,&d"))]
@@ -3043,7 +3043,7 @@
(set_attr "cc" "set_n,set_n,clobber,clobber,clobber")])
(define_insn "iorpsi3"
- [(set (match_operand:PSI 0 "register_operand" "=r,d,r ,r")
+ [(set (match_operand:PSI 0 "register_operand" "=??r,d,r ,r")
(ior:PSI (match_operand:PSI 1 "register_operand" "%0,0,0 ,0")
(match_operand:PSI 2 "nonmemory_operand" "r,n,Co3,n")))
(clobber (match_scratch:QI 3 "=X,X,X ,&d"))]
@@ -3061,7 +3061,7 @@
(set_attr "cc" "set_n,clobber,clobber,clobber")])
(define_insn "iorsi3"
- [(set (match_operand:SI 0 "register_operand" "=r,d,r ,r")
+ [(set (match_operand:SI 0 "register_operand" "=??r,d,r ,r")
(ior:SI (match_operand:SI 1 "register_operand" "%0,0,0 ,0")
(match_operand:SI 2 "nonmemory_operand" "r,n,Co4,n")))
(clobber (match_scratch:QI 3 "=X,X,X ,&d"))]
@@ -3092,7 +3092,7 @@
(set_attr "cc" "set_zn")])
(define_insn "xorhi3"
- [(set (match_operand:HI 0 "register_operand" "=r,r ,r")
+ [(set (match_operand:HI 0 "register_operand" "=??r,r ,r")
(xor:HI (match_operand:HI 1 "register_operand" "%0,0 ,0")
(match_operand:HI 2 "nonmemory_operand" "r,Cx2,n")))
(clobber (match_scratch:QI 3 "=X,X ,&d"))]
@@ -3108,7 +3108,7 @@
(set_attr "cc" "set_n,clobber,clobber")])
(define_insn "xorpsi3"
- [(set (match_operand:PSI 0 "register_operand" "=r,r ,r")
+ [(set (match_operand:PSI 0 "register_operand" "=??r,r ,r")
(xor:PSI (match_operand:PSI 1 "register_operand" "%0,0 ,0")
(match_operand:PSI 2 "nonmemory_operand" "r,Cx3,n")))
(clobber (match_scratch:QI 3 "=X,X ,&d"))]
@@ -3126,7 +3126,7 @@
(set_attr "cc" "set_n,clobber,clobber")])
(define_insn "xorsi3"
- [(set (match_operand:SI 0 "register_operand" "=r,r ,r")
+ [(set (match_operand:SI 0 "register_operand" "=??r,r ,r")
(xor:SI (match_operand:SI 1 "register_operand" "%0,0 ,0")
(match_operand:SI 2 "nonmemory_operand" "r,Cx4,n")))
(clobber (match_scratch:QI 3 "=X,X ,&d"))]