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.

Reply via email to