diff options
| author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-03-12 15:29:00 +0000 |
|---|---|---|
| committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-03-12 15:29:00 +0000 |
| commit | bc216b440f02b335a3118266ee07f7e2c1d987cb (patch) | |
| tree | 453d24726f75de65a02e26dacda7d2c2f3fd28fa /llvm/lib | |
| parent | 71028b83e7a8d98fd3cdbb75dd4e9b425560dc1e (diff) | |
| download | bcm5719-llvm-bc216b440f02b335a3118266ee07f7e2c1d987cb.tar.gz bcm5719-llvm-bc216b440f02b335a3118266ee07f7e2c1d987cb.zip | |
[X86][Btver2] Use JWriteResFpuPair wrapper for AES/CLMUL/HADD scheduler cases. NFCI.
These are single pipe and have the default resource/uop counts like JWriteResFpuPair so there's no need to handle them separately.
llvm-svn: 327283
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/X86/X86ScheduleBtVer2.td | 55 |
1 files changed, 6 insertions, 49 deletions
diff --git a/llvm/lib/Target/X86/X86ScheduleBtVer2.td b/llvm/lib/Target/X86/X86ScheduleBtVer2.td index 006662fc489..4c490c7aa6f 100644 --- a/llvm/lib/Target/X86/X86ScheduleBtVer2.td +++ b/llvm/lib/Target/X86/X86ScheduleBtVer2.td @@ -329,52 +329,16 @@ def : WriteRes<WritePCmpEStrILd, [JLAGU, JFPU1, JLAGU, JFPU01,JFPU1, JFPU0]> { // AES Instructions. //////////////////////////////////////////////////////////////////////////////// -def : WriteRes<WriteAESDecEnc, [JFPU01, JVIMUL]> { - let Latency = 3; - let ResourceCycles = [1, 1]; -} -def : WriteRes<WriteAESDecEncLd, [JFPU01, JLAGU, JVIMUL]> { - let Latency = 8; - let ResourceCycles = [1, 1, 1]; -} - -def : WriteRes<WriteAESIMC, [JVIMUL]> { - let Latency = 2; - let ResourceCycles = [1]; -} -def : WriteRes<WriteAESIMCLd, [JLAGU, JVIMUL]> { - let Latency = 7; - let ResourceCycles = [1, 1]; -} - -def : WriteRes<WriteAESKeyGen, [JVIMUL]> { - let Latency = 2; - let ResourceCycles = [1]; -} -def : WriteRes<WriteAESKeyGenLd, [JLAGU, JVIMUL]> { - let Latency = 7; - let ResourceCycles = [1, 1]; -} +defm : JWriteResFpuPair<WriteAESIMC, JVIMUL, 2>; +defm : JWriteResFpuPair<WriteAESKeyGen, JVIMUL, 2>; +defm : JWriteResFpuPair<WriteAESDecEnc, JVIMUL, 3>; //////////////////////////////////////////////////////////////////////////////// // Horizontal add/sub instructions. //////////////////////////////////////////////////////////////////////////////// -def : WriteRes<WriteFHAdd, [JFPU0]> { - let Latency = 3; -} - -def : WriteRes<WriteFHAddLd, [JLAGU, JFPU0]> { - let Latency = 8; -} - -def : WriteRes<WritePHAdd, [JFPU01]> { - let ResourceCycles = [1]; -} -def : WriteRes<WritePHAddLd, [JLAGU, JFPU01 ]> { - let Latency = 6; - let ResourceCycles = [1, 1]; -} +defm : JWriteResFpuPair<WriteFHAdd, JFPU0, 3>; +defm : JWriteResFpuPair<WritePHAdd, JFPU01, 1>; def WriteFHAddY: SchedWriteRes<[JFPU0]> { let Latency = 3; @@ -392,14 +356,7 @@ def : InstRW<[WriteFHAddYLd], (instrs VHADDPDYrm, VHADDPSYrm, VHSUBPDYrm, VHSUBP // Carry-less multiplication instructions. //////////////////////////////////////////////////////////////////////////////// -def : WriteRes<WriteCLMul, [JVIMUL]> { - let Latency = 2; - let ResourceCycles = [1]; -} -def : WriteRes<WriteCLMulLd, [JLAGU, JVIMUL]> { - let Latency = 7; - let ResourceCycles = [1, 1]; -} +defm : JWriteResFpuPair<WriteCLMul, JVIMUL, 2>; // FIXME: pipe for system/microcode? def : WriteRes<WriteSystem, [JAny]> { let Latency = 100; } |

