OSDN Git Service

* config/h8300/h8300.md (6 new peephole2 patterns): New.
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 28 Nov 2002 18:02:46 +0000 (18:02 +0000)
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 28 Nov 2002 18:02:46 +0000 (18:02 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@59611 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/h8300/h8300.md

index a44b7f3..7b0603f 100644 (file)
@@ -1,3 +1,7 @@
+2002-11-28  Kazu Hirata  <kazu@cs.umass.edu>
+
+       * config/h8300/h8300.md (6 new peephole2 patterns): New.
+
 2002-11-28  Jakub Jelinek  <jakub@redhat.com>
 
        * config.gcc (x86_64-*-linux*) [tmake_file]: Remove i386/t-crtstuff.
index a260083..182e9f1 100644 (file)
                      (label_ref (match_dup 1))
                      (pc)))]
   "")
+\f
+;; -----------------------------------------------------------------
+;; PEEPHOLE PATTERNS
+;; -----------------------------------------------------------------
+
+(define_peephole2
+  [(parallel
+     [(set (match_operand:HI 0 "register_operand" "")
+          (lshiftrt:HI (match_dup 0)
+                       (match_operand:HI 1 "const_int_operand" "")))
+      (clobber (match_operand:HI 2 "" ""))])
+   (set (match_dup 0)
+       (and:HI (match_dup 0)
+               (match_operand:HI 3 "const_int_operand" "")))]
+  "INTVAL (operands[3]) == (255 >> INTVAL (operands[1]))"
+  [(set (match_dup 0)
+       (and:HI (match_dup 0)
+               (const_int 255)))
+   (parallel
+     [(set (match_dup 0)
+          (lshiftrt:HI (match_dup 0)
+                       (match_dup 1)))
+      (clobber (match_dup 2))])]
+  "")
+
+(define_peephole2
+  [(parallel
+     [(set (match_operand:HI 0 "register_operand" "")
+          (ashift:HI (match_dup 0)
+                     (match_operand:HI 1 "const_int_operand" "")))
+      (clobber (match_operand:HI 2 "" ""))])
+   (set (match_dup 0)
+       (and:HI (match_dup 0)
+               (match_operand:HI 3 "const_int_operand" "")))]
+  "INTVAL (operands[3]) == (255 << INTVAL (operands[1]))"
+  [(set (match_dup 0)
+       (and:HI (match_dup 0)
+               (const_int 255)))
+   (parallel
+     [(set (match_dup 0)
+          (ashift:HI (match_dup 0)
+                     (match_dup 1)))
+      (clobber (match_dup 2))])]
+  "")
+
+(define_peephole2
+  [(parallel
+     [(set (match_operand:SI 0 "register_operand" "")
+          (lshiftrt:SI (match_dup 0)
+                       (match_operand:SI 1 "const_int_operand" "")))
+      (clobber (match_operand:SI 2 "" ""))])
+   (set (match_dup 0)
+       (and:SI (match_dup 0)
+               (match_operand:SI 3 "const_int_operand" "")))]
+  "INTVAL (operands[3]) == (255 >> INTVAL (operands[1]))"
+  [(set (match_dup 0)
+       (and:SI (match_dup 0)
+               (const_int 255)))
+   (parallel
+     [(set (match_dup 0)
+          (lshiftrt:SI (match_dup 0)
+                       (match_dup 1)))
+      (clobber (match_dup 2))])]
+  "")
+
+(define_peephole2
+  [(parallel
+     [(set (match_operand:SI 0 "register_operand" "")
+          (ashift:SI (match_dup 0)
+                     (match_operand:SI 1 "const_int_operand" "")))
+      (clobber (match_operand:SI 2 "" ""))])
+   (set (match_dup 0)
+       (and:SI (match_dup 0)
+               (match_operand:SI 3 "const_int_operand" "")))]
+  "INTVAL (operands[3]) == (255 << INTVAL (operands[1]))"
+  [(set (match_dup 0)
+       (and:SI (match_dup 0)
+               (const_int 255)))
+   (parallel
+     [(set (match_dup 0)
+          (ashift:SI (match_dup 0)
+                     (match_dup 1)))
+      (clobber (match_dup 2))])]
+  "")
+
+(define_peephole2
+  [(parallel
+     [(set (match_operand:SI 0 "register_operand" "")
+          (lshiftrt:SI (match_dup 0)
+                       (match_operand:SI 1 "const_int_operand" "")))
+      (clobber (match_operand:SI 2 "" ""))])
+   (set (match_dup 0)
+       (and:SI (match_dup 0)
+               (match_operand:SI 3 "const_int_operand" "")))]
+  "INTVAL (operands[3]) == (65535 >> INTVAL (operands[1]))"
+  [(set (match_dup 0)
+       (and:SI (match_dup 0)
+               (const_int 65535)))
+   (parallel
+     [(set (match_dup 0)
+          (lshiftrt:SI (match_dup 0)
+                       (match_dup 1)))
+      (clobber (match_dup 2))])]
+  "")
+
+(define_peephole2
+  [(parallel
+     [(set (match_operand:SI 0 "register_operand" "")
+          (ashift:SI (match_dup 0)
+                     (match_operand:SI 1 "const_int_operand" "")))
+      (clobber (match_operand:SI 2 "" ""))])
+   (set (match_dup 0)
+       (and:SI (match_dup 0)
+               (match_operand:SI 3 "const_int_operand" "")))]
+  "INTVAL (operands[3]) == (65535 << INTVAL (operands[1]))"
+  [(set (match_dup 0)
+       (and:SI (match_dup 0)
+               (const_int 65535)))
+   (parallel
+     [(set (match_dup 0)
+          (ashift:SI (match_dup 0)
+                     (match_dup 1)))
+      (clobber (match_dup 2))])]
+  "")