diff options
author | Quentin Colombet <qcolombet@apple.com> | 2014-08-18 17:55:59 +0000 |
---|---|---|
committer | Quentin Colombet <qcolombet@apple.com> | 2014-08-18 17:55:59 +0000 |
commit | 95e053119e9da52807a9779fa98021f67b720e6c (patch) | |
tree | 57c5373f017ff4e60c9ea264887cea406081e07d /llvm/lib | |
parent | 81db56d93112a1dee0e08c6c51383db640e62030 (diff) | |
download | bcm5719-llvm-95e053119e9da52807a9779fa98021f67b720e6c.tar.gz bcm5719-llvm-95e053119e9da52807a9779fa98021f67b720e6c.zip |
[X86][Haswell][SchedModel] Add architecture specific scheduling models.
Group: Floating Point XMM and YMM instructions.
Sub-group: Other instructions.
<rdar://problem/15607571>
llvm-svn: 215923
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/X86/X86SchedHaswell.td | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86SchedHaswell.td b/llvm/lib/Target/X86/X86SchedHaswell.td index a1bb64d8f3a..dd253b6f498 100644 --- a/llvm/lib/Target/X86/X86SchedHaswell.td +++ b/llvm/lib/Target/X86/X86SchedHaswell.td @@ -2106,4 +2106,34 @@ def : InstRW<[WriteP5], (instregex "(V?)(AND|ANDN|OR|XOR)P(S|D)(Y?)rr")>; def : InstRW<[WriteP5Ld, ReadAfterLd], (instregex "(V?)(AND|ANDN|OR|XOR)P(S|D)(Y?)rm")>; +//-- Other instructions --// + +// VZEROUPPER. +def WriteVZEROUPPER : SchedWriteRes<[]> { + let NumMicroOps = 4; +} +def : InstRW<[WriteVZEROUPPER], (instregex "VZEROUPPER")>; + +// VZEROALL. +def WriteVZEROALL : SchedWriteRes<[]> { + let NumMicroOps = 12; +} +def : InstRW<[WriteVZEROALL], (instregex "VZEROALL")>; + +// LDMXCSR. +def WriteLDMXCSR : SchedWriteRes<[HWPort0, HWPort6, HWPort23]> { + let Latency = 6; + let NumMicroOps = 3; + let ResourceCycles = [1, 1, 1]; +} +def : InstRW<[WriteLDMXCSR], (instregex "(V)?LDMXCSR")>; + +// STMXCSR. +def WriteSTMXCSR : SchedWriteRes<[HWPort0, HWPort4, HWPort6, HWPort237]> { + let Latency = 7; + let NumMicroOps = 4; + let ResourceCycles = [1, 1, 1, 1]; +} +def : InstRW<[WriteSTMXCSR], (instregex "(V)?STMXCSR")>; + } // SchedModel |