can graal unroll loop with more blocks

Kuai Wei at
Mon May 13 11:57:56 UTC 2019


  Recently I checked loop unroll optimization in Graal compiler. I found it has a strict check to limit unroll loop with 1 or 2 blocks.

public static boolean isUnrollableLoop(LoopEx loop) {
  if (loopBegin.isMainLoop() || loopBegin.isSimpleLoop()) {
            // Flow-less loops to partial unroll for now. 3 blocks corresponds to an if that either
            // exits or continues the loop. There might be fixed and floating work within the loop
            // as well.
            if (loop.loop().getBlocks().size() < 3) {
                return true;
            condition.getDebug().log(DebugContext.VERBOSE_LEVEL, "isUnrollableLoop %s too large to unroll %s ", loopBegin, loop.loop().getBlocks().size());

I'm wondering why Graal has this limit. It will block many loops to be unrolled. Could we increase the block size here?

Kuai Wei

More information about the graal-dev mailing list