summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQuentin Colombet <qcolombet@apple.com>2014-08-18 17:55:23 +0000
committerQuentin Colombet <qcolombet@apple.com>2014-08-18 17:55:23 +0000
commit6e62be2f5aa4fe223fd216db8986878807bb5787 (patch)
treef3886726de50187d7a54efdfc3b9549300fda15a
parenta6c56f50722dfd65f6842c1fa385268dcae70ecd (diff)
downloadbcm5719-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.td37
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
OpenPOWER on IntegriCloud