https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108938
--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Can be just shift. The bswap descriptions are zero byte means the byte is zero, 1-8 copy of some byte and 0xff unknown. So no need to mask anything, just look at the symbolic n.