If we only demand bits from one half of a rotation pattern, see if we can simplify to a logical shift.
For the ARM rev16 pattern, I had to drop a fold to prevent srl(bswap()) -> rotr(bswap) -> srl(bswap) infinite loops. I've replaced this with an isel PatFrag which should do the same task.
Are you sure this is right?
https://alive2.llvm.org/ce/z/EJDzlC