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)