|
reference, declaration → definition
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());