summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgjl <gjl@138bc75d-0d04-0410-961f-82ee72b054a4>2012-03-08 16:36:49 +0000
committergjl <gjl@138bc75d-0d04-0410-961f-82ee72b054a4>2012-03-08 16:36:49 +0000
commit1c66468a23d62c1b8f9d12e8f5f59aeb9ea2f8af (patch)
tree3759c44f4c9f8c35e9eac298d48a3a3b1d5a3a75
parent27c1fe3bf0fd2e3b45fbb8411416890cb0e31b7a (diff)
downloadppe42-gcc-1c66468a23d62c1b8f9d12e8f5f59aeb9ea2f8af.tar.gz
ppe42-gcc-1c66468a23d62c1b8f9d12e8f5f59aeb9ea2f8af.zip
* config/avr/avr.md (*addhi3, addhi3_clobber): Add "w" alternative
for constants in [-63,63]. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@185105 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/avr/avr.md21
2 files changed, 16 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 08ab3c9231c..0d9c469e900 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2012-03-08 Georg-Johann Lay <avr@gjlay.de>
+
+ * config/avr/avr.md (*addhi3, addhi3_clobber): Add "w" alternative
+ for constants in [-63,63].
+
2012-03-08 Uros Bizjak <ubizjak@gmail.com>
PR target/52530
diff --git a/gcc/config/avr/avr.md b/gcc/config/avr/avr.md
index 33a871e04d9..3d1adf8b267 100644
--- a/gcc/config/avr/avr.md
+++ b/gcc/config/avr/avr.md
@@ -1098,15 +1098,16 @@
(set_attr "adjust_len" "addto_sp")])
(define_insn "*addhi3"
- [(set (match_operand:HI 0 "register_operand" "=r,d,d")
- (plus:HI (match_operand:HI 1 "register_operand" "%0,0,0")
- (match_operand:HI 2 "nonmemory_operand" "r,s,n")))]
+ [(set (match_operand:HI 0 "register_operand" "=r,d,!w,d")
+ (plus:HI (match_operand:HI 1 "register_operand" "%0,0,0 ,0")
+ (match_operand:HI 2 "nonmemory_operand" "r,s,IJ,n")))]
""
{
static const char * const asm_code[] =
{
"add %A0,%A2\;adc %B0,%B2",
"subi %A0,lo8(-(%2))\;sbci %B0,hi8(-(%2))",
+ "",
""
};
@@ -1115,9 +1116,9 @@
return avr_out_plus_noclobber (operands, NULL, NULL);
}
- [(set_attr "length" "2,2,2")
- (set_attr "adjust_len" "*,*,out_plus_noclobber")
- (set_attr "cc" "set_n,set_czn,out_plus_noclobber")])
+ [(set_attr "length" "2,2,2,2")
+ (set_attr "adjust_len" "*,*,out_plus_noclobber,out_plus_noclobber")
+ (set_attr "cc" "set_n,set_czn,out_plus_noclobber,out_plus_noclobber")])
;; Adding a constant to NO_LD_REGS might have lead to a reload of
;; that constant to LD_REGS. We don't add a scratch to *addhi3
@@ -1155,10 +1156,10 @@
(clobber (match_dup 2))])])
(define_insn "addhi3_clobber"
- [(set (match_operand:HI 0 "register_operand" "=d,l")
- (plus:HI (match_operand:HI 1 "register_operand" "%0,0")
- (match_operand:HI 2 "const_int_operand" "n,n")))
- (clobber (match_scratch:QI 3 "=X,&d"))]
+ [(set (match_operand:HI 0 "register_operand" "=!w,d,r")
+ (plus:HI (match_operand:HI 1 "register_operand" "%0,0,0")
+ (match_operand:HI 2 "const_int_operand" "IJ,n,n")))
+ (clobber (match_scratch:QI 3 "=X,X,&d"))]
""
{
gcc_assert (REGNO (operands[0]) == REGNO (operands[1]));
OpenPOWER on IntegriCloud