https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78303
--- Comment #3 from Bill Schmidt <wschmidt at gcc dot gnu.org> --- The memory layout is correct. It should not change regardless of endianness settings. (The byte order of each element is dependent upon the fundamental endianness, but the order of array elements with respect to one another is always the same. On a POWER8, -maltivec=be means to load the array with lxvd2x, whereas -maltivec=le means to load the array with lxvd2x and adjust with a swap instruction. On a POWER9, lxvx can be used when the -maltivec setting matches the fundamental endianness (so is correct on BE and LE by default). Using -maltivec=be on an LE system requires using lxvd2x or similar (depending upon element size). I am tempted to deprecate -maltivec=be in GCC 8 and remove support for it in GCC 9. This behavior is optional and was designed primarily to support certain libraries that are not supported by GCC anyway. Keeping it consistent is a time sink with little benefit...