diff options
-rw-r--r-- | llvm/include/llvm/ADT/APInt.h | 14 | ||||
-rw-r--r-- | llvm/lib/Support/APInt.cpp | 10 |
2 files changed, 14 insertions, 10 deletions
diff --git a/llvm/include/llvm/ADT/APInt.h b/llvm/include/llvm/ADT/APInt.h index 11fb489eaa7..59b3ba0e685 100644 --- a/llvm/include/llvm/ADT/APInt.h +++ b/llvm/include/llvm/ADT/APInt.h @@ -191,6 +191,9 @@ private: /// 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); @@ -889,7 +892,16 @@ public: } /// 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. /// diff --git a/llvm/lib/Support/APInt.cpp b/llvm/lib/Support/APInt.cpp index 8b23179b44b..6303dd84907 100644 --- a/llvm/lib/Support/APInt.cpp +++ b/llvm/lib/Support/APInt.cpp @@ -1140,15 +1140,7 @@ void APInt::lshrInPlace(const APInt &shiftAmt) { /// 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); } |