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) ...@@ -83,6 +83,13 @@ bool memory_coloring_impl::allocate(interval_ptr interval)
offset += (element_size - (offset % element_size)); offset += (element_size - (offset % element_size));
conflict_queue.pop(); 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; segment.offset = offset;
MIGRAPH_DEBUG(segment.dump()); MIGRAPH_DEBUG(segment.dump());
required_bytes = std::max(required_bytes, offset + segment.size); required_bytes = std::max(required_bytes, offset + segment.size);
...@@ -165,6 +172,8 @@ void memory_coloring_impl::build() ...@@ -165,6 +172,8 @@ void memory_coloring_impl::build()
live_set.insert(max_value_number); live_set.insert(max_value_number);
live_ranges[max_value_number] = &(interval->segment); live_ranges[max_value_number] = &(interval->segment);
earliest_end_point = cur_points; earliest_end_point = cur_points;
if (latest_end_point == -1)
latest_end_point = cur_points;
} }
else else
{ {
......
...@@ -60,6 +60,7 @@ struct memory_coloring_impl ...@@ -60,6 +60,7 @@ struct memory_coloring_impl
required_bytes = 0; required_bytes = 0;
operand_alias.clear(); operand_alias.clear();
earliest_end_point = -1; earliest_end_point = -1;
latest_end_point = -1;
} }
bool allocate(interval_ptr); bool allocate(interval_ptr);
void add_conflicts(std::set<int>& live_set, int val) void add_conflicts(std::set<int>& live_set, int val)
...@@ -168,6 +169,8 @@ struct memory_coloring_impl ...@@ -168,6 +169,8 @@ struct memory_coloring_impl
long long required_bytes; long long required_bytes;
// The earliest program point where an live interval ends. // The earliest program point where an live interval ends.
int earliest_end_point; int earliest_end_point;
// The latest program point where an live interval ends.
int latest_end_point;
std::string allocation_op{}; std::string allocation_op{};
}; };
} // namespace migraph } // 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