JDK-8080325 : SuperWord loop unrolling analysis
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 9
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2015-05-13
  • Updated: 2019-07-10
  • Resolved: 2015-06-17
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 9
9 b72Fixed
Related Reports
Relates :  
Relates :  
Relates :  
Description
This change uses superwords object and entry criteria and the swpointer���s code to walk pointers to exclude expressions and evaluate possible vector mappings. The design finds the highest common vector supported and implemented on a given machine and applies that to unrolling, iff it is greater than the default. If the user gates us we will still obey the user directive. It���s light weight, when we get to the analysis part, if we fail, we stop further tries.  If we succeed we stop further tries.  We generally always analyze only once. We then gate the unroll factor by extending the size of the unroll segment so that the iterative tries will keep unrolling, obtaining larger unrolls of a targeted loop. We do process more loops that superword���s packing and filter process vets.  But the alternative, post unrolling after superword and formatting the loops for bigger vectors would take more cycles and be problematic.  I see no negative behavior wrt to performance, and a modest positive swing in default behavior up to 1.5x for some micros. The big difference between it and user directives on unrolling is that the directives will force more unrolling than this will, this pass will be more conservative but will still find more opportunities above default behavior.
Comments
Webrev update: http://cr.openjdk.java.net/~mcberg/8080325/webrev.03/ updated june 16 at 8:25 pm
17-06-2015

Webrev update: http://cr.openjdk.java.net/~mcberg/8080325/webrev.01/
07-06-2015

Prototype contributed by Michael Berg: http://cr.openjdk.java.net/~kvn/8080325/webrev/
13-05-2015