#if !defined(Already_Included_code_gen) #define Already_Included_code_gen #include #include #include #include #include namespace omega { typedef Tuple IntTuple; typedef Tuple SetTuple; typedef Tuple SetTupleTuple; typedef Tuple RelTuple; typedef Tuple RelTupleTuple; CG_outputRepr *MMGenerateCode(CG_outputBuilder* ocg, Tuple &T, Tuple &old_IS, const Tuple &stmt_content, Relation &known, int effort=1); std::string MMGenerateCode(Tuple &T, Tuple &old_IS, Relation &known, int effort=1); //protonu-adding a new variant to keep Gabe's code happy CG_outputRepr* MMGenerateCode(CG_outputBuilder* ocg, RelTuple &T, SetTuple &old_IS, const Tuple &stmt_content, Relation &known, Tuple< IntTuple >& smtNonSplitLevels_, std::vector< std::pair > syncs_, const Tuple< Tuple >& loopIdxNames_, int effort=1); //end-protonu struct Polyhedra { int last_level; Tuple transformations; Relation known; Tuple remap; // after initial iteration space's disjoint set splitting, the new statement number maps to old statement number Tuple > projected_nIS; Polyhedra(const Tuple &T, const Tuple &old_IS, const Relation &known = Relation::Null()); ~Polyhedra() {} }; } #endif