*** empty log message ***
authorSteve Chamberlain <sac@gnu.org>
Wed, 7 Dec 1994 01:52:01 +0000 (01:52 +0000)
committerSteve Chamberlain <sac@gnu.org>
Wed, 7 Dec 1994 01:52:01 +0000 (01:52 +0000)
From-SVN: r8620

gcc/config/sh/sh.md

index f009d8c352af4d41cf0abb4003246b4ab461c4f7..d514746dd45a03a75addffc56e9fca5c73ce48b6 100644 (file)
 ;; shift left
 
 
-
 (define_insn "ashlsi3_k"
   [(set (match_operand:SI 0 "arith_reg_operand" "=r,r")
        (ashift:SI (match_operand:SI 1 "arith_reg_operand" "0,0")
 
 (define_insn "ashrsi2_16"
   [(set (match_operand:SI 0 "register_operand" "=r")
-                         (ashiftrt:SI (match_operand:SI 1 "register_operand" "0")
-                                      (const_int 16)))
-            (clobber (reg:SI 18))]
+        (ashiftrt:SI (match_operand:SI 1 "register_operand" "r")
+                     (const_int 16)))]
   ""
-  "shlr16      %0\;exts.w      %0,%0"
+  "swap.w      %1,%0\;exts.w   %0,%0"
   [(set_attr "length" "4")])
 
-
 (define_insn "ashrsi2_31"
-  [(set (match_operand:SI 0 "register_operand" "=r")
-       (ashiftrt:SI (match_operand:SI 1 "register_operand" "0")
-                    (const_int 31)))]
+  [(set (match_operand:SI 0 "register_operand" "=r,r")
+        (ashiftrt:SI (match_operand:SI 1 "register_operand" "0,!r")
+                     (const_int 31)))
+   (clobber (reg:SI 18))]
   ""
-  "shal        %0\;subc        %0,%0"
-  [(set_attr "length" "4")])
+  "*
+{
+  if (which_alternative == 1)
+    {
+      if (dead_or_set_p (insn, operands[1]))
+        return \"shll  %1\;subc        %0,%0\";
+      else
+        return \"mov   %1,%0\;shll     %0\;subc        %0,%0\";
+    }
+  return \"shll        %0\;subc        %0,%0\";
+}"
+  [(set_attr "length" "4,6")])
+
+
+
 
 
 (define_insn "ashrsi3_n"
        
        
        
+       
\ No newline at end of file