# HG changeset patch # User roland # Date 1524555308 -7200 # Node ID 1da3a463a49948662726aa822165f221231b8f02 # Parent c71f40e37583496b033b673a7a0d4d9683a7ff01 8200477: Integer dot product no longer autovectorised Reviewed-by: kvn diff -r c71f40e37583 -r 1da3a463a499 src/hotspot/share/opto/superword.cpp --- a/src/hotspot/share/opto/superword.cpp Fri Apr 20 09:44:24 2018 +0200 +++ b/src/hotspot/share/opto/superword.cpp Tue Apr 24 09:35:08 2018 +0200 @@ -1943,9 +1943,14 @@ for (uint k = 0; k < use->req(); k++) { Node* n = use->in(k); if (def == n) { - // reductions can be loop carried dependences - if (def->is_reduction() && use->is_Phi()) + // reductions should only have a Phi use at the the loop + // head and out of loop uses + if (def->is_reduction() && + ((use->is_Phi() && use->in(0) == _lpt->_head) || + !_lpt->is_member(_phase->get_loop(_phase->ctrl_or_self(use))))) { + assert(i == p->size()-1, "must be last element of the pack"); continue; + } if (!is_vector_use(use, k)) { return false; }