]> gcc.gnu.org Git - gcc.git/commitdiff
avr.md (*addhi3, [...]): Add "w" alternative for constants in [-63,63].
authorGeorg-Johann Lay <avr@gjlay.de>
Thu, 8 Mar 2012 16:36:49 +0000 (16:36 +0000)
committerGeorg-Johann Lay <gjl@gcc.gnu.org>
Thu, 8 Mar 2012 16:36:49 +0000 (16:36 +0000)
* config/avr/avr.md (*addhi3, addhi3_clobber): Add "w" alternative
for constants in [-63,63].

From-SVN: r185105

gcc/ChangeLog
gcc/config/avr/avr.md

index 08ab3c9231c1b76c4504a38f488939dfc9514cd9..0d9c469e90069b25c28b6fd0211298b8f2d99576 100644 (file)
@@ -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
index 33a871e04d9092e3b4b9f985512139038a1ff584..3d1adf8b267a3a491ff554a64e104134a95b5395 100644 (file)
    (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))",
+        "",
         ""
       };
 
 
     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
               (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]));
This page took 0.078055 seconds and 5 git commands to generate.