[llvm] 57250f2 - [X86][Atom] Fix vector PSHUFB resource/throughputs
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Tue May 25 09:32:07 PDT 2021
Author: Simon Pilgrim
Date: 2021-05-25T17:31:45+01:00
New Revision: 57250f2f3c6d03e27d8649f6f7d6bdbabf8936cc
URL: https://github.com/llvm/llvm-project/commit/57250f2f3c6d03e27d8649f6f7d6bdbabf8936cc
DIFF: https://github.com/llvm/llvm-project/commit/57250f2f3c6d03e27d8649f6f7d6bdbabf8936cc.diff
LOG: [X86][Atom] Fix vector PSHUFB resource/throughputs
Match whats documented in the Intel AOM - the XMM variant of PSHUFB requires BOTH ports - this was being incorrectly modelled as EITHER port.
Now that we can use in-order models in llvm-mca, the atom model is a good "worst case scenario" analysis for x86.
Added:
Modified:
llvm/lib/Target/X86/X86ScheduleAtom.td
llvm/test/tools/llvm-mca/X86/Atom/resources-ssse3.s
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86ScheduleAtom.td b/llvm/lib/Target/X86/X86ScheduleAtom.td
index c6768143f0098..8a1d6b29ba142 100644
--- a/llvm/lib/Target/X86/X86ScheduleAtom.td
+++ b/llvm/lib/Target/X86/X86ScheduleAtom.td
@@ -416,7 +416,7 @@ defm : AtomWriteResPair<WriteShuffleX, [AtomPort0], [AtomPort0], 1, 1>;
defm : X86WriteResPairUnsupported<WriteShuffleY>;
defm : X86WriteResPairUnsupported<WriteShuffleZ>;
defm : AtomWriteResPair<WriteVarShuffle, [AtomPort0], [AtomPort0], 1, 1>;
-defm : AtomWriteResPair<WriteVarShuffleX, [AtomPort01], [AtomPort01], 4, 5, [4], [5]>;
+defm : AtomWriteResPair<WriteVarShuffleX, [AtomPort0,AtomPort1], [AtomPort0,AtomPort1], 4, 5, [3,3], [4,4]>;
defm : X86WriteResPairUnsupported<WriteVarShuffleY>;
defm : X86WriteResPairUnsupported<WriteVarShuffleZ>;
defm : X86WriteResPairUnsupported<WriteBlend>;
diff --git a/llvm/test/tools/llvm-mca/X86/Atom/resources-ssse3.s b/llvm/test/tools/llvm-mca/X86/Atom/resources-ssse3.s
index 05b41a9435bcc..dc2e41a8a9745 100644
--- a/llvm/test/tools/llvm-mca/X86/Atom/resources-ssse3.s
+++ b/llvm/test/tools/llvm-mca/X86/Atom/resources-ssse3.s
@@ -156,8 +156,8 @@ psignw (%rax), %xmm2
# CHECK-NEXT: 1 5 2.00 * pmulhrsw (%rax), %xmm2
# CHECK-NEXT: 1 1 1.00 pshufb %mm0, %mm2
# CHECK-NEXT: 1 1 1.00 * pshufb (%rax), %mm2
-# CHECK-NEXT: 1 4 2.00 pshufb %xmm0, %xmm2
-# CHECK-NEXT: 1 5 2.50 * pshufb (%rax), %xmm2
+# CHECK-NEXT: 1 4 3.00 pshufb %xmm0, %xmm2
+# CHECK-NEXT: 1 5 4.00 * pshufb (%rax), %xmm2
# CHECK-NEXT: 1 1 0.50 psignb %mm0, %mm2
# CHECK-NEXT: 1 1 1.00 * psignb (%rax), %mm2
# CHECK-NEXT: 1 1 0.50 psignb %xmm0, %xmm2
@@ -177,7 +177,7 @@ psignw (%rax), %xmm2
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1]
-# CHECK-NEXT: 106.50 76.50
+# CHECK-NEXT: 109.00 79.00
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] Instructions:
@@ -231,8 +231,8 @@ psignw (%rax), %xmm2
# CHECK-NEXT: 2.00 - pmulhrsw (%rax), %xmm2
# CHECK-NEXT: 1.00 - pshufb %mm0, %mm2
# CHECK-NEXT: 1.00 - pshufb (%rax), %mm2
-# CHECK-NEXT: 2.00 2.00 pshufb %xmm0, %xmm2
-# CHECK-NEXT: 2.50 2.50 pshufb (%rax), %xmm2
+# CHECK-NEXT: 3.00 3.00 pshufb %xmm0, %xmm2
+# CHECK-NEXT: 4.00 4.00 pshufb (%rax), %xmm2
# CHECK-NEXT: 0.50 0.50 psignb %mm0, %mm2
# CHECK-NEXT: 1.00 - psignb (%rax), %mm2
# CHECK-NEXT: 0.50 0.50 psignb %xmm0, %xmm2
More information about the llvm-commits
mailing list