llvm/unittests/ADT
Craig Topper 47c969db7e [APInt] Add support for dividing or remainder by a uint64_t or int64_t.
Summary:
This patch adds udiv/sdiv/urem/srem/udivrem/sdivrem methods that can divide by a uint64_t. This makes division consistent with all the other arithmetic operations.

This modifies the interface of the divide helper method to work on raw arrays instead of APInts. This way we can pass the uint64_t in for the RHS without wrapping it in an APInt. This required moving all the Quotient and Remainder allocation handling up to the callers. For udiv/urem this was as simple as just creating the Quotient/Remainder with the right size when they were declared. For udivrem we have to rely on reallocate not changing the contents of the variable LHS or RHS is aliased with the Quotient or Remainder APInts. We also have to zero the upper bits of Remainder and Quotient that divide doesn't write to if lhsWords/rhsWords is smaller than the width.

I've update the toString method to use the new udivrem.

Reviewers: hans, dblaikie, RKSimon

Reviewed By: RKSimon

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D33310

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303431 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-19 16:43:54 +00:00
..
APFloatTest.cpp [AsmWriter/APFloat] FP constant printing: Avoid usage of locale dependent snprinf 2017-04-21 02:52:17 +00:00
APIntTest.cpp [APInt] Add support for dividing or remainder by a uint64_t or int64_t. 2017-05-19 16:43:54 +00:00
APSIntTest.cpp ADTTests: merge #ifdef checks from r240436. 2015-06-24 17:05:04 +00:00
ArrayRefTest.cpp Add some searching functions for ArrayRef<T>. 2016-11-22 23:22:19 +00:00
BitmaskEnumTest.cpp [ADT] Add LLVM_MARK_AS_BITMASK_ENUM, used to enable bitwise operations on enums without static_cast. 2016-07-13 18:23:16 +00:00
BitVectorTest.cpp [BitVector] Add find_[first,last]_[set,unset]_in. 2017-05-17 15:49:45 +00:00
BreadthFirstIteratorTest.cpp [ADT] Add a generic breadth-first-search graph iterator. 2017-04-06 17:03:04 +00:00
BumpPtrListTest.cpp ADT: Add AllocatorList, and use it for yaml::Token 2016-09-11 22:40:40 +00:00
CMakeLists.txt [ADT] Add a generic breadth-first-search graph iterator. 2017-04-06 17:03:04 +00:00
DAGDeltaAlgorithmTest.cpp Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
DeltaAlgorithmTest.cpp Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
DenseMapTest.cpp Add support for DenseMap/DenseSet count and find using const pointers 2017-03-10 00:25:26 +00:00
DenseSetTest.cpp Add support for DenseMap/DenseSet count and find using const pointers 2017-03-10 00:25:26 +00:00
DepthFirstIteratorTest.cpp Modify df_iterator to support post-order actions 2016-10-05 21:36:16 +00:00
FoldingSet.cpp PR30711: Fix incorrect profiling of 'long long' in FoldingSet, then use it to 2016-10-16 17:49:09 +00:00
FunctionRefTest.cpp Ensure function_refs are copyable even from non-const references 2014-11-12 02:06:08 +00:00
HashingTest.cpp Remove no-op dtor so that use of the implicit copy ctor/assignment operator are not deprecated. 2015-03-03 19:52:59 +00:00
IListBaseTest.cpp ADT: Add sentinel tracking and custom tags to ilists 2016-09-11 16:20:53 +00:00
IListIteratorTest.cpp Fix some missing negations in the traits checking from r294349 2017-02-07 21:31:03 +00:00
IListNodeBaseTest.cpp ADT: Add sentinel tracking and custom tags to ilists 2016-09-11 16:20:53 +00:00
IListNodeTest.cpp ADT: Add sentinel tracking and custom tags to ilists 2016-09-11 16:20:53 +00:00
IListSentinelTest.cpp Turn LLVM_ENABLE_ABI_BREAKING_CHECKS into a 0/1 definition like 2016-09-30 19:52:27 +00:00
IListTest.cpp ADT: Never allocate nodes in iplist<> and ilist<> 2016-09-11 23:43:43 +00:00
ImmutableMapTest.cpp [C++11] Use 'nullptr'. 2014-06-08 22:29:17 +00:00
ImmutableSetTest.cpp Fix warnings in ImmutableSetTest and SequenceTest. 2016-07-17 18:10:30 +00:00
IntEqClassesTest.cpp Add ADT/IntEqClasses.h as a light-weight implementation of EquivalenceClasses.h. 2010-12-21 00:04:46 +00:00
IntervalMapTest.cpp [ADT] IntervalMap: fix setStart and setStop 2016-11-03 19:14:46 +00:00
IntrusiveRefCntPtrTest.cpp [ADT] Attempt to fix GCC warning in IntrusiveRefCntPtrTest. 2017-01-04 22:49:55 +00:00
IteratorTest.cpp ADT: Add range helpers for pointer_ and pointee_iterator 2017-03-27 12:56:12 +00:00
MakeUniqueTest.cpp [C++11] Add llvm::make_unique, according to N3656. 2014-03-09 11:20:17 +00:00
MapVectorTest.cpp [ADT] Let MapVector handle non-copyable values. 2016-10-10 16:25:59 +00:00
OptionalTest.cpp [ADT] Add relation operators for Optional 2016-08-11 20:10:15 +00:00
PackedVectorTest.cpp Simplify PackedVector by removing user-defined special members that aren't any different than the defaults 2015-08-12 23:26:12 +00:00
PointerEmbeddedIntTest.cpp [ADT] Fix PointerEmbeddedInt when the underlying type is uintptr_t. 2016-02-18 21:00:08 +00:00
PointerIntPairTest.cpp Fix PointerIntPair so that it can use an enum class as its integer template argument. 2016-01-13 05:59:13 +00:00
PointerSumTypeTest.cpp [ADT] Add a sum type abstraction for pointer-like types. 2016-01-10 08:48:23 +00:00
PointerUnionTest.cpp [C++11] Use 'nullptr'. 2014-06-08 22:29:17 +00:00
PostOrderIteratorTest.cpp [ADT] Change PostOrderIterator to use NodeRef. NFC. 2016-08-15 21:52:54 +00:00
PriorityWorklistTest.cpp [ADT] Speculative attempt to fix build bot issues with r290952. 2017-01-04 11:40:18 +00:00
RangeAdapterTest.cpp Reapply "ADT: Remove references in has_rbegin for reverse()" 2016-08-18 17:15:25 +00:00
ReverseIterationTest.cpp [ADT] Fix for compilation error when operator++(int) (post-increment function) of SmallPtrSetIterator is used. 2016-12-30 12:34:36 +00:00
SCCIteratorTest.cpp [ADT] Actually mutate the iterator VisitStack.back().second, not its copy. 2016-08-22 21:59:26 +00:00
ScopeExitTest.cpp [ADT] Add make_scope_exit(). 2016-08-10 17:52:09 +00:00
SequenceTest.cpp Fix warnings in ImmutableSetTest and SequenceTest. 2016-07-17 18:10:30 +00:00
SetVectorTest.cpp [SetVector] Add erase() method 2016-03-25 19:28:08 +00:00
SimpleIListTest.cpp [ilist_node] Add a getReverseIterator() method and a unittest for it. 2016-11-02 00:59:58 +00:00
SmallPtrSetTest.cpp ADT: Fix SmallPtrSet iterators in reverse mode 2017-03-07 21:56:32 +00:00
SmallStringTest.cpp Revert "Fix Clang-tidy modernize-deprecated-headers warnings in remaining files; other minor fixes." 2016-04-05 20:45:04 +00:00
SmallVectorTest.cpp Revert "Fix Clang-tidy modernize-deprecated-headers warnings in remaining files; other minor fixes." 2016-04-05 20:45:04 +00:00
SparseBitVectorTest.cpp [ADT] Add SparseBitVector::find_last(). 2017-01-17 23:09:21 +00:00
SparseMultiSetTest.cpp ADT/SparseMultiSetTest.cpp: Try to appease cygwin-clang on stage2, take two. [-Wsign-compare] 2013-01-22 10:39:31 +00:00
SparseSetTest.cpp [ADT] Add a pop_back_val method to the SparseSet container. 2016-03-14 18:10:41 +00:00
STLExtrasTest.cpp Fix sign compare warning in unit test by using an explicit unsigned literal suffix 2017-03-13 21:46:12 +00:00
StringExtrasTest.cpp [StringExtras] Add a fromHex to complement toHex. 2017-04-25 20:21:35 +00:00
StringMapTest.cpp Spelling mistakes in comments. NFCI. 2017-03-31 10:59:37 +00:00
StringRefTest.cpp Add more test cases for StringRef::edit_distance 2017-04-14 08:34:32 +00:00
StringSwitchTest.cpp [Support] Add case-insensitive versions of StringSwitch members. 2016-10-04 19:33:13 +00:00
TestGraph.h s/static inline/static/ for headers I have changed in r279475. NFC. 2016-08-31 16:48:13 +00:00
TinyPtrVectorTest.cpp Remove uses of deprecated std::random_shuffle in the LLVM code base. Reviewed as https://reviews.llvm.org/D29780. 2017-02-16 14:37:03 +00:00
TripleTest.cpp Add SUSE vendor 2017-04-24 11:18:29 +00:00
TwineTest.cpp Fix compilation. 2016-12-17 01:31:46 +00:00
VariadicFunctionTest.cpp As Doug pointed out (and I really should know), it is perfectly easy to 2011-12-17 10:20:15 +00:00