diff options
author | Quentin Colombet <qcolombet@apple.com> | 2014-08-18 17:55:41 +0000 |
---|---|---|
committer | Quentin Colombet <qcolombet@apple.com> | 2014-08-18 17:55:41 +0000 |
commit | 91513d952227d7576c0efc4e33c9a6d2f79218f5 (patch) | |
tree | e7beb2f436edc19dc54219faebc8d0465ad8b277 | |
parent | e9f8b4b7ac1b67bbec6ff186726ac672b8b90aed (diff) | |
download | bcm5719-llvm-91513d952227d7576c0efc4e33c9a6d2f79218f5.tar.gz bcm5719-llvm-91513d952227d7576c0efc4e33c9a6d2f79218f5.zip |
[X86][Haswell][SchedModel] Add architecture specific scheduling models.
Group: Integer MMX and XMM instructions.
Sub-group: Logic instructions.
<rdar://problem/15607571>
llvm-svn: 215916
-rw-r--r-- | llvm/lib/Target/X86/X86SchedHaswell.td | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86SchedHaswell.td b/llvm/lib/Target/X86/X86SchedHaswell.td index 5b72b319f1e..38833de7c25 100644 --- a/llvm/lib/Target/X86/X86SchedHaswell.td +++ b/llvm/lib/Target/X86/X86SchedHaswell.td @@ -1505,4 +1505,35 @@ def WritePMULLDm : SchedWriteRes<[HWPort0, HWPort23]> { } def : InstRW<[WritePMULLDm, ReadAfterLd], (instregex "(V?)PMULLD(Y?)rm")>; +//-- Logic instructions --// + +// PTEST. +// v,v. +def WritePTESTr : SchedWriteRes<[HWPort0, HWPort5]> { + let Latency = 2; + let NumMicroOps = 2; + let ResourceCycles = [1, 1]; +} +def : InstRW<[WritePTESTr], (instregex "(V?)PTEST(Y?)rr")>; + +// v,m. +def WritePTESTm : SchedWriteRes<[HWPort0, HWPort5, HWPort23]> { + let Latency = 6; + let NumMicroOps = 3; + let ResourceCycles = [1, 1, 1]; +} +def : InstRW<[WritePTESTr], (instregex "(V?)PTEST(Y?)rm")>; + +// PSLL,PSRL,PSRA W/D/Q. +// x,x / v,v,x. +def WritePShift : SchedWriteRes<[HWPort0, HWPort5]> { + let Latency = 2; + let NumMicroOps = 2; + let ResourceCycles = [1, 1]; +} +def : InstRW<[WritePShift], (instregex "(V?)PS(LL|RL|RA)(W|D|Q)(Y?)rr")>; + +// PSLL,PSRL DQ. +def : InstRW<[WriteP5], (instregex "(V?)PS(R|L)LDQ(Y?)ri")>; + } // SchedModel |