summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2018-03-20 03:02:03 +0000
committerCraig Topper <craig.topper@intel.com>2018-03-20 03:02:03 +0000
commit3e9462607e05b6a0b943d7bd4fb178ed5e44660a (patch)
tree2d0168f37e6e97beee80092dee34274ffebb0b14
parent7c90e29cf8f46d4c4de772e1e64d2620b2bbaf23 (diff)
downloadbcm5719-llvm-3e9462607e05b6a0b943d7bd4fb178ed5e44660a.tar.gz
bcm5719-llvm-3e9462607e05b6a0b943d7bd4fb178ed5e44660a.zip
[X86] Add TEST16mi/TEST32mi/TEST64mi32 to the Sandybridge/Haswell/Broadwell/Skylake scheduler models.
Move it from a load+store group on SNB to a load only group, the same group as CMP. llvm-svn: 327944
-rwxr-xr-xllvm/lib/Target/X86/X86SchedBroadwell.td2
-rw-r--r--llvm/lib/Target/X86/X86SchedHaswell.td2
-rw-r--r--llvm/lib/Target/X86/X86SchedSandyBridge.td4
-rw-r--r--llvm/lib/Target/X86/X86SchedSkylakeClient.td2
-rwxr-xr-xllvm/lib/Target/X86/X86SchedSkylakeServer.td2
-rw-r--r--llvm/test/CodeGen/X86/schedule-x86_64.ll56
6 files changed, 34 insertions, 34 deletions
diff --git a/llvm/lib/Target/X86/X86SchedBroadwell.td b/llvm/lib/Target/X86/X86SchedBroadwell.td
index 795b6ae55c0..0e699da4fb6 100755
--- a/llvm/lib/Target/X86/X86SchedBroadwell.td
+++ b/llvm/lib/Target/X86/X86SchedBroadwell.td
@@ -2091,7 +2091,7 @@ def: InstRW<[BWWriteResGroup66], (instrs POP16r, POP32r, POP64r)>;
def: InstRW<[BWWriteResGroup66], (instregex "POP(16|32|64)rmr")>;
def: InstRW<[BWWriteResGroup66], (instregex "SUB(8|16|32|64)rm")>;
def: InstRW<[BWWriteResGroup66], (instregex "TEST(8|16|32|64)mr")>;
-def: InstRW<[BWWriteResGroup66], (instregex "TEST8mi")>;
+def: InstRW<[BWWriteResGroup66], (instregex "TEST(8|16|32|64)mi")>;
def: InstRW<[BWWriteResGroup66], (instregex "XOR(8|16|32|64)rm")>;
def BWWriteResGroup67 : SchedWriteRes<[BWPort1,BWPort06,BWPort0156]> {
diff --git a/llvm/lib/Target/X86/X86SchedHaswell.td b/llvm/lib/Target/X86/X86SchedHaswell.td
index acac5293d4e..468bb97ebcf 100644
--- a/llvm/lib/Target/X86/X86SchedHaswell.td
+++ b/llvm/lib/Target/X86/X86SchedHaswell.td
@@ -1806,7 +1806,7 @@ def: InstRW<[HWWriteResGroup18], (instrs POP16r, POP32r, POP64r)>;
def: InstRW<[HWWriteResGroup18], (instregex "POP(16|32|64)rmr")>;
def: InstRW<[HWWriteResGroup18], (instregex "SUB(8|16|32|64)rm")>;
def: InstRW<[HWWriteResGroup18], (instregex "TEST(8|16|32|64)mr")>;
-def: InstRW<[HWWriteResGroup18], (instregex "TEST8mi")>;
+def: InstRW<[HWWriteResGroup18], (instregex "TEST(8|16|32|64)mi")>;
def: InstRW<[HWWriteResGroup18], (instregex "XOR(8|16|32|64)rm")>;
def HWWriteResGroup19 : SchedWriteRes<[HWPort237,HWPort0156]> {
diff --git a/llvm/lib/Target/X86/X86SchedSandyBridge.td b/llvm/lib/Target/X86/X86SchedSandyBridge.td
index 4f535924c73..b7ad1f0a55a 100644
--- a/llvm/lib/Target/X86/X86SchedSandyBridge.td
+++ b/llvm/lib/Target/X86/X86SchedSandyBridge.td
@@ -1457,6 +1457,8 @@ def: InstRW<[SBWriteResGroup52], (instregex "LODSL")>;
def: InstRW<[SBWriteResGroup52], (instregex "LODSQ")>;
def: InstRW<[SBWriteResGroup52], (instregex "OR(8|16|32|64)rm")>;
def: InstRW<[SBWriteResGroup52], (instregex "SUB(8|16|32|64)rm")>;
+def: InstRW<[SBWriteResGroup52], (instregex "TEST(8|16|32|64)mr")>;
+def: InstRW<[SBWriteResGroup52], (instregex "TEST(8|16|32|64)mi")>;
def: InstRW<[SBWriteResGroup52], (instregex "XOR(8|16|32|64)rm")>;
def SBWriteResGroup53 : SchedWriteRes<[SBPort4,SBPort23]> {
@@ -1844,8 +1846,6 @@ def: InstRW<[SBWriteResGroup70], (instregex "OR(8|16|32|64)mi")>;
def: InstRW<[SBWriteResGroup70], (instregex "OR(8|16|32|64)mr")>;
def: InstRW<[SBWriteResGroup70], (instregex "SUB(8|16|32|64)mi")>;
def: InstRW<[SBWriteResGroup70], (instregex "SUB(8|16|32|64)mr")>;
-def: InstRW<[SBWriteResGroup70], (instregex "TEST(8|16|32|64)mr")>;
-def: InstRW<[SBWriteResGroup70], (instregex "TEST8mi")>;
def: InstRW<[SBWriteResGroup70], (instregex "XOR(8|16|32|64)mi")>;
def: InstRW<[SBWriteResGroup70], (instregex "XOR(8|16|32|64)mr")>;
diff --git a/llvm/lib/Target/X86/X86SchedSkylakeClient.td b/llvm/lib/Target/X86/X86SchedSkylakeClient.td
index 55fe3892b41..b4d5f880434 100644
--- a/llvm/lib/Target/X86/X86SchedSkylakeClient.td
+++ b/llvm/lib/Target/X86/X86SchedSkylakeClient.td
@@ -1934,7 +1934,7 @@ def: InstRW<[SKLWriteResGroup76], (instrs POP16r, POP32r, POP64r)>;
def: InstRW<[SKLWriteResGroup76], (instregex "POP(16|32|64)rmr")>;
def: InstRW<[SKLWriteResGroup76], (instregex "SUB(8|16|32|64)rm")>;
def: InstRW<[SKLWriteResGroup76], (instregex "TEST(8|16|32|64)mr")>;
-def: InstRW<[SKLWriteResGroup76], (instregex "TEST8mi")>;
+def: InstRW<[SKLWriteResGroup76], (instregex "TEST(8|16|32|64)mi")>;
def: InstRW<[SKLWriteResGroup76], (instregex "XOR(8|16|32|64)rm")>;
def SKLWriteResGroup77 : SchedWriteRes<[SKLPort5,SKLPort01]> {
diff --git a/llvm/lib/Target/X86/X86SchedSkylakeServer.td b/llvm/lib/Target/X86/X86SchedSkylakeServer.td
index 3461dd1a289..695568194bf 100755
--- a/llvm/lib/Target/X86/X86SchedSkylakeServer.td
+++ b/llvm/lib/Target/X86/X86SchedSkylakeServer.td
@@ -3128,7 +3128,7 @@ def: InstRW<[SKXWriteResGroup81], (instrs POP16r, POP32r, POP64r)>;
def: InstRW<[SKXWriteResGroup81], (instregex "POP(16|32|64)rmr")>;
def: InstRW<[SKXWriteResGroup81], (instregex "SUB(8|16|32|64)rm")>;
def: InstRW<[SKXWriteResGroup81], (instregex "TEST(8|16|32|64)mr")>;
-def: InstRW<[SKXWriteResGroup81], (instregex "TEST8mi")>;
+def: InstRW<[SKXWriteResGroup81], (instregex "TEST(8|16|32|64)mi")>;
def: InstRW<[SKXWriteResGroup81], (instregex "XOR(8|16|32|64)rm")>;
def SKXWriteResGroup82 : SchedWriteRes<[SKXPort5,SKXPort015]> {
diff --git a/llvm/test/CodeGen/X86/schedule-x86_64.ll b/llvm/test/CodeGen/X86/schedule-x86_64.ll
index df8bc678992..e2c74715349 100644
--- a/llvm/test/CodeGen/X86/schedule-x86_64.ll
+++ b/llvm/test/CodeGen/X86/schedule-x86_64.ll
@@ -15171,9 +15171,9 @@ define void @test_test_8(i8 %a0, i8* %a1) optsize {
; GENERIC-NEXT: #APP
; GENERIC-NEXT: testb $7, %al # sched: [1:0.33]
; GENERIC-NEXT: testb $7, %dil # sched: [1:0.33]
-; GENERIC-NEXT: testb $7, (%rsi) # sched: [7:1.00]
+; GENERIC-NEXT: testb $7, (%rsi) # sched: [6:0.50]
; GENERIC-NEXT: testb %dil, %dil # sched: [1:0.33]
-; GENERIC-NEXT: testb %dil, (%rsi) # sched: [7:1.00]
+; GENERIC-NEXT: testb %dil, (%rsi) # sched: [6:0.50]
; GENERIC-NEXT: #NO_APP
; GENERIC-NEXT: retq # sched: [1:1.00]
;
@@ -15204,9 +15204,9 @@ define void @test_test_8(i8 %a0, i8* %a1) optsize {
; SANDY-NEXT: #APP
; SANDY-NEXT: testb $7, %al # sched: [1:0.33]
; SANDY-NEXT: testb $7, %dil # sched: [1:0.33]
-; SANDY-NEXT: testb $7, (%rsi) # sched: [7:1.00]
+; SANDY-NEXT: testb $7, (%rsi) # sched: [6:0.50]
; SANDY-NEXT: testb %dil, %dil # sched: [1:0.33]
-; SANDY-NEXT: testb %dil, (%rsi) # sched: [7:1.00]
+; SANDY-NEXT: testb %dil, (%rsi) # sched: [6:0.50]
; SANDY-NEXT: #NO_APP
; SANDY-NEXT: retq # sched: [1:1.00]
;
@@ -15287,9 +15287,9 @@ define void @test_test_16(i16 %a0, i16* %a1) optsize {
; GENERIC-NEXT: testw $511, %di # imm = 0x1FF
; GENERIC-NEXT: # sched: [1:0.33]
; GENERIC-NEXT: testw $511, (%rsi) # imm = 0x1FF
-; GENERIC-NEXT: # sched: [5:1.00]
+; GENERIC-NEXT: # sched: [6:0.50]
; GENERIC-NEXT: testw %di, %di # sched: [1:0.33]
-; GENERIC-NEXT: testw %di, (%rsi) # sched: [7:1.00]
+; GENERIC-NEXT: testw %di, (%rsi) # sched: [6:0.50]
; GENERIC-NEXT: #NO_APP
; GENERIC-NEXT: retq # sched: [1:1.00]
;
@@ -15329,9 +15329,9 @@ define void @test_test_16(i16 %a0, i16* %a1) optsize {
; SANDY-NEXT: testw $511, %di # imm = 0x1FF
; SANDY-NEXT: # sched: [1:0.33]
; SANDY-NEXT: testw $511, (%rsi) # imm = 0x1FF
-; SANDY-NEXT: # sched: [5:1.00]
+; SANDY-NEXT: # sched: [6:0.50]
; SANDY-NEXT: testw %di, %di # sched: [1:0.33]
-; SANDY-NEXT: testw %di, (%rsi) # sched: [7:1.00]
+; SANDY-NEXT: testw %di, (%rsi) # sched: [6:0.50]
; SANDY-NEXT: #NO_APP
; SANDY-NEXT: retq # sched: [1:1.00]
;
@@ -15343,7 +15343,7 @@ define void @test_test_16(i16 %a0, i16* %a1) optsize {
; HASWELL-NEXT: testw $511, %di # imm = 0x1FF
; HASWELL-NEXT: # sched: [1:0.25]
; HASWELL-NEXT: testw $511, (%rsi) # imm = 0x1FF
-; HASWELL-NEXT: # sched: [6:1.00]
+; HASWELL-NEXT: # sched: [6:0.50]
; HASWELL-NEXT: testw %di, %di # sched: [1:0.25]
; HASWELL-NEXT: testw %di, (%rsi) # sched: [6:0.50]
; HASWELL-NEXT: #NO_APP
@@ -15357,7 +15357,7 @@ define void @test_test_16(i16 %a0, i16* %a1) optsize {
; BROADWELL-NEXT: testw $511, %di # imm = 0x1FF
; BROADWELL-NEXT: # sched: [1:0.25]
; BROADWELL-NEXT: testw $511, (%rsi) # imm = 0x1FF
-; BROADWELL-NEXT: # sched: [6:1.00]
+; BROADWELL-NEXT: # sched: [6:0.50]
; BROADWELL-NEXT: testw %di, %di # sched: [1:0.25]
; BROADWELL-NEXT: testw %di, (%rsi) # sched: [6:0.50]
; BROADWELL-NEXT: #NO_APP
@@ -15371,7 +15371,7 @@ define void @test_test_16(i16 %a0, i16* %a1) optsize {
; SKYLAKE-NEXT: testw $511, %di # imm = 0x1FF
; SKYLAKE-NEXT: # sched: [1:0.25]
; SKYLAKE-NEXT: testw $511, (%rsi) # imm = 0x1FF
-; SKYLAKE-NEXT: # sched: [6:1.00]
+; SKYLAKE-NEXT: # sched: [6:0.50]
; SKYLAKE-NEXT: testw %di, %di # sched: [1:0.25]
; SKYLAKE-NEXT: testw %di, (%rsi) # sched: [6:0.50]
; SKYLAKE-NEXT: #NO_APP
@@ -15385,7 +15385,7 @@ define void @test_test_16(i16 %a0, i16* %a1) optsize {
; SKX-NEXT: testw $511, %di # imm = 0x1FF
; SKX-NEXT: # sched: [1:0.25]
; SKX-NEXT: testw $511, (%rsi) # imm = 0x1FF
-; SKX-NEXT: # sched: [6:1.00]
+; SKX-NEXT: # sched: [6:0.50]
; SKX-NEXT: testw %di, %di # sched: [1:0.25]
; SKX-NEXT: testw %di, (%rsi) # sched: [6:0.50]
; SKX-NEXT: #NO_APP
@@ -15430,9 +15430,9 @@ define void @test_test_32(i32 %a0, i32* %a1) optsize {
; GENERIC-NEXT: testl $665536, %edi # imm = 0xA27C0
; GENERIC-NEXT: # sched: [1:0.33]
; GENERIC-NEXT: testl $665536, (%rsi) # imm = 0xA27C0
-; GENERIC-NEXT: # sched: [5:1.00]
+; GENERIC-NEXT: # sched: [6:0.50]
; GENERIC-NEXT: testl %edi, %edi # sched: [1:0.33]
-; GENERIC-NEXT: testl %edi, (%rsi) # sched: [7:1.00]
+; GENERIC-NEXT: testl %edi, (%rsi) # sched: [6:0.50]
; GENERIC-NEXT: #NO_APP
; GENERIC-NEXT: retq # sched: [1:1.00]
;
@@ -15472,9 +15472,9 @@ define void @test_test_32(i32 %a0, i32* %a1) optsize {
; SANDY-NEXT: testl $665536, %edi # imm = 0xA27C0
; SANDY-NEXT: # sched: [1:0.33]
; SANDY-NEXT: testl $665536, (%rsi) # imm = 0xA27C0
-; SANDY-NEXT: # sched: [5:1.00]
+; SANDY-NEXT: # sched: [6:0.50]
; SANDY-NEXT: testl %edi, %edi # sched: [1:0.33]
-; SANDY-NEXT: testl %edi, (%rsi) # sched: [7:1.00]
+; SANDY-NEXT: testl %edi, (%rsi) # sched: [6:0.50]
; SANDY-NEXT: #NO_APP
; SANDY-NEXT: retq # sched: [1:1.00]
;
@@ -15486,7 +15486,7 @@ define void @test_test_32(i32 %a0, i32* %a1) optsize {
; HASWELL-NEXT: testl $665536, %edi # imm = 0xA27C0
; HASWELL-NEXT: # sched: [1:0.25]
; HASWELL-NEXT: testl $665536, (%rsi) # imm = 0xA27C0
-; HASWELL-NEXT: # sched: [6:1.00]
+; HASWELL-NEXT: # sched: [6:0.50]
; HASWELL-NEXT: testl %edi, %edi # sched: [1:0.25]
; HASWELL-NEXT: testl %edi, (%rsi) # sched: [6:0.50]
; HASWELL-NEXT: #NO_APP
@@ -15500,7 +15500,7 @@ define void @test_test_32(i32 %a0, i32* %a1) optsize {
; BROADWELL-NEXT: testl $665536, %edi # imm = 0xA27C0
; BROADWELL-NEXT: # sched: [1:0.25]
; BROADWELL-NEXT: testl $665536, (%rsi) # imm = 0xA27C0
-; BROADWELL-NEXT: # sched: [6:1.00]
+; BROADWELL-NEXT: # sched: [6:0.50]
; BROADWELL-NEXT: testl %edi, %edi # sched: [1:0.25]
; BROADWELL-NEXT: testl %edi, (%rsi) # sched: [6:0.50]
; BROADWELL-NEXT: #NO_APP
@@ -15514,7 +15514,7 @@ define void @test_test_32(i32 %a0, i32* %a1) optsize {
; SKYLAKE-NEXT: testl $665536, %edi # imm = 0xA27C0
; SKYLAKE-NEXT: # sched: [1:0.25]
; SKYLAKE-NEXT: testl $665536, (%rsi) # imm = 0xA27C0
-; SKYLAKE-NEXT: # sched: [6:1.00]
+; SKYLAKE-NEXT: # sched: [6:0.50]
; SKYLAKE-NEXT: testl %edi, %edi # sched: [1:0.25]
; SKYLAKE-NEXT: testl %edi, (%rsi) # sched: [6:0.50]
; SKYLAKE-NEXT: #NO_APP
@@ -15528,7 +15528,7 @@ define void @test_test_32(i32 %a0, i32* %a1) optsize {
; SKX-NEXT: testl $665536, %edi # imm = 0xA27C0
; SKX-NEXT: # sched: [1:0.25]
; SKX-NEXT: testl $665536, (%rsi) # imm = 0xA27C0
-; SKX-NEXT: # sched: [6:1.00]
+; SKX-NEXT: # sched: [6:0.50]
; SKX-NEXT: testl %edi, %edi # sched: [1:0.25]
; SKX-NEXT: testl %edi, (%rsi) # sched: [6:0.50]
; SKX-NEXT: #NO_APP
@@ -15573,9 +15573,9 @@ define void @test_test_64(i64 %a0, i64* %a1) optsize {
; GENERIC-NEXT: testq $665536, %rdi # imm = 0xA27C0
; GENERIC-NEXT: # sched: [1:0.33]
; GENERIC-NEXT: testq $665536, (%rsi) # imm = 0xA27C0
-; GENERIC-NEXT: # sched: [5:1.00]
+; GENERIC-NEXT: # sched: [6:0.50]
; GENERIC-NEXT: testq %rdi, %rdi # sched: [1:0.33]
-; GENERIC-NEXT: testq %rdi, (%rsi) # sched: [7:1.00]
+; GENERIC-NEXT: testq %rdi, (%rsi) # sched: [6:0.50]
; GENERIC-NEXT: #NO_APP
; GENERIC-NEXT: retq # sched: [1:1.00]
;
@@ -15615,9 +15615,9 @@ define void @test_test_64(i64 %a0, i64* %a1) optsize {
; SANDY-NEXT: testq $665536, %rdi # imm = 0xA27C0
; SANDY-NEXT: # sched: [1:0.33]
; SANDY-NEXT: testq $665536, (%rsi) # imm = 0xA27C0
-; SANDY-NEXT: # sched: [5:1.00]
+; SANDY-NEXT: # sched: [6:0.50]
; SANDY-NEXT: testq %rdi, %rdi # sched: [1:0.33]
-; SANDY-NEXT: testq %rdi, (%rsi) # sched: [7:1.00]
+; SANDY-NEXT: testq %rdi, (%rsi) # sched: [6:0.50]
; SANDY-NEXT: #NO_APP
; SANDY-NEXT: retq # sched: [1:1.00]
;
@@ -15629,7 +15629,7 @@ define void @test_test_64(i64 %a0, i64* %a1) optsize {
; HASWELL-NEXT: testq $665536, %rdi # imm = 0xA27C0
; HASWELL-NEXT: # sched: [1:0.25]
; HASWELL-NEXT: testq $665536, (%rsi) # imm = 0xA27C0
-; HASWELL-NEXT: # sched: [6:1.00]
+; HASWELL-NEXT: # sched: [6:0.50]
; HASWELL-NEXT: testq %rdi, %rdi # sched: [1:0.25]
; HASWELL-NEXT: testq %rdi, (%rsi) # sched: [6:0.50]
; HASWELL-NEXT: #NO_APP
@@ -15643,7 +15643,7 @@ define void @test_test_64(i64 %a0, i64* %a1) optsize {
; BROADWELL-NEXT: testq $665536, %rdi # imm = 0xA27C0
; BROADWELL-NEXT: # sched: [1:0.25]
; BROADWELL-NEXT: testq $665536, (%rsi) # imm = 0xA27C0
-; BROADWELL-NEXT: # sched: [6:1.00]
+; BROADWELL-NEXT: # sched: [6:0.50]
; BROADWELL-NEXT: testq %rdi, %rdi # sched: [1:0.25]
; BROADWELL-NEXT: testq %rdi, (%rsi) # sched: [6:0.50]
; BROADWELL-NEXT: #NO_APP
@@ -15657,7 +15657,7 @@ define void @test_test_64(i64 %a0, i64* %a1) optsize {
; SKYLAKE-NEXT: testq $665536, %rdi # imm = 0xA27C0
; SKYLAKE-NEXT: # sched: [1:0.25]
; SKYLAKE-NEXT: testq $665536, (%rsi) # imm = 0xA27C0
-; SKYLAKE-NEXT: # sched: [6:1.00]
+; SKYLAKE-NEXT: # sched: [6:0.50]
; SKYLAKE-NEXT: testq %rdi, %rdi # sched: [1:0.25]
; SKYLAKE-NEXT: testq %rdi, (%rsi) # sched: [6:0.50]
; SKYLAKE-NEXT: #NO_APP
@@ -15671,7 +15671,7 @@ define void @test_test_64(i64 %a0, i64* %a1) optsize {
; SKX-NEXT: testq $665536, %rdi # imm = 0xA27C0
; SKX-NEXT: # sched: [1:0.25]
; SKX-NEXT: testq $665536, (%rsi) # imm = 0xA27C0
-; SKX-NEXT: # sched: [6:1.00]
+; SKX-NEXT: # sched: [6:0.50]
; SKX-NEXT: testq %rdi, %rdi # sched: [1:0.25]
; SKX-NEXT: testq %rdi, (%rsi) # sched: [6:0.50]
; SKX-NEXT: #NO_APP
OpenPOWER on IntegriCloud