h8300.md (zero_extendhisi2 H8/300 variant): Correctly handle extending a CONST_INT.
authorJeffrey A Law <law@cygnus.com>
Fri, 12 Feb 1999 12:25:44 +0000 (12:25 +0000)
committerJeff Law <law@gcc.gnu.org>
Fri, 12 Feb 1999 12:25:44 +0000 (05:25 -0700)
Fri Feb 12 13:20:52 1999  Jeffrey A Law  (law@cygnus.com)
        * h8300.md (zero_extendhisi2 H8/300 variant): Correctly handle
        extending a CONST_INT.
        * h8300.md (peephole for combining memrefs): Delete incorrect peephole.

From-SVN: r25168

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

index 1510fd1677551664bffe4db0818aa124a59d249a..2a8e93845b80e9bfd04662095a5978af6f9750a9 100644 (file)
@@ -1,3 +1,10 @@
+Fri Feb 12 13:20:52 1999  Jeffrey A Law  (law@cygnus.com)
+
+       * h8300.md (zero_extendhisi2 H8/300 variant): Correctly handle
+       extending a CONST_INT.
+
+       * h8300.md (peephole for combining memrefs): Delete incorrect peephole.
+
 Fri Feb 12 18:29:11 1999  J"orn Rennecke <amylaar@cygnus.co.uk>
 
        * loop.c (loop_insn_first_p, biv_elimination_giv_has_0_offset):
index a94a5ad55b296df6ee8f22dd9bc1bd09b7ab0b43..d892cad9cb71d772d8d0f2c95b4c90a8e3f404ea 100644 (file)
   "TARGET_H8300"
   "")
 
+;; %e prints the high part of a CONST_INT, not the low part.  Arggh.
 (define_insn ""
-  [(set (match_operand:SI 0 "register_operand" "=r,r")
-       (zero_extend:SI (match_operand:HI 1 "general_operand_src" "0,g>")))]
+  [(set (match_operand:SI 0 "register_operand" "=r,r,r")
+       (zero_extend:SI (match_operand:HI 1 "general_operand_src" "0,i,g>")))]
   "TARGET_H8300"
   "@
   sub.w        %e0,%e0
+  mov.w %f1,%f0\;sub.w %e0,%e0
   mov.w %e1,%f0\;sub.w %e0,%e0"
-  [(set_attr "length" "2,4")
-   (set_attr "cc" "clobber,clobber")])
+  [(set_attr "length" "2,4,4")
+   (set_attr "cc" "clobber,clobber,clobber")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "register_operand" "=r,r")
 ;; Peepholes go at the end.
 ;; ----------------------------------------------
 
-;; Notice when two byte moves in a row could be a word move.
-
-(define_peephole
-  [(set (match_operand:QI 0 "register_operand" "=r")
-       (mem:QI (plus:HI (match_operand:HI 1 "register_operand" "r")
-                        (match_operand:HI 2 "immediate_operand" "n"))))
-   (set (match_operand:QI 3 "register_operand" "=r")
-       (mem:QI (plus:HI (match_dup 1)
-                        (match_operand:HI 4 "immediate_operand" "n"))))]
-  "(INTVAL(operands[2]) == INTVAL(operands[4])+1) && REGNO(operands[0]) +1 == REGNO(operands[3])"
-  "mov.w       @(%u4,%T1),%T0"
-  [(set_attr "length" "6")
-   (set_attr "cc" "set_znv")])
-
-(define_peephole
-  [(set (mem:QI (plus:HI (match_operand:HI 1 "register_operand" "r")
-                        (match_operand:HI 2 "immediate_operand" "n")))
-       (match_operand:QI 0 "register_operand" "r"))
-   (set (mem:QI (plus:HI (match_dup 1)
-                        (match_operand:HI 4 "immediate_operand" "n")))
-       (match_operand:QI 3 "register_operand" "r"))]
-  "(INTVAL(operands[2]) == INTVAL(operands[4])+1) && REGNO(operands[0]) +1 == REGNO(operands[3])"
-  "mov.w       %T0,@(%u4,%T1)"
-  [(set_attr "length" "6")
-   (set_attr "cc" "set_znv")])
-
 ;; Notice a move which could be post incremented.
 
 (define_peephole