1. A method for static code scheduling including: receiving an intermediate representation of source code; building a directed acyclic graph (DAG) for the intermediate representation; creating ordered chains of dependent instructions from the DAG for cluster formation; merging the chains into clusters and marking each node in the DAG with an identifier of a cluster it is part of to generate a marked instruction DAG; and performing instruction DAG scheduling using information about the clusters to generate an ordered intermediate representation of the source code.