Lines Matching refs:APInt

33   APInt N(Bits, 0);  in EnumerateAPInts()
48 ConstantRange CR(APInt(Bits, Lo), APInt(Bits, Hi)); in EnumerateConstantRanges()
66 APInt N = CR.getLower(); in ForeachNumInConstantRange()
106 testing::AssertionResult rangeContains(const ConstantRange &CR, const APInt &N, in rangeContains()
128 EXPECT_TRUE(rangeContains(CR, APInt(BitWidth, Elem), Inputs)); in TestRange()
163 ConstantRange::getNonEmpty(APInt(BitWidth, Elem), in TestRange()
164 APInt(BitWidth, PrevElem) + 1); in TestRange()
178 using UnaryIntFn = llvm::function_ref<Optional<APInt>(const APInt &)>;
185 ForeachNumInConstantRange(CR, [&](const APInt &N) { in TestUnaryOpExhaustive()
186 if (Optional<APInt> ResultN = IntFn(N)) in TestUnaryOpExhaustive()
195 using BinaryIntFn = llvm::function_ref<Optional<APInt>(const APInt &,
196 const APInt &)>;
234 ForeachNumInConstantRange(CR1, [&](const APInt &N1) { in TestBinaryOpExhaustive()
235 ForeachNumInConstantRange(CR2, [&](const APInt &N2) { in TestBinaryOpExhaustive()
236 if (Optional<APInt> ResultN = IntFn(N1, N2)) in TestBinaryOpExhaustive()
247 ConstantRange ConstantRangeTest::One(APInt(16, 0xa));
248 ConstantRange ConstantRangeTest::Some(APInt(16, 0xa), APInt(16, 0xaaa));
249 ConstantRange ConstantRangeTest::Wrap(APInt(16, 0xaaa), APInt(16, 0xa));
256 EXPECT_TRUE(Full.contains(APInt(16, 0x0))); in TEST_F()
257 EXPECT_TRUE(Full.contains(APInt(16, 0x9))); in TEST_F()
258 EXPECT_TRUE(Full.contains(APInt(16, 0xa))); in TEST_F()
259 EXPECT_TRUE(Full.contains(APInt(16, 0xaa9))); in TEST_F()
260 EXPECT_TRUE(Full.contains(APInt(16, 0xaaa))); in TEST_F()
266 EXPECT_FALSE(Empty.contains(APInt(16, 0x0))); in TEST_F()
267 EXPECT_FALSE(Empty.contains(APInt(16, 0x9))); in TEST_F()
268 EXPECT_FALSE(Empty.contains(APInt(16, 0xa))); in TEST_F()
269 EXPECT_FALSE(Empty.contains(APInt(16, 0xaa9))); in TEST_F()
270 EXPECT_FALSE(Empty.contains(APInt(16, 0xaaa))); in TEST_F()
275 EXPECT_FALSE(One.contains(APInt(16, 0x0))); in TEST_F()
276 EXPECT_FALSE(One.contains(APInt(16, 0x9))); in TEST_F()
277 EXPECT_TRUE(One.contains(APInt(16, 0xa))); in TEST_F()
278 EXPECT_FALSE(One.contains(APInt(16, 0xaa9))); in TEST_F()
279 EXPECT_FALSE(One.contains(APInt(16, 0xaaa))); in TEST_F()
280 EXPECT_FALSE(One.inverse().contains(APInt(16, 0xa))); in TEST_F()
285 EXPECT_FALSE(Some.contains(APInt(16, 0x0))); in TEST_F()
286 EXPECT_FALSE(Some.contains(APInt(16, 0x9))); in TEST_F()
287 EXPECT_TRUE(Some.contains(APInt(16, 0xa))); in TEST_F()
288 EXPECT_TRUE(Some.contains(APInt(16, 0xaa9))); in TEST_F()
289 EXPECT_FALSE(Some.contains(APInt(16, 0xaaa))); in TEST_F()
294 EXPECT_TRUE(Wrap.contains(APInt(16, 0x0))); in TEST_F()
295 EXPECT_TRUE(Wrap.contains(APInt(16, 0x9))); in TEST_F()
296 EXPECT_FALSE(Wrap.contains(APInt(16, 0xa))); in TEST_F()
297 EXPECT_FALSE(Wrap.contains(APInt(16, 0xaa9))); in TEST_F()
298 EXPECT_TRUE(Wrap.contains(APInt(16, 0xaaa))); in TEST_F()
320 EXPECT_EQ(Full.getSingleElement(), static_cast<APInt *>(nullptr)); in TEST_F()
321 EXPECT_EQ(Empty.getSingleElement(), static_cast<APInt *>(nullptr)); in TEST_F()
322 EXPECT_EQ(Full.getSingleMissingElement(), static_cast<APInt *>(nullptr)); in TEST_F()
323 EXPECT_EQ(Empty.getSingleMissingElement(), static_cast<APInt *>(nullptr)); in TEST_F()
325 EXPECT_EQ(*One.getSingleElement(), APInt(16, 0xa)); in TEST_F()
326 EXPECT_EQ(Some.getSingleElement(), static_cast<APInt *>(nullptr)); in TEST_F()
327 EXPECT_EQ(Wrap.getSingleElement(), static_cast<APInt *>(nullptr)); in TEST_F()
329 EXPECT_EQ(One.getSingleMissingElement(), static_cast<APInt *>(nullptr)); in TEST_F()
330 EXPECT_EQ(Some.getSingleMissingElement(), static_cast<APInt *>(nullptr)); in TEST_F()
343 EXPECT_EQ(Full.getUnsignedMax(), APInt(16, UINT16_MAX)); in TEST_F()
344 EXPECT_EQ(One.getUnsignedMax(), APInt(16, 0xa)); in TEST_F()
345 EXPECT_EQ(Some.getUnsignedMax(), APInt(16, 0xaa9)); in TEST_F()
346 EXPECT_EQ(Wrap.getUnsignedMax(), APInt(16, UINT16_MAX)); in TEST_F()
348 EXPECT_EQ(Full.getUnsignedMin(), APInt(16, 0)); in TEST_F()
349 EXPECT_EQ(One.getUnsignedMin(), APInt(16, 0xa)); in TEST_F()
350 EXPECT_EQ(Some.getUnsignedMin(), APInt(16, 0xa)); in TEST_F()
351 EXPECT_EQ(Wrap.getUnsignedMin(), APInt(16, 0)); in TEST_F()
353 EXPECT_EQ(Full.getSignedMax(), APInt(16, INT16_MAX)); in TEST_F()
354 EXPECT_EQ(One.getSignedMax(), APInt(16, 0xa)); in TEST_F()
355 EXPECT_EQ(Some.getSignedMax(), APInt(16, 0xaa9)); in TEST_F()
356 EXPECT_EQ(Wrap.getSignedMax(), APInt(16, INT16_MAX)); in TEST_F()
358 EXPECT_EQ(Full.getSignedMin(), APInt(16, (uint64_t)INT16_MIN)); in TEST_F()
359 EXPECT_EQ(One.getSignedMin(), APInt(16, 0xa)); in TEST_F()
360 EXPECT_EQ(Some.getSignedMin(), APInt(16, 0xa)); in TEST_F()
361 EXPECT_EQ(Wrap.getSignedMin(), APInt(16, (uint64_t)INT16_MIN)); in TEST_F()
364 EXPECT_EQ(ConstantRange(APInt(4, 7), APInt(4, 0)).getSignedMax(), in TEST_F()
365 APInt(4, 7)); in TEST_F()
375 EXPECT_FALSE(ConstantRange(APInt(8, 127), APInt(8, 128)).isSignWrappedSet()); in TEST_F()
376 EXPECT_TRUE(ConstantRange(APInt(8, 127), APInt(8, 129)).isSignWrappedSet()); in TEST_F()
377 EXPECT_FALSE(ConstantRange(APInt(8, 128), APInt(8, 129)).isSignWrappedSet()); in TEST_F()
378 EXPECT_TRUE(ConstantRange(APInt(8, 10), APInt(8, 9)).isSignWrappedSet()); in TEST_F()
379 EXPECT_TRUE(ConstantRange(APInt(8, 10), APInt(8, 250)).isSignWrappedSet()); in TEST_F()
380 EXPECT_FALSE(ConstantRange(APInt(8, 250), APInt(8, 10)).isSignWrappedSet()); in TEST_F()
381 EXPECT_FALSE(ConstantRange(APInt(8, 250), APInt(8, 251)).isSignWrappedSet()); in TEST_F()
398 ConstantRange CR1(APInt(8, 42), APInt::getMinValue(8)); in TEST_F()
402 ConstantRange CR2(APInt(8, 42), APInt::getSignedMinValue(8)); in TEST_F()
421 ConstantRange TwoFive(APInt(3, 2), APInt(3, 5)); in TEST_F()
422 EXPECT_EQ(TwoFive.truncate(2), ConstantRange(APInt(2, 2), APInt(2, 1))); in TEST_F()
425 ConstantRange TwoSix(APInt(3, 2), APInt(3, 6)); in TEST_F()
429 ConstantRange FiveSeven(APInt(3, 5), APInt(3, 7)); in TEST_F()
430 EXPECT_EQ(FiveSeven.truncate(2), ConstantRange(APInt(2, 1), APInt(2, 3))); in TEST_F()
433 ConstantRange SevenOne(APInt(3, 7), APInt(3, 1)); in TEST_F()
434 EXPECT_EQ(SevenOne.truncate(2), ConstantRange(APInt(2, 3), APInt(2, 1))); in TEST_F()
443 EXPECT_EQ(ZFull, ConstantRange(APInt(20, 0), APInt(20, 0x10000))); in TEST_F()
449 EXPECT_EQ(ZWrap, ConstantRange(APInt(20, 0), APInt(20, 0x10000))); in TEST_F()
452 ConstantRange FiveZero(APInt(3, 5), APInt(3, 0)); in TEST_F()
453 EXPECT_EQ(FiveZero.zeroExtend(7), ConstantRange(APInt(7, 5), APInt(7, 8))); in TEST_F()
462 EXPECT_EQ(SFull, ConstantRange(APInt(20, (uint64_t)INT16_MIN, true), in TEST_F()
463 APInt(20, INT16_MAX + 1, true))); in TEST_F()
469 EXPECT_EQ(SWrap, ConstantRange(APInt(20, (uint64_t)INT16_MIN, true), in TEST_F()
470 APInt(20, INT16_MAX + 1, true))); in TEST_F()
472 EXPECT_EQ(ConstantRange(APInt(8, 120), APInt(8, 140)).signExtend(16), in TEST_F()
473 ConstantRange(APInt(16, -128), APInt(16, 128))); in TEST_F()
475 EXPECT_EQ(ConstantRange(APInt(16, 0x0200), APInt(16, 0x8000)).signExtend(19), in TEST_F()
476 ConstantRange(APInt(19, 0x0200), APInt(19, 0x8000))); in TEST_F()
497 ConstantRange LHS(APInt(16, 4), APInt(16, 2)); in TEST_F()
498 ConstantRange RHS(APInt(16, 6), APInt(16, 5)); in TEST_F()
502 LHS = ConstantRange(APInt(32, -2147483646), APInt(32, 3)); in TEST_F()
503 RHS = ConstantRange(APInt(32, 2), APInt(32, 2147483646)); in TEST_F()
504 EXPECT_EQ(LHS.intersectWith(RHS), ConstantRange(APInt(32, 2))); in TEST_F()
507 LHS = ConstantRange(APInt(32, 2), APInt(32, 0)); in TEST_F()
508 RHS = ConstantRange(APInt(32, 4), APInt(32, 3)); in TEST_F()
509 EXPECT_EQ(LHS.intersectWith(RHS), ConstantRange(APInt(32, 2), APInt(32, 0))); in TEST_F()
512 LHS = ConstantRange(APInt(32, 2), APInt(32, 0)); in TEST_F()
513 RHS = ConstantRange(APInt(32, 4), APInt(32, 2)); in TEST_F()
514 EXPECT_EQ(LHS.intersectWith(RHS), ConstantRange(APInt(32, 4), APInt(32, 0))); in TEST_F()
517 LHS = ConstantRange(APInt(32, 4), APInt(32, 2)); in TEST_F()
518 RHS = ConstantRange(APInt(32, 5), APInt(32, 1)); in TEST_F()
519 EXPECT_EQ(LHS.intersectWith(RHS), ConstantRange(APInt(32, 5), APInt(32, 1))); in TEST_F()
522 LHS = ConstantRange(APInt(32, 2), APInt(32, 0)); in TEST_F()
523 RHS = ConstantRange(APInt(32, 7), APInt(32, 4)); in TEST_F()
524 EXPECT_EQ(LHS.intersectWith(RHS), ConstantRange(APInt(32, 7), APInt(32, 4))); in TEST_F()
527 LHS = ConstantRange(APInt(32, 4), APInt(32, 2)); in TEST_F()
528 RHS = ConstantRange(APInt(32, 1), APInt(32, 0)); in TEST_F()
529 EXPECT_EQ(LHS.intersectWith(RHS), ConstantRange(APInt(32, 4), APInt(32, 2))); in TEST_F()
532 LHS = ConstantRange(APInt(32, 15), APInt(32, 0)); in TEST_F()
533 RHS = ConstantRange(APInt(32, 7), APInt(32, 6)); in TEST_F()
534 EXPECT_EQ(LHS.intersectWith(RHS), ConstantRange(APInt(32, 15), APInt(32, 0))); in TEST_F()
543 APInt Num(Bits, 0); in testBinarySetOperationExhaustive()
575 [](const ConstantRange &CR1, const ConstantRange &CR2, const APInt &N) { in TEST_F()
589 [](const ConstantRange &CR1, const ConstantRange &CR2, const APInt &N) { in TEST_F()
596 ConstantRange(APInt(16, 0xaaa), APInt(16, 0xb))); in TEST_F()
603 EXPECT_EQ(ConstantRange(APInt(16, 14), APInt(16, 1)).unionWith( in TEST_F()
604 ConstantRange(APInt(16, 0), APInt(16, 8))), in TEST_F()
605 ConstantRange(APInt(16, 14), APInt(16, 8))); in TEST_F()
606 EXPECT_EQ(ConstantRange(APInt(16, 6), APInt(16, 4)).unionWith( in TEST_F()
607 ConstantRange(APInt(16, 4), APInt(16, 0))), in TEST_F()
609 EXPECT_EQ(ConstantRange(APInt(16, 1), APInt(16, 0)).unionWith( in TEST_F()
610 ConstantRange(APInt(16, 2), APInt(16, 1))), in TEST_F()
620 ConstantRange A(APInt(16, 3), APInt(16, 7)); in TEST_F()
621 ConstantRange B(APInt(16, 5), APInt(16, 9)); in TEST_F()
622 ConstantRange C(APInt(16, 3), APInt(16, 5)); in TEST_F()
623 ConstantRange D(APInt(16, 7), APInt(16, 9)); in TEST_F()
624 ConstantRange E(APInt(16, 5), APInt(16, 4)); in TEST_F()
625 ConstantRange F(APInt(16, 7), APInt(16, 3)); in TEST_F()
635 ForeachNumInConstantRange(CR, [&](const APInt &N) { in TEST_F()
662 ForeachNumInConstantRange(CR, [&](const APInt &N) { in TEST_F()
685 EXPECT_EQ(Full.subtract(APInt(16, 4)), Full); in TEST_F()
686 EXPECT_EQ(Empty.subtract(APInt(16, 4)), Empty); in TEST_F()
687 EXPECT_EQ(Some.subtract(APInt(16, 4)), in TEST_F()
688 ConstantRange(APInt(16, 0x6), APInt(16, 0xaa6))); in TEST_F()
689 EXPECT_EQ(Wrap.subtract(APInt(16, 4)), in TEST_F()
690 ConstantRange(APInt(16, 0xaa6), APInt(16, 0x6))); in TEST_F()
691 EXPECT_EQ(One.subtract(APInt(16, 4)), in TEST_F()
692 ConstantRange(APInt(16, 0x6))); in TEST_F()
696 EXPECT_EQ(Full.add(APInt(16, 4)), Full); in TEST_F()
706 EXPECT_EQ(Empty.add(APInt(16, 4)), Empty); in TEST_F()
707 EXPECT_EQ(Some.add(APInt(16, 4)), in TEST_F()
708 ConstantRange(APInt(16, 0xe), APInt(16, 0xaae))); in TEST_F()
709 EXPECT_EQ(Wrap.add(APInt(16, 4)), in TEST_F()
710 ConstantRange(APInt(16, 0xaae), APInt(16, 0xe))); in TEST_F()
711 EXPECT_EQ(One.add(APInt(16, 4)), in TEST_F()
712 ConstantRange(APInt(16, 0xe))); in TEST_F()
718 [](const APInt &N1, const APInt &N2) { in TEST_F()
730 EXPECT_EQ(Full.addWithNoWrap(ConstantRange(APInt(16, 1), APInt(16, 2)), in TEST_F()
732 ConstantRange(APInt(16, INT16_MIN + 1), APInt(16, INT16_MIN))); in TEST_F()
733 EXPECT_EQ(ConstantRange(APInt(16, 1), APInt(16, 2)) in TEST_F()
735 ConstantRange(APInt(16, INT16_MIN + 1), APInt(16, INT16_MIN))); in TEST_F()
736 EXPECT_EQ(Full.addWithNoWrap(ConstantRange(APInt(16, -1), APInt(16, 0)), in TEST_F()
738 ConstantRange(APInt(16, INT16_MIN), APInt(16, INT16_MAX))); in TEST_F()
739 EXPECT_EQ(ConstantRange(APInt(8, 100), APInt(8, 120)) in TEST_F()
740 .addWithNoWrap(ConstantRange(APInt(8, 120), APInt(8, 123)), in TEST_F()
743 EXPECT_EQ(ConstantRange(APInt(8, -120), APInt(8, -100)) in TEST_F()
744 .addWithNoWrap(ConstantRange(APInt(8, -110), APInt(8, -100)), in TEST_F()
747 EXPECT_EQ(ConstantRange(APInt(8, 0), APInt(8, 101)) in TEST_F()
748 .addWithNoWrap(ConstantRange(APInt(8, -128), APInt(8, 28)), in TEST_F()
751 EXPECT_EQ(ConstantRange(APInt(8, 0), APInt(8, 101)) in TEST_F()
752 .addWithNoWrap(ConstantRange(APInt(8, -120), APInt(8, 29)), in TEST_F()
754 ConstantRange(APInt(8, -120), APInt(8, -128))); in TEST_F()
755 EXPECT_EQ(ConstantRange(APInt(8, -50), APInt(8, 50)) in TEST_F()
756 .addWithNoWrap(ConstantRange(APInt(8, 10), APInt(8, 20)), in TEST_F()
758 ConstantRange(APInt(8, -40), APInt(8, 69))); in TEST_F()
759 EXPECT_EQ(ConstantRange(APInt(8, 10), APInt(8, 20)) in TEST_F()
760 .addWithNoWrap(ConstantRange(APInt(8, -50), APInt(8, 50)), in TEST_F()
762 ConstantRange(APInt(8, -40), APInt(8, 69))); in TEST_F()
763 EXPECT_EQ(ConstantRange(APInt(8, 120), APInt(8, -10)) in TEST_F()
764 .addWithNoWrap(ConstantRange(APInt(8, 5), APInt(8, 20)), in TEST_F()
766 ConstantRange(APInt(8, 125), APInt(8, 9))); in TEST_F()
767 EXPECT_EQ(ConstantRange(APInt(8, 5), APInt(8, 20)) in TEST_F()
768 .addWithNoWrap(ConstantRange(APInt(8, 120), APInt(8, -10)), in TEST_F()
770 ConstantRange(APInt(8, 125), APInt(8, 9))); in TEST_F()
776 [](const APInt &N1, const APInt &N2) -> Optional<APInt> { in TEST_F()
778 APInt Res = N1.sadd_ov(N2, IsOverflow); in TEST_F()
791 EXPECT_EQ(Full.addWithNoWrap(ConstantRange(APInt(16, 1), APInt(16, 2)), in TEST_F()
793 ConstantRange(APInt(16, 1), APInt(16, 0))); in TEST_F()
794 EXPECT_EQ(ConstantRange(APInt(16, 1), APInt(16, 2)) in TEST_F()
796 ConstantRange(APInt(16, 1), APInt(16, 0))); in TEST_F()
797 EXPECT_EQ(ConstantRange(APInt(8, 200), APInt(8, 220)) in TEST_F()
798 .addWithNoWrap(ConstantRange(APInt(8, 100), APInt(8, 123)), in TEST_F()
801 EXPECT_EQ(ConstantRange(APInt(8, 0), APInt(8, 101)) in TEST_F()
802 .addWithNoWrap(ConstantRange(APInt(8, 0), APInt(8, 156)), in TEST_F()
805 EXPECT_EQ(ConstantRange(APInt(8, 0), APInt(8, 101)) in TEST_F()
806 .addWithNoWrap(ConstantRange(APInt(8, 10), APInt(8, 29)), in TEST_F()
808 ConstantRange(APInt(8, 10), APInt(8, 129))); in TEST_F()
809 EXPECT_EQ(ConstantRange(APInt(8, 20), APInt(8, 10)) in TEST_F()
810 .addWithNoWrap(ConstantRange(APInt(8, 50), APInt(8, 200)), in TEST_F()
812 ConstantRange(APInt(8, 50), APInt(8, 0))); in TEST_F()
813 EXPECT_EQ(ConstantRange(APInt(8, 10), APInt(8, 20)) in TEST_F()
814 .addWithNoWrap(ConstantRange(APInt(8, 50), APInt(8, 200)), in TEST_F()
816 ConstantRange(APInt(8, 60), APInt(8, -37))); in TEST_F()
817 EXPECT_EQ(ConstantRange(APInt(8, 20), APInt(8, -30)) in TEST_F()
818 .addWithNoWrap(ConstantRange(APInt(8, 5), APInt(8, 20)), in TEST_F()
820 ConstantRange(APInt(8, 25), APInt(8, -11))); in TEST_F()
821 EXPECT_EQ(ConstantRange(APInt(8, 5), APInt(8, 20)) in TEST_F()
822 .addWithNoWrap(ConstantRange(APInt(8, 20), APInt(8, -30)), in TEST_F()
824 ConstantRange(APInt(8, 25), APInt(8, -11))); in TEST_F()
830 [](const APInt &N1, const APInt &N2) -> Optional<APInt> { in TEST_F()
832 APInt Res = N1.uadd_ov(N2, IsOverflow); in TEST_F()
840 EXPECT_EQ(ConstantRange(APInt(8, 50), APInt(8, 100)) in TEST_F()
841 .addWithNoWrap(ConstantRange(APInt(8, 20), APInt(8, 70)), in TEST_F()
843 ConstantRange(APInt(8, 70), APInt(8, -128))); in TEST_F()
844 EXPECT_EQ(ConstantRange(APInt(8, 50), APInt(8, 100)) in TEST_F()
845 .addWithNoWrap(ConstantRange(APInt(8, 20), APInt(8, 70)), in TEST_F()
847 ConstantRange(APInt(8, 70), APInt(8, 169))); in TEST_F()
848 EXPECT_EQ(ConstantRange(APInt(8, 50), APInt(8, 100)) in TEST_F()
849 .addWithNoWrap(ConstantRange(APInt(8, 20), APInt(8, 70)), in TEST_F()
851 ConstantRange(APInt(8, 70), APInt(8, -128))); in TEST_F()
853 EXPECT_EQ(ConstantRange(APInt(8, -100), APInt(8, -50)) in TEST_F()
854 .addWithNoWrap(ConstantRange(APInt(8, 20), APInt(8, 30)), in TEST_F()
856 ConstantRange(APInt(8, -80), APInt(8, -21))); in TEST_F()
857 EXPECT_EQ(ConstantRange(APInt(8, -100), APInt(8, -50)) in TEST_F()
858 .addWithNoWrap(ConstantRange(APInt(8, 20), APInt(8, 30)), in TEST_F()
860 ConstantRange(APInt(8, 176), APInt(8, 235))); in TEST_F()
861 EXPECT_EQ(ConstantRange(APInt(8, -100), APInt(8, -50)) in TEST_F()
862 .addWithNoWrap(ConstantRange(APInt(8, 20), APInt(8, 30)), in TEST_F()
864 ConstantRange(APInt(8, 176), APInt(8, 235))); in TEST_F()
870 [](const APInt &N1, const APInt &N2) -> Optional<APInt> { in TEST_F()
872 APInt Res1 = N1.uadd_ov(N2, IsOverflow1); in TEST_F()
873 APInt Res2 = N1.sadd_ov(N2, IsOverflow2); in TEST_F()
884 EXPECT_EQ(Full.sub(APInt(16, 4)), Full); in TEST_F()
894 EXPECT_EQ(Empty.sub(APInt(16, 4)), Empty); in TEST_F()
895 EXPECT_EQ(Some.sub(APInt(16, 4)), in TEST_F()
896 ConstantRange(APInt(16, 0x6), APInt(16, 0xaa6))); in TEST_F()
898 ConstantRange(APInt(16, 0xf561), APInt(16, 0xaa0))); in TEST_F()
899 EXPECT_EQ(Wrap.sub(APInt(16, 4)), in TEST_F()
900 ConstantRange(APInt(16, 0xaa6), APInt(16, 0x6))); in TEST_F()
901 EXPECT_EQ(One.sub(APInt(16, 4)), in TEST_F()
902 ConstantRange(APInt(16, 0x6))); in TEST_F()
908 [](const APInt &N1, const APInt &N2) { in TEST_F()
919 [](const APInt &N1, const APInt &N2) -> Optional<APInt> { in TEST_F()
921 APInt Res = N1.ssub_ov(N2, IsOverflow); in TEST_F()
932 [](const APInt &N1, const APInt &N2) -> Optional<APInt> { in TEST_F()
934 APInt Res = N1.usub_ov(N2, IsOverflow); in TEST_F()
945 [](const APInt &N1, const APInt &N2) -> Optional<APInt> { in TEST_F()
947 APInt Res1 = N1.usub_ov(N2, IsOverflow1); in TEST_F()
948 APInt Res2 = N1.ssub_ov(N2, IsOverflow2); in TEST_F()
968 EXPECT_EQ(One.multiply(One), ConstantRange(APInt(16, 0xa*0xa), in TEST_F()
969 APInt(16, 0xa*0xa + 1))); in TEST_F()
970 EXPECT_EQ(One.multiply(Some), ConstantRange(APInt(16, 0xa*0xa), in TEST_F()
971 APInt(16, 0xa*0xaa9 + 1))); in TEST_F()
977 ConstantRange Zero(APInt(16, 0)); in TEST_F()
986 EXPECT_EQ(ConstantRange(APInt(4, 1), APInt(4, 6)).multiply( in TEST_F()
987 ConstantRange(APInt(4, 6), APInt(4, 2))), in TEST_F()
990 EXPECT_EQ(ConstantRange(APInt(8, 254), APInt(8, 0)).multiply( in TEST_F()
991 ConstantRange(APInt(8, 252), APInt(8, 4))), in TEST_F()
992 ConstantRange(APInt(8, 250), APInt(8, 9))); in TEST_F()
993 EXPECT_EQ(ConstantRange(APInt(8, 254), APInt(8, 255)).multiply( in TEST_F()
994 ConstantRange(APInt(8, 2), APInt(8, 4))), in TEST_F()
995 ConstantRange(APInt(8, 250), APInt(8, 253))); in TEST_F()
998 EXPECT_EQ(ConstantRange(APInt(8, -2)).multiply( in TEST_F()
999 ConstantRange(APInt(8, 0), APInt(8, 2))), in TEST_F()
1000 ConstantRange(APInt(8, -2), APInt(8, 1))); in TEST_F()
1008 [](const APInt &N1, const APInt &N2) { in TEST_F()
1020 EXPECT_EQ(Full.umax(Some), ConstantRange(APInt(16, 0xa), APInt(16, 0))); in TEST_F()
1022 EXPECT_EQ(Full.umax(Some), ConstantRange(APInt(16, 0xa), APInt(16, 0))); in TEST_F()
1028 EXPECT_EQ(Some.umax(Wrap), ConstantRange(APInt(16, 0xa), APInt(16, 0))); in TEST_F()
1031 EXPECT_EQ(Wrap.umax(One), ConstantRange(APInt(16, 0xa), APInt(16, 0))); in TEST_F()
1038 [](const APInt &N1, const APInt &N2) { in TEST_F()
1047 EXPECT_EQ(Full.smax(Some), ConstantRange(APInt(16, 0xa), in TEST_F()
1048 APInt::getSignedMinValue(16))); in TEST_F()
1050 EXPECT_EQ(Full.smax(One), ConstantRange(APInt(16, 0xa), in TEST_F()
1051 APInt::getSignedMinValue(16))); in TEST_F()
1057 EXPECT_EQ(Some.smax(Wrap), ConstantRange(APInt(16, 0xa), in TEST_F()
1058 APInt(16, (uint64_t)INT16_MIN))); in TEST_F()
1060 EXPECT_EQ(Wrap.smax(One), ConstantRange(APInt(16, 0xa), in TEST_F()
1061 APInt(16, (uint64_t)INT16_MIN))); in TEST_F()
1068 [](const APInt &N1, const APInt &N2) { in TEST_F()
1077 EXPECT_EQ(Full.umin(Some), ConstantRange(APInt(16, 0), APInt(16, 0xaaa))); in TEST_F()
1084 EXPECT_EQ(Some.umin(Wrap), ConstantRange(APInt(16, 0), APInt(16, 0xaaa))); in TEST_F()
1087 EXPECT_EQ(Wrap.umin(One), ConstantRange(APInt(16, 0), APInt(16, 0xb))); in TEST_F()
1094 [](const APInt &N1, const APInt &N2) { in TEST_F()
1103 EXPECT_EQ(Full.smin(Some), ConstantRange(APInt(16, (uint64_t)INT16_MIN), in TEST_F()
1104 APInt(16, 0xaaa))); in TEST_F()
1111 EXPECT_EQ(Some.smin(Wrap), ConstantRange(APInt(16, (uint64_t)INT16_MIN), in TEST_F()
1112 APInt(16, 0xaaa))); in TEST_F()
1115 EXPECT_EQ(Wrap.smin(One), ConstantRange(APInt(16, (uint64_t)INT16_MIN), in TEST_F()
1116 APInt(16, 0xb))); in TEST_F()
1123 [](const APInt &N1, const APInt &N2) { in TEST_F()
1132 EXPECT_EQ(Full.udiv(One), ConstantRange(APInt(16, 0), in TEST_F()
1133 APInt(16, 0xffff / 0xa + 1))); in TEST_F()
1134 EXPECT_EQ(Full.udiv(Some), ConstantRange(APInt(16, 0), in TEST_F()
1135 APInt(16, 0xffff / 0xa + 1))); in TEST_F()
1141 EXPECT_EQ(One.udiv(One), ConstantRange(APInt(16, 1))); in TEST_F()
1142 EXPECT_EQ(One.udiv(Some), ConstantRange(APInt(16, 0), APInt(16, 2))); in TEST_F()
1143 EXPECT_EQ(One.udiv(Wrap), ConstantRange(APInt(16, 0), APInt(16, 0xb))); in TEST_F()
1144 EXPECT_EQ(Some.udiv(Some), ConstantRange(APInt(16, 0), APInt(16, 0x111))); in TEST_F()
1145 EXPECT_EQ(Some.udiv(Wrap), ConstantRange(APInt(16, 0), APInt(16, 0xaaa))); in TEST_F()
1149 ConstantRange Zero(APInt(16, 0)); in TEST_F()
1153 EXPECT_EQ(ConstantRange(APInt(16, 0), APInt(16, 99)).udiv(Full), in TEST_F()
1154 ConstantRange(APInt(16, 0), APInt(16, 99))); in TEST_F()
1155 EXPECT_EQ(ConstantRange(APInt(16, 10), APInt(16, 99)).udiv(Full), in TEST_F()
1156 ConstantRange(APInt(16, 0), APInt(16, 99))); in TEST_F()
1161 EXPECT_EQ(OneBit.sdiv(OneBit), ConstantRange(APInt(1, 0))); in TEST_F()
1170 ForeachNumInConstantRange(CR1, [&](const APInt &N1) { in TEST_F()
1171 ForeachNumInConstantRange(CR2, [&](const APInt &N2) { in TEST_F()
1180 APInt N = N1.sdiv(N2); in TEST_F()
1192 APInt SMin(Bits, Results.find_first() - Bias); in TEST_F()
1193 APInt SMax(Bits, Results.find_last() - Bias); in TEST_F()
1212 APInt WMax(Bits, LastNeg); in TEST_F()
1213 APInt WMin(Bits, LastPos); in TEST_F()
1223 EXPECT_EQ(Full.urem(ConstantRange(APInt(16, 0))), Empty); in TEST_F()
1225 EXPECT_EQ(Full.urem(Full), ConstantRange(APInt(16, 0), APInt(16, 0xffff))); in TEST_F()
1227 EXPECT_EQ(Full.urem(ConstantRange(APInt(16, 0), APInt(16, 123))), in TEST_F()
1228 ConstantRange(APInt(16, 0), APInt(16, 122))); in TEST_F()
1230 EXPECT_EQ(ConstantRange(APInt(16, 0), APInt(16, 123)).urem(Full), in TEST_F()
1231 ConstantRange(APInt(16, 0), APInt(16, 123))); in TEST_F()
1233 EXPECT_EQ(ConstantRange(APInt(16, 10), APInt(16, 20)) in TEST_F()
1234 .urem(ConstantRange(APInt(16, 20), APInt(16, 30))), in TEST_F()
1235 ConstantRange(APInt(16, 10), APInt(16, 20))); in TEST_F()
1237 EXPECT_EQ(ConstantRange(APInt(16, 10), APInt(16, 20)) in TEST_F()
1238 .urem(ConstantRange(APInt(16, 19), APInt(16, 30))), in TEST_F()
1239 ConstantRange(APInt(16, 0), APInt(16, 20))); in TEST_F()
1241 EXPECT_EQ(ConstantRange(APInt(16, 12), APInt(16, 15)) in TEST_F()
1242 .urem(ConstantRange(APInt(16, 10))), in TEST_F()
1243 ConstantRange(APInt(16, 0), APInt(16, 10))); in TEST_F()
1249 [](const APInt &N1, const APInt &N2) -> Optional<APInt> { in TEST_F()
1262 EXPECT_EQ(Full.srem(ConstantRange(APInt(16, 0))), Empty); in TEST_F()
1264 EXPECT_EQ(Full.srem(Full), ConstantRange(APInt::getSignedMinValue(16) + 1, in TEST_F()
1265 APInt::getSignedMinValue(16))); in TEST_F()
1267 ConstantRange PosMod(APInt(16, 10), APInt(16, 21)); // [10, 20] in TEST_F()
1268 ConstantRange NegMod(APInt(16, -20), APInt(16, -9)); // [-20, -10] in TEST_F()
1269 ConstantRange IntMinMod(APInt::getSignedMinValue(16)); in TEST_F()
1274 ConstantRange PosLargeLHS(APInt(16, 0), APInt(16, 41)); in TEST_F()
1275 Expected = ConstantRange(APInt(16, 0), APInt(16, 20)); in TEST_F()
1278 ConstantRange NegLargeLHS(APInt(16, -40), APInt(16, 1)); in TEST_F()
1279 Expected = ConstantRange(APInt(16, -19), APInt(16, 1)); in TEST_F()
1282 ConstantRange PosNegLargeLHS(APInt(16, -32), APInt(16, 38)); in TEST_F()
1283 Expected = ConstantRange(APInt(16, -19), APInt(16, 20)); in TEST_F()
1288 ConstantRange PosLHS(APInt(16, 0), APInt(16, 16)); in TEST_F()
1292 ConstantRange NegLHS(APInt(16, -15), APInt(16, 1)); in TEST_F()
1296 ConstantRange PosNegLHS(APInt(16, -12), APInt(16, 18)); in TEST_F()
1302 ConstantRange PosSmallLHS(APInt(16, 3), APInt(16, 8)); in TEST_F()
1306 ConstantRange NegSmallLHS(APInt(16, -7), APInt(16, -2)); in TEST_F()
1310 ConstantRange PosNegSmallLHS(APInt(16, -3), APInt(16, 8)); in TEST_F()
1317 EXPECT_EQ(ConstantRange(APInt(16, 12), APInt(16, 15)) in TEST_F()
1318 .srem(ConstantRange(APInt(16, 10))), in TEST_F()
1319 ConstantRange(APInt(16, 0), APInt(16, 10))); in TEST_F()
1325 [](const APInt &N1, const APInt &N2) -> Optional<APInt> { in TEST_F()
1335 ConstantRange Some2(APInt(16, 0xfff), APInt(16, 0x8000)); in TEST_F()
1336 ConstantRange WrapNullMax(APInt(16, 0x1), APInt(16, 0x0)); in TEST_F()
1339 EXPECT_EQ(Full.shl(One), ConstantRange(APInt(16, 0), in TEST_F()
1340 APInt(16, 0xfc00) + 1)); in TEST_F()
1347 EXPECT_EQ(One.shl(One), ConstantRange(APInt(16, 0xa << 0xa), in TEST_F()
1348 APInt(16, (0xa << 0xa) + 1))); in TEST_F()
1355 Some2.shl(ConstantRange(APInt(16, 0x1))), in TEST_F()
1356 ConstantRange(APInt(16, 0xfff << 0x1), APInt(16, 0x7fff << 0x1) + 1)); in TEST_F()
1363 [](const APInt &N1, const APInt &N2) -> Optional<APInt> { in TEST_F()
1378 EXPECT_EQ(Full.lshr(One), ConstantRange(APInt(16, 0), in TEST_F()
1379 APInt(16, (0xffff >> 0xa) + 1))); in TEST_F()
1380 EXPECT_EQ(Full.lshr(Some), ConstantRange(APInt(16, 0), in TEST_F()
1381 APInt(16, (0xffff >> 0xa) + 1))); in TEST_F()
1387 EXPECT_EQ(One.lshr(One), ConstantRange(APInt(16, 0))); in TEST_F()
1388 EXPECT_EQ(One.lshr(Some), ConstantRange(APInt(16, 0))); in TEST_F()
1389 EXPECT_EQ(One.lshr(Wrap), ConstantRange(APInt(16, 0), APInt(16, 0xb))); in TEST_F()
1390 EXPECT_EQ(Some.lshr(Some), ConstantRange(APInt(16, 0), in TEST_F()
1391 APInt(16, (0xaaa >> 0xa) + 1))); in TEST_F()
1392 EXPECT_EQ(Some.lshr(Wrap), ConstantRange(APInt(16, 0), APInt(16, 0xaaa))); in TEST_F()
1399 EXPECT_EQ(Full.ashr(One), ConstantRange(APInt(16, 0xffe0), in TEST_F()
1400 APInt(16, (0x7fff >> 0xa) + 1 ))); in TEST_F()
1401 ConstantRange Small(APInt(16, 0xa), APInt(16, 0xb)); in TEST_F()
1402 EXPECT_EQ(Full.ashr(Small), ConstantRange(APInt(16, 0xffe0), in TEST_F()
1403 APInt(16, (0x7fff >> 0xa) + 1 ))); in TEST_F()
1404 EXPECT_EQ(Full.ashr(Some), ConstantRange(APInt(16, 0xffe0), in TEST_F()
1405 APInt(16, (0x7fff >> 0xa) + 1 ))); in TEST_F()
1411 EXPECT_EQ(One.ashr(One), ConstantRange(APInt(16, 0))); in TEST_F()
1412 EXPECT_EQ(One.ashr(Some), ConstantRange(APInt(16, 0))); in TEST_F()
1413 EXPECT_EQ(One.ashr(Wrap), ConstantRange(APInt(16, 0), APInt(16, 0xb))); in TEST_F()
1414 EXPECT_EQ(Some.ashr(Some), ConstantRange(APInt(16, 0), in TEST_F()
1415 APInt(16, (0xaaa >> 0xa) + 1))); in TEST_F()
1416 EXPECT_EQ(Some.ashr(Wrap), ConstantRange(APInt(16, 0), APInt(16, 0xaaa))); in TEST_F()
1418 ConstantRange Neg(APInt(16, 0xf3f0, true), APInt(16, 0xf7f8, true)); in TEST_F()
1419 EXPECT_EQ(Neg.ashr(Small), ConstantRange(APInt(16, 0xfffc, true), in TEST_F()
1420 APInt(16, 0xfffe, true))); in TEST_F()
1425 ConstantRange SMax = ConstantRange(APInt::getSignedMaxValue(32)); in TEST()
1431 ConstantRange LowHalf(APInt(8, 0), APInt(8, 128)); in TEST()
1432 ConstantRange HighHalf(APInt(8, 128), APInt(8, 0)); in TEST()
1445 ConstantRange UnsignedSample(APInt(8, 5), APInt(8, 200)); in TEST()
1449 ConstantRange(APInt(8, 0), APInt(8, 5))); in TEST()
1453 ConstantRange(APInt(8, 0), APInt(8, 6))); in TEST()
1457 ConstantRange(APInt(8, 200), APInt(8, 0))); in TEST()
1461 ConstantRange(APInt(8, 199), APInt(8, 0))); in TEST()
1463 ConstantRange SignedSample(APInt(8, -5), APInt(8, 5)); in TEST()
1467 ConstantRange(APInt(8, -128), APInt(8, -5))); in TEST()
1471 ConstantRange(APInt(8, -128), APInt(8, -4))); in TEST()
1475 ConstantRange(APInt(8, 5), APInt(8, -128))); in TEST()
1479 ConstantRange(APInt(8, 4), APInt(8, -128))); in TEST()
1487 ForeachNumInConstantRange(CR1, [&](const APInt &N1) { in ICmpTestImpl()
1488 ForeachNumInConstantRange(CR2, [&](const APInt &N2) { in ICmpTestImpl()
1507 APInt C(4, Const, true /* = isSigned */); in TEST()
1519 for (APInt I = NUWRegion.getLower(), E = NUWRegion.getUpper(); I != E; in TEST()
1526 for (APInt I = NSWRegion.getLower(), E = NSWRegion.getUpper(); I != E; in TEST()
1535 APInt C(4, Const, true /* = isSigned */); in TEST()
1547 for (APInt I = NUWRegion.getLower(), E = NUWRegion.getUpper(); I != E; in TEST()
1554 for (APInt I = NSWRegion.getLower(), E = NSWRegion.getUpper(); I != E; in TEST()
1587 Instruction::Add, APInt(32, 0), OBO::NoUnsignedWrap).isFullSet()); in TEST()
1589 Instruction::Add, APInt(32, 0), OBO::NoSignedWrap).isFullSet()); in TEST()
1591 Instruction::Sub, APInt(32, 0), OBO::NoUnsignedWrap).isFullSet()); in TEST()
1593 Instruction::Sub, APInt(32, 0), OBO::NoSignedWrap).isFullSet()); in TEST()
1595 ConstantRange OneToFive(APInt(32, 1), APInt(32, 6)); in TEST()
1598 ConstantRange(APInt::getSignedMinValue(32), in TEST()
1599 APInt::getSignedMaxValue(32) - 4)); in TEST()
1602 ConstantRange(APInt::getMinValue(32), APInt::getMinValue(32) - 5)); in TEST()
1605 ConstantRange(APInt::getSignedMinValue(32) + 5, in TEST()
1606 APInt::getSignedMinValue(32))); in TEST()
1609 ConstantRange(APInt::getMinValue(32) + 5, APInt::getMinValue(32))); in TEST()
1611 ConstantRange MinusFiveToMinusTwo(APInt(32, -5), APInt(32, -1)); in TEST()
1614 ConstantRange(APInt::getSignedMinValue(32) + 5, in TEST()
1615 APInt::getSignedMinValue(32))); in TEST()
1618 ConstantRange(APInt(32, 0), APInt(32, 2))); in TEST()
1621 ConstantRange(APInt::getSignedMinValue(32), in TEST()
1622 APInt::getSignedMaxValue(32) - 4)); in TEST()
1625 ConstantRange(APInt::getMaxValue(32) - 1, in TEST()
1626 APInt::getMinValue(32))); in TEST()
1628 ConstantRange MinusOneToOne(APInt(32, -1), APInt(32, 2)); in TEST()
1631 ConstantRange(APInt::getSignedMinValue(32) + 1, in TEST()
1632 APInt::getSignedMinValue(32) - 1)); in TEST()
1635 ConstantRange(APInt(32, 0), APInt(32, 1))); in TEST()
1638 ConstantRange(APInt::getSignedMinValue(32) + 1, in TEST()
1639 APInt::getSignedMinValue(32) - 1)); in TEST()
1642 ConstantRange(APInt::getMaxValue(32), in TEST()
1643 APInt::getMinValue(32))); in TEST()
1645 ConstantRange One(APInt(32, 1), APInt(32, 2)); in TEST()
1648 ConstantRange(APInt::getSignedMinValue(32), in TEST()
1649 APInt::getSignedMaxValue(32))); in TEST()
1652 ConstantRange(APInt::getMinValue(32), APInt::getMaxValue(32))); in TEST()
1655 ConstantRange(APInt::getSignedMinValue(32) + 1, in TEST()
1656 APInt::getSignedMinValue(32))); in TEST()
1659 ConstantRange(APInt::getMinValue(32) + 1, APInt::getMinValue(32))); in TEST()
1661 ConstantRange OneLessThanBitWidth(APInt(32, 0), APInt(32, 31) + 1); in TEST()
1662 ConstantRange UpToBitWidth(APInt(32, 0), APInt(32, 32) + 1); in TEST()
1673 ConstantRange(APInt(32, 0), APInt(32, 1) + 1)); in TEST()
1676 ConstantRange(APInt(32, -1), APInt(32, 0) + 1)); in TEST()
1689 ConstantRange IllegalShAmt(APInt(32, 32), APInt(32, 0) + 1); in TEST()
1699 Instruction::Shl, ConstantRange(APInt(32, -32), APInt(32, 16) + 1), in TEST()
1702 Instruction::Shl, ConstantRange(APInt(32, 0), APInt(32, 16) + 1), in TEST()
1706 Instruction::Shl, ConstantRange(APInt(32, -32), APInt(32, 16) + 1), in TEST()
1709 Instruction::Shl, ConstantRange(APInt(32, 0), APInt(32, 16) + 1), in TEST()
1714 ConstantRange(APInt(32, -32), APInt(32, 16) + 1), in TEST()
1716 ConstantRange(APInt(32, 0), APInt(32, 65535) + 1)); in TEST()
1719 ConstantRange(APInt(32, -32), APInt(32, 16) + 1), in TEST()
1721 ConstantRange(APInt(32, -32768), APInt(32, 32767) + 1)); in TEST()
1736 EnumerateAPInts(Bits, [&](const APInt &N1) { in TestNoWrapRegionExhaustive()
1739 ForeachNumInConstantRange(CR, [&](const APInt &N2) { in TestNoWrapRegionExhaustive()
1760 [](const APInt &N1, const APInt &N2) { in TEST()
1767 [](const APInt &N1, const APInt &N2) { in TEST()
1774 [](const APInt &N1, const APInt &N2) { in TEST()
1781 [](const APInt &N1, const APInt &N2) { in TEST()
1788 [](const APInt &N1, const APInt &N2) { in TEST()
1795 [](const APInt &N1, const APInt &N2) { in TEST()
1802 [](const APInt &N1, const APInt &N2) { in TEST()
1809 [](const APInt &N1, const APInt &N2) { in TEST()
1817 APInt RHS; in TEST()
1820 EXPECT_TRUE(ConstantRange(APInt::getMinValue(32), APInt(32, 100)) in TEST()
1823 EXPECT_EQ(RHS, APInt(32, 100)); in TEST()
1825 EXPECT_TRUE(ConstantRange(APInt::getSignedMinValue(32), APInt(32, 100)) in TEST()
1828 EXPECT_EQ(RHS, APInt(32, 100)); in TEST()
1830 EXPECT_TRUE(ConstantRange(APInt(32, 100), APInt::getMinValue(32)) in TEST()
1833 EXPECT_EQ(RHS, APInt(32, 100)); in TEST()
1835 EXPECT_TRUE(ConstantRange(APInt(32, 100), APInt::getSignedMinValue(32)) in TEST()
1838 EXPECT_EQ(RHS, APInt(32, 100)); in TEST()
1843 EXPECT_EQ(RHS, APInt(32, 0)); in TEST()
1848 EXPECT_EQ(RHS, APInt(32, 0)); in TEST()
1850 EXPECT_FALSE(ConstantRange(APInt(32, 100), APInt(32, 200)) in TEST()
1853 EXPECT_FALSE(ConstantRange(APInt::getSignedMinValue(32) - APInt(32, 100), in TEST()
1854 APInt::getSignedMinValue(32) + APInt(32, 100)) in TEST()
1857 EXPECT_FALSE(ConstantRange(APInt::getMinValue(32) - APInt(32, 100), in TEST()
1858 APInt::getMinValue(32) + APInt(32, 100)) in TEST()
1861 EXPECT_TRUE(ConstantRange(APInt(32, 100)).getEquivalentICmp(Pred, RHS)); in TEST()
1863 EXPECT_EQ(RHS, APInt(32, 100)); in TEST()
1866 ConstantRange(APInt(32, 100)).inverse().getEquivalentICmp(Pred, RHS)); in TEST()
1868 EXPECT_EQ(RHS, APInt(32, 100)); in TEST()
1871 ConstantRange(APInt(512, 100)).inverse().getEquivalentICmp(Pred, RHS)); in TEST()
1873 EXPECT_EQ(RHS, APInt(512, 100)); in TEST()
1879 EXPECT_TRUE(ConstantRange(APInt(32, 0)).getEquivalentICmp(Pred, RHS)); in TEST()
1881 EXPECT_EQ(RHS, APInt(32, 0)); in TEST()
1884 ConstantRange(APInt(32, 0)).inverse().getEquivalentICmp(Pred, RHS)); in TEST()
1886 EXPECT_EQ(RHS, APInt(32, 0)); in TEST()
1888 EXPECT_TRUE(ConstantRange(APInt(32, -1)).getEquivalentICmp(Pred, RHS)); in TEST()
1890 EXPECT_EQ(RHS, APInt(32, -1)); in TEST()
1893 ConstantRange(APInt(32, -1)).inverse().getEquivalentICmp(Pred, RHS)); in TEST()
1895 EXPECT_EQ(RHS, APInt(32, -1)); in TEST()
1900 APInt RHS, Offset; in TEST()
1902 EnumerateAPInts(Bits, [&](const APInt &N) { in TEST()
1908 EnumerateAPInts(Bits, [&](const APInt &N) { in TEST()
1931 ConstantRange Zero(APInt::getZero(16)); in TEST_F()
1943 ConstantRange A(APInt(16, 0xfd00), APInt(16, 0xfe00)); in TEST_F()
1944 ConstantRange B1(APInt(16, 0x0100), APInt(16, 0x0201)); in TEST_F()
1945 ConstantRange B2(APInt(16, 0x0100), APInt(16, 0x0202)); in TEST_F()
1951 ConstantRange C1(APInt(16, 0x0299), APInt(16, 0x0400)); in TEST_F()
1952 ConstantRange C2(APInt(16, 0x0300), APInt(16, 0x0400)); in TEST_F()
1965 ConstantRange Zero(APInt::getZero(16)); in TEST_F()
1966 ConstantRange Max(APInt::getAllOnes(16)); in TEST_F()
1978 ConstantRange A(APInt(16, 0x0000), APInt(16, 0x0100)); in TEST_F()
1979 ConstantRange B(APInt(16, 0x0100), APInt(16, 0x0200)); in TEST_F()
1983 ConstantRange A1(APInt(16, 0x0000), APInt(16, 0x0101)); in TEST_F()
1984 ConstantRange B1(APInt(16, 0x0100), APInt(16, 0x0201)); in TEST_F()
1988 ConstantRange A2(APInt(16, 0x0000), APInt(16, 0x0102)); in TEST_F()
1989 ConstantRange B2(APInt(16, 0x0100), APInt(16, 0x0202)); in TEST_F()
2000 ConstantRange Zero(APInt::getZero(16)); in TEST_F()
2012 ConstantRange A(APInt(16, 0x7d00), APInt(16, 0x7e00)); in TEST_F()
2013 ConstantRange B1(APInt(16, 0x0100), APInt(16, 0x0201)); in TEST_F()
2014 ConstantRange B2(APInt(16, 0x0100), APInt(16, 0x0202)); in TEST_F()
2017 ConstantRange B3(APInt(16, 0x8000), APInt(16, 0x0201)); in TEST_F()
2018 ConstantRange B4(APInt(16, 0x8000), APInt(16, 0x0202)); in TEST_F()
2021 ConstantRange B5(APInt(16, 0x0299), APInt(16, 0x0400)); in TEST_F()
2022 ConstantRange B6(APInt(16, 0x0300), APInt(16, 0x0400)); in TEST_F()
2026 ConstantRange C(APInt(16, 0x8200), APInt(16, 0x8300)); in TEST_F()
2027 ConstantRange D1(APInt(16, 0xfe00), APInt(16, 0xff00)); in TEST_F()
2028 ConstantRange D2(APInt(16, 0xfd99), APInt(16, 0xff00)); in TEST_F()
2031 ConstantRange D3(APInt(16, 0xfe00), APInt(16, 0x8000)); in TEST_F()
2032 ConstantRange D4(APInt(16, 0xfd99), APInt(16, 0x8000)); in TEST_F()
2035 ConstantRange D5(APInt(16, 0xfc00), APInt(16, 0xfd02)); in TEST_F()
2036 ConstantRange D6(APInt(16, 0xfc00), APInt(16, 0xfd01)); in TEST_F()
2040 ConstantRange E(APInt(16, 0xff00), APInt(16, 0x0100)); in TEST_F()
2042 ConstantRange F(APInt(16, 0xf000), APInt(16, 0x7000)); in TEST_F()
2052 ConstantRange Zero(APInt::getZero(16)); in TEST_F()
2062 ConstantRange A(APInt(16, 0x7d00), APInt(16, 0x7e00)); in TEST_F()
2063 ConstantRange B1(APInt(16, 0xfe00), APInt(16, 0xff00)); in TEST_F()
2064 ConstantRange B2(APInt(16, 0xfd99), APInt(16, 0xff00)); in TEST_F()
2067 ConstantRange B3(APInt(16, 0xfc00), APInt(16, 0xfd02)); in TEST_F()
2068 ConstantRange B4(APInt(16, 0xfc00), APInt(16, 0xfd01)); in TEST_F()
2072 ConstantRange C(APInt(16, 0x8200), APInt(16, 0x8300)); in TEST_F()
2073 ConstantRange D1(APInt(16, 0x0100), APInt(16, 0x0201)); in TEST_F()
2074 ConstantRange D2(APInt(16, 0x0100), APInt(16, 0x0202)); in TEST_F()
2077 ConstantRange D3(APInt(16, 0x0299), APInt(16, 0x0400)); in TEST_F()
2078 ConstantRange D4(APInt(16, 0x0300), APInt(16, 0x0400)); in TEST_F()
2082 ConstantRange E(APInt(16, 0xff00), APInt(16, 0x0100)); in TEST_F()
2084 ConstantRange F(APInt(16, 0xf000), APInt(16, 0x7001)); in TEST_F()
2099 ForeachNumInConstantRange(CR1, [&](const APInt &N1) { in TestOverflowExhaustive()
2100 ForeachNumInConstantRange(CR2, [&](const APInt &N2) { in TestOverflowExhaustive()
2147 [](bool &IsOverflowHigh, const APInt &N1, const APInt &N2) { in TEST_F()
2160 [](bool &IsOverflowHigh, const APInt &N1, const APInt &N2) { in TEST_F()
2173 [](bool &IsOverflowHigh, const APInt &N1, const APInt &N2) { in TEST_F()
2186 [](bool &IsOverflowHigh, const APInt &N1, const APInt &N2) { in TEST_F()
2199 [](bool &IsOverflowHigh, const APInt &N1, const APInt &N2) { in TEST_F()
2220 ConstantRange Unsigned(APInt(8, 66), APInt(8, 219 + 1)); in TEST_F()
2221 ConstantRange Signed(APInt(8, 194), APInt(8, 91 + 1)); in TEST_F()
2228 ConstantRange CR1(APInt(8, 164), APInt(8, 237 + 1)); in TEST_F()
2235 ConstantRange CR2(APInt(8, 68), APInt(8, 110 + 1)); in TEST_F()
2253 APInt Num(Bits, N); in TEST_F()
2274 ForeachNumInConstantRange(CR, [&](const APInt &N) { in TEST_F()
2298 ForeachNumInConstantRange(CR, [&](const APInt &N) { in TEST_F()
2317 [](const APInt &N1, const APInt &N2) { in TEST_F()
2328 [](const APInt &N1, const APInt &N2) { in TEST_F()
2339 [](const APInt &N1, const APInt &N2) { return N1.umul_sat(N2); }, in TEST_F()
2348 [](const APInt &N1, const APInt &N2) { return N1.ushl_sat(N2); }, in TEST_F()
2357 [](const APInt &N1, const APInt &N2) { in TEST_F()
2368 [](const APInt &N1, const APInt &N2) { in TEST_F()
2379 [](const APInt &N1, const APInt &N2) { return N1.smul_sat(N2); }, in TEST_F()
2388 [](const APInt &N1, const APInt &N2) { return N1.sshl_sat(N2); }, in TEST_F()
2395 [](const APInt &N) { return N.abs(); }); in TEST_F()
2399 [](const APInt &N) -> Optional<APInt> { in TEST_F()
2407 ConstantRange A(APInt(16, 66), APInt(16, 128)); in TEST_F()
2431 ConstantRange R16(APInt(8, 16)); in TEST_F()
2432 ConstantRange R20(APInt(8, 20)); in TEST_F()
2433 EXPECT_EQ(*R16.binaryAnd(R16).getSingleElement(), APInt(8, 16)); in TEST_F()
2434 EXPECT_EQ(*R16.binaryAnd(R20).getSingleElement(), APInt(8, 16 & 20)); in TEST_F()
2436 ConstantRange R16_32(APInt(8, 16), APInt(8, 32)); in TEST_F()
2438 ConstantRange R32(APInt(8, 32)); in TEST_F()
2442 ConstantRange R4(APInt(8, 4)); in TEST_F()
2443 ConstantRange R0_5(APInt(8, 0), APInt(8, 5)); in TEST_F()
2448 ConstantRange R0_99(APInt(8, 0), APInt(8, 99)); in TEST_F()
2449 ConstantRange R0_32(APInt(8, 0), APInt(8, 32)); in TEST_F()
2457 [](const APInt &N1, const APInt &N2) { return N1 & N2; }, PreferSmallest, in TEST_F()
2463 ConstantRange R16(APInt(8, 16)); in TEST_F()
2464 ConstantRange R20(APInt(8, 20)); in TEST_F()
2465 EXPECT_EQ(*R16.binaryOr(R16).getSingleElement(), APInt(8, 16)); in TEST_F()
2466 EXPECT_EQ(*R16.binaryOr(R20).getSingleElement(), APInt(8, 16 | 20)); in TEST_F()
2468 ConstantRange R16_32(APInt(8, 16), APInt(8, 32)); in TEST_F()
2472 ConstantRange R32(APInt(8, 32)); in TEST_F()
2473 ConstantRange R48_64(APInt(8, 48), APInt(8, 64)); in TEST_F()
2477 ConstantRange R4(APInt(8, 4)); in TEST_F()
2478 ConstantRange R0_16(APInt(8, 0), APInt(8, 16)); in TEST_F()
2479 ConstantRange R4_16(APInt(8, 4), APInt(8, 16)); in TEST_F()
2485 ConstantRange R0_64(APInt(8, 0), APInt(8, 64)); in TEST_F()
2486 ConstantRange R5_32(APInt(8, 5), APInt(8, 32)); in TEST_F()
2487 ConstantRange R5_64(APInt(8, 5), APInt(8, 64)); in TEST_F()
2495 [](const APInt &N1, const APInt &N2) { return N1 | N2; }, PreferSmallest, in TEST_F()
2501 ConstantRange R16(APInt(8, 16)); in TEST_F()
2502 ConstantRange R20(APInt(8, 20)); in TEST_F()
2503 EXPECT_EQ(*R16.binaryXor(R16).getSingleElement(), APInt(8, 0)); in TEST_F()
2504 EXPECT_EQ(*R16.binaryXor(R20).getSingleElement(), APInt(8, 16 ^ 20)); in TEST_F()
2507 ConstantRange R16_35(APInt(8, 16), APInt(8, 35)); in TEST_F()
2508 ConstantRange R0_99(APInt(8, 0), APInt(8, 99)); in TEST_F()
2509 EXPECT_EQ(R16_35.binaryXor(R16_35), ConstantRange(APInt(8, 0), APInt(8, 64))); in TEST_F()
2510 EXPECT_EQ(R16_35.binaryXor(R0_99), ConstantRange(APInt(8, 0), APInt(8, 128))); in TEST_F()
2511 EXPECT_EQ(R0_99.binaryXor(R16_35), ConstantRange(APInt(8, 0), APInt(8, 128))); in TEST_F()
2517 [](const APInt &N1, const APInt &N2) { in TEST_F()
2527 [](const APInt &N) { return ~N; }, in TEST_F()
2531 return CR.binaryXor(ConstantRange(APInt::getAllOnes(CR.getBitWidth()))); in TEST_F()
2533 [](const APInt &N) { return ~N; }, PreferSmallest); in TEST_F()
2536 return ConstantRange(APInt::getAllOnes(CR.getBitWidth())).binaryXor(CR); in TEST_F()
2538 [](const APInt &N) { return ~N; }, PreferSmallest); in TEST_F()
2552 ForeachNumInConstantRange(CR1, [&](const APInt &N1) { in testConstantRangeICmpPredEquivalence()
2555 ForeachNumInConstantRange(CR2, [&](const APInt &N2) { in testConstantRangeICmpPredEquivalence()