ARMV8 has bit field extract/insert, which are fairly powerful, and I'd say more generic than "shl ax,N", which is really only there for legacy reasons (it's an instruction with 16-bit operator prefix).
RISC generally tries to keep instructions as generic/useful as possible to keep silicon small.
RISC generally tries to keep instructions as generic/useful as possible to keep silicon small.