/// out-of-line slow case for shl
void shlSlowCase(unsigned ShiftAmt);
+ /// out-of-line slow case for lshr.
+ void lshrSlowCase(unsigned ShiftAmt);
+
/// out-of-line slow case for operator=
APInt &AssignSlowCase(const APInt &RHS);
}
/// Logical right-shift this APInt by ShiftAmt in place.
- void lshrInPlace(unsigned ShiftAmt);
+ void lshrInPlace(unsigned ShiftAmt) {
+ if (isSingleWord()) {
+ if (ShiftAmt >= BitWidth)
+ VAL = 0;
+ else
+ VAL >>= ShiftAmt;
+ return;
+ }
+ lshrSlowCase(ShiftAmt);
+ }
/// \brief Left-shift function.
///
/// Logical right-shift this APInt by shiftAmt.
/// @brief Logical right-shift function.
-void APInt::lshrInPlace(unsigned ShiftAmt) {
- if (isSingleWord()) {
- if (ShiftAmt >= BitWidth)
- VAL = 0;
- else
- VAL >>= ShiftAmt;
- return;
- }
-
+void APInt::lshrSlowCase(unsigned ShiftAmt) {
tcShiftRight(pVal, getNumWords(), ShiftAmt);
}