Mercurial > hg > graal-compiler
comparison src/share/vm/opto/memnode.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 | 00af3a3a8df4 |
children | 6931f425c517 |
comparison
equal
deleted
inserted
replaced
7636:a7114d3d712e | 7637:b30b3c2a0cf2 |
---|---|
2795 if (in(0) && phase->type(in(0)) == Type::TOP) return Type::TOP; | 2795 if (in(0) && phase->type(in(0)) == Type::TOP) return Type::TOP; |
2796 return bottom_type(); | 2796 return bottom_type(); |
2797 } | 2797 } |
2798 | 2798 |
2799 //============================================================================= | 2799 //============================================================================= |
2800 //------------------------------match_edge------------------------------------- | |
2801 // Do not match memory edge | |
2802 uint EncodeISOArrayNode::match_edge(uint idx) const { | |
2803 return idx == 2 || idx == 3; // EncodeISOArray src (Binary dst len) | |
2804 } | |
2805 | |
2806 //------------------------------Ideal------------------------------------------ | |
2807 // Return a node which is more "ideal" than the current node. Strip out | |
2808 // control copies | |
2809 Node *EncodeISOArrayNode::Ideal(PhaseGVN *phase, bool can_reshape) { | |
2810 return remove_dead_region(phase, can_reshape) ? this : NULL; | |
2811 } | |
2812 | |
2813 //------------------------------Value------------------------------------------ | |
2814 const Type *EncodeISOArrayNode::Value(PhaseTransform *phase) const { | |
2815 if (in(0) && phase->type(in(0)) == Type::TOP) return Type::TOP; | |
2816 return bottom_type(); | |
2817 } | |
2818 | |
2819 //============================================================================= | |
2800 MemBarNode::MemBarNode(Compile* C, int alias_idx, Node* precedent) | 2820 MemBarNode::MemBarNode(Compile* C, int alias_idx, Node* precedent) |
2801 : MultiNode(TypeFunc::Parms + (precedent == NULL? 0: 1)), | 2821 : MultiNode(TypeFunc::Parms + (precedent == NULL? 0: 1)), |
2802 _adr_type(C->get_adr_type(alias_idx)) | 2822 _adr_type(C->get_adr_type(alias_idx)) |
2803 { | 2823 { |
2804 init_class_id(Class_MemBar); | 2824 init_class_id(Class_MemBar); |