diff options
Diffstat (limited to 'gcc/config/i386/i386.md')
-rw-r--r-- | gcc/config/i386/i386.md | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index be2b035..9254739 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -1379,8 +1379,8 @@ [(set_attr "type" "pop")]) (define_insn "*movhi_1" - [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,m") - (match_operand:HI 1 "general_operand" "rn,rm,rn"))] + [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,r,m") + (match_operand:HI 1 "general_operand" "r,rn,rm,rn"))] "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" "* { @@ -1398,22 +1398,28 @@ } }" [(set (attr "type") - (cond [(and (eq_attr "alternative" "0,1") + (cond [(and (eq_attr "alternative" "0") + (eq (symbol_ref "TARGET_PARTIAL_REG_STALL") + (const_int 0))) + (const_string "imov") + (and (eq_attr "alternative" "1,2") (match_operand:HI 1 "aligned_operand" "")) (const_string "imov") (and (ne (symbol_ref "TARGET_MOVX") (const_int 0)) - (eq_attr "alternative" "1")) + (eq_attr "alternative" "0,2")) (const_string "imovx") ] (const_string "imov"))) (set (attr "length_prefix") (cond [(eq_attr "type" "imovx") (const_string "0") - (and (eq_attr "alternative" "0,1") - (and (match_operand:HI 1 "aligned_operand" "") - (eq (symbol_ref "TARGET_PARTIAL_REG_STALL") - (const_int 0)))) + (and (eq_attr "alternative" "1,2") + (match_operand:HI 1 "aligned_operand" "")) + (const_string "0") + (and (eq_attr "alternative" "0") + (eq (symbol_ref "TARGET_PARTIAL_REG_STALL") + (const_int 0))) (const_string "0") ] (const_string "1"))) |