[llvm] 13fd737 - [X86] znver2 - (V)EXTRACTPSrr takes 2 uops

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Sun Nov 20 02:55:10 PST 2022


Author: Simon Pilgrim
Date: 2022-11-20T09:24:55Z
New Revision: 13fd7373b6a95f014fa8ccb277be79656c248d14

URL: https://github.com/llvm/llvm-project/commit/13fd7373b6a95f014fa8ccb277be79656c248d14
DIFF: https://github.com/llvm/llvm-project/commit/13fd7373b6a95f014fa8ccb277be79656c248d14.diff

LOG: [X86] znver2 - (V)EXTRACTPSrr takes 2 uops

D138359 was reporting that the EXTRACTPSrr override was unnecessary, however the AMD SoG and Agner both confirm that both the rr and rm versions take 2uops (matching znver1)

Added: 
    

Modified: 
    llvm/lib/Target/X86/X86ScheduleZnver2.td
    llvm/test/tools/llvm-mca/X86/Znver2/resources-avx1.s
    llvm/test/tools/llvm-mca/X86/Znver2/resources-sse41.s

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/X86/X86ScheduleZnver2.td b/llvm/lib/Target/X86/X86ScheduleZnver2.td
index 550ec78a3418e..04286560c0bb5 100644
--- a/llvm/lib/Target/X86/X86ScheduleZnver2.td
+++ b/llvm/lib/Target/X86/X86ScheduleZnver2.td
@@ -1115,6 +1115,7 @@ def : InstRW<[Zn2WriteBROADCAST], (instrs VBROADCASTF128)>;
 // r32,x,i.
 def Zn2WriteEXTRACTPSr : SchedWriteRes<[Zn2FPU12, Zn2FPU2]> {
   let Latency = 2;
+  let NumMicroOps = 2; 
   let ResourceCycles = [1, 2];
 }
 def : InstRW<[Zn2WriteEXTRACTPSr], (instregex "(V?)EXTRACTPSrr")>;

diff  --git a/llvm/test/tools/llvm-mca/X86/Znver2/resources-avx1.s b/llvm/test/tools/llvm-mca/X86/Znver2/resources-avx1.s
index dac2f1fc0ea03..736ed2f5dddf7 100644
--- a/llvm/test/tools/llvm-mca/X86/Znver2/resources-avx1.s
+++ b/llvm/test/tools/llvm-mca/X86/Znver2/resources-avx1.s
@@ -1194,7 +1194,7 @@ vzeroupper
 # CHECK-NEXT:  1      100   0.25    *                   vdpps	$22, (%rax), %ymm1, %ymm2
 # CHECK-NEXT:  1      1     0.33                        vextractf128	$1, %ymm0, %xmm2
 # CHECK-NEXT:  2      8     0.33           *            vextractf128	$1, %ymm0, (%rax)
-# CHECK-NEXT:  1      2     2.00                        vextractps	$1, %xmm0, %ecx
+# CHECK-NEXT:  2      2     2.00                        vextractps	$1, %xmm0, %ecx
 # CHECK-NEXT:  2      5     2.00           *            vextractps	$1, %xmm0, (%rax)
 # CHECK-NEXT:  1      7     0.25                        vhaddpd	%xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  1      14    0.33    *                   vhaddpd	(%rax), %xmm1, %xmm2

diff  --git a/llvm/test/tools/llvm-mca/X86/Znver2/resources-sse41.s b/llvm/test/tools/llvm-mca/X86/Znver2/resources-sse41.s
index 23eeeb58dbd01..5b84a17955f39 100644
--- a/llvm/test/tools/llvm-mca/X86/Znver2/resources-sse41.s
+++ b/llvm/test/tools/llvm-mca/X86/Znver2/resources-sse41.s
@@ -167,7 +167,7 @@ roundss     $1, (%rax), %xmm2
 # CHECK-NEXT:  1      100   0.25    *                   dppd	$22, (%rax), %xmm2
 # CHECK-NEXT:  1      15    0.25                        dpps	$22, %xmm0, %xmm2
 # CHECK-NEXT:  2      19    0.33    *                   dpps	$22, (%rax), %xmm2
-# CHECK-NEXT:  1      2     2.00                        extractps	$1, %xmm0, %ecx
+# CHECK-NEXT:  2      2     2.00                        extractps	$1, %xmm0, %ecx
 # CHECK-NEXT:  2      5     2.00           *            extractps	$1, %xmm0, (%rax)
 # CHECK-NEXT:  1      1     0.50                        insertps	$1, %xmm0, %xmm2
 # CHECK-NEXT:  1      8     0.50    *                   insertps	$1, (%rax), %xmm2


        


More information about the llvm-commits mailing list