From: Roger Sayle Date: Tue, 23 Nov 2004 01:22:58 +0000 (+0000) Subject: i386.h (TARGET_USE_FANCY_MATH_387): New macro. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ba2baa55a34a75ddde02a3ac05daf805fc413e1c;p=gcc.git i386.h (TARGET_USE_FANCY_MATH_387): New macro. * config/i386/i386.h (TARGET_USE_FANCY_MATH_387): New macro. * config/i386/i386.c (override_options): Set MASK_NO_FANCY_MATH_387 automatically for targets without TARGET_80387. * config/i386/i386.md (sqrtsf2, sqrtsf2_1, sqrtsf2_i387, sqrtdf2, sqrtdf2_1, sqrtdf2_i387, *sqrtextendsfdf2, sqrtxf2, *sqrtextenddfxf2, *sqrtextendsfxf2, fpremxf4, fmodsf3, fmoddf3, fmodxf3, fprem1xf4, dremsf3, dremdf3, dremxf3, *sindf2, *sinsf2, *sinextendsfdf2, *sinxf2, *cosdf2, *cossf2, *cosextendsfdf2, *cosxf2, sincosdf3, sincossf3, *sincosextendsfdf3, sincosxf3, *tandf3_1, tandf2, *tansf3_1, tansf2, *tanxf3_1, tanxf2, atan2df3_1, atan2df3, atandf2, atan2sf3_1, atan2sf3, atansf2, atan2xf3_1, atan2xf3, atanxf2, asindf2, asinsf2, asinxf2, acosdf2, acossf2, acosxf2, fyl2x_xf3, logsf2, logdf2, logxf2, log10sf2, log10df2, log10xf2, log2sf2, log2df2, log2xf2, fyl2xp1_xf3, log1psf2, log1pdf2, log1pxf2, *fxtractxf3, logbsf2, logbdf2, logbxf2, ilogbsi2, *f2xm1xf2, *fscalexf4, expsf2, expdf2, expxf2, exp10sf2, exp10df2, exp10xf2, exp2sf2, exp2df2, exp2xf2, expm1df2, expm1sf2, expm1xf2, frndintxf2, rintdf2, rintsf2, rintxf2, frndintxf2_floor, floordf2, floorsf2, floorxf2, frndintxf2_ceil, ceildf2, ceilsf2, ceilxf2, frndintxf2_trunc, btruncdf2, btruncsf2, btruncxf2, frndintxf2_mask_pm, nearbyintdf2, nearbyintsf2, nearbyintxf2): Simplify conditionals using TARGET_USE_FANCY_MATH_387. From-SVN: r91061 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 742feea1e6c..8a0ec6276cb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,29 @@ +2004-11-22 Roger Sayle + + * config/i386/i386.h (TARGET_USE_FANCY_MATH_387): New macro. + * config/i386/i386.c (override_options): Set MASK_NO_FANCY_MATH_387 + automatically for targets without TARGET_80387. + * config/i386/i386.md (sqrtsf2, sqrtsf2_1, sqrtsf2_i387, sqrtdf2, + sqrtdf2_1, sqrtdf2_i387, *sqrtextendsfdf2, sqrtxf2, + *sqrtextenddfxf2, *sqrtextendsfxf2, fpremxf4, fmodsf3, fmoddf3, + fmodxf3, fprem1xf4, dremsf3, dremdf3, dremxf3, *sindf2, *sinsf2, + *sinextendsfdf2, *sinxf2, *cosdf2, *cossf2, *cosextendsfdf2, + *cosxf2, sincosdf3, sincossf3, *sincosextendsfdf3, sincosxf3, + *tandf3_1, tandf2, *tansf3_1, tansf2, *tanxf3_1, tanxf2, + atan2df3_1, atan2df3, atandf2, atan2sf3_1, atan2sf3, atansf2, + atan2xf3_1, atan2xf3, atanxf2, asindf2, asinsf2, asinxf2, + acosdf2, acossf2, acosxf2, fyl2x_xf3, logsf2, logdf2, logxf2, + log10sf2, log10df2, log10xf2, log2sf2, log2df2, log2xf2, + fyl2xp1_xf3, log1psf2, log1pdf2, log1pxf2, *fxtractxf3, logbsf2, + logbdf2, logbxf2, ilogbsi2, *f2xm1xf2, *fscalexf4, expsf2, + expdf2, expxf2, exp10sf2, exp10df2, exp10xf2, exp2sf2, exp2df2, + exp2xf2, expm1df2, expm1sf2, expm1xf2, frndintxf2, rintdf2, + rintsf2, rintxf2, frndintxf2_floor, floordf2, floorsf2, + floorxf2, frndintxf2_ceil, ceildf2, ceilsf2, ceilxf2, + frndintxf2_trunc, btruncdf2, btruncsf2, btruncxf2, + frndintxf2_mask_pm, nearbyintdf2, nearbyintsf2, nearbyintxf2): + Simplify conditionals using TARGET_USE_FANCY_MATH_387. + 2004-11-22 Dale Johannesen * config/darwin.h (JUMP_TABLES_IN_TEXT_SECTION): Conditionalize diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index a60558448ca..adb4e5ba32e 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -1482,6 +1482,11 @@ override_options (void) if (x86_arch_always_fancy_math_387 & (1 << ix86_arch)) target_flags &= ~MASK_NO_FANCY_MATH_387; + /* Likewise, if the target doesn't have a 387, or we've specified + software floating point, don't use 387 inline instrinsics. */ + if (!TARGET_80387) + target_flags |= MASK_NO_FANCY_MATH_387; + /* Turn on SSE2 builtins for -msse3. */ if (TARGET_SSE3) target_flags |= MASK_SSE2; diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index 7da8f511884..e4761f97195 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -177,6 +177,9 @@ extern int target_flags; This is because FreeBSD lacks these in the math-emulator-code */ #define TARGET_NO_FANCY_MATH_387 (target_flags & MASK_NO_FANCY_MATH_387) +/* Generate 387 floating point intrinsics for the current target. */ +#define TARGET_USE_FANCY_MATH_387 (! TARGET_NO_FANCY_MATH_387) + /* Don't create frame pointers for leaf functions */ #define TARGET_OMIT_LEAF_FRAME_POINTER \ (target_flags & MASK_OMIT_LEAF_FRAME_POINTER) diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index abc1cb8917f..dd5cf13ae7f 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -14844,7 +14844,7 @@ (define_expand "sqrtsf2" [(set (match_operand:SF 0 "register_operand" "") (sqrt:SF (match_operand:SF 1 "nonimmediate_operand" "")))] - "(! TARGET_NO_FANCY_MATH_387 && TARGET_80387) || TARGET_SSE_MATH" + "TARGET_USE_FANCY_MATH_387 || TARGET_SSE_MATH" { if (!TARGET_SSE_MATH) operands[1] = force_reg (SFmode, operands[1]); @@ -14853,7 +14853,7 @@ (define_insn "sqrtsf2_1" [(set (match_operand:SF 0 "register_operand" "=f#x,x#f") (sqrt:SF (match_operand:SF 1 "nonimmediate_operand" "0#x,xm#f")))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && (TARGET_SSE_MATH && TARGET_MIX_SSE_I387)" "@ fsqrt @@ -14874,7 +14874,7 @@ (define_insn "sqrtsf2_i387" [(set (match_operand:SF 0 "register_operand" "=f") (sqrt:SF (match_operand:SF 1 "register_operand" "0")))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && !TARGET_SSE_MATH" "fsqrt" [(set_attr "type" "fpspc") @@ -14884,7 +14884,7 @@ (define_expand "sqrtdf2" [(set (match_operand:DF 0 "register_operand" "") (sqrt:DF (match_operand:DF 1 "nonimmediate_operand" "")))] - "(! TARGET_NO_FANCY_MATH_387 && TARGET_80387) + "TARGET_USE_FANCY_MATH_387 || (TARGET_SSE2 && TARGET_SSE_MATH)" { if (!TARGET_SSE2 || !TARGET_SSE_MATH) @@ -14894,7 +14894,7 @@ (define_insn "sqrtdf2_1" [(set (match_operand:DF 0 "register_operand" "=f#Y,Y#f") (sqrt:DF (match_operand:DF 1 "nonimmediate_operand" "0#Y,Ym#f")))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && (TARGET_SSE2 && TARGET_SSE_MATH && TARGET_MIX_SSE_I387)" "@ fsqrt @@ -14915,7 +14915,7 @@ (define_insn "sqrtdf2_i387" [(set (match_operand:DF 0 "register_operand" "=f") (sqrt:DF (match_operand:DF 1 "register_operand" "0")))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && (!TARGET_SSE2 || !TARGET_SSE_MATH)" "fsqrt" [(set_attr "type" "fpspc") @@ -14926,7 +14926,7 @@ [(set (match_operand:DF 0 "register_operand" "=f") (sqrt:DF (float_extend:DF (match_operand:SF 1 "register_operand" "0"))))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && !(TARGET_SSE2 && TARGET_SSE_MATH)" "fsqrt" [(set_attr "type" "fpspc") @@ -14936,7 +14936,7 @@ (define_insn "sqrtxf2" [(set (match_operand:XF 0 "register_operand" "=f") (sqrt:XF (match_operand:XF 1 "register_operand" "0")))] - "TARGET_80387 && !TARGET_NO_FANCY_MATH_387 + "TARGET_USE_FANCY_MATH_387 && (TARGET_IEEE_FP || flag_unsafe_math_optimizations) " "fsqrt" [(set_attr "type" "fpspc") @@ -14947,7 +14947,7 @@ [(set (match_operand:XF 0 "register_operand" "=f") (sqrt:XF (float_extend:XF (match_operand:DF 1 "register_operand" "0"))))] - "TARGET_80387 && !TARGET_NO_FANCY_MATH_387" + "TARGET_USE_FANCY_MATH_387" "fsqrt" [(set_attr "type" "fpspc") (set_attr "mode" "XF") @@ -14957,7 +14957,7 @@ [(set (match_operand:XF 0 "register_operand" "=f") (sqrt:XF (float_extend:XF (match_operand:SF 1 "register_operand" "0"))))] - "TARGET_80387 && !TARGET_NO_FANCY_MATH_387" + "TARGET_USE_FANCY_MATH_387" "fsqrt" [(set_attr "type" "fpspc") (set_attr "mode" "XF") @@ -14973,7 +14973,7 @@ UNSPEC_FPREM_U)) (set (reg:CCFP FPSR_REG) (unspec:CCFP [(const_int 0)] UNSPEC_NOP))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fprem" [(set_attr "type" "fpspc") @@ -14983,7 +14983,7 @@ [(use (match_operand:SF 0 "register_operand" "")) (use (match_operand:SF 1 "register_operand" "")) (use (match_operand:SF 2 "register_operand" ""))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx label = gen_label_rtx (); @@ -15007,7 +15007,7 @@ [(use (match_operand:DF 0 "register_operand" "")) (use (match_operand:DF 1 "register_operand" "")) (use (match_operand:DF 2 "register_operand" ""))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx label = gen_label_rtx (); @@ -15031,7 +15031,7 @@ [(use (match_operand:XF 0 "register_operand" "")) (use (match_operand:XF 1 "register_operand" "")) (use (match_operand:XF 2 "register_operand" ""))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx label = gen_label_rtx (); @@ -15056,7 +15056,7 @@ UNSPEC_FPREM1_U)) (set (reg:CCFP FPSR_REG) (unspec:CCFP [(const_int 0)] UNSPEC_NOP))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fprem1" [(set_attr "type" "fpspc") @@ -15066,7 +15066,7 @@ [(use (match_operand:SF 0 "register_operand" "")) (use (match_operand:SF 1 "register_operand" "")) (use (match_operand:SF 2 "register_operand" ""))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx label = gen_label_rtx (); @@ -15090,7 +15090,7 @@ [(use (match_operand:DF 0 "register_operand" "")) (use (match_operand:DF 1 "register_operand" "")) (use (match_operand:DF 2 "register_operand" ""))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx label = gen_label_rtx (); @@ -15114,7 +15114,7 @@ [(use (match_operand:XF 0 "register_operand" "")) (use (match_operand:XF 1 "register_operand" "")) (use (match_operand:XF 2 "register_operand" ""))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx label = gen_label_rtx (); @@ -15132,7 +15132,7 @@ (define_insn "*sindf2" [(set (match_operand:DF 0 "register_operand" "=f") (unspec:DF [(match_operand:DF 1 "register_operand" "0")] UNSPEC_SIN))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fsin" [(set_attr "type" "fpspc") @@ -15141,7 +15141,7 @@ (define_insn "*sinsf2" [(set (match_operand:SF 0 "register_operand" "=f") (unspec:SF [(match_operand:SF 1 "register_operand" "0")] UNSPEC_SIN))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fsin" [(set_attr "type" "fpspc") @@ -15152,7 +15152,7 @@ (unspec:DF [(float_extend:DF (match_operand:SF 1 "register_operand" "0"))] UNSPEC_SIN))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fsin" [(set_attr "type" "fpspc") @@ -15161,7 +15161,7 @@ (define_insn "*sinxf2" [(set (match_operand:XF 0 "register_operand" "=f") (unspec:XF [(match_operand:XF 1 "register_operand" "0")] UNSPEC_SIN))] - "TARGET_80387 && !TARGET_NO_FANCY_MATH_387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fsin" [(set_attr "type" "fpspc") @@ -15170,7 +15170,7 @@ (define_insn "*cosdf2" [(set (match_operand:DF 0 "register_operand" "=f") (unspec:DF [(match_operand:DF 1 "register_operand" "0")] UNSPEC_COS))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fcos" [(set_attr "type" "fpspc") @@ -15179,7 +15179,7 @@ (define_insn "*cossf2" [(set (match_operand:SF 0 "register_operand" "=f") (unspec:SF [(match_operand:SF 1 "register_operand" "0")] UNSPEC_COS))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fcos" [(set_attr "type" "fpspc") @@ -15190,7 +15190,7 @@ (unspec:DF [(float_extend:DF (match_operand:SF 1 "register_operand" "0"))] UNSPEC_COS))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fcos" [(set_attr "type" "fpspc") @@ -15199,7 +15199,7 @@ (define_insn "*cosxf2" [(set (match_operand:XF 0 "register_operand" "=f") (unspec:XF [(match_operand:XF 1 "register_operand" "0")] UNSPEC_COS))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fcos" [(set_attr "type" "fpspc") @@ -15217,7 +15217,7 @@ UNSPEC_SINCOS_COS)) (set (match_operand:DF 1 "register_operand" "=u") (unspec:DF [(match_dup 2)] UNSPEC_SINCOS_SIN))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fsincos" [(set_attr "type" "fpspc") @@ -15251,7 +15251,7 @@ UNSPEC_SINCOS_COS)) (set (match_operand:SF 1 "register_operand" "=u") (unspec:SF [(match_dup 2)] UNSPEC_SINCOS_SIN))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fsincos" [(set_attr "type" "fpspc") @@ -15287,7 +15287,7 @@ (set (match_operand:DF 1 "register_operand" "=u") (unspec:DF [(float_extend:DF (match_dup 2))] UNSPEC_SINCOS_SIN))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fsincos" [(set_attr "type" "fpspc") @@ -15327,7 +15327,7 @@ UNSPEC_SINCOS_COS)) (set (match_operand:XF 1 "register_operand" "=u") (unspec:XF [(match_dup 2)] UNSPEC_SINCOS_SIN))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fsincos" [(set_attr "type" "fpspc") @@ -15361,7 +15361,7 @@ UNSPEC_TAN_ONE)) (set (match_operand:DF 1 "register_operand" "=u") (unspec:DF [(match_dup 2)] UNSPEC_TAN_TAN))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fptan" [(set_attr "type" "fpspc") @@ -15391,7 +15391,7 @@ UNSPEC_TAN_ONE)) (set (match_operand:DF 0 "register_operand" "") (unspec:DF [(match_dup 1)] UNSPEC_TAN_TAN))])] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { operands[2] = gen_reg_rtx (DFmode); @@ -15403,7 +15403,7 @@ UNSPEC_TAN_ONE)) (set (match_operand:SF 1 "register_operand" "=u") (unspec:SF [(match_dup 2)] UNSPEC_TAN_TAN))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fptan" [(set_attr "type" "fpspc") @@ -15433,7 +15433,7 @@ UNSPEC_TAN_ONE)) (set (match_operand:SF 0 "register_operand" "") (unspec:SF [(match_dup 1)] UNSPEC_TAN_TAN))])] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { operands[2] = gen_reg_rtx (SFmode); @@ -15445,7 +15445,7 @@ UNSPEC_TAN_ONE)) (set (match_operand:XF 1 "register_operand" "=u") (unspec:XF [(match_dup 2)] UNSPEC_TAN_TAN))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fptan" [(set_attr "type" "fpspc") @@ -15475,7 +15475,7 @@ UNSPEC_TAN_ONE)) (set (match_operand:XF 0 "register_operand" "") (unspec:XF [(match_dup 1)] UNSPEC_TAN_TAN))])] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { operands[2] = gen_reg_rtx (XFmode); @@ -15487,7 +15487,7 @@ (match_operand:DF 1 "register_operand" "u")] UNSPEC_FPATAN)) (clobber (match_scratch:DF 3 "=1"))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fpatan" [(set_attr "type" "fpspc") @@ -15497,7 +15497,7 @@ [(use (match_operand:DF 0 "register_operand" "=f")) (use (match_operand:DF 2 "register_operand" "0")) (use (match_operand:DF 1 "register_operand" "u"))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx copy = gen_reg_rtx (DFmode); @@ -15512,7 +15512,7 @@ (match_operand:DF 1 "register_operand" "")] UNSPEC_FPATAN)) (clobber (match_scratch:DF 3 ""))])] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { operands[2] = gen_reg_rtx (DFmode); @@ -15525,7 +15525,7 @@ (match_operand:SF 1 "register_operand" "u")] UNSPEC_FPATAN)) (clobber (match_scratch:SF 3 "=1"))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fpatan" [(set_attr "type" "fpspc") @@ -15535,7 +15535,7 @@ [(use (match_operand:SF 0 "register_operand" "=f")) (use (match_operand:SF 2 "register_operand" "0")) (use (match_operand:SF 1 "register_operand" "u"))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx copy = gen_reg_rtx (SFmode); @@ -15550,7 +15550,7 @@ (match_operand:SF 1 "register_operand" "")] UNSPEC_FPATAN)) (clobber (match_scratch:SF 3 ""))])] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { operands[2] = gen_reg_rtx (SFmode); @@ -15563,7 +15563,7 @@ (match_operand:XF 1 "register_operand" "u")] UNSPEC_FPATAN)) (clobber (match_scratch:XF 3 "=1"))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fpatan" [(set_attr "type" "fpspc") @@ -15573,7 +15573,7 @@ [(use (match_operand:XF 0 "register_operand" "=f")) (use (match_operand:XF 2 "register_operand" "0")) (use (match_operand:XF 1 "register_operand" "u"))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx copy = gen_reg_rtx (XFmode); @@ -15588,7 +15588,7 @@ (match_operand:XF 1 "register_operand" "")] UNSPEC_FPATAN)) (clobber (match_scratch:XF 3 ""))])] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { operands[2] = gen_reg_rtx (XFmode); @@ -15607,7 +15607,7 @@ (clobber (match_scratch:XF 8 ""))]) (set (match_operand:DF 0 "register_operand" "") (float_truncate:DF (match_dup 7)))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { int i; @@ -15630,7 +15630,7 @@ (clobber (match_scratch:XF 8 ""))]) (set (match_operand:SF 0 "register_operand" "") (float_truncate:SF (match_dup 7)))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { int i; @@ -15651,7 +15651,7 @@ (unspec:XF [(match_dup 5) (match_dup 1)] UNSPEC_FPATAN)) (clobber (match_scratch:XF 6 ""))])] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { int i; @@ -15674,7 +15674,7 @@ (clobber (match_scratch:XF 8 ""))]) (set (match_operand:DF 0 "register_operand" "") (float_truncate:DF (match_dup 7)))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { int i; @@ -15697,7 +15697,7 @@ (clobber (match_scratch:XF 8 ""))]) (set (match_operand:SF 0 "register_operand" "") (float_truncate:SF (match_dup 7)))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { int i; @@ -15718,7 +15718,7 @@ (unspec:XF [(match_dup 1) (match_dup 5)] UNSPEC_FPATAN)) (clobber (match_scratch:XF 6 ""))])] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { int i; @@ -15735,7 +15735,7 @@ (match_operand:XF 1 "register_operand" "u")] UNSPEC_FYL2X)) (clobber (match_scratch:XF 3 "=1"))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fyl2x" [(set_attr "type" "fpspc") @@ -15750,7 +15750,7 @@ (clobber (match_scratch:XF 5 ""))]) (set (match_operand:SF 0 "register_operand" "") (float_truncate:SF (match_dup 4)))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx temp; @@ -15772,7 +15772,7 @@ (clobber (match_scratch:XF 5 ""))]) (set (match_operand:DF 0 "register_operand" "") (float_truncate:DF (match_dup 4)))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx temp; @@ -15790,7 +15790,7 @@ (unspec:XF [(match_operand:XF 1 "register_operand" "") (match_dup 2)] UNSPEC_FYL2X)) (clobber (match_scratch:XF 3 ""))])] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx temp; @@ -15809,7 +15809,7 @@ (clobber (match_scratch:XF 5 ""))]) (set (match_operand:SF 0 "register_operand" "") (float_truncate:SF (match_dup 4)))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx temp; @@ -15831,7 +15831,7 @@ (clobber (match_scratch:XF 5 ""))]) (set (match_operand:DF 0 "register_operand" "") (float_truncate:DF (match_dup 4)))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx temp; @@ -15849,7 +15849,7 @@ (unspec:XF [(match_operand:XF 1 "register_operand" "") (match_dup 2)] UNSPEC_FYL2X)) (clobber (match_scratch:XF 3 ""))])] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx temp; @@ -15868,7 +15868,7 @@ (clobber (match_scratch:XF 5 ""))]) (set (match_operand:SF 0 "register_operand" "") (float_truncate:SF (match_dup 4)))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { operands[2] = gen_reg_rtx (XFmode); @@ -15887,7 +15887,7 @@ (clobber (match_scratch:XF 5 ""))]) (set (match_operand:DF 0 "register_operand" "") (float_truncate:DF (match_dup 4)))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { operands[2] = gen_reg_rtx (XFmode); @@ -15902,7 +15902,7 @@ (unspec:XF [(match_operand:XF 1 "register_operand" "") (match_dup 2)] UNSPEC_FYL2X)) (clobber (match_scratch:XF 3 ""))])] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { operands[2] = gen_reg_rtx (XFmode); @@ -15915,7 +15915,7 @@ (match_operand:XF 1 "register_operand" "u")] UNSPEC_FYL2XP1)) (clobber (match_scratch:XF 3 "=1"))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fyl2xp1" [(set_attr "type" "fpspc") @@ -15924,7 +15924,7 @@ (define_expand "log1psf2" [(use (match_operand:XF 0 "register_operand" "")) (use (match_operand:XF 1 "register_operand" ""))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx op0 = gen_reg_rtx (XFmode); @@ -15939,7 +15939,7 @@ (define_expand "log1pdf2" [(use (match_operand:XF 0 "register_operand" "")) (use (match_operand:XF 1 "register_operand" ""))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx op0 = gen_reg_rtx (XFmode); @@ -15954,7 +15954,7 @@ (define_expand "log1pxf2" [(use (match_operand:XF 0 "register_operand" "")) (use (match_operand:XF 1 "register_operand" ""))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { ix86_emit_i387_log1p (operands[0], operands[1]); @@ -15967,7 +15967,7 @@ UNSPEC_XTRACT_FRACT)) (set (match_operand:XF 1 "register_operand" "=u") (unspec:XF [(match_dup 2)] UNSPEC_XTRACT_EXP))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fxtract" [(set_attr "type" "fpspc") @@ -15982,7 +15982,7 @@ (unspec:XF [(match_dup 2)] UNSPEC_XTRACT_EXP))]) (set (match_operand:SF 0 "register_operand" "") (float_truncate:SF (match_dup 4)))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { operands[2] = gen_reg_rtx (XFmode); @@ -15999,7 +15999,7 @@ (unspec:XF [(match_dup 2)] UNSPEC_XTRACT_EXP))]) (set (match_operand:DF 0 "register_operand" "") (float_truncate:DF (match_dup 4)))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { operands[2] = gen_reg_rtx (XFmode); @@ -16013,7 +16013,7 @@ UNSPEC_XTRACT_FRACT)) (set (match_operand:XF 0 "register_operand" "") (unspec:XF [(match_dup 1)] UNSPEC_XTRACT_EXP))])] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { operands[2] = gen_reg_rtx (XFmode); @@ -16028,7 +16028,7 @@ (parallel [(set (match_operand:SI 0 "register_operand" "") (fix:SI (match_dup 3))) (clobber (reg:CC FLAGS_REG))])] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { operands[2] = gen_reg_rtx (XFmode); @@ -16039,7 +16039,7 @@ [(set (match_operand:XF 0 "register_operand" "=f") (unspec:XF [(match_operand:XF 1 "register_operand" "0")] UNSPEC_F2XM1))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "f2xm1" [(set_attr "type" "fpspc") @@ -16053,7 +16053,7 @@ (set (match_operand:XF 1 "register_operand" "=u") (unspec:XF [(match_dup 2) (match_dup 3)] UNSPEC_FSCALE_EXP))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fscale" [(set_attr "type" "fpspc") @@ -16075,7 +16075,7 @@ UNSPEC_FSCALE_EXP))]) (set (match_operand:SF 0 "register_operand" "") (float_truncate:SF (match_dup 10)))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx temp; @@ -16104,7 +16104,7 @@ UNSPEC_FSCALE_EXP))]) (set (match_operand:DF 0 "register_operand" "") (float_truncate:DF (match_dup 10)))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx temp; @@ -16130,7 +16130,7 @@ (set (match_dup 9) (unspec:XF [(match_dup 8) (match_dup 4)] UNSPEC_FSCALE_EXP))])] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx temp; @@ -16159,7 +16159,7 @@ UNSPEC_FSCALE_EXP))]) (set (match_operand:SF 0 "register_operand" "") (float_truncate:SF (match_dup 10)))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx temp; @@ -16188,7 +16188,7 @@ UNSPEC_FSCALE_EXP))]) (set (match_operand:DF 0 "register_operand" "") (float_truncate:DF (match_dup 10)))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx temp; @@ -16214,7 +16214,7 @@ (set (match_dup 9) (unspec:XF [(match_dup 8) (match_dup 4)] UNSPEC_FSCALE_EXP))])] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx temp; @@ -16242,7 +16242,7 @@ UNSPEC_FSCALE_EXP))]) (set (match_operand:SF 0 "register_operand" "") (float_truncate:SF (match_dup 8)))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { int i; @@ -16267,7 +16267,7 @@ UNSPEC_FSCALE_EXP))]) (set (match_operand:DF 0 "register_operand" "") (float_truncate:DF (match_dup 8)))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { int i; @@ -16289,7 +16289,7 @@ (set (match_dup 8) (unspec:XF [(match_dup 7) (match_dup 3)] UNSPEC_FSCALE_EXP))])] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { int i; @@ -16322,7 +16322,7 @@ (set (match_dup 14) (plus:XF (match_dup 13) (match_dup 8))) (set (match_operand:DF 0 "register_operand" "") (float_truncate:DF (match_dup 14)))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx temp; @@ -16358,7 +16358,7 @@ (set (match_dup 14) (plus:XF (match_dup 13) (match_dup 8))) (set (match_operand:SF 0 "register_operand" "") (float_truncate:SF (match_dup 14)))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx temp; @@ -16392,7 +16392,7 @@ (set (match_dup 12) (minus:XF (match_dup 10) (match_dup 9))) (set (match_operand:XF 0 "register_operand" "") (plus:XF (match_dup 12) (match_dup 7)))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx temp; @@ -16410,7 +16410,7 @@ [(set (match_operand:XF 0 "register_operand" "=f") (unspec:XF [(match_operand:XF 1 "register_operand" "0")] UNSPEC_FRNDINT))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "frndint" [(set_attr "type" "fpspc") @@ -16419,7 +16419,7 @@ (define_expand "rintdf2" [(use (match_operand:DF 0 "register_operand" "")) (use (match_operand:DF 1 "register_operand" ""))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx op0 = gen_reg_rtx (XFmode); @@ -16435,7 +16435,7 @@ (define_expand "rintsf2" [(use (match_operand:SF 0 "register_operand" "")) (use (match_operand:SF 1 "register_operand" ""))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx op0 = gen_reg_rtx (XFmode); @@ -16451,7 +16451,7 @@ (define_expand "rintxf2" [(use (match_operand:XF 0 "register_operand" "")) (use (match_operand:XF 1 "register_operand" ""))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { emit_insn (gen_frndintxf2 (operands[0], operands[1])); @@ -16464,7 +16464,7 @@ UNSPEC_FRNDINT_FLOOR)) (use (match_operand:HI 2 "memory_operand" "m")) (use (match_operand:HI 3 "memory_operand" "m"))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fldcw\t%3\n\tfrndint\n\tfldcw\t%2" [(set_attr "type" "frndint") @@ -16474,7 +16474,7 @@ (define_expand "floordf2" [(use (match_operand:DF 0 "register_operand" "")) (use (match_operand:DF 1 "register_operand" ""))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx op0 = gen_reg_rtx (XFmode); @@ -16494,7 +16494,7 @@ (define_expand "floorsf2" [(use (match_operand:SF 0 "register_operand" "")) (use (match_operand:SF 1 "register_operand" ""))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx op0 = gen_reg_rtx (XFmode); @@ -16514,7 +16514,7 @@ (define_expand "floorxf2" [(use (match_operand:XF 0 "register_operand" "")) (use (match_operand:XF 1 "register_operand" ""))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx op2 = assign_386_stack_local (HImode, 1); @@ -16532,7 +16532,7 @@ UNSPEC_FRNDINT_CEIL)) (use (match_operand:HI 2 "memory_operand" "m")) (use (match_operand:HI 3 "memory_operand" "m"))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fldcw\t%3\n\tfrndint\n\tfldcw\t%2" [(set_attr "type" "frndint") @@ -16542,7 +16542,7 @@ (define_expand "ceildf2" [(use (match_operand:DF 0 "register_operand" "")) (use (match_operand:DF 1 "register_operand" ""))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx op0 = gen_reg_rtx (XFmode); @@ -16562,7 +16562,7 @@ (define_expand "ceilsf2" [(use (match_operand:SF 0 "register_operand" "")) (use (match_operand:SF 1 "register_operand" ""))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx op0 = gen_reg_rtx (XFmode); @@ -16582,7 +16582,7 @@ (define_expand "ceilxf2" [(use (match_operand:XF 0 "register_operand" "")) (use (match_operand:XF 1 "register_operand" ""))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx op2 = assign_386_stack_local (HImode, 1); @@ -16600,7 +16600,7 @@ UNSPEC_FRNDINT_TRUNC)) (use (match_operand:HI 2 "memory_operand" "m")) (use (match_operand:HI 3 "memory_operand" "m"))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fldcw\t%3\n\tfrndint\n\tfldcw\t%2" [(set_attr "type" "frndint") @@ -16610,7 +16610,7 @@ (define_expand "btruncdf2" [(use (match_operand:DF 0 "register_operand" "")) (use (match_operand:DF 1 "register_operand" ""))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx op0 = gen_reg_rtx (XFmode); @@ -16630,7 +16630,7 @@ (define_expand "btruncsf2" [(use (match_operand:SF 0 "register_operand" "")) (use (match_operand:SF 1 "register_operand" ""))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx op0 = gen_reg_rtx (XFmode); @@ -16650,7 +16650,7 @@ (define_expand "btruncxf2" [(use (match_operand:XF 0 "register_operand" "")) (use (match_operand:XF 1 "register_operand" ""))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx op2 = assign_386_stack_local (HImode, 1); @@ -16668,7 +16668,7 @@ UNSPEC_FRNDINT_MASK_PM)) (use (match_operand:HI 2 "memory_operand" "m")) (use (match_operand:HI 3 "memory_operand" "m"))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" "fldcw\t%3\n\tfrndint\n\tfclex\n\tfldcw\t%2" [(set_attr "type" "frndint") @@ -16678,7 +16678,7 @@ (define_expand "nearbyintdf2" [(use (match_operand:DF 0 "register_operand" "")) (use (match_operand:DF 1 "register_operand" ""))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx op0 = gen_reg_rtx (XFmode); @@ -16698,7 +16698,7 @@ (define_expand "nearbyintsf2" [(use (match_operand:SF 0 "register_operand" "")) (use (match_operand:SF 1 "register_operand" ""))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx op0 = gen_reg_rtx (XFmode); @@ -16718,7 +16718,7 @@ (define_expand "nearbyintxf2" [(use (match_operand:XF 0 "register_operand" "")) (use (match_operand:XF 1 "register_operand" ""))] - "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 + "TARGET_USE_FANCY_MATH_387 && flag_unsafe_math_optimizations" { rtx op2 = assign_386_stack_local (HImode, 1);