This patch uses lshrInPlace to replace code where the object that lshr is called on is being overwritten with the result.
This adds an lshrInPlace(const APInt &) version as well.
This also makes lshrInPlace return a reference to *this so it can be used in some other special cases.
For example:
Elt = Elt.lshr(Index).zextOrTrunc(Length);
to
Elt = Elt.lshrInPlace(Index).zextOrTrunc(Length);
Other than operators we don't tend to use this pattern to return *this - is it a good idea to introduce it?