[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