Tue, 04 Apr 2017 02:49:51 -0700
8164002: Add a new CPU family (S_family) for SPARC S7 and above processors
Reviewed-by: dholmes, ecaspole, kvn
src/cpu/sparc/vm/vm_version_sparc.cpp | file | annotate | diff | comparison | revisions | |
src/cpu/sparc/vm/vm_version_sparc.hpp | file | annotate | diff | comparison | revisions |
1.1 --- a/src/cpu/sparc/vm/vm_version_sparc.cpp Fri Mar 31 07:46:19 2017 -0700 1.2 +++ b/src/cpu/sparc/vm/vm_version_sparc.cpp Tue Apr 04 02:49:51 2017 -0700 1.3 @@ -449,9 +449,10 @@ 1.4 1.5 unsigned int VM_Version::calc_parallel_worker_threads() { 1.6 unsigned int result; 1.7 - if (is_M_series()) { 1.8 - // for now, use same gc thread calculation for M-series as for niagara-plus 1.9 - // in future, we may want to tweak parameters for nof_parallel_worker_thread 1.10 + if (is_M_series() || is_S_series()) { 1.11 + // for now, use same gc thread calculation for M-series and S-series as for 1.12 + // niagara-plus. In future, we may want to tweak parameters for 1.13 + // nof_parallel_worker_thread 1.14 result = nof_parallel_worker_threads(5, 16, 8); 1.15 } else if (is_niagara_plus()) { 1.16 result = nof_parallel_worker_threads(5, 16, 8); 1.17 @@ -475,6 +476,9 @@ 1.18 } else if (strstr(impl, "SPARC-M") != NULL) { 1.19 // M-series SPARC is based on T-series. 1.20 features |= (M_family_m | T_family_m); 1.21 + } else if (strstr(impl, "SPARC-S") != NULL) { 1.22 + // S-series SPARC is based on T-series. 1.23 + features |= (S_family_m | T_family_m); 1.24 } else if (strstr(impl, "SPARC-T") != NULL) { 1.25 features |= T_family_m; 1.26 if (strstr(impl, "SPARC-T1") != NULL) {
2.1 --- a/src/cpu/sparc/vm/vm_version_sparc.hpp Fri Mar 31 07:46:19 2017 -0700 2.2 +++ b/src/cpu/sparc/vm/vm_version_sparc.hpp Tue Apr 04 02:49:51 2017 -0700 2.3 @@ -47,13 +47,14 @@ 2.4 cbcond_instructions = 13, 2.5 sparc64_family = 14, 2.6 M_family = 15, 2.7 - T_family = 16, 2.8 - T1_model = 17, 2.9 - sparc5_instructions = 18, 2.10 - aes_instructions = 19, 2.11 - sha1_instruction = 20, 2.12 - sha256_instruction = 21, 2.13 - sha512_instruction = 22 2.14 + S_family = 16, 2.15 + T_family = 17, 2.16 + T1_model = 18, 2.17 + sparc5_instructions = 19, 2.18 + aes_instructions = 20, 2.19 + sha1_instruction = 21, 2.20 + sha256_instruction = 22, 2.21 + sha512_instruction = 23 2.22 }; 2.23 2.24 enum Feature_Flag_Set { 2.25 @@ -76,6 +77,7 @@ 2.26 cbcond_instructions_m = 1 << cbcond_instructions, 2.27 sparc64_family_m = 1 << sparc64_family, 2.28 M_family_m = 1 << M_family, 2.29 + S_family_m = 1 << S_family, 2.30 T_family_m = 1 << T_family, 2.31 T1_model_m = 1 << T1_model, 2.32 sparc5_instructions_m = 1 << sparc5_instructions, 2.33 @@ -105,6 +107,7 @@ 2.34 2.35 // Returns true if the platform is in the niagara line (T series) 2.36 static bool is_M_family(int features) { return (features & M_family_m) != 0; } 2.37 + static bool is_S_family(int features) { return (features & S_family_m) != 0; } 2.38 static bool is_T_family(int features) { return (features & T_family_m) != 0; } 2.39 static bool is_niagara() { return is_T_family(_features); } 2.40 #ifdef ASSERT 2.41 @@ -152,6 +155,7 @@ 2.42 static bool is_niagara_plus() { return is_T_family(_features) && !is_T1_model(_features); } 2.43 2.44 static bool is_M_series() { return is_M_family(_features); } 2.45 + static bool is_S_series() { return is_S_family(_features); } 2.46 static bool is_T4() { return is_T_family(_features) && has_cbcond(); } 2.47 static bool is_T7() { return is_T_family(_features) && has_sparc5_instr(); } 2.48