"TARGET_80387"
"ix86_expand_unary_operator (NEG, SFmode, operands); DONE;")
+;; Keep 'f' and 'r' in separate alternatives to avoid reload problems
+;; because of secondary memory needed to reload from class FLOAT_INT_REGS
+;; to itself.
(define_insn "*negsf2_if"
- [(set (match_operand:SF 0 "nonimmediate_operand" "=frm")
- (neg:SF (match_operand:SF 1 "nonimmediate_operand" "0")))
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=f#r,rm#f")
+ (neg:SF (match_operand:SF 1 "nonimmediate_operand" "0,0")))
(clobber (reg:CC 17))]
"TARGET_80387 && ix86_unary_operator_ok (NEG, SFmode, operands)"
"#")
"TARGET_80387"
"ix86_expand_unary_operator (NEG, DFmode, operands); DONE;")
+;; Keep 'f' and 'r' in separate alternatives to avoid reload problems
+;; because of secondary memory needed to reload from class FLOAT_INT_REGS
+;; to itself.
(define_insn "*negdf2_if"
- [(set (match_operand:DF 0 "nonimmediate_operand" "=frm")
- (neg:DF (match_operand:DF 1 "nonimmediate_operand" "0")))
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=f#r,rm#f")
+ (neg:DF (match_operand:DF 1 "nonimmediate_operand" "0,0")))
(clobber (reg:CC 17))]
"TARGET_80387 && ix86_unary_operator_ok (NEG, DFmode, operands)"
"#")
"TARGET_80387"
"ix86_expand_unary_operator (NEG, XFmode, operands); DONE;")
+;; Keep 'f' and 'r' in separate alternatives to avoid reload problems
+;; because of secondary memory needed to reload from class FLOAT_INT_REGS
+;; to itself.
(define_insn "*negxf2_if"
- [(set (match_operand:XF 0 "nonimmediate_operand" "=frm")
- (neg:XF (match_operand:XF 1 "nonimmediate_operand" "0")))
+ [(set (match_operand:XF 0 "nonimmediate_operand" "=f#r,rm#f")
+ (neg:XF (match_operand:XF 1 "nonimmediate_operand" "0,0")))
(clobber (reg:CC 17))]
"TARGET_80387 && ix86_unary_operator_ok (NEG, XFmode, operands)"
"#")
"TARGET_80387"
"ix86_expand_unary_operator (ABS, SFmode, operands); DONE;")
+;; Keep 'f' and 'r' in separate alternatives to avoid reload problems
+;; because of secondary memory needed to reload from class FLOAT_INT_REGS
+;; to itself.
(define_insn "*abssf2_if"
- [(set (match_operand:SF 0 "nonimmediate_operand" "=frm")
- (abs:SF (match_operand:SF 1 "nonimmediate_operand" "0")))
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=f#r,rm#f")
+ (abs:SF (match_operand:SF 1 "nonimmediate_operand" "0,0")))
(clobber (reg:CC 17))]
"TARGET_80387 && ix86_unary_operator_ok (ABS, SFmode, operands)"
"#")
"TARGET_80387"
"ix86_expand_unary_operator (ABS, DFmode, operands); DONE;")
+;; Keep 'f' and 'r' in separate alternatives to avoid reload problems
+;; because of secondary memory needed to reload from class FLOAT_INT_REGS
+;; to itself.
(define_insn "*absdf2_if"
- [(set (match_operand:DF 0 "nonimmediate_operand" "=frm")
- (abs:DF (match_operand:DF 1 "nonimmediate_operand" "0")))
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=f#r,rm#f")
+ (abs:DF (match_operand:DF 1 "nonimmediate_operand" "0,0")))
(clobber (reg:CC 17))]
"TARGET_80387 && ix86_unary_operator_ok (ABS, DFmode, operands)"
"#")
"TARGET_80387"
"ix86_expand_unary_operator (ABS, XFmode, operands); DONE;")
+;; Keep 'f' and 'r' in separate alternatives to avoid reload problems
+;; because of secondary memory needed to reload from class FLOAT_INT_REGS
+;; to itself.
(define_insn "*absxf2_if"
- [(set (match_operand:XF 0 "nonimmediate_operand" "=frm")
- (abs:XF (match_operand:XF 1 "nonimmediate_operand" "0")))
+ [(set (match_operand:XF 0 "nonimmediate_operand" "=f#r,rm#f")
+ (abs:XF (match_operand:XF 1 "nonimmediate_operand" "0,0")))
(clobber (reg:CC 17))]
"TARGET_80387 && ix86_unary_operator_ok (ABS, XFmode, operands)"
"#")