< prev index next >
src/cpu/x86/vm/vm_version_x86.cpp
Print this page
*** 1289,1319 ****
// Modern processors allow misaligned memory operations for vectors.
AlignVector = !UseUnalignedLoadStores;
}
#endif // COMPILER2
! if( AllocatePrefetchInstr == 3 && !supports_3dnow_prefetch() ) AllocatePrefetchInstr=0;
! if( !supports_sse() && supports_3dnow_prefetch() ) AllocatePrefetchInstr = 3;
// Allocation prefetch settings
intx cache_line_size = prefetch_data_size();
! if( cache_line_size > AllocatePrefetchStepSize )
! AllocatePrefetchStepSize = cache_line_size;
AllocatePrefetchDistance = allocate_prefetch_distance();
AllocatePrefetchStyle = allocate_prefetch_style();
if (is_intel() && cpu_family() == 6 && supports_sse3()) {
! if (AllocatePrefetchStyle == 2) { // watermark prefetching on Core
#ifdef _LP64
! AllocatePrefetchDistance = 384;
#else
! AllocatePrefetchDistance = 320;
#endif
}
if (supports_sse4_2() && supports_ht()) { // Nehalem based cpus
! AllocatePrefetchDistance = 192;
if (FLAG_IS_DEFAULT(AllocatePrefetchLines)) {
FLAG_SET_DEFAULT(AllocatePrefetchLines, 4);
}
}
#ifdef COMPILER2
--- 1289,1329 ----
// Modern processors allow misaligned memory operations for vectors.
AlignVector = !UseUnalignedLoadStores;
}
#endif // COMPILER2
! if (FLAG_IS_DEFAULT(AllocatePrefetchInstr)) {
! if (AllocatePrefetchInstr == 3 && !supports_3dnow_prefetch()) {
! FLAG_SET_DEFAULT(AllocatePrefetchInstr, 0);
! } else if (!supports_sse() && supports_3dnow_prefetch()) {
! FLAG_SET_DEFAULT(AllocatePrefetchInstr, 3);
! }
! }
// Allocation prefetch settings
intx cache_line_size = prefetch_data_size();
! if (FLAG_IS_DEFAULT(AllocatePrefetchDistance) &&
! (cache_line_size > AllocatePrefetchStepSize)) {
! FLAG_SET_DEFAULT(AllocatePrefetchStepSize, cache_line_size);
! }
AllocatePrefetchDistance = allocate_prefetch_distance();
AllocatePrefetchStyle = allocate_prefetch_style();
if (is_intel() && cpu_family() == 6 && supports_sse3()) {
! if (FLAG_IS_DEFAULT(AllocatePrefetchDistance) &&
! (AllocatePrefetchStyle == 2)) { // watermark prefetching on Core
#ifdef _LP64
! FLAG_SET_DEFAULT(AllocatePrefetchDistance, 384);
#else
! FLAG_SET_DEFAULT(AllocatePrefetchDistance, 320);
#endif
}
if (supports_sse4_2() && supports_ht()) { // Nehalem based cpus
! if (FLAG_IS_DEFAULT(AllocatePrefetchDistance)) {
! FLAG_SET_DEFAULT(AllocatePrefetchDistance, 192);
! }
if (FLAG_IS_DEFAULT(AllocatePrefetchLines)) {
FLAG_SET_DEFAULT(AllocatePrefetchLines, 4);
}
}
#ifdef COMPILER2
< prev index next >