From d0adc050ee3db38bace0b3c261e33d13fb82785e Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Sun, 3 Jan 1993 07:09:52 -0500 Subject: (movdi): Tests were in wrong order. From-SVN: r3063 --- gcc/config/rs6000/rs6000.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'gcc') diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 15a2c51..5ad5084 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -4579,7 +4579,18 @@ "" "cror 0,0,0") -;; Define the subtract-one-and-jump insns. +;; Define the subtract-one-and-jump insns, starting with the template +;; so loop.c knows what to generate. + +(define_expand "decrement_and_branchsi" + [(set (pc) (if_then_else (ne (match_operand:SI 0 "register_operand" "c") + (const_int 1)) + (label_ref (match_operand 1 "" "")) + (pc))) + (set (match_dup 0) (plus:SI (match_dup 0) (const_int -1)))] + "" + "") + ;; We need to be able to do this for any operand, including MEM, or we ;; will cause reload to blow up since we don't allow output reloads on ;; JUMP_INSNs. @@ -4599,7 +4610,7 @@ # #") -;; Similar, but we can use GE since we have a REG_NOTES. +;; Similar, but we can use GE since we have a REG_NONNEG. (define_insn "" [(set (pc) (if_then_else (ge (match_operand:SI 1 "register_operand" "0,*r,*r") -- cgit v1.1