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.