aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTorbjorn Granlund <tege@swox.com>2002-02-21 19:27:50 +0000
committerDenis Chertykov <denisc@gcc.gnu.org>2002-02-21 22:27:50 +0300
commite2ec05a6c96065358c2afaafd2c62dc1f1a2db4d (patch)
treecbc625e552d0052088119a01e97207afa750c210 /gcc
parent9dd791c86c770caf0b6a12a0dfae7cf0e0469f89 (diff)
downloadgcc-e2ec05a6c96065358c2afaafd2c62dc1f1a2db4d.zip
gcc-e2ec05a6c96065358c2afaafd2c62dc1f1a2db4d.tar.gz
gcc-e2ec05a6c96065358c2afaafd2c62dc1f1a2db4d.tar.bz2
avr.md: Add more patterns for mized-mode add and subtract (addsi3_zero_extend...
* config/avr/avr.md: Add more patterns for mized-mode add and subtract (addsi3_zero_extend, subhi3_zero_extend1, subsi3_zero_extend). From-SVN: r49936
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/avr/avr.md37
2 files changed, 42 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e1984f4..e64cbb9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2002-02-20 Torbjorn Granlund <tege@swox.com>
+
+ * config/avr/avr.md: Add more patterns for mized-mode add and subtract
+ (addsi3_zero_extend, subhi3_zero_extend1, subsi3_zero_extend).
+
Thu Feb 21 16:20:46 2002 Alexandre Oliva <aoliva@redhat.com>
* rtlanal.c (replace_rtx): Don't make a CONST_INT the operand of
diff --git a/gcc/config/avr/avr.md b/gcc/config/avr/avr.md
index 3c1432d..f432f0e 100644
--- a/gcc/config/avr/avr.md
+++ b/gcc/config/avr/avr.md
@@ -605,6 +605,19 @@
[(set_attr "length" "4,3,3,4,5,5")
(set_attr "cc" "set_n,set_n,set_czn,set_czn,set_n,set_n")])
+(define_insn "*addsi3_zero_extend"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (plus:SI (zero_extend:SI
+ (match_operand:QI 1 "register_operand" "r"))
+ (match_operand:SI 2 "register_operand" "0")))]
+ ""
+ "add %A0,%1
+ adc %B0,__zero_reg__
+ adc %C0,__zero_reg__
+ adc %D0,__zero_reg__"
+ [(set_attr "length" "4")
+ (set_attr "cc" "set_n")])
+
;-----------------------------------------------------------------------------
; sub bytes
(define_insn "subqi3"
@@ -629,6 +642,17 @@
[(set_attr "length" "2,2")
(set_attr "cc" "set_czn,set_czn")])
+(define_insn "*subhi3_zero_extend1"
+ [(set (match_operand:HI 0 "register_operand" "=r")
+ (minus:HI (match_operand:HI 1 "register_operand" "0")
+ (zero_extend:HI
+ (match_operand:QI 2 "register_operand" "r"))))]
+ ""
+ "sub %A0,%2
+ sbc %B0,__zero_reg__"
+ [(set_attr "length" "2")
+ (set_attr "cc" "set_n")])
+
(define_insn "subsi3"
[(set (match_operand:SI 0 "register_operand" "=r,d")
(minus:SI (match_operand:SI 1 "register_operand" "0,0")
@@ -640,6 +664,19 @@
[(set_attr "length" "4,4")
(set_attr "cc" "set_czn,set_czn")])
+(define_insn "*subsi3_zero_extend"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (minus:SI (match_operand:SI 1 "register_operand" "0")
+ (zero_extend:SI
+ (match_operand:QI 2 "register_operand" "r"))))]
+ ""
+ "sub %A0,%2
+ sbc %B0,__zero_reg__
+ sbc %C0,__zero_reg__
+ sbc %D0,__zero_reg__"
+ [(set_attr "length" "4")
+ (set_attr "cc" "set_n")])
+
;******************************************************************************
; mul