[X86] Adjust vector fp test costs to match int test costs
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Mon, 30 May 2022 08:50:08 +0000 (09:50 +0100)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Mon, 30 May 2022 08:50:15 +0000 (09:50 +0100)
znver1/2 models were missing the vtestps/pd overrides to match the vptest integer equivalents.

Noticed while investigating Issue #54889

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/Znver2/resources-avx1.s

index 041d224..bfa5a14 100644 (file)
@@ -334,8 +334,8 @@ defm : X86WriteResPairUnsupported<WriteFRndZ>;
 defm : ZnWriteResFpuPair<WriteFLogic,    [ZnFPU],   1>;
 defm : ZnWriteResFpuPair<WriteFLogicY,   [ZnFPU],   1>;
 defm : X86WriteResPairUnsupported<WriteFLogicZ>;
-defm : ZnWriteResFpuPair<WriteFTest,     [ZnFPU],   1>;
-defm : ZnWriteResFpuPair<WriteFTestY,    [ZnFPU],   1>;
+defm : ZnWriteResFpuPair<WriteFTest,     [ZnFPU12], 1, [2], 1, 7, 1>;
+defm : ZnWriteResFpuPair<WriteFTestY,    [ZnFPU12], 1, [2], 1, 7, 1>;
 defm : X86WriteResPairUnsupported<WriteFTestZ>;
 defm : ZnWriteResFpuPair<WriteFShuffle,  [ZnFPU12], 1>;
 defm : ZnWriteResFpuPair<WriteFShuffleY, [ZnFPU12], 1>;
index 7805a5d..7a98b94 100644 (file)
@@ -331,8 +331,8 @@ defm : X86WriteResPairUnsupported<WriteFRndZ>;
 defm : Zn2WriteResFpuPair<WriteFLogic,    [Zn2FPU],   1>;
 defm : Zn2WriteResFpuPair<WriteFLogicY,   [Zn2FPU],   1>;
 defm : X86WriteResPairUnsupported<WriteFLogicZ>;
-defm : Zn2WriteResFpuPair<WriteFTest,     [Zn2FPU],   1>;
-defm : Zn2WriteResFpuPair<WriteFTestY,    [Zn2FPU],   1>;
+defm : Zn2WriteResFpuPair<WriteFTest,     [Zn2FPU12], 1, [2], 1, 7, 1>;
+defm : Zn2WriteResFpuPair<WriteFTestY,    [Zn2FPU12], 1, [2], 1, 7, 1>;
 defm : X86WriteResPairUnsupported<WriteFTestZ>;
 defm : Zn2WriteResFpuPair<WriteFShuffle,  [Zn2FPU12], 1>;
 defm : Zn2WriteResFpuPair<WriteFShuffleY, [Zn2FPU12], 1>;
index 7b67829..905fbe0 100644 (file)
@@ -1683,14 +1683,14 @@ vzeroupper
 # CHECK-NEXT:  1      10    0.50    *                   vsubsd (%rax), %xmm1, %xmm2
 # CHECK-NEXT:  1      3     0.50                        vsubss %xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  1      10    0.50    *                   vsubss (%rax), %xmm1, %xmm2
-# CHECK-NEXT:  1      1     0.25                        vtestpd        %xmm0, %xmm1
-# CHECK-NEXT:  1      8     0.50    *                   vtestpd        (%rax), %xmm1
-# CHECK-NEXT:  1      1     0.25                        vtestpd        %ymm0, %ymm1
-# CHECK-NEXT:  1      8     0.50    *                   vtestpd        (%rax), %ymm1
-# CHECK-NEXT:  1      1     0.25                        vtestps        %xmm0, %xmm1
-# CHECK-NEXT:  1      8     0.50    *                   vtestps        (%rax), %xmm1
-# CHECK-NEXT:  1      1     0.25                        vtestps        %ymm0, %ymm1
-# CHECK-NEXT:  1      8     0.50    *                   vtestps        (%rax), %ymm1
+# CHECK-NEXT:  1      1     1.00                        vtestpd        %xmm0, %xmm1
+# CHECK-NEXT:  2      8     1.00    *                   vtestpd        (%rax), %xmm1
+# CHECK-NEXT:  1      1     1.00                        vtestpd        %ymm0, %ymm1
+# CHECK-NEXT:  2      8     1.00    *                   vtestpd        (%rax), %ymm1
+# CHECK-NEXT:  1      1     1.00                        vtestps        %xmm0, %xmm1
+# CHECK-NEXT:  2      8     1.00    *                   vtestps        (%rax), %xmm1
+# CHECK-NEXT:  1      1     1.00                        vtestps        %ymm0, %ymm1
+# CHECK-NEXT:  2      8     1.00    *                   vtestps        (%rax), %ymm1
 # CHECK-NEXT:  2      3     1.00                        vucomisd       %xmm0, %xmm1
 # CHECK-NEXT:  2      10    1.00    *                   vucomisd       (%rax), %xmm1
 # CHECK-NEXT:  2      3     1.00                        vucomiss       %xmm0, %xmm1
