summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2018-03-12 15:29:00 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2018-03-12 15:29:00 +0000
commitbc216b440f02b335a3118266ee07f7e2c1d987cb (patch)
tree453d24726f75de65a02e26dacda7d2c2f3fd28fa /llvm/lib
parent71028b83e7a8d98fd3cdbb75dd4e9b425560dc1e (diff)
downloadbcm5719-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.td55
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; }
OpenPOWER on IntegriCloud