Mercurial > hg > truffle
comparison src/share/vm/opto/memnode.hpp @ 681:fbde8ec322d0
6761600: Use sse 4.2 in intrinsics
Summary: Use SSE 4.2 in intrinsics for String.{compareTo/equals/indexOf} and Arrays.equals.
Reviewed-by: kvn, never, jrose
author | cfang |
---|---|
date | Tue, 31 Mar 2009 14:07:08 -0700 |
parents | 7bb995fbd3c0 |
children | 685e959d09ea |
comparison
equal
deleted
inserted
replaced
676:d3676b4cb78c | 681:fbde8ec322d0 |
---|---|
757 s1, s2) {}; | 757 s1, s2) {}; |
758 virtual int Opcode() const; | 758 virtual int Opcode() const; |
759 virtual bool depends_only_on_test() const { return false; } | 759 virtual bool depends_only_on_test() const { return false; } |
760 virtual const Type* bottom_type() const { return TypeInt::INT; } | 760 virtual const Type* bottom_type() const { return TypeInt::INT; } |
761 // a StrCompNode (conservatively) aliases with everything: | 761 // a StrCompNode (conservatively) aliases with everything: |
762 virtual const TypePtr* adr_type() const { return TypePtr::BOTTOM; } | |
763 virtual uint match_edge(uint idx) const; | |
764 virtual uint ideal_reg() const { return Op_RegI; } | |
765 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); | |
766 }; | |
767 | |
768 //------------------------------StrEquals------------------------------------- | |
769 class StrEqualsNode: public Node { | |
770 public: | |
771 StrEqualsNode(Node *control, | |
772 Node* char_array_mem, | |
773 Node* value_mem, | |
774 Node* count_mem, | |
775 Node* offset_mem, | |
776 Node* s1, Node* s2): Node(control, | |
777 char_array_mem, | |
778 value_mem, | |
779 count_mem, | |
780 offset_mem, | |
781 s1, s2) {}; | |
782 virtual int Opcode() const; | |
783 virtual bool depends_only_on_test() const { return false; } | |
784 virtual const Type* bottom_type() const { return TypeInt::BOOL; } | |
785 // a StrEqualsNode (conservatively) aliases with everything: | |
786 virtual const TypePtr* adr_type() const { return TypePtr::BOTTOM; } | |
787 virtual uint match_edge(uint idx) const; | |
788 virtual uint ideal_reg() const { return Op_RegI; } | |
789 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); | |
790 }; | |
791 | |
792 //------------------------------StrIndexOf------------------------------------- | |
793 class StrIndexOfNode: public Node { | |
794 public: | |
795 StrIndexOfNode(Node *control, | |
796 Node* char_array_mem, | |
797 Node* value_mem, | |
798 Node* count_mem, | |
799 Node* offset_mem, | |
800 Node* s1, Node* s2): Node(control, | |
801 char_array_mem, | |
802 value_mem, | |
803 count_mem, | |
804 offset_mem, | |
805 s1, s2) {}; | |
806 virtual int Opcode() const; | |
807 virtual bool depends_only_on_test() const { return false; } | |
808 virtual const Type* bottom_type() const { return TypeInt::INT; } | |
809 // a StrIndexOfNode (conservatively) aliases with everything: | |
762 virtual const TypePtr* adr_type() const { return TypePtr::BOTTOM; } | 810 virtual const TypePtr* adr_type() const { return TypePtr::BOTTOM; } |
763 virtual uint match_edge(uint idx) const; | 811 virtual uint match_edge(uint idx) const; |
764 virtual uint ideal_reg() const { return Op_RegI; } | 812 virtual uint ideal_reg() const { return Op_RegI; } |
765 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); | 813 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); |
766 }; | 814 }; |