On Sun, Nov 3, 2024 at 7:41 AM Andrew Pinski <quic_apin...@quicinc.com> wrote: > > I noticed that __builtin_assoc_barrier makes a differnce for FMAs formation > but it was not documented. This adds that documentation even with a small > example. > > Build the HTML documents to make sure everything looks correct.
OK. Richard. > gcc/ChangeLog: > > PR middle-end/115023 > * doc/extend.texi (__builtin_assoc_barrier): Document > ffp-contract=fast > and FMA usage. > > Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com> > --- > gcc/doc/extend.texi | 16 ++++++++++++++-- > 1 file changed, 14 insertions(+), 2 deletions(-) > > diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi > index ad1821e3e23..5902e76f043 100644 > --- a/gcc/doc/extend.texi > +++ b/gcc/doc/extend.texi > @@ -15555,8 +15555,7 @@ This built-in inhibits re-association of the > floating-point expression > @var{expr} with expressions consuming the return value of the built-in. The > expression @var{expr} itself can be reordered, and the whole expression > @var{expr} can be reordered with operands after the barrier. The barrier is > -only relevant when @code{-fassociative-math} is active, since otherwise > -floating-point is not treated as associative. > +relevant when @code{-fassociative-math} is active. > > @smallexample > float x0 = a + b - b; > @@ -15566,6 +15565,19 @@ float x1 = __builtin_assoc_barrier(a + b) - b; > @noindent > means that, with @code{-fassociative-math}, @code{x0} can be optimized to > @code{x0 = a} but @code{x1} cannot. > + > +It is also relevant when @code{-ffp-contract=fast} is active; > +it will prevent contraction between expressions. > + > +@smallexample > +float x0 = a * b + c; > +float x1 = __builtin_assoc_barrier (a * b) + c; > +@end smallexample > + > +@noindent > +means that, with @code{-ffp-contract=fast}, @code{x0} may be optimized to > +use a fused multiply-add instruction but @code{x1} cannot. > + > @enddefbuiltin > > @defbuiltin{{void *} __builtin_assume_aligned (const void *@var{exp}, size_t > @var{align}, ...)} > -- > 2.43.0 >