diff options
| author | Craig Topper <craig.topper@intel.com> | 2018-04-06 16:16:46 +0000 |
|---|---|---|
| committer | Craig Topper <craig.topper@intel.com> | 2018-04-06 16:16:46 +0000 |
| commit | f131b60049abce734f32dc1469718aaf462687ee (patch) | |
| tree | 2b08006c26573736c183a1dffa95d2fe7ef1f695 /llvm/lib | |
| parent | 22d25a08ae4432ebc783e208e59a62d64d8dcb10 (diff) | |
| download | bcm5719-llvm-f131b60049abce734f32dc1469718aaf462687ee.tar.gz bcm5719-llvm-f131b60049abce734f32dc1469718aaf462687ee.zip | |
[X86] Add an extra store address cycle to WriteRMW in the Sandy Bridge/Broadwell/Haswell/Skylake scheduler model.
Even those the address was calculated for the load, its calculated again for the store.
llvm-svn: 329415
Diffstat (limited to 'llvm/lib')
| -rwxr-xr-x | llvm/lib/Target/X86/X86SchedBroadwell.td | 6 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86SchedHaswell.td | 6 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86SchedSandyBridge.td | 6 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86SchedSkylakeClient.td | 6 | ||||
| -rwxr-xr-x | llvm/lib/Target/X86/X86SchedSkylakeServer.td | 6 |
5 files changed, 15 insertions, 15 deletions
diff --git a/llvm/lib/Target/X86/X86SchedBroadwell.td b/llvm/lib/Target/X86/X86SchedBroadwell.td index ac6c232486e..a1080a3c929 100755 --- a/llvm/lib/Target/X86/X86SchedBroadwell.td +++ b/llvm/lib/Target/X86/X86SchedBroadwell.td @@ -100,9 +100,9 @@ multiclass BWWriteResPair<X86FoldableSchedWrite SchedRW, } } -// A folded store needs a cycle on port 4 for the store data, but it does not -// need an extra port 2/3 cycle to recompute the address. -def : WriteRes<WriteRMW, [BWPort4]>; +// A folded store needs a cycle on port 4 for the store data, and an extra port +// 2/3/7 cycle to recompute the address. +def : WriteRes<WriteRMW, [BWPort237,BWPort4]>; // Arithmetic. defm : BWWriteResPair<WriteALU, [BWPort0156], 1>; // Simple integer ALU op. diff --git a/llvm/lib/Target/X86/X86SchedHaswell.td b/llvm/lib/Target/X86/X86SchedHaswell.td index 96f02546948..e31ab98e4a4 100644 --- a/llvm/lib/Target/X86/X86SchedHaswell.td +++ b/llvm/lib/Target/X86/X86SchedHaswell.td @@ -101,9 +101,9 @@ multiclass HWWriteResPair<X86FoldableSchedWrite SchedRW, } } -// A folded store needs a cycle on port 4 for the store data, but it does not -// need an extra port 2/3 cycle to recompute the address. -def : WriteRes<WriteRMW, [HWPort4]>; +// A folded store needs a cycle on port 4 for the store data, and an extra port +// 2/3/7 cycle to recompute the address. +def : WriteRes<WriteRMW, [HWPort237,HWPort4]>; // Store_addr on 237. // Store_data on 4. diff --git a/llvm/lib/Target/X86/X86SchedSandyBridge.td b/llvm/lib/Target/X86/X86SchedSandyBridge.td index 7e27d27a196..395003630f9 100644 --- a/llvm/lib/Target/X86/X86SchedSandyBridge.td +++ b/llvm/lib/Target/X86/X86SchedSandyBridge.td @@ -92,9 +92,9 @@ multiclass SBWriteResPair<X86FoldableSchedWrite SchedRW, } } -// A folded store needs a cycle on port 4 for the store data, but it does not -// need an extra port 2/3 cycle to recompute the address. -def : WriteRes<WriteRMW, [SBPort4]>; +// A folded store needs a cycle on port 4 for the store data, and an extra port +// 2/3 cycle to recompute the address. +def : WriteRes<WriteRMW, [SBPort23,SBPort4]>; def : WriteRes<WriteStore, [SBPort23, SBPort4]>; def : WriteRes<WriteLoad, [SBPort23]> { let Latency = 5; } diff --git a/llvm/lib/Target/X86/X86SchedSkylakeClient.td b/llvm/lib/Target/X86/X86SchedSkylakeClient.td index 255eea9edbf..06c901690ae 100644 --- a/llvm/lib/Target/X86/X86SchedSkylakeClient.td +++ b/llvm/lib/Target/X86/X86SchedSkylakeClient.td @@ -100,9 +100,9 @@ multiclass SKLWriteResPair<X86FoldableSchedWrite SchedRW, } } -// A folded store needs a cycle on port 4 for the store data, but it does not -// need an extra port 2/3 cycle to recompute the address. -def : WriteRes<WriteRMW, [SKLPort4]>; +// A folded store needs a cycle on port 4 for the store data, and an extra port +// 2/3/7 cycle to recompute the address. +def : WriteRes<WriteRMW, [SKLPort237,SKLPort4]>; // Arithmetic. defm : SKLWriteResPair<WriteALU, [SKLPort0156], 1>; // Simple integer ALU op. diff --git a/llvm/lib/Target/X86/X86SchedSkylakeServer.td b/llvm/lib/Target/X86/X86SchedSkylakeServer.td index a5351ec9d07..0aab732fb74 100755 --- a/llvm/lib/Target/X86/X86SchedSkylakeServer.td +++ b/llvm/lib/Target/X86/X86SchedSkylakeServer.td @@ -100,9 +100,9 @@ multiclass SKXWriteResPair<X86FoldableSchedWrite SchedRW, } } -// A folded store needs a cycle on port 4 for the store data, but it does not -// need an extra port 2/3 cycle to recompute the address. -def : WriteRes<WriteRMW, [SKXPort4]>; +// A folded store needs a cycle on port 4 for the store data, and an extra port +// 2/3/7 cycle to recompute the address. +def : WriteRes<WriteRMW, [SKXPort237,SKXPort4]>; // Arithmetic. defm : SKXWriteResPair<WriteALU, [SKXPort0156], 1>; // Simple integer ALU op. |

