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))))"
