diff options
Diffstat (limited to 'llvm/lib/Target/X86/X86ScheduleSLM.td')
-rw-r--r-- | llvm/lib/Target/X86/X86ScheduleSLM.td | 82 |
1 files changed, 13 insertions, 69 deletions
diff --git a/llvm/lib/Target/X86/X86ScheduleSLM.td b/llvm/lib/Target/X86/X86ScheduleSLM.td index dcd155ea0e0e..3d53ef104ed6 100644 --- a/llvm/lib/Target/X86/X86ScheduleSLM.td +++ b/llvm/lib/Target/X86/X86ScheduleSLM.td @@ -214,6 +214,7 @@ defm : SLMWriteResPair<WriteFCmp64X, [SLM_FPC_RSV1], 3>; defm : SLMWriteResPair<WriteFCmp64Y, [SLM_FPC_RSV1], 3>; defm : X86WriteResPairUnsupported<WriteFCmp64Z>; defm : SLMWriteResPair<WriteFCom, [SLM_FPC_RSV1], 3>; +defm : SLMWriteResPair<WriteFComX, [SLM_FPC_RSV1], 3>; defm : SLMWriteResPair<WriteFMul, [SLM_FPC_RSV0, SLMFPMultiplier], 5, [1,2]>; defm : SLMWriteResPair<WriteFMulX, [SLM_FPC_RSV0, SLMFPMultiplier], 5, [1,2]>; defm : SLMWriteResPair<WriteFMulY, [SLM_FPC_RSV0, SLMFPMultiplier], 5, [1,2]>; @@ -310,8 +311,10 @@ def : WriteRes<WriteVecStoreX, [SLM_MEC_RSV]>; def : WriteRes<WriteVecStoreY, [SLM_MEC_RSV]>; def : WriteRes<WriteVecStoreNT, [SLM_MEC_RSV]>; def : WriteRes<WriteVecStoreNTY, [SLM_MEC_RSV]>; -def : WriteRes<WriteVecMaskedStore, [SLM_MEC_RSV]>; -def : WriteRes<WriteVecMaskedStoreY, [SLM_MEC_RSV]>; +def : WriteRes<WriteVecMaskedStore32, [SLM_MEC_RSV]>; +def : WriteRes<WriteVecMaskedStore32Y, [SLM_MEC_RSV]>; +def : WriteRes<WriteVecMaskedStore64, [SLM_MEC_RSV]>; +def : WriteRes<WriteVecMaskedStore64Y, [SLM_MEC_RSV]>; def : WriteRes<WriteVecMove, [SLM_FPC_RSV01]>; def : WriteRes<WriteVecMoveX, [SLM_FPC_RSV01]>; def : WriteRes<WriteVecMoveY, [SLM_FPC_RSV01]>; @@ -390,44 +393,15 @@ defm : X86WriteResPairUnsupported<WritePHAddZ>; // String instructions. // Packed Compare Implicit Length Strings, Return Mask -def : WriteRes<WritePCmpIStrM, [SLM_FPC_RSV0]> { - let Latency = 13; - let ResourceCycles = [13]; -} -def : WriteRes<WritePCmpIStrMLd, [SLM_FPC_RSV0, SLM_MEC_RSV]> { - let Latency = 13; - let ResourceCycles = [13, 1]; -} +defm : SLMWriteResPair<WritePCmpIStrM, [SLM_FPC_RSV0], 13, [13]>; // Packed Compare Explicit Length Strings, Return Mask -def : WriteRes<WritePCmpEStrM, [SLM_FPC_RSV0]> { - let Latency = 17; - let ResourceCycles = [17]; -} -def : WriteRes<WritePCmpEStrMLd, [SLM_FPC_RSV0, SLM_MEC_RSV]> { - let Latency = 17; - let ResourceCycles = [17, 1]; -} - +defm : SLMWriteResPair<WritePCmpEStrM, [SLM_FPC_RSV0], 17, [17]>; // Packed Compare Implicit Length Strings, Return Index -def : WriteRes<WritePCmpIStrI, [SLM_FPC_RSV0]> { - let Latency = 17; - let ResourceCycles = [17]; -} -def : WriteRes<WritePCmpIStrILd, [SLM_FPC_RSV0, SLM_MEC_RSV]> { - let Latency = 17; - let ResourceCycles = [17, 1]; -} +defm : SLMWriteResPair<WritePCmpIStrI, [SLM_FPC_RSV0], 17, [17]>; // Packed Compare Explicit Length Strings, Return Index -def : WriteRes<WritePCmpEStrI, [SLM_FPC_RSV0]> { - let Latency = 21; - let ResourceCycles = [21]; -} -def : WriteRes<WritePCmpEStrILd, [SLM_FPC_RSV0, SLM_MEC_RSV]> { - let Latency = 21; - let ResourceCycles = [21, 1]; -} +defm : SLMWriteResPair<WritePCmpEStrI, [SLM_FPC_RSV0], 21, [21]>; // MOVMSK Instructions. def : WriteRes<WriteFMOVMSK, [SLM_FPC_RSV1]> { let Latency = 4; } @@ -436,42 +410,12 @@ def : WriteRes<WriteVecMOVMSKY, [SLM_FPC_RSV1]> { let Latency = 4; } def : WriteRes<WriteMMXMOVMSK, [SLM_FPC_RSV1]> { let Latency = 4; } // AES Instructions. -def : WriteRes<WriteAESDecEnc, [SLM_FPC_RSV0]> { - let Latency = 8; - let ResourceCycles = [5]; -} -def : WriteRes<WriteAESDecEncLd, [SLM_FPC_RSV0, SLM_MEC_RSV]> { - let Latency = 8; - let ResourceCycles = [5, 1]; -} - -def : WriteRes<WriteAESIMC, [SLM_FPC_RSV0]> { - let Latency = 8; - let ResourceCycles = [5]; -} -def : WriteRes<WriteAESIMCLd, [SLM_FPC_RSV0, SLM_MEC_RSV]> { - let Latency = 8; - let ResourceCycles = [5, 1]; -} - -def : WriteRes<WriteAESKeyGen, [SLM_FPC_RSV0]> { - let Latency = 8; - let ResourceCycles = [5]; -} -def : WriteRes<WriteAESKeyGenLd, [SLM_FPC_RSV0, SLM_MEC_RSV]> { - let Latency = 8; - let ResourceCycles = [5, 1]; -} +defm : SLMWriteResPair<WriteAESDecEnc, [SLM_FPC_RSV0], 8, [5]>; +defm : SLMWriteResPair<WriteAESIMC, [SLM_FPC_RSV0], 8, [5]>; +defm : SLMWriteResPair<WriteAESKeyGen, [SLM_FPC_RSV0], 8, [5]>; // Carry-less multiplication instructions. -def : WriteRes<WriteCLMul, [SLM_FPC_RSV0]> { - let Latency = 10; - let ResourceCycles = [10]; -} -def : WriteRes<WriteCLMulLd, [SLM_FPC_RSV0, SLM_MEC_RSV]> { - let Latency = 10; - let ResourceCycles = [10, 1]; -} +defm : SLMWriteResPair<WriteCLMul, [SLM_FPC_RSV0], 10, [10]>; def : WriteRes<WriteSystem, [SLM_FPC_RSV0]> { let Latency = 100; } def : WriteRes<WriteMicrocoded, [SLM_FPC_RSV0]> { let Latency = 100; } |