1. A method for executing, by a processor of a computer system, a set of program instructions for a loop, wherein the method comprises: associating a unique proxy value with each indirect loop index variable of the loop, wherein each unique proxy value is a proxy value bit vector, each proxy value bit vector representing a different prime number; calculating, for each iteration of the loop, an indirectly indexed access pattern based upon the unique values; determining whether cross-iteration dependencies exist between any two iterations of the loop based upon the indirectly indexed access patterns of the two iterations; scheduling the program instructions of the loop across iterations into waves based on the cross-iteration dependencies found; and executing the waves.