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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org,
                   |                            |rguenth at gcc dot gnu.org,
                   |                            |rsandifo at gcc dot gnu.org

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
t.C:260:16: missed:   Build SLP failed: incompatible vector types for: patt_288
= (unsigned char) patt_290;
t.C:260:16: note:       old vector type: vector(8) unsigned char
t.C:260:16: note:       new vector type: vector(4) unsigned char

we're also re-trying for all vector sizes even though the above issue
will prevail.

But one of the main issues is likely that we don't pattern match

static inline unsigned umax(unsigned a, unsigned b) {
  return a - ((a - b) & -(a < b));
}

static inline unsigned umin(unsigned a, unsigned b) {
  return a - ((a - b) & -(a > b));
}

I wonder if they desperately searched for sth not handled by GCC ;)

Btw, my copy of clang (OK, 7.0...) doesn't vectorize the color.components[]
compute but only the leading three-component compute involving reverse
sqrt, not vectorized by us because we don't handle BB vectorization of
reductions.  There's duplicate PRs about this.

Which part is important to vectorize?

Also - what flags did you use?  (tried -Ofast -mavx2)

Reply via email to