@@ -809,127 +809,4 @@ TEST(FlatAffineConstraintsTest, simplifyLocalsTest) {
809809 EXPECT_TRUE (fac3.isEmpty ());
810810}
811811
812- TEST (FlatAffineConstraintsTest, mergeDivisionsSimple) {
813- {
814- // (x) : (exists z, y = [x / 2] : x = 3y and x + z + 1 >= 0).
815- FlatAffineConstraints fac1 (1 , 0 , 1 );
816- fac1.addLocalFloorDiv ({1 , 0 , 0 }, 2 ); // y = [x / 2].
817- fac1.addEquality ({1 , 0 , -3 , 0 }); // x = 3y.
818- fac1.addInequality ({1 , 1 , 0 , 1 }); // x + z + 1 >= 0.
819-
820- // (x) : (exists y = [x / 2], z : x = 5y).
821- FlatAffineConstraints fac2 (1 );
822- fac2.addLocalFloorDiv ({1 , 0 }, 2 ); // y = [x / 2].
823- fac2.addEquality ({1 , -5 , 0 }); // x = 5y.
824- fac2.appendLocalId (); // Add local id z.
825-
826- fac1.mergeLocalIds (fac2);
827-
828- // Local space should be same.
829- EXPECT_EQ (fac1.getNumLocalIds (), fac2.getNumLocalIds ());
830-
831- // 1 division should be matched + 2 unmatched local ids.
832- EXPECT_EQ (fac1.getNumLocalIds (), 3u );
833- EXPECT_EQ (fac2.getNumLocalIds (), 3u );
834- }
835-
836- {
837- // (x) : (exists z = [x / 5], y = [x / 2] : x = 3y).
838- FlatAffineConstraints fac1 (1 );
839- fac1.addLocalFloorDiv ({1 , 0 }, 5 ); // z = [x / 5].
840- fac1.addLocalFloorDiv ({1 , 0 , 0 }, 2 ); // y = [x / 2].
841- fac1.addEquality ({1 , 0 , -3 , 0 }); // x = 3y.
842-
843- // (x) : (exists y = [x / 2], z = [x / 5]: x = 5z).
844- FlatAffineConstraints fac2 (1 );
845- fac2.addLocalFloorDiv ({1 , 0 }, 2 ); // y = [x / 2].
846- fac2.addLocalFloorDiv ({1 , 0 , 0 }, 5 ); // z = [x / 5].
847- fac2.addEquality ({1 , 0 , -5 , 0 }); // x = 5z.
848-
849- fac1.mergeLocalIds (fac2);
850-
851- // Local space should be same.
852- EXPECT_EQ (fac1.getNumLocalIds (), fac2.getNumLocalIds ());
853-
854- // 2 divisions should be matched.
855- EXPECT_EQ (fac1.getNumLocalIds (), 2u );
856- EXPECT_EQ (fac2.getNumLocalIds (), 2u );
857- }
858- }
859-
860- TEST (FlatAffineConstraintsTest, mergeDivisionsNestedDivsions) {
861- {
862- // (x) : (exists y = [x / 2], z = [x + y / 3]: y + z >= x).
863- FlatAffineConstraints fac1 (1 );
864- fac1.addLocalFloorDiv ({1 , 0 }, 2 ); // y = [x / 2].
865- fac1.addLocalFloorDiv ({1 , 1 , 0 }, 3 ); // z = [x + y / 3].
866- fac1.addInequality ({-1 , 1 , 1 , 0 }); // y + z >= x.
867-
868- // (x) : (exists y = [x / 2], z = [x + y / 3]: y + z <= x).
869- FlatAffineConstraints fac2 (1 );
870- fac2.addLocalFloorDiv ({1 , 0 }, 2 ); // y = [x / 2].
871- fac2.addLocalFloorDiv ({1 , 1 , 0 }, 3 ); // z = [x + y / 3].
872- fac2.addInequality ({1 , -1 , -1 , 0 }); // y + z <= x.
873-
874- fac1.mergeLocalIds (fac2);
875-
876- // Local space should be same.
877- EXPECT_EQ (fac1.getNumLocalIds (), fac2.getNumLocalIds ());
878-
879- // 2 divisions should be matched.
880- EXPECT_EQ (fac1.getNumLocalIds (), 2u );
881- EXPECT_EQ (fac2.getNumLocalIds (), 2u );
882- }
883-
884- {
885- // (x) : (exists y = [x / 2], z = [x + y / 3], w = [z + 1 / 5]: y + z >= x).
886- FlatAffineConstraints fac1 (1 );
887- fac1.addLocalFloorDiv ({1 , 0 }, 2 ); // y = [x / 2].
888- fac1.addLocalFloorDiv ({1 , 1 , 0 }, 3 ); // z = [x + y / 3].
889- fac1.addLocalFloorDiv ({0 , 0 , 1 , 1 }, 5 ); // w = [z + 1 / 5].
890- fac1.addInequality ({-1 , 1 , 1 , 0 , 0 }); // y + z >= x.
891-
892- // (x) : (exists y = [x / 2], z = [x + y / 3], w = [z + 1 / 5]: y + z <= x).
893- FlatAffineConstraints fac2 (1 );
894- fac2.addLocalFloorDiv ({1 , 0 }, 2 ); // y = [x / 2].
895- fac2.addLocalFloorDiv ({1 , 1 , 0 }, 3 ); // z = [x + y / 3].
896- fac2.addLocalFloorDiv ({0 , 0 , 1 , 1 }, 5 ); // w = [z + 1 / 5].
897- fac2.addInequality ({1 , -1 , -1 , 0 , 0 }); // y + z <= x.
898-
899- fac1.mergeLocalIds (fac2);
900-
901- // Local space should be same.
902- EXPECT_EQ (fac1.getNumLocalIds (), fac2.getNumLocalIds ());
903-
904- // 3 divisions should be matched.
905- EXPECT_EQ (fac1.getNumLocalIds (), 3u );
906- EXPECT_EQ (fac2.getNumLocalIds (), 3u );
907- }
908- }
909-
910- TEST (FlatAffineConstraintsTest, mergeDivisionsConstants) {
911- {
912- // (x) : (exists y = [x + 1 / 3], z = [x + 2 / 3]: y + z >= x).
913- FlatAffineConstraints fac1 (1 );
914- fac1.addLocalFloorDiv ({1 , 1 }, 2 ); // y = [x + 1 / 2].
915- fac1.addLocalFloorDiv ({1 , 0 , 2 }, 3 ); // z = [x + 2 / 3].
916- fac1.addInequality ({-1 , 1 , 1 , 0 }); // y + z >= x.
917-
918- // (x) : (exists y = [x + 1 / 3], z = [x + 2 / 3]: y + z <= x).
919- FlatAffineConstraints fac2 (1 );
920- fac2.addLocalFloorDiv ({1 , 1 }, 2 ); // y = [x + 1 / 2].
921- fac2.addLocalFloorDiv ({1 , 0 , 2 }, 3 ); // z = [x + 2 / 3].
922- fac2.addInequality ({1 , -1 , -1 , 0 }); // y + z <= x.
923-
924- fac1.mergeLocalIds (fac2);
925-
926- // Local space should be same.
927- EXPECT_EQ (fac1.getNumLocalIds (), fac2.getNumLocalIds ());
928-
929- // 2 divisions should be matched.
930- EXPECT_EQ (fac1.getNumLocalIds (), 2u );
931- EXPECT_EQ (fac2.getNumLocalIds (), 2u );
932- }
933- }
934-
935812} // namespace mlir
0 commit comments