2011/9/22 Georg-Johann Lay <a...@gjlay.de>:
> This patch adds the PLUS part to fix the PR.
>
> addsi3 has a 8-bit scratch register now so that constants that are not covered
> by the constraints won't force a reload of the constant.
>
> The output routine tries adding the constant and subtracting the negated
> constant and then chooses the shortest sequence.  Moreover, if the lower bytes
> of the constant are zero, there is no need to add them.
>
> Besides that, the patch adds some add-and-zero-extend patterns.
>
> Passed without regressions.


Why you removed immediate operand from subsi3:

 (define_insn "subsi3"
-  [(set (match_operand:SI 0 "register_operand" "=r,d")
-        (minus:SI (match_operand:SI 1 "register_operand" "0,0")
-                 (match_operand:SI 2 "nonmemory_operand" "r,i")))]
+  [(set (match_operand:SI 0 "register_operand"          "=r")
+        (minus:SI (match_operand:SI 1 "register_operand" "0")
+                  (match_operand:SI 2 "register_operand" "r")))]
   ""
-  "@
-       sub %0,%2\;sbc %B0,%B2\;sbc %C0,%C2\;sbc %D0,%D2
-       subi %A0,lo8(%2)\;sbci %B0,hi8(%2)\;sbci %C0,hlo8(%2)\;sbci 
%D0,hhi8(%2)"
-  [(set_attr "length" "4,4")
-   (set_attr "cc" "set_czn,set_czn")])
+  "sub %0,%2\;sbc %B0,%B2\;sbc %C0,%C2\;sbc %D0,%D2"
+  [(set_attr "length" "4")
+   (set_attr "cc" "set_czn")])



Denis.

Reply via email to