The compiler phase that orders instructions on a pipelined, suPERscalar, or VLIW architecture so as to maximise the number of function units oPERating in parallel and to minimise the time they spend waiting for each other. Examples are filling a delay slot intersPERsing floating-point instructions with integer instructions to keep both units oPERating making adjacent instructions independent, e.g. one which writes a register and another which reads from it separating memory writes to avoid filling the write buffer. Norman P. Jouppi and David W. Wall, {"Available Instruction-Level Parallelism for SuPERscalar and SuPERpipelined Processors" (ftp://gatekeePER.dec.com/archive/pub/DEC/WRL/research-reports/WRL-TR-89.7.ps.Z)}, Proceedings of the Third International Conference on Architectural Support for Programming Languages and OPERating Systems, pp. 272--282, 1989. [The SPARC Architecture Manual, v8, ISBN 0-13-825001-4]