Horizontal operations, floating-point reassociation and the cost of the final combine.
When two pointers may refer to overlapping storage, a compiler can be forced to preserve scalar ordering. Learn how alias analysis, restrict and runtime checks affect vectorization.
A loop-carried dependency connects one iteration to another. It is one of the most important reasons a loop cannot be executed or vectorized as independent iterations.
Compilers skip vectorization when legality, profitability or target constraints get in the way. Learn the most common blockers: dependencies, aliasing, control flow, calls and memory access.