< prev index next >

src/share/vm/opto/loopTransform.cpp

Print this page

        

*** 782,800 **** } } } int slp_max_unroll_factor = cl->slp_max_unroll(); if (cl->has_passed_slp()) { if (slp_max_unroll_factor >= future_unroll_ct) return true; // Normal case: loop too big return false; } // Check for being too big if (body_size > (uint)_local_loop_unroll_limit) { ! if (xors_in_loop >= 4 && body_size < (uint)LoopUnrollLimit*4) return true; // Normal case: loop too big return false; } if (cl->do_unroll_only()) { --- 782,803 ---- } } } int slp_max_unroll_factor = cl->slp_max_unroll(); + if ((LoopMaxUnroll < slp_max_unroll_factor) && FLAG_IS_DEFAULT(LoopMaxUnroll) && UseSubwordForMaxVector) { + LoopMaxUnroll = slp_max_unroll_factor; + } if (cl->has_passed_slp()) { if (slp_max_unroll_factor >= future_unroll_ct) return true; // Normal case: loop too big return false; } // Check for being too big if (body_size > (uint)_local_loop_unroll_limit) { ! if ((UseSubwordForMaxVector || xors_in_loop >= 4) && body_size < (uint)LoopUnrollLimit * 4) return true; // Normal case: loop too big return false; } if (cl->do_unroll_only()) {
< prev index next >