[llvm] df975e4 - [X86][SLM] Fix PSAD/MPSAD uops, latency and throughput

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Sat Sep 11 03:44:54 PDT 2021


Author: Simon Pilgrim
Date: 2021-09-11T11:44:09+01:00
New Revision: df975e459008504db1248414718c1b936685d16f

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

LOG: [X86][SLM] Fix PSAD/MPSAD uops, latency and throughput

Noticed while trying to improve generic reduction costs via the D103695 helper script. Confirmed with Intel AoM / Agner / InstLatX64.

Added: 
    

Modified: 
    llvm/lib/Target/X86/X86ScheduleSLM.td
    llvm/test/tools/llvm-mca/X86/SLM/resources-sse2.s
    llvm/test/tools/llvm-mca/X86/SLM/resources-sse41.s

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/X86/X86ScheduleSLM.td b/llvm/lib/Target/X86/X86ScheduleSLM.td
index bd7b56a57360..36d0cadf6296 100644
--- a/llvm/lib/Target/X86/X86ScheduleSLM.td
+++ b/llvm/lib/Target/X86/X86ScheduleSLM.td
@@ -394,12 +394,12 @@ defm : X86WriteResPairUnsupported<WriteBlendZ>;
 defm : SLMWriteResPair<WriteVarBlend, [SLM_FPC_RSV0], 4, [4], 2, 1>;
 defm : X86WriteResPairUnsupported<WriteVarBlendY>;
 defm : X86WriteResPairUnsupported<WriteVarBlendZ>;
-defm : SLMWriteResPair<WriteMPSAD,  [SLM_FPC_RSV0],  7>;
-defm : SLMWriteResPair<WriteMPSADY, [SLM_FPC_RSV0],  7>;
+defm : SLMWriteResPair<WriteMPSAD,  [SLM_FPC_RSV0],  7, [5], 3, 1>;
+defm : X86WriteResPairUnsupported<WriteMPSADY>;
 defm : X86WriteResPairUnsupported<WriteMPSADZ>;
 defm : SLMWriteResPair<WritePSADBW,  [SLM_FPC_RSV0],  4>;
-defm : SLMWriteResPair<WritePSADBWX, [SLM_FPC_RSV0],  4>;
-defm : SLMWriteResPair<WritePSADBWY, [SLM_FPC_RSV0],  4>;
+defm : SLMWriteResPair<WritePSADBWX, [SLM_FPC_RSV0],  5, [2]>;
+defm : X86WriteResPairUnsupported<WritePSADBWY>;
 defm : X86WriteResPairUnsupported<WritePSADBWZ>;
 defm : SLMWriteResPair<WritePHMINPOS,  [SLM_FPC_RSV0],   4>;
 defm : X86WriteResPairUnsupported<WriteShuffle256>;

diff  --git a/llvm/test/tools/llvm-mca/X86/SLM/resources-sse2.s b/llvm/test/tools/llvm-mca/X86/SLM/resources-sse2.s
index dfdfa1320a2a..e00613e7f82b 100644
--- a/llvm/test/tools/llvm-mca/X86/SLM/resources-sse2.s
+++ b/llvm/test/tools/llvm-mca/X86/SLM/resources-sse2.s
@@ -586,8 +586,8 @@ xorpd       (%rax), %xmm2
 # CHECK-NEXT:  1      8     2.00    *                   pmuludq	(%rax), %xmm2
 # CHECK-NEXT:  1      1     0.50                        por	%xmm0, %xmm2
 # CHECK-NEXT:  1      4     1.00    *                   por	(%rax), %xmm2
-# CHECK-NEXT:  1      4     1.00                        psadbw	%xmm0, %xmm2
-# CHECK-NEXT:  1      7     1.00    *                   psadbw	(%rax), %xmm2
+# CHECK-NEXT:  1      5     2.00                        psadbw	%xmm0, %xmm2
+# CHECK-NEXT:  1      8     2.00    *                   psadbw	(%rax), %xmm2
 # CHECK-NEXT:  1      1     1.00                        pshufd	$1, %xmm0, %xmm2
 # CHECK-NEXT:  1      4     1.00    *                   pshufd	$1, (%rax), %xmm2
 # CHECK-NEXT:  1      1     1.00                        pshufhw	$1, %xmm0, %xmm2
@@ -687,7 +687,7 @@ xorpd       (%rax), %xmm2
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]
-# CHECK-NEXT:  -     412.00 12.00  233.50 77.50  3.00   3.00   134.00
+# CHECK-NEXT:  -     412.00 12.00  235.50 77.50  3.00   3.00   134.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    Instructions:
@@ -870,8 +870,8 @@ xorpd       (%rax), %xmm2
 # CHECK-NEXT:  -      -      -     2.00    -      -      -     1.00   pmuludq	(%rax), %xmm2
 # CHECK-NEXT:  -      -      -     0.50   0.50    -      -      -     por	%xmm0, %xmm2
 # CHECK-NEXT:  -      -      -     0.50   0.50    -      -     1.00   por	(%rax), %xmm2
-# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     psadbw	%xmm0, %xmm2
-# CHECK-NEXT:  -      -      -     1.00    -      -      -     1.00   psadbw	(%rax), %xmm2
+# CHECK-NEXT:  -      -      -     2.00    -      -      -      -     psadbw	%xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     2.00    -      -      -     1.00   psadbw	(%rax), %xmm2
 # CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pshufd	$1, %xmm0, %xmm2
 # CHECK-NEXT:  -      -      -     1.00    -      -      -     1.00   pshufd	$1, (%rax), %xmm2
 # CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pshufhw	$1, %xmm0, %xmm2

diff  --git a/llvm/test/tools/llvm-mca/X86/SLM/resources-sse41.s b/llvm/test/tools/llvm-mca/X86/SLM/resources-sse41.s
index e0e19e681853..6fb8d19d1fa9 100644
--- a/llvm/test/tools/llvm-mca/X86/SLM/resources-sse41.s
+++ b/llvm/test/tools/llvm-mca/X86/SLM/resources-sse41.s
@@ -172,8 +172,8 @@ roundss     $1, (%rax), %xmm2
 # CHECK-NEXT:  1      1     1.00                        insertps	$1, %xmm0, %xmm2
 # CHECK-NEXT:  1      4     1.00    *                   insertps	$1, (%rax), %xmm2
 # CHECK-NEXT:  1      3     1.00    *                   movntdqa	(%rax), %xmm2
-# CHECK-NEXT:  1      7     1.00                        mpsadbw	$1, %xmm0, %xmm2
-# CHECK-NEXT:  1      10    1.00    *                   mpsadbw	$1, (%rax), %xmm2
+# CHECK-NEXT:  3      7     5.00                        mpsadbw	$1, %xmm0, %xmm2
+# CHECK-NEXT:  4      10    5.00    *                   mpsadbw	$1, (%rax), %xmm2
 # CHECK-NEXT:  1      1     1.00                        packusdw	%xmm0, %xmm2
 # CHECK-NEXT:  1      4     1.00    *                   packusdw	(%rax), %xmm2
 # CHECK-NEXT:  2      4     4.00                        pblendvb	%xmm0, %xmm0, %xmm2
@@ -264,7 +264,7 @@ roundss     $1, (%rax), %xmm2
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]
-# CHECK-NEXT:  -      -      -     96.00  25.00   -      -     54.00
+# CHECK-NEXT:  -      -      -     104.00 25.00   -      -     54.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    Instructions:
@@ -285,8 +285,8 @@ roundss     $1, (%rax), %xmm2
 # CHECK-NEXT:  -      -      -     1.00    -      -      -      -     insertps	$1, %xmm0, %xmm2
 # CHECK-NEXT:  -      -      -     1.00    -      -      -     1.00   insertps	$1, (%rax), %xmm2
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00   movntdqa	(%rax), %xmm2
-# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     mpsadbw	$1, %xmm0, %xmm2
-# CHECK-NEXT:  -      -      -     1.00    -      -      -     1.00   mpsadbw	$1, (%rax), %xmm2
+# CHECK-NEXT:  -      -      -     5.00    -      -      -      -     mpsadbw	$1, %xmm0, %xmm2
+# CHECK-NEXT:  -      -      -     5.00    -      -      -     1.00   mpsadbw	$1, (%rax), %xmm2
 # CHECK-NEXT:  -      -      -     1.00    -      -      -      -     packusdw	%xmm0, %xmm2
 # CHECK-NEXT:  -      -      -     1.00    -      -      -     1.00   packusdw	(%rax), %xmm2
 # CHECK-NEXT:  -      -      -     4.00    -      -      -      -     pblendvb	%xmm0, %xmm0, %xmm2


        


More information about the llvm-commits mailing list