@@ -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: 175.00 175.00  -      -      -      -      -     144.58 169.08 204.25 525.08  -
+# CHECK-NEXT: 175.00 175.00  -      -      -      -      -     142.58 175.08 210.25 523.08  -
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   Instructions:
@@ -2395,14 +2395,14 @@ vzeroupper
 # CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -     0.50   0.50    -     vsubsd       (%rax), %xmm1, %xmm2
 # CHECK-NEXT:  -      -      -      -      -      -      -      -      -     0.50   0.50    -     vsubss       %xmm0, %xmm1, %xmm2
 # CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -     0.50   0.50    -     vsubss       (%rax), %xmm1, %xmm2
-# CHECK-NEXT:  -      -      -      -      -      -      -     0.25   0.25   0.25   0.25    -     vtestpd      %xmm0, %xmm1
-# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     0.25   0.25   0.25   0.25    -     vtestpd      (%rax), %xmm1
-# CHECK-NEXT:  -      -      -      -      -      -      -     0.25   0.25   0.25   0.25    -     vtestpd      %ymm0, %ymm1
-# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     0.25   0.25   0.25   0.25    -     vtestpd      (%rax), %ymm1
-# CHECK-NEXT:  -      -      -      -      -      -      -     0.25   0.25   0.25   0.25    -     vtestps      %xmm0, %xmm1
-# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     0.25   0.25   0.25   0.25    -     vtestps      (%rax), %xmm1
-# CHECK-NEXT:  -      -      -      -      -      -      -     0.25   0.25   0.25   0.25    -     vtestps      %ymm0, %ymm1
-# CHECK-NEXT: 0.50   0.50    -      -      -      -      -     0.25   0.25   0.25   0.25    -     vtestps      (%rax), %ymm1
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00   1.00    -      -     vtestpd      %xmm0, %xmm1
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -     1.00   1.00    -      -     vtestpd      (%rax), %xmm1
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00   1.00    -      -     vtestpd      %ymm0, %ymm1
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -     1.00   1.00    -      -     vtestpd      (%rax), %ymm1
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00   1.00    -      -     vtestps      %xmm0, %xmm1
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -     1.00   1.00    -      -     vtestps      (%rax), %xmm1
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     1.00   1.00    -      -     vtestps      %ymm0, %ymm1
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -     1.00   1.00    -      -     vtestps      (%rax), %ymm1
 # CHECK-NEXT:  -      -      -      -      -      -      -     0.50   0.50   1.00    -      -     vucomisd     %xmm0, %xmm1
 # CHECK-NEXT: 0.50   0.50    -      -      -      -      -     0.50   0.50   1.00    -      -     vucomisd     (%rax), %xmm1
 # CHECK-NEXT:  -      -      -      -      -      -      -     0.50   0.50   1.00    -      -     vucomiss     %xmm0, %xmm1
index 0ccc021..755a754 100644 (file)
@@ -1683,14 +1683,14 @@ vzeroupper
 # CHECK-NEXT:  1      10    0.50    *                   vsubsd (%rax), %xmm1, %xmm2
 # CHECK-NEXT:  1      3     0.50                        vsubss %xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  1      10    0.50    *                   vsubss (%rax), %xmm1, %xmm2
-# CHECK-NEXT:  1      1     0.25                        vtestpd        %xmm0, %xmm1
-# CHECK-NEXT:  1      8     0.33    *                   vtestpd        (%rax), %xmm1
-# CHECK-NEXT:  1      1     0.25                        vtestpd        %ymm0, %ymm1
-# CHECK-NEXT:  1      8     0.33    *                   vtestpd        (%rax), %ymm1
-# CHECK-NEXT:  1      1     0.25                        vtestps        %xmm0, %xmm1
-# CHECK-NEXT:  1      8     0.33    *                   vtestps        (%rax), %xmm1
-# CHECK-NEXT:  1      1     0.25                        vtestps        %ymm0, %ymm1
-# CHECK-NEXT:  1      8     0.33    *                   vtestps        (%rax), %ymm1
+# CHECK-NEXT:  1      1     1.00                        vtestpd        %xmm0, %xmm1
+# CHECK-NEXT:  2      8     1.00    *                   vtestpd        (%rax), %xmm1
+# CHECK-NEXT:  1      1     1.00                        vtestpd        %ymm0, %ymm1
+# CHECK-NEXT:  2      8     1.00    *                   vtestpd        (%rax), %ymm1
+# CHECK-NEXT:  1      1     1.00                        vtestps        %xmm0, %xmm1
+# CHECK-NEXT:  2      8     1.00    *                   vtestps        (%rax), %xmm1
+# CHECK-NEXT:  1      1     1.00                        vtestps        %ymm0, %ymm1
+# CHECK-NEXT:  2      8     1.00    *                   vtestps        (%rax), %ymm1
 # CHECK-NEXT:  2      3     1.00                        vucomisd       %xmm0, %xmm1
 # CHECK-NEXT:  2      10    1.00    *                   vucomisd       (%rax), %xmm1
 # CHECK-NEXT:  2      3     1.00                        vucomiss       %xmm0, %xmm1
