src/cpu/sparc/vm/vm_version_sparc.hpp

Print this page


   1 /*
   2  * Copyright (c) 1997, 2009, 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  *
  23  */
  24 






  25 class VM_Version: public Abstract_VM_Version {
  26 protected:
  27   enum Feature_Flag {
  28     v8_instructions    = 0,
  29     hardware_mul32     = 1,
  30     hardware_div32     = 2,
  31     hardware_fsmuld    = 3,
  32     hardware_popc      = 4,
  33     v9_instructions    = 5,
  34     vis1_instructions  = 6,
  35     vis2_instructions  = 7,
  36     sun4v_instructions = 8
  37   };
  38 
  39   enum Feature_Flag_Set {
  40     unknown_m           = 0,
  41     all_features_m      = -1,
  42 
  43     v8_instructions_m   = 1 << v8_instructions,
  44     hardware_mul32_m    = 1 << hardware_mul32,


 127   static intx allocate_prefetch_style() {
 128     assert(AllocatePrefetchStyle >= 0, "AllocatePrefetchStyle should be positive");
 129     // Return 0 if AllocatePrefetchDistance was not defined.
 130     return AllocatePrefetchDistance > 0 ? AllocatePrefetchStyle : 0;
 131   }
 132 
 133   // Legacy
 134   static bool v8_instructions_work() { return has_v8() && !has_v9(); }
 135   static bool v9_instructions_work() { return has_v9(); }
 136 
 137   // Assembler testing
 138   static void allow_all();
 139   static void revert();
 140 
 141   // Override the Abstract_VM_Version implementation.
 142   static uint page_size_count() { return is_sun4v() ? 4 : 2; }
 143 
 144   // Calculates the number of parallel threads
 145   static unsigned int calc_parallel_worker_threads();
 146 };


   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  *
  23  */
  24 
  25 #ifndef CPU_SPARC_VM_VM_VERSION_SPARC_HPP
  26 #define CPU_SPARC_VM_VM_VERSION_SPARC_HPP
  27 
  28 #include "runtime/globals_extension.hpp"
  29 #include "runtime/vm_version.hpp"
  30 
  31 class VM_Version: public Abstract_VM_Version {
  32 protected:
  33   enum Feature_Flag {
  34     v8_instructions    = 0,
  35     hardware_mul32     = 1,
  36     hardware_div32     = 2,
  37     hardware_fsmuld    = 3,
  38     hardware_popc      = 4,
  39     v9_instructions    = 5,
  40     vis1_instructions  = 6,
  41     vis2_instructions  = 7,
  42     sun4v_instructions = 8
  43   };
  44 
  45   enum Feature_Flag_Set {
  46     unknown_m           = 0,
  47     all_features_m      = -1,
  48 
  49     v8_instructions_m   = 1 << v8_instructions,
  50     hardware_mul32_m    = 1 << hardware_mul32,


 133   static intx allocate_prefetch_style() {
 134     assert(AllocatePrefetchStyle >= 0, "AllocatePrefetchStyle should be positive");
 135     // Return 0 if AllocatePrefetchDistance was not defined.
 136     return AllocatePrefetchDistance > 0 ? AllocatePrefetchStyle : 0;
 137   }
 138 
 139   // Legacy
 140   static bool v8_instructions_work() { return has_v8() && !has_v9(); }
 141   static bool v9_instructions_work() { return has_v9(); }
 142 
 143   // Assembler testing
 144   static void allow_all();
 145   static void revert();
 146 
 147   // Override the Abstract_VM_Version implementation.
 148   static uint page_size_count() { return is_sun4v() ? 4 : 2; }
 149 
 150   // Calculates the number of parallel threads
 151   static unsigned int calc_parallel_worker_threads();
 152 };
 153 
 154 #endif // CPU_SPARC_VM_VM_VERSION_SPARC_HPP