Details
-
Bug
-
Resolution: Fixed
-
P4
-
19, 20
-
b09
Description
(synopsis is provisional, feel free to change as you see fit)
SonarCloud reports that the if-else-branch in Reverse*VNode::Identity has the same code:
Node* ReverseBytesVNode::Identity(PhaseGVN* phase) {
if (is_predicated_using_blend()) {
return this;
}
// ReverseBytesV (ReverseBytesV X , MASK) , MASK => X
if (in(1)->Opcode() == Op_ReverseBytesV) {
if (is_predicated_vector() && in(1)->is_predicated_vector() && in(2) == in(1)->in(2)) {
return in(1)->in(1);
} else {
// ReverseBytesV (ReverseBytesV X) => X
return in(1)->in(1);
}
}
return this;
}
Seems to me the first condition checks that MASKs are the same in both nodes. But if they are not, we are falling to "else" branch, where we do the same transformation anyway. So, there might be a bug lurking there when MASKs are different.
SonarCloud reports that the if-else-branch in Reverse*VNode::Identity has the same code:
Node* ReverseBytesVNode::Identity(PhaseGVN* phase) {
if (is_predicated_using_blend()) {
return this;
}
// ReverseBytesV (ReverseBytesV X , MASK) , MASK => X
if (in(1)->Opcode() == Op_ReverseBytesV) {
if (is_predicated_vector() && in(1)->is_predicated_vector() && in(2) == in(1)->in(2)) {
return in(1)->in(1);
} else {
// ReverseBytesV (ReverseBytesV X) => X
return in(1)->in(1);
}
}
return this;
}
Seems to me the first condition checks that MASKs are the same in both nodes. But if they are not, we are falling to "else" branch, where we do the same transformation anyway. So, there might be a bug lurking there when MASKs are different.
Attachments
Issue Links
- relates to
-
JDK-8284960 Integration of JEP 426: Vector API (Fourth Incubator)
- Resolved