Skip to content

Commit b4dda4b

Browse files
authored
Merge pull request #19624 from 0xdaryl/cpuid.46
(0.46.0) Prefer to disable TLH allocation prefetching by default post-Skylake
2 parents cd4c5b6 + 7bc1b84 commit b4dda4b

File tree

3 files changed

+33
-18
lines changed

3 files changed

+33
-18
lines changed

runtime/compiler/control/J9Options.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2176,8 +2176,13 @@ void J9::Options::preProcessTLHPrefetch(J9JavaVM *vm)
21762176
#elif defined(TR_HOST_ARM64)
21772177
preferTLHPrefetch = true;
21782178
#else // TR_HOST_X86
2179-
preferTLHPrefetch = true;
2180-
// Disable TM on x86 because we cannot tell whether a Haswell chip supports TM or not, plus it's killing the performance on dayTrader3
2179+
preferTLHPrefetch =
2180+
(TR::Compiler->target.cpu.isGenuineIntel() &&
2181+
TR::Compiler->target.cpu.isAtMost(OMR_PROCESSOR_X86_INTEL_SKYLAKE)) ||
2182+
!TR::Compiler->target.cpu.isGenuineIntel();
2183+
2184+
// Disable TM on x86 because we cannot tell whether a Haswell chip supports
2185+
// TM or not, plus it's killing the performance on dayTrader3
21812186
self()->setOption(TR_DisableTM);
21822187
#endif
21832188

runtime/compiler/x/codegen/AllocPrefetchSnippet.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ uint8_t* TR::X86AllocPrefetchSnippet::emitSharedBody(uint8_t* prefetchSnippetBuf
236236
for (int32_t lineOffset = 0; lineOffset < numLines; ++lineOffset)
237237
{
238238
prefetchSnippetBuffer[0] = 0x0F;
239-
if (comp->target().cpu.is(OMR_PROCESSOR_X86_AMDFAMILY15H))
239+
if (comp->target().cpu.is(OMR_PROCESSOR_X86_AMD_FAMILY15H))
240240
prefetchSnippetBuffer[1] = 0x0D;
241241
else
242242
prefetchSnippetBuffer[1] = 0x18;

runtime/compiler/x/env/J9CPU.cpp

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -214,35 +214,45 @@ J9::X86::CPU::is_test(OMRProcessorArchitecture p)
214214

215215
switch(p)
216216
{
217-
case OMR_PROCESSOR_X86_INTELWESTMERE:
217+
case OMR_PROCESSOR_X86_INTEL_WESTMERE:
218218
return TR::CodeGenerator::getX86ProcessorInfo().isIntelWestmere() == (_processorDescription.processor == p);
219-
case OMR_PROCESSOR_X86_INTELNEHALEM:
219+
case OMR_PROCESSOR_X86_INTEL_NEHALEM:
220220
return TR::CodeGenerator::getX86ProcessorInfo().isIntelNehalem() == (_processorDescription.processor == p);
221-
case OMR_PROCESSOR_X86_INTELPENTIUM:
221+
case OMR_PROCESSOR_X86_INTEL_PENTIUM:
222222
return TR::CodeGenerator::getX86ProcessorInfo().isIntelPentium() == (_processorDescription.processor == p);
223-
case OMR_PROCESSOR_X86_INTELP6:
223+
case OMR_PROCESSOR_X86_INTEL_P6:
224224
return TR::CodeGenerator::getX86ProcessorInfo().isIntelP6() == (_processorDescription.processor == p);
225-
case OMR_PROCESSOR_X86_INTELPENTIUM4:
225+
case OMR_PROCESSOR_X86_INTEL_PENTIUM4:
226226
return TR::CodeGenerator::getX86ProcessorInfo().isIntelPentium4() == (_processorDescription.processor == p);
227-
case OMR_PROCESSOR_X86_INTELCORE2:
227+
case OMR_PROCESSOR_X86_INTEL_CORE2:
228228
return TR::CodeGenerator::getX86ProcessorInfo().isIntelCore2() == (_processorDescription.processor == p);
229-
case OMR_PROCESSOR_X86_INTELTULSA:
229+
case OMR_PROCESSOR_X86_INTEL_TULSA:
230230
return TR::CodeGenerator::getX86ProcessorInfo().isIntelTulsa() == (_processorDescription.processor == p);
231-
case OMR_PROCESSOR_X86_INTELSANDYBRIDGE:
231+
case OMR_PROCESSOR_X86_INTEL_SANDYBRIDGE:
232232
return TR::CodeGenerator::getX86ProcessorInfo().isIntelSandyBridge() == (_processorDescription.processor == p);
233-
case OMR_PROCESSOR_X86_INTELIVYBRIDGE:
233+
case OMR_PROCESSOR_X86_INTEL_IVYBRIDGE:
234234
return TR::CodeGenerator::getX86ProcessorInfo().isIntelIvyBridge() == (_processorDescription.processor == p);
235-
case OMR_PROCESSOR_X86_INTELHASWELL:
235+
case OMR_PROCESSOR_X86_INTEL_HASWELL:
236236
return TR::CodeGenerator::getX86ProcessorInfo().isIntelHaswell() == (_processorDescription.processor == p);
237-
case OMR_PROCESSOR_X86_INTELBROADWELL:
237+
case OMR_PROCESSOR_X86_INTEL_BROADWELL:
238238
return TR::CodeGenerator::getX86ProcessorInfo().isIntelBroadwell() == (_processorDescription.processor == p);
239-
case OMR_PROCESSOR_X86_INTELSKYLAKE:
239+
case OMR_PROCESSOR_X86_INTEL_SKYLAKE:
240240
return TR::CodeGenerator::getX86ProcessorInfo().isIntelSkylake() == (_processorDescription.processor == p);
241-
case OMR_PROCESSOR_X86_AMDATHLONDURON:
241+
case OMR_PROCESSOR_X86_INTEL_CASCADELAKE:
242+
return TR::CodeGenerator::getX86ProcessorInfo().isIntelCascadeLake() == (_processorDescription.processor == p);
243+
case OMR_PROCESSOR_X86_INTEL_COOPERLAKE:
244+
return TR::CodeGenerator::getX86ProcessorInfo().isIntelCooperLake() == (_processorDescription.processor == p);
245+
case OMR_PROCESSOR_X86_INTEL_ICELAKE:
246+
return TR::CodeGenerator::getX86ProcessorInfo().isIntelIceLake() == (_processorDescription.processor == p);
247+
case OMR_PROCESSOR_X86_INTEL_SAPPHIRERAPIDS:
248+
return TR::CodeGenerator::getX86ProcessorInfo().isIntelSapphireRapids() == (_processorDescription.processor == p);
249+
case OMR_PROCESSOR_X86_INTEL_EMERALDRAPIDS:
250+
return TR::CodeGenerator::getX86ProcessorInfo().isIntelEmeraldRapids() == (_processorDescription.processor == p);
251+
case OMR_PROCESSOR_X86_AMD_ATHLONDURON:
242252
return TR::CodeGenerator::getX86ProcessorInfo().isAMDAthlonDuron() == (_processorDescription.processor == p);
243-
case OMR_PROCESSOR_X86_AMDOPTERON:
253+
case OMR_PROCESSOR_X86_AMD_OPTERON:
244254
return TR::CodeGenerator::getX86ProcessorInfo().isAMDOpteron() == (_processorDescription.processor == p);
245-
case OMR_PROCESSOR_X86_AMDFAMILY15H:
255+
case OMR_PROCESSOR_X86_AMD_FAMILY15H:
246256
return TR::CodeGenerator::getX86ProcessorInfo().isAMD15h() == (_processorDescription.processor == p);
247257
default:
248258
return false;

0 commit comments

Comments
 (0)