https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64306
--- Comment #1 from Oleg Endo <olegendo at gcc dot gnu.org> --- If the alignment/offset of an unaligned 32 bit store is known to be 16 bit, it can be done with something like: mov r5,r0 mov.w r0,@({0|2},r4) shlr16 r0 mov.w r0,@({2|0},r4)