Eigen
3.3.9

The goal of this page is to explain what we mean by "fixedsize vectorizable".
An Eigen object is called "fixedsize vectorizable" if it has fixed size and that size is a multiple of 16 bytes.
Examples include:
First, "fixedsize" should be clear: an Eigen object has fixed size if its number of rows and its number of columns are fixed at compiletime. So for example Matrix3f has fixed size, but MatrixXf doesn't (the opposite of fixedsize is dynamicsize).
The array of coefficients of a fixedsize Eigen object is a plain "static array", it is not dynamically allocated. For example, the data behind a Matrix4f is just a "float array[16]".
Fixedsize objects are typically very small, which means that we want to handle them with zero runtime overhead – both in terms of memory usage and of speed.
Now, vectorization (both SSE and AltiVec) works with 128bit packets. Moreover, for performance reasons, these packets need to be have 128bit alignment.
So it turns out that the only way that fixedsize Eigen objects can be vectorized, is if their size is a multiple of 128 bits, or 16 bytes. Eigen will then request 16byte alignment for these objects, and henceforth rely on these objects being aligned so no runtime check for alignment is performed.