[X86][SSE] Introduce Float/Vector WriteMove, WriteLoad and Writetore scheduler classes
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Thu, 15 Mar 2018 14:45:30 +0000 (14:45 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Thu, 15 Mar 2018 14:45:30 +0000 (14:45 +0000)
commitfb7aa57bf14268e229b4eab57e105b691f1c48b3
tree1164f88eeb366330d5fc8a6e5bd3c2785aaf83cf
parent9a54397f81c9882d9cd25bde666f4b0c50bf0654
[X86][SSE] Introduce Float/Vector WriteMove, WriteLoad and Writetore scheduler classes

As discussed on D44428 and PR36726, this patch splits off WriteFMove/WriteVecMove, WriteFLoad/WriteVecLoad and WriteFStore/WriteVecStore scheduler classes to permit vectors to be handled separately from gpr/scalar types.

I've minimised the diff here by only moving various basic SSE/AVX vector instructions across - we can fix the rest when called for. This does fix the MOVDQA vs MOVAPS/MOVAPD discrepancies mentioned on D44428.

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

llvm-svn: 327630
17 files changed:
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/X86ScheduleBtVer2.td
llvm/lib/Target/X86/X86ScheduleSLM.td
llvm/lib/Target/X86/X86ScheduleZnver1.td
llvm/test/CodeGen/X86/avx-schedule.ll
llvm/test/CodeGen/X86/avx2-schedule.ll
llvm/test/CodeGen/X86/sha-schedule.ll
llvm/test/CodeGen/X86/sse-schedule.ll
llvm/test/CodeGen/X86/sse2-schedule.ll
llvm/test/CodeGen/X86/sse3-schedule.ll
llvm/test/CodeGen/X86/sse41-schedule.ll