mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-20 11:04:34 +02:00
6896617: Optimize sun.nio.cs.ISO_8859_1$Encode.encodeArrayLoop() on x86
Use SSE4.2 and AVX2 instructions for encodeArray intrinsic. Reviewed-by: roland
This commit is contained in:
parent
44cdae9a57
commit
9e0c61f822
19 changed files with 663 additions and 12 deletions
|
@ -2796,6 +2796,26 @@ const Type *StrIntrinsicNode::Value( PhaseTransform *phase ) const {
|
|||
return bottom_type();
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
//------------------------------match_edge-------------------------------------
|
||||
// Do not match memory edge
|
||||
uint EncodeISOArrayNode::match_edge(uint idx) const {
|
||||
return idx == 2 || idx == 3; // EncodeISOArray src (Binary dst len)
|
||||
}
|
||||
|
||||
//------------------------------Ideal------------------------------------------
|
||||
// Return a node which is more "ideal" than the current node. Strip out
|
||||
// control copies
|
||||
Node *EncodeISOArrayNode::Ideal(PhaseGVN *phase, bool can_reshape) {
|
||||
return remove_dead_region(phase, can_reshape) ? this : NULL;
|
||||
}
|
||||
|
||||
//------------------------------Value------------------------------------------
|
||||
const Type *EncodeISOArrayNode::Value(PhaseTransform *phase) const {
|
||||
if (in(0) && phase->type(in(0)) == Type::TOP) return Type::TOP;
|
||||
return bottom_type();
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
MemBarNode::MemBarNode(Compile* C, int alias_idx, Node* precedent)
|
||||
: MultiNode(TypeFunc::Parms + (precedent == NULL? 0: 1)),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue