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...

Reply via email to