]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
rs6000.md (ctrdi): Allocate pseudo for FPR constraint in define_expand, not splitter.
authorDavid Edelsohn <edelsohn@gnu.org>
Sun, 30 Jun 2002 20:08:32 +0000 (20:08 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Sun, 30 Jun 2002 20:08:32 +0000 (16:08 -0400)
        * config/rs6000/rs6000.md (ctrdi): Allocate pseudo for FPR
        constraint in define_expand, not splitter.

From-SVN: r55123

gcc/ChangeLog
gcc/config/rs6000/rs6000.md

index 1fe32fc7fdc4e46bd6a50f9a092cbe6ae92117bd..49ad4284b47a8d9c5e2fb2ae721658dcc4585e3a 100644 (file)
@@ -1,3 +1,8 @@
+2002-06-30  David Edelsohn  <edelsohn@gnu.org>
+
+       * config/rs6000/rs6000.md (ctrdi): Allocate pseudo for FPR
+       constraint in define_expand, not splitter.
+
 2002-06-28  Phil Edwards  <pme@gcc.gnu.org>
 
        * configure.in (gcc_gxx_include_dir):  Change to match versioned
index 93c6fc3db5631bc9ba744949e2f7785a50ee961b..8b487261793001db11e946af9211f773fd01f1d9 100644 (file)
                   (plus:DI (match_dup 0)
                            (const_int -1)))
              (clobber (match_scratch:CC 2 ""))
-             (clobber (match_scratch:DI 3 ""))])]
+             (clobber (match_scratch:DI 3 ""))
+             (clobber (match_dup 4))])]
   "TARGET_POWERPC64"
-  "")
+  "
+{ operands[4] = gen_reg_rtx (DImode); }")
 
 ;; 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
        (plus:DI (match_dup 1)
                 (const_int -1)))
    (clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
-   (clobber (match_scratch:DI 4 "=X,X,r,r"))]
+   (clobber (match_scratch:DI 4 "=X,X,r,r"))
+   (clobber (match_operand:DI 5 "nonimmediate_operand" "=X,X,X,o"))]
   "TARGET_POWERPC64"
   "*
 {
        (plus:DI (match_dup 1)
                 (const_int -1)))
    (clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
-   (clobber (match_scratch:DI 4 "=X,X,r,r"))]
+   (clobber (match_scratch:DI 4 "=X,X,r,r"))
+   (clobber (match_operand:DI 5 "nonimmediate_operand" "=X,X,X,o"))]
   "TARGET_POWERPC64"
   "*
 {
        (plus:DI (match_dup 1)
                 (const_int -1)))
    (clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
-   (clobber (match_scratch:DI 4 "=X,X,r,r"))]
+   (clobber (match_scratch:DI 4 "=X,X,r,r"))
+   (clobber (match_operand:DI 5 "nonimmediate_operand" "=X,X,X,o"))]
   "TARGET_POWERPC64 && find_reg_note (insn, REG_NONNEG, 0)"
   "*
 {
        (plus:DI (match_dup 1)
                 (const_int -1)))
    (clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
-   (clobber (match_scratch:DI 4 "=X,X,r,r"))]
+   (clobber (match_scratch:DI 4 "=X,X,r,r"))
+   (clobber (match_operand:DI 5 "nonimmediate_operand" "=X,X,X,o"))]
   "TARGET_POWERPC64 && find_reg_note (insn, REG_NONNEG, 0)"
   "*
 {
        (plus:DI (match_dup 1)
                 (const_int -1)))
    (clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
-   (clobber (match_scratch:DI 4 "=X,X,r,r"))]
+   (clobber (match_scratch:DI 4 "=X,X,r,r"))
+   (clobber (match_operand:DI 5 "nonimmediate_operand" "=X,X,X,o"))]
   "TARGET_POWERPC64"
   "*
 {
        (plus:DI (match_dup 1)
                 (const_int -1)))
    (clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
-   (clobber (match_scratch:DI 4 "=X,X,r,r"))]
+   (clobber (match_scratch:DI 4 "=X,X,r,r"))
+   (clobber (match_operand:DI 5 "nonimmediate_operand" "=X,X,X,o"))]
   "TARGET_POWERPC64"
   "*
 {
        (if_then_else (match_operator 2 "comparison_operator"
                                      [(match_operand:DI 1 "gpc_reg_operand" "")
                                       (const_int 1)])
-                     (match_operand 5 "" "")
-                     (match_operand 6 "" "")))
+                     (match_operand 6 "" "")
+                     (match_operand 7 "" "")))
    (set (match_operand:DI 0 "gpc_reg_operand" "")
        (plus:DI (match_dup 1)
                 (const_int -1)))
    (clobber (match_scratch:CC 3 ""))
-   (clobber (match_scratch:DI 4 ""))]
+   (clobber (match_scratch:DI 4 ""))
+   (clobber (match_operand:DI 5 "nonimmediate_operand" ""))]
   "TARGET_POWERPC64 && reload_completed && INT_REGNO_P (REGNO (operands[0]))"
   [(parallel [(set (match_dup 3)
                   (compare:CC (plus:DI (match_dup 1)
              (set (match_dup 0)
                   (plus:DI (match_dup 1)
                            (const_int -1)))])
-   (set (pc) (if_then_else (match_dup 7)
-                          (match_dup 5)
-                          (match_dup 6)))]
+   (set (pc) (if_then_else (match_dup 8)
+                          (match_dup 6)
+                          (match_dup 7)))]
   "
-{ operands[7] = gen_rtx (GET_CODE (operands[2]), VOIDmode, operands[3],
+{ operands[8] = gen_rtx (GET_CODE (operands[2]), VOIDmode, operands[3],
                         const0_rtx); }")
 
 (define_split
        (if_then_else (match_operator 2 "comparison_operator"
                                      [(match_operand:DI 1 "gpc_reg_operand" "")
                                       (const_int 1)])
-                     (match_operand 5 "" "")
-                     (match_operand 6 "" "")))
+                     (match_operand 6 "" "")
+                     (match_operand 7 "" "")))
    (set (match_operand:DI 0 "nonimmediate_operand" "")
        (plus:DI (match_dup 1) (const_int -1)))
    (clobber (match_scratch:CC 3 ""))
-   (clobber (match_scratch:DI 4 ""))]
+   (clobber (match_scratch:DI 4 ""))
+   (clobber (match_operand:DI 5 "nonimmediate_operand" ""))]
   "TARGET_POWERPC64 && reload_completed
    && ! gpc_reg_operand (operands[0], DImode)"
   [(parallel [(set (match_dup 3)
                            (const_int -1)))])
    (set (match_dup 0)
        (match_dup 4))
-   (set (pc) (if_then_else (match_dup 7)
-                          (match_dup 5)
-                          (match_dup 6)))]
+   (set (pc) (if_then_else (match_dup 8)
+                          (match_dup 6)
+                          (match_dup 7)))]
   "
-{ operands[7] = gen_rtx (GET_CODE (operands[2]), VOIDmode, operands[3],
+{ operands[8] = gen_rtx (GET_CODE (operands[2]), VOIDmode, operands[3],
                         const0_rtx); }")
 
 (define_split
        (if_then_else (match_operator 2 "comparison_operator"
                                     [(match_operand:DI 1 "gpc_reg_operand" "")
                                      (const_int 1)])
-                    (match_operand 5 "" "")
-                    (match_operand 6 "" "")))
+                    (match_operand 6 "" "")
+                    (match_operand 7 "" "")))
    (set (match_operand:DI 0 "gpc_reg_operand" "")
        (plus:DI (match_dup 1)
                (const_int -1)))
    (clobber (match_scratch:CC 3 ""))
-   (clobber (match_scratch:DI 4 ""))]
+   (clobber (match_scratch:DI 4 ""))
+   (clobber (match_operand:DI 5 "nonimmediate_operand" ""))]
   "TARGET_POWERPC64 && reload_completed && FP_REGNO_P (REGNO (operands[0]))"
-  [(set (match_dup 8)
+  [(set (match_dup 5)
        (match_dup 1))
    (set (match_dup 4)
-       (match_dup 8))
+       (match_dup 5))
    (parallel [(set (match_dup 3)
                   (compare:CC (plus:DI (match_dup 4)
                                        (const_int -1))
              (set (match_dup 4)
                   (plus:DI (match_dup 4)
                            (const_int -1)))])
-   (set (match_dup 8)
+   (set (match_dup 5)
        (match_dup 4))
    (set (match_dup 0)
-       (match_dup 8))
-   (set (pc) (if_then_else (match_dup 7)
-                          (match_dup 5)
-                          (match_dup 6)))]
+       (match_dup 5))
+   (set (pc) (if_then_else (match_dup 8)
+                          (match_dup 6)
+                          (match_dup 7)))]
   "
 {
-  operands[7] = gen_rtx (GET_CODE (operands[2]), VOIDmode, operands[3],
+  operands[8] = gen_rtx (GET_CODE (operands[2]), VOIDmode, operands[3],
                         const0_rtx);
-  operands[8] = assign_stack_temp (DImode, GET_MODE_SIZE (DImode), 0);
 }")
 
 \f