on 2022/9/22 05:56, Segher Boessenkool wrote: > Hi! > > On Fri, Jun 24, 2022 at 10:02:19AM +0800, HAO CHEN GUI wrote: >> This patch also binds __builtin_vsx_xs[min/max]dp to fmin/max instead >> of smin/max. So the builtins always generate xs[min/max]dp on all >> platforms. > > But how does this not blow up with -ffast-math?
Indeed. Since it guards with "TARGET_VSX && !flag_finite_math_only", the bifs seem to cause ICE at -ffast-math. Haochen, could you double check it? > > In the other direction I am worried that the unspecs will degrade > performance (relative to smin/smax) when -ffast-math *is* active (and > this new builtin code and pattern doesn't blow up). For fmin/fmax it would be fine, since they are transformed to {MAX,MIN} EXPR in middle end, and yes, it can degrade for the bifs, although IMHO the previous expansion to smin/smax contradicts with the bif names (users expect to map them to xs{min,max}dp than others). > > I still think we should get RTL codes for this, to have access to proper > floating point min/max semantics always and everywhere. "fmin" and > "fmax" seem to be good names :-) It would be good, especially if we have observed some uses of these bifs and further opportunities around them. :) BR, Kewen