OSDN Git Service

[X86] Generalize schedule classes to support multiple stages
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Mon, 19 Mar 2018 14:46:07 +0000 (14:46 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Mon, 19 Mar 2018 14:46:07 +0000 (14:46 +0000)
commite9aabdfb3891f7a79e64f7a5f577b632bdc12be7
treed156a7a10e17db8bdc3da9e7f81e506e86fa2783
parent3cf01d23dd13d4756d0fa18353d8d4b648198651
[X86] Generalize schedule classes to support multiple stages

Currently the WriteResPair style multi-classes take a single pipeline stage and latency, this patch generalizes this to make it easier to create complex schedules with ResourceCycles and NumMicroOps be overriden from their defaults.

This has already been done for the Jaguar scheduler to remove a number of custom schedule classes and adding it to the other x86 targets will make it much tidier as we add additional classes in the future to try and replace so many custom cases.

I've converted some instructions but a lot of the models need a bit of cleanup after the patch has been committed - memory latencies not being consistent, the class not actually being used when we could remove some/all customs, etc. I'd prefer to keep this as NFC as possible so later patches can be smaller and target specific.

Differential Revision: https://reviews.llvm.org/D44612

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@327855 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86SchedBroadwell.td
lib/Target/X86/X86SchedHaswell.td
lib/Target/X86/X86SchedSandyBridge.td
lib/Target/X86/X86SchedSkylakeClient.td
lib/Target/X86/X86SchedSkylakeServer.td
lib/Target/X86/X86ScheduleSLM.td
lib/Target/X86/X86ScheduleZnver1.td
test/CodeGen/X86/avx2-schedule.ll