From 68a8fbc1021cd612bb69bb6d50bcb9763ad00f00 Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Sun, 25 Mar 2018 20:16:53 +0000 Subject: [PATCH] [X86] Use WriteResPair for WriteIDiv to cleanup sched defs. NFCI. llvm-svn: 328460 --- llvm/lib/Target/X86/X86SchedHaswell.td | 10 +--------- llvm/lib/Target/X86/X86SchedSkylakeClient.td | 14 ++++---------- llvm/lib/Target/X86/X86SchedSkylakeServer.td | 14 ++++---------- llvm/lib/Target/X86/X86ScheduleSLM.td | 9 +-------- 4 files changed, 10 insertions(+), 37 deletions(-) diff --git a/llvm/lib/Target/X86/X86SchedHaswell.td b/llvm/lib/Target/X86/X86SchedHaswell.td index 8ae1fbf..a2c4dd1 100644 --- a/llvm/lib/Target/X86/X86SchedHaswell.td +++ b/llvm/lib/Target/X86/X86SchedHaswell.td @@ -122,15 +122,7 @@ defm : HWWriteResPair; def : WriteRes; // This is quite rough, latency depends on the dividend. -def : WriteRes { - let Latency = 25; - let ResourceCycles = [1, 10]; -} -def : WriteRes { - let Latency = 29; - let ResourceCycles = [1, 1, 10]; -} - +defm : HWWriteResPair; // Scalar and vector floating point. def : WriteRes; def : WriteRes { let Latency = 5; } diff --git a/llvm/lib/Target/X86/X86SchedSkylakeClient.td b/llvm/lib/Target/X86/X86SchedSkylakeClient.td index eedaa5a..2174744 100644 --- a/llvm/lib/Target/X86/X86SchedSkylakeClient.td +++ b/llvm/lib/Target/X86/X86SchedSkylakeClient.td @@ -61,6 +61,8 @@ def SKLPort015 : ProcResGroup<[SKLPort0, SKLPort1, SKLPort5]>; def SKLPort056 : ProcResGroup<[SKLPort0, SKLPort5, SKLPort6]>; def SKLPort0156: ProcResGroup<[SKLPort0, SKLPort1, SKLPort5, SKLPort6]>; +def SKLDivider : ProcResource<1>; // Integer division issued on port 0. + // 60 Entry Unified Scheduler def SKLPortAny : ProcResGroup<[SKLPort0, SKLPort1, SKLPort2, SKLPort3, SKLPort4, SKLPort5, SKLPort6, SKLPort7]> { @@ -103,17 +105,9 @@ def : WriteRes; // Arithmetic. defm : SKLWriteResPair; // Simple integer ALU op. defm : SKLWriteResPair; // Integer multiplication. -def : WriteRes { let Latency = 3; } // Integer multiplication, high part. -def SKLDivider : ProcResource<1>; // Integer division issued on port 0. -def : WriteRes { // Integer division. - let Latency = 25; - let ResourceCycles = [1, 10]; -} -def : WriteRes { - let Latency = 29; - let ResourceCycles = [1, 1, 10]; -} +defm : SKLWriteResPair; // Integer division. +def : WriteRes { let Latency = 3; } // Integer multiplication, high part. def : WriteRes; // LEA instructions can't fold loads. // Integer shifts and rotates. diff --git a/llvm/lib/Target/X86/X86SchedSkylakeServer.td b/llvm/lib/Target/X86/X86SchedSkylakeServer.td index 81c5b32..aed892f 100755 --- a/llvm/lib/Target/X86/X86SchedSkylakeServer.td +++ b/llvm/lib/Target/X86/X86SchedSkylakeServer.td @@ -61,6 +61,8 @@ def SKXPort015 : ProcResGroup<[SKXPort0, SKXPort1, SKXPort5]>; def SKXPort056 : ProcResGroup<[SKXPort0, SKXPort5, SKXPort6]>; def SKXPort0156: ProcResGroup<[SKXPort0, SKXPort1, SKXPort5, SKXPort6]>; +def SKXDivider : ProcResource<1>; // Integer division issued on port 0. + // 60 Entry Unified Scheduler def SKXPortAny : ProcResGroup<[SKXPort0, SKXPort1, SKXPort2, SKXPort3, SKXPort4, SKXPort5, SKXPort6, SKXPort7]> { @@ -103,17 +105,9 @@ def : WriteRes; // Arithmetic. defm : SKXWriteResPair; // Simple integer ALU op. defm : SKXWriteResPair; // Integer multiplication. -def : WriteRes { let Latency = 3; } // Integer multiplication, high part. -def SKXDivider : ProcResource<1>; // Integer division issued on port 0. -def : WriteRes { // Integer division. - let Latency = 25; - let ResourceCycles = [1, 10]; -} -def : WriteRes { - let Latency = 29; - let ResourceCycles = [1, 1, 10]; -} +defm : SKXWriteResPair; // Integer division. +def : WriteRes { let Latency = 3; } // Integer multiplication, high part. def : WriteRes; // LEA instructions can't fold loads. // Integer shifts and rotates. diff --git a/llvm/lib/Target/X86/X86ScheduleSLM.td b/llvm/lib/Target/X86/X86ScheduleSLM.td index 851d925..518c514 100644 --- a/llvm/lib/Target/X86/X86ScheduleSLM.td +++ b/llvm/lib/Target/X86/X86ScheduleSLM.td @@ -98,14 +98,7 @@ defm : SLMWriteResPair; def : WriteRes; // This is quite rough, latency depends on the dividend. -def : WriteRes { - let Latency = 25; - let ResourceCycles = [1, 25]; -} -def : WriteRes { - let Latency = 29; - let ResourceCycles = [1, 1, 25]; -} +defm : SLMWriteResPair; // Scalar and vector floating point. def : WriteRes; -- 2.7.4