diff options
| author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-03-27 20:38:54 +0000 |
|---|---|---|
| committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-03-27 20:38:54 +0000 |
| commit | a2f26788a3a8192312a066f4782cad6c607fbdab (patch) | |
| tree | 77be767a985ddd47755eaf0036e457f064973b49 /llvm/lib/Target/X86/X86SchedSkylakeClient.td | |
| parent | d4507266c8c8f1bd99f7d3fcb86989cda2e16066 (diff) | |
| download | bcm5719-llvm-a2f26788a3a8192312a066f4782cad6c607fbdab.tar.gz bcm5719-llvm-a2f26788a3a8192312a066f4782cad6c607fbdab.zip | |
[X86] Add WriteFMOVMSK/WriteVecMOVMSK/WriteMMXMOVMSK scheduler classes
Currently MOVMSK instructions use the WriteVecLogic class, which is a very poor choice given that MOVMSK involves a SSE->GPR transfer.
Differential Revision: https://reviews.llvm.org/D44924
llvm-svn: 328664
Diffstat (limited to 'llvm/lib/Target/X86/X86SchedSkylakeClient.td')
| -rw-r--r-- | llvm/lib/Target/X86/X86SchedSkylakeClient.td | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/llvm/lib/Target/X86/X86SchedSkylakeClient.td b/llvm/lib/Target/X86/X86SchedSkylakeClient.td index 2a16982346c..bceb43541d6 100644 --- a/llvm/lib/Target/X86/X86SchedSkylakeClient.td +++ b/llvm/lib/Target/X86/X86SchedSkylakeClient.td @@ -224,6 +224,11 @@ def : WriteRes<WritePCmpEStrILd, [SKLPort0, SKLPort5, SKLPort23, SKLPort0156]> { let ResourceCycles = [4,3,1,1]; } +// MOVMSK Instructions. +def : WriteRes<WriteFMOVMSK, [SKLPort0]> { let Latency = 2; } +def : WriteRes<WriteVecMOVMSK, [SKLPort0]> { let Latency = 2; } +def : WriteRes<WriteMMXMOVMSK, [SKLPort0]> { let Latency = 2; } + // AES instructions. def : WriteRes<WriteAESDecEnc, [SKLPort0]> { // Decryption, encryption. let Latency = 4; @@ -692,14 +697,10 @@ def SKLWriteResGroup12 : SchedWriteRes<[SKLPort0]> { } def: InstRW<[SKLWriteResGroup12], (instregex "MMX_MOVD64from64rr", "MMX_MOVD64grr", - "MMX_PMOVMSKBrr", "(V?)COMISDrr", "(V?)COMISSrr", - "(V?)MOVMSKPD(Y?)rr", - "(V?)MOVMSKPS(Y?)rr", "(V?)MOVPDI2DIrr", "(V?)MOVPQIto64rr", - "(V?)PMOVMSKB(Y?)rr", "VTESTPD(Y?)rr", "VTESTPS(Y?)rr", "(V?)UCOMISDrr", |

