Mercurial > hg > truffle
comparison src/cpu/sparc/vm/vm_version_sparc.hpp @ 3854:1af104d6cf99
7079329: Adjust allocation prefetching for T4
Summary: on T4 2 BIS instructions should be issued to prefetch 64 bytes
Reviewed-by: iveresov, phh, twisti
author | kvn |
---|---|
date | Tue, 16 Aug 2011 16:59:46 -0700 |
parents | 3d42f82cd811 |
children | baf763f388e6 |
comparison
equal
deleted
inserted
replaced
3853:11211f7cb5a0 | 3854:1af104d6cf99 |
---|---|
119 { return has_v9(); } | 119 { return has_v9(); } |
120 | 120 |
121 // Returns true if the platform is in the niagara line (T series) | 121 // Returns true if the platform is in the niagara line (T series) |
122 // and newer than the niagara1. | 122 // and newer than the niagara1. |
123 static bool is_niagara_plus() { return is_T_family(_features) && !is_T1_model(_features); } | 123 static bool is_niagara_plus() { return is_T_family(_features) && !is_T1_model(_features); } |
124 static bool is_T4() { return is_T_family(_features) && has_cbcond(); } | |
124 | 125 |
125 // Fujitsu SPARC64 | 126 // Fujitsu SPARC64 |
126 static bool is_sparc64() { return (_features & sparc64_family_m) != 0; } | 127 static bool is_sparc64() { return (_features & sparc64_family_m) != 0; } |
127 | 128 |
128 static bool is_sun4v() { return (_features & sun4v_m) != 0; } | 129 static bool is_sun4v() { return (_features & sun4v_m) != 0; } |
129 static bool is_ultra3() { return (_features & ultra3_m) == ultra3_m && !is_sun4v() && !is_sparc64(); } | 130 static bool is_ultra3() { return (_features & ultra3_m) == ultra3_m && !is_sun4v() && !is_sparc64(); } |
130 | 131 |
131 static bool has_fast_fxtof() { return is_niagara() || is_sparc64() || has_v9() && !is_ultra3(); } | 132 static bool has_fast_fxtof() { return is_niagara() || is_sparc64() || has_v9() && !is_ultra3(); } |
132 static bool has_fast_idiv() { return is_niagara_plus() || is_sparc64(); } | 133 static bool has_fast_idiv() { return is_niagara_plus() || is_sparc64(); } |
134 | |
133 // T4 and newer Sparc have fast RDPC instruction. | 135 // T4 and newer Sparc have fast RDPC instruction. |
134 static bool has_fast_rdpc() { return is_niagara_plus() && has_cbcond(); } | 136 static bool has_fast_rdpc() { return is_T4(); } |
137 | |
138 // T4 and newer Sparc have Most-Recently-Used (MRU) BIS. | |
139 static bool has_mru_blk_init() { return has_blk_init() && is_T4(); } | |
135 | 140 |
136 static const char* cpu_features() { return _features_str; } | 141 static const char* cpu_features() { return _features_str; } |
137 | 142 |
138 static intx L1_data_cache_line_size() { | 143 static intx prefetch_data_size() { |
139 return 64; // default prefetch block size on sparc | 144 return is_T4() ? 32 : 64; // default prefetch block size on sparc |
140 } | 145 } |
141 | 146 |
142 // Prefetch | 147 // Prefetch |
143 static intx prefetch_copy_interval_in_bytes() { | 148 static intx prefetch_copy_interval_in_bytes() { |
144 intx interval = PrefetchCopyIntervalInBytes; | 149 intx interval = PrefetchCopyIntervalInBytes; |