[X86] Remove unnecessary VBLENDWYrr overrides
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Sun, 27 Nov 2022 16:54:39 +0000 (16:54 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Sun, 27 Nov 2022 16:54:47 +0000 (16:54 +0000)
The znver2 override already matched the WriteBlendY class exactly, and the znver1 override wasn't accounting for ymm double-pumping.

Found with the help of D138359

llvm/lib/Target/X86/X86ScheduleZnver1.td
llvm/lib/Target/X86/X86ScheduleZnver2.td
llvm/test/tools/llvm-mca/X86/Znver1/resources-avx2.s

index 3de6833..33e7065 100644 (file)
@@ -955,9 +955,6 @@ def ZnWriteFPU013LdY : SchedWriteRes<[ZnAGU, ZnFPU013]> {
 }
 
 // PBLENDW.
-// ymm
-def : InstRW<[ZnWriteFPU013Y], (instrs VPBLENDWYrri)>;
-
 // x,m,i / v,v,m,i
 def : InstRW<[ZnWriteFPU013Ld], (instregex "(V?)PBLENDWrmi")>;
 // y,m,i
index ae1a1d1..8a9e9b0 100644 (file)
@@ -963,9 +963,6 @@ def Zn2WriteFPU013LdY : SchedWriteRes<[Zn2AGU, Zn2FPU013]> {
 }
 
 // PBLENDW.
-// ymm
-def : InstRW<[Zn2WriteFPU013Y], (instrs VPBLENDWYrri)>;
-
 // x,m,i / v,v,m,i
 def : InstRW<[Zn2WriteFPU013Ld], (instregex "(V?)PBLENDWrmi")>;
 // y,m,i
index cca125f..a009766 100644 (file)
@@ -524,7 +524,7 @@ vpxor           (%rax), %ymm1, %ymm2
 # CHECK-NEXT:  2      9     1.50    *                   vpblendd       $11, (%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:  1      2     0.33                        vpblendw       $11, %ymm0, %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:  1      1     0.50                        vpbroadcastb   %xmm0, %xmm0
 # CHECK-NEXT:  2      8     1.00    *                   vpbroadcastb   (%rax), %xmm0
@@ -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.50 238.50 158.00 66.00   -
+# CHECK-NEXT: 66.50  66.50   -      -      -      -      -     119.83 238.83 158.00 66.33   -
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   Instructions:
@@ -846,7 +846,7 @@ vpxor           (%rax), %ymm1, %ymm2
 # CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.50   1.50    -      -      -     vpblendd     $11, (%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.33   0.33    -     0.33    -     vpblendw     $11, %ymm0, %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    -      -     vpbroadcastb %xmm0, %xmm0
 # CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -     1.00   1.00    -      -     vpbroadcastb (%rax), %xmm0