Commit 477e6c47 authored by mei-ye's avatar mei-ye
Browse files

special treatment for intervals fed into output

parent 633741cd
......@@ -83,6 +83,13 @@ bool memory_coloring_impl::allocate(interval_ptr interval)
offset += (element_size - (offset % element_size));
conflict_queue.pop();
}
#if 1
if (interval->get_end() == latest_end_point) {
offset = required_bytes;
if((offset % element_size) != 0)
offset += (element_size - (offset % element_size));
}
#endif
segment.offset = offset;
MIGRAPH_DEBUG(segment.dump());
required_bytes = std::max(required_bytes, offset + segment.size);
......@@ -165,6 +172,8 @@ void memory_coloring_impl::build()
live_set.insert(max_value_number);
live_ranges[max_value_number] = &(interval->segment);
earliest_end_point = cur_points;
if (latest_end_point == -1)
latest_end_point = cur_points;
}
else
{
......
......@@ -60,6 +60,7 @@ struct memory_coloring_impl
required_bytes = 0;
operand_alias.clear();
earliest_end_point = -1;
latest_end_point = -1;
}
bool allocate(interval_ptr);
void add_conflicts(std::set<int>& live_set, int val)
......@@ -168,6 +169,8 @@ struct memory_coloring_impl
long long required_bytes;
// The earliest program point where an live interval ends.
int earliest_end_point;
// The latest program point where an live interval ends.
int latest_end_point;
std::string allocation_op{};
};
} // namespace migraph
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment