mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-23 04:24:49 +02:00
6761600: Use sse 4.2 in intrinsics
Use SSE 4.2 in intrinsics for String.{compareTo/equals/indexOf} and Arrays.equals. Reviewed-by: kvn, never, jrose
This commit is contained in:
parent
aee9449305
commit
c0d62ad9e6
18 changed files with 1297 additions and 192 deletions
|
@ -765,6 +765,54 @@ public:
|
|||
virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
|
||||
};
|
||||
|
||||
//------------------------------StrEquals-------------------------------------
|
||||
class StrEqualsNode: public Node {
|
||||
public:
|
||||
StrEqualsNode(Node *control,
|
||||
Node* char_array_mem,
|
||||
Node* value_mem,
|
||||
Node* count_mem,
|
||||
Node* offset_mem,
|
||||
Node* s1, Node* s2): Node(control,
|
||||
char_array_mem,
|
||||
value_mem,
|
||||
count_mem,
|
||||
offset_mem,
|
||||
s1, s2) {};
|
||||
virtual int Opcode() const;
|
||||
virtual bool depends_only_on_test() const { return false; }
|
||||
virtual const Type* bottom_type() const { return TypeInt::BOOL; }
|
||||
// a StrEqualsNode (conservatively) aliases with everything:
|
||||
virtual const TypePtr* adr_type() const { return TypePtr::BOTTOM; }
|
||||
virtual uint match_edge(uint idx) const;
|
||||
virtual uint ideal_reg() const { return Op_RegI; }
|
||||
virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
|
||||
};
|
||||
|
||||
//------------------------------StrIndexOf-------------------------------------
|
||||
class StrIndexOfNode: public Node {
|
||||
public:
|
||||
StrIndexOfNode(Node *control,
|
||||
Node* char_array_mem,
|
||||
Node* value_mem,
|
||||
Node* count_mem,
|
||||
Node* offset_mem,
|
||||
Node* s1, Node* s2): Node(control,
|
||||
char_array_mem,
|
||||
value_mem,
|
||||
count_mem,
|
||||
offset_mem,
|
||||
s1, s2) {};
|
||||
virtual int Opcode() const;
|
||||
virtual bool depends_only_on_test() const { return false; }
|
||||
virtual const Type* bottom_type() const { return TypeInt::INT; }
|
||||
// a StrIndexOfNode (conservatively) aliases with everything:
|
||||
virtual const TypePtr* adr_type() const { return TypePtr::BOTTOM; }
|
||||
virtual uint match_edge(uint idx) const;
|
||||
virtual uint ideal_reg() const { return Op_RegI; }
|
||||
virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
|
||||
};
|
||||
|
||||
//------------------------------AryEq---------------------------------------
|
||||
class AryEqNode: public Node {
|
||||
public:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue