@@ -122,31 +122,6 @@ vector<ScheduleTree*> ancestorsInSubTree(
122122 }
123123 return res;
124124}
125-
126- static std::unique_ptr<ScheduleTree> makeElem (const ScheduleTree& st) {
127- #define ELEM_MAKE_CASE (CLASS ) \
128- else if (st.type_ == CLASS::NodeType) { \
129- return std::unique_ptr<CLASS>(new CLASS (static_cast <const CLASS&>(st))); \
130- }
131-
132- if (st.type_ == detail::ScheduleTreeType::None) {
133- LOG (FATAL) << " Hit Error node!" ;
134- }
135- ELEM_MAKE_CASE (ScheduleTreeBand)
136- ELEM_MAKE_CASE (ScheduleTreeContext)
137- ELEM_MAKE_CASE (ScheduleTreeDomain)
138- ELEM_MAKE_CASE (ScheduleTreeExtension)
139- ELEM_MAKE_CASE (ScheduleTreeFilter)
140- ELEM_MAKE_CASE (ScheduleTreeMapping)
141- ELEM_MAKE_CASE (ScheduleTreeSequence)
142- ELEM_MAKE_CASE (ScheduleTreeSet)
143- ELEM_MAKE_CASE (ScheduleTreeThreadSpecificMarker)
144-
145- #undef ELEM_MAKE_CASE
146-
147- LOG (FATAL) << " NYI: ScheduleTree from type: " << static_cast <int >(st.type_ );
148- return nullptr ;
149- }
150125} // namespace
151126
152127// //////////////////////////////////////////////////////////////////////////////
@@ -163,7 +138,7 @@ ScheduleTree::ScheduleTree(const ScheduleTree& st)
163138}
164139
165140ScheduleTreeUPtr ScheduleTree::makeScheduleTree (const ScheduleTree& tree) {
166- return makeElem ( tree);
141+ return tree. clone ( );
167142}
168143
169144ScheduleTree* ScheduleTree::child (const vector<size_t >& positions) {
@@ -226,8 +201,10 @@ size_t ScheduleTree::scheduleDepth(const ScheduleTree* relativeRoot) const {
226201std::unique_ptr<ScheduleTree> ScheduleTree::makeBand (
227202 isl::multi_union_pw_aff mupa,
228203 std::vector<ScheduleTreeUPtr>&& children) {
229- auto res = ScheduleTreeBand::fromMultiUnionPwAff (mupa);
230- res->appendChildren (std::move (children));
204+ std::vector<bool > coincident (mupa.size (), false );
205+ std::vector<bool > unroll (mupa.size (), false );
206+ auto res = ScheduleTreeBand::make (
207+ mupa, false , coincident, unroll, std::move (children));
231208 return res;
232209}
233210
@@ -243,25 +220,19 @@ ScheduleTreeUPtr ScheduleTree::makeEmptyBand(const ScheduleTree* root) {
243220std::unique_ptr<ScheduleTree> ScheduleTree::makeDomain (
244221 isl::union_set domain,
245222 std::vector<ScheduleTreeUPtr>&& children) {
246- auto res = std::unique_ptr<ScheduleTree>(new ScheduleTreeDomain (domain));
247- res->appendChildren (std::move (children));
248- return res;
223+ return ScheduleTreeDomain::make (domain, std::move (children));
249224}
250225
251226std::unique_ptr<ScheduleTree> ScheduleTree::makeContext (
252227 isl::set context,
253228 std::vector<ScheduleTreeUPtr>&& children) {
254- auto res = std::unique_ptr<ScheduleTree>(new ScheduleTreeContext (context));
255- res->appendChildren (std::move (children));
256- return res;
229+ return ScheduleTreeContext::make (context, std::move (children));
257230}
258231
259232std::unique_ptr<ScheduleTree> ScheduleTree::makeFilter (
260233 isl::union_set filter,
261234 std::vector<ScheduleTreeUPtr>&& children) {
262- auto res = std::unique_ptr<ScheduleTree>(new ScheduleTreeFilter (filter));
263- res->appendChildren (std::move (children));
264- return res;
235+ return ScheduleTreeFilter::make (filter, std::move (children));
265236}
266237
267238std::unique_ptr<ScheduleTree> ScheduleTree::makeMappingUnsafe (
@@ -278,28 +249,19 @@ std::unique_ptr<ScheduleTree> ScheduleTree::makeMappingUnsafe(
278249 TC_CHECK_EQ (mappedIds.size (), mapping.size ())
279250 << " some id is used more than once in the mapping" ;
280251 auto ctx = mappedIds[0 ].get_ctx ();
281- auto res =
282- std::unique_ptr<ScheduleTree>(new ScheduleTreeMapping (ctx, mapping));
283- res->appendChildren (std::move (children));
284- return res;
252+ return ScheduleTreeMapping::make (ctx, mapping, std::move (children));
285253}
286254
287255std::unique_ptr<ScheduleTree> ScheduleTree::makeExtension (
288256 isl::union_map extension,
289257 std::vector<ScheduleTreeUPtr>&& children) {
290- auto res =
291- std::unique_ptr<ScheduleTree>(new ScheduleTreeExtension (extension));
292- res->appendChildren (std::move (children));
293- return res;
258+ return ScheduleTreeExtension::make (extension, std::move (children));
294259}
295260
296261std::unique_ptr<ScheduleTree> ScheduleTree::makeThreadSpecificMarker (
297262 isl::ctx ctx,
298263 std::vector<ScheduleTreeUPtr>&& children) {
299- auto res =
300- std::unique_ptr<ScheduleTree>(new ScheduleTreeThreadSpecificMarker (ctx));
301- res->appendChildren (std::move (children));
302- return res;
264+ return ScheduleTreeThreadSpecificMarker::make (ctx, std::move (children));
303265}
304266
305267// //////////////////////////////////////////////////////////////////////////////
0 commit comments