alpha.md (abssf2, absdf2): Disable in IEEE mode.
authorRichard Henderson <rth@cygnus.com>
Thu, 22 Jan 1998 01:44:04 +0000 (17:44 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 22 Jan 1998 01:44:04 +0000 (17:44 -0800)
* alpha.md (abssf2, absdf2): Disable in IEEE mode.
(negsf2, negdf2): Use proper subtract in IEEE mode.

From-SVN: r17440

gcc/ChangeLog
gcc/config/alpha/alpha.md

index d791f3ab4e793404d4d6d7f3e1684859930dd248..9f3aa4dbd57ddf133b6eee4a07b01df4b2340d1e 100644 (file)
@@ -1,3 +1,8 @@
+Thu Jan 22 01:40:52 1998  Richard Henderson  <rth@cygnus.com>
+
+       * alpha.md (abssf2, absdf2): Disable in IEEE mode.
+       (negsf2, negdf2): Use proper subtract in IEEE mode.
+
 Tue Jan 20 09:29:09 1998  Jeffrey A Law  (law@cygnus.com)
 
        * Makefile.in: Remove more bytecode stuff.
index 2e36e058e4fee954aece8ec13a3cd13012539d25..71ae3fd2030970ded833611fb45311a16df48afd 100644 (file)
 (define_insn "abssf2"
   [(set (match_operand:SF 0 "register_operand" "=f")
        (abs:SF (match_operand:SF 1 "reg_or_fp0_operand" "fG")))]
-  "TARGET_FP"
+  "TARGET_FP && alpha_fptm == ALPHA_FPTM_N"
   "cpys $f31,%R1,%0"
   [(set_attr "type" "fcpys")])
 
 (define_insn "absdf2"
   [(set (match_operand:DF 0 "register_operand" "=f")
        (abs:DF (match_operand:DF 1 "reg_or_fp0_operand" "fG")))]
-  "TARGET_FP"
+  "TARGET_FP && alpha_fptm == ALPHA_FPTM_N"
   "cpys $f31,%R1,%0"
   [(set_attr "type" "fcpys")])
 
 (define_insn "negsf2"
   [(set (match_operand:SF 0 "register_operand" "=f")
        (neg:SF (match_operand:SF 1 "reg_or_fp0_operand" "fG")))]
-  "TARGET_FP"
+  "TARGET_FP && alpha_fptm == ALPHA_FPTM_N"
   "cpysn %R1,%R1,%0"
   [(set_attr "type" "fadd")])
 
+(define_insn ""
+  [(set (match_operand:SF 0 "register_operand" "=&f")
+       (neg:SF (match_operand:SF 1 "reg_or_fp0_operand" "fG")))]
+  "TARGET_FP && alpha_tp == ALPHA_TP_INSN"
+  "sub%,%)%& $f31,%R1,%0"
+  [(set_attr "type" "fadd")
+   (set_attr "trap" "yes")])
+
+(define_insn ""
+  [(set (match_operand:SF 0 "register_operand" "=f")
+       (neg:SF (match_operand:SF 1 "reg_or_fp0_operand" "fG")))]
+  "TARGET_FP"
+  "sub%,%)%& $f31,%R1,%0"
+  [(set_attr "type" "fadd")
+   (set_attr "trap" "yes")])
+
 (define_insn "negdf2"
   [(set (match_operand:DF 0 "register_operand" "=f")
        (neg:DF (match_operand:DF 1 "reg_or_fp0_operand" "fG")))]
   "cpysn %R1,%R1,%0"
   [(set_attr "type" "fadd")])
 
+(define_insn ""
+  [(set (match_operand:DF 0 "register_operand" "=&f")
+       (neg:DF (match_operand:DF 1 "reg_or_fp0_operand" "fG")))]
+  "TARGET_FP && alpha_tp == ALPHA_TP_INSN"
+  "sub%-%)%& $f31,%R1,%0"
+  [(set_attr "type" "fadd")
+   (set_attr "trap" "yes")])
+
+(define_insn ""
+  [(set (match_operand:DF 0 "register_operand" "=f")
+       (neg:DF (match_operand:DF 1 "reg_or_fp0_operand" "fG")))]
+  "TARGET_FP"
+  "sub%-%)%& $f31,%R1,%0"
+  [(set_attr "type" "fadd")
+   (set_attr "trap" "yes")])
+
 (define_insn ""
   [(set (match_operand:SF 0 "register_operand" "=&f")
        (plus:SF (match_operand:SF 1 "reg_or_fp0_operand" "%fG")