Patent ID: 7631305

Claim:
A method for processing a software kernel of instructions, the software kernel having a plurality of stages representing a loop nest having an outermost loop and at least one inner loop within the outermost loop, the at least one inner loop including an innermost loop, the method comprising the steps of: (a) partitioning iterations of the outermost loop into groups, each group representing two or more iterations of the outermost loop to be run at least partially in parallel; (b) running the software kernel and rotating at least one register file for each stage of the software kernel preceding the innermost loop to generate code to prepare for filling and executing instructions in software pipelines for a current group; (c) running the software kernel for each stage of the software kernel in the innermost loop to generate code to fill the software pipelines for the current group, the at least one register file being rotated after at least one run of the software kernel for the innermost loop; and (d) repeatedly running the software kernel to unroll the at least one inner loop to generate code to further fill the software pipelines for the current group, wherein the at least one inner loop of each of the two or more iterations of the outermost loop in the current group is unrolled to run sequentially such that within each iteration of the outermost loop all instructions of an iteration of the at least one inner loop are executed before any instruction of a next iteration of the at least one inner loop is executed.