OSDN Git Service

2005-12-14 Adrian Straetling <straetling@de.ibm.com>
authoruweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 14 Dec 2005 16:11:14 +0000 (16:11 +0000)
committeruweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 14 Dec 2005 16:11:14 +0000 (16:11 +0000)
* config/s390/s390.md ("*tstdi_extimm", "*tstsi_extimm"): Merge.
("*tstdi_cconly_extimm", "*tstsi_cconly_extimm"): Merge.
("*tstdi_cconly2", "*tstsi_cconly2"): Merge.
Move other tst* patterns to retain partial order.

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

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

index a50c1e3..a86c2a2 100644 (file)
@@ -1,5 +1,12 @@
 2005-12-14  Adrian Straetling  <straetling@de.ibm.com>
 
+       * config/s390/s390.md ("*tstdi_extimm", "*tstsi_extimm"): Merge.
+       ("*tstdi_cconly_extimm", "*tstsi_cconly_extimm"): Merge.
+       ("*tstdi_cconly2", "*tstsi_cconly2"): Merge.
+       Move other tst* patterns to retain partial order.
+
+2005-12-14  Adrian Straetling  <straetling@de.ibm.com>
+
        * config/s390/s390.md ("d0", "1"): New mode attributes.
        ("<shift>di3", "<shift>si3"): Merge.
        ("*<shift>di3_and", "*<shift>si3_and"): Merge.
index 274c233..d4e515c 100644 (file)
   [(set_attr "op_type" "RI")])
 
 
+;
 ; Load-and-Test instructions
+;
+
+; tst(di|si) intruction pattern(s).
 
 (define_insn "*tstdi_sign"
   [(set (reg CC_REGNUM)
   "ltgfr\t%2,%0"
   [(set_attr "op_type" "RRE")])
 
-(define_insn "*tstdi_extimm"
+(define_insn "*tst<mode>_extimm"
   [(set (reg CC_REGNUM)
-        (compare (match_operand:DI 0 "nonimmediate_operand" "d,m")
-                 (match_operand:DI 1 "const0_operand" "")))
-   (set (match_operand:DI 2 "register_operand" "=d,d")
+        (compare (match_operand:GPR 0 "nonimmediate_operand" "d,m")
+                 (match_operand:GPR 1 "const0_operand" "")))
+   (set (match_operand:GPR 2 "register_operand" "=d,d")
         (match_dup 0))]
-  "s390_match_ccmode(insn, CCSmode) && TARGET_64BIT && TARGET_EXTIMM"
+  "s390_match_ccmode(insn, CCSmode) && TARGET_EXTIMM"
   "@
-   ltgr\t%2,%0
-   ltg\t%2,%0"
-  [(set_attr "op_type" "RRE,RXY")])
+   lt<g>r\t%2,%0
+   lt<g>\t%2,%0"
+  [(set_attr "op_type" "RR<E>,RXY")])
 
-(define_insn "*tstdi_cconly_extimm"
+(define_insn "*tst<mode>_cconly_extimm"
   [(set (reg CC_REGNUM)
-        (compare (match_operand:DI 0 "nonimmediate_operand" "d,m")
-                 (match_operand:DI 1 "const0_operand" "")))
-   (clobber (match_scratch:DI 2 "=X,d"))]
-  "s390_match_ccmode(insn, CCSmode) && TARGET_64BIT && TARGET_EXTIMM"
+        (compare (match_operand:GPR 0 "nonimmediate_operand" "d,m")
+                 (match_operand:GPR 1 "const0_operand" "")))
+   (clobber (match_scratch:GPR 2 "=X,d"))]
+  "s390_match_ccmode(insn, CCSmode) && TARGET_EXTIMM"
   "@
-   ltgr\t%0,%0
-   ltg\t%2,%0"
-  [(set_attr "op_type" "RRE,RXY")])
+   lt<g>r\t%0,%0
+   lt<g>\t%2,%0"
+  [(set_attr "op_type" "RR<E>,RXY")])
 
 (define_insn "*tstdi"
   [(set (reg CC_REGNUM)
   "ltgr\t%2,%0"
   [(set_attr "op_type" "RRE")])
 
-(define_insn "*tstdi_cconly"
-  [(set (reg CC_REGNUM)
-        (compare (match_operand:DI 0 "register_operand" "d")
-                 (match_operand:DI 1 "const0_operand" "")))]
-  "s390_match_ccmode(insn, CCSmode) && TARGET_64BIT"
-  "ltgr\t%0,%0"
-  [(set_attr "op_type" "RRE")])
-
-(define_insn "*tstdi_cconly_31"
-  [(set (reg CC_REGNUM)
-        (compare (match_operand:DI 0 "register_operand" "d")
-                 (match_operand:DI 1 "const0_operand" "")))]
-  "s390_match_ccmode(insn, CCSmode) && !TARGET_64BIT"
-  "srda\t%0,0"
-  [(set_attr "op_type" "RS")
-   (set_attr "atype"   "reg")])
-
-(define_insn "*tstsi_extimm"
-  [(set (reg CC_REGNUM)
-        (compare (match_operand:SI 0 "nonimmediate_operand" "d,m")
-                 (match_operand:SI 1 "const0_operand" "")))
-   (set (match_operand:SI 2 "register_operand" "=d,d")
-        (match_dup 0))]
-  "s390_match_ccmode(insn, CCSmode) && TARGET_EXTIMM"
-  "@
-   ltr\t%2,%0
-   lt\t%2,%0"
-  [(set_attr "op_type" "RR,RXY")])
-
-(define_insn "*tstsi_cconly_extimm"
-  [(set (reg CC_REGNUM)
-        (compare (match_operand:SI 0 "nonimmediate_operand" "d,m")
-                 (match_operand:SI 1 "const0_operand" "")))
-   (clobber (match_scratch:SI 2 "=X,d"))]
-  "s390_match_ccmode(insn, CCSmode) && TARGET_EXTIMM"
-  "@
-   ltr\t%0,%0
-   lt\t%2,%0"
-  [(set_attr "op_type" "RR,RXY")])
-
 (define_insn "*tstsi"
   [(set (reg CC_REGNUM)
         (compare (match_operand:SI 0 "nonimmediate_operand" "d,Q,S")
    icmy\t%2,15,%S0"
   [(set_attr "op_type" "RR,RS,RSY")])
 
-(define_insn "*tstsi_cconly2"
+(define_insn "*tstdi_cconly_31"
+  [(set (reg CC_REGNUM)
+        (compare (match_operand:DI 0 "register_operand" "d")
+                 (match_operand:DI 1 "const0_operand" "")))]
+  "s390_match_ccmode(insn, CCSmode) && !TARGET_64BIT"
+  "srda\t%0,0"
+  [(set_attr "op_type" "RS")
+   (set_attr "atype"   "reg")])
+
+(define_insn "*tst<mode>_cconly2"
   [(set (reg CC_REGNUM)
-        (compare (match_operand:SI 0 "register_operand" "d")
-                 (match_operand:SI 1 "const0_operand" "")))]
+        (compare (match_operand:GPR 0 "register_operand" "d")
+                 (match_operand:GPR 1 "const0_operand" "")))]
   "s390_match_ccmode(insn, CCSmode)"
-  "ltr\t%0,%0"
-  [(set_attr "op_type" "RR")])
+  "lt<g>r\t%0,%0"
+  [(set_attr "op_type" "RR<E>")])
+
+; tst(hi|qi) intruction pattern(s).
 
 (define_insn "*tst<mode>CCT"
   [(set (reg CC_REGNUM)