mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-17 09:34:38 +02:00
8236443: Issues with specializing vector register type for phi operand with generic operands
Fix special handling for operand resolution of vectorshift and shiftcount nodes. Fix for crash in the resolution algorithm due to non-machine type nodes. Reviewed-by: vlivanov
This commit is contained in:
parent
b79d75d033
commit
2b9fef7d7b
4 changed files with 60 additions and 21 deletions
|
@ -485,6 +485,38 @@ VectorNode* VectorNode::shift_count(Node* shift, Node* cnt, uint vlen, BasicType
|
|||
}
|
||||
}
|
||||
|
||||
bool VectorNode::is_vector_shift(int opc) {
|
||||
assert(opc > _last_machine_leaf && opc < _last_opcode, "invalid opcode");
|
||||
switch (opc) {
|
||||
case Op_LShiftVB:
|
||||
case Op_LShiftVS:
|
||||
case Op_LShiftVI:
|
||||
case Op_LShiftVL:
|
||||
case Op_RShiftVB:
|
||||
case Op_RShiftVS:
|
||||
case Op_RShiftVI:
|
||||
case Op_RShiftVL:
|
||||
case Op_URShiftVB:
|
||||
case Op_URShiftVS:
|
||||
case Op_URShiftVI:
|
||||
case Op_URShiftVL:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool VectorNode::is_shift_count(int opc) {
|
||||
assert(opc > _last_machine_leaf && opc < _last_opcode, "invalid opcode");
|
||||
switch (opc) {
|
||||
case Op_RShiftCntV:
|
||||
case Op_LShiftCntV:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Return initial Pack node. Additional operands added with add_opd() calls.
|
||||
PackNode* PackNode::make(Node* s, uint vlen, BasicType bt) {
|
||||
const TypeVect* vt = TypeVect::make(bt, vlen);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue