Lines Matching defs:CR

48       ConstantRange CR(APInt(Bits, Lo), APInt(Bits, Hi));
49 TestFn(CR);
73 static void ForeachNumInConstantRange(const ConstantRange &CR, Fn TestFn) {
74 if (!CR.isEmptySet()) {
75 APInt N = CR.getLower();
77 while (++N != CR.getUpper());
115 testing::AssertionResult rangeContains(const ConstantRange &CR, const APInt &N,
117 if (CR.contains(N))
121 Result << CR << " does not contain " << N << " for inputs: ";
127 // Check whether constant range CR is an optimal approximation of the set
130 static void TestRange(const ConstantRange &CR, const SmallBitVector &Elems,
133 unsigned BitWidth = CR.getBitWidth();
137 EXPECT_TRUE(rangeContains(CR, APInt(BitWidth, Elem), Inputs));
145 EXPECT_TRUE(CR.isEmptySet());
150 if (!PreferenceFn(PossibleCR, CR))
157 Result << "CR = " << CR << ", BetterCR = " << PossibleCR;
191 EnumerateInterestingConstantRanges([&](const ConstantRange &CR) {
192 SmallBitVector Elems(1 << CR.getBitWidth());
193 ForeachNumInConstantRange(CR, [&](const APInt &N) {
197 TestRange(RangeFn(CR), Elems, PreferenceFn, {CR});
649 EnumerateInterestingConstantRanges([&](const ConstantRange &CR) {
651 ForeachNumInConstantRange(CR, [&](const APInt &N) {
655 unsigned ResultCR = CR.getActiveBits();
660 EnumerateInterestingConstantRanges([&](const ConstantRange &CR) {
661 unsigned Bits = CR.getBitWidth();
662 unsigned MinBitWidth = CR.getActiveBits();
664 EXPECT_TRUE(CR.isEmptySet() ||
665 (CR.isSingleElement() && CR.getSingleElement()->isZero()));
670 EXPECT_EQ(CR, CR.truncate(MinBitWidth).zeroExtend(Bits));
675 EnumerateInterestingConstantRanges([&](const ConstantRange &CR) {
677 ForeachNumInConstantRange(CR, [&](const APInt &N) {
681 unsigned ResultCR = CR.getMinSignedBits();
686 EnumerateInterestingConstantRanges([&](const ConstantRange &CR) {
687 unsigned Bits = CR.getBitWidth();
688 unsigned MinBitWidth = CR.getMinSignedBits();
690 EXPECT_TRUE(CR.isEmptySet());
695 EXPECT_EQ(CR, CR.truncate(MinBitWidth).signExtend(Bits));
1322 ConstantRange CR = CR1.sdiv(CR2);
1324 EXPECT_TRUE(CR.isEmptySet());
1333 EXPECT_EQ(Envelope, CR);
1352 EXPECT_EQ(Wrapped, CR);
1939 EnumerateConstantRanges(Bits, [&](const ConstantRange &CR) {
1940 if (CR.isEmptySet())
1942 if (Instruction::isShift(BinOp) && CR.getUnsignedMax().uge(Bits))
1946 ConstantRange::makeGuaranteedNoWrapRegion(BinOp, CR, NoWrapKind);
1950 ForeachNumInConstantRange(CR, [&](const APInt &N2) {
1959 if (CR.isSingleElement()) {
2110 EnumerateInterestingConstantRanges([](const ConstantRange &CR) {
2111 unsigned Bits = CR.getBitWidth();
2114 CR.getEquivalentICmp(Pred, RHS, Offset);
2117 EXPECT_EQ(CR.contains(N), Result);
2120 if (CR.getEquivalentICmp(Pred, RHS)) {
2123 EXPECT_EQ(CR.contains(N), Result);
2480 EnumerateInterestingConstantRanges([&](const ConstantRange &CR) {
2481 KnownBits Known = CR.toKnownBits();
2482 KnownBits ExpectedKnown(CR.getBitWidth());
2485 ForeachNumInConstantRange(CR, [&](const APInt &N) {
2489 // For an empty CR any result would be legal.
2490 if (!CR.isEmptySet()) {
2507 EnumerateInterestingConstantRanges([](const ConstantRange &CR) {
2511 ForeachNumInConstantRange(CR, [&](const APInt &N) {
2520 (CR.isEmptySet() || !AllNegative || !AllNonNegative || !AllPositive) &&
2524 EXPECT_EQ(AllNegative, CR.isAllNegative());
2525 EXPECT_EQ(AllNonNegative, CR.isAllNonNegative());
2526 EXPECT_EQ(AllPositive, CR.isAllPositive());
2612 [](const ConstantRange &CR) { return CR.abs(); },
2616 [](const ConstantRange &CR) { return CR.abs(/*IntMinIsPoison=*/true); },
2626 [](const ConstantRange &CR) { return CR.ctlz(); },
2630 [](const ConstantRange &CR) { return CR.ctlz(/*ZeroIsPoison=*/true); },
2640 [](const ConstantRange &CR) { return CR.cttz(); },
2644 [](const ConstantRange &CR) { return CR.cttz(/*ZeroIsPoison=*/true); },
2654 [](const ConstantRange &CR) { return CR.ctpop(); },
2833 [](const ConstantRange &CR) { return CR.binaryNot(); },
2837 [](const ConstantRange &CR) {
2838 return CR.binaryXor(ConstantRange(APInt::getAllOnes(CR.getBitWidth())));
2842 [](const ConstantRange &CR) {
2843 return ConstantRange(APInt::getAllOnes(CR.getBitWidth())).binaryXor(CR);
2933 ConstantRange CR(APInt(4, 2), APInt(4, 1));
2934 EXPECT_EQ(CR, ConstantRange::makeMaskNotEqualRange(APInt(4, 1), APInt(4, 1)));
2935 EXPECT_NE(CR, ConstantRange::makeMaskNotEqualRange(APInt(4, 0),
2937 EXPECT_TRUE(CR.contains(APInt(4, 7)));
2938 EXPECT_TRUE(CR.contains(APInt(4, 15)));
2946 // CR: [-16, -8). MMNE() = [-8, -16)