diff options
| author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-05-03 22:12:23 +0000 |
|---|---|---|
| committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-05-03 22:12:23 +0000 |
| commit | 0aed731516d0941846ee128ab6ac680de73f1457 (patch) | |
| tree | bab2a1007f169b60934de6b0454144264bd724ca /llvm/lib/Target | |
| parent | 33e0ae0d8f338f9346b6e38f0a60e0f6d90d9c26 (diff) | |
| download | bcm5719-llvm-0aed731516d0941846ee128ab6ac680de73f1457.tar.gz bcm5719-llvm-0aed731516d0941846ee128ab6ac680de73f1457.zip | |
[X86][Znver1] Use SchedAlias to tag microcoded scheduler classes
Avoids extra entries in the class tables.
Found a typo that missed the MMX_PHSUBSW instruction.
llvm-svn: 331488
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/X86/X86ScheduleZnver1.td | 62 |
1 files changed, 30 insertions, 32 deletions
diff --git a/llvm/lib/Target/X86/X86ScheduleZnver1.td b/llvm/lib/Target/X86/X86ScheduleZnver1.td index 8c4c960ec96..a6ba4cbb015 100644 --- a/llvm/lib/Target/X86/X86ScheduleZnver1.td +++ b/llvm/lib/Target/X86/X86ScheduleZnver1.td @@ -191,8 +191,6 @@ def : WriteRes<WriteFStore, [ZnAGU]>; def : WriteRes<WriteFMove, [ZnFPU]>; def : WriteRes<WriteFLoad, [ZnAGU]> { let Latency = 8; } -defm : ZnWriteResFpuPair<WriteFHAdd, [ZnFPU0], 3>; -defm : ZnWriteResFpuPair<WriteFHAddY, [ZnFPU0], 3>; defm : ZnWriteResFpuPair<WriteFAdd, [ZnFPU0], 3>; defm : ZnWriteResFpuPair<WriteFAddY, [ZnFPU0], 3>; defm : ZnWriteResFpuPair<WriteFCmp, [ZnFPU0], 3>; @@ -241,8 +239,6 @@ defm : ZnWriteResFpuPair<WriteVecShiftImmX, [ZnFPU], 1>; defm : ZnWriteResFpuPair<WriteVecShiftImmY, [ZnFPU], 1>; defm : ZnWriteResFpuPair<WriteVecLogic, [ZnFPU], 1>; defm : ZnWriteResFpuPair<WriteVecLogicY, [ZnFPU], 1>; -defm : ZnWriteResFpuPair<WritePHAdd, [ZnFPU], 1>; -defm : ZnWriteResFpuPair<WritePHAddY, [ZnFPU], 1>; defm : ZnWriteResFpuPair<WriteVecALU, [ZnFPU], 1>; defm : ZnWriteResFpuPair<WriteVecALUY, [ZnFPU], 1>; defm : ZnWriteResFpuPair<WriteVecIMul, [ZnFPU0], 4>; @@ -297,26 +293,28 @@ defm : ZnWriteResFpuPair<WriteFShuffle256, [ZnFPU], 100>; defm : ZnWriteResFpuPair<WriteFVarShuffle256, [ZnFPU], 100>; // Microcoded Instructions -let Latency = 100 in { - def : WriteRes<WriteMicrocoded, []>; - def : WriteRes<WriteSystem, []>; - def : WriteRes<WriteMPSAD, []>; - def : WriteRes<WriteMPSADY, []>; - def : WriteRes<WriteMPSADLd, []>; - def : WriteRes<WriteMPSADYLd, []>; - def : WriteRes<WriteCLMul, []>; - def : WriteRes<WriteCLMulLd, []>; - def : WriteRes<WritePCmpIStrM, []>; - def : WriteRes<WritePCmpIStrMLd, []>; - def : WriteRes<WritePCmpEStrI, []>; - def : WriteRes<WritePCmpEStrILd, []>; - def : WriteRes<WritePCmpEStrM, []>; - def : WriteRes<WritePCmpEStrMLd, []>; - def : WriteRes<WritePCmpIStrI, []>; - def : WriteRes<WritePCmpIStrILd, []>; - def : WriteRes<WriteLDMXCSR, []>; - def : WriteRes<WriteSTMXCSR, []>; - } +def ZnWriteMicrocoded : SchedWriteRes<[]> { + let Latency = 100; +} + +def : SchedAlias<WriteMicrocoded, ZnWriteMicrocoded>; +def : SchedAlias<WriteSystem, ZnWriteMicrocoded>; +def : SchedAlias<WriteMPSAD, ZnWriteMicrocoded>; +def : SchedAlias<WriteMPSADY, ZnWriteMicrocoded>; +def : SchedAlias<WriteMPSADLd, ZnWriteMicrocoded>; +def : SchedAlias<WriteMPSADYLd, ZnWriteMicrocoded>; +def : SchedAlias<WriteCLMul, ZnWriteMicrocoded>; +def : SchedAlias<WriteCLMulLd, ZnWriteMicrocoded>; +def : SchedAlias<WritePCmpIStrM, ZnWriteMicrocoded>; +def : SchedAlias<WritePCmpIStrMLd, ZnWriteMicrocoded>; +def : SchedAlias<WritePCmpEStrI, ZnWriteMicrocoded>; +def : SchedAlias<WritePCmpEStrILd, ZnWriteMicrocoded>; +def : SchedAlias<WritePCmpEStrM, ZnWriteMicrocoded>; +def : SchedAlias<WritePCmpEStrMLd, ZnWriteMicrocoded>; +def : SchedAlias<WritePCmpIStrI, ZnWriteMicrocoded>; +def : SchedAlias<WritePCmpIStrILd, ZnWriteMicrocoded>; +def : SchedAlias<WriteLDMXCSR, ZnWriteMicrocoded>; +def : SchedAlias<WriteSTMXCSR, ZnWriteMicrocoded>; //=== Regex based InstRW ===// // Notation: @@ -1028,13 +1026,10 @@ def : InstRW<[WriteMicrocoded], (instregex "VPGATHER(Q|D)(Q|D)(Y?)rm")>; // HADD, HSUB PS/PD // PHADD|PHSUB (S) W/D. -def : InstRW<[WriteMicrocoded], (instregex "MMX_PHADD(W|D)r(r|m)", - "MMX_PHADDSWr(r|m)", - "MMX_PHSUB(W|D)r(r|m)", - "MMX_PHSUBSWrr", - "(V?)PH(ADD|SUB)(W|D)(Y?)r(r|m)", - "(V?)PH(ADD|SUB)SW(Y?)r(r|m)")>; - +def : SchedAlias<WritePHAdd, ZnWriteMicrocoded>; +def : SchedAlias<WritePHAddLd, ZnWriteMicrocoded>; +def : SchedAlias<WritePHAddY, ZnWriteMicrocoded>; +def : SchedAlias<WritePHAddYLd, ZnWriteMicrocoded>; // PCMPGTQ. def ZnWritePCMPGTQr : SchedWriteRes<[ZnFPU03]>; @@ -1452,7 +1447,10 @@ def : InstRW<[ZnWriteSHA256RNDS2Ld], (instregex "SHA256RNDS2rm")>; //-- Arithmetic instructions --// // HADD, HSUB PS/PD -def : InstRW<[WriteMicrocoded], (instregex "(V?)H(ADD|SUB)P(S|D)(Y?)r(r|m)")>; +def : SchedAlias<WriteFHAdd, ZnWriteMicrocoded>; +def : SchedAlias<WriteFHAddLd, ZnWriteMicrocoded>; +def : SchedAlias<WriteFHAddY, ZnWriteMicrocoded>; +def : SchedAlias<WriteFHAddYLd, ZnWriteMicrocoded>; // MULL SS/SD PS/PD. // x,x / v,v,v. |

