Approximated Loop Unrolling (A-Roll) is an approximative loop optimization that transforms loops in a similar way Loop Unrolling does. However, unlike its exact counterpart, A-Roll does not unrolls by adding copies of the loop’s body. Instead, it adds interpolations. The objective of the optimization is to increase the loop’s speed while reducing its size and the power consumption needed to obtain a result. We have currently implemented the optimization in the Server Compiler of the OpenJDK Hostpot VM.
The following presentation describes the optimization, gives details on the implementation and provides several demos showing the results of programs optimized using A-Roll.