author | lucy |
Mon, 18 Nov 2019 17:11:06 +0100 | |
changeset 59122 | 5d73255c2d52 |
parent 53244 | 9807daeb47c4 |
permissions | -rw-r--r-- |
1 | 1 |
/* |
53244
9807daeb47c4
8216167: Update include guards to reflect correct directories
coleenp
parents:
52904
diff
changeset
|
2 |
* Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved. |
1 | 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 |
* |
|
5547
f4b087cbb361
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
2255
diff
changeset
|
19 |
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
f4b087cbb361
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
2255
diff
changeset
|
20 |
* or visit www.oracle.com if you need additional information or have any |
f4b087cbb361
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
2255
diff
changeset
|
21 |
* questions. |
1 | 22 |
* |
23 |
*/ |
|
24 |
||
53244
9807daeb47c4
8216167: Update include guards to reflect correct directories
coleenp
parents:
52904
diff
changeset
|
25 |
#ifndef CPU_SPARC_VM_VERSION_SPARC_HPP |
9807daeb47c4
8216167: Update include guards to reflect correct directories
coleenp
parents:
52904
diff
changeset
|
26 |
#define CPU_SPARC_VM_VERSION_SPARC_HPP |
7397 | 27 |
|
59122 | 28 |
#include "runtime/abstract_vm_version.hpp" |
7397 | 29 |
#include "runtime/globals_extension.hpp" |
30 |
||
1 | 31 |
class VM_Version: public Abstract_VM_Version { |
33160
c59f1676d27e
8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
31515
diff
changeset
|
32 |
friend class VMStructs; |
35133 | 33 |
friend class JVMCIVMStructs; |
35148 | 34 |
|
1 | 35 |
protected: |
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
36 |
enum { |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
37 |
ISA_V9, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
38 |
ISA_POPC, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
39 |
ISA_VIS1, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
40 |
ISA_VIS2, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
41 |
ISA_BLK_INIT, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
42 |
ISA_FMAF, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
43 |
ISA_VIS3, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
44 |
ISA_HPC, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
45 |
ISA_IMA, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
46 |
ISA_AES, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
47 |
ISA_DES, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
48 |
ISA_KASUMI, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
49 |
ISA_CAMELLIA, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
50 |
ISA_MD5, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
51 |
ISA_SHA1, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
52 |
ISA_SHA256, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
53 |
ISA_SHA512, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
54 |
ISA_MPMUL, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
55 |
ISA_MONT, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
56 |
ISA_PAUSE, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
57 |
ISA_CBCOND, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
58 |
ISA_CRC32C, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
59 |
|
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
60 |
ISA_FJATHPLUS, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
61 |
ISA_VIS3B, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
62 |
ISA_ADI, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
63 |
ISA_SPARC5, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
64 |
ISA_MWAIT, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
65 |
ISA_XMPMUL, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
66 |
ISA_XMONT, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
67 |
ISA_PAUSE_NSEC, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
68 |
ISA_VAMASK, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
69 |
|
47562
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
70 |
ISA_SPARC6, |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
71 |
ISA_DICTUNP, |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
72 |
ISA_FPCMPSHL, |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
73 |
ISA_RLE, |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
74 |
ISA_SHA3, |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
75 |
ISA_FJATHPLUS2, |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
76 |
ISA_VIS3C, |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
77 |
ISA_SPARC5B, |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
78 |
ISA_MME, |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
79 |
|
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
80 |
// Synthesised properties: |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
81 |
|
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
82 |
CPU_FAST_IDIV, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
83 |
CPU_FAST_RDPC, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
84 |
CPU_FAST_BIS, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
85 |
CPU_FAST_LD, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
86 |
CPU_FAST_CMOVE, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
87 |
CPU_FAST_IND_BR, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
88 |
CPU_BLK_ZEROING |
1 | 89 |
}; |
90 |
||
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
91 |
private: |
47562
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
92 |
enum { ISA_last_feature = ISA_MME, |
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
93 |
CPU_last_feature = CPU_BLK_ZEROING }; |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
94 |
|
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
95 |
enum { |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
96 |
ISA_unknown_msk = 0, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
97 |
|
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
98 |
ISA_v9_msk = UINT64_C(1) << ISA_V9, |
1 | 99 |
|
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
100 |
ISA_popc_msk = UINT64_C(1) << ISA_POPC, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
101 |
ISA_vis1_msk = UINT64_C(1) << ISA_VIS1, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
102 |
ISA_vis2_msk = UINT64_C(1) << ISA_VIS2, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
103 |
ISA_blk_init_msk = UINT64_C(1) << ISA_BLK_INIT, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
104 |
ISA_fmaf_msk = UINT64_C(1) << ISA_FMAF, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
105 |
ISA_vis3_msk = UINT64_C(1) << ISA_VIS3, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
106 |
ISA_hpc_msk = UINT64_C(1) << ISA_HPC, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
107 |
ISA_ima_msk = UINT64_C(1) << ISA_IMA, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
108 |
ISA_aes_msk = UINT64_C(1) << ISA_AES, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
109 |
ISA_des_msk = UINT64_C(1) << ISA_DES, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
110 |
ISA_kasumi_msk = UINT64_C(1) << ISA_KASUMI, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
111 |
ISA_camellia_msk = UINT64_C(1) << ISA_CAMELLIA, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
112 |
ISA_md5_msk = UINT64_C(1) << ISA_MD5, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
113 |
ISA_sha1_msk = UINT64_C(1) << ISA_SHA1, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
114 |
ISA_sha256_msk = UINT64_C(1) << ISA_SHA256, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
115 |
ISA_sha512_msk = UINT64_C(1) << ISA_SHA512, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
116 |
ISA_mpmul_msk = UINT64_C(1) << ISA_MPMUL, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
117 |
ISA_mont_msk = UINT64_C(1) << ISA_MONT, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
118 |
ISA_pause_msk = UINT64_C(1) << ISA_PAUSE, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
119 |
ISA_cbcond_msk = UINT64_C(1) << ISA_CBCOND, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
120 |
ISA_crc32c_msk = UINT64_C(1) << ISA_CRC32C, |
1 | 121 |
|
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
122 |
ISA_fjathplus_msk = UINT64_C(1) << ISA_FJATHPLUS, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
123 |
ISA_vis3b_msk = UINT64_C(1) << ISA_VIS3B, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
124 |
ISA_adi_msk = UINT64_C(1) << ISA_ADI, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
125 |
ISA_sparc5_msk = UINT64_C(1) << ISA_SPARC5, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
126 |
ISA_mwait_msk = UINT64_C(1) << ISA_MWAIT, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
127 |
ISA_xmpmul_msk = UINT64_C(1) << ISA_XMPMUL, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
128 |
ISA_xmont_msk = UINT64_C(1) << ISA_XMONT, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
129 |
ISA_pause_nsec_msk = UINT64_C(1) << ISA_PAUSE_NSEC, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
130 |
ISA_vamask_msk = UINT64_C(1) << ISA_VAMASK, |
1 | 131 |
|
47562
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
132 |
ISA_sparc6_msk = UINT64_C(1) << ISA_SPARC6, |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
133 |
ISA_dictunp_msk = UINT64_C(1) << ISA_DICTUNP, |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
134 |
ISA_fpcmpshl_msk = UINT64_C(1) << ISA_FPCMPSHL, |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
135 |
ISA_rle_msk = UINT64_C(1) << ISA_RLE, |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
136 |
ISA_sha3_msk = UINT64_C(1) << ISA_SHA3, |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
137 |
ISA_fjathplus2_msk = UINT64_C(1) << ISA_FJATHPLUS2, |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
138 |
ISA_vis3c_msk = UINT64_C(1) << ISA_VIS3C, |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
139 |
ISA_sparc5b_msk = UINT64_C(1) << ISA_SPARC5B, |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
140 |
ISA_mme_msk = UINT64_C(1) << ISA_MME, |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
141 |
|
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
142 |
CPU_fast_idiv_msk = UINT64_C(1) << CPU_FAST_IDIV, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
143 |
CPU_fast_rdpc_msk = UINT64_C(1) << CPU_FAST_RDPC, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
144 |
CPU_fast_bis_msk = UINT64_C(1) << CPU_FAST_BIS, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
145 |
CPU_fast_ld_msk = UINT64_C(1) << CPU_FAST_LD, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
146 |
CPU_fast_cmove_msk = UINT64_C(1) << CPU_FAST_CMOVE, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
147 |
CPU_fast_ind_br_msk = UINT64_C(1) << CPU_FAST_IND_BR, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
148 |
CPU_blk_zeroing_msk = UINT64_C(1) << CPU_BLK_ZEROING, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
149 |
|
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
150 |
last_feature_msk = CPU_blk_zeroing_msk, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
151 |
full_feature_msk = (last_feature_msk << 1) - 1 |
1 | 152 |
}; |
153 |
||
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
154 |
/* The following, previously supported, SPARC implementations are no longer |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
155 |
* supported. |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
156 |
* |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
157 |
* UltraSPARC I/II: |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
158 |
* SPARC-V9, VIS |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
159 |
* UltraSPARC III/+: (Cheetah/+) |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
160 |
* SPARC-V9, VIS |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
161 |
* UltraSPARC IV: (Jaguar) |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
162 |
* SPARC-V9, VIS |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
163 |
* UltraSPARC IV+: (Panther) |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
164 |
* SPARC-V9, VIS, POPC |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
165 |
* |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
166 |
* The currently supported SPARC implementations are listed below (including |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
167 |
* generic V9 support). |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
168 |
* |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
169 |
* UltraSPARC T1: (Niagara) |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
170 |
* SPARC-V9, VIS, ASI_BIS (Crypto/hash in SPU) |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
171 |
* UltraSPARC T2: (Niagara-2) |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
172 |
* SPARC-V9, VIS, ASI_BIS, POPC (Crypto/hash in SPU) |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
173 |
* UltraSPARC T2+: (Victoria Falls, etc.) |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
174 |
* SPARC-V9, VIS, VIS2, ASI_BIS, POPC (Crypto/hash in SPU) |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
175 |
* |
47562
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
176 |
* UltraSPARC T3: (Rainbow Falls/C2) |
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
177 |
* SPARC-V9, VIS, VIS2, ASI_BIS, POPC (Crypto/hash in SPU) |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
178 |
* |
47562
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
179 |
* Oracle SPARC T4/T5/M5: (Core C3) |
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
180 |
* SPARC-V9, VIS, VIS2, VIS3, ASI_BIS, HPC, POPC, FMAF, IMA, PAUSE, CBCOND, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
181 |
* AES, DES, Kasumi, Camellia, MD5, SHA1, SHA256, SHA512, CRC32C, MONT, MPMUL |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
182 |
* |
47562
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
183 |
* Oracle SPARC M7: (Core C4) |
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
184 |
* SPARC-V9, VIS, VIS2, VIS3, ASI_BIS, HPC, POPC, FMAF, IMA, PAUSE, CBCOND, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
185 |
* AES, DES, Camellia, MD5, SHA1, SHA256, SHA512, CRC32C, MONT, MPMUL, VIS3b, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
186 |
* ADI, SPARC5, MWAIT, XMPMUL, XMONT, PAUSE_NSEC, VAMASK |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
187 |
* |
47562
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
188 |
* Oracle SPARC M8: (Core C5) |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
189 |
* SPARC-V9, VIS, VIS2, VIS3, ASI_BIS, HPC, POPC, FMAF, IMA, PAUSE, CBCOND, |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
190 |
* AES, DES, Camellia, MD5, SHA1, SHA256, SHA512, CRC32C, MONT, MPMUL, VIS3b, |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
191 |
* ADI, SPARC5, MWAIT, XMPMUL, XMONT, PAUSE_NSEC, VAMASK, SPARC6, FPCMPSHL, |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
192 |
* DICTUNP, RLE, SHA3, MME |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
193 |
* |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
194 |
* NOTE: Oracle Number support ignored. |
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
195 |
*/ |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
196 |
enum { |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
197 |
niagara1_msk = ISA_v9_msk | ISA_vis1_msk | ISA_blk_init_msk, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
198 |
niagara2_msk = niagara1_msk | ISA_popc_msk, |
1 | 199 |
|
47562
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
200 |
core_C2_msk = niagara2_msk | ISA_vis2_msk, |
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
201 |
|
47562
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
202 |
core_C3_msk = core_C2_msk | ISA_fmaf_msk | ISA_vis3_msk | ISA_hpc_msk | |
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
203 |
ISA_ima_msk | ISA_aes_msk | ISA_des_msk | ISA_kasumi_msk | |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
204 |
ISA_camellia_msk | ISA_md5_msk | ISA_sha1_msk | ISA_sha256_msk | |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
205 |
ISA_sha512_msk | ISA_mpmul_msk | ISA_mont_msk | ISA_pause_msk | |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
206 |
ISA_cbcond_msk | ISA_crc32c_msk, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
207 |
|
47562
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
208 |
core_C4_msk = core_C3_msk - ISA_kasumi_msk | |
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
209 |
ISA_vis3b_msk | ISA_adi_msk | ISA_sparc5_msk | ISA_mwait_msk | |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
210 |
ISA_xmpmul_msk | ISA_xmont_msk | ISA_pause_nsec_msk | ISA_vamask_msk, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
211 |
|
47562
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
212 |
core_C5_msk = core_C4_msk | ISA_sparc6_msk | ISA_dictunp_msk | |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
213 |
ISA_fpcmpshl_msk | ISA_rle_msk | ISA_sha3_msk | ISA_mme_msk, |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
214 |
|
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
215 |
ultra_sparc_t1_msk = niagara1_msk, |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
216 |
ultra_sparc_t2_msk = niagara2_msk, |
47562
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
217 |
ultra_sparc_t3_msk = core_C2_msk, |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
218 |
ultra_sparc_m5_msk = core_C3_msk, // NOTE: First out-of-order pipeline. |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
219 |
ultra_sparc_m7_msk = core_C4_msk, |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
220 |
ultra_sparc_m8_msk = core_C5_msk |
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
221 |
}; |
7704 | 222 |
|
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
223 |
static uint _L2_data_cache_line_size; |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
224 |
static uint L2_data_cache_line_size() { return _L2_data_cache_line_size; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
225 |
|
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
226 |
static void determine_features(); |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
227 |
static void platform_features(); |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
228 |
static void print_features(); |
1 | 229 |
|
230 |
public: |
|
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
231 |
enum { |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
232 |
// Adopt a conservative behaviour (modelling single-insn-fetch-n-issue) for |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
233 |
// Niagara (and SPARC64). While there are at least two entries/slots in the |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
234 |
// instruction fetch buffer on any Niagara core (and as many as eight on a |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
235 |
// SPARC64), the performance improvement from keeping hot branch targets on |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
236 |
// optimally aligned addresses is such a small one (if any) that we choose |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
237 |
// not to use the extra code space required. |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
238 |
|
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
239 |
insn_fetch_alignment = 4 // Byte alignment in L1 insn. cache. |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
240 |
}; |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
241 |
|
1 | 242 |
static void initialize(); |
243 |
||
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
244 |
static void init_before_ergo() { determine_features(); } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
245 |
|
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
246 |
// Instruction feature support: |
35043
30543d2a0a20
8133023: ParallelGCThreads is not calculated correctly
jmasa
parents:
33160
diff
changeset
|
247 |
|
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
248 |
static bool has_v9() { return (_features & ISA_v9_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
249 |
static bool has_popc() { return (_features & ISA_popc_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
250 |
static bool has_vis1() { return (_features & ISA_vis1_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
251 |
static bool has_vis2() { return (_features & ISA_vis2_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
252 |
static bool has_blk_init() { return (_features & ISA_blk_init_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
253 |
static bool has_fmaf() { return (_features & ISA_fmaf_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
254 |
static bool has_vis3() { return (_features & ISA_vis3_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
255 |
static bool has_hpc() { return (_features & ISA_hpc_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
256 |
static bool has_ima() { return (_features & ISA_ima_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
257 |
static bool has_aes() { return (_features & ISA_aes_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
258 |
static bool has_des() { return (_features & ISA_des_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
259 |
static bool has_kasumi() { return (_features & ISA_kasumi_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
260 |
static bool has_camellia() { return (_features & ISA_camellia_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
261 |
static bool has_md5() { return (_features & ISA_md5_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
262 |
static bool has_sha1() { return (_features & ISA_sha1_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
263 |
static bool has_sha256() { return (_features & ISA_sha256_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
264 |
static bool has_sha512() { return (_features & ISA_sha512_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
265 |
static bool has_mpmul() { return (_features & ISA_mpmul_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
266 |
static bool has_mont() { return (_features & ISA_mont_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
267 |
static bool has_pause() { return (_features & ISA_pause_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
268 |
static bool has_cbcond() { return (_features & ISA_cbcond_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
269 |
static bool has_crc32c() { return (_features & ISA_crc32c_msk) != 0; } |
1 | 270 |
|
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
271 |
static bool has_athena_plus() { return (_features & ISA_fjathplus_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
272 |
static bool has_vis3b() { return (_features & ISA_vis3b_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
273 |
static bool has_adi() { return (_features & ISA_adi_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
274 |
static bool has_sparc5() { return (_features & ISA_sparc5_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
275 |
static bool has_mwait() { return (_features & ISA_mwait_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
276 |
static bool has_xmpmul() { return (_features & ISA_xmpmul_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
277 |
static bool has_xmont() { return (_features & ISA_xmont_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
278 |
static bool has_pause_nsec() { return (_features & ISA_pause_nsec_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
279 |
static bool has_vamask() { return (_features & ISA_vamask_msk) != 0; } |
1 | 280 |
|
47562
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
281 |
static bool has_sparc6() { return (_features & ISA_sparc6_msk) != 0; } |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
282 |
static bool has_dictunp() { return (_features & ISA_dictunp_msk) != 0; } |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
283 |
static bool has_fpcmpshl() { return (_features & ISA_fpcmpshl_msk) != 0; } |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
284 |
static bool has_rle() { return (_features & ISA_rle_msk) != 0; } |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
285 |
static bool has_sha3() { return (_features & ISA_sha3_msk) != 0; } |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
286 |
static bool has_athena_plus2() { return (_features & ISA_fjathplus2_msk) != 0; } |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
287 |
static bool has_vis3c() { return (_features & ISA_vis3c_msk) != 0; } |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
288 |
static bool has_sparc5b() { return (_features & ISA_sparc5b_msk) != 0; } |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
289 |
static bool has_mme() { return (_features & ISA_mme_msk) != 0; } |
f789ccebcfe4
8182279: Updating SPARC feature/capability detection to support Core C5.
neliasso
parents:
47216
diff
changeset
|
290 |
|
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
291 |
static bool has_fast_idiv() { return (_features & CPU_fast_idiv_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
292 |
static bool has_fast_rdpc() { return (_features & CPU_fast_rdpc_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
293 |
static bool has_fast_bis() { return (_features & CPU_fast_bis_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
294 |
static bool has_fast_ld() { return (_features & CPU_fast_ld_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
295 |
static bool has_fast_cmove() { return (_features & CPU_fast_cmove_msk) != 0; } |
10267 | 296 |
|
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
297 |
// If indirect and direct branching is equally fast. |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
298 |
static bool has_fast_ind_br() { return (_features & CPU_fast_ind_br_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
299 |
// If SPARC BIS to the beginning of cache line always zeros it. |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
300 |
static bool has_blk_zeroing() { return (_features & CPU_blk_zeroing_msk) != 0; } |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
301 |
|
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
302 |
static bool supports_compare_and_exchange() { return true; } |
10267 | 303 |
|
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
304 |
// FIXME: To be removed. |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
305 |
static bool is_post_niagara() { |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
306 |
return (_features & niagara2_msk) == niagara2_msk; |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
307 |
} |
1 | 308 |
|
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
309 |
// Default prefetch block size on SPARC. |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
310 |
static uint prefetch_data_size() { return L2_data_cache_line_size(); } |
1 | 311 |
|
46591
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
312 |
private: |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
313 |
// Prefetch policy and characteristics: |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
314 |
// |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
315 |
// These support routines are used in order to isolate any CPU/core specific |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
316 |
// logic from the actual flag/option processing. They should reflect the HW |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
317 |
// characteristics for the associated options on the current platform. |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
318 |
// |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
319 |
// The three Prefetch* options below (assigned -1 in the configuration) are |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
320 |
// treated according to (given the accepted range [-1..<maxint>]): |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
321 |
// -1: Determine a proper HW-specific value for the current HW. |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
322 |
// 0: Off |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
323 |
// >0: Command-line supplied value to use. |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
324 |
// |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
325 |
// FIXME: The documentation string in the configuration is wrong, saying that |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
326 |
// -1 is also interpreted as off. |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
327 |
// |
1 | 328 |
static intx prefetch_copy_interval_in_bytes() { |
46591
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
329 |
intx bytes = PrefetchCopyIntervalInBytes; |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
330 |
return bytes < 0 ? 512 : bytes; |
1 | 331 |
} |
332 |
static intx prefetch_scan_interval_in_bytes() { |
|
46591
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
333 |
intx bytes = PrefetchScanIntervalInBytes; |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
334 |
return bytes < 0 ? 512 : bytes; |
1 | 335 |
} |
336 |
static intx prefetch_fields_ahead() { |
|
46591
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
337 |
intx count = PrefetchFieldsAhead; |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
338 |
return count < 0 ? 0 : count; |
1 | 339 |
} |
340 |
||
46591
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
341 |
// AllocatePrefetchDistance is treated under the same interpretation as the |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
342 |
// Prefetch* options above (i.e., -1, 0, >0). |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
343 |
static intx allocate_prefetch_distance() { |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
344 |
intx count = AllocatePrefetchDistance; |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
345 |
return count < 0 ? 512 : count; |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
346 |
} |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
347 |
|
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
348 |
// AllocatePrefetchStyle is guaranteed to be in range [0..3] defined by the |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
349 |
// configuration. |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
350 |
static intx allocate_prefetch_style() { |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
351 |
intx distance = allocate_prefetch_distance(); |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
352 |
// Return 0 (off/none) if AllocatePrefetchDistance was not defined. |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
353 |
return distance > 0 ? AllocatePrefetchStyle : 0; |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
354 |
} |
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
355 |
|
3f3105af599e
8182711: Re/Introduce private interface for HW-specific prefetch options in SPARC VM_Version
neliasso
parents:
46547
diff
changeset
|
356 |
public: |
1 | 357 |
// Assembler testing |
358 |
static void allow_all(); |
|
359 |
static void revert(); |
|
360 |
||
361 |
// Override the Abstract_VM_Version implementation. |
|
46592
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
362 |
// |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
363 |
// FIXME: Removed broken test on sun4v (always false when invoked prior to the |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
364 |
// proper capability setup), thus always returning 2. Still need to fix |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
365 |
// this properly in order to enable complete page size support. |
6e357e2c8143
8172231: SPARC ISA/CPU feature detection is broken/insufficient (on Solaris)
neliasso
parents:
46591
diff
changeset
|
366 |
static uint page_size_count() { return 2; } |
183
ba55c7f3fd45
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
1
diff
changeset
|
367 |
|
52904
d2f118d3f8e7
8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
47562
diff
changeset
|
368 |
// Override default denominator for ParallelGCThreads. |
d2f118d3f8e7
8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
47562
diff
changeset
|
369 |
// |
d2f118d3f8e7
8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
47562
diff
changeset
|
370 |
// FIXME: Simply checking the processor family is insufficient. |
d2f118d3f8e7
8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
47562
diff
changeset
|
371 |
static uint parallel_worker_threads_denominator() { |
d2f118d3f8e7
8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
47562
diff
changeset
|
372 |
return is_post_niagara() ? 16 : 8; |
d2f118d3f8e7
8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
manc
parents:
47562
diff
changeset
|
373 |
} |
1 | 374 |
}; |
7397 | 375 |
|
53244
9807daeb47c4
8216167: Update include guards to reflect correct directories
coleenp
parents:
52904
diff
changeset
|
376 |
#endif // CPU_SPARC_VM_VERSION_SPARC_HPP |