https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127055

--- Comment #28 from Hongtao Liu <liuhongt at gcc dot gnu.org> ---
(In reply to Matthias Kretz (Vir) from comment #27)

> 
> 2. Intel Docs for VROUNDPS: "Invalid (signaled only if SRC = SNaN)." which
> matches the C and ISO 60559 spec, no?

This is also my understanding, because sse4.1 vroundps/vrndscaleps handle SNAN
for Invalid exception and we don't need !flag_trapping_math for it. That's why
in the scalar expander, there're TARGET_SSE4_1 || (... !flag_trapping_math) in
the condition.

26348(define_expand "<rounding_insn><mode>2"
26349  [(parallel [(set (match_operand:MODEF 0 "register_operand")
26350                   (unspec:MODEF [(match_operand:MODEF 1
"register_operand")]
26351                                 FRNDINT_ROUNDING))
26352              (clobber (reg:CC FLAGS_REG))])]
26353  "(TARGET_USE_FANCY_MATH_387
26354    && (!(SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH)
26355        || TARGET_MIX_SSE_I387)
26356    && (flag_fp_int_builtin_inexact || !flag_trapping_math))
26357   || (SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH
26358       && (TARGET_SSE4_1
26359           || (ROUND_<ROUNDING> != ROUND_ROUNDEVEN
26360               && (flag_fp_int_builtin_inexact || !flag_trapping_math))))"

Reply via email to