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 {