This patch adds support for converting ISD::ROTR and ISD::ROTL into either a vshl/vsri or a vrevN for ARM32 NEON.
This patch would also work for aarch64, and I will probably add it in later when I get a chance.
vshl/vsri vs vshl/vshr/vorr saves one instruction, and vrevN is a single cycle rotl for an N/2 rotation (eg a 32-bit rotation on a 64-bit lane).
If you're doing this please add suitable fshl/fshr test coverage
for reference:
llvm\test\CodeGen\X86\vector-fshl-128.ll
llvm\test\CodeGen\X86\vector-fshr-128.ll
llvm\test\CodeGen\X86\vector-fshl-rot-128.ll
llvm\test\CodeGen\X86\vector-fshr-rot-128.ll