diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6f153d10e0f..2b1cd260898 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Tue Nov 30 15:20:52 MET 1999 Jan Hubicka + + * i386.md (neg?f2_if): Split "r" and "f" to separate alternatives. + (abs?f2_if): Likewise. + 1999-11-30 Alex Samuel * ggc.h (ggc_test_and_set_mark): New macro. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index e7f9a140b72..99ba4ada803 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -4968,9 +4968,12 @@ "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)" "#") @@ -5020,9 +5023,12 @@ "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)" "#") @@ -5053,9 +5059,12 @@ "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)" "#") @@ -5142,9 +5151,12 @@ "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)" "#") @@ -5194,9 +5206,12 @@ "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)" "#") @@ -5227,9 +5242,12 @@ "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)" "#")