[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
This commit is contained in:
Craig Topper 2018-03-20 03:02:03 +00:00
parent 7c90e29cf8
commit 3e9462607e
6 changed files with 34 additions and 34 deletions

View File

@ -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]> {

View File

@ -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]> {

View File

@ -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")>;

View File

@ -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]> {

View File

@ -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]> {

View File

@ -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