[PATCH] D144010: [X86] AMD Znver4 (Genoa) Scheduler enablement

Ganesh Gopalasubramanian via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 2 00:37:46 PST 2023


GGanesh updated this revision to Diff 501776.
GGanesh added a comment.

Updated for RKSimon's review comments as below.

> double the latency just for vaddps?

Ack. Corrected!

> Please can you adjust x86PfmCounters.td so znver4 counters points to suitable model resources

On the outset, uses exactly similar counters when compared to znver3.
Categorised to Int, FP, Load-Store, Cycles and Ops retired. I have added Zn4AGU mapping additionally.

> I'm not sure how complete perfmon2 zen4 support is yet

Libpfm for znver4 is updated by Dec'2022.

> Don't you need to account for double pumping for ZMM? In the Jaguar model we'd typically double the resource usage to [2] to simulate it - so uops stays at 1.

It is not really double pumping similar to that of AMD archs! The micro-ops are doubled however they get into same pipeline one cycle at a time. So, at any given cycle, we can have two different 512-insns fed into the FP pipes (unlike previously double pumped archs). So, uops will be 2 for 512-insns however the other units in FP-pipeline are available for picking another 512 insn on the same cycle.

@RKSimon! We would like to have this patch as part of 16.0 release. Would like to know your thoughts on that! Revisions to the model can follow after the release!


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D144010/new/

https://reviews.llvm.org/D144010

Files:
  llvm/lib/Target/X86/X86.td
  llvm/lib/Target/X86/X86PfmCounters.td
  llvm/lib/Target/X86/X86ScheduleZnver4.td
  llvm/test/tools/llvm-mca/X86/Znver4/independent-load-stores.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-adx.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-aes.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx1.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx2.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512bitalg.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512bitalgvl.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512bw.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512bwvl.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512cd.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512cdvl.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512dq.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512dqvl.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512gfni.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512gfnivl.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512ifma.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512ifmavl.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512vaes.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512vaesvl.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512vbmi.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512vbmi2.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512vbmi2vl.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512vbmivl.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512vl.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512vnni.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512vnnivl.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512vp2intersect.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512vp2intersectvl.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512vpclmulqdq.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512vpclmulqdqvl.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512vpopcntdq.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512vpopcntdqvl.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avxgfni.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-avxvnni.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-bmi1.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-bmi2.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-clflushopt.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-clwb.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-cmov.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-cmpxchg.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-f16c.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-fma.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-fsgsbase.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-gfni.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-lea.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-lzcnt.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-mmx.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-movbe.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-pclmul.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-popcnt.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-prefetchw.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-rdrand.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-rdseed.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-sse1.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-sse2.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-sse3.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-sse41.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-sse42.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-ssse3.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-vaes.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-vpclmulqdq.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-x86_32.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-x86_64.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-x87.s
  llvm/test/tools/llvm-mca/X86/Znver4/resources-xsave.s
  llvm/test/tools/llvm-mca/X86/Znver4/zero-idioms.s
  llvm/test/tools/llvm-mca/X86/cpus.s
  llvm/test/tools/llvm-mca/X86/read-after-ld-1.s
  llvm/test/tools/llvm-mca/X86/register-file-statistics.s
  llvm/test/tools/llvm-mca/X86/scheduler-queue-usage.s



More information about the llvm-commits mailing list