[llvm] c65d5d4 - [X86] Remove unnecessary (V)?PBLENDW(Y)?rm overrides
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Mon Nov 28 08:33:00 PST 2022
Author: Simon Pilgrim
Date: 2022-11-28T16:32:55Z
New Revision: c65d5d4aecc3600bad963c5bf24f2c192b9a1c1a
URL: https://github.com/llvm/llvm-project/commit/c65d5d4aecc3600bad963c5bf24f2c192b9a1c1a
DIFF: https://github.com/llvm/llvm-project/commit/c65d5d4aecc3600bad963c5bf24f2c192b9a1c1a.diff
LOG: [X86] Remove unnecessary (V)?PBLENDW(Y)?rm overrides
The znver1/znver2 overrides shouldn't need 2uops for the xmm case (but znver1 should double-pump for the ymm case).
Found with the help of D138359
Added:
Modified:
llvm/lib/Target/X86/X86ScheduleZnver1.td
llvm/lib/Target/X86/X86ScheduleZnver2.td
llvm/test/tools/llvm-mca/X86/Znver1/resources-avx1.s
llvm/test/tools/llvm-mca/X86/Znver1/resources-avx2.s
llvm/test/tools/llvm-mca/X86/Znver1/resources-sse41.s
llvm/test/tools/llvm-mca/X86/Znver2/resources-avx1.s
llvm/test/tools/llvm-mca/X86/Znver2/resources-avx2.s
llvm/test/tools/llvm-mca/X86/Znver2/resources-sse41.s
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86ScheduleZnver1.td b/llvm/lib/Target/X86/X86ScheduleZnver1.td
index 33e70651a9c4..a37065ef3602 100644
--- a/llvm/lib/Target/X86/X86ScheduleZnver1.td
+++ b/llvm/lib/Target/X86/X86ScheduleZnver1.td
@@ -938,27 +938,10 @@ def : InstRW<[WriteMicrocoded], (instrs FNINIT)>;
//=== Integer MMX and XMM Instructions ===//
def ZnWriteFPU013 : SchedWriteRes<[ZnFPU013]> ;
-def ZnWriteFPU013Y : SchedWriteRes<[ZnFPU013]> {
- let Latency = 2;
-}
def ZnWriteFPU013m : SchedWriteRes<[ZnAGU, ZnFPU013]> {
let Latency = 8;
let NumMicroOps = 2;
}
-def ZnWriteFPU013Ld : SchedWriteRes<[ZnAGU, ZnFPU013]> {
- let Latency = 8;
- let NumMicroOps = 2;
-}
-def ZnWriteFPU013LdY : SchedWriteRes<[ZnAGU, ZnFPU013]> {
- let Latency = 9;
- let NumMicroOps = 2;
-}
-
-// PBLENDW.
-// x,m,i / v,v,m,i
-def : InstRW<[ZnWriteFPU013Ld], (instregex "(V?)PBLENDWrmi")>;
-// y,m,i
-def : InstRW<[ZnWriteFPU013LdY], (instrs VPBLENDWYrmi)>;
def ZnWriteFPU01 : SchedWriteRes<[ZnFPU01]> ;
def ZnWriteFPU01Y : SchedWriteRes<[ZnFPU01]> {
diff --git a/llvm/lib/Target/X86/X86ScheduleZnver2.td b/llvm/lib/Target/X86/X86ScheduleZnver2.td
index 8a9e9b0d019e..1b69bc9c5594 100644
--- a/llvm/lib/Target/X86/X86ScheduleZnver2.td
+++ b/llvm/lib/Target/X86/X86ScheduleZnver2.td
@@ -948,25 +948,10 @@ def : InstRW<[WriteMicrocoded], (instrs FNINIT)>;
//=== Integer MMX and XMM Instructions ===//
def Zn2WriteFPU013 : SchedWriteRes<[Zn2FPU013]> ;
-def Zn2WriteFPU013Y : SchedWriteRes<[Zn2FPU013]> ;
def Zn2WriteFPU013m : SchedWriteRes<[Zn2AGU, Zn2FPU013]> {
let Latency = 8;
let NumMicroOps = 2;
}
-def Zn2WriteFPU013Ld : SchedWriteRes<[Zn2AGU, Zn2FPU013]> {
- let Latency = 8;
- let NumMicroOps = 2;
-}
-def Zn2WriteFPU013LdY : SchedWriteRes<[Zn2AGU, Zn2FPU013]> {
- let Latency = 8;
- let NumMicroOps = 2;
-}
-
-// PBLENDW.
-// x,m,i / v,v,m,i
-def : InstRW<[Zn2WriteFPU013Ld], (instregex "(V?)PBLENDWrmi")>;
-// y,m,i
-def : InstRW<[Zn2WriteFPU013LdY], (instrs VPBLENDWYrmi)>;
def Zn2WriteFPU01 : SchedWriteRes<[Zn2FPU01]> ;
def Zn2WriteFPU01Y : SchedWriteRes<[Zn2FPU01]> {
diff --git a/llvm/test/tools/llvm-mca/X86/Znver1/resources-avx1.s b/llvm/test/tools/llvm-mca/X86/Znver1/resources-avx1.s
index cfddb93e5d98..3914f8650892 100644
--- a/llvm/test/tools/llvm-mca/X86/Znver1/resources-avx1.s
+++ b/llvm/test/tools/llvm-mca/X86/Znver1/resources-avx1.s
@@ -1402,7 +1402,7 @@ vzeroupper
# CHECK-NEXT: 1 1 1.00 vpblendvb %xmm3, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 8 1.00 * vpblendvb %xmm3, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 1 0.33 vpblendw $11, %xmm0, %xmm1, %xmm2
-# CHECK-NEXT: 2 8 0.50 * vpblendw $11, (%rax), %xmm1, %xmm2
+# CHECK-NEXT: 1 8 0.50 * vpblendw $11, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 100 0.25 vpclmulqdq $11, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 100 0.25 * vpclmulqdq $11, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 1 0.33 vpcmpeqb %xmm0, %xmm1, %xmm2
diff --git a/llvm/test/tools/llvm-mca/X86/Znver1/resources-avx2.s b/llvm/test/tools/llvm-mca/X86/Znver1/resources-avx2.s
index a0097665cf2c..93b601e9285f 100644
--- a/llvm/test/tools/llvm-mca/X86/Znver1/resources-avx2.s
+++ b/llvm/test/tools/llvm-mca/X86/Znver1/resources-avx2.s
@@ -525,7 +525,7 @@ vpxor (%rax), %ymm1, %ymm2
# CHECK-NEXT: 2 1 2.00 vpblendvb %ymm3, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 8 2.00 * vpblendvb %ymm3, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 2 1 0.67 vpblendw $11, %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: 2 9 0.50 * vpblendw $11, (%rax), %ymm1, %ymm2
+# CHECK-NEXT: 2 8 0.67 * vpblendw $11, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 1 0.50 vpbroadcastb %xmm0, %xmm0
# CHECK-NEXT: 2 8 1.00 * vpbroadcastb (%rax), %xmm0
# CHECK-NEXT: 2 2 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: 66.50 66.50 - - - - - 119.83 238.83 158.00 66.33 -
+# CHECK-NEXT: 66.50 66.50 - - - - - 120.17 239.17 158.00 66.67 -
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -847,7 +847,7 @@ vpxor (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - - - - - 2.00 - - - - vpblendvb %ymm3, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 0.50 0.50 - - - - - 2.00 - - - - vpblendvb %ymm3, (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - - - - - 0.67 0.67 - 0.67 - vpblendw $11, %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: 0.50 0.50 - - - - - 0.33 0.33 - 0.33 - vpblendw $11, (%rax), %ymm1, %ymm2
+# CHECK-NEXT: 0.50 0.50 - - - - - 0.67 0.67 - 0.67 - vpblendw $11, (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - vpbroadcastb %xmm0, %xmm0
# CHECK-NEXT: 0.50 0.50 - - - - - - 1.00 1.00 - - vpbroadcastb (%rax), %xmm0
# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - vpbroadcastb %xmm0, %ymm0
diff --git a/llvm/test/tools/llvm-mca/X86/Znver1/resources-sse41.s b/llvm/test/tools/llvm-mca/X86/Znver1/resources-sse41.s
index b78f2dcedb49..d2cde7d61730 100644
--- a/llvm/test/tools/llvm-mca/X86/Znver1/resources-sse41.s
+++ b/llvm/test/tools/llvm-mca/X86/Znver1/resources-sse41.s
@@ -179,7 +179,7 @@ roundss $1, (%rax), %xmm2
# CHECK-NEXT: 1 1 1.00 pblendvb %xmm0, %xmm0, %xmm2
# CHECK-NEXT: 1 8 1.00 * pblendvb %xmm0, (%rax), %xmm2
# CHECK-NEXT: 1 1 0.33 pblendw $11, %xmm0, %xmm2
-# CHECK-NEXT: 2 8 0.50 * pblendw $11, (%rax), %xmm2
+# CHECK-NEXT: 1 8 0.50 * pblendw $11, (%rax), %xmm2
# CHECK-NEXT: 1 1 0.33 pcmpeqq %xmm0, %xmm2
# CHECK-NEXT: 1 8 0.50 * pcmpeqq (%rax), %xmm2
# CHECK-NEXT: 1 2 2.00 pextrb $1, %xmm0, %ecx
diff --git a/llvm/test/tools/llvm-mca/X86/Znver2/resources-avx1.s b/llvm/test/tools/llvm-mca/X86/Znver2/resources-avx1.s
index 736ed2f5dddf..37e2cf4500c3 100644
--- a/llvm/test/tools/llvm-mca/X86/Znver2/resources-avx1.s
+++ b/llvm/test/tools/llvm-mca/X86/Znver2/resources-avx1.s
@@ -1402,7 +1402,7 @@ vzeroupper
# CHECK-NEXT: 1 1 1.00 vpblendvb %xmm3, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 8 1.00 * vpblendvb %xmm3, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 1 0.33 vpblendw $11, %xmm0, %xmm1, %xmm2
-# CHECK-NEXT: 2 8 0.33 * vpblendw $11, (%rax), %xmm1, %xmm2
+# CHECK-NEXT: 1 8 0.33 * vpblendw $11, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 100 0.25 vpclmulqdq $11, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 100 0.25 * vpclmulqdq $11, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 1 0.33 vpcmpeqb %xmm0, %xmm1, %xmm2
diff --git a/llvm/test/tools/llvm-mca/X86/Znver2/resources-avx2.s b/llvm/test/tools/llvm-mca/X86/Znver2/resources-avx2.s
index c94ea07befb6..33d18b0fa0fb 100644
--- a/llvm/test/tools/llvm-mca/X86/Znver2/resources-avx2.s
+++ b/llvm/test/tools/llvm-mca/X86/Znver2/resources-avx2.s
@@ -525,7 +525,7 @@ vpxor (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 1 1.00 vpblendvb %ymm3, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 1 8 1.00 * vpblendvb %ymm3, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 1 0.33 vpblendw $11, %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: 2 8 0.33 * vpblendw $11, (%rax), %ymm1, %ymm2
+# CHECK-NEXT: 1 8 0.33 * vpblendw $11, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 1 0.50 vpbroadcastb %xmm0, %xmm0
# CHECK-NEXT: 2 8 1.00 * vpbroadcastb (%rax), %xmm0
# CHECK-NEXT: 1 2 0.50 vpbroadcastb %xmm0, %ymm0
diff --git a/llvm/test/tools/llvm-mca/X86/Znver2/resources-sse41.s b/llvm/test/tools/llvm-mca/X86/Znver2/resources-sse41.s
index 5b84a17955f3..0ff5d4539511 100644
--- a/llvm/test/tools/llvm-mca/X86/Znver2/resources-sse41.s
+++ b/llvm/test/tools/llvm-mca/X86/Znver2/resources-sse41.s
@@ -179,7 +179,7 @@ roundss $1, (%rax), %xmm2
# CHECK-NEXT: 1 1 1.00 pblendvb %xmm0, %xmm0, %xmm2
# CHECK-NEXT: 1 8 1.00 * pblendvb %xmm0, (%rax), %xmm2
# CHECK-NEXT: 1 1 0.33 pblendw $11, %xmm0, %xmm2
-# CHECK-NEXT: 2 8 0.33 * pblendw $11, (%rax), %xmm2
+# CHECK-NEXT: 1 8 0.33 * pblendw $11, (%rax), %xmm2
# CHECK-NEXT: 1 1 0.33 pcmpeqq %xmm0, %xmm2
# CHECK-NEXT: 1 8 0.33 * pcmpeqq (%rax), %xmm2
# CHECK-NEXT: 1 2 2.00 pextrb $1, %xmm0, %ecx
More information about the llvm-commits
mailing list