[X86] Add JCXZ/JECXZ to Sandybridge/Haswell/Broadwell/Skylake scheduler models.
authorCraig Topper <craig.topper@intel.com>
Mon, 19 Mar 2018 19:00:32 +0000 (19:00 +0000)
committerCraig Topper <craig.topper@intel.com>
Mon, 19 Mar 2018 19:00:32 +0000 (19:00 +0000)
JRCXZ was already present, but not the others.

We never codegen this instruction so this doesn't affect much just trying to get them all into a single generated scheduler class in the output.

llvm-svn: 327881

llvm/lib/Target/X86/X86SchedBroadwell.td
llvm/lib/Target/X86/X86SchedHaswell.td
llvm/lib/Target/X86/X86SchedSandyBridge.td
llvm/lib/Target/X86/X86SchedSkylakeClient.td
llvm/lib/Target/X86/X86SchedSkylakeServer.td
llvm/test/CodeGen/X86/schedule-x86_32.ll
llvm/test/CodeGen/X86/schedule-x86_64.ll

index bd06a275d41647cb5219356f12e10aa02e445087..795b6ae55c0dcbe733feb871bddb1cdf7e8a2ca5 100755 (executable)
@@ -1043,7 +1043,7 @@ def: InstRW<[BWWriteResGroup20], (instregex "ADC8i8")>;
 def: InstRW<[BWWriteResGroup20], (instregex "ADC8ri")>;
 def: InstRW<[BWWriteResGroup20], (instregex "CMOV(A|BE)(16|32|64)rr")>;
 def: InstRW<[BWWriteResGroup20], (instrs CWD)>;
-def: InstRW<[BWWriteResGroup20], (instregex "JRCXZ")>;
+def: InstRW<[BWWriteResGroup20], (instrs JCXZ, JECXZ, JRCXZ)>;
 def: InstRW<[BWWriteResGroup20], (instregex "SBB8i8")>;
 def: InstRW<[BWWriteResGroup20], (instregex "SBB8ri")>;
 def: InstRW<[BWWriteResGroup20], (instregex "SET(A|BE)r")>;
index cac3a3b8368be11129ff21ae6ccc5315f419bf97..acac5293d4e8cb1ab37cd51f74af78fda2a666e7 100644 (file)
@@ -2036,7 +2036,7 @@ def: InstRW<[HWWriteResGroup35], (instregex "ADC(8|16|32|64)rr")>;
 def: InstRW<[HWWriteResGroup35], (instregex "ADC(8|16|32|64)i")>;
 def: InstRW<[HWWriteResGroup35], (instregex "CMOV(AE|B|E|G|GE|L|LE|NE|NO|NP|NS|O|P|S)(16|32|64)rr")>;
 def: InstRW<[HWWriteResGroup35], (instrs CWD)>;
-def: InstRW<[HWWriteResGroup35], (instregex "JRCXZ")>;
+def: InstRW<[HWWriteResGroup35], (instrs JCXZ, JECXZ, JRCXZ)>;
 def: InstRW<[HWWriteResGroup35], (instregex "SBB(8|16|32|64)ri")>;
 def: InstRW<[HWWriteResGroup35], (instregex "SBB(8|16|32|64)rr")>;
 def: InstRW<[HWWriteResGroup35], (instregex "SBB(8|16|32|64)i")>;
index e8b259cc42e10b28903f2e1b5ab49f590a34e709..d1b58a8106d3d96437f32eca533610471de616ee 100644 (file)
@@ -792,7 +792,7 @@ def SBWriteResGroup18 : SchedWriteRes<[SBPort5,SBPort015]> {
   let NumMicroOps = 2;
   let ResourceCycles = [1,1];
 }
