[X86] Add WriteFSign/WriteFLogic scheduler classes
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Fri, 20 Apr 2018 21:16:05 +0000 (21:16 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Fri, 20 Apr 2018 21:16:05 +0000 (21:16 +0000)
commitd14d2e7b185ffd7fcc171ea07734ba5b7aa73d8a
tree4a53c2e74528b0d6f6225b8dcd90005dd2b9cc92
parent381b3d8aa372eb1df70530939b100d827df673c9
[X86] Add WriteFSign/WriteFLogic scheduler classes

Split the fp and integer vector logical instruction scheduler classes - older CPUs especially often handled these on different pipes.

This unearthed a couple of things that are also handled in this patch:

(1) We were tagging avx512 fp logic ops as WriteFAdd, probably because of the lack of WriteFLogic
(2) SandyBridge had integer logic ops only using Port5, when afaict they can use Ports015.
(3) Cleaned up x86 FCHS/FABS scheduling as they are typically treated as fp logic ops.

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

llvm-svn: 330480
18 files changed:
llvm/lib/Target/X86/X86InstrAVX512.td
llvm/lib/Target/X86/X86InstrFPStack.td
llvm/lib/Target/X86/X86InstrSSE.td
llvm/lib/Target/X86/X86SchedBroadwell.td
llvm/lib/Target/X86/X86SchedHaswell.td
llvm/lib/Target/X86/X86SchedSandyBridge.td
llvm/lib/Target/X86/X86SchedSkylakeClient.td
llvm/lib/Target/X86/X86SchedSkylakeServer.td
llvm/lib/Target/X86/X86Schedule.td
llvm/lib/Target/X86/X86ScheduleAtom.td
llvm/lib/Target/X86/X86ScheduleBtVer2.td
llvm/lib/Target/X86/X86ScheduleSLM.td
llvm/lib/Target/X86/X86ScheduleZnver1.td
llvm/test/CodeGen/X86/avx2-schedule.ll
llvm/test/CodeGen/X86/avx512-schedule.ll
llvm/test/CodeGen/X86/avx512-shuffle-schedule.ll
llvm/test/CodeGen/X86/mmx-schedule.ll
llvm/test/CodeGen/X86/x87-schedule.ll