Instruction scheduling of any kind doesn't really help on x86 anyway, and register pressure is usually surprisingly good already (since temporary values are moved close to their uses when combining instructions).
I think the most important thing missing thing is rematerialization - recalculating values instead of saving them on stack would save a lot of memory loads.
There was some other stuff, but I cannot remember (I am actually glad to have been able to come up with IPS.)