[llvm] r327944 - [X86] Add TEST16mi/TEST32mi/TEST64mi32 to the Sandybridge/Haswell/Broadwell/Skylake scheduler models.

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 19 20:02:03 PDT 2018


Author: ctopper
Date: Mon Mar 19 20:02:03 2018
New Revision: 327944

URL: http://llvm.org/viewvc/llvm-project?rev=327944&view=rev
Log:
[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.

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

Modified: llvm/trunk/lib/Target/X86/X86SchedBroadwell.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86SchedBroadwell.td?rev=327944&r1=327943&r2=327944&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86SchedBroadwell.td (original)
+++ llvm/trunk/lib/Target/X86/X86SchedBroadwell.td Mon Mar 19 20:02:03 2018
@@ -2091,7 +2091,7 @@ def: InstRW<[BWWriteResGroup66], (instrs
 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]> {

Modified: llvm/trunk/lib/Target/X86/X86SchedHaswell.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86SchedHaswell.td?rev=327944&r1=327943&r2=327944&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86SchedHaswell.td (original)
+++ llvm/trunk/lib/Target/X86/X86SchedHaswell.td Mon Mar 19 20:02:03 2018
@@ -1806,7 +1806,7 @@ def: InstRW<[HWWriteResGroup18], (instrs
 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]> {

Modified: llvm/trunk/lib/Target/X86/X86SchedSandyBridge.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86SchedSandyBridge.td?rev=327944&r1=327943&r2=327944&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86SchedSandyBridge.td (original)
+++ llvm/trunk/lib/Target/X86/X86SchedSandyBridge.td Mon Mar 19 20:02:03 2018
@@ -1457,6 +1457,8 @@ def: InstRW<[SBWriteResGroup52], (instre
 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], (instre
 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")>;
 

Modified: llvm/trunk/lib/Target/X86/X86SchedSkylakeClient.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86SchedSkylakeClient.td?rev=327944&r1=327943&r2=327944&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86SchedSkylakeClient.td (original)
+++ llvm/trunk/lib/Target/X86/X86SchedSkylakeClient.td Mon Mar 19 20:02:03 2018
@@ -1934,7 +1934,7 @@ def: InstRW<[SKLWriteResGroup76], (instr
 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]> {

Modified: llvm/trunk/lib/Target/X86/X86SchedSkylakeServer.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86SchedSkylakeServer.td?rev=327944&r1=327943&r2=327944&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86SchedSkylakeServer.td (original)
+++ llvm/trunk/lib/Target/X86/X86SchedSkylakeServer.td Mon Mar 19 20:02:03 2018
@@ -3128,7 +3128,7 @@ def: InstRW<[SKXWriteResGroup81], (instr
 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]> {

Modified: llvm/trunk/test/CodeGen/X86/schedule-x86_64.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/schedule-x86_64.ll?rev=327944&r1=327943&r2=327944&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/schedule-x86_64.ll (original)
+++ llvm/trunk/test/CodeGen/X86/schedule-x86_64.ll Mon Mar 19 20:02:03 2018
@@ -15171,9 +15171,9 @@ define void @test_test_8(i8 %a0, i8* %a1
 ; 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
 ; 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*
 ; 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*
 ; 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*
 ; 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*
 ; 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*
 ; 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*
 ; 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*
 ; 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*
 ; 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*
 ; 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*
 ; 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*
 ; 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*
 ; 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*
 ; 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*
 ; 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*
 ; 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*
 ; 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*
 ; 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*
 ; 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




More information about the llvm-commits mailing list