aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/i386/i386.md
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/i386/i386.md')
-rw-r--r--gcc/config/i386/i386.md22
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")))