|
34 | 34 | is_symbolic, |
35 | 35 | ShapeEnv, |
36 | 36 | StatelessSymbolicContext, |
| 37 | + statically_known_false, |
37 | 38 | statically_known_true, |
38 | 39 | ) |
39 | 40 | from torch.testing._internal.common_dtype import all_types_and |
@@ -1214,6 +1215,36 @@ def test_statically_known_true(self): |
1214 | 1215 | # No guards should be generated |
1215 | 1216 | self.assertEqual(len(shape_env.guards), 0) |
1216 | 1217 |
|
| 1218 | + def test_statically_known_false(self): |
| 1219 | + shape_env = ShapeEnv() |
| 1220 | + s2, s3, s4 = (create_symint(shape_env, i) for i in range(2, 5)) |
| 1221 | + |
| 1222 | + # Statically known true |
| 1223 | + self.assertFalse(statically_known_false(True)) |
| 1224 | + self.assertFalse(statically_known_false(s2 == s2)) |
| 1225 | + self.assertFalse(statically_known_false(s2 * s3 > s3)) |
| 1226 | + self.assertFalse(statically_known_false(s3 * s4 > s4)) |
| 1227 | + self.assertFalse(statically_known_false((s3 + s3) % 2 == 0)) |
| 1228 | + |
| 1229 | + # Statically known false |
| 1230 | + self.assertTrue(statically_known_false(False)) |
| 1231 | + self.assertTrue(statically_known_false(s3 * s4 <= s4)) |
| 1232 | + self.assertTrue(statically_known_false((s3 + s3) % 2 == 1)) |
| 1233 | + |
| 1234 | + # True for hints, but not known statically |
| 1235 | + self.assertFalse(statically_known_false(s2 + s2 == s4)) |
| 1236 | + self.assertFalse(statically_known_false(s4 % s2 == 0)) |
| 1237 | + self.assertFalse(statically_known_false(s2 != s3)) |
| 1238 | + self.assertFalse(statically_known_false(s3 * s4 > s2)) |
| 1239 | + |
| 1240 | + # False for hints, but not known statically |
| 1241 | + self.assertFalse(statically_known_false(s2 == s3)) |
| 1242 | + self.assertFalse(statically_known_false(s2 > s3)) |
| 1243 | + self.assertFalse(statically_known_false(s3 + s3 == s4)) |
| 1244 | + |
| 1245 | + # No guards should be generated |
| 1246 | + self.assertEqual(len(shape_env.guards), 0) |
| 1247 | + |
1217 | 1248 | def test_ephemeral_source_simplification(self): |
1218 | 1249 | from torch._dynamo.source import EphemeralSource |
1219 | 1250 |
|
|
0 commit comments