@@ -17115,16 +17115,18 @@
&& (flag_fp_int_builtin_inexact || !flag_trapping_math))
|| (SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH
&& (TARGET_SSE4_1
- || (ROUND_<ROUNDING> != ROUND_ROUNDEVEN
- && (flag_fp_int_builtin_inexact || !flag_trapping_math))))"
+ || (ROUND_<ROUNDING> != ROUND_ROUNDEVEN
+ && (flag_fp_int_builtin_inexact || !flag_trapping_math))))"
{
if (SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH
- && (TARGET_SSE4_1 || flag_fp_int_builtin_inexact || !flag_trapping_math))
+ && (TARGET_SSE4_1
+ || (ROUND_<ROUNDING> != ROUND_ROUNDEVEN
+ && (flag_fp_int_builtin_inexact || !flag_trapping_math))))
{
if (TARGET_SSE4_1)
emit_insn (gen_sse4_1_round<mode>2
- (operands[0], operands[1], GEN_INT (ROUND_<ROUNDING>
- | ROUND_NO_EXC)));
+ (operands[0], operands[1],
+ GEN_INT (ROUND_<ROUNDING> | ROUND_NO_EXC)));
else if (TARGET_64BIT || (<MODE>mode != DFmode))
{
if (ROUND_<ROUNDING> == ROUND_FLOOR)
new file mode 100644
@@ -0,0 +1,8 @@
+/* PR target/95255 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -msse2 -mno-sse4.1 -mfpmath=both" } */
+
+double foo (double x)
+{
+ return __builtin_roundeven (x);
+}