https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93183

rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2020-01-07
                 CC|                            |rsandifo at gcc dot gnu.org
     Ever confirmed|0                           |1

--- Comment #2 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> 
---
(In reply to Andrew Pinski from comment #1)
> We get:
> .L3:
>         ld1b    z0.b, p0/z, [x1, x3]
>         movprfx z2, z0
>         and     z2.b, z2.b, #0xc0
>         neg     z1.b, p1/m, z0.b  ;;; <<<< THIS
>         cmpeq   p2.b, p1/z, z2.b, #0
>         sel     z0.b, p2, z0.b, z1.b ;;;; <<<< AND THIS
>         st1b    z0.b, p0, [x0, x3]
>         incb    x3
>         whilelo p0.b, w3, w2
>         b.any   .L3
> 
> The two instructions marked should be combined.

The problem is that it isn't a straight combination of the
NEG and SEL, because the condition is the inverse of the one
that we want for predication.

This is one of the things that the IFN_COND_* functions were
designed to fix.  We should probably add unary versions of those.

Reply via email to