src/cpu/sparc/vm/vm_version_sparc.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7188176 Sdiff src/cpu/sparc/vm

src/cpu/sparc/vm/vm_version_sparc.hpp

Print this page


   1 /*
   2  * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *


 107 
 108   // Instruction support
 109   static bool has_v8()                  { return (_features & v8_instructions_m) != 0; }
 110   static bool has_v9()                  { return (_features & v9_instructions_m) != 0; }
 111   static bool has_hardware_mul32()      { return (_features & hardware_mul32_m) != 0; }
 112   static bool has_hardware_div32()      { return (_features & hardware_div32_m) != 0; }
 113   static bool has_hardware_fsmuld()     { return (_features & hardware_fsmuld_m) != 0; }
 114   static bool has_hardware_popc()       { return (_features & hardware_popc_m) != 0; }
 115   static bool has_vis1()                { return (_features & vis1_instructions_m) != 0; }
 116   static bool has_vis2()                { return (_features & vis2_instructions_m) != 0; }
 117   static bool has_vis3()                { return (_features & vis3_instructions_m) != 0; }
 118   static bool has_blk_init()            { return (_features & blk_init_instructions_m) != 0; }
 119   static bool has_cbcond()              { return (_features & cbcond_instructions_m) != 0; }
 120 
 121   static bool supports_compare_and_exchange()
 122                                         { return has_v9(); }
 123 
 124   // Returns true if the platform is in the niagara line (T series)
 125   // and newer than the niagara1.
 126   static bool is_niagara_plus()         { return is_T_family(_features) && !is_T1_model(_features); }


 127   static bool is_T4()                   { return is_T_family(_features) && has_cbcond(); }
 128 
 129   // Fujitsu SPARC64
 130   static bool is_sparc64()              { return (_features & sparc64_family_m) != 0; }
 131 
 132   static bool is_sun4v()                { return (_features & sun4v_m) != 0; }
 133   static bool is_ultra3()               { return (_features & ultra3_m) == ultra3_m && !is_sun4v() && !is_sparc64(); }
 134 
 135   static bool has_fast_fxtof()          { return is_niagara() || is_sparc64() || has_v9() && !is_ultra3(); }
 136   static bool has_fast_idiv()           { return is_niagara_plus() || is_sparc64(); }
 137 
 138   // T4 and newer Sparc have fast RDPC instruction.
 139   static bool has_fast_rdpc()           { return is_T4(); }
 140 
 141   // On T4 and newer Sparc BIS to the beginning of cache line always zeros it.
 142   static bool has_block_zeroing()       { return has_blk_init() && is_T4(); }
 143 
 144   static const char* cpu_features()     { return _features_str; }
 145 
 146   static intx prefetch_data_size()  {


   1 /*
   2  * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *


 107 
 108   // Instruction support
 109   static bool has_v8()                  { return (_features & v8_instructions_m) != 0; }
 110   static bool has_v9()                  { return (_features & v9_instructions_m) != 0; }
 111   static bool has_hardware_mul32()      { return (_features & hardware_mul32_m) != 0; }
 112   static bool has_hardware_div32()      { return (_features & hardware_div32_m) != 0; }
 113   static bool has_hardware_fsmuld()     { return (_features & hardware_fsmuld_m) != 0; }
 114   static bool has_hardware_popc()       { return (_features & hardware_popc_m) != 0; }
 115   static bool has_vis1()                { return (_features & vis1_instructions_m) != 0; }
 116   static bool has_vis2()                { return (_features & vis2_instructions_m) != 0; }
 117   static bool has_vis3()                { return (_features & vis3_instructions_m) != 0; }
 118   static bool has_blk_init()            { return (_features & blk_init_instructions_m) != 0; }
 119   static bool has_cbcond()              { return (_features & cbcond_instructions_m) != 0; }
 120 
 121   static bool supports_compare_and_exchange()
 122                                         { return has_v9(); }
 123 
 124   // Returns true if the platform is in the niagara line (T series)
 125   // and newer than the niagara1.
 126   static bool is_niagara_plus()         { return is_T_family(_features) && !is_T1_model(_features); }
 127   
 128   static bool is_M_series()             { return is_M_family(_features); }
 129   static bool is_T4()                   { return is_T_family(_features) && has_cbcond(); }
 130 
 131   // Fujitsu SPARC64
 132   static bool is_sparc64()              { return (_features & sparc64_family_m) != 0; }
 133 
 134   static bool is_sun4v()                { return (_features & sun4v_m) != 0; }
 135   static bool is_ultra3()               { return (_features & ultra3_m) == ultra3_m && !is_sun4v() && !is_sparc64(); }
 136 
 137   static bool has_fast_fxtof()          { return is_niagara() || is_sparc64() || has_v9() && !is_ultra3(); }
 138   static bool has_fast_idiv()           { return is_niagara_plus() || is_sparc64(); }
 139 
 140   // T4 and newer Sparc have fast RDPC instruction.
 141   static bool has_fast_rdpc()           { return is_T4(); }
 142 
 143   // On T4 and newer Sparc BIS to the beginning of cache line always zeros it.
 144   static bool has_block_zeroing()       { return has_blk_init() && is_T4(); }
 145 
 146   static const char* cpu_features()     { return _features_str; }
 147 
 148   static intx prefetch_data_size()  {


src/cpu/sparc/vm/vm_version_sparc.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File