diff options
Diffstat (limited to 'contrib/llvm/lib/Target/X86/X86ScheduleSLM.td')
-rw-r--r-- | contrib/llvm/lib/Target/X86/X86ScheduleSLM.td | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/contrib/llvm/lib/Target/X86/X86ScheduleSLM.td b/contrib/llvm/lib/Target/X86/X86ScheduleSLM.td index f95d4fa..03ed2db 100644 --- a/contrib/llvm/lib/Target/X86/X86ScheduleSLM.td +++ b/contrib/llvm/lib/Target/X86/X86ScheduleSLM.td @@ -137,6 +137,33 @@ defm : SMWriteResPair<WriteShuffle, FPC_RSV0, 1>; defm : SMWriteResPair<WriteBlend, FPC_RSV0, 1>; defm : SMWriteResPair<WriteMPSAD, FPC_RSV0, 7>; +//////////////////////////////////////////////////////////////////////////////// +// Horizontal add/sub instructions. +//////////////////////////////////////////////////////////////////////////////// + +// HADD, HSUB PS/PD + +def : WriteRes<WriteFHAdd, [FPC_RSV01]> { + let Latency = 3; + let ResourceCycles = [2]; +} + +def : WriteRes<WriteFHAddLd, [FPC_RSV01, MEC_RSV]> { + let Latency = 6; + let ResourceCycles = [2, 1]; +} + +// PHADD|PHSUB (S) W/D. +def : WriteRes<WritePHAdd, [FPC_RSV01]> { + let Latency = 1; + let ResourceCycles = [1]; +} + +def : WriteRes<WritePHAddLd, [FPC_RSV01, MEC_RSV]> { + let Latency = 4; + let ResourceCycles = [1, 1]; +} + // String instructions. // Packed Compare Implicit Length Strings, Return Mask def : WriteRes<WritePCmpIStrM, [FPC_RSV0]> { |