diff options
Diffstat (limited to 'llvm/lib/Target/X86/X86SchedSkylakeClient.td')
-rw-r--r-- | llvm/lib/Target/X86/X86SchedSkylakeClient.td | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/llvm/lib/Target/X86/X86SchedSkylakeClient.td b/llvm/lib/Target/X86/X86SchedSkylakeClient.td index 8ee70462222..8909cce96c4 100644 --- a/llvm/lib/Target/X86/X86SchedSkylakeClient.td +++ b/llvm/lib/Target/X86/X86SchedSkylakeClient.td @@ -78,7 +78,8 @@ def : ReadAdvance<ReadAfterLd, 5>; // folded loads. multiclass SKLWriteResPair<X86FoldableSchedWrite SchedRW, list<ProcResourceKind> ExePorts, - int Lat, list<int> Res = [1], int UOps = 1> { + int Lat, list<int> Res = [1], int UOps = 1, + int LoadLat = 5> { // Register variant is using a single cycle on ExePort. def : WriteRes<SchedRW, ExePorts> { let Latency = Lat; @@ -86,12 +87,12 @@ multiclass SKLWriteResPair<X86FoldableSchedWrite SchedRW, let NumMicroOps = UOps; } - // Memory variant also uses a cycle on port 2/3 and adds 5 cycles to the - // latency. + // Memory variant also uses a cycle on port 2/3 and adds LoadLat cycles to + // the latency (default = 5). def : WriteRes<SchedRW.Folded, !listconcat([SKLPort23], ExePorts)> { - let Latency = !add(Lat, 5); + let Latency = !add(Lat, LoadLat); let ResourceCycles = !listconcat([1], Res); - let NumMicroOps = UOps; + let NumMicroOps = !add(UOps, 1); } } |