73 if (AllocatePrefetchStyle == 3 && !has_blk_init()) { |
73 if (AllocatePrefetchStyle == 3 && !has_blk_init()) { |
74 warning("BIS instructions are not available on this CPU"); |
74 warning("BIS instructions are not available on this CPU"); |
75 FLAG_SET_DEFAULT(AllocatePrefetchStyle, 1); |
75 FLAG_SET_DEFAULT(AllocatePrefetchStyle, 1); |
76 } |
76 } |
77 |
77 |
|
78 if (has_v9()) { |
|
79 assert(ArraycopySrcPrefetchDistance < 4096, "invalid value"); |
|
80 if (ArraycopySrcPrefetchDistance >= 4096) |
|
81 ArraycopySrcPrefetchDistance = 4064; |
|
82 assert(ArraycopyDstPrefetchDistance < 4096, "invalid value"); |
|
83 if (ArraycopyDstPrefetchDistance >= 4096) |
|
84 ArraycopyDstPrefetchDistance = 4064; |
|
85 } else { |
|
86 if (ArraycopySrcPrefetchDistance > 0) { |
|
87 warning("prefetch instructions are not available on this CPU"); |
|
88 FLAG_SET_DEFAULT(ArraycopySrcPrefetchDistance, 0); |
|
89 } |
|
90 if (ArraycopyDstPrefetchDistance > 0) { |
|
91 warning("prefetch instructions are not available on this CPU"); |
|
92 FLAG_SET_DEFAULT(ArraycopyDstPrefetchDistance, 0); |
|
93 } |
|
94 } |
|
95 |
78 UseSSE = 0; // Only on x86 and x64 |
96 UseSSE = 0; // Only on x86 and x64 |
79 |
97 |
80 _supports_cx8 = has_v9(); |
98 _supports_cx8 = has_v9(); |
81 |
99 |
82 if (is_niagara()) { |
100 if (is_niagara()) { |
166 FLAG_SET_DEFAULT(UseCBCond, true); |
184 FLAG_SET_DEFAULT(UseCBCond, true); |
167 } |
185 } |
168 } else if (UseCBCond) { |
186 } else if (UseCBCond) { |
169 warning("CBCOND instruction is not available on this CPU"); |
187 warning("CBCOND instruction is not available on this CPU"); |
170 FLAG_SET_DEFAULT(UseCBCond, false); |
188 FLAG_SET_DEFAULT(UseCBCond, false); |
|
189 } |
|
190 |
|
191 assert(BlockZeroingLowLimit > 0, "invalid value"); |
|
192 if (has_block_zeroing()) { |
|
193 if (FLAG_IS_DEFAULT(UseBlockZeroing)) { |
|
194 FLAG_SET_DEFAULT(UseBlockZeroing, true); |
|
195 } |
|
196 } else if (UseBlockZeroing) { |
|
197 warning("BIS zeroing instructions are not available on this CPU"); |
|
198 FLAG_SET_DEFAULT(UseBlockZeroing, false); |
|
199 } |
|
200 |
|
201 assert(BlockCopyLowLimit > 0, "invalid value"); |
|
202 if (has_block_zeroing()) { // has_blk_init() && is_T4(): core's local L2 cache |
|
203 if (FLAG_IS_DEFAULT(UseBlockCopy)) { |
|
204 FLAG_SET_DEFAULT(UseBlockCopy, true); |
|
205 } |
|
206 } else if (UseBlockCopy) { |
|
207 warning("BIS instructions are not available or expensive on this CPU"); |
|
208 FLAG_SET_DEFAULT(UseBlockCopy, false); |
171 } |
209 } |
172 |
210 |
173 #ifdef COMPILER2 |
211 #ifdef COMPILER2 |
174 // T4 and newer Sparc cpus have fast RDPC. |
212 // T4 and newer Sparc cpus have fast RDPC. |
175 if (has_fast_rdpc() && FLAG_IS_DEFAULT(UseRDPCForConstantTableBase)) { |
213 if (has_fast_rdpc() && FLAG_IS_DEFAULT(UseRDPCForConstantTableBase)) { |