diff options
author | Quentin Colombet <qcolombet@apple.com> | 2014-08-18 17:55:23 +0000 |
---|---|---|
committer | Quentin Colombet <qcolombet@apple.com> | 2014-08-18 17:55:23 +0000 |
commit | 6e62be2f5aa4fe223fd216db8986878807bb5787 (patch) | |
tree | f3886726de50187d7a54efdfc3b9549300fda15a | |
parent | a6c56f50722dfd65f6842c1fa385268dcae70ecd (diff) | |
download | bcm5719-llvm-6e62be2f5aa4fe223fd216db8986878807bb5787.tar.gz bcm5719-llvm-6e62be2f5aa4fe223fd216db8986878807bb5787.zip |
[X86][Haswell][SchedModel] Add architecture specific scheduling models.
Group: Integer instructions.
Sub-group: Other instructions.
<rdar://problem/15607571>
llvm-svn: 215910
-rw-r--r-- | llvm/lib/Target/X86/X86SchedHaswell.td | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86SchedHaswell.td b/llvm/lib/Target/X86/X86SchedHaswell.td index 2f78f62809c..2d4fe04cf74 100644 --- a/llvm/lib/Target/X86/X86SchedHaswell.td +++ b/llvm/lib/Target/X86/X86SchedHaswell.td @@ -942,4 +942,41 @@ def WriteCMPXCHG16B : SchedWriteRes<[]> { } def : InstRW<[WriteCMPXCHG16B], (instregex "CMPXCHG16B")>; +//-- Other --// + +// PAUSE. +def WritePAUSE : SchedWriteRes<[HWPort05, HWPort6]> { + let NumMicroOps = 5; + let ResourceCycles = [1, 3]; +} +def : InstRW<[WritePAUSE], (instregex "PAUSE")>; + +// LEAVE. +def : InstRW<[Write2P0156_P23], (instregex "LEAVE")>; + +// XGETBV. +def WriteXGETBV : SchedWriteRes<[]> { + let NumMicroOps = 8; +} +def : InstRW<[WriteXGETBV], (instregex "XGETBV")>; + +// RDTSC. +def WriteRDTSC : SchedWriteRes<[]> { + let NumMicroOps = 15; +} +def : InstRW<[WriteRDTSC], (instregex "RDTSC")>; + +// RDPMC. +def WriteRDPMC : SchedWriteRes<[]> { + let NumMicroOps = 34; +} +def : InstRW<[WriteRDPMC], (instregex "RDPMC")>; + +// RDRAND. +def WriteRDRAND : SchedWriteRes<[HWPort23, HWPort015]> { + let NumMicroOps = 17; + let ResourceCycles = [1, 16]; +} +def : InstRW<[WriteRDRAND], (instregex "RDRAND(16|32|64)r")>; + } // SchedModel |