http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54830
--- Comment #2 from Oleg Endo <olegendo at gcc dot gnu.org> 2012-11-07 21:27:11 UTC --- Just for the record.. The arithmetic right shift by 16 splits into the sequence swap.w exts.w after combine. Thus, any other following extensions don't get combined away.