diff options
author | Richard Henderson <rth@redhat.com> | 2001-12-17 10:40:10 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2001-12-17 10:40:10 -0800 |
commit | c453325c7204611d0bba0eed257347bed6b4e20b (patch) | |
tree | 0f5faf7b3ec507e6e1b57f17dc53df37852a044f | |
parent | c04cf67b3ffc8b8e6e6833b8e383299e74211abb (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/sparc/sparc.md | 43 |
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 |