https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91940
--- Comment #12 from Jorn Wolfgang Rennecke <amylaar at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #11) But the condition I quoted rejects the recognition of a bswap16 with non-promoted arguments. vectorizable_bswap doesn't do anything for processors that don't have byte vectors, even if they have support for shifts, or and bswap16 for V2HI vectors. As it is, the test just fails. If I change the test in vect_recog_rotate_pattern to: || TYPE_PRECISION (type) < 16 I get an expansion with shifts and or, which a combiner splitter pattern can transform into a bswapv2hi2 .