https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103605
HaoChen Gui <guihaoc at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |guihaoc at gcc dot gnu.org --- Comment #2 from HaoChen Gui <guihaoc at gcc dot gnu.org> --- I think both xsmindp and xsmincdp is not consistent with C99/11 standard. So without fast-math, it can't be implemented by xsmindp/xsmincdp. C99/11 standard If just one argument is a NaN, the fmin functions return the other argument (if both arguments are NaNs, the functions return a NaN). fmin(NaN, 3.0) = fmin(3.0, NaN) = 3.0 xsmindp The minimum of a QNaN and any value is that value. The minimum of any value and an SNaN is that SNaN converted to a QNaN. xsmindp(NaN, 3.0) = 3.0 xsmindp(3.0, NaN) = NaN xsmincdp If either src1 or src2 is a NaN, result is src2. Otherwise, if src1 is less than src2, result is src1. Otherwise, result is src2. xsmincdp(NaN, 3.0) = 3.0 xsmincdp(3.0, NaN) = NaN