Certain SIMD instructions that execute the same instruction for multiple data require that the memory address of this data be aligned with a specific byte boundary. This actually means that the memory address in which your data is located must be divisible by the number of bytes required by the instruction.
So, in your case, the alignment is 16 bytes (128 bits), which means that the memory address of your data must be a multiple of 16. For example. 0x00010 will be aligned by 16 bytes, but 0x00011 will not.
How to get your alignment data depends on the programming language (and sometimes the compiler) that you use. Most languages that have the concept of a memory address will also provide you with a means to indicate alignment.
source share