On Fri, Sep 20, 2024 at 9:08 AM Richard Biener
<richard.guent...@gmail.com> wrote:
>
> On Fri, Sep 20, 2024 at 8:32 AM Jakub Jelinek <ja...@redhat.com> wrote:
> >
> > On Fri, Sep 20, 2024 at 08:01:58AM +0200, Richard Biener wrote:
> > > > P.S. I have a patch to replace UNSPEC_IEEE_M{AX,IN} with IF_THEN_ELSE
> > > > (except for the 3dNOW! PFMIN/MAX, those actually are documented to 
> > > > behave
> > > > differently), but it actually doesn't improve anything much, as
> > > > simplify_const_relational_operation nor simplify_ternary_operation 
> > > > aren't
> > > > able to fold comparisons with two CONST_VECTOR operands or IF_THEN_ELSE
> > > > with 3 CONST_VECTOR operands.
> > > > So, maybe better approach will be to generic fold the builtins with 
> > > > constant
> > > > arguments (maybe leaving NaNs to runtime).
> > >
> > > It would be possible to fold them in the gimple folding hook to 
> > > VEC_COND_EXPRs
> > > with the chance the min/max operation being lost when expanding to RTL.
> >
> > Sure, but we don't actually pattern recognize
> > typedef float v4sf __attribute__((vector_size (sizeof (4 * sizeof 
> > (float)))));
> >
> > v4sf
> > foo (v4sf x, v4sf y)
> > {
> >   return x < y ? y : x;
> > }
> > back to maxpd etc.
>
> Interesting - we did with GCC 13 but it seems regress with GCC 14 here, even
> when using -msse4.2.  But yeah, this is done at RTL expansion and quite 
> fragile
> and later the combine patterns are not good enough it seems even with
> UNSPEC_BLENDV ...

I have opened PR116787 for this.

> >  So it wouldn't be an optimization in most cases, at
> > least until we do that, user was looking for such insn or better with 
> > _mm_max_ps...
> > Maybe we should.
> >
> > For scalar ('-Dvector_size(x)=') this is currently matched in ce2.
> >
> > Exception-wise, seems the insn raise Invalid on NaN input (either) and if y
> > is SNaN, actually propagate it rather than turn it into QNaN, so I think it
> > is actually an exact match for x < y ? y : x (or x > y ? y : x).
>
> Yes, it is documented in the Intel ISA manual that way.
>
> Richard.
>
> >         Jakub
> >

Reply via email to