]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/17990 (sse used for negate without -mfpmath=sse)
authorRichard Henderson <rth@redhat.com>
Tue, 14 Dec 2004 01:57:50 +0000 (17:57 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Tue, 14 Dec 2004 01:57:50 +0000 (17:57 -0800)
        PR target/17990
        * config/i386/i386.md (negsf2): Fix condition for using sse.
        (negdf2, abssf2, absdf2): Likewise.
        (negsf2_if, abssf2_if): Don't disable if sse enabled.
        (movv4sf_internal splitter): Postpone til after reload.
        (movv2di_internal splitter): Likewise.

From-SVN: r92119

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

index 69f600a99ef5fb3b7e8a39ff4c10832b24b498c0..f0de0158b1bc10ed8dece5b2eaa30531cc90d394 100644 (file)
        conversions, and handle BIT_XOR_EXPR that's used to invert the
        sense of the single bit test.
 
+2004-12-13  Richard Henderson  <rth@redhat.com>
+
+       PR target/17990
+       * config/i386/i386.md (negsf2): Fix condition for using sse.
+       (negdf2, abssf2, absdf2): Likewise.
+       (negsf2_if, abssf2_if): Don't disable if sse enabled.
+       (movv4sf_internal splitter): Postpone til after reload.
+       (movv2di_internal splitter): Likewise.
+
 2004-12-13  Richard Henderson  <rth@redhat.com>
 
        PR middle-end/17930
index fa3ce38f7d495ce9bafd0789e103519b2ef81135..b3a575383416e058e36bafb23cb173d646d951be 100644 (file)
   [(parallel [(set (match_operand:SF 0 "nonimmediate_operand" "")
                   (neg:SF (match_operand:SF 1 "nonimmediate_operand" "")))
              (clobber (reg:CC 17))])]
-  "TARGET_80387"
-  "if (TARGET_SSE)
+  "TARGET_80387 || TARGET_SSE_MATH"
+  "if (TARGET_SSE_MATH)
      {
        /* In case operand is in memory,  we will not use SSE.  */
        if (memory_operand (operands[0], VOIDmode)
   [(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 && !TARGET_SSE
+  "TARGET_80387
    && ix86_unary_operator_ok (NEG, SFmode, operands)"
   "#")
 
   [(parallel [(set (match_operand:DF 0 "nonimmediate_operand" "")
                   (neg:DF (match_operand:DF 1 "nonimmediate_operand" "")))
              (clobber (reg:CC 17))])]
-  "TARGET_80387"
-  "if (TARGET_SSE2)
+  "TARGET_80387 || (TARGET_SSE2 && TARGET_SSE_MATH)"
+  "if (TARGET_SSE2 && TARGET_SSE_MATH)
      {
        /* In case operand is in memory,  we will not use SSE.  */
        if (memory_operand (operands[0], VOIDmode)
   [(parallel [(set (match_operand:SF 0 "nonimmediate_operand" "")
                   (neg:SF (match_operand:SF 1 "nonimmediate_operand" "")))
              (clobber (reg:CC 17))])]
-  "TARGET_80387"
-  "if (TARGET_SSE)
+  "TARGET_80387 || TARGET_SSE_MATH"
+  "if (TARGET_SSE_MATH)
      {
        /* In case operand is in memory,  we will not use SSE.  */
        if (memory_operand (operands[0], VOIDmode)
   [(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_SSE"
+  "TARGET_80387 && ix86_unary_operator_ok (ABS, SFmode, operands)"
   "#")
 
 (define_split
   [(parallel [(set (match_operand:DF 0 "nonimmediate_operand" "")
                   (neg:DF (match_operand:DF 1 "nonimmediate_operand" "")))
              (clobber (reg:CC 17))])]
-  "TARGET_80387"
-  "if (TARGET_SSE2)
+  "TARGET_80387 || (TARGET_SSE2 && TARGET_SSE_MATH)"
+  "if (TARGET_SSE2 && TARGET_SSE_MATH)
      {
        /* In case operand is in memory,  we will not use SSE.  */
        if (memory_operand (operands[0], VOIDmode)
 (define_split
   [(set (match_operand:V4SF 0 "register_operand" "")
        (match_operand:V4SF 1 "zero_extended_scalar_load_operand" ""))]
-  "TARGET_SSE"
+  "TARGET_SSE && reload_completed"
   [(set (match_dup 0)
        (vec_merge:V4SF
         (vec_duplicate:V4SF (match_dup 1))
 (define_split
   [(set (match_operand:V2DF 0 "register_operand" "")
        (match_operand:V2DF 1 "zero_extended_scalar_load_operand" ""))]
-  "TARGET_SSE2"
+  "TARGET_SSE2 && reload_completed"
   [(set (match_dup 0)
        (vec_merge:V2DF
         (vec_duplicate:V2DF (match_dup 1))