}
")
-(define_insn "movhi"
+;; The movhi pattern.
+
+(define_insn ""
[(set (match_operand:HI 0 "general_operand" "=r,r,m")
(match_operand:HI 1 "general_operand" "r,m,r"))]
- ""
+ "register_operand (operands[0], HImode) ||
+ register_operand (operands[1], HImode)"
"@
dlr r%0,r%1
dl r%0,%1
dst r%1,%0 ")
+(define_expand "movhi"
+ [(set (match_operand:HI 0 "general_operand" "=g")
+ (match_operand:HI 1 "general_operand" "g"))]
+ ""
+ "
+ {
+ if (GET_CODE(operands[0]) == MEM &&
+ GET_CODE(operands[1]) == MEM)
+ operands[1] = force_reg (HImode, operands[1]);
+ }")
+
;; Single-Float moves are similar to HImode moves