diff options
Diffstat (limited to 'llvm/lib/Support/APInt.cpp')
-rw-r--r-- | llvm/lib/Support/APInt.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/Support/APInt.cpp b/llvm/lib/Support/APInt.cpp index bd8358c..05b1526 100644 --- a/llvm/lib/Support/APInt.cpp +++ b/llvm/lib/Support/APInt.cpp @@ -19,6 +19,7 @@ #include "llvm/ADT/StringRef.h" #include "llvm/ADT/bit.h" #include "llvm/Config/llvm-config.h" +#include "llvm/Support/Alignment.h" #include "llvm/Support/Debug.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/MathExtras.h" @@ -164,6 +165,14 @@ void APInt::Profile(FoldingSetNodeID& ID) const { ID.AddInteger(U.pVal[i]); } +bool APInt::isAligned(Align A) const { + if (isZero()) + return true; + const unsigned TrailingZeroes = countr_zero(); + const unsigned MinimumTrailingZeroes = Log2(A); + return TrailingZeroes >= MinimumTrailingZeroes; +} + /// Prefix increment operator. Increments the APInt by one. APInt& APInt::operator++() { if (isSingleWord()) |