summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorClement Courbet <courbet@google.com>2018-05-02 13:40:48 +0000
committerClement Courbet <courbet@google.com>2018-05-02 13:40:48 +0000
commiteeb2123a839fe7a6bb25d70f941d50e81ff33cf5 (patch)
treeb4e0b30488625bd0c6b4d0af63c5f7ba0873e23f /llvm/lib
parentda54914cde172a8e7a5c27a4be9e5e0772fca6cd (diff)
downloadbcm5719-llvm-eeb2123a839fe7a6bb25d70f941d50e81ff33cf5.tar.gz
bcm5719-llvm-eeb2123a839fe7a6bb25d70f941d50e81ff33cf5.zip
[X86] Fix scheduling info for VMPSADBWYrmi.
https://reviews.llvm.org/D46356 llvm-svn: 331355
Diffstat (limited to 'llvm/lib')
-rwxr-xr-xllvm/lib/Target/X86/X86SchedBroadwell.td21
1 files changed, 16 insertions, 5 deletions
diff --git a/llvm/lib/Target/X86/X86SchedBroadwell.td b/llvm/lib/Target/X86/X86SchedBroadwell.td
index 0531ef5700b..19946259715 100755
--- a/llvm/lib/Target/X86/X86SchedBroadwell.td
+++ b/llvm/lib/Target/X86/X86SchedBroadwell.td
@@ -11,7 +11,6 @@
// scheduling and other instruction cost heuristics.
//
//===----------------------------------------------------------------------===//
-
def BroadwellModel : SchedMachineModel {
// All x86 instructions are modeled as a single micro-op, and BW can decode 4
// instructions per cycle.
@@ -156,9 +155,9 @@ def : WriteRes<WriteFStore, [BWPort237, BWPort4]>;
def : WriteRes<WriteFMove, [BWPort5]>;
defm : BWWriteResPair<WriteFAdd, [BWPort1], 3, [1], 1, 5>; // Floating point add/sub.
-defm : BWWriteResPair<WriteFAddY, [BWPort1], 3, [1], 1, 6>; // Floating point add/sub (YMM/ZMM).
+defm : BWWriteResPair<WriteFAddY, [BWPort1], 3, [1], 1, 7>; // Floating point add/sub (YMM/ZMM).
defm : BWWriteResPair<WriteFCmp, [BWPort1], 3, [1], 1, 5>; // Floating point compare.
-defm : BWWriteResPair<WriteFCmpY, [BWPort1], 3, [1], 1, 6>; // Floating point compare (YMM/ZMM).
+defm : BWWriteResPair<WriteFCmpY, [BWPort1], 3, [1], 1, 7>; // Floating point compare (YMM/ZMM).
defm : BWWriteResPair<WriteFCom, [BWPort1], 3>; // Floating point compare to flags.
defm : BWWriteResPair<WriteFMul, [BWPort0], 5, [1], 1, 5>; // Floating point multiplication.
defm : BWWriteResPair<WriteFMulY, [BWPort0], 5, [1], 1, 7>; // Floating point multiplication (YMM/ZMM).
@@ -1369,8 +1368,20 @@ def BWWriteResGroup101 : SchedWriteRes<[BWPort1,BWPort23]> {
}
def: InstRW<[BWWriteResGroup101], (instregex "(ADD|SUB|SUBR)_F(32|64)m",
"ILD_F(16|32|64)m",
+ "VADDPDYrm",
+ "VADDPSYrm",
+ "VADDSUBPDYrm",
+ "VADDSUBPSYrm",
+ "VCMPPDYrmi",
+ "VCMPPSYrmi",
"VCVTPS2DQYrm",
- "VCVTTPS2DQYrm")>;
+ "VCVTTPS2DQYrm",
+ "VMAX(C?)PDYrm",
+ "VMAX(C?)PSYrm",
+ "VMIN(C?)PDYrm",
+ "VMIN(C?)PSYrm",
+ "VSUBPDYrm",
+ "VSUBPSYrm")>;
def BWWriteResGroup102 : SchedWriteRes<[BWPort5,BWPort23]> {
let Latency = 9;
@@ -1643,7 +1654,7 @@ def: InstRW<[BWWriteResGroup137_1], (instregex "(V?)SQRTSSr")>;
def BWWriteResGroup138 : SchedWriteRes<[BWPort0,BWPort5,BWPort23]> {
let Latency = 13;
let NumMicroOps = 4;
- let ResourceCycles = [1,2,1,7];
+ let ResourceCycles = [1,2,1];
}
def: InstRW<[BWWriteResGroup138], (instregex "VMPSADBWYrmi")>;
OpenPOWER on IntegriCloud