s390.c (s390_expand_addcc): Emit canonical alc pattern.
authorUlrich Weigand <uweigand@de.ibm.com>
Thu, 30 Aug 2007 06:50:44 +0000 (06:50 +0000)
committerAndreas Krebbel <krebbel@gcc.gnu.org>
Thu, 30 Aug 2007 06:50:44 +0000 (06:50 +0000)
2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>

* config/s390/s390.c (s390_expand_addcc): Emit canonical alc
pattern.
* config/s390/s390.md ("*add<mode>3_alc_cc", "*add<mode>3_alc",
"addti3", "*adddi3_31z", "*scond<mode>"): Make alc pattern canonical.

From-SVN: r127920

gcc/ChangeLog
gcc/config/s390/s390.c
gcc/config/s390/s390.md

index 9f39598ee2d189924341c0361a8f84b967ab5afc..9464cab9e43e009c0d260f284df1a0a8291ee098 100644 (file)
@@ -1,3 +1,10 @@
+2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
+
+       * config/s390/s390.c (s390_expand_addcc): Emit canonical alc
+       pattern.
+       * config/s390/s390.md ("*add<mode>3_alc_cc", "*add<mode>3_alc",
+       "addti3", "*adddi3_31z", "*scond<mode>"): Make alc pattern canonical.
+
 2007-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * system.h: Activate -Wcast-qual as warning-only.
index c93fe997abbc5b9298a4c21a846de22159ee4257..aa6db1f3d26e790a0f3b31a904a7ad4f6b16bf30 100644 (file)
@@ -3927,8 +3927,8 @@ s390_expand_addcc (enum rtx_code cmp_code, rtx cmp_op0, rtx cmp_op1,
          if (!register_operand (src, GET_MODE (dst)))
            src = force_reg (GET_MODE (dst), src);
 
-         src = gen_rtx_PLUS (GET_MODE (dst), src, const0_rtx);
-         op_res = gen_rtx_PLUS (GET_MODE (dst), src, op_res);
+         op_res = gen_rtx_PLUS (GET_MODE (dst), op_res, src);
+         op_res = gen_rtx_PLUS (GET_MODE (dst), op_res, const0_rtx);
        }
 
       p = rtvec_alloc (2);
index e0e9edc3f4abfe2fe38a19ecab558a6f41acd07e..cb0f9000eefc908ad86b3a34ef26d02b9e717240 100644 (file)
                         (match_dup 7)))
      (set (match_dup 6) (plus:DI (match_dup 7) (match_dup 8)))])
    (parallel
-    [(set (match_dup 3) (plus:DI (plus:DI (match_dup 4) (match_dup 5))
-                                 (ltu:DI (reg:CCL1 CC_REGNUM) (const_int 0))))
+    [(set (match_dup 3) (plus:DI
+                          (plus:DI (ltu:DI (reg:CCL1 CC_REGNUM) (const_int 0))
+                                   (match_dup 4)) (match_dup 5)))
      (clobber (reg:CC CC_REGNUM))])]
   "operands[3] = operand_subword (operands[0], 0, 0, TImode);
    operands[4] = operand_subword (operands[1], 0, 0, TImode);
                         (match_dup 7)))
      (set (match_dup 6) (plus:SI (match_dup 7) (match_dup 8)))])
    (parallel
-    [(set (match_dup 3) (plus:SI (plus:SI (match_dup 4) (match_dup 5))
-                                 (ltu:SI (reg:CCL1 CC_REGNUM) (const_int 0))))
+    [(set (match_dup 3) (plus:SI
+                         (plus:SI (ltu:SI (reg:CCL1 CC_REGNUM) (const_int 0))
+                                  (match_dup 4)) (match_dup 5)))
      (clobber (reg:CC CC_REGNUM))])]
   "operands[3] = operand_subword (operands[0], 0, 0, DImode);
    operands[4] = operand_subword (operands[1], 0, 0, DImode);
 (define_insn "*add<mode>3_alc_cc"
   [(set (reg CC_REGNUM)
         (compare
-          (plus:GPR (plus:GPR (match_operand:GPR 1 "nonimmediate_operand" "%0,0")
-                              (match_operand:GPR 2 "general_operand" "d,m"))
-                    (match_operand:GPR 3 "s390_alc_comparison" ""))
+          (plus:GPR (plus:GPR (match_operand:GPR 3 "s390_alc_comparison" "")
+                              (match_operand:GPR 1 "nonimmediate_operand" "%0,0"))
+                    (match_operand:GPR 2 "general_operand" "d,m"))
           (const_int 0)))
    (set (match_operand:GPR 0 "register_operand" "=d,d")
-        (plus:GPR (plus:GPR (match_dup 1) (match_dup 2)) (match_dup 3)))]
+        (plus:GPR (plus:GPR (match_dup 3) (match_dup 1)) (match_dup 2)))]
   "s390_match_ccmode (insn, CCLmode) && TARGET_CPU_ZARCH"
   "@
    alc<g>r\t%0,%2
 ; alcr, alc, alcgr, alcg
 (define_insn "*add<mode>3_alc"
   [(set (match_operand:GPR 0 "register_operand" "=d,d")
-        (plus:GPR (plus:GPR (match_operand:GPR 1 "nonimmediate_operand" "%0,0")
-                            (match_operand:GPR 2 "general_operand" "d,m"))
-                  (match_operand:GPR 3 "s390_alc_comparison" "")))
+        (plus:GPR (plus:GPR (match_operand:GPR 3 "s390_alc_comparison" "")
+                            (match_operand:GPR 1 "nonimmediate_operand" "%0,0"))
+                  (match_operand:GPR 2 "general_operand" "d,m")))
    (clobber (reg:CC CC_REGNUM))]
   "TARGET_CPU_ZARCH"
   "@
   "&& reload_completed"
   [(set (match_dup 0) (const_int 0))
    (parallel
-    [(set (match_dup 0) (plus:GPR (plus:GPR (match_dup 0) (match_dup 0))
-                                  (match_dup 1)))
+    [(set (match_dup 0) (plus:GPR (plus:GPR (match_dup 1) (match_dup 0))
+                                  (match_dup 0)))
      (clobber (reg:CC CC_REGNUM))])]
   "")