This MR adds a post-RA scheduler to ACO. The main goal is to improve ALU scheduling on Navi, this is not useful on older GPUs. I built this on top of some prior work done by Daniel, which was removed shortly before ACO was merged. Back then, the post-RA scheduler didn't really do anything. I took the old code, buffed it up so it can work and build a DAG, understand things like barriers, etc.
It works in the following way:
s_barrier, and similar instructions.
A few notes:
There are also a couple of smaller fixes included here for other parts of ACO.