@@ -1739,7 +1739,7 @@ vzeroupper
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]
-# CHECK-NEXT: 117.00 117.00 117.00 0.25   0.25   0.25   0.25    -     135.92 163.42 200.25 469.42  -
+# CHECK-NEXT: 117.00 117.00 117.00 0.25   0.25   0.25   0.25    -     133.92 169.42 206.25 467.42  -
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]   Instructions:
@@ -2396,14 +2396,14 @@ vzeroupper
 # CHECK-NEXT: 0.33   0.33   0.33    -      -      -      -      -      -      -     0.50   0.50    -     vsubsd        (%rax), %xmm1, %xmm2
 # CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     0.50   0.50    -     vsubss        %xmm0, %xmm1, %xmm2
 # CHECK-NEXT: 0.33   0.33   0.33    -      -      -      -      -      -      -     0.50   0.50    -     vsubss        (%rax), %xmm1, %xmm2
-# CHECK-NEXT:  -      -      -      -      -      -      -      -     0.25   0.25   0.25   0.25    -     vtestpd       %xmm0, %xmm1
-# CHECK-NEXT: 0.33   0.33   0.33    -      -      -      -      -     0.25   0.25   0.25   0.25    -     vtestpd       (%rax), %xmm1
-# CHECK-NEXT:  -      -      -      -      -      -      -      -     0.25   0.25   0.25   0.25    -     vtestpd       %ymm0, %ymm1
-# CHECK-NEXT: 0.33   0.33   0.33    -      -      -      -      -     0.25   0.25   0.25   0.25    -     vtestpd       (%rax), %ymm1
-# CHECK-NEXT:  -      -      -      -      -      -      -      -     0.25   0.25   0.25   0.25    -     vtestps       %xmm0, %xmm1
-# CHECK-NEXT: 0.33   0.33   0.33    -      -      -      -      -     0.25   0.25   0.25   0.25    -     vtestps       (%rax), %xmm1
-# CHECK-NEXT:  -      -      -      -      -      -      -      -     0.25   0.25   0.25   0.25    -     vtestps       %ymm0, %ymm1
-# CHECK-NEXT: 0.33   0.33   0.33    -      -      -      -      -     0.25   0.25   0.25   0.25    -     vtestps       (%rax), %ymm1
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00   1.00    -      -     vtestpd       %xmm0, %xmm1
+# CHECK-NEXT: 0.33   0.33   0.33    -      -      -      -      -      -     1.00   1.00    -      -     vtestpd       (%rax), %xmm1
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00   1.00    -      -     vtestpd       %ymm0, %ymm1
+# CHECK-NEXT: 0.33   0.33   0.33    -      -      -      -      -      -     1.00   1.00    -      -     vtestpd       (%rax), %ymm1
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00   1.00    -      -     vtestps       %xmm0, %xmm1
+# CHECK-NEXT: 0.33   0.33   0.33    -      -      -      -      -      -     1.00   1.00    -      -     vtestps       (%rax), %xmm1
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     1.00   1.00    -      -     vtestps       %ymm0, %ymm1
+# CHECK-NEXT: 0.33   0.33   0.33    -      -      -      -      -      -     1.00   1.00    -      -     vtestps       (%rax), %ymm1
 # CHECK-NEXT:  -      -      -      -      -      -      -      -     0.50   0.50   1.00    -      -     vucomisd      %xmm0, %xmm1
 # CHECK-NEXT: 0.33   0.33   0.33    -      -      -      -      -     0.50   0.50   1.00    -      -     vucomisd      (%rax), %xmm1
 # CHECK-NEXT:  -      -      -      -      -      -      -      -     0.50   0.50   1.00    -      -     vucomiss      %xmm0, %xmm1