[llvm] r302716 - [APInt] Add negate helper method to implement twos complement. Use it to shorten code.
David Blaikie via llvm-commits
llvm-commits at lists.llvm.org
Mon May 15 09:35:42 PDT 2017
On Wed, May 10, 2017 at 1:14 PM Craig Topper via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
> Author: ctopper
> Date: Wed May 10 15:01:38 2017
> New Revision: 302716
>
> URL: http://llvm.org/viewvc/llvm-project?rev=302716&view=rev
> Log:
> [APInt] Add negate helper method to implement twos complement. Use it to
> shorten code.
>
> Modified:
> llvm/trunk/include/llvm/ADT/APInt.h
> llvm/trunk/lib/Support/APInt.cpp
>
> Modified: llvm/trunk/include/llvm/ADT/APInt.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/APInt.h?rev=302716&r1=302715&r2=302716&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/ADT/APInt.h (original)
> +++ llvm/trunk/include/llvm/ADT/APInt.h Wed May 10 15:01:38 2017
> @@ -1437,6 +1437,12 @@ public:
> /// as "bitPosition".
> void flipBit(unsigned bitPosition);
>
> + /// Negate this APInt in place.
> + void negate() {
> + flipAllBits();
> + ++(*this);
>
If you like, you can drop the () here ^ and write: ++*this
> + }
> +
> /// Insert the bits from a smaller APInt starting at bitPosition.
> void insertBits(const APInt &SubBits, unsigned bitPosition);
>
> @@ -1996,8 +2002,7 @@ inline raw_ostream &operator<<(raw_ostre
> }
>
> inline APInt operator-(APInt v) {
> - v.flipAllBits();
> - ++v;
> + v.negate();
> return v;
> }
>
>
> Modified: llvm/trunk/lib/Support/APInt.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/APInt.cpp?rev=302716&r1=302715&r2=302716&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Support/APInt.cpp (original)
> +++ llvm/trunk/lib/Support/APInt.cpp Wed May 10 15:01:38 2017
> @@ -1846,10 +1846,8 @@ void APInt::fromString(unsigned numbits,
> *this += digit;
> }
> // If its negative, put it in two's complement form
> - if (isNeg) {
> - --(*this);
> - this->flipAllBits();
> - }
> + if (isNeg)
> + this->negate();
>
Any particular reason for the "this->" qualification?
> }
>
> void APInt::toString(SmallVectorImpl<char> &Str, unsigned Radix,
> @@ -1927,8 +1925,7 @@ void APInt::toString(SmallVectorImpl<cha
> // They want to print the signed version and it is a negative value
> // Flip the bits and add one to turn it into the equivalent positive
> // value and put a '-' in the result.
> - Tmp.flipAllBits();
> - ++Tmp;
> + Tmp.negate();
> Str.push_back('-');
> }
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170515/4a50d4e8/attachment.html>
More information about the llvm-commits
mailing list