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
|