[llvm] ed8c561 - [X86] haswell/broadwell only uses port5 for mmx pack reg-reg instructions
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 26 07:55:17 PDT 2024
Author: Simon Pilgrim
Date: 2024-07-26T15:54:58+01:00
New Revision: ed8c561170b0fb98284ebbfaaab305e87a4d8bf9
URL: https://github.com/llvm/llvm-project/commit/ed8c561170b0fb98284ebbfaaab305e87a4d8bf9
DIFF: https://github.com/llvm/llvm-project/commit/ed8c561170b0fb98284ebbfaaab305e87a4d8bf9.diff
LOG: [X86] haswell/broadwell only uses port5 for mmx pack reg-reg instructions
Matches numbers from uops.info, Agner and instlatx64.
Added:
Modified:
llvm/lib/Target/X86/X86SchedBroadwell.td
llvm/lib/Target/X86/X86SchedHaswell.td
llvm/test/tools/llvm-mca/X86/Broadwell/resources-mmx.s
llvm/test/tools/llvm-mca/X86/Haswell/resources-mmx.s
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86SchedBroadwell.td b/llvm/lib/Target/X86/X86SchedBroadwell.td
index 63ac91028ac93..697d30a8a9548 100644
--- a/llvm/lib/Target/X86/X86SchedBroadwell.td
+++ b/llvm/lib/Target/X86/X86SchedBroadwell.td
@@ -792,10 +792,10 @@ def BWWriteResGroup28 : SchedWriteRes<[BWPort5]> {
def: InstRW<[BWWriteResGroup28], (instrs VPBROADCASTBrr,
VPBROADCASTWrr)>;
-def BWWriteResGroup33 : SchedWriteRes<[BWPort5,BWPort0156]> {
+def BWWriteResGroup33 : SchedWriteRes<[BWPort5]> {
let Latency = 3;
- let NumMicroOps = 3;
- let ReleaseAtCycles = [2,1];
+ let NumMicroOps = 2;
+ let ReleaseAtCycles = [2];
}
def: InstRW<[BWWriteResGroup33], (instrs MMX_PACKSSDWrr,
MMX_PACKSSWBrr,
diff --git a/llvm/lib/Target/X86/X86SchedHaswell.td b/llvm/lib/Target/X86/X86SchedHaswell.td
index 516dc62f1b6d5..c4d2ad7681c43 100644
--- a/llvm/lib/Target/X86/X86SchedHaswell.td
+++ b/llvm/lib/Target/X86/X86SchedHaswell.td
@@ -1247,10 +1247,10 @@ def: InstRW<[HWWriteResGroup53_1], (instrs VPMOVSXBWYrm,
VPMOVSXWDYrm,
VPMOVZXWDYrm)>;
-def HWWriteResGroup57 : SchedWriteRes<[HWPort5,HWPort0156]> {
+def HWWriteResGroup57 : SchedWriteRes<[HWPort5]> {
let Latency = 3;
- let NumMicroOps = 3;
- let ReleaseAtCycles = [2,1];
+ let NumMicroOps = 2;
+ let ReleaseAtCycles = [2];
}
def: InstRW<[HWWriteResGroup57], (instrs MMX_PACKSSDWrr,
MMX_PACKSSWBrr,
diff --git a/llvm/test/tools/llvm-mca/X86/Broadwell/resources-mmx.s b/llvm/test/tools/llvm-mca/X86/Broadwell/resources-mmx.s
index 69491f06d7914..53b9d22313bf5 100644
--- a/llvm/test/tools/llvm-mca/X86/Broadwell/resources-mmx.s
+++ b/llvm/test/tools/llvm-mca/X86/Broadwell/resources-mmx.s
@@ -173,11 +173,11 @@ pxor (%rax), %mm2
# CHECK-NEXT: 1 5 0.50 * movq (%rax), %mm2
# CHECK-NEXT: 1 1 1.00 movq %mm0, %rcx
# CHECK-NEXT: 2 1 1.00 * movq %mm0, (%rax)
-# CHECK-NEXT: 3 3 2.00 packsswb %mm0, %mm2
+# CHECK-NEXT: 2 3 2.00 packsswb %mm0, %mm2
# CHECK-NEXT: 3 7 2.00 * packsswb (%rax), %mm2
-# CHECK-NEXT: 3 3 2.00 packssdw %mm0, %mm2
+# CHECK-NEXT: 2 3 2.00 packssdw %mm0, %mm2
# CHECK-NEXT: 3 7 2.00 * packssdw (%rax), %mm2
-# CHECK-NEXT: 3 3 2.00 packuswb %mm0, %mm2
+# CHECK-NEXT: 2 3 2.00 packuswb %mm0, %mm2
# CHECK-NEXT: 3 7 2.00 * packuswb (%rax), %mm2
# CHECK-NEXT: 1 1 0.50 paddb %mm0, %mm2
# CHECK-NEXT: 2 6 0.50 * paddb (%rax), %mm2
@@ -284,7 +284,7 @@ pxor (%rax), %mm2
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
-# CHECK-NEXT: - - 46.67 35.17 23.67 23.67 2.00 57.17 1.00 0.67
+# CHECK-NEXT: - - 45.92 34.42 23.67 23.67 2.00 56.42 0.25 0.67
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
@@ -297,11 +297,11 @@ pxor (%rax), %mm2
# CHECK-NEXT: - - - - 0.50 0.50 - - - - movq (%rax), %mm2
# CHECK-NEXT: - - 1.00 - - - - - - - movq %mm0, %rcx
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 movq %mm0, (%rax)
-# CHECK-NEXT: - - 0.25 0.25 - - - 2.25 0.25 - packsswb %mm0, %mm2
+# CHECK-NEXT: - - - - - - - 2.00 - - packsswb %mm0, %mm2
# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - packsswb (%rax), %mm2
-# CHECK-NEXT: - - 0.25 0.25 - - - 2.25 0.25 - packssdw %mm0, %mm2
+# CHECK-NEXT: - - - - - - - 2.00 - - packssdw %mm0, %mm2
# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - packssdw (%rax), %mm2
-# CHECK-NEXT: - - 0.25 0.25 - - - 2.25 0.25 - packuswb %mm0, %mm2
+# CHECK-NEXT: - - - - - - - 2.00 - - packuswb %mm0, %mm2
# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - packuswb (%rax), %mm2
# CHECK-NEXT: - - - 0.50 - - - 0.50 - - paddb %mm0, %mm2
# CHECK-NEXT: - - - 0.50 0.50 0.50 - 0.50 - - paddb (%rax), %mm2
diff --git a/llvm/test/tools/llvm-mca/X86/Haswell/resources-mmx.s b/llvm/test/tools/llvm-mca/X86/Haswell/resources-mmx.s
index 5094dd1937fcc..01f516ad30410 100644
--- a/llvm/test/tools/llvm-mca/X86/Haswell/resources-mmx.s
+++ b/llvm/test/tools/llvm-mca/X86/Haswell/resources-mmx.s
@@ -173,11 +173,11 @@ pxor (%rax), %mm2
# CHECK-NEXT: 1 5 0.50 * movq (%rax), %mm2
# CHECK-NEXT: 1 1 1.00 movq %mm0, %rcx
# CHECK-NEXT: 2 1 1.00 * movq %mm0, (%rax)
-# CHECK-NEXT: 3 3 2.00 packsswb %mm0, %mm2
+# CHECK-NEXT: 2 3 2.00 packsswb %mm0, %mm2
# CHECK-NEXT: 3 7 2.00 * packsswb (%rax), %mm2
-# CHECK-NEXT: 3 3 2.00 packssdw %mm0, %mm2
+# CHECK-NEXT: 2 3 2.00 packssdw %mm0, %mm2
# CHECK-NEXT: 3 7 2.00 * packssdw (%rax), %mm2
-# CHECK-NEXT: 3 3 2.00 packuswb %mm0, %mm2
+# CHECK-NEXT: 2 3 2.00 packuswb %mm0, %mm2
# CHECK-NEXT: 3 7 2.00 * packuswb (%rax), %mm2
# CHECK-NEXT: 1 1 0.50 paddb %mm0, %mm2
# CHECK-NEXT: 2 6 0.50 * paddb (%rax), %mm2
@@ -284,7 +284,7 @@ pxor (%rax), %mm2
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
-# CHECK-NEXT: - - 46.67 35.17 23.67 23.67 2.00 57.17 1.00 0.67
+# CHECK-NEXT: - - 45.92 34.42 23.67 23.67 2.00 56.42 0.25 0.67
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
@@ -297,11 +297,11 @@ pxor (%rax), %mm2
# CHECK-NEXT: - - - - 0.50 0.50 - - - - movq (%rax), %mm2
# CHECK-NEXT: - - 1.00 - - - - - - - movq %mm0, %rcx
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 movq %mm0, (%rax)
-# CHECK-NEXT: - - 0.25 0.25 - - - 2.25 0.25 - packsswb %mm0, %mm2
+# CHECK-NEXT: - - - - - - - 2.00 - - packsswb %mm0, %mm2
# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - packsswb (%rax), %mm2
-# CHECK-NEXT: - - 0.25 0.25 - - - 2.25 0.25 - packssdw %mm0, %mm2
+# CHECK-NEXT: - - - - - - - 2.00 - - packssdw %mm0, %mm2
# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - packssdw (%rax), %mm2
-# CHECK-NEXT: - - 0.25 0.25 - - - 2.25 0.25 - packuswb %mm0, %mm2
+# CHECK-NEXT: - - - - - - - 2.00 - - packuswb %mm0, %mm2
# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - packuswb (%rax), %mm2
# CHECK-NEXT: - - - 0.50 - - - 0.50 - - paddb %mm0, %mm2
# CHECK-NEXT: - - - 0.50 0.50 0.50 - 0.50 - - paddb (%rax), %mm2
More information about the llvm-commits
mailing list