aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/ADT/APIntTest.cpp
AgeCommit message (Collapse)AuthorFilesLines
2016-04-16Remove some unneeded headers and replace some headers with forward class ↵Mehdi Amini1-1/+1
declarations (NFC) Differential Revision: http://reviews.llvm.org/D19154 Patch by Eugene Kosov <claprix@yandex.ru> From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 266524
2016-04-12APInt: Add overload of isMaskMatt Arsenault1-0/+17
This mimics the version in MathExtras.h which isn't testing for a specific mask size. llvm-svn: 266101
2016-03-21Implement constant folding for bitreverseMatt Arsenault1-0/+42
llvm-svn: 263945
2015-09-04Fix APInt value initialization to give a zero value as any sane integer typeRichard Smith1-0/+7
should, rather than giving a broken value that doesn't even zero/sign-extend properly. llvm-svn: 246836
2015-07-01Change APInt comparison with uint64_t.Pawel Bylica1-0/+127
Summary: This patch changes the way APInt is compared with a value of type uint64_t. Before the uint64_t value was truncated to the size of APInt before comparison. Now the comparison takes into account full 64-bit precision. Test Plan: Unit tests added. No regressions. Self-hosted check-all done as well. Reviewers: chandlerc, dexonsmith Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D10655 llvm-svn: 241204
2015-06-25Add missing <array> include.Pawel Bylica1-0/+1
llvm-svn: 240629
2015-06-25Express APInt::{s,u}{l,g}e(uint64_t) in terms of ↵Pawel Bylica1-0/+38
APInt::{s,u}{l,g}t(uint64_t). NFC. This is preparation for http://reviews.llvm.org/D10655: Change APInt comparison with uint64_t. Some unit tests added also. llvm-svn: 240626
2015-06-04[APInt] Remove special case for i1.Benjamin Kramer1-0/+6
Add a unit test. llvm-svn: 239062
2015-04-24Fix APInt long division algorithmPawel Bylica1-182/+66
Summary: This patch fixes step D4 of Knuth's division algorithm implementation. Negative sign of the step result was not always detected due to incorrect "borrow" handling. Test Plan: Unit test that reveals the bug included. Reviewers: chandlerc, yaron.keren Reviewed By: yaron.keren Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D9196 llvm-svn: 235699
2015-04-22Another test to exercise APInt divide step D6.Yaron Keren1-0/+13
This is divrem_big7 since divrem_big6 is used in Pawel upcoming patch. llvm-svn: 235536
2015-03-26Fix rare case where APInt divide algorithm applied un-needed transformation.Yaron Keren1-0/+200
APInt uses Knuth's D algorithm for long division. In rare cases the implementation applied a transformation that was not needed. Added unit tests for long division. KnuthDiv() procedure is fully covered. There is a case in APInt::divide() that I believe is never used (marked with a comment) as all users of divide() handle trivial cases earlier. Patch by Pawel Bylica! http://reviews.llvm.org/D8448 llvm-svn: 233312
2015-03-25[APInt] Add an isSplat helper and use it in some places.Benjamin Kramer1-0/+40
To complement getSplat. This is more general than the binary decomposition method as it also handles non-pow2 splat sizes. llvm-svn: 233195
2015-01-14Disable -Wunknown-pragmas in a test so that Clang without -Wself-move will notRichard Trieu1-0/+4
complain that the flag doesn't exist. llvm-svn: 225931
2015-01-13Silence warnings about unknown pragmas for compilers that are not Clang. NFC.Aaron Ballman1-1/+4
llvm-svn: 225788
2015-01-13Disable a warning for self move since the test is checking for this behavior.Richard Trieu1-0/+4
llvm-svn: 225754
2014-08-27Simplify creation of a bunch of ArrayRefs by using None, makeArrayRef or ↵Craig Topper1-4/+4
just letting them be implicitly created. llvm-svn: 216525
2014-08-12Fix -Wsign-compare warningsDavid Blaikie1-3/+3
llvm-svn: 215483
2014-08-12APInt: Make self-move-assignment a no-op to fix stage3 clang-clReid Kleckner1-0/+17
It's not clear what the semantics of a self-move should be. The consensus appears to be that a self-move should leave the object in a moved-from state, which is what our existing move assignment operator does. However, the MSVC 2013 STL will perform self-moves in some cases. In particular, when doing a std::stable_sort of an already sorted APSInt vector of an appropriate size, one of the merge steps will self-move half of the elements. We don't notice this when building with MSVC, because MSVC will not synthesize the move assignment operator for APSInt. Presumably MSVC does this because APInt, the base class, has user-declared special members that implicitly delete move special members. Instead, MSVC selects the copy-assign operator, which defends against self-assignment. Clang, on the other hand, selects the move-assign operator, and we get garbage APInts. llvm-svn: 215478
2014-01-31Clean up whitespaceDuncan P. N. Exon Smith1-2/+2
llvm-svn: 200579
2014-01-19[APInt] Fix nearestLogBase2 to return correct answers for very large APInt ↵Michael Gottesman1-0/+11
and APInt with a bitwidth of 1. I also improved the comments, added some more tests, etc. llvm-svn: 199610
2014-01-19[APInt] Fixed bug where APInt(UINT32_MAX, 0) would blow up when being ↵Michael Gottesman1-0/+8
constructed. This was due to arithmetic overflow in the getNumBits() computation. Now we cast BitWidth to a uint64_t so that does not occur during the computation. After the computation is complete, the uint64_t is truncated when the function returns. I know that this is not something that is likely to happen, but it *IS* a valid input and we should not blow up. llvm-svn: 199609
2013-12-13Remove APInt::extractBit since it is already implemented via operator[]. ↵Michael Gottesman1-3/+3
Change tests for extractBit to test operator[]. llvm-svn: 197277
2013-12-13[block-freq] Add the method APInt::nearestLogBase2().Michael Gottesman1-4/+40
llvm-svn: 197272
2013-12-13[block-freq] Add the APInt method extractBit.Michael Gottesman1-0/+26
llvm-svn: 197271
2013-05-28[APInt] Implement tcDecrement as a counterpart to tcIncrement. This is for ↵Michael Gottesman1-0/+65
use in APFloat IEEE-754R 2008 nextUp/nextDown function. rdar://13852078 llvm-svn: 182801
2013-02-20Move the SplatByte helper to APInt and generalize it a bit.Benjamin Kramer1-0/+10
llvm-svn: 175621
2013-02-07ADT: Correct APInt::getActiveWords for zero valuesMeador Inge1-0/+8
PR15138 was opened because of a segfault in the Bitcode writer. The actual issue ended up being a bug in APInt where calls to APInt::getActiveWords returns a bogus value when the APInt value is 0. This patch fixes the problem by ensuring that getActiveWords returns 1 for 0 valued APInts. llvm-svn: 174641
2012-12-04Sort the #include lines for unittest/...Chandler Carruth1-2/+2
llvm-svn: 169250
2012-05-22fix the quotient returned by sdivrem() for the case when LHS is negative and ↵Nuno Lopes1-0/+28
RHS is positive based on a patch by Preston Briggs, with some modifications llvm-svn: 157231
2012-02-07Add a unittest for rotating a really big APInt.Benjamin Kramer1-0/+4
Clang miscompiles it under certain circumstances, and it's a good exercise for APInt. llvm-svn: 149986
2011-12-22Some unittests for APInt rotates; patch by Cameron McInally.Eli Friedman1-0/+32
llvm-svn: 147186
2011-12-16APInt: update asserts for base-36Dylan Noblesmith1-3/+3
Hexatridecimal was added in r139695. And fix the unittest that now triggers the assert. llvm-svn: 146754
2011-10-07Fix APInt::operator*= so that it computes the correct result for large ↵Eli Friedman1-0/+9
integers where there is unsigned overflow. Fix APFloat::toString so that it doesn't depend on the incorrect behavior in common cases (and computes the correct result in some rare cases). Fixes PR11086. llvm-svn: 141441
2011-09-14Add APInt support for converting to/from hexatridecimal stringsDouglas Gregor1-1/+24
llvm-svn: 139695
2011-07-18Add APInt(numBits, ArrayRef<uint64_t> bigVal) constructor to prevent future ↵Jeffrey Yasskin1-0/+4
ambiguity errors like the one corrected by r135261. Migrate all LLVM callers of the old constructor to the new one. llvm-svn: 135431
2011-06-15unittests: add test for APInt::toString()Dylan Noblesmith1-0/+46
Follow up to r133032. llvm-svn: 133107
2011-03-17Add an argument to APInt's magic udiv calculation to specify the number of ↵Benjamin Kramer1-0/+2
bits that are known zero in the divided number. This will come in handy soon. llvm-svn: 127828
2011-02-21The signed version of our "magic number" computation for the integer ↵Cameron Zwarich1-0/+18
approximation of a constant had a minor typo introduced when copying it from the book, which caused it to favor negative approximations over positive approximations in many cases. Positive approximations require fewer operations beyond the multiplication. In the case of division by 3, we still generate code that is a single instruction larger than GCC's code. llvm-svn: 126097
2010-12-01PR5207: Rename overloaded APInt methods set(), clear(), flip() toJay Foad1-1/+1
setAllBits(), setBit(unsigned), etc. llvm-svn: 120564
2010-09-14Attempt to unbreak the FreeBSD buildbot by XFAILing a unit test that seems to beJakob Stoklund Olesen1-0/+5
miscompiled by the system gcc-4.2.1 The test remains enabled for the second-stage test. llvm-svn: 113824
2010-07-13Switch from EXPECT_EQ({true,false, ...) to the more canonicalChandler Carruth1-2/+2
EXPECT_{TRUE,FALSE}(...) macros. This also prevents suprious warnings about bool-to-pointer conversion that occurs withit EXPECT_EQ. llvm-svn: 108248
2010-03-17Fix death tests in -Asserts builds.Jeffrey Yasskin1-0/+2
llvm-svn: 98701
2009-10-13Pacify the compiler (signed with unsigned comparison) by makingDuncan Sands1-6/+6
these constants unsigned. llvm-svn: 83962
2009-10-13Add a ceilLogBase2 function to APInt.Dan Gohman1-0/+11
llvm-svn: 83932
2009-09-18Fix a few more conversion warnings on 4.0Daniel Dunbar1-5/+5
llvm-svn: 82232
2009-09-17Another try at fixing compile warnings on 4.0Daniel Dunbar1-18/+18
llvm-svn: 82148
2009-09-14Attempt to fix some 4.0.0 build warnings.Daniel Dunbar1-23/+23
llvm-svn: 81752
2009-09-06Simplify, now that gtest supports raw_ostream directly.Daniel Dunbar1-8/+0
llvm-svn: 81102
2009-08-24split raw_os_ostream out to its own header and implementation file. ThisChris Lattner1-1/+1
means that raw_ostream no longer has to #include <iosfwd>. Nothing in llvm should use raw_os_ostream.h, but llvm-gcc and some unit tests do. llvm-svn: 79886
2009-08-24Unbreak unit tests.Daniel Dunbar1-0/+7
llvm-svn: 79879