[llvm] r351815 - [X86][BtVer2] X86ISD::VPERMILPV has local forwarding disabled
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Tue Jan 22 05:13:57 PST 2019
Author: rksimon
Date: Tue Jan 22 05:13:57 2019
New Revision: 351815
URL: http://llvm.org/viewvc/llvm-project?rev=351815&view=rev
Log:
[X86][BtVer2] X86ISD::VPERMILPV has local forwarding disabled
Similar to horizontal ops on D56777, the vpermilpd/vpermilps variable mask ops has local forwarding disabled, adding +1cy to the use latency for the result.
Differential Revision: https://reviews.llvm.org/D57022
Modified:
llvm/trunk/lib/Target/X86/X86ScheduleBtVer2.td
llvm/trunk/test/CodeGen/X86/avx-schedule.ll
llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s
Modified: llvm/trunk/lib/Target/X86/X86ScheduleBtVer2.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ScheduleBtVer2.td?rev=351815&r1=351814&r2=351815&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86ScheduleBtVer2.td (original)
+++ llvm/trunk/lib/Target/X86/X86ScheduleBtVer2.td Tue Jan 22 05:13:57 2019
@@ -400,8 +400,8 @@ defm : X86WriteResPairUnsupported<WriteF
defm : JWriteResFpuPair<WriteFShuffle, [JFPU01, JFPX], 1>;
defm : JWriteResYMMPair<WriteFShuffleY, [JFPU01, JFPX], 1, [2, 2], 2>;
defm : X86WriteResPairUnsupported<WriteFShuffleZ>;
-defm : JWriteResFpuPair<WriteFVarShuffle, [JFPU01, JFPX], 2, [1, 4], 3>;
-defm : JWriteResYMMPair<WriteFVarShuffleY,[JFPU01, JFPX], 3, [2, 6], 6>;
+defm : JWriteResFpuPair<WriteFVarShuffle, [JFPU01, JFPX], 3, [1, 4], 3>; // +1cy latency.
+defm : JWriteResYMMPair<WriteFVarShuffleY,[JFPU01, JFPX], 4, [2, 6], 6>; // +1cy latency.
defm : X86WriteResPairUnsupported<WriteFVarShuffleZ>;
defm : JWriteResFpuPair<WriteFBlend, [JFPU01, JFPX], 1>;
defm : JWriteResYMMPair<WriteFBlendY, [JFPU01, JFPX], 1, [2, 2], 2>;
Modified: llvm/trunk/test/CodeGen/X86/avx-schedule.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/avx-schedule.ll?rev=351815&r1=351814&r2=351815&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/avx-schedule.ll (original)
+++ llvm/trunk/test/CodeGen/X86/avx-schedule.ll Tue Jan 22 05:13:57 2019
@@ -4258,8 +4258,8 @@ define <2 x double> @test_permilvarpd(<2
;
; BTVER2-LABEL: test_permilvarpd:
; BTVER2: # %bb.0:
-; BTVER2-NEXT: vpermilpd %xmm1, %xmm0, %xmm0 # sched: [2:2.00]
-; BTVER2-NEXT: vpermilpd (%rdi), %xmm0, %xmm0 # sched: [7:2.00]
+; BTVER2-NEXT: vpermilpd %xmm1, %xmm0, %xmm0 # sched: [3:2.00]
+; BTVER2-NEXT: vpermilpd (%rdi), %xmm0, %xmm0 # sched: [8:2.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-LABEL: test_permilvarpd:
@@ -4319,8 +4319,8 @@ define <4 x double> @test_permilvarpd_ym
;
; BTVER2-LABEL: test_permilvarpd_ymm:
; BTVER2: # %bb.0:
-; BTVER2-NEXT: vpermilpd %ymm1, %ymm0, %ymm0 # sched: [3:3.00]
-; BTVER2-NEXT: vpermilpd (%rdi), %ymm0, %ymm0 # sched: [8:3.00]
+; BTVER2-NEXT: vpermilpd %ymm1, %ymm0, %ymm0 # sched: [4:3.00]
+; BTVER2-NEXT: vpermilpd (%rdi), %ymm0, %ymm0 # sched: [9:3.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-LABEL: test_permilvarpd_ymm:
@@ -4380,8 +4380,8 @@ define <4 x float> @test_permilvarps(<4
;
; BTVER2-LABEL: test_permilvarps:
; BTVER2: # %bb.0:
-; BTVER2-NEXT: vpermilps %xmm1, %xmm0, %xmm0 # sched: [2:2.00]
-; BTVER2-NEXT: vpermilps (%rdi), %xmm0, %xmm0 # sched: [7:2.00]
+; BTVER2-NEXT: vpermilps %xmm1, %xmm0, %xmm0 # sched: [3:2.00]
+; BTVER2-NEXT: vpermilps (%rdi), %xmm0, %xmm0 # sched: [8:2.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-LABEL: test_permilvarps:
@@ -4441,8 +4441,8 @@ define <8 x float> @test_permilvarps_ymm
;
; BTVER2-LABEL: test_permilvarps_ymm:
; BTVER2: # %bb.0:
-; BTVER2-NEXT: vpermilps %ymm1, %ymm0, %ymm0 # sched: [3:3.00]
-; BTVER2-NEXT: vpermilps (%rdi), %ymm0, %ymm0 # sched: [8:3.00]
+; BTVER2-NEXT: vpermilps %ymm1, %ymm0, %ymm0 # sched: [4:3.00]
+; BTVER2-NEXT: vpermilps (%rdi), %ymm0, %ymm0 # sched: [9:3.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-LABEL: test_permilvarps_ymm:
Modified: llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s?rev=351815&r1=351814&r2=351815&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s (original)
+++ llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s Tue Jan 22 05:13:57 2019
@@ -1433,20 +1433,20 @@ vzeroupper
# CHECK-NEXT: 2 6 1.00 * vperm2f128 $1, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 1 0.50 vpermilpd $1, %xmm0, %xmm2
# CHECK-NEXT: 1 6 1.00 * vpermilpd $1, (%rax), %xmm2
-# CHECK-NEXT: 3 2 2.00 vpermilpd %xmm0, %xmm1, %xmm2
-# CHECK-NEXT: 3 7 2.00 * vpermilpd (%rax), %xmm1, %xmm2
+# CHECK-NEXT: 3 3 2.00 vpermilpd %xmm0, %xmm1, %xmm2
+# CHECK-NEXT: 3 8 2.00 * vpermilpd (%rax), %xmm1, %xmm2
# CHECK-NEXT: 2 1 1.00 vpermilpd $1, %ymm0, %ymm2
# CHECK-NEXT: 2 6 2.00 * vpermilpd $1, (%rax), %ymm2
-# CHECK-NEXT: 6 3 3.00 vpermilpd %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: 6 8 3.00 * vpermilpd (%rax), %ymm1, %ymm2
+# CHECK-NEXT: 6 4 3.00 vpermilpd %ymm0, %ymm1, %ymm2
+# CHECK-NEXT: 6 9 3.00 * vpermilpd (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 1 0.50 vpermilps $1, %xmm0, %xmm2
# CHECK-NEXT: 1 6 1.00 * vpermilps $1, (%rax), %xmm2
-# CHECK-NEXT: 3 2 2.00 vpermilps %xmm0, %xmm1, %xmm2
-# CHECK-NEXT: 3 7 2.00 * vpermilps (%rax), %xmm1, %xmm2
+# CHECK-NEXT: 3 3 2.00 vpermilps %xmm0, %xmm1, %xmm2
+# CHECK-NEXT: 3 8 2.00 * vpermilps (%rax), %xmm1, %xmm2
# CHECK-NEXT: 2 1 1.00 vpermilps $1, %ymm0, %ymm2
# CHECK-NEXT: 2 6 2.00 * vpermilps $1, (%rax), %ymm2
-# CHECK-NEXT: 6 3 3.00 vpermilps %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: 6 8 3.00 * vpermilps (%rax), %ymm1, %ymm2
+# CHECK-NEXT: 6 4 3.00 vpermilps %ymm0, %ymm1, %ymm2
+# CHECK-NEXT: 6 9 3.00 * vpermilps (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vpextrb $1, %xmm0, %ecx
# CHECK-NEXT: 1 3 1.00 * vpextrb $1, %xmm0, (%rax)
# CHECK-NEXT: 1 3 1.00 vpextrd $1, %xmm0, %ecx
More information about the llvm-commits
mailing list