@@ -92,7 +92,8 @@ foldl(const std::vector<const ScheduleTree*> vec, Func op, T init = T()) {
92
92
93
93
} // namespace detail
94
94
95
- inline isl::multi_union_pw_aff infixScheduleMupa (
95
+ template <typename Schedule>
96
+ inline isl::MultiUnionPwAff<Statement, Schedule> infixScheduleMupa (
96
97
const detail::ScheduleTree* root,
97
98
const detail::ScheduleTree* relativeRoot,
98
99
const detail::ScheduleTree* tree) {
@@ -101,13 +102,15 @@ inline isl::multi_union_pw_aff infixScheduleMupa(
101
102
auto domainElem = root->as <ScheduleTreeDomain>();
102
103
TC_CHECK (domainElem);
103
104
auto domain = domainElem->domain_ .universe ();
104
- auto zero = isl::multi_val::zero (domain.get_space ().set_from_params ());
105
- auto prefix = isl::multi_union_pw_aff (domain, zero);
105
+ auto zero = isl::MultiVal<Schedule>::zero (
106
+ domain.get_space ().add_unnamed_tuple_ui <Schedule>(0 ));
107
+ auto prefix = isl::MultiUnionPwAff<Statement, Schedule>(domain, zero);
106
108
prefix = foldl (
107
109
filterType<ScheduleTreeBand>(tree->ancestors (relativeRoot)),
108
- [](const ScheduleTree* st, isl::multi_union_pw_aff pref) {
110
+ [](const ScheduleTree* st,
111
+ isl::MultiUnionPwAff<Statement, Schedule> pref) {
109
112
auto mupa = st->as <ScheduleTreeBand>()->mupa_ ;
110
- return pref.flat_range_product (mupa);
113
+ return pref.template flat_range_product <Schedule> (mupa);
111
114
},
112
115
prefix);
113
116
return prefix;
@@ -117,8 +120,7 @@ template <typename Schedule>
117
120
inline isl::MultiUnionPwAff<Statement, Schedule> prefixScheduleMupa (
118
121
const detail::ScheduleTree* root,
119
122
const detail::ScheduleTree* tree) {
120
- auto prefix = infixScheduleMupa (root, root, tree);
121
- return isl::MultiUnionPwAff<Statement, Schedule>(prefix);
123
+ return infixScheduleMupa<Schedule>(root, root, tree);
122
124
}
123
125
124
126
template <typename Schedule>
0 commit comments