Loading... (original) (raw)

Issue Fix Version Assignee Priority Status Resolution Resolved In Build
JDK-8135547 emb-9 Michael Berg P3 Resolved Fixed team

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.

backported by

Backport - A issue that is required to port a Bug or Feature into another product release. This issue type is generally associated with the main Bug/Feature to represent each individual release of the port. JDK-8135547 SuperWord loop unrolling analysis

relates to

Bug - A problem which impairs or prevents the functions of the product. JDK-8129094 assert(is_java_primitive(bt)) failed: only primitive type vectors

Enhancement - null JDK-8129920 Vectorized loop unrolling

Enhancement - null JDK-8227505 SuperWordLoopUnrollAnalysis may lead to over loop unrolling