* config/m68hc11/m68hc11.md ("cmphi_1", "cmpqi_1"): Allow memory
authorciceron <ciceron@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 4 Aug 2001 11:26:17 +0000 (11:26 +0000)
committerciceron <ciceron@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 4 Aug 2001 11:26:17 +0000 (11:26 +0000)
and soft register for operand 0.
("cmphi_z_used", "cmpqi_z_used"): Allow memory for operand 0.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44631 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/m68hc11/m68hc11.md

index 8a77fa0..abb7295 100644 (file)
@@ -1,5 +1,11 @@
 2001-08-04  Stephane Carrez  <Stephane.Carrez@worldnet.fr>
 
+       * config/m68hc11/m68hc11.md ("cmphi_1", "cmpqi_1"): Allow memory 
+       and soft register for operand 0.
+       ("cmphi_z_used", "cmpqi_z_used"): Allow memory for operand 0.
+
+2001-08-04  Stephane Carrez  <Stephane.Carrez@worldnet.fr>
+
        * config/m68hc11/m68hc11.md ("bitcmpqi"): Allow memory and soft
        register for operand 0.
        ("bitcmpqi_z_used"): Allow memory for operand 0.
index c87a218..171d6e8 100644 (file)
 (define_insn "cmphi_1"
   [(set (cc0)
        (compare (match_operand:HI 0 "tst_operand" 
-                               "xy,d,?xy,d,dxy,dxy,dxy")
+                               "x,dy,xyd,?xy,d,m,!u,dxy,dxy")
                 (match_operand:HI 1 "cmp_operand"
-                               "i,i,m,m,?*d*A,?u,!*w")))]
+                               "i,i,!u,m,m,dxy,dxy,?*d*A,!*w")))]
   ""
   "*
 {
-  if (H_REG_P (operands[1]))
+  if (H_REG_P (operands[1]) && !H_REG_P (operands[0]))
+    {
+      cc_status.flags |= CC_REVERSED;
+      return \"cp%1\\t%0\";
+    }
+  else if (H_REG_P (operands[1]))
     return \"#\";
   else
     return \"cp%0\\t%1\";
 
 (define_insn "cmphi_z_used"
   [(set (cc0)
-       (compare (match_operand:HI 0 "hard_reg_operand" "dxy")
-                (match_operand:HI 1 "cmp_operand" "m")))
-   (use (match_operand:HI 2 "hard_reg_operand" "dxy"))
+       (compare (match_operand:HI 0 "tst_operand" "dxy,m")
+                (match_operand:HI 1 "cmp_operand" "m,dxy")))
+   (use (match_operand:HI 2 "hard_reg_operand" "dxy,dxy"))
    (use (reg:HI 11))]
   ""
   "#")
   
 (define_split /* "cmphi_z_used" */
   [(set (cc0)
-       (compare (match_operand:HI 0 "hard_reg_operand" "dxy")
-                (match_operand:HI 1 "cmp_operand" "m")))
-   (use (match_operand:HI 2 "hard_reg_operand" "dxy"))
+       (compare (match_operand:HI 0 "tst_operand" "dxy,m")
+                (match_operand:HI 1 "cmp_operand" "m,dxy")))
+   (use (match_operand:HI 2 "hard_reg_operand" "dxy,dxy"))
    (use (reg:HI 11))]
   "z_replacement_completed == 2"
   [(set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM))) (match_dup 2))
 
 (define_insn "cmpqi_1"
   [(set (cc0)
-       (compare (match_operand:QI 0 "tst_operand" "d,d,*x*y,*x*y")
-                (match_operand:QI 1 "cmp_operand" "im,!u,!u,?dim*x*y")))]
+       (compare (match_operand:QI 0 "tst_operand" "d,m,d,!u,*B,d")
+                (match_operand:QI 1 "cmp_operand" "im,d,!u,d,?dim*B,*u")))]
   ""
-  "@
-   cmpb\\t%1
-   cmpb\\t%b1
-   #
-   #")
+  "*
+{
+   if (A_REG_P (operands[0]) || A_REG_P (operands[1]))
+     {
+        return \"#\";
+     }
+   else if (D_REG_P (operands[0]))
+     {
+        return \"cmpb\\t%b1\";
+     }
+   cc_status.flags |= CC_REVERSED;
+   return \"cmpb\\t%b0\";
+}")
 
 (define_insn "cmpqi_z_used"
   [(set (cc0)
-       (compare (match_operand:QI 0 "hard_reg_operand" "dxy")
-                (match_operand:QI 1 "cmp_operand" "m")))
-   (use (match_operand:HI 2 "hard_reg_operand" "dxy"))
+       (compare (match_operand:QI 0 "tst_operand" "dxy,m")
+                (match_operand:QI 1 "cmp_operand" "m,dxy")))
+   (use (match_operand:HI 2 "hard_reg_operand" "dxy,dxy"))
    (use (reg:HI 11))]
   ""
   "#")
   
 (define_split /* cmpqi_z_used */
   [(set (cc0)
-       (compare (match_operand:QI 0 "hard_reg_operand" "dxy")
-                (match_operand:QI 1 "cmp_operand" "m")))
-   (use (match_operand:HI 2 "hard_reg_operand" "dxy"))
+       (compare (match_operand:QI 0 "tst_operand" "dxy,m")
+                (match_operand:QI 1 "cmp_operand" "m,dxy")))
+   (use (match_operand:HI 2 "hard_reg_operand" "dxy,dxy"))
    (use (reg:HI 11))]
   "z_replacement_completed == 2"
   [(set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM))) (match_dup 2))