i386.md (neg?f2_if): Split "r" and "f" to separate alternatives.
authorJan Hubicka <hubicka@freesoft.cz>
Wed, 1 Dec 1999 12:04:11 +0000 (13:04 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Wed, 1 Dec 1999 12:04:11 +0000 (12:04 +0000)
* i386.md (neg?f2_if): Split "r" and "f" to separate alternatives.
(abs?f2_if): Likewise.

From-SVN: r30738

gcc/ChangeLog
gcc/config/i386/i386.md

index 6f153d10e0fc934920a28c09d6a7362d77d1a7c2..2b1cd260898de7163f8152c099574f99433ef87c 100644 (file)
@@ -1,3 +1,8 @@
+Tue Nov 30 15:20:52 MET 1999  Jan Hubicka  <hubicka@freesoft.cz>
+
+       * i386.md (neg?f2_if): Split "r" and "f" to separate alternatives.
+       (abs?f2_if): Likewise.
+
 1999-11-30  Alex Samuel  <samuel@codesourcery.com>
 
        * ggc.h (ggc_test_and_set_mark): New macro.
index e7f9a140b72ea5e79062fefeec17500108200674..99ba4ada8034bb2c429159a26115d8d133040820 100644 (file)
   "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)"
   "#")