8200477: Integer dot product no longer autovectorised

Reviewed-by: kvn
This commit is contained in:
Roland Westrelin 2018-04-24 09:35:08 +02:00
parent 2ee8ddfb0d
commit a67480f33d

View File

@ -1943,9 +1943,14 @@ bool SuperWord::profitable(Node_List* p) {
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;
}