[llvm] ce68327 - [X86] PBLENDW instructions can run on Port1 or Port5
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Fri Mar 8 07:11:10 PST 2024
Author: Simon Pilgrim
Date: 2024-03-08T15:10:47Z
New Revision: ce683273aa3dbdd7bce2168c29b1a7652ce73608
URL: https://github.com/llvm/llvm-project/commit/ce683273aa3dbdd7bce2168c29b1a7652ce73608
DIFF: https://github.com/llvm/llvm-project/commit/ce683273aa3dbdd7bce2168c29b1a7652ce73608.diff
LOG: [X86] PBLENDW instructions can run on Port1 or Port5
When we copied the SkylakeServer model we missed this diff
Confirmed with uops.info and Agner
Added:
Modified:
llvm/lib/Target/X86/X86SchedIceLake.td
llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx1.s
llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx2.s
llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse41.s
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86SchedIceLake.td b/llvm/lib/Target/X86/X86SchedIceLake.td
index 3144327670c763..c9ae9901ed5b8e 100644
--- a/llvm/lib/Target/X86/X86SchedIceLake.td
+++ b/llvm/lib/Target/X86/X86SchedIceLake.td
@@ -396,9 +396,9 @@ defm : ICXWriteResPair<WriteVarShuffle, [ICXPort5], 1, [1], 1, 5>; // Vector v
defm : ICXWriteResPair<WriteVarShuffleX, [ICXPort15], 1, [1], 1, 6>;
defm : ICXWriteResPair<WriteVarShuffleY, [ICXPort15], 1, [1], 1, 7>;
defm : ICXWriteResPair<WriteVarShuffleZ, [ICXPort5], 1, [1], 1, 7>;
-defm : ICXWriteResPair<WriteBlend, [ICXPort5], 1, [1], 1, 6>; // Vector blends.
-defm : ICXWriteResPair<WriteBlendY,[ICXPort5], 1, [1], 1, 7>;
-defm : ICXWriteResPair<WriteBlendZ,[ICXPort5], 1, [1], 1, 7>;
+defm : ICXWriteResPair<WriteBlend, [ICXPort15], 1, [1], 1, 6>; // Vector blends.
+defm : ICXWriteResPair<WriteBlendY,[ICXPort15], 1, [1], 1, 7>;
+defm : ICXWriteResPair<WriteBlendZ,[ICXPort15], 1, [1], 1, 7>;
defm : ICXWriteResPair<WriteVarBlend, [ICXPort015], 2, [2], 2, 6>; // Vector variable blends.
defm : ICXWriteResPair<WriteVarBlendY,[ICXPort015], 2, [2], 2, 6>;
defm : ICXWriteResPair<WriteVarBlendZ,[ICXPort05], 2, [1], 1, 6>;
diff --git a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx1.s b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx1.s
index ad7bc8d27e2159..e467c4e48ebd21 100644
--- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx1.s
+++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx1.s
@@ -1401,8 +1401,8 @@ vzeroupper
# CHECK-NEXT: 2 7 0.50 * vpavgw (%rax), %xmm1, %xmm2
# CHECK-NEXT: 2 2 0.67 vpblendvb %xmm3, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 3 8 0.67 * vpblendvb %xmm3, (%rax), %xmm1, %xmm2
-# CHECK-NEXT: 1 1 1.00 vpblendw $11, %xmm0, %xmm1, %xmm2
-# CHECK-NEXT: 2 7 1.00 * vpblendw $11, (%rax), %xmm1, %xmm2
+# CHECK-NEXT: 1 1 0.50 vpblendw $11, %xmm0, %xmm1, %xmm2
+# CHECK-NEXT: 2 7 0.50 * vpblendw $11, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 6 1.00 vpclmulqdq $11, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 12 1.00 * vpclmulqdq $11, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 1 0.50 vpcmpeqb %xmm0, %xmm1, %xmm2
@@ -1738,7 +1738,7 @@ vzeroupper
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
-# CHECK-NEXT: - 126.00 322.92 231.92 160.50 160.50 19.00 297.92 6.25 19.00 19.00 19.00
+# CHECK-NEXT: - 126.00 322.92 232.92 160.50 160.50 19.00 296.92 6.25 19.00 19.00 19.00
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -2113,8 +2113,8 @@ vzeroupper
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - - - vpavgw (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - 0.67 0.67 - - - 0.67 - - - - vpblendvb %xmm3, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - 0.67 0.67 0.50 0.50 - 0.67 - - - - vpblendvb %xmm3, (%rax), %xmm1, %xmm2
-# CHECK-NEXT: - - - - - - - 1.00 - - - - vpblendw $11, %xmm0, %xmm1, %xmm2
-# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpblendw $11, (%rax), %xmm1, %xmm2
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vpblendw $11, %xmm0, %xmm1, %xmm2
+# CHECK-NEXT: - - - 0.50 0.50 0.50 - 0.50 - - - - vpblendw $11, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - vpclmulqdq $11, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpclmulqdq $11, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - - - vpcmpeqb %xmm0, %xmm1, %xmm2
diff --git a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx2.s b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx2.s
index e65504f79ff1a9..97f0d052f45520 100644
--- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx2.s
+++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx2.s
@@ -524,8 +524,8 @@ vpxor (%rax), %ymm1, %ymm2
# CHECK-NEXT: 2 8 0.50 * vpblendd $11, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 2 2 0.67 vpblendvb %ymm3, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 3 8 0.67 * vpblendvb %ymm3, (%rax), %ymm1, %ymm2
-# CHECK-NEXT: 1 1 1.00 vpblendw $11, %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: 2 8 1.00 * vpblendw $11, (%rax), %ymm1, %ymm2
+# CHECK-NEXT: 1 1 0.50 vpblendw $11, %ymm0, %ymm1, %ymm2
+# CHECK-NEXT: 2 8 0.50 * vpblendw $11, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vpbroadcastb %xmm0, %xmm0
# CHECK-NEXT: 2 7 1.00 * vpbroadcastb (%rax), %xmm0
# CHECK-NEXT: 1 3 1.00 vpbroadcastb %xmm0, %ymm0
@@ -778,7 +778,7 @@ vpxor (%rax), %ymm1, %ymm2
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
-# CHECK-NEXT: - - 110.33 102.33 98.00 98.00 2.50 151.33 - 2.50 2.50 2.50
+# CHECK-NEXT: - - 110.33 103.33 98.00 98.00 2.50 150.33 - 2.50 2.50 2.50
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -846,8 +846,8 @@ vpxor (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vpblendd $11, (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - 0.67 0.67 - - - 0.67 - - - - vpblendvb %ymm3, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - 0.67 0.67 0.50 0.50 - 0.67 - - - - vpblendvb %ymm3, (%rax), %ymm1, %ymm2
-# CHECK-NEXT: - - - - - - - 1.00 - - - - vpblendw $11, %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpblendw $11, (%rax), %ymm1, %ymm2
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vpblendw $11, %ymm0, %ymm1, %ymm2
+# CHECK-NEXT: - - - 0.50 0.50 0.50 - 0.50 - - - - vpblendw $11, (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastb %xmm0, %xmm0
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpbroadcastb (%rax), %xmm0
# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastb %xmm0, %ymm0
diff --git a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse41.s b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse41.s
index 4b4c6b90541a38..554d7aad54bad2 100644
--- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse41.s
+++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse41.s
@@ -178,8 +178,8 @@ roundss $1, (%rax), %xmm2
# CHECK-NEXT: 2 10 1.00 * packusdw (%rax), %xmm2
# CHECK-NEXT: 2 2 0.67 pblendvb %xmm0, %xmm0, %xmm2
# CHECK-NEXT: 3 8 0.67 * pblendvb %xmm0, (%rax), %xmm2
-# CHECK-NEXT: 1 1 1.00 pblendw $11, %xmm0, %xmm2
-# CHECK-NEXT: 2 7 1.00 * pblendw $11, (%rax), %xmm2
+# CHECK-NEXT: 1 1 0.50 pblendw $11, %xmm0, %xmm2
+# CHECK-NEXT: 2 7 0.50 * pblendw $11, (%rax), %xmm2
# CHECK-NEXT: 1 1 0.50 pcmpeqq %xmm0, %xmm2
# CHECK-NEXT: 2 7 0.50 * pcmpeqq (%rax), %xmm2
# CHECK-NEXT: 2 3 1.00 pextrb $1, %xmm0, %ecx
@@ -268,7 +268,7 @@ roundss $1, (%rax), %xmm2
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
-# CHECK-NEXT: - - 36.67 40.67 22.00 22.00 2.50 54.67 - 2.50 2.50 2.50
+# CHECK-NEXT: - - 36.67 41.67 22.00 22.00 2.50 53.67 - 2.50 2.50 2.50
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -295,8 +295,8 @@ roundss $1, (%rax), %xmm2
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - packusdw (%rax), %xmm2
# CHECK-NEXT: - - 0.67 0.67 - - - 0.67 - - - - pblendvb %xmm0, %xmm0, %xmm2
# CHECK-NEXT: - - 0.67 0.67 0.50 0.50 - 0.67 - - - - pblendvb %xmm0, (%rax), %xmm2
-# CHECK-NEXT: - - - - - - - 1.00 - - - - pblendw $11, %xmm0, %xmm2
-# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - pblendw $11, (%rax), %xmm2
+# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - pblendw $11, %xmm0, %xmm2
+# CHECK-NEXT: - - - 0.50 0.50 0.50 - 0.50 - - - - pblendw $11, (%rax), %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - - - pcmpeqq %xmm0, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - - - pcmpeqq (%rax), %xmm2
# CHECK-NEXT: - - 1.00 - - - - 1.00 - - - - pextrb $1, %xmm0, %ecx
More information about the llvm-commits
mailing list