[llvm] r328318 - [X86][Btver2] Cleanup SSE42 PCMPISTR/PCMPESTR string instructions to correctly use JFPU1 scheduler pipe followed by JLAGU/JSAGU/JFPA/JVALU function units
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Fri Mar 23 07:27:26 PDT 2018
Author: rksimon
Date: Fri Mar 23 07:27:26 2018
New Revision: 328318
URL: http://llvm.org/viewvc/llvm-project?rev=328318&view=rev
Log:
[X86][Btver2] Cleanup SSE42 PCMPISTR/PCMPESTR string instructions to correctly use JFPU1 scheduler pipe followed by JLAGU/JSAGU/JFPA/JVALU function units
Fixes throughput to match Agner/Fam16h-SoG as well.
Modified:
llvm/trunk/lib/Target/X86/X86ScheduleBtVer2.td
llvm/trunk/test/CodeGen/X86/sse42-schedule.ll
llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-sse42.s
Modified: llvm/trunk/lib/Target/X86/X86ScheduleBtVer2.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ScheduleBtVer2.td?rev=328318&r1=328317&r2=328318&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86ScheduleBtVer2.td (original)
+++ llvm/trunk/lib/Target/X86/X86ScheduleBtVer2.td Fri Mar 23 07:27:26 2018
@@ -343,13 +343,13 @@ defm : JWriteResFpuPair<WriteVarVecShift
////////////////////////////////////////////////////////////////////////////////
// SSE42 String instructions.
-// FIXME: approximate latencies + pipe dependencies
+// FIXME: Latency+i
////////////////////////////////////////////////////////////////////////////////
-defm : JWriteResFpuPair<WritePCmpIStrI, [JFPU1, JFPU0], 7, [2, 2], 3>;
-defm : JWriteResFpuPair<WritePCmpIStrM, [JFPU1, JFPU0], 8, [2, 2], 3>;
-defm : JWriteResFpuPair<WritePCmpEStrI, [JFPU1, JLAGU, JFPU01, JFPU1, JFPU0], 14, [5, 5, 5, 5, 5], 9>;
-defm : JWriteResFpuPair<WritePCmpEStrM, [JFPU1, JLAGU, JFPU01, JFPU1, JFPU0], 14, [5, 5, 5, 5, 5], 9>;
+defm : JWriteResFpuPair<WritePCmpIStrI, [JFPU1, JVALU1, JFPA], 7, [1, 2, 1], 3>;
+defm : JWriteResFpuPair<WritePCmpIStrM, [JFPU1, JVALU1, JFPA], 8, [1, 2, 1], 3>;
+defm : JWriteResFpuPair<WritePCmpEStrI, [JFPU1, JSAGU, JLAGU, JVALU, JVALU1, JFPA], 14, [1, 2, 2, 6, 4, 1], 9>;
+defm : JWriteResFpuPair<WritePCmpEStrM, [JFPU1, JSAGU, JLAGU, JVALU, JVALU1, JFPA], 14, [1, 2, 2, 6, 4, 1], 9>;
////////////////////////////////////////////////////////////////////////////////
// AES Instructions.
Modified: llvm/trunk/test/CodeGen/X86/sse42-schedule.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/sse42-schedule.ll?rev=328318&r1=328317&r2=328318&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/sse42-schedule.ll (original)
+++ llvm/trunk/test/CodeGen/X86/sse42-schedule.ll Fri Mar 23 07:27:26 2018
@@ -456,11 +456,11 @@ define i32 @test_pcmpestri(<16 x i8> %a0
; BTVER2: # %bb.0:
; BTVER2-NEXT: movl $7, %eax # sched: [1:0.50]
; BTVER2-NEXT: movl $7, %edx # sched: [1:0.50]
-; BTVER2-NEXT: vpcmpestri $7, %xmm1, %xmm0 # sched: [14:10.00]
+; BTVER2-NEXT: vpcmpestri $7, %xmm1, %xmm0 # sched: [14:5.00]
; BTVER2-NEXT: movl $7, %eax # sched: [1:0.50]
; BTVER2-NEXT: movl $7, %edx # sched: [1:0.50]
; BTVER2-NEXT: movl %ecx, %esi # sched: [1:0.50]
-; BTVER2-NEXT: vpcmpestri $7, (%rdi), %xmm0 # sched: [19:10.00]
+; BTVER2-NEXT: vpcmpestri $7, (%rdi), %xmm0 # sched: [19:5.00]
; BTVER2-NEXT: # kill: def $ecx killed $ecx def $rcx
; BTVER2-NEXT: leal (%rcx,%rsi), %eax # sched: [1:0.50]
; BTVER2-NEXT: retq # sched: [4:1.00]
@@ -560,10 +560,10 @@ define <16 x i8> @test_pcmpestrm(<16 x i
; BTVER2: # %bb.0:
; BTVER2-NEXT: movl $7, %eax # sched: [1:0.50]
; BTVER2-NEXT: movl $7, %edx # sched: [1:0.50]
-; BTVER2-NEXT: vpcmpestrm $7, %xmm1, %xmm0 # sched: [14:10.00]
+; BTVER2-NEXT: vpcmpestrm $7, %xmm1, %xmm0 # sched: [14:5.00]
; BTVER2-NEXT: movl $7, %eax # sched: [1:0.50]
; BTVER2-NEXT: movl $7, %edx # sched: [1:0.50]
-; BTVER2-NEXT: vpcmpestrm $7, (%rdi), %xmm0 # sched: [19:10.00]
+; BTVER2-NEXT: vpcmpestrm $7, (%rdi), %xmm0 # sched: [19:5.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-LABEL: test_pcmpestrm:
Modified: llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-sse42.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-sse42.s?rev=328318&r1=328317&r2=328318&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-sse42.s (original)
+++ llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-sse42.s Fri Mar 23 07:27:26 2018
@@ -58,13 +58,13 @@ pcmpgtq (%rax), %xmm2
# CHECK-NEXT: 4.00 - - - - - - 1.00 - - - - - - crc32b (%rax), %rcx
# CHECK-NEXT: - 4.00 - - - - - - - - - - - - crc32q %rax, %rcx
# CHECK-NEXT: 4.00 - - - - - - 1.00 - - - - - - crc32q (%rax), %rcx
-# CHECK-NEXT: - - - - - 5.00 10.00 5.00 - - - - - - pcmpestri $1, %xmm0, %xmm2
-# CHECK-NEXT: - - - - - 5.00 10.00 6.00 - - - - - - pcmpestri $1, (%rax), %xmm2
-# CHECK-NEXT: - - - - - 5.00 10.00 5.00 - - - - - - pcmpestrm $1, %xmm0, %xmm2
-# CHECK-NEXT: - - - - - 5.00 10.00 6.00 - - - - - - pcmpestrm $1, (%rax), %xmm2
-# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - - pcmpistri $1, %xmm0, %xmm2
-# CHECK-NEXT: - - - - - 2.00 2.00 1.00 - - - - - - pcmpistri $1, (%rax), %xmm2
-# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - - pcmpistrm $1, %xmm0, %xmm2
-# CHECK-NEXT: - - - - - 2.00 2.00 1.00 - - - - - - pcmpistrm $1, (%rax), %xmm2
-# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - pcmpgtq %xmm0, %xmm2
+# CHECK-NEXT: - - - 1.00 - - 1.00 2.00 - 2.00 - 6.00 4.00 - pcmpestri $1, %xmm0, %xmm2
+# CHECK-NEXT: - - - 1.00 - - 1.00 3.00 - 2.00 - 6.00 4.00 - pcmpestri $1, (%rax), %xmm2
+# CHECK-NEXT: - - - 1.00 - - 1.00 2.00 - 2.00 - 6.00 4.00 - pcmpestrm $1, %xmm0, %xmm2
+# CHECK-NEXT: - - - 1.00 - - 1.00 3.00 - 2.00 - 6.00 4.00 - pcmpestrm $1, (%rax), %xmm2
+# CHECK-NEXT: - - - 1.00 - - 1.00 - - - - - 2.00 - pcmpistri $1, %xmm0, %xmm2
+# CHECK-NEXT: - - - 1.00 - - 1.00 1.00 - - - - 2.00 - pcmpistri $1, (%rax), %xmm2
+# CHECK-NEXT: - - - 1.00 - - 1.00 - - - - - 2.00 - pcmpistrm $1, %xmm0, %xmm2
+# CHECK-NEXT: - - - 1.00 - - 1.00 1.00 - - - - 2.00 - pcmpistrm $1, (%rax), %xmm2
+# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - pcmpgtq %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - pcmpgtq (%rax), %xmm2
More information about the llvm-commits
mailing list