Mercurial > hg > truffle
comparison src/share/vm/opto/matcher.cpp @ 7637:b30b3c2a0cf2
6896617: Optimize sun.nio.cs.ISO_8859_1$Encode.encodeArrayLoop() on x86
Summary: Use SSE4.2 and AVX2 instructions for encodeArray intrinsic.
Reviewed-by: roland
author | kvn |
---|---|
date | Tue, 22 Jan 2013 15:34:16 -0800 |
parents | 2aff40cb4703 |
children | 603ca7e51354 d2907f74462e |
comparison
equal
deleted
inserted
replaced
7636:a7114d3d712e | 7637:b30b3c2a0cf2 |
---|---|
917 case Op_StrEquals: | 917 case Op_StrEquals: |
918 case Op_StrIndexOf: | 918 case Op_StrIndexOf: |
919 case Op_AryEq: | 919 case Op_AryEq: |
920 case Op_MemBarVolatile: | 920 case Op_MemBarVolatile: |
921 case Op_MemBarCPUOrder: // %%% these ideals should have narrower adr_type? | 921 case Op_MemBarCPUOrder: // %%% these ideals should have narrower adr_type? |
922 case Op_EncodeISOArray: | |
922 nidx = Compile::AliasIdxTop; | 923 nidx = Compile::AliasIdxTop; |
923 nat = NULL; | 924 nat = NULL; |
924 break; | 925 break; |
925 } | 926 } |
926 } | 927 } |
1980 continue; // while (mstack.is_nonempty()) | 1981 continue; // while (mstack.is_nonempty()) |
1981 case Op_StrComp: | 1982 case Op_StrComp: |
1982 case Op_StrEquals: | 1983 case Op_StrEquals: |
1983 case Op_StrIndexOf: | 1984 case Op_StrIndexOf: |
1984 case Op_AryEq: | 1985 case Op_AryEq: |
1986 case Op_EncodeISOArray: | |
1985 set_shared(n); // Force result into register (it will be anyways) | 1987 set_shared(n); // Force result into register (it will be anyways) |
1986 break; | 1988 break; |
1987 case Op_ConP: { // Convert pointers above the centerline to NUL | 1989 case Op_ConP: { // Convert pointers above the centerline to NUL |
1988 TypeNode *tn = n->as_Type(); // Constants derive from type nodes | 1990 TypeNode *tn = n->as_Type(); // Constants derive from type nodes |
1989 const TypePtr* tp = tn->type()->is_ptr(); | 1991 const TypePtr* tp = tn->type()->is_ptr(); |
2181 n->set_req(3,pair2); | 2183 n->set_req(3,pair2); |
2182 n->del_req(5); | 2184 n->del_req(5); |
2183 n->del_req(4); | 2185 n->del_req(4); |
2184 break; | 2186 break; |
2185 } | 2187 } |
2188 case Op_EncodeISOArray: { | |
2189 // Restructure into a binary tree for Matching. | |
2190 Node* pair = new (C) BinaryNode(n->in(3), n->in(4)); | |
2191 n->set_req(3, pair); | |
2192 n->del_req(4); | |
2193 break; | |
2194 } | |
2186 default: | 2195 default: |
2187 break; | 2196 break; |
2188 } | 2197 } |
2189 } | 2198 } |
2190 else { | 2199 else { |