From 742d1704e1cc1870c44a17181df694a66f1dc2f9 Mon Sep 17 00:00:00 2001 From: Reid Spencer Date: Thu, 1 Mar 2007 17:15:32 +0000 Subject: Add methods for bit width modification: sextOrTrunc, zextOrTrunc. llvm-svn: 34789 --- llvm/lib/Support/APInt.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'llvm/lib/Support') diff --git a/llvm/lib/Support/APInt.cpp b/llvm/lib/Support/APInt.cpp index 93442f344c1..50b0dc34fea 100644 --- a/llvm/lib/Support/APInt.cpp +++ b/llvm/lib/Support/APInt.cpp @@ -985,6 +985,22 @@ APInt &APInt::zext(uint32_t width) { return *this; } +APInt &APInt::zextOrTrunc(uint32_t width) { + if (BitWidth < width) + return zext(width); + if (BitWidth > width) + return trunc(width); + return *this; +} + +APInt &APInt::sextOrTrunc(uint32_t width) { + if (BitWidth < width) + return sext(width); + if (BitWidth > width) + return trunc(width); + return *this; +} + /// Arithmetic right-shift this APInt by shiftAmt. /// @brief Arithmetic right-shift function. APInt APInt::ashr(uint32_t shiftAmt) const { -- cgit v1.2.3