https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85698
--- Comment #7 from Pat Haugen <pthaugen at gcc dot gnu.org> --- So the problem is that we're generating a stxvw4x insn to write to memory, which corrupts the contents due to both endian behavior and element size (since we're dealing with halfword/uint16_t elements). Value in vector reg = 0x0000ffff0002fffcffff0002fff5000e stvx/good (gdb) x/8hx $r1+$r8 0x7fffffffe490: 0x000e 0xfff5 0x0002 0xffff 0xfffc 0x0002 0xffff 0x0000 stxvw4x/bad (gdb) x/8hx $r7+$r8 0x7fffffffe470: 0xffff 0x0000 0xfffc 0x0002 0x0002 0xffff 0x000e 0xfff5