diff options
-rwxr-xr-x | llvm/lib/Target/X86/X86SchedBroadwell.td | 11 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86SchedHaswell.td | 11 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86SchedSandyBridge.td | 11 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86SchedSkylakeClient.td | 11 | ||||
-rwxr-xr-x | llvm/lib/Target/X86/X86SchedSkylakeServer.td | 11 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86ScheduleSLM.td | 9 |
6 files changed, 35 insertions, 29 deletions
diff --git a/llvm/lib/Target/X86/X86SchedBroadwell.td b/llvm/lib/Target/X86/X86SchedBroadwell.td index b575d9848f6..0aa0700975e 100755 --- a/llvm/lib/Target/X86/X86SchedBroadwell.td +++ b/llvm/lib/Target/X86/X86SchedBroadwell.td @@ -80,7 +80,8 @@ def : ReadAdvance<ReadAfterLd, 5>; // folded loads. multiclass BWWriteResPair<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; @@ -88,12 +89,12 @@ multiclass BWWriteResPair<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([BWPort23], ExePorts)> { - let Latency = !add(Lat, 5); + let Latency = !add(Lat, LoadLat); let ResourceCycles = !listconcat([1], Res); - let NumMicroOps = UOps; + let NumMicroOps = !add(UOps, 1); } } diff --git a/llvm/lib/Target/X86/X86SchedHaswell.td b/llvm/lib/Target/X86/X86SchedHaswell.td index c15498d3eee..8ae1fbfb1f2 100644 --- a/llvm/lib/Target/X86/X86SchedHaswell.td +++ b/llvm/lib/Target/X86/X86SchedHaswell.td @@ -81,7 +81,8 @@ def : ReadAdvance<ReadAfterLd, 5>; // folded loads. multiclass HWWriteResPair<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; @@ -89,12 +90,12 @@ multiclass HWWriteResPair<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([HWPort23], ExePorts)> { - let Latency = !add(Lat, 5); + let Latency = !add(Lat, LoadLat); let ResourceCycles = !listconcat([1], Res); - let NumMicroOps = UOps; + let NumMicroOps = !add(UOps, 1); } } diff --git a/llvm/lib/Target/X86/X86SchedSandyBridge.td b/llvm/lib/Target/X86/X86SchedSandyBridge.td index a23c7323e7a..86cfce184fd 100644 --- a/llvm/lib/Target/X86/X86SchedSandyBridge.td +++ b/llvm/lib/Target/X86/X86SchedSandyBridge.td @@ -72,7 +72,8 @@ def : ReadAdvance<ReadAfterLd, 4>; // folded loads. multiclass SBWriteResPair<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 = 4> { // Register variant is using a single cycle on ExePort. def : WriteRes<SchedRW, ExePorts> { let Latency = Lat; @@ -80,12 +81,12 @@ multiclass SBWriteResPair<X86FoldableSchedWrite SchedRW, let NumMicroOps = UOps; } - // Memory variant also uses a cycle on port 2/3 and adds 4 cycles to the - // latency. + // Memory variant also uses a cycle on port 2/3 and adds LoadLat cycles to + // the latency (default = 4). def : WriteRes<SchedRW.Folded, !listconcat([SBPort23], ExePorts)> { - let Latency = !add(Lat, 4); + let Latency = !add(Lat, LoadLat); let ResourceCycles = !listconcat([1], Res); - let NumMicroOps = UOps; + let NumMicroOps = !add(UOps, 1); } } 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); } } diff --git a/llvm/lib/Target/X86/X86SchedSkylakeServer.td b/llvm/lib/Target/X86/X86SchedSkylakeServer.td index a5b8d6846e4..5ecfd3e367e 100755 --- a/llvm/lib/Target/X86/X86SchedSkylakeServer.td +++ b/llvm/lib/Target/X86/X86SchedSkylakeServer.td @@ -78,7 +78,8 @@ def : ReadAdvance<ReadAfterLd, 5>; // folded loads. multiclass SKXWriteResPair<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 SKXWriteResPair<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([SKXPort23], ExePorts)> { - let Latency = !add(Lat, 5); + let Latency = !add(Lat, LoadLat); let ResourceCycles = !listconcat([1], Res); - let NumMicroOps = UOps; + let NumMicroOps = !add(UOps, 1); } } diff --git a/llvm/lib/Target/X86/X86ScheduleSLM.td b/llvm/lib/Target/X86/X86ScheduleSLM.td index 6aa452367b2..851d9259c6e 100644 --- a/llvm/lib/Target/X86/X86ScheduleSLM.td +++ b/llvm/lib/Target/X86/X86ScheduleSLM.td @@ -57,7 +57,8 @@ def : ReadAdvance<ReadAfterLd, 3>; // folded loads. multiclass SLMWriteResPair<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 = 3> { // Register variant is using a single cycle on ExePort. def : WriteRes<SchedRW, ExePorts> { let Latency = Lat; @@ -65,10 +66,10 @@ multiclass SLMWriteResPair<X86FoldableSchedWrite SchedRW, let NumMicroOps = UOps; } - // Memory variant also uses a cycle on MEC_RSV and adds 3 cycles to the - // latency. + // Memory variant also uses a cycle on MEC_RSV and adds LoadLat cycles to + // the latency (default = 3). def : WriteRes<SchedRW.Folded, !listconcat([SLM_MEC_RSV], ExePorts)> { - let Latency = !add(Lat, 3); + let Latency = !add(Lat, LoadLat); let ResourceCycles = !listconcat([1], Res); let NumMicroOps = UOps; } |