-def: InstRW<[SBWriteResGroup18], (instregex "JRCXZ")>;
+def: InstRW<[SBWriteResGroup18], (instrs JCXZ, JECXZ, JRCXZ)>;
 def: InstRW<[SBWriteResGroup18], (instregex "MMX_MOVDQ2Qrr")>;
 
 def SBWriteResGroup19 : SchedWriteRes<[SBPort05,SBPort015]> {
index 01b87bc12300f4885d1aa601273f4c519e367eb7..55fe3892b41d80b698b8d15b054aaea706b488b1 100644 (file)
@@ -1079,7 +1079,7 @@ def SKLWriteResGroup23 : SchedWriteRes<[SKLPort06,SKLPort0156]> {
 def: InstRW<[SKLWriteResGroup23], (instregex "ADC8i8")>;
 def: InstRW<[SKLWriteResGroup23], (instregex "ADC8ri")>;
 def: InstRW<[SKLWriteResGroup23], (instrs CWD)>;
-def: InstRW<[SKLWriteResGroup23], (instregex "JRCXZ")>;
+def: InstRW<[SKLWriteResGroup23], (instrs JCXZ, JECXZ, JRCXZ)>;
 def: InstRW<[SKLWriteResGroup23], (instregex "SBB8i8")>;
 def: InstRW<[SKLWriteResGroup23], (instregex "SBB8ri")>;
 
index 72fff2d0f1d21def16cd5993482e860f3c2a75c7..3461dd1a2894e0dc363744799614de758c9d2869 100755 (executable)
@@ -1590,7 +1590,7 @@ def SKXWriteResGroup23 : SchedWriteRes<[SKXPort06,SKXPort0156]> {
 def: InstRW<[SKXWriteResGroup23], (instregex "ADC8i8")>;
 def: InstRW<[SKXWriteResGroup23], (instregex "ADC8ri")>;
 def: InstRW<[SKXWriteResGroup23], (instrs CWD)>;
-def: InstRW<[SKXWriteResGroup23], (instregex "JRCXZ")>;
+def: InstRW<[SKXWriteResGroup23], (instrs JCXZ, JECXZ, JRCXZ)>;
 def: InstRW<[SKXWriteResGroup23], (instregex "SBB8i8")>;
 def: InstRW<[SKXWriteResGroup23], (instregex "SBB8ri")>;
 
index 601b4234ad23f53a54ba35b497c5e22393750499..8f31501bfd5e2975e93fb0ba31a97d394f4905f2 100644 (file)
@@ -1293,8 +1293,8 @@ define void @test_jcxz_jecxz() optsize {
 ; SANDY:       # %bb.0:
 ; SANDY-NEXT:    #APP
 ; SANDY-NEXT:  JXTGT:
-; SANDY-NEXT:    jcxz JXTGT # sched: [1:1.00]
-; SANDY-NEXT:    jecxz JXTGT # sched: [1:1.00]
+; SANDY-NEXT:    jcxz JXTGT # sched: [2:1.00]
+; SANDY-NEXT:    jecxz JXTGT # sched: [2:1.00]
 ; SANDY-NEXT:    #NO_APP
 ; SANDY-NEXT:    retl # sched: [5:1.00]
 ;
@@ -1302,8 +1302,8 @@ define void @test_jcxz_jecxz() optsize {
 ; HASWELL:       # %bb.0:
 ; HASWELL-NEXT:    #APP
 ; HASWELL-NEXT:  JXTGT:
-; HASWELL-NEXT:    jcxz JXTGT # sched: [1:0.50]
-; HASWELL-NEXT:    jecxz JXTGT # sched: [1:0.50]
+; HASWELL-NEXT:    jcxz JXTGT # sched: [2:0.50]
+; HASWELL-NEXT:    jecxz JXTGT # sched: [2:0.50]
 ; HASWELL-NEXT:    #NO_APP
 ; HASWELL-NEXT:    retl # sched: [7:1.00]
 ;
@@ -1311,8 +1311,8 @@ define void @test_jcxz_jecxz() optsize {
 ; BROADWELL:       # %bb.0:
 ; BROADWELL-NEXT:    #APP
 ; BROADWELL-NEXT:  JXTGT:
-; BROADWELL-NEXT:    jcxz JXTGT # sched: [1:0.50]
-; BROADWELL-NEXT:    jecxz JXTGT # sched: [1:0.50]
+; BROADWELL-NEXT:    jcxz JXTGT # sched: [2:0.50]
+; BROADWELL-NEXT:    jecxz JXTGT # sched: [2:0.50]
 ; BROADWELL-NEXT:    #NO_APP
 ; BROADWELL-NEXT:    retl # sched: [6:0.50]
 ;
@@ -1320,8 +1320,8 @@ define void @test_jcxz_jecxz() optsize {
 ; SKYLAKE:       # %bb.0:
 ; SKYLAKE-NEXT:    #APP
 ; SKYLAKE-NEXT:  JXTGT:
-; SKYLAKE-NEXT:    jcxz JXTGT # sched: [1:0.50]
-; SKYLAKE-NEXT:    jecxz JXTGT # sched: [1:0.50]
+; SKYLAKE-NEXT:    jcxz JXTGT # sched: [2:0.50]
+; SKYLAKE-NEXT:    jecxz JXTGT # sched: [2:0.50]
 ; SKYLAKE-NEXT:    #NO_APP
 ; SKYLAKE-NEXT:    retl # sched: [6:0.50]
 ;
@@ -1329,8 +1329,8 @@ define void @test_jcxz_jecxz() optsize {
 ; SKX:       # %bb.0:
 ; SKX-NEXT:    #APP
 ; SKX-NEXT:  JXTGT:
-; SKX-NEXT:    jcxz JXTGT # sched: [1:0.50]
-; SKX-NEXT:    jecxz JXTGT # sched: [1:0.50]
+; SKX-NEXT:    jcxz JXTGT # sched: [2:0.50]
+; SKX-NEXT:    jecxz JXTGT # sched: [2:0.50]
 ; SKX-NEXT:    #NO_APP
 ; SKX-NEXT:    retl # sched: [6:0.50]
 ;
index 01972522571132f1f11f71a6ec370983691a0b2b..1a8019515838c67a13b109a9672ba67f87a5dbd7 100644 (file)
@@ -7198,7 +7198,7 @@ define void @test_jecxz_jrcxz() optsize {
 ; GENERIC:       # %bb.0:
 ; GENERIC-NEXT:    #APP
 ; GENERIC-NEXT:  JXTGT:
-; GENERIC-NEXT:    jecxz JXTGT # sched: [1:1.00]
+; GENERIC-NEXT:    jecxz JXTGT # sched: [2:1.00]
 ; GENERIC-NEXT:    jrcxz JXTGT # sched: [2:1.00]
 ; GENERIC-NEXT:    #NO_APP
 ; GENERIC-NEXT:    retq # sched: [1:1.00]
@@ -7225,7 +7225,7 @@ define void @test_jecxz_jrcxz() optsize {
 ; SANDY:       # %bb.0:
 ; SANDY-NEXT:    #APP
 ; SANDY-NEXT:  JXTGT:
-; SANDY-NEXT:    jecxz JXTGT # sched: [1:1.00]
+; SANDY-NEXT:    jecxz JXTGT # sched: [2:1.00]
 ; SANDY-NEXT:    jrcxz JXTGT # sched: [2:1.00]
 ; SANDY-NEXT:    #NO_APP
 ; SANDY-NEXT:    retq # sched: [1:1.00]
@@ -7234,7 +7234,7 @@ define void @test_jecxz_jrcxz() optsize {
 ; HASWELL:       # %bb.0:
 ; HASWELL-NEXT:    #APP
 ; HASWELL-NEXT:  JXTGT:
-; HASWELL-NEXT:    jecxz JXTGT # sched: [1:0.50]
+; HASWELL-NEXT:    jecxz JXTGT # sched: [2:0.50]
 ; HASWELL-NEXT:    jrcxz JXTGT # sched: [2:0.50]
 ; HASWELL-NEXT:    #NO_APP
 ; HASWELL-NEXT:    retq # sched: [7:1.00]
@@ -7243,7 +7243,7 @@ define void @test_jecxz_jrcxz() optsize {
 ; BROADWELL:       # %bb.0:
 ; BROADWELL-NEXT:    #APP
 ; BROADWELL-NEXT:  JXTGT:
-; BROADWELL-NEXT:    jecxz JXTGT # sched: [1:0.50]
+; BROADWELL-NEXT:    jecxz JXTGT # sched: [2:0.50]
 ; BROADWELL-NEXT:    jrcxz JXTGT # sched: [2:0.50]
 ; BROADWELL-NEXT:    #NO_APP
 ; BROADWELL-NEXT:    retq # sched: [7:1.00]
@@ -7252,7 +7252,7 @@ define void @test_jecxz_jrcxz() optsize {
 ; SKYLAKE:       # %bb.0:
 ; SKYLAKE-NEXT:    #APP
 ; SKYLAKE-NEXT:  JXTGT:
-; SKYLAKE-NEXT:    jecxz JXTGT # sched: [1:0.50]
+; SKYLAKE-NEXT:    jecxz JXTGT # sched: [2:0.50]
 ; SKYLAKE-NEXT:    jrcxz JXTGT # sched: [2:0.50]
 ; SKYLAKE-NEXT:    #NO_APP
 ; SKYLAKE-NEXT:    retq # sched: [7:1.00]
@@ -7261,7 +7261,7 @@ define void @test_jecxz_jrcxz() optsize {
 ; SKX:       # %bb.0:
 ; SKX-NEXT:    #APP
 ; SKX-NEXT:  JXTGT:
-; SKX-NEXT:    jecxz JXTGT # sched: [1:0.50]
+; SKX-NEXT:    jecxz JXTGT # sched: [2:0.50]
 ; SKX-NEXT:    jrcxz JXTGT # sched: [2:0.50]
 ; SKX-NEXT:    #NO_APP
 ; SKX-NEXT:    retq # sched: [7:1.00]