Auto-vectorization is consistently one of the least predictable optimization passes, which is rather awful, since when it <i>doesn't</i> trigger your functions are suddenly >3x slower. This drives people to more explicit SIMD coding, from direct assembly like in FFMPEG to wrappers providing some cross-platform support like Google's Highway.<p>It's just really hard to detect and exploit profitable and safe vectorization opportunities. The theory behind some of the optimizers is beautiful, though: <a href="https://en.wikipedia.org/wiki/Polytope_model" rel="nofollow">https://en.wikipedia.org/wiki/Polytope_model</a>