]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
i386.md (asindf2, [...]): Conditionalize expansion on !optimize_size.
authorRichard Guenther <rguenther@suse.de>
Tue, 31 Oct 2006 09:08:11 +0000 (09:08 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 31 Oct 2006 09:08:11 +0000 (09:08 +0000)
2006-10-31  Richard Guenther  <rguenther@suse.de>

* config/i386/i386.md (asindf2, asinsf2, asinxf2, acosdf2,
acossf2, acosxf2, log1psf2, log1pdf2, log1pxf2, ilogbsi2,
expsf2, expdf2, expxf2, exp10sf2, exp10df2, exp10xf2,
exp2sf2, exp2df2, exp2xf2, expm1df2, expm1sf2, expm1xf2,
ldexpdf3, ldexpsf3, ldexpxf3, rintxf2, rintdf2, rintsf2,
lround<mode>di2, lround<mode>si2, floorxf2, floordf2, floorsf2,
lfloor<mode>di2, lfloor<mode>si2, ceilxf2, ceildf2, ceilsf2,
btruncxf2, btruncdf2, btruncsf2): Conditionalize expansion on
!optimize_size.

From-SVN: r118221

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

index d2d011d87a6d795b9c20adc0be09d70667a4c302..3c037f0733fc37cc4d6ae3bd898ddee3757f1ef4 100644 (file)
@@ -1,3 +1,15 @@
+2006-10-31  Richard Guenther  <rguenther@suse.de>
+
+       * config/i386/i386.md (asindf2, asinsf2, asinxf2, acosdf2,
+       acossf2, acosxf2, log1psf2, log1pdf2, log1pxf2, ilogbsi2,
+       expsf2, expdf2, expxf2, exp10sf2, exp10df2, exp10xf2,
+       exp2sf2, exp2df2, exp2xf2, expm1df2, expm1sf2, expm1xf2,
+       ldexpdf3, ldexpsf3, ldexpxf3, rintxf2, rintdf2, rintsf2,
+       lround<mode>di2, lround<mode>si2, floorxf2, floordf2, floorsf2,
+       lfloor<mode>di2, lfloor<mode>si2, ceilxf2, ceildf2, ceilsf2,
+       btruncxf2, btruncdf2, btruncsf2): Conditionalize expansion on
+       !optimize_size.
+
 2006-10-31  Steven Bosscher  <steven@gcc.gnu.org>
 
        * opts.c (decode_options): Disable CSE skip blocks.
index 2da10a1c751e4f7e8ecf9f05cdc904431aac3a55..1b9e23410cd7b777ada3c4e0743090536d4f892c 100644 (file)
        (float_truncate:DF (match_dup 7)))]
   "TARGET_USE_FANCY_MATH_387
    && (!(TARGET_SSE2 && TARGET_SSE_MATH) || TARGET_MIX_SSE_I387)
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   int i;
 
        (float_truncate:SF (match_dup 7)))]
   "TARGET_USE_FANCY_MATH_387
    && (!TARGET_SSE_MATH || TARGET_MIX_SSE_I387)
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   int i;
 
                              UNSPEC_FPATAN))
              (clobber (match_scratch:XF 6 ""))])]
   "TARGET_USE_FANCY_MATH_387
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   int i;
 
        (float_truncate:DF (match_dup 7)))]
   "TARGET_USE_FANCY_MATH_387
    && (!(TARGET_SSE2 && TARGET_SSE_MATH) || TARGET_MIX_SSE_I387)
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   int i;
 
        (float_truncate:SF (match_dup 7)))]
   "TARGET_USE_FANCY_MATH_387
    && (!TARGET_SSE_MATH || TARGET_MIX_SSE_I387)
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   int i;
 
                              UNSPEC_FPATAN))
              (clobber (match_scratch:XF 6 ""))])]
   "TARGET_USE_FANCY_MATH_387
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   int i;
 
    (use (match_operand:SF 1 "register_operand" ""))]
   "TARGET_USE_FANCY_MATH_387
    && (!TARGET_SSE_MATH || TARGET_MIX_SSE_I387)
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   rtx op0 = gen_reg_rtx (XFmode);
   rtx op1 = gen_reg_rtx (XFmode);
    (use (match_operand:DF 1 "register_operand" ""))]
   "TARGET_USE_FANCY_MATH_387
    && (!(TARGET_SSE2 && TARGET_SSE_MATH) || TARGET_MIX_SSE_I387)
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   rtx op0 = gen_reg_rtx (XFmode);
   rtx op1 = gen_reg_rtx (XFmode);
   [(use (match_operand:XF 0 "register_operand" ""))
    (use (match_operand:XF 1 "register_operand" ""))]
   "TARGET_USE_FANCY_MATH_387
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   ix86_emit_i387_log1p (operands[0], operands[1]);
   DONE;
              (clobber (reg:CC FLAGS_REG))])]
   "TARGET_USE_FANCY_MATH_387
    && (!TARGET_SSE_MATH || TARGET_MIX_SSE_I387)
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   operands[2] = gen_reg_rtx (XFmode);
   operands[3] = gen_reg_rtx (XFmode);
        (float_truncate:SF (match_dup 10)))]
   "TARGET_USE_FANCY_MATH_387
    && (!TARGET_SSE_MATH || TARGET_MIX_SSE_I387)
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   rtx temp;
   int i;
        (float_truncate:DF (match_dup 10)))]
   "TARGET_USE_FANCY_MATH_387
    && (!(TARGET_SSE2 && TARGET_SSE_MATH) || TARGET_MIX_SSE_I387)
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   rtx temp;
   int i;
                   (unspec:XF [(match_dup 8) (match_dup 4)]
                              UNSPEC_FSCALE_EXP))])]
   "TARGET_USE_FANCY_MATH_387
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   rtx temp;
   int i;
        (float_truncate:SF (match_dup 10)))]
   "TARGET_USE_FANCY_MATH_387
    && (!TARGET_SSE_MATH || TARGET_MIX_SSE_I387)
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   rtx temp;
   int i;
        (float_truncate:DF (match_dup 10)))]
   "TARGET_USE_FANCY_MATH_387
    && (!(TARGET_SSE2 && TARGET_SSE_MATH) || TARGET_MIX_SSE_I387)
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   rtx temp;
   int i;
                   (unspec:XF [(match_dup 8) (match_dup 4)]
                              UNSPEC_FSCALE_EXP))])]
   "TARGET_USE_FANCY_MATH_387
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   rtx temp;
   int i;
        (float_truncate:SF (match_dup 8)))]
   "TARGET_USE_FANCY_MATH_387
    && (!TARGET_SSE_MATH || TARGET_MIX_SSE_I387)
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   int i;
 
        (float_truncate:DF (match_dup 8)))]
   "TARGET_USE_FANCY_MATH_387
    && (!(TARGET_SSE2 && TARGET_SSE_MATH) || TARGET_MIX_SSE_I387)
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   int i;
 
                   (unspec:XF [(match_dup 7) (match_dup 3)]
                              UNSPEC_FSCALE_EXP))])]
   "TARGET_USE_FANCY_MATH_387
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   int i;
 
        (float_truncate:DF (match_dup 14)))]
   "TARGET_USE_FANCY_MATH_387
    && (!(TARGET_SSE2 && TARGET_SSE_MATH) || TARGET_MIX_SSE_I387)
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   rtx temp;
   int i;
        (float_truncate:SF (match_dup 14)))]
   "TARGET_USE_FANCY_MATH_387
    && (!TARGET_SSE_MATH || TARGET_MIX_SSE_I387)
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   rtx temp;
   int i;
    (set (match_operand:XF 0 "register_operand" "")
        (plus:XF (match_dup 12) (match_dup 7)))]
   "TARGET_USE_FANCY_MATH_387
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   rtx temp;
   int i;
        (float_truncate:DF (match_dup 5)))]
   "TARGET_USE_FANCY_MATH_387
    && (!(TARGET_SSE2 && TARGET_SSE_MATH) || TARGET_MIX_SSE_I387)
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   int i;
 
        (float_truncate:SF (match_dup 5)))]
   "TARGET_USE_FANCY_MATH_387
    && (!TARGET_SSE_MATH || TARGET_MIX_SSE_I387)
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   int i;
 
                   (unspec:XF [(match_dup 1) (match_dup 3)]
                              UNSPEC_FSCALE_EXP))])]
   "TARGET_USE_FANCY_MATH_387
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   int i;
 
     && (!(TARGET_SSE2 && TARGET_SSE_MATH) || TARGET_MIX_SSE_I387)
     && flag_unsafe_math_optimizations)
    || (SSE_FLOAT_MODE_P (DFmode) && TARGET_SSE_MATH
-       && !flag_trapping_math)"
+       && !flag_trapping_math
+       && !optimize_size)"
 {
   if (SSE_FLOAT_MODE_P (DFmode) && TARGET_SSE_MATH
-      && !flag_trapping_math)
+      && !flag_trapping_math
+      && !optimize_size)
     ix86_expand_rint (operand0, operand1);
   else
     {
-  rtx op0 = gen_reg_rtx (XFmode);
-  rtx op1 = gen_reg_rtx (XFmode);
+      rtx op0 = gen_reg_rtx (XFmode);
+      rtx op1 = gen_reg_rtx (XFmode);
 
-  emit_insn (gen_extenddfxf2 (op1, operands[1]));
-  emit_insn (gen_frndintxf2 (op0, op1));
+      emit_insn (gen_extenddfxf2 (op1, operands[1]));
+      emit_insn (gen_frndintxf2 (op0, op1));
 
-  emit_insn (gen_truncxfdf2_i387_noop (operands[0], op0));
+      emit_insn (gen_truncxfdf2_i387_noop (operands[0], op0));
     }
   DONE;
 })
     && (!TARGET_SSE_MATH || TARGET_MIX_SSE_I387)
     && flag_unsafe_math_optimizations)
    || (SSE_FLOAT_MODE_P (SFmode) && TARGET_SSE_MATH
-       && !flag_trapping_math)"
+       && !flag_trapping_math
+       && !optimize_size)"
 {
   if (SSE_FLOAT_MODE_P (SFmode) && TARGET_SSE_MATH
-      && !flag_trapping_math)
+      && !flag_trapping_math
+      && !optimize_size)
     ix86_expand_rint (operand0, operand1);
   else
     {
-  rtx op0 = gen_reg_rtx (XFmode);
-  rtx op1 = gen_reg_rtx (XFmode);
+      rtx op0 = gen_reg_rtx (XFmode);
+      rtx op1 = gen_reg_rtx (XFmode);
 
-  emit_insn (gen_extendsfxf2 (op1, operands[1]));
-  emit_insn (gen_frndintxf2 (op0, op1));
+      emit_insn (gen_extendsfxf2 (op1, operands[1]));
+      emit_insn (gen_frndintxf2 (op0, op1));
 
-  emit_insn (gen_truncxfsf2_i387_noop (operands[0], op0));
+      emit_insn (gen_truncxfsf2_i387_noop (operands[0], op0));
     }
   DONE;
 })
   [(use (match_operand:XF 0 "register_operand" ""))
    (use (match_operand:XF 1 "register_operand" ""))]
   "TARGET_USE_FANCY_MATH_387
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   emit_insn (gen_frndintxf2 (operands[0], operands[1]));
   DONE;
   [(match_operand:DI 0 "nonimmediate_operand" "")
    (match_operand:SSEMODEF 1 "register_operand" "")]
   "SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH && TARGET_64BIT
-   && !flag_trapping_math && !flag_rounding_math"
+   && !flag_trapping_math && !flag_rounding_math
+   && !optimize_size"
 {
   ix86_expand_lround (operand0, operand1);
   DONE;
   [(match_operand:SI 0 "nonimmediate_operand" "")
    (match_operand:SSEMODEF 1 "register_operand" "")]
   "SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH
-   && !flag_trapping_math && !flag_rounding_math"
+   && !flag_trapping_math && !flag_rounding_math
+   && !optimize_size"
 {
   ix86_expand_lround (operand0, operand1);
   DONE;
   [(use (match_operand:XF 0 "register_operand" ""))
    (use (match_operand:XF 1 "register_operand" ""))]
   "TARGET_USE_FANCY_MATH_387
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   emit_insn (gen_frndintxf2_floor (operands[0], operands[1]));
   DONE;
 (define_expand "floordf2"
   [(use (match_operand:DF 0 "register_operand" ""))
    (use (match_operand:DF 1 "register_operand" ""))]
-  "(TARGET_USE_FANCY_MATH_387
-    && (!(TARGET_SSE2 && TARGET_SSE_MATH) || TARGET_MIX_SSE_I387)
-    && flag_unsafe_math_optimizations)
-   || (SSE_FLOAT_MODE_P (DFmode) && TARGET_SSE_MATH
-       && !flag_trapping_math
-       && !optimize_size)"
+  "((TARGET_USE_FANCY_MATH_387
+     && (!(TARGET_SSE2 && TARGET_SSE_MATH) || TARGET_MIX_SSE_I387)
+     && flag_unsafe_math_optimizations)
+    || (SSE_FLOAT_MODE_P (DFmode) && TARGET_SSE_MATH
+        && !flag_trapping_math))
+   && !optimize_size"
 {
   if (SSE_FLOAT_MODE_P (DFmode) && TARGET_SSE_MATH
-      && !flag_trapping_math
-      && !optimize_size)
+      && !flag_trapping_math)
     {
       if (TARGET_64BIT)
        ix86_expand_floorceil (operand0, operand1, true);
 (define_expand "floorsf2"
   [(use (match_operand:SF 0 "register_operand" ""))
    (use (match_operand:SF 1 "register_operand" ""))]
-  "(TARGET_USE_FANCY_MATH_387
-    && (!TARGET_SSE_MATH || TARGET_MIX_SSE_I387)
-    && flag_unsafe_math_optimizations)
-   || (SSE_FLOAT_MODE_P (SFmode) && TARGET_SSE_MATH
-       && !flag_trapping_math
-       && !optimize_size)"
+  "((TARGET_USE_FANCY_MATH_387
+     && (!TARGET_SSE_MATH || TARGET_MIX_SSE_I387)
+     && flag_unsafe_math_optimizations)
+    || (SSE_FLOAT_MODE_P (SFmode) && TARGET_SSE_MATH
+        && !flag_trapping_math))
+   && !optimize_size"
 {
   if (SSE_FLOAT_MODE_P (SFmode) && TARGET_SSE_MATH
-      && !flag_trapping_math
-      && !optimize_size)
+      && !flag_trapping_math)
     ix86_expand_floorceil (operand0, operand1, true);
   else
     {
   [(match_operand:DI 0 "nonimmediate_operand" "")
    (match_operand:SSEMODEF 1 "register_operand" "")]
   "SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH && TARGET_64BIT
-   && !flag_trapping_math"
+   && !flag_trapping_math
+   && !optimize_size"
 {
   ix86_expand_lfloorceil (operand0, operand1, true);
   DONE;
   [(match_operand:SI 0 "nonimmediate_operand" "")
    (match_operand:SSEMODEF 1 "register_operand" "")]
   "SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH
-   && !flag_trapping_math"
+   && !flag_trapping_math
+   && (!optimize_size || !TARGET_64BIT)"
 {
   ix86_expand_lfloorceil (operand0, operand1, true);
   DONE;
   [(use (match_operand:XF 0 "register_operand" ""))
    (use (match_operand:XF 1 "register_operand" ""))]
   "TARGET_USE_FANCY_MATH_387
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   emit_insn (gen_frndintxf2_ceil (operands[0], operands[1]));
   DONE;
 (define_expand "ceildf2"
   [(use (match_operand:DF 0 "register_operand" ""))
    (use (match_operand:DF 1 "register_operand" ""))]
-  "(TARGET_USE_FANCY_MATH_387
-    && (!(TARGET_SSE2 && TARGET_SSE_MATH) || TARGET_MIX_SSE_I387)
-    && flag_unsafe_math_optimizations)
-   || (SSE_FLOAT_MODE_P (DFmode) && TARGET_SSE_MATH
-       && !flag_trapping_math
-       && !optimize_size)"
+  "((TARGET_USE_FANCY_MATH_387
+     && (!(TARGET_SSE2 && TARGET_SSE_MATH) || TARGET_MIX_SSE_I387)
+     && flag_unsafe_math_optimizations)
+    || (SSE_FLOAT_MODE_P (DFmode) && TARGET_SSE_MATH
+        && !flag_trapping_math))
+   && !optimize_size"
 {
   if (SSE_FLOAT_MODE_P (DFmode) && TARGET_SSE_MATH
-      && !flag_trapping_math
-      && !optimize_size)
+      && !flag_trapping_math)
     {
       if (TARGET_64BIT)
        ix86_expand_floorceil (operand0, operand1, false);
 (define_expand "ceilsf2"
   [(use (match_operand:SF 0 "register_operand" ""))
    (use (match_operand:SF 1 "register_operand" ""))]
-  "(TARGET_USE_FANCY_MATH_387
-    && (!TARGET_SSE_MATH || TARGET_MIX_SSE_I387)
-    && flag_unsafe_math_optimizations)
-   || (SSE_FLOAT_MODE_P (SFmode) && TARGET_SSE_MATH
-       && !flag_trapping_math
-       && !optimize_size)"
+  "((TARGET_USE_FANCY_MATH_387
+     && (!TARGET_SSE_MATH || TARGET_MIX_SSE_I387)
+     && flag_unsafe_math_optimizations)
+    || (SSE_FLOAT_MODE_P (SFmode) && TARGET_SSE_MATH
+        && !flag_trapping_math))
+   && !optimize_size"
 {
   if (SSE_FLOAT_MODE_P (SFmode) && TARGET_SSE_MATH
-      && !flag_trapping_math
-      && !optimize_size)
+      && !flag_trapping_math)
     ix86_expand_floorceil (operand0, operand1, false);
   else
     {
   [(use (match_operand:XF 0 "register_operand" ""))
    (use (match_operand:XF 1 "register_operand" ""))]
   "TARGET_USE_FANCY_MATH_387
-   && flag_unsafe_math_optimizations"
+   && flag_unsafe_math_optimizations && !optimize_size"
 {
   emit_insn (gen_frndintxf2_trunc (operands[0], operands[1]));
   DONE;
 (define_expand "btruncdf2"
   [(use (match_operand:DF 0 "register_operand" ""))
    (use (match_operand:DF 1 "register_operand" ""))]
-  "(TARGET_USE_FANCY_MATH_387
-    && (!(TARGET_SSE2 && TARGET_SSE_MATH) || TARGET_MIX_SSE_I387)
-    && flag_unsafe_math_optimizations)
-   || (SSE_FLOAT_MODE_P (DFmode) && TARGET_SSE_MATH
-       && !flag_trapping_math
-       && !optimize_size)"
+  "((TARGET_USE_FANCY_MATH_387
+     && (!(TARGET_SSE2 && TARGET_SSE_MATH) || TARGET_MIX_SSE_I387)
+     && flag_unsafe_math_optimizations)
+    || (SSE_FLOAT_MODE_P (DFmode) && TARGET_SSE_MATH
+        && !flag_trapping_math))
+   && !optimize_size"
 {
   if (SSE_FLOAT_MODE_P (DFmode) && TARGET_SSE_MATH
-      && !flag_trapping_math
-      && !optimize_size)
+      && !flag_trapping_math)
     {
       if (TARGET_64BIT)
        ix86_expand_trunc (operand0, operand1);
 (define_expand "btruncsf2"
   [(use (match_operand:SF 0 "register_operand" ""))
    (use (match_operand:SF 1 "register_operand" ""))]
-  "(TARGET_USE_FANCY_MATH_387
-    && (!TARGET_SSE_MATH || TARGET_MIX_SSE_I387)
-    && flag_unsafe_math_optimizations)
-   || (SSE_FLOAT_MODE_P (SFmode) && TARGET_SSE_MATH
-       && !flag_trapping_math
-       && !optimize_size)"
+  "((TARGET_USE_FANCY_MATH_387
+     && (!TARGET_SSE_MATH || TARGET_MIX_SSE_I387)
+     && flag_unsafe_math_optimizations)
+    || (SSE_FLOAT_MODE_P (SFmode) && TARGET_SSE_MATH
+        && !flag_trapping_math))
+   && !optimize_size"
 {
   if (SSE_FLOAT_MODE_P (SFmode) && TARGET_SSE_MATH
-      && !flag_trapping_math
-      && !optimize_size)
+      && !flag_trapping_math)
     ix86_expand_trunc (operand0, operand1);
   else
     {