On 09/27/2011 08:36 AM, Bernd Schmidt wrote:
Ping:
http://gcc.gnu.org/ml/gcc-patches/2011-09/msg00811.html

Bernd, sorry for the delay.

I thought for long time about this approach because we already have selective scheduler which with some modifications could be used for this. Selective scheduler was implemented for Itanium, designed to work after RA (although it can work before too) and it implements a general software pipelining (not modulo scheduling) which could be used for loops with conditionals and with varying II (if we speak in terms of modulo scheduling). Selective scheduling is more complicated than haifa scheduler (although haifa scheduler with so many changes for its existence is approaching to the complexity of selective scheduler), it might be hard to modify for your purposes, it has also a tendency to generate a big code which is probably not good for C6X which is oriented to embedded applications.

On the other hand, your changes to haifa-scheduler are small, so I concluded it might be ok (I hope the coming changes with register renaming which selective scheduler already does will be not big too). Now we have more complex selective scheduler with general software pipelining and simpler haifa scheduler with modulo scheduling. So I think we could look at selective scheduler for servers with VLIW and in-order pipelined processors where code expansion is not so important and haifa-scheduler with modulo scheduler for embedded VLIW processors.

Still I think that selective scheduler has more potential to generate a faster code than what you are trying to implement.

As for the patch itself (only scheduler parts in 1/4 and 2/4), it is ok to me to commit this. I did not find anything which should be changed.

Reply via email to