https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122823
Wilco <wilco at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |wilco at gcc dot gnu.org
Status|UNCONFIRMED |RESOLVED
Resolution|--- |INVALID
--- Comment #4 from Wilco <wilco at gcc dot gnu.org> ---
This result is correct and expected on big-endian. When loaded in an SVE
register (little-endian lane layout), it looks like this:
0x223d 0000 10e1 0000 (data1 loaded as u16)
0x0000162e 000004d2 (data2 loaded as s32)
Then reinterpret data1 as s32:
0x223d0000 10e10000 (data1 as s32)
add:
0x223d162e 10e104d2 (decimal 574428718 and 283182290)
So it is printing the correct result. Basically the 32-bit values in data1 have
their 16-bit halves swapped in big-endian.