\f
;; Patterns to recognize zero-extend insns produced by the combiner.
;; We don't allow both operands in memory, because of aliasing problems.
+;; Explicitly disallow two memory operands via the condition since reloading
+;; of this case will result in worse code than the uncombined patterns.
(define_insn ""
[(set (match_operand:SI 0 "general_operand" "=do<>,d<")
(zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "r,m")))]
- ""
+ "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM"
"*
{
if (DATA_REG_P (operands[0]))
(define_insn ""
[(set (match_operand:HI 0 "general_operand" "=do<>,d")
(zero_extend:HI (match_operand:QI 1 "nonimmediate_operand" "d,m")))]
- ""
+ "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM"
"*
{
if (DATA_REG_P (operands[0]))
(define_insn ""
[(set (match_operand:SI 0 "general_operand" "=do<>,d")
(zero_extend:SI (match_operand:QI 1 "nonimmediate_operand" "d,m")))]
- ""
+ "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM"
"*
{
if (DATA_REG_P (operands[0]))