[X86][Haswell][SchedModel] Add architecture specific scheduling models.
authorQuentin Colombet <qcolombet@apple.com>
Mon, 18 Aug 2014 17:55:59 +0000 (17:55 +0000)
committerQuentin Colombet <qcolombet@apple.com>
Mon, 18 Aug 2014 17:55:59 +0000 (17:55 +0000)
Group: Floating Point XMM and YMM instructions.
Sub-group: Other instructions.

<rdar://problem/15607571>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215923 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86SchedHaswell.td

index a1bb64d8f3a826b5b8861d0b8141d970872ad9ee..dd253b6f498dc499e12640d9abaea557a1e43908 100644 (file)
@@ -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