[X86] Update WriteMPSAD class and remove VMPSADBWrri override
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Sun, 13 Nov 2022 15:19:30 +0000 (15:19 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Sun, 13 Nov 2022 15:19:37 +0000 (15:19 +0000)
AMD 15h SoG + Agner both indicate there's no difference between MPSADBWrri + VMPSADBWrri - I can't find any data on the folded variant so I've kept the existing numbers

Removes the last X86 override for WriteMPSAD/WritePSADBW classes - removing a further 3 entries from every sched class table

llvm/lib/Target/X86/X86ScheduleBdVer2.td
llvm/test/tools/llvm-mca/X86/BdVer2/resources-avx1.s
llvm/test/tools/llvm-mca/X86/BdVer2/resources-sse41.s

index 6a91d18..184f4de 100644 (file)
@@ -1150,17 +1150,12 @@ def PdWriteVPMACS : SchedWriteRes<[PdFPU0, PdFPMMA, PdFPMAL]> {
 def : InstRW<[PdWriteVPMACS], (instrs VPMACSDQHrr, VPMACSDQLrr, VPMACSSDQHrr,
                                       VPMACSSDQLrr)>;
 
-defm : PdWriteResXMMPair<WriteMPSAD,         [PdFPU0, PdFPMMA], 9, [1, 4], 8>;
+// FIXME: Investigate RR vs RM differences.
+defm : PdWriteRes<WriteMPSAD,   [PdFPU0, PdFPMMA], 8, [1, 4], 8>;
+defm : PdWriteRes<WriteMPSADLd, [PdFPU0, PdFPMMA, PdLoad], 14, [1, 4, 3],  8>;
 defm : X86WriteResPairUnsupported<WriteMPSADY>;
 defm : X86WriteResPairUnsupported<WriteMPSADZ>;
 
-def PdWriteVMPSADBW : SchedWriteRes<[PdFPU0, PdFPMMA]> {
-  let Latency = 8;
-  let ResourceCycles = [1, 4];
-  let NumMicroOps = 10;
-}
-def : InstRW<[PdWriteVMPSADBW], (instrs VMPSADBWrri)>;
-
 defm : PdWriteResXMMPair<WritePSADBW,        [PdFPU01, PdFPMAL], 4, [1, 2], 2>;
 defm : PdWriteResXMMPair<WritePSADBWX,       [PdFPU01, PdFPMAL], 4, [1, 2], 2>;
 defm : X86WriteResPairUnsupported<WritePSADBWY>;
index 36f009d..f996def 100644 (file)
@@ -1337,7 +1337,7 @@ vzeroupper
 # CHECK-NEXT:  2      2     1.00                        vmovups        %ymm0, %ymm2
 # CHECK-NEXT:  8      1     1.00           *            vmovups        %ymm0, (%rax)
 # CHECK-NEXT:  2      5     1.50    *                   vmovups        (%rax), %ymm2
-# CHECK-NEXT:  10     8     4.00                        vmpsadbw       $1, %xmm0, %xmm1, %xmm2
+# CHECK-NEXT:       8     4.00                        vmpsadbw       $1, %xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  8      14    4.00    *                   vmpsadbw       $1, (%rax), %xmm1, %xmm2
 # CHECK-NEXT:  1      5     1.00                        vmulpd %xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  1      10    1.50    *                   vmulpd (%rax), %xmm1, %xmm2
index cb00ddd..aa1decc 100644 (file)
@@ -172,7 +172,7 @@ roundss     $1, (%rax), %xmm2
 # CHECK-NEXT:  1      2     1.00                        insertps       $1, %xmm0, %xmm2
 # CHECK-NEXT:  1      7     1.50    *                   insertps       $1, (%rax), %xmm2
 # CHECK-NEXT:  1      5     2.00    *                   movntdqa       (%rax), %xmm2
-# CHECK-NEXT:  8      9     4.00                        mpsadbw        $1, %xmm0, %xmm2
+# CHECK-NEXT:  8      8     4.00                        mpsadbw        $1, %xmm0, %xmm2
 # CHECK-NEXT:  8      14    4.00    *                   mpsadbw        $1, (%rax), %xmm2
 # CHECK-NEXT:  1      2     1.00                        packusdw       %xmm0, %xmm2
 # CHECK-NEXT:  1      7     1.50    *                   packusdw       (%rax), %xmm2