Lines Matching refs:ConstantRange
22 static ConstantRange Full;
23 static ConstantRange Empty;
24 static ConstantRange One;
25 static ConstantRange Some;
26 static ConstantRange Wrap;
38 ConstantRange CR(APInt(Bits, Lo), APInt(Bits, Hi)); in EnumerateConstantRanges()
46 EnumerateConstantRanges(Bits, [&](const ConstantRange &CR1) { in EnumerateTwoConstantRanges()
47 EnumerateConstantRanges(Bits, [&](const ConstantRange &CR2) { in EnumerateTwoConstantRanges()
54 static void ForeachNumInConstantRange(const ConstantRange &CR, Fn TestFn) { in ForeachNumInConstantRange()
64 ConstantRange getRange();
81 ConstantRange getRange() { in getRange()
83 return ConstantRange::getEmpty(Min.getBitWidth()); in getRange()
84 return ConstantRange::getNonEmpty(Min, Max + 1); in getRange()
103 ConstantRange getRange() { in getRange()
105 return ConstantRange::getEmpty(Min.getBitWidth()); in getRange()
106 return ConstantRange::getNonEmpty(Min, Max + 1); in getRange()
114 EnumerateConstantRanges(Bits, [&](const ConstantRange &CR) { in TestUnsignedUnaryOpExhaustive()
122 ConstantRange ExactCR = R.getRange(); in TestUnsignedUnaryOpExhaustive()
123 ConstantRange ActualCR = RangeFn(CR); in TestUnsignedUnaryOpExhaustive()
135 Bits, [&](const ConstantRange &CR1, const ConstantRange &CR2) { in TestUnsignedBinOpExhaustive()
145 ConstantRange CR = RangeFn(CR1, CR2); in TestUnsignedBinOpExhaustive()
147 ConstantRange Exact = R.getRange(); in TestUnsignedBinOpExhaustive()
167 Bits, [&](const ConstantRange &CR1, const ConstantRange &CR2) { in TestSignedBinOpExhaustive()
178 ConstantRange CR = RangeFn(CR1, CR2); in TestSignedBinOpExhaustive()
180 ConstantRange Exact = R.getRange(); in TestSignedBinOpExhaustive()
189 ConstantRange ConstantRangeTest::Full(16, true);
190 ConstantRange ConstantRangeTest::Empty(16, false);
191 ConstantRange ConstantRangeTest::One(APInt(16, 0xa));
192 ConstantRange ConstantRangeTest::Some(APInt(16, 0xa), APInt(16, 0xaaa));
193 ConstantRange ConstantRangeTest::Wrap(APInt(16, 0xaaa), APInt(16, 0xa));
276 ConstantRange OneInverse = One.inverse(); in TEST_F()
308 EXPECT_EQ(ConstantRange(APInt(4, 7), APInt(4, 0)).getSignedMax(), in TEST_F()
319 EXPECT_FALSE(ConstantRange(APInt(8, 127), APInt(8, 128)).isSignWrappedSet()); in TEST_F()
320 EXPECT_TRUE(ConstantRange(APInt(8, 127), APInt(8, 129)).isSignWrappedSet()); in TEST_F()
321 EXPECT_FALSE(ConstantRange(APInt(8, 128), APInt(8, 129)).isSignWrappedSet()); in TEST_F()
322 EXPECT_TRUE(ConstantRange(APInt(8, 10), APInt(8, 9)).isSignWrappedSet()); in TEST_F()
323 EXPECT_TRUE(ConstantRange(APInt(8, 10), APInt(8, 250)).isSignWrappedSet()); in TEST_F()
324 EXPECT_FALSE(ConstantRange(APInt(8, 250), APInt(8, 10)).isSignWrappedSet()); in TEST_F()
325 EXPECT_FALSE(ConstantRange(APInt(8, 250), APInt(8, 251)).isSignWrappedSet()); in TEST_F()
342 ConstantRange CR1(APInt(8, 42), APInt::getMinValue(8)); in TEST_F()
346 ConstantRange CR2(APInt(8, 42), APInt::getSignedMinValue(8)); in TEST_F()
352 ConstantRange TFull = Full.truncate(10); in TEST_F()
353 ConstantRange TEmpty = Empty.truncate(10); in TEST_F()
354 ConstantRange TOne = One.truncate(10); in TEST_F()
355 ConstantRange TSome = Some.truncate(10); in TEST_F()
356 ConstantRange TWrap = Wrap.truncate(10); in TEST_F()
359 EXPECT_EQ(TOne, ConstantRange(One.getLower().trunc(10), in TEST_F()
365 ConstantRange TwoFive(APInt(3, 2), APInt(3, 5)); in TEST_F()
366 EXPECT_EQ(TwoFive.truncate(2), ConstantRange(APInt(2, 2), APInt(2, 1))); in TEST_F()
369 ConstantRange TwoSix(APInt(3, 2), APInt(3, 6)); in TEST_F()
373 ConstantRange FiveSeven(APInt(3, 5), APInt(3, 7)); in TEST_F()
374 EXPECT_EQ(FiveSeven.truncate(2), ConstantRange(APInt(2, 1), APInt(2, 3))); in TEST_F()
377 ConstantRange SevenOne(APInt(3, 7), APInt(3, 1)); in TEST_F()
378 EXPECT_EQ(SevenOne.truncate(2), ConstantRange(APInt(2, 3), APInt(2, 1))); in TEST_F()
382 ConstantRange ZFull = Full.zeroExtend(20); in TEST_F()
383 ConstantRange ZEmpty = Empty.zeroExtend(20); in TEST_F()
384 ConstantRange ZOne = One.zeroExtend(20); in TEST_F()
385 ConstantRange ZSome = Some.zeroExtend(20); in TEST_F()
386 ConstantRange ZWrap = Wrap.zeroExtend(20); in TEST_F()
387 EXPECT_EQ(ZFull, ConstantRange(APInt(20, 0), APInt(20, 0x10000))); in TEST_F()
389 EXPECT_EQ(ZOne, ConstantRange(One.getLower().zext(20), in TEST_F()
391 EXPECT_EQ(ZSome, ConstantRange(Some.getLower().zext(20), in TEST_F()
393 EXPECT_EQ(ZWrap, ConstantRange(APInt(20, 0), APInt(20, 0x10000))); in TEST_F()
396 ConstantRange FiveZero(APInt(3, 5), APInt(3, 0)); in TEST_F()
397 EXPECT_EQ(FiveZero.zeroExtend(7), ConstantRange(APInt(7, 5), APInt(7, 8))); in TEST_F()
401 ConstantRange SFull = Full.signExtend(20); in TEST_F()
402 ConstantRange SEmpty = Empty.signExtend(20); in TEST_F()
403 ConstantRange SOne = One.signExtend(20); in TEST_F()
404 ConstantRange SSome = Some.signExtend(20); in TEST_F()
405 ConstantRange SWrap = Wrap.signExtend(20); in TEST_F()
406 EXPECT_EQ(SFull, ConstantRange(APInt(20, (uint64_t)INT16_MIN, true), in TEST_F()
409 EXPECT_EQ(SOne, ConstantRange(One.getLower().sext(20), in TEST_F()
411 EXPECT_EQ(SSome, ConstantRange(Some.getLower().sext(20), in TEST_F()
413 EXPECT_EQ(SWrap, ConstantRange(APInt(20, (uint64_t)INT16_MIN, true), in TEST_F()
416 EXPECT_EQ(ConstantRange(APInt(8, 120), APInt(8, 140)).signExtend(16), in TEST_F()
417 ConstantRange(APInt(16, -128), APInt(16, 128))); in TEST_F()
419 EXPECT_EQ(ConstantRange(APInt(16, 0x0200), APInt(16, 0x8000)).signExtend(19), in TEST_F()
420 ConstantRange(APInt(19, 0x0200), APInt(19, 0x8000))); in TEST_F()
441 ConstantRange LHS(APInt(16, 4), APInt(16, 2)); in TEST_F()
442 ConstantRange RHS(APInt(16, 6), APInt(16, 5)); in TEST_F()
446 LHS = ConstantRange(APInt(32, -2147483646), APInt(32, 3)); in TEST_F()
447 RHS = ConstantRange(APInt(32, 2), APInt(32, 2147483646)); in TEST_F()
448 EXPECT_EQ(LHS.intersectWith(RHS), ConstantRange(APInt(32, 2))); in TEST_F()
451 LHS = ConstantRange(APInt(32, 2), APInt(32, 0)); in TEST_F()
452 RHS = ConstantRange(APInt(32, 4), APInt(32, 3)); in TEST_F()
453 EXPECT_EQ(LHS.intersectWith(RHS), ConstantRange(APInt(32, 2), APInt(32, 0))); in TEST_F()
456 LHS = ConstantRange(APInt(32, 2), APInt(32, 0)); in TEST_F()
457 RHS = ConstantRange(APInt(32, 4), APInt(32, 2)); in TEST_F()
458 EXPECT_EQ(LHS.intersectWith(RHS), ConstantRange(APInt(32, 4), APInt(32, 0))); in TEST_F()
461 LHS = ConstantRange(APInt(32, 4), APInt(32, 2)); in TEST_F()
462 RHS = ConstantRange(APInt(32, 5), APInt(32, 1)); in TEST_F()
463 EXPECT_EQ(LHS.intersectWith(RHS), ConstantRange(APInt(32, 5), APInt(32, 1))); in TEST_F()
466 LHS = ConstantRange(APInt(32, 2), APInt(32, 0)); in TEST_F()
467 RHS = ConstantRange(APInt(32, 7), APInt(32, 4)); in TEST_F()
468 EXPECT_EQ(LHS.intersectWith(RHS), ConstantRange(APInt(32, 7), APInt(32, 4))); in TEST_F()
471 LHS = ConstantRange(APInt(32, 4), APInt(32, 2)); in TEST_F()
472 RHS = ConstantRange(APInt(32, 1), APInt(32, 0)); in TEST_F()
473 EXPECT_EQ(LHS.intersectWith(RHS), ConstantRange(APInt(32, 4), APInt(32, 2))); in TEST_F()
476 LHS = ConstantRange(APInt(32, 15), APInt(32, 0)); in TEST_F()
477 RHS = ConstantRange(APInt(32, 7), APInt(32, 6)); in TEST_F()
478 EXPECT_EQ(LHS.intersectWith(RHS), ConstantRange(APInt(32, 15), APInt(32, 0))); in TEST_F()
485 [=](const ConstantRange &CR1, const ConstantRange &CR2) { in testBinarySetOperationExhaustive()
529 ConstantRange SmallestCR = OpFn(CR1, CR2, ConstantRange::Smallest); in testBinarySetOperationExhaustive()
530 ConstantRange UnsignedCR = OpFn(CR1, CR2, ConstantRange::Unsigned); in testBinarySetOperationExhaustive()
531 ConstantRange SignedCR = OpFn(CR1, CR2, ConstantRange::Signed); in testBinarySetOperationExhaustive()
546 ConstantRange Expected(Lower1, Upper1 + 1); in testBinarySetOperationExhaustive()
554 ConstantRange Variant1(Bits, /*full*/ true); in testBinarySetOperationExhaustive()
555 ConstantRange Variant2(Bits, /*full*/ true); in testBinarySetOperationExhaustive()
559 Variant1 = ConstantRange(Lower1, Upper2 + 1); in testBinarySetOperationExhaustive()
561 Variant2 = ConstantRange(Lower2, Upper1 + 1); in testBinarySetOperationExhaustive()
567 Variant1 = ConstantRange(Lower2, Upper1 + 1); in testBinarySetOperationExhaustive()
568 Variant2 = ConstantRange(Lower3, Upper2 + 1); in testBinarySetOperationExhaustive()
611 [](const ConstantRange &CR1, const ConstantRange &CR2, in TEST_F()
612 ConstantRange::PreferredRangeType Type) { in TEST_F()
615 [](const ConstantRange &CR1, const ConstantRange &CR2, const APInt &N) { in TEST_F()
622 [](const ConstantRange &CR1, const ConstantRange &CR2, in TEST_F()
623 ConstantRange::PreferredRangeType Type) { in TEST_F()
626 [](const ConstantRange &CR1, const ConstantRange &CR2, const APInt &N) { in TEST_F()
633 ConstantRange(APInt(16, 0xaaa), APInt(16, 0xb))); in TEST_F()
640 EXPECT_EQ(ConstantRange(APInt(16, 14), APInt(16, 1)).unionWith( in TEST_F()
641 ConstantRange(APInt(16, 0), APInt(16, 8))), in TEST_F()
642 ConstantRange(APInt(16, 14), APInt(16, 8))); in TEST_F()
643 EXPECT_EQ(ConstantRange(APInt(16, 6), APInt(16, 4)).unionWith( in TEST_F()
644 ConstantRange(APInt(16, 4), APInt(16, 0))), in TEST_F()
645 ConstantRange::getFull(16)); in TEST_F()
646 EXPECT_EQ(ConstantRange(APInt(16, 1), APInt(16, 0)).unionWith( in TEST_F()
647 ConstantRange(APInt(16, 2), APInt(16, 1))), in TEST_F()
648 ConstantRange::getFull(16)); in TEST_F()
657 ConstantRange A(APInt(16, 3), APInt(16, 7)); in TEST_F()
658 ConstantRange B(APInt(16, 5), APInt(16, 9)); in TEST_F()
659 ConstantRange C(APInt(16, 3), APInt(16, 5)); in TEST_F()
660 ConstantRange D(APInt(16, 7), APInt(16, 9)); in TEST_F()
661 ConstantRange E(APInt(16, 5), APInt(16, 4)); in TEST_F()
662 ConstantRange F(APInt(16, 7), APInt(16, 3)); in TEST_F()
670 EnumerateConstantRanges(Bits, [&](const ConstantRange &CR) { in TEST_F()
682 EnumerateConstantRanges(Bits, [&](const ConstantRange &CR) { in TEST_F()
697 EnumerateConstantRanges(Bits, [&](const ConstantRange &CR) { in TEST_F()
709 EnumerateConstantRanges(Bits, [&](const ConstantRange &CR) { in TEST_F()
725 ConstantRange(APInt(16, 0x6), APInt(16, 0xaa6))); in TEST_F()
727 ConstantRange(APInt(16, 0xaa6), APInt(16, 0x6))); in TEST_F()
729 ConstantRange(APInt(16, 0x6))); in TEST_F()
745 ConstantRange(APInt(16, 0xe), APInt(16, 0xaae))); in TEST_F()
747 ConstantRange(APInt(16, 0xaae), APInt(16, 0xe))); in TEST_F()
749 ConstantRange(APInt(16, 0xe))); in TEST_F()
755 EnumerateTwoConstantRanges(Bits, [&](const ConstantRange &CR1, in TestAddWithNoSignedWrapExhaustive()
756 const ConstantRange &CR2) { in TestAddWithNoSignedWrapExhaustive()
757 ConstantRange CR = RangeFn(CR1, CR2); in TestAddWithNoSignedWrapExhaustive()
777 ConstantRange Exact = R.getRange(); in TestAddWithNoSignedWrapExhaustive()
785 EnumerateTwoConstantRanges(Bits, [&](const ConstantRange &CR1, in TestAddWithNoUnsignedWrapExhaustive()
786 const ConstantRange &CR2) { in TestAddWithNoUnsignedWrapExhaustive()
787 ConstantRange CR = RangeFn(CR1, CR2); in TestAddWithNoUnsignedWrapExhaustive()
807 ConstantRange Exact = R.getRange(); in TestAddWithNoUnsignedWrapExhaustive()
818 Bits, [&](const ConstantRange &CR1, const ConstantRange &CR2) { in TestAddWithNoSignedUnsignedWrapExhaustive()
819 ConstantRange CR = RangeFn(CR1, CR2); in TestAddWithNoSignedUnsignedWrapExhaustive()
843 ConstantRange ExactUnsignedCR = UR.getRange(); in TestAddWithNoSignedUnsignedWrapExhaustive()
844 ConstantRange ExactSignedCR = SR.getRange(); in TestAddWithNoSignedUnsignedWrapExhaustive()
851 ConstantRange Exact = ExactSignedCR.intersectWith(ExactUnsignedCR); in TestAddWithNoSignedUnsignedWrapExhaustive()
863 EXPECT_EQ(Full.addWithNoWrap(ConstantRange(APInt(16, 1), APInt(16, 2)), in TEST_F()
865 ConstantRange(APInt(16, INT16_MIN + 1), APInt(16, INT16_MIN))); in TEST_F()
866 EXPECT_EQ(ConstantRange(APInt(16, 1), APInt(16, 2)) in TEST_F()
868 ConstantRange(APInt(16, INT16_MIN + 1), APInt(16, INT16_MIN))); in TEST_F()
869 EXPECT_EQ(Full.addWithNoWrap(ConstantRange(APInt(16, -1), APInt(16, 0)), in TEST_F()
871 ConstantRange(APInt(16, INT16_MIN), APInt(16, INT16_MAX))); in TEST_F()
872 EXPECT_EQ(ConstantRange(APInt(8, 100), APInt(8, 120)) in TEST_F()
873 .addWithNoWrap(ConstantRange(APInt(8, 120), APInt(8, 123)), in TEST_F()
875 ConstantRange(8, false)); in TEST_F()
876 EXPECT_EQ(ConstantRange(APInt(8, -120), APInt(8, -100)) in TEST_F()
877 .addWithNoWrap(ConstantRange(APInt(8, -110), APInt(8, -100)), in TEST_F()
879 ConstantRange(8, false)); in TEST_F()
880 EXPECT_EQ(ConstantRange(APInt(8, 0), APInt(8, 101)) in TEST_F()
881 .addWithNoWrap(ConstantRange(APInt(8, -128), APInt(8, 28)), in TEST_F()
883 ConstantRange(8, true)); in TEST_F()
884 EXPECT_EQ(ConstantRange(APInt(8, 0), APInt(8, 101)) in TEST_F()
885 .addWithNoWrap(ConstantRange(APInt(8, -120), APInt(8, 29)), in TEST_F()
887 ConstantRange(APInt(8, -120), APInt(8, -128))); in TEST_F()
888 EXPECT_EQ(ConstantRange(APInt(8, -50), APInt(8, 50)) in TEST_F()
889 .addWithNoWrap(ConstantRange(APInt(8, 10), APInt(8, 20)), in TEST_F()
891 ConstantRange(APInt(8, -40), APInt(8, 69))); in TEST_F()
892 EXPECT_EQ(ConstantRange(APInt(8, 10), APInt(8, 20)) in TEST_F()
893 .addWithNoWrap(ConstantRange(APInt(8, -50), APInt(8, 50)), in TEST_F()
895 ConstantRange(APInt(8, -40), APInt(8, 69))); in TEST_F()
896 EXPECT_EQ(ConstantRange(APInt(8, 120), APInt(8, -10)) in TEST_F()
897 .addWithNoWrap(ConstantRange(APInt(8, 5), APInt(8, 20)), in TEST_F()
899 ConstantRange(APInt(8, 125), APInt(8, 9))); in TEST_F()
900 EXPECT_EQ(ConstantRange(APInt(8, 5), APInt(8, 20)) in TEST_F()
901 .addWithNoWrap(ConstantRange(APInt(8, 120), APInt(8, -10)), in TEST_F()
903 ConstantRange(APInt(8, 125), APInt(8, 9))); in TEST_F()
906 [](const ConstantRange &CR1, const ConstantRange &CR2) { in TEST_F()
918 EXPECT_EQ(Full.addWithNoWrap(ConstantRange(APInt(16, 1), APInt(16, 2)), in TEST_F()
920 ConstantRange(APInt(16, 1), APInt(16, 0))); in TEST_F()
921 EXPECT_EQ(ConstantRange(APInt(16, 1), APInt(16, 2)) in TEST_F()
923 ConstantRange(APInt(16, 1), APInt(16, 0))); in TEST_F()
924 EXPECT_EQ(ConstantRange(APInt(8, 200), APInt(8, 220)) in TEST_F()
925 .addWithNoWrap(ConstantRange(APInt(8, 100), APInt(8, 123)), in TEST_F()
927 ConstantRange(8, false)); in TEST_F()
928 EXPECT_EQ(ConstantRange(APInt(8, 0), APInt(8, 101)) in TEST_F()
929 .addWithNoWrap(ConstantRange(APInt(8, 0), APInt(8, 156)), in TEST_F()
931 ConstantRange(8, true)); in TEST_F()
932 EXPECT_EQ(ConstantRange(APInt(8, 0), APInt(8, 101)) in TEST_F()
933 .addWithNoWrap(ConstantRange(APInt(8, 10), APInt(8, 29)), in TEST_F()
935 ConstantRange(APInt(8, 10), APInt(8, 129))); in TEST_F()
936 EXPECT_EQ(ConstantRange(APInt(8, 20), APInt(8, 10)) in TEST_F()
937 .addWithNoWrap(ConstantRange(APInt(8, 50), APInt(8, 200)), in TEST_F()
939 ConstantRange(APInt(8, 50), APInt(8, 0))); in TEST_F()
940 EXPECT_EQ(ConstantRange(APInt(8, 10), APInt(8, 20)) in TEST_F()
941 .addWithNoWrap(ConstantRange(APInt(8, 50), APInt(8, 200)), in TEST_F()
943 ConstantRange(APInt(8, 60), APInt(8, -37))); in TEST_F()
944 EXPECT_EQ(ConstantRange(APInt(8, 20), APInt(8, -30)) in TEST_F()
945 .addWithNoWrap(ConstantRange(APInt(8, 5), APInt(8, 20)), in TEST_F()
947 ConstantRange(APInt(8, 25), APInt(8, -11))); in TEST_F()
948 EXPECT_EQ(ConstantRange(APInt(8, 5), APInt(8, 20)) in TEST_F()
949 .addWithNoWrap(ConstantRange(APInt(8, 20), APInt(8, -30)), in TEST_F()
951 ConstantRange(APInt(8, 25), APInt(8, -11))); in TEST_F()
954 [](const ConstantRange &CR1, const ConstantRange &CR2) { in TEST_F()
961 EXPECT_EQ(ConstantRange(APInt(8, 50), APInt(8, 100)) in TEST_F()
962 .addWithNoWrap(ConstantRange(APInt(8, 20), APInt(8, 70)), in TEST_F()
964 ConstantRange(APInt(8, 70), APInt(8, -128))); in TEST_F()
965 EXPECT_EQ(ConstantRange(APInt(8, 50), APInt(8, 100)) in TEST_F()
966 .addWithNoWrap(ConstantRange(APInt(8, 20), APInt(8, 70)), in TEST_F()
968 ConstantRange(APInt(8, 70), APInt(8, 169))); in TEST_F()
969 EXPECT_EQ(ConstantRange(APInt(8, 50), APInt(8, 100)) in TEST_F()
970 .addWithNoWrap(ConstantRange(APInt(8, 20), APInt(8, 70)), in TEST_F()
972 ConstantRange(APInt(8, 70), APInt(8, -128))); in TEST_F()
974 EXPECT_EQ(ConstantRange(APInt(8, -100), APInt(8, -50)) in TEST_F()
975 .addWithNoWrap(ConstantRange(APInt(8, 20), APInt(8, 30)), in TEST_F()
977 ConstantRange(APInt(8, -80), APInt(8, -21))); in TEST_F()
978 EXPECT_EQ(ConstantRange(APInt(8, -100), APInt(8, -50)) in TEST_F()
979 .addWithNoWrap(ConstantRange(APInt(8, 20), APInt(8, 30)), in TEST_F()
981 ConstantRange(APInt(8, 176), APInt(8, 235))); in TEST_F()
982 EXPECT_EQ(ConstantRange(APInt(8, -100), APInt(8, -50)) in TEST_F()
983 .addWithNoWrap(ConstantRange(APInt(8, 20), APInt(8, 30)), in TEST_F()
985 ConstantRange(APInt(8, 176), APInt(8, 235))); in TEST_F()
988 [](const ConstantRange &CR1, const ConstantRange &CR2) { in TEST_F()
1012 ConstantRange(APInt(16, 0x6), APInt(16, 0xaa6))); in TEST_F()
1014 ConstantRange(APInt(16, 0xf561), APInt(16, 0xaa0))); in TEST_F()
1016 ConstantRange(APInt(16, 0xaa6), APInt(16, 0x6))); in TEST_F()
1018 ConstantRange(APInt(16, 0x6))); in TEST_F()
1024 [](const ConstantRange &CR1, const ConstantRange &CR2) { in TEST_F()
1031 [](const ConstantRange &CR1, const ConstantRange &CR2) { in TEST_F()
1038 [](const ConstantRange &CR1, const ConstantRange &CR2) { in TEST_F()
1059 EXPECT_EQ(One.multiply(One), ConstantRange(APInt(16, 0xa*0xa), in TEST_F()
1061 EXPECT_EQ(One.multiply(Some), ConstantRange(APInt(16, 0xa*0xa), in TEST_F()
1068 ConstantRange Zero(APInt(16, 0)); in TEST_F()
1077 EXPECT_EQ(ConstantRange(APInt(4, 1), APInt(4, 6)).multiply( in TEST_F()
1078 ConstantRange(APInt(4, 6), APInt(4, 2))), in TEST_F()
1079 ConstantRange(4, /*isFullSet=*/true)); in TEST_F()
1081 EXPECT_EQ(ConstantRange(APInt(8, 254), APInt(8, 0)).multiply( in TEST_F()
1082 ConstantRange(APInt(8, 252), APInt(8, 4))), in TEST_F()
1083 ConstantRange(APInt(8, 250), APInt(8, 9))); in TEST_F()
1084 EXPECT_EQ(ConstantRange(APInt(8, 254), APInt(8, 255)).multiply( in TEST_F()
1085 ConstantRange(APInt(8, 2), APInt(8, 4))), in TEST_F()
1086 ConstantRange(APInt(8, 250), APInt(8, 253))); in TEST_F()
1089 EXPECT_EQ(ConstantRange(APInt(8, -2)).multiply( in TEST_F()
1090 ConstantRange(APInt(8, 0), APInt(8, 2))), in TEST_F()
1091 ConstantRange(APInt(8, -2), APInt(8, 1))); in TEST_F()
1097 EXPECT_EQ(Full.umax(Some), ConstantRange(APInt(16, 0xa), APInt(16, 0))); in TEST_F()
1099 EXPECT_EQ(Full.umax(Some), ConstantRange(APInt(16, 0xa), APInt(16, 0))); in TEST_F()
1105 EXPECT_EQ(Some.umax(Wrap), ConstantRange(APInt(16, 0xa), APInt(16, 0))); in TEST_F()
1109 EXPECT_EQ(Wrap.umax(One), ConstantRange(APInt(16, 0xa), APInt(16, 0))); in TEST_F()
1116 EXPECT_EQ(Full.smax(Some), ConstantRange(APInt(16, 0xa), in TEST_F()
1119 EXPECT_EQ(Full.smax(One), ConstantRange(APInt(16, 0xa), in TEST_F()
1126 EXPECT_EQ(Some.smax(Wrap), ConstantRange(APInt(16, 0xa), in TEST_F()
1129 EXPECT_EQ(Wrap.smax(One), ConstantRange(APInt(16, 0xa), in TEST_F()
1137 EXPECT_EQ(Full.umin(Some), ConstantRange(APInt(16, 0), APInt(16, 0xaaa))); in TEST_F()
1144 EXPECT_EQ(Some.umin(Wrap), ConstantRange(APInt(16, 0), APInt(16, 0xaaa))); in TEST_F()
1148 EXPECT_EQ(Wrap.umin(One), ConstantRange(APInt(16, 0), APInt(16, 0xb))); in TEST_F()
1155 EXPECT_EQ(Full.smin(Some), ConstantRange(APInt(16, (uint64_t)INT16_MIN), in TEST_F()
1163 EXPECT_EQ(Some.smin(Wrap), ConstantRange(APInt(16, (uint64_t)INT16_MIN), in TEST_F()
1168 EXPECT_EQ(Wrap.smin(One), ConstantRange(APInt(16, (uint64_t)INT16_MIN), in TEST_F()
1176 EXPECT_EQ(Full.udiv(One), ConstantRange(APInt(16, 0), in TEST_F()
1178 EXPECT_EQ(Full.udiv(Some), ConstantRange(APInt(16, 0), in TEST_F()
1185 EXPECT_EQ(One.udiv(One), ConstantRange(APInt(16, 1))); in TEST_F()
1186 EXPECT_EQ(One.udiv(Some), ConstantRange(APInt(16, 0), APInt(16, 2))); in TEST_F()
1187 EXPECT_EQ(One.udiv(Wrap), ConstantRange(APInt(16, 0), APInt(16, 0xb))); in TEST_F()
1188 EXPECT_EQ(Some.udiv(Some), ConstantRange(APInt(16, 0), APInt(16, 0x111))); in TEST_F()
1189 EXPECT_EQ(Some.udiv(Wrap), ConstantRange(APInt(16, 0), APInt(16, 0xaaa))); in TEST_F()
1193 ConstantRange Zero(APInt(16, 0)); in TEST_F()
1197 EXPECT_EQ(ConstantRange(APInt(16, 0), APInt(16, 99)).udiv(Full), in TEST_F()
1198 ConstantRange(APInt(16, 0), APInt(16, 99))); in TEST_F()
1199 EXPECT_EQ(ConstantRange(APInt(16, 10), APInt(16, 99)).udiv(Full), in TEST_F()
1200 ConstantRange(APInt(16, 0), APInt(16, 99))); in TEST_F()
1205 EnumerateTwoConstantRanges(Bits, [&](const ConstantRange &CR1, in TEST_F()
1206 const ConstantRange &CR2) { in TEST_F()
1226 ConstantRange CR = CR1.sdiv(CR2); in TEST_F()
1235 ConstantRange Envelope = ConstantRange::getNonEmpty(SMin, SMax + 1); in TEST_F()
1255 ConstantRange Wrapped = ConstantRange::getNonEmpty(WMin, WMax + 1); in TEST_F()
1264 EXPECT_EQ(Full.urem(ConstantRange(APInt(16, 0))), Empty); in TEST_F()
1266 EXPECT_EQ(Full.urem(Full), ConstantRange(APInt(16, 0), APInt(16, 0xffff))); in TEST_F()
1268 EXPECT_EQ(Full.urem(ConstantRange(APInt(16, 0), APInt(16, 123))), in TEST_F()
1269 ConstantRange(APInt(16, 0), APInt(16, 122))); in TEST_F()
1271 EXPECT_EQ(ConstantRange(APInt(16, 0), APInt(16, 123)).urem(Full), in TEST_F()
1272 ConstantRange(APInt(16, 0), APInt(16, 123))); in TEST_F()
1274 EXPECT_EQ(ConstantRange(APInt(16, 10), APInt(16, 20)) in TEST_F()
1275 .urem(ConstantRange(APInt(16, 20), APInt(16, 30))), in TEST_F()
1276 ConstantRange(APInt(16, 10), APInt(16, 20))); in TEST_F()
1278 EXPECT_EQ(ConstantRange(APInt(16, 10), APInt(16, 20)) in TEST_F()
1279 .urem(ConstantRange(APInt(16, 19), APInt(16, 30))), in TEST_F()
1280 ConstantRange(APInt(16, 0), APInt(16, 20))); in TEST_F()
1282 EXPECT_EQ(ConstantRange(APInt(16, 12), APInt(16, 15)) in TEST_F()
1283 .urem(ConstantRange(APInt(16, 10))), in TEST_F()
1284 ConstantRange(APInt(16, 0), APInt(16, 10))); in TEST_F()
1287 [](const ConstantRange &CR1, const ConstantRange &CR2) { in TEST_F()
1300 EXPECT_EQ(Full.srem(ConstantRange(APInt(16, 0))), Empty); in TEST_F()
1302 EXPECT_EQ(Full.srem(Full), ConstantRange(APInt::getSignedMinValue(16) + 1, in TEST_F()
1305 ConstantRange PosMod(APInt(16, 10), APInt(16, 21)); // [10, 20] in TEST_F()
1306 ConstantRange NegMod(APInt(16, -20), APInt(16, -9)); // [-20, -10] in TEST_F()
1307 ConstantRange IntMinMod(APInt::getSignedMinValue(16)); in TEST_F()
1309 ConstantRange Expected(16, true); in TEST_F()
1312 ConstantRange PosLargeLHS(APInt(16, 0), APInt(16, 41)); in TEST_F()
1313 Expected = ConstantRange(APInt(16, 0), APInt(16, 20)); in TEST_F()
1316 ConstantRange NegLargeLHS(APInt(16, -40), APInt(16, 1)); in TEST_F()
1317 Expected = ConstantRange(APInt(16, -19), APInt(16, 1)); in TEST_F()
1320 ConstantRange PosNegLargeLHS(APInt(16, -32), APInt(16, 38)); in TEST_F()
1321 Expected = ConstantRange(APInt(16, -19), APInt(16, 20)); in TEST_F()
1326 ConstantRange PosLHS(APInt(16, 0), APInt(16, 16)); in TEST_F()
1330 ConstantRange NegLHS(APInt(16, -15), APInt(16, 1)); in TEST_F()
1334 ConstantRange PosNegLHS(APInt(16, -12), APInt(16, 18)); in TEST_F()
1340 ConstantRange PosSmallLHS(APInt(16, 3), APInt(16, 8)); in TEST_F()
1344 ConstantRange NegSmallLHS(APInt(16, -7), APInt(16, -2)); in TEST_F()
1348 ConstantRange PosNegSmallLHS(APInt(16, -3), APInt(16, 8)); in TEST_F()
1355 EXPECT_EQ(ConstantRange(APInt(16, 12), APInt(16, 15)) in TEST_F()
1356 .srem(ConstantRange(APInt(16, 10))), in TEST_F()
1357 ConstantRange(APInt(16, 0), APInt(16, 10))); in TEST_F()
1360 [](const ConstantRange &CR1, const ConstantRange &CR2) { in TEST_F()
1370 ConstantRange Some2(APInt(16, 0xfff), APInt(16, 0x8000)); in TEST_F()
1371 ConstantRange WrapNullMax(APInt(16, 0x1), APInt(16, 0x0)); in TEST_F()
1381 EXPECT_EQ(One.shl(One), ConstantRange(APInt(16, 0xa << 0xa), in TEST_F()
1389 Some2.shl(ConstantRange(APInt(16, 0x1))), in TEST_F()
1390 ConstantRange(APInt(16, 0xfff << 0x1), APInt(16, 0x7fff << 0x1) + 1)); in TEST_F()
1397 EXPECT_EQ(Full.lshr(One), ConstantRange(APInt(16, 0), in TEST_F()
1399 EXPECT_EQ(Full.lshr(Some), ConstantRange(APInt(16, 0), in TEST_F()
1406 EXPECT_EQ(One.lshr(One), ConstantRange(APInt(16, 0))); in TEST_F()
1407 EXPECT_EQ(One.lshr(Some), ConstantRange(APInt(16, 0))); in TEST_F()
1408 EXPECT_EQ(One.lshr(Wrap), ConstantRange(APInt(16, 0), APInt(16, 0xb))); in TEST_F()
1409 EXPECT_EQ(Some.lshr(Some), ConstantRange(APInt(16, 0), in TEST_F()
1411 EXPECT_EQ(Some.lshr(Wrap), ConstantRange(APInt(16, 0), APInt(16, 0xaaa))); in TEST_F()
1418 EXPECT_EQ(Full.ashr(One), ConstantRange(APInt(16, 0xffe0), in TEST_F()
1420 ConstantRange Small(APInt(16, 0xa), APInt(16, 0xb)); in TEST_F()
1421 EXPECT_EQ(Full.ashr(Small), ConstantRange(APInt(16, 0xffe0), in TEST_F()
1423 EXPECT_EQ(Full.ashr(Some), ConstantRange(APInt(16, 0xffe0), in TEST_F()
1430 EXPECT_EQ(One.ashr(One), ConstantRange(APInt(16, 0))); in TEST_F()
1431 EXPECT_EQ(One.ashr(Some), ConstantRange(APInt(16, 0))); in TEST_F()
1432 EXPECT_EQ(One.ashr(Wrap), ConstantRange(APInt(16, 0), APInt(16, 0xb))); in TEST_F()
1433 EXPECT_EQ(Some.ashr(Some), ConstantRange(APInt(16, 0), in TEST_F()
1435 EXPECT_EQ(Some.ashr(Wrap), ConstantRange(APInt(16, 0), APInt(16, 0xaaa))); in TEST_F()
1437 ConstantRange Neg(APInt(16, 0xf3f0, true), APInt(16, 0xf7f8, true)); in TEST_F()
1438 EXPECT_EQ(Neg.ashr(Small), ConstantRange(APInt(16, 0xfffc, true), in TEST_F()
1442 TEST(ConstantRange, MakeAllowedICmpRegion) { in TEST() argument
1444 ConstantRange SMax = ConstantRange(APInt::getSignedMaxValue(32)); in TEST()
1445 EXPECT_TRUE(ConstantRange::makeAllowedICmpRegion(ICmpInst::ICMP_SGT, SMax) in TEST()
1449 TEST(ConstantRange, MakeSatisfyingICmpRegion) { in TEST() argument
1450 ConstantRange LowHalf(APInt(8, 0), APInt(8, 128)); in TEST()
1451 ConstantRange HighHalf(APInt(8, 128), APInt(8, 0)); in TEST()
1452 ConstantRange EmptySet(8, /* isFullSet = */ false); in TEST()
1454 EXPECT_EQ(ConstantRange::makeSatisfyingICmpRegion(ICmpInst::ICMP_NE, LowHalf), in TEST()
1458 ConstantRange::makeSatisfyingICmpRegion(ICmpInst::ICMP_NE, HighHalf), in TEST()
1461 EXPECT_TRUE(ConstantRange::makeSatisfyingICmpRegion(ICmpInst::ICMP_EQ, in TEST()
1464 ConstantRange UnsignedSample(APInt(8, 5), APInt(8, 200)); in TEST()
1466 EXPECT_EQ(ConstantRange::makeSatisfyingICmpRegion(ICmpInst::ICMP_ULT, in TEST()
1468 ConstantRange(APInt(8, 0), APInt(8, 5))); in TEST()
1470 EXPECT_EQ(ConstantRange::makeSatisfyingICmpRegion(ICmpInst::ICMP_ULE, in TEST()
1472 ConstantRange(APInt(8, 0), APInt(8, 6))); in TEST()
1474 EXPECT_EQ(ConstantRange::makeSatisfyingICmpRegion(ICmpInst::ICMP_UGT, in TEST()
1476 ConstantRange(APInt(8, 200), APInt(8, 0))); in TEST()
1478 EXPECT_EQ(ConstantRange::makeSatisfyingICmpRegion(ICmpInst::ICMP_UGE, in TEST()
1480 ConstantRange(APInt(8, 199), APInt(8, 0))); in TEST()
1482 ConstantRange SignedSample(APInt(8, -5), APInt(8, 5)); in TEST()
1485 ConstantRange::makeSatisfyingICmpRegion(ICmpInst::ICMP_SLT, SignedSample), in TEST()
1486 ConstantRange(APInt(8, -128), APInt(8, -5))); in TEST()
1489 ConstantRange::makeSatisfyingICmpRegion(ICmpInst::ICMP_SLE, SignedSample), in TEST()
1490 ConstantRange(APInt(8, -128), APInt(8, -4))); in TEST()
1493 ConstantRange::makeSatisfyingICmpRegion(ICmpInst::ICMP_SGT, SignedSample), in TEST()
1494 ConstantRange(APInt(8, 5), APInt(8, -128))); in TEST()
1497 ConstantRange::makeSatisfyingICmpRegion(ICmpInst::ICMP_SGE, SignedSample), in TEST()
1498 ConstantRange(APInt(8, 4), APInt(8, -128))); in TEST()
1501 TEST(ConstantRange, MakeGuaranteedNoWrapRegion) { in TEST() argument
1509 auto NUWRegion = ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1514 auto NSWRegion = ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1537 auto NUWRegion = ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1542 auto NSWRegion = ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1562 auto NSWForAllValues = ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1563 Instruction::Add, ConstantRange(32, /* isFullSet = */ true), in TEST()
1568 NSWForAllValues = ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1569 Instruction::Sub, ConstantRange(32, /* isFullSet = */ true), in TEST()
1574 auto NUWForAllValues = ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1575 Instruction::Add, ConstantRange(32, /* isFullSet = */ true), in TEST()
1580 NUWForAllValues = ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1581 Instruction::Sub, ConstantRange(32, /* isFullSet = */ true), in TEST()
1586 EXPECT_TRUE(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1588 EXPECT_TRUE(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1590 EXPECT_TRUE(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1592 EXPECT_TRUE(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1595 ConstantRange OneToFive(APInt(32, 1), APInt(32, 6)); in TEST()
1596 EXPECT_EQ(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1598 ConstantRange(APInt::getSignedMinValue(32), in TEST()
1600 EXPECT_EQ(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1602 ConstantRange(APInt::getMinValue(32), APInt::getMinValue(32) - 5)); in TEST()
1603 EXPECT_EQ(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1605 ConstantRange(APInt::getSignedMinValue(32) + 5, in TEST()
1607 EXPECT_EQ(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1609 ConstantRange(APInt::getMinValue(32) + 5, APInt::getMinValue(32))); in TEST()
1611 ConstantRange MinusFiveToMinusTwo(APInt(32, -5), APInt(32, -1)); in TEST()
1612 EXPECT_EQ(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1614 ConstantRange(APInt::getSignedMinValue(32) + 5, in TEST()
1616 EXPECT_EQ(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1618 ConstantRange(APInt(32, 0), APInt(32, 2))); in TEST()
1619 EXPECT_EQ(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1621 ConstantRange(APInt::getSignedMinValue(32), in TEST()
1623 EXPECT_EQ(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1625 ConstantRange(APInt::getMaxValue(32) - 1, in TEST()
1628 ConstantRange MinusOneToOne(APInt(32, -1), APInt(32, 2)); in TEST()
1629 EXPECT_EQ(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1631 ConstantRange(APInt::getSignedMinValue(32) + 1, in TEST()
1633 EXPECT_EQ(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1635 ConstantRange(APInt(32, 0), APInt(32, 1))); in TEST()
1636 EXPECT_EQ(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1638 ConstantRange(APInt::getSignedMinValue(32) + 1, in TEST()
1640 EXPECT_EQ(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1642 ConstantRange(APInt::getMaxValue(32), in TEST()
1645 ConstantRange One(APInt(32, 1), APInt(32, 2)); in TEST()
1646 EXPECT_EQ(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1648 ConstantRange(APInt::getSignedMinValue(32), in TEST()
1650 EXPECT_EQ(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1652 ConstantRange(APInt::getMinValue(32), APInt::getMaxValue(32))); in TEST()
1653 EXPECT_EQ(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1655 ConstantRange(APInt::getSignedMinValue(32) + 1, in TEST()
1657 EXPECT_EQ(ConstantRange::makeGuaranteedNoWrapRegion( 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()
1663 EXPECT_EQ(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1665 ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1667 EXPECT_EQ(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1669 ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1671 EXPECT_EQ(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1673 ConstantRange(APInt(32, 0), APInt(32, 1) + 1)); in TEST()
1674 EXPECT_EQ(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1676 ConstantRange(APInt(32, -1), APInt(32, 0) + 1)); in TEST()
1679 ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1680 Instruction::Shl, ConstantRange::getFull(32), OBO::NoUnsignedWrap), in TEST()
1681 ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1684 ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1685 Instruction::Shl, ConstantRange::getFull(32), OBO::NoSignedWrap), in TEST()
1686 ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1689 ConstantRange IllegalShAmt(APInt(32, 32), APInt(32, 0) + 1); in TEST()
1690 EXPECT_EQ(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1692 ConstantRange::getFull(32)); in TEST()
1693 EXPECT_EQ(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1695 ConstantRange::getFull(32)); in TEST()
1698 ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1699 Instruction::Shl, ConstantRange(APInt(32, -32), APInt(32, 16) + 1), in TEST()
1701 ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1702 Instruction::Shl, ConstantRange(APInt(32, 0), APInt(32, 16) + 1), in TEST()
1705 ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1706 Instruction::Shl, ConstantRange(APInt(32, -32), APInt(32, 16) + 1), in TEST()
1708 ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1709 Instruction::Shl, ConstantRange(APInt(32, 0), APInt(32, 16) + 1), in TEST()
1712 EXPECT_EQ(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1714 ConstantRange(APInt(32, -32), APInt(32, 16) + 1), in TEST()
1716 ConstantRange(APInt(32, 0), APInt(32, 65535) + 1)); in TEST()
1717 EXPECT_EQ(ConstantRange::makeGuaranteedNoWrapRegion( in TEST()
1719 ConstantRange(APInt(32, -32), APInt(32, 16) + 1), in TEST()
1721 ConstantRange(APInt(32, -32768), APInt(32, 32767) + 1)); in TEST()
1728 EnumerateConstantRanges(Bits, [&](const ConstantRange &CR) { in TestNoWrapRegionExhaustive()
1734 ConstantRange NoWrap = in TestNoWrapRegionExhaustive()
1735 ConstantRange::makeGuaranteedNoWrapRegion(BinOp, CR, NoWrapKind); in TestNoWrapRegionExhaustive()
1736 ConstantRange Full = ConstantRange::getFull(Bits); in TestNoWrapRegionExhaustive()
1758 TEST(ConstantRange, NoWrapRegionExhaustive) { in TEST() argument
1817 TEST(ConstantRange, GetEquivalentICmp) { in TEST() argument
1821 EXPECT_TRUE(ConstantRange(APInt::getMinValue(32), APInt(32, 100)) in TEST()
1826 EXPECT_TRUE(ConstantRange(APInt::getSignedMinValue(32), APInt(32, 100)) in TEST()
1831 EXPECT_TRUE(ConstantRange(APInt(32, 100), APInt::getMinValue(32)) in TEST()
1836 EXPECT_TRUE(ConstantRange(APInt(32, 100), APInt::getSignedMinValue(32)) in TEST()
1842 ConstantRange(32, /*isFullSet=*/true).getEquivalentICmp(Pred, RHS)); in TEST()
1847 ConstantRange(32, /*isFullSet=*/false).getEquivalentICmp(Pred, RHS)); in TEST()
1851 EXPECT_FALSE(ConstantRange(APInt(32, 100), APInt(32, 200)) in TEST()
1854 EXPECT_FALSE(ConstantRange(APInt::getSignedMinValue(32) - APInt(32, 100), in TEST()
1858 EXPECT_FALSE(ConstantRange(APInt::getMinValue(32) - APInt(32, 100), in TEST()
1862 EXPECT_TRUE(ConstantRange(APInt(32, 100)).getEquivalentICmp(Pred, RHS)); in TEST()
1867 ConstantRange(APInt(32, 100)).inverse().getEquivalentICmp(Pred, RHS)); in TEST()
1872 ConstantRange(APInt(512, 100)).inverse().getEquivalentICmp(Pred, RHS)); in TEST()
1880 EXPECT_TRUE(ConstantRange(APInt(32, 0)).getEquivalentICmp(Pred, RHS)); in TEST()
1885 ConstantRange(APInt(32, 0)).inverse().getEquivalentICmp(Pred, RHS)); in TEST()
1889 EXPECT_TRUE(ConstantRange(APInt(32, -1)).getEquivalentICmp(Pred, RHS)); in TEST()
1894 ConstantRange(APInt(32, -1)).inverse().getEquivalentICmp(Pred, RHS)); in TEST()
1900 EXPECT_EQ(ConstantRange::OverflowResult::MayOverflow, (op))
1902 EXPECT_EQ(ConstantRange::OverflowResult::AlwaysOverflowsLow, (op))
1904 EXPECT_EQ(ConstantRange::OverflowResult::AlwaysOverflowsHigh, (op))
1906 EXPECT_EQ(ConstantRange::OverflowResult::NeverOverflows, (op))
1914 ConstantRange Zero(APInt::getNullValue(16)); in TEST_F()
1926 ConstantRange A(APInt(16, 0xfd00), APInt(16, 0xfe00)); in TEST_F()
1927 ConstantRange B1(APInt(16, 0x0100), APInt(16, 0x0201)); in TEST_F()
1928 ConstantRange B2(APInt(16, 0x0100), APInt(16, 0x0202)); in TEST_F()
1934 ConstantRange C1(APInt(16, 0x0299), APInt(16, 0x0400)); in TEST_F()
1935 ConstantRange C2(APInt(16, 0x0300), APInt(16, 0x0400)); in TEST_F()
1948 ConstantRange Zero(APInt::getNullValue(16)); in TEST_F()
1949 ConstantRange Max(APInt::getAllOnesValue(16)); in TEST_F()
1961 ConstantRange A(APInt(16, 0x0000), APInt(16, 0x0100)); in TEST_F()
1962 ConstantRange B(APInt(16, 0x0100), APInt(16, 0x0200)); in TEST_F()
1966 ConstantRange A1(APInt(16, 0x0000), APInt(16, 0x0101)); in TEST_F()
1967 ConstantRange B1(APInt(16, 0x0100), APInt(16, 0x0201)); in TEST_F()
1971 ConstantRange A2(APInt(16, 0x0000), APInt(16, 0x0102)); in TEST_F()
1972 ConstantRange B2(APInt(16, 0x0100), APInt(16, 0x0202)); in TEST_F()
1983 ConstantRange Zero(APInt::getNullValue(16)); in TEST_F()
1995 ConstantRange A(APInt(16, 0x7d00), APInt(16, 0x7e00)); in TEST_F()
1996 ConstantRange B1(APInt(16, 0x0100), APInt(16, 0x0201)); in TEST_F()
1997 ConstantRange B2(APInt(16, 0x0100), APInt(16, 0x0202)); in TEST_F()
2000 ConstantRange B3(APInt(16, 0x8000), APInt(16, 0x0201)); in TEST_F()
2001 ConstantRange B4(APInt(16, 0x8000), APInt(16, 0x0202)); in TEST_F()
2004 ConstantRange B5(APInt(16, 0x0299), APInt(16, 0x0400)); in TEST_F()
2005 ConstantRange B6(APInt(16, 0x0300), APInt(16, 0x0400)); in TEST_F()
2009 ConstantRange C(APInt(16, 0x8200), APInt(16, 0x8300)); in TEST_F()
2010 ConstantRange D1(APInt(16, 0xfe00), APInt(16, 0xff00)); in TEST_F()
2011 ConstantRange D2(APInt(16, 0xfd99), APInt(16, 0xff00)); in TEST_F()
2014 ConstantRange D3(APInt(16, 0xfe00), APInt(16, 0x8000)); in TEST_F()
2015 ConstantRange D4(APInt(16, 0xfd99), APInt(16, 0x8000)); in TEST_F()
2018 ConstantRange D5(APInt(16, 0xfc00), APInt(16, 0xfd02)); in TEST_F()
2019 ConstantRange D6(APInt(16, 0xfc00), APInt(16, 0xfd01)); in TEST_F()
2023 ConstantRange E(APInt(16, 0xff00), APInt(16, 0x0100)); in TEST_F()
2025 ConstantRange F(APInt(16, 0xf000), APInt(16, 0x7000)); in TEST_F()
2035 ConstantRange Zero(APInt::getNullValue(16)); in TEST_F()
2045 ConstantRange A(APInt(16, 0x7d00), APInt(16, 0x7e00)); in TEST_F()
2046 ConstantRange B1(APInt(16, 0xfe00), APInt(16, 0xff00)); in TEST_F()
2047 ConstantRange B2(APInt(16, 0xfd99), APInt(16, 0xff00)); in TEST_F()
2050 ConstantRange B3(APInt(16, 0xfc00), APInt(16, 0xfd02)); in TEST_F()
2051 ConstantRange B4(APInt(16, 0xfc00), APInt(16, 0xfd01)); in TEST_F()
2055 ConstantRange C(APInt(16, 0x8200), APInt(16, 0x8300)); in TEST_F()
2056 ConstantRange D1(APInt(16, 0x0100), APInt(16, 0x0201)); in TEST_F()
2057 ConstantRange D2(APInt(16, 0x0100), APInt(16, 0x0202)); in TEST_F()
2060 ConstantRange D3(APInt(16, 0x0299), APInt(16, 0x0400)); in TEST_F()
2061 ConstantRange D4(APInt(16, 0x0300), APInt(16, 0x0400)); in TEST_F()
2065 ConstantRange E(APInt(16, 0xff00), APInt(16, 0x0100)); in TEST_F()
2067 ConstantRange F(APInt(16, 0xf000), APInt(16, 0x7001)); in TEST_F()
2075 EnumerateTwoConstantRanges(Bits, [=](const ConstantRange &CR1, in TestOverflowExhaustive()
2076 const ConstantRange &CR2) { in TestOverflowExhaustive()
2097 ConstantRange::OverflowResult OR = MayOverflowFn(CR1, CR2); in TestOverflowExhaustive()
2099 case ConstantRange::OverflowResult::AlwaysOverflowsLow: in TestOverflowExhaustive()
2104 case ConstantRange::OverflowResult::AlwaysOverflowsHigh: in TestOverflowExhaustive()
2109 case ConstantRange::OverflowResult::NeverOverflows: in TestOverflowExhaustive()
2114 case ConstantRange::OverflowResult::MayOverflow: in TestOverflowExhaustive()
2136 [](const ConstantRange &CR1, const ConstantRange &CR2) { in TEST_F()
2149 [](const ConstantRange &CR1, const ConstantRange &CR2) { in TEST_F()
2162 [](const ConstantRange &CR1, const ConstantRange &CR2) { in TEST_F()
2175 [](const ConstantRange &CR1, const ConstantRange &CR2) { in TEST_F()
2188 [](const ConstantRange &CR1, const ConstantRange &CR2) { in TEST_F()
2195 EXPECT_EQ(Full, ConstantRange::fromKnownBits(Unknown, /*signed*/false)); in TEST_F()
2196 EXPECT_EQ(Full, ConstantRange::fromKnownBits(Unknown, /*signed*/true)); in TEST_F()
2203 ConstantRange Unsigned(APInt(8, 66), APInt(8, 219 + 1)); in TEST_F()
2204 ConstantRange Signed(APInt(8, 194), APInt(8, 91 + 1)); in TEST_F()
2205 EXPECT_EQ(Unsigned, ConstantRange::fromKnownBits(Known, /*signed*/false)); in TEST_F()
2206 EXPECT_EQ(Signed, ConstantRange::fromKnownBits(Known, /*signed*/true)); in TEST_F()
2211 ConstantRange CR1(APInt(8, 164), APInt(8, 237 + 1)); in TEST_F()
2212 EXPECT_EQ(CR1, ConstantRange::fromKnownBits(Known, /*signed*/false)); in TEST_F()
2213 EXPECT_EQ(CR1, ConstantRange::fromKnownBits(Known, /*signed*/true)); in TEST_F()
2218 ConstantRange CR2(APInt(8, 68), APInt(8, 110 + 1)); in TEST_F()
2219 EXPECT_EQ(CR2, ConstantRange::fromKnownBits(Known, /*signed*/false)); in TEST_F()
2220 EXPECT_EQ(CR2, ConstantRange::fromKnownBits(Known, /*signed*/true)); in TEST_F()
2245 ConstantRange UnsignedCR = UR.getRange(); in TEST_F()
2246 ConstantRange SignedCR = SR.getRange(); in TEST_F()
2247 EXPECT_EQ(UnsignedCR, ConstantRange::fromKnownBits(Known, false)); in TEST_F()
2248 EXPECT_EQ(SignedCR, ConstantRange::fromKnownBits(Known, true)); in TEST_F()
2263 EnumerateConstantRanges(Bits, [](const ConstantRange &CR) { in TEST_F()
2282 [](const ConstantRange &CR1, const ConstantRange &CR2) { in TEST_F()
2292 [](const ConstantRange &CR1, const ConstantRange &CR2) { in TEST_F()
2302 [](const ConstantRange &CR1, const ConstantRange &CR2) { in TEST_F()
2310 [](const ConstantRange &CR1, const ConstantRange &CR2) { in TEST_F()
2318 [](const ConstantRange &CR1, const ConstantRange &CR2) { in TEST_F()
2328 [](const ConstantRange &CR1, const ConstantRange &CR2) { in TEST_F()
2338 [](const ConstantRange &CR1, const ConstantRange &CR2) { in TEST_F()
2346 [](const ConstantRange &CR1, const ConstantRange &CR2) { in TEST_F()
2356 [](const ConstantRange &CR) { return CR.abs(); }, in TEST_F()
2360 [](const ConstantRange &CR) { return CR.abs(/*IntMinIsPoison=*/true); }, in TEST_F()
2366 ConstantRange A(APInt(16, 66), APInt(16, 128)); in TEST_F()
2367 ConstantRange FpToI8 = A.castOp(Instruction::FPToSI, 8); in TEST_F()
2371 ConstantRange FpToI16 = A.castOp(Instruction::FPToSI, 16); in TEST_F()
2375 ConstantRange FPExtToDouble = A.castOp(Instruction::FPExt, 64); in TEST_F()
2379 ConstantRange PtrToInt = A.castOp(Instruction::PtrToInt, 64); in TEST_F()
2383 ConstantRange IntToPtr = A.castOp(Instruction::IntToPtr, 64); in TEST_F()
2390 ConstantRange R16(APInt(8, 16)); in TEST_F()
2391 ConstantRange R20(APInt(8, 20)); in TEST_F()
2396 ConstantRange R16_35(APInt(8, 16), APInt(8, 35)); in TEST_F()
2397 ConstantRange R0_99(APInt(8, 0), APInt(8, 99)); in TEST_F()
2405 [](const ConstantRange &CR) { return CR.binaryNot(); }, in TEST_F()
2408 [](const ConstantRange &CR) { in TEST_F()
2410 ConstantRange(APInt::getAllOnesValue(CR.getBitWidth()))); in TEST_F()
2414 [](const ConstantRange &CR) { in TEST_F()
2415 return ConstantRange(APInt::getAllOnesValue(CR.getBitWidth())) in TEST_F()