+Fri Jan 23 23:28:59 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * sh.md (movqi_i+1): New peephole.
+
Fri Jan 23 15:39:42 1998 Jim Wilson <wilson@cygnus.com>
* Makefile.in: Remove remaining bytecode stuff.
;; align them when relaxing.
;; Loads have a latency of two.
-;; However, call insn can have ;; a delay slot, so that we want one more
+;; However, call insns can have a delay slot, so that we want one more
;; insn to be scheduled between the load of the function address and the call.
;; This is equivalent to a latency of three.
;; We cannot use a conflict list for this, because we need to distinguish
lds %1,%0"
[(set_attr "type" "move,load,store,move,move,move")])
+;; For Big-endian, reload now sometimes generates something like
+;; (insn 2107 2104 2099 (set (reg:QI 3 r3)
+;; (subreg:QI (mem:SI (reg:SI 0 r0)) 0)) -1 (nil)
+;; (nil))
+;; To avoid clutter in the movqi pattern, we express this as a peephole.
+
+(define_peephole
+ [(set (match_operand:QI 0 "arith_reg_operand" "r")
+ (subreg:QI (match_operand:SI 1 "memory_operand" "m") 0))]
+ ""
+ "mov.l %1,%0")
+
(define_expand "movqi"
[(set (match_operand:QI 0 "general_operand" "")
(match_operand:QI 1 "general_operand" ""))]