The widening and narrowing MVE instructions like VLDRH.32 are only permitted to use low "thumb1" registers. This means that if they are used for a stack slots, where the register used is only decided during frame setup, we need to be able to correctly pick a thumb1 register over a normal GPR.
This attempts to add the required logic into eliminateFrameIndex and rewriteT2FrameIndex, only picking the FrameReg if it is a valid register for the operands register class, and picking a valid scratch register for the register class.
Is it possible to get here with a virtual register of the wrong class? I think we'd need a call to constrainRegClass here in that case.