avr.md patch
Torbjorn Granlund
tege@swox.com
Tue Feb 19 17:57:00 GMT 2002
This patch improves code tremedously for a bignum project I am working
on for AVR.
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).
*** /u/gcc/gcc-3.0.3/gcc/config/avr/avr.md.~1~ Wed Jun 27 23:35:37 2001
--- /u/gcc/gcc-3.0.3/gcc/config/avr/avr.md Wed Feb 20 02:17:05 2002
***************
*** 607,608 ****
--- 607,621 ----
+ (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")])
+
;-----------------------------------------------------------------------------
***************
*** 631,632 ****
--- 644,656 ----
+ (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"
***************
*** 641,642 ****
--- 665,679 ----
(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")])
--
Torbjörn
More information about the Gcc-patches
mailing list