Hi Segher, on 2022/9/22 22:05, Segher Boessenkool wrote: > Hi! > > On Thu, Sep 22, 2022 at 10:28:23AM +0800, Kewen.Lin wrote: >> on 2022/9/22 05:56, Segher Boessenkool wrote: >>> On Fri, Jun 24, 2022 at 10:02:19AM +0800, HAO CHEN GUI wrote: >>> 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). > > But builtins *never* say to generate any particular instruction. They > say to generate code that implements certain functionality. For many > builtins this does of course boil down to specific instructions, but > even then it could be optimised away completely or replace with > something more specific if things can be folded or such.
ah, your explanation refreshed my mind, thanks! Previously I thought the bifs with specific mnemonic as part of their names should be used to generate specific instructions, it's to save users' efforts using inline-asm, if we want them to represent the generic functionality (not bind with specific), we can use some generic names instead. As your explanation, binding at fast-math isn't needed, then I think Haochen's patch v7 with gimple folding can avoid the concern on degradation at fast-math (still smax/smin), nice. :) BR, Kewen