@@ -122,31 +122,6 @@ vector<ScheduleTree*> ancestorsInSubTree(
122
122
}
123
123
return res;
124
124
}
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
- }
150
125
} // namespace
151
126
152
127
// //////////////////////////////////////////////////////////////////////////////
@@ -163,7 +138,7 @@ ScheduleTree::ScheduleTree(const ScheduleTree& st)
163
138
}
164
139
165
140
ScheduleTreeUPtr ScheduleTree::makeScheduleTree (const ScheduleTree& tree) {
166
- return makeElem ( tree);
141
+ return tree. clone ( );
167
142
}
168
143
169
144
ScheduleTree* ScheduleTree::child (const vector<size_t >& positions) {
@@ -226,8 +201,10 @@ size_t ScheduleTree::scheduleDepth(const ScheduleTree* relativeRoot) const {
226
201
std::unique_ptr<ScheduleTree> ScheduleTree::makeBand (
227
202
isl::multi_union_pw_aff mupa,
228
203
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));
231
208
return res;
232
209
}
233
210
@@ -243,25 +220,19 @@ ScheduleTreeUPtr ScheduleTree::makeEmptyBand(const ScheduleTree* root) {
243
220
std::unique_ptr<ScheduleTree> ScheduleTree::makeDomain (
244
221
isl::union_set domain,
245
222
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));
249
224
}
250
225
251
226
std::unique_ptr<ScheduleTree> ScheduleTree::makeContext (
252
227
isl::set context,
253
228
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));
257
230
}
258
231
259
232
std::unique_ptr<ScheduleTree> ScheduleTree::makeFilter (
260
233
isl::union_set filter,
261
234
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));
265
236
}
266
237
267
238
std::unique_ptr<ScheduleTree> ScheduleTree::makeMappingUnsafe (
@@ -278,28 +249,19 @@ std::unique_ptr<ScheduleTree> ScheduleTree::makeMappingUnsafe(
278
249
TC_CHECK_EQ (mappedIds.size (), mapping.size ())
279
250
<< " some id is used more than once in the mapping" ;
280
251
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));
285
253
}
286
254
287
255
std::unique_ptr<ScheduleTree> ScheduleTree::makeExtension (
288
256
isl::union_map extension,
289
257
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));
294
259
}
295
260
296
261
std::unique_ptr<ScheduleTree> ScheduleTree::makeThreadSpecificMarker (
297
262
isl::ctx ctx,
298
263
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));
303
265
}
304
266
305
267
// //////////////////////////////////////////////////////////////////////////////
0 commit comments