[X86] Attempt to model basic arithmetic instructions in the Haswell/Broadwell/Skylake...
authorCraig Topper <craig.topper@intel.com>
Fri, 6 Apr 2018 16:16:48 +0000 (16:16 +0000)
committerCraig Topper <craig.topper@intel.com>
Fri, 6 Apr 2018 16:16:48 +0000 (16:16 +0000)
commitf0d042619b0411bf2c211e61a3dbd3ea0ceb7c49
tree35a4a8e20a305f2e2126bbb85b2afc960952a995
parentf131b60049abce734f32dc1469718aaf462687ee
[X86] Attempt to model basic arithmetic instructions in the Haswell/Broadwell/Skylake scheduler models without InstRWs

Summary:
This patch removes InstRW overrides for basic arithmetic/logic instructions. To do this I've added the store address port to RMW. And used a WriteSequence to make the latency additive. It does not cover ADC/SBB because they have different latency.

Apparently we were inconsistent about whether the store has latency or not thus the test changes.

I've also left out Sandy Bridge because the load latency there is currently 4 cycles and should be 5.

Reviewers: RKSimon, andreadb

Reviewed By: andreadb

Subscribers: llvm-commits

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

llvm-svn: 329416
llvm/lib/Target/X86/X86InstrArithmetic.td
llvm/lib/Target/X86/X86SchedBroadwell.td
llvm/lib/Target/X86/X86SchedHaswell.td
llvm/lib/Target/X86/X86SchedSkylakeClient.td
llvm/lib/Target/X86/X86SchedSkylakeServer.td
llvm/lib/Target/X86/X86Schedule.td
llvm/test/CodeGen/X86/schedule-x86_32.ll
llvm/test/CodeGen/X86/schedule-x86_64.ll