reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

Declarations

unittests/IR/ConstantRangeTest.cpp
   22   static ConstantRange Full;

References

unittests/IR/ConstantRangeTest.cpp
  143   EXPECT_TRUE(Full.isFullSet());
  144   EXPECT_FALSE(Full.isEmptySet());
  145   EXPECT_TRUE(Full.inverse().isEmptySet());
  146   EXPECT_FALSE(Full.isWrappedSet());
  147   EXPECT_TRUE(Full.contains(APInt(16, 0x0)));
  148   EXPECT_TRUE(Full.contains(APInt(16, 0x9)));
  149   EXPECT_TRUE(Full.contains(APInt(16, 0xa)));
  150   EXPECT_TRUE(Full.contains(APInt(16, 0xaa9)));
  151   EXPECT_TRUE(Full.contains(APInt(16, 0xaaa)));
  193   EXPECT_EQ(Full, Full);
  193   EXPECT_EQ(Full, Full);
  198   EXPECT_NE(Full, Empty);
  199   EXPECT_NE(Full, One);
  200   EXPECT_NE(Full, Some);
  201   EXPECT_NE(Full, Wrap);
  211   EXPECT_EQ(Full.getSingleElement(), static_cast<APInt *>(nullptr));
  213   EXPECT_EQ(Full.getSingleMissingElement(), static_cast<APInt *>(nullptr));
  226   EXPECT_FALSE(Full.isSingleElement());
  234   EXPECT_EQ(Full.getUnsignedMax(), APInt(16, UINT16_MAX));
  239   EXPECT_EQ(Full.getUnsignedMin(), APInt(16, 0));
  244   EXPECT_EQ(Full.getSignedMax(), APInt(16, INT16_MAX));
  249   EXPECT_EQ(Full.getSignedMin(), APInt(16, (uint64_t)INT16_MIN));
  260   EXPECT_FALSE(Full.isSignWrappedSet());
  277   EXPECT_FALSE(Full.isUpperWrapped());
  282   EXPECT_FALSE(Full.isUpperSignWrapped());
  299   ConstantRange TFull = Full.truncate(10);
  329   ConstantRange ZFull = Full.zeroExtend(20);
  348   ConstantRange SFull = Full.signExtend(20);
  371   EXPECT_EQ(Empty.intersectWith(Full), Empty);
  376   EXPECT_EQ(Full.intersectWith(Full), Full);
  376   EXPECT_EQ(Full.intersectWith(Full), Full);
  376   EXPECT_EQ(Full.intersectWith(Full), Full);
  379   EXPECT_EQ(Full.intersectWith(One), One);
  380   EXPECT_EQ(Full.intersectWith(Some), Some);
  583   EXPECT_EQ(Full.unionWith(Full), Full);
  583   EXPECT_EQ(Full.unionWith(Full), Full);
  583   EXPECT_EQ(Full.unionWith(Full), Full);
  584   EXPECT_EQ(Some.unionWith(Wrap), Full);
  599   EXPECT_EQ(Full.difference(Empty), Full);
  599   EXPECT_EQ(Full.difference(Empty), Full);
  600   EXPECT_EQ(Full.difference(Full), Empty);
  600   EXPECT_EQ(Full.difference(Full), Empty);
  602   EXPECT_EQ(Empty.difference(Full), Empty);
  616   EXPECT_EQ(Full.subtract(APInt(16, 4)), Full);
  616   EXPECT_EQ(Full.subtract(APInt(16, 4)), Full);
  627   EXPECT_EQ(Full.add(APInt(16, 4)), Full);
  627   EXPECT_EQ(Full.add(APInt(16, 4)), Full);
  628   EXPECT_EQ(Full.add(Full), Full);
  628   EXPECT_EQ(Full.add(Full), Full);
  628   EXPECT_EQ(Full.add(Full), Full);
  629   EXPECT_EQ(Full.add(Empty), Empty);
  630   EXPECT_EQ(Full.add(One), Full);
  630   EXPECT_EQ(Full.add(One), Full);
  631   EXPECT_EQ(Full.add(Some), Full);
  631   EXPECT_EQ(Full.add(Some), Full);
  632   EXPECT_EQ(Full.add(Wrap), Full);
  632   EXPECT_EQ(Full.add(Wrap), Full);
  763   EXPECT_EQ(Full.addWithNoWrap(Full, OBO::NoSignedWrap), Full);
  763   EXPECT_EQ(Full.addWithNoWrap(Full, OBO::NoSignedWrap), Full);
  763   EXPECT_EQ(Full.addWithNoWrap(Full, OBO::NoSignedWrap), Full);
  764   EXPECT_NE(Full.addWithNoWrap(Some, OBO::NoSignedWrap), Full);
  764   EXPECT_NE(Full.addWithNoWrap(Some, OBO::NoSignedWrap), Full);
  765   EXPECT_NE(Some.addWithNoWrap(Full, OBO::NoSignedWrap), Full);
  765   EXPECT_NE(Some.addWithNoWrap(Full, OBO::NoSignedWrap), Full);
  766   EXPECT_EQ(Full.addWithNoWrap(ConstantRange(APInt(16, 1), APInt(16, 2)),
  770                 .addWithNoWrap(Full, OBO::NoSignedWrap),
  772   EXPECT_EQ(Full.addWithNoWrap(ConstantRange(APInt(16, -1), APInt(16, 0)),
  818   EXPECT_EQ(Full.addWithNoWrap(Full, OBO::NoUnsignedWrap), Full);
  818   EXPECT_EQ(Full.addWithNoWrap(Full, OBO::NoUnsignedWrap), Full);
  818   EXPECT_EQ(Full.addWithNoWrap(Full, OBO::NoUnsignedWrap), Full);
  819   EXPECT_NE(Full.addWithNoWrap(Some, OBO::NoUnsignedWrap), Full);
  819   EXPECT_NE(Full.addWithNoWrap(Some, OBO::NoUnsignedWrap), Full);
  820   EXPECT_NE(Some.addWithNoWrap(Full, OBO::NoUnsignedWrap), Full);
  820   EXPECT_NE(Some.addWithNoWrap(Full, OBO::NoUnsignedWrap), Full);
  821   EXPECT_EQ(Full.addWithNoWrap(ConstantRange(APInt(16, 1), APInt(16, 2)),
  825                 .addWithNoWrap(Full, OBO::NoUnsignedWrap),
  903   EXPECT_EQ(Full.sub(APInt(16, 4)), Full);
  903   EXPECT_EQ(Full.sub(APInt(16, 4)), Full);
  904   EXPECT_EQ(Full.sub(Full), Full);
  904   EXPECT_EQ(Full.sub(Full), Full);
  904   EXPECT_EQ(Full.sub(Full), Full);
  905   EXPECT_EQ(Full.sub(Empty), Empty);
  906   EXPECT_EQ(Full.sub(One), Full);
  906   EXPECT_EQ(Full.sub(One), Full);
  907   EXPECT_EQ(Full.sub(Some), Full);
  907   EXPECT_EQ(Full.sub(Some), Full);
  908   EXPECT_EQ(Full.sub(Wrap), Full);
  908   EXPECT_EQ(Full.sub(Wrap), Full);
  925   EXPECT_EQ(Full.multiply(Full), Full);
  925   EXPECT_EQ(Full.multiply(Full), Full);
  925   EXPECT_EQ(Full.multiply(Full), Full);
  926   EXPECT_EQ(Full.multiply(Empty), Empty);
  927   EXPECT_EQ(Full.multiply(One), Full);
  927   EXPECT_EQ(Full.multiply(One), Full);
  928   EXPECT_EQ(Full.multiply(Some), Full);
  928   EXPECT_EQ(Full.multiply(Some), Full);
  929   EXPECT_EQ(Full.multiply(Wrap), Full);
  929   EXPECT_EQ(Full.multiply(Wrap), Full);
  938   EXPECT_EQ(One.multiply(Wrap), Full);
  939   EXPECT_EQ(Some.multiply(Some), Full);
  940   EXPECT_EQ(Some.multiply(Wrap), Full);
  941   EXPECT_EQ(Wrap.multiply(Wrap), Full);
  944   EXPECT_EQ(Zero.multiply(Full), Zero);
  947   EXPECT_EQ(Full.multiply(Zero), Zero);
  970   EXPECT_EQ(Full.umax(Full), Full);
  970   EXPECT_EQ(Full.umax(Full), Full);
  970   EXPECT_EQ(Full.umax(Full), Full);
  971   EXPECT_EQ(Full.umax(Empty), Empty);
  972   EXPECT_EQ(Full.umax(Some), ConstantRange(APInt(16, 0xa), APInt(16, 0)));
  973   EXPECT_EQ(Full.umax(Wrap), Full);
  973   EXPECT_EQ(Full.umax(Wrap), Full);
  974   EXPECT_EQ(Full.umax(Some), ConstantRange(APInt(16, 0xa), APInt(16, 0)));
  983   EXPECT_EQ(Wrap.umax(Wrap), Full);
  989   EXPECT_EQ(Full.smax(Full), Full);
  989   EXPECT_EQ(Full.smax(Full), Full);
  989   EXPECT_EQ(Full.smax(Full), Full);
  990   EXPECT_EQ(Full.smax(Empty), Empty);
  991   EXPECT_EQ(Full.smax(Some), ConstantRange(APInt(16, 0xa),
  993   EXPECT_EQ(Full.smax(Wrap), Full);
  993   EXPECT_EQ(Full.smax(Wrap), Full);
  994   EXPECT_EQ(Full.smax(One), ConstantRange(APInt(16, 0xa),
 1010   EXPECT_EQ(Full.umin(Full), Full);
 1010   EXPECT_EQ(Full.umin(Full), Full);
 1010   EXPECT_EQ(Full.umin(Full), Full);
 1011   EXPECT_EQ(Full.umin(Empty), Empty);
 1012   EXPECT_EQ(Full.umin(Some), ConstantRange(APInt(16, 0), APInt(16, 0xaaa)));
 1013   EXPECT_EQ(Full.umin(Wrap), Full);
 1013   EXPECT_EQ(Full.umin(Wrap), Full);
 1022   EXPECT_EQ(Wrap.umin(Wrap), Full);
 1028   EXPECT_EQ(Full.smin(Full), Full);
 1028   EXPECT_EQ(Full.smin(Full), Full);
 1028   EXPECT_EQ(Full.smin(Full), Full);
 1029   EXPECT_EQ(Full.smin(Empty), Empty);
 1030   EXPECT_EQ(Full.smin(Some), ConstantRange(APInt(16, (uint64_t)INT16_MIN),
 1032   EXPECT_EQ(Full.smin(Wrap), Full);
 1032   EXPECT_EQ(Full.smin(Wrap), Full);
 1042   EXPECT_EQ(Wrap.smin(Wrap), Full);
 1049   EXPECT_EQ(Full.udiv(Full), Full);
 1049   EXPECT_EQ(Full.udiv(Full), Full);
 1049   EXPECT_EQ(Full.udiv(Full), Full);
 1050   EXPECT_EQ(Full.udiv(Empty), Empty);
 1051   EXPECT_EQ(Full.udiv(One), ConstantRange(APInt(16, 0),
 1053   EXPECT_EQ(Full.udiv(Some), ConstantRange(APInt(16, 0),
 1055   EXPECT_EQ(Full.udiv(Wrap), Full);
 1055   EXPECT_EQ(Full.udiv(Wrap), Full);
 1065   EXPECT_EQ(Wrap.udiv(Wrap), Full);
 1070   EXPECT_EQ(Zero.udiv(Full), Zero);
 1072   EXPECT_EQ(ConstantRange(APInt(16, 0), APInt(16, 99)).udiv(Full),
 1074   EXPECT_EQ(ConstantRange(APInt(16, 10), APInt(16, 99)).udiv(Full),
 1136   EXPECT_EQ(Full.urem(Empty), Empty);
 1137   EXPECT_EQ(Empty.urem(Full), Empty);
 1139   EXPECT_EQ(Full.urem(ConstantRange(APInt(16, 0))), Empty);
 1141   EXPECT_EQ(Full.urem(Full), ConstantRange(APInt(16, 0), APInt(16, 0xffff)));
 1141   EXPECT_EQ(Full.urem(Full), ConstantRange(APInt(16, 0), APInt(16, 0xffff)));
 1143   EXPECT_EQ(Full.urem(ConstantRange(APInt(16, 0), APInt(16, 123))),
 1146   EXPECT_EQ(ConstantRange(APInt(16, 0), APInt(16, 123)).urem(Full),
 1172   EXPECT_EQ(Full.srem(Empty), Empty);
 1173   EXPECT_EQ(Empty.srem(Full), Empty);
 1175   EXPECT_EQ(Full.srem(ConstantRange(APInt(16, 0))), Empty);
 1177   EXPECT_EQ(Full.srem(Full), ConstantRange(APInt::getSignedMinValue(16) + 1,
 1177   EXPECT_EQ(Full.srem(Full), ConstantRange(APInt::getSignedMinValue(16) + 1,
 1247   EXPECT_EQ(Full.shl(Full), Full);
 1247   EXPECT_EQ(Full.shl(Full), Full);
 1247   EXPECT_EQ(Full.shl(Full), Full);
 1248   EXPECT_EQ(Full.shl(Empty), Empty);
 1249   EXPECT_EQ(Full.shl(One), Full);    // TODO: [0, (-1 << 0xa) + 1)
 1249   EXPECT_EQ(Full.shl(One), Full);    // TODO: [0, (-1 << 0xa) + 1)
 1250   EXPECT_EQ(Full.shl(Some), Full);   // TODO: [0, (-1 << 0xa) + 1)
 1250   EXPECT_EQ(Full.shl(Some), Full);   // TODO: [0, (-1 << 0xa) + 1)
 1251   EXPECT_EQ(Full.shl(Wrap), Full);
 1251   EXPECT_EQ(Full.shl(Wrap), Full);
 1258   EXPECT_EQ(One.shl(Some), Full);    // TODO: [0xa << 0xa, 0)
 1259   EXPECT_EQ(One.shl(Wrap), Full);    // TODO: [0xa, 0xa << 14 + 1)
 1260   EXPECT_EQ(Some.shl(Some), Full);   // TODO: [0xa << 0xa, 0xfc01)
 1261   EXPECT_EQ(Some.shl(Wrap), Full);   // TODO: [0xa, 0x7ff << 0x5 + 1)
 1262   EXPECT_EQ(Wrap.shl(Wrap), Full);
 1266   EXPECT_EQ(One.shl(WrapNullMax), Full);
 1270   EXPECT_EQ(Full.lshr(Full), Full);
 1270   EXPECT_EQ(Full.lshr(Full), Full);
 1270   EXPECT_EQ(Full.lshr(Full), Full);
 1271   EXPECT_EQ(Full.lshr(Empty), Empty);
 1272   EXPECT_EQ(Full.lshr(One), ConstantRange(APInt(16, 0),
 1274   EXPECT_EQ(Full.lshr(Some), ConstantRange(APInt(16, 0),
 1276   EXPECT_EQ(Full.lshr(Wrap), Full);
 1276   EXPECT_EQ(Full.lshr(Wrap), Full);
 1287   EXPECT_EQ(Wrap.lshr(Wrap), Full);
 1291   EXPECT_EQ(Full.ashr(Full), Full);
 1291   EXPECT_EQ(Full.ashr(Full), Full);
 1291   EXPECT_EQ(Full.ashr(Full), Full);
 1292   EXPECT_EQ(Full.ashr(Empty), Empty);
 1293   EXPECT_EQ(Full.ashr(One), ConstantRange(APInt(16, 0xffe0),
 1296   EXPECT_EQ(Full.ashr(Small), ConstantRange(APInt(16, 0xffe0),
 1298   EXPECT_EQ(Full.ashr(Some), ConstantRange(APInt(16, 0xffe0),
 1300   EXPECT_EQ(Full.ashr(Wrap), Full);
 1300   EXPECT_EQ(Full.ashr(Wrap), Full);
 1311   EXPECT_EQ(Wrap.ashr(Wrap), Full);
 1790   EXPECT_NEVER_OVERFLOWS(Full.unsignedAddMayOverflow(Zero));
 1792   EXPECT_NEVER_OVERFLOWS(Zero.unsignedAddMayOverflow(Full));
 1796   EXPECT_MAY_OVERFLOW(Full.unsignedAddMayOverflow(One));
 1798   EXPECT_MAY_OVERFLOW(One.unsignedAddMayOverflow(Full));
 1825   EXPECT_NEVER_OVERFLOWS(Full.unsignedSubMayOverflow(Zero));
 1827   EXPECT_NEVER_OVERFLOWS(Max.unsignedSubMayOverflow(Full));
 1831   EXPECT_MAY_OVERFLOW(Full.unsignedSubMayOverflow(One));
 1833   EXPECT_MAY_OVERFLOW(One.unsignedSubMayOverflow(Full));
 1859   EXPECT_NEVER_OVERFLOWS(Full.signedAddMayOverflow(Zero));
 1861   EXPECT_NEVER_OVERFLOWS(Zero.signedAddMayOverflow(Full));
 1865   EXPECT_MAY_OVERFLOW(Full.signedAddMayOverflow(One));
 1867   EXPECT_MAY_OVERFLOW(One.signedAddMayOverflow(Full));
 1911   EXPECT_NEVER_OVERFLOWS(Full.signedSubMayOverflow(Zero));
 1915   EXPECT_MAY_OVERFLOW(Full.signedSubMayOverflow(One));
 1917   EXPECT_MAY_OVERFLOW(One.signedSubMayOverflow(Full));
 2070   EXPECT_EQ(Full, ConstantRange::fromKnownBits(Unknown, /*signed*/false));
 2071   EXPECT_EQ(Full, ConstantRange::fromKnownBits(Unknown, /*signed*/true));
 2138   EXPECT_FALSE(Full.isAllNegative());
 2139   EXPECT_FALSE(Full.isAllNonNegative());