(return peepholes): Add QImode and HImode move/return patterns.
authorJim Wilson <wilson@gcc.gnu.org>
Wed, 16 Dec 1992 00:42:21 +0000 (16:42 -0800)
committerJim Wilson <wilson@gcc.gnu.org>
Wed, 16 Dec 1992 00:42:21 +0000 (16:42 -0800)
From-SVN: r2876

gcc/config/sparc/sparc.md

index 6cf9eaa42f35ec3df3de2075e321957934006600..33b50f9e2af2c5a5ae3090a791652a6d9113ef14 100644 (file)
 
 ;; Return peepholes.  First the "normal" ones
 
+;; ??? There are QImode, HImode, and SImode versions of this pattern.
+;; It might be possible to write one more general pattern instead of three.
+
+(define_insn ""
+  [(set (match_operand:QI 0 "restore_operand" "")
+       (match_operand:QI 1 "arith_operand" "rI"))
+   (return)]
+  "! TARGET_EPILOGUE"
+  "*
+{
+  if (current_function_returns_struct)
+    return \"jmp %%i7+12\;restore %%g0,%1,%Y0\";
+  else
+    return \"ret\;restore %%g0,%1,%Y0\";
+}"
+  [(set_attr "type" "multi")])
+
+(define_insn ""
+  [(set (match_operand:HI 0 "restore_operand" "")
+       (match_operand:HI 1 "arith_operand" "rI"))
+   (return)]
+  "! TARGET_EPILOGUE"
+  "*
+{
+  if (current_function_returns_struct)
+    return \"jmp %%i7+12\;restore %%g0,%1,%Y0\";
+  else
+    return \"ret\;restore %%g0,%1,%Y0\";
+}"
+  [(set_attr "type" "multi")])
+
 (define_insn ""
   [(set (match_operand:SI 0 "restore_operand" "")
        (match_operand:SI 1 "arith_operand" "rI"))