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