aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2001-12-17 10:40:10 -0800
committerRichard Henderson <rth@gcc.gnu.org>2001-12-17 10:40:10 -0800
commitc453325c7204611d0bba0eed257347bed6b4e20b (patch)
tree0f5faf7b3ec507e6e1b57f17dc53df37852a044f
parentc04cf67b3ffc8b8e6e6833b8e383299e74211abb (diff)
downloadgcc-c453325c7204611d0bba0eed257347bed6b4e20b.zip
gcc-c453325c7204611d0bba0eed257347bed6b4e20b.tar.gz
gcc-c453325c7204611d0bba0eed257347bed6b4e20b.tar.bz2
sparc.md (movdi_zero): Remove.
* config/sparc/sparc.md (movdi_zero): Remove. (movdi_insn_sp32_v9): New. From-SVN: r48115
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/sparc/sparc.md43
2 files changed, 36 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e508636..bf0bff5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2001-12-17 Richard Henderson <rth@redhat.com>
+ * config/sparc/sparc.md (movdi_zero): Remove.
+ (movdi_insn_sp32_v9): New.
+
+2001-12-17 Richard Henderson <rth@redhat.com>
+
* cfgcleanup.c (outgoing_edges_match): Check for insn match with
a single outgoing edge too.
diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md
index dde4156..f4d5d1f 100644
--- a/gcc/config/sparc/sparc.md
+++ b/gcc/config/sparc/sparc.md
@@ -2444,13 +2444,6 @@
;
}")
-(define_insn "*movdi_zero"
- [(set (match_operand:DI 0 "memory_operand" "")
- (const_int 0))]
- "TARGET_V9"
- "stx\\t%%g0, %0"
- [(set_attr "type" "store")])
-
;; Be careful, fmovd does not exist when !arch64.
;; We match MEM moves directly when we have correct even
;; numbered registers, but fall into splits otherwise.
@@ -2462,12 +2455,38 @@
;; (const_int -5016)))
;; (reg:DI 2 %g2))
;;
+
+(define_insn "*movdi_insn_sp32_v9"
+ [(set (match_operand:DI 0 "nonimmediate_operand"
+ "=m,T,U,o,r,r,r,?T,?f,?f,?o,?f")
+ (match_operand:DI 1 "input_operand"
+ " J,U,T,r,o,i,r, f, T, o, f, f"))]
+ "! TARGET_ARCH64 && TARGET_V9
+ && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
+ "@
+ stx\\t%%g0, %0
+ std\\t%1, %0
+ ldd\\t%1, %0
+ #
+ #
+ #
+ #
+ std\\t%1, %0
+ ldd\\t%1, %0
+ #
+ #
+ #"
+ [(set_attr "type" "store,store,load,*,*,*,*,fpstore,fpload,*,*,*")
+ (set_attr "length" "*,*,*,2,2,2,2,*,*,2,2,2")])
+
(define_insn "*movdi_insn_sp32"
- [(set (match_operand:DI 0 "nonimmediate_operand" "=T,U,o,r,r,r,?T,?f,?f,?o,?f")
- (match_operand:DI 1 "input_operand" "U,T,r,o,i,r,f,T,o,f,f"))]
- "! TARGET_ARCH64 &&
- (register_operand (operands[0], DImode)
- || register_operand (operands[1], DImode))"
+ [(set (match_operand:DI 0 "nonimmediate_operand"
+ "=T,U,o,r,r,r,?T,?f,?f,?o,?f")
+ (match_operand:DI 1 "input_operand"
+ " U,T,r,o,i,r, f, T, o, f, f"))]
+ "! TARGET_ARCH64
+ && (register_operand (operands[0], DImode)
+ || register_operand (operands[1], DImode))"
"@
std\\t%1, %0
ldd\\t%1, %0