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;