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);