| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
This mimics the version in MathExtras.h which isn't testing for a
specific mask size.
llvm-svn: 266101
|
|
|
|
| |
llvm-svn: 263945
|
|
|
|
|
|
|
| |
should, rather than giving a broken value that doesn't even zero/sign-extend
properly.
llvm-svn: 246836
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 240629
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
Add a unit test.
llvm-svn: 239062
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
This is divrem_big7 since divrem_big6 is used in Pawel upcoming patch.
llvm-svn: 235536
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
To complement getSplat. This is more general than the binary
decomposition method as it also handles non-pow2 splat sizes.
llvm-svn: 233195
|
|
|
|
|
|
| |
complain that the flag doesn't exist.
llvm-svn: 225931
|
|
|
|
| |
llvm-svn: 225788
|
|
|
|
| |
llvm-svn: 225754
|
|
|
|
|
|
| |
just letting them be implicitly created.
llvm-svn: 216525
|
|
|
|
| |
llvm-svn: 215483
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 200579
|
|
|
|
|
|
|
|
| |
and APInt with a bitwidth of 1.
I also improved the comments, added some more tests, etc.
llvm-svn: 199610
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
Change tests for extractBit to test operator[].
llvm-svn: 197277
|
|
|
|
| |
llvm-svn: 197272
|
|
|
|
| |
llvm-svn: 197271
|
|
|
|
|
|
|
|
| |
use in APFloat IEEE-754R 2008 nextUp/nextDown function.
rdar://13852078
llvm-svn: 182801
|
|
|
|
| |
llvm-svn: 175621
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 169250
|
|
|
|
|
|
|
|
| |
RHS is positive
based on a patch by Preston Briggs, with some modifications
llvm-svn: 157231
|
|
|
|
|
|
| |
Clang miscompiles it under certain circumstances, and it's a good exercise for APInt.
llvm-svn: 149986
|
|
|
|
| |
llvm-svn: 147186
|
|
|
|
|
|
|
|
| |
Hexatridecimal was added in r139695.
And fix the unittest that now triggers the assert.
llvm-svn: 146754
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 139695
|
|
|
|
|
|
|
|
|
| |
ambiguity
errors like the one corrected by r135261. Migrate all LLVM callers of the old
constructor to the new one.
llvm-svn: 135431
|
|
|
|
|
|
| |
Follow up to r133032.
llvm-svn: 133107
|
|
|
|
|
|
|
|
| |
bits that are known zero in the divided number.
This will come in handy soon.
llvm-svn: 127828
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
setAllBits(), setBit(unsigned), etc.
llvm-svn: 120564
|
|
|
|
|
|
|
|
| |
miscompiled by the system gcc-4.2.1
The test remains enabled for the second-stage test.
llvm-svn: 113824
|
|
|
|
|
|
|
| |
EXPECT_{TRUE,FALSE}(...) macros. This also prevents suprious warnings about
bool-to-pointer conversion that occurs withit EXPECT_EQ.
llvm-svn: 108248
|
|
|
|
| |
llvm-svn: 98701
|
|
|
|
|
|
| |
these constants unsigned.
llvm-svn: 83962
|
|
|
|
| |
llvm-svn: 83932
|
|
|
|
| |
llvm-svn: 82232
|
|
|
|
| |
llvm-svn: 82148
|
|
|
|
| |
llvm-svn: 81752
|
|
|
|
| |
llvm-svn: 81102
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 79879
|