[X86] Remove unnecessary (V)?PBLENDW(Y)?rm overrides
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Mon, 28 Nov 2022 16:30:24 +0000 (16:30 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Mon, 28 Nov 2022 16:32:55 +0000 (16:32 +0000)
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

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

index 33e7065..a37065e 100644 (file)
@@ -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]> {
index 8a9e9b0..1b69bc9 100644 (file)
@@ -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]> {
index cfddb93..3914f86 100644 (file)
@@ -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
index a009766..93b601e 100644 (file)
@@ -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
index b78f2dc..d2cde7d 100644 (file)
@@ -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
index 736ed2f..37e2cf4 100644 (file)
@@ -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
index c94ea07..33d18b0 100644 (file)
@@ -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
index 5b84a17..0ff5d45 100644 (file)
@@ -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