[X86] Remove unnecessary string instruction overrides from znver1/znver2 models
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Sun, 20 Nov 2022 12:57:44 +0000 (12:57 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Sun, 20 Nov 2022 12:57:44 +0000 (12:57 +0000)
Reported by D138359 - they were being overridden as WriteMicrocoded despite already being declared WriteMicrocoded

It also fixes a rather funny instregex mismatch that was matching the movsldup shuffle by mistake

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

index 8ded509..bfb68ba 100644 (file)
@@ -767,25 +767,6 @@ def : InstRW<[WriteMicrocoded], (instrs RDRAND16r, RDRAND32r, RDRAND64r)>;
 // XGETBV.
 def : InstRW<[WriteMicrocoded], (instrs XGETBV)>;
 
-//-- String instructions --//
-// CMPS.
-def : InstRW<[WriteMicrocoded], (instregex "CMPS(B|L|Q|W)")>;
-
-// LODSB/W.
-def : InstRW<[WriteMicrocoded], (instregex "LODS(B|W)")>;
-
-// LODSD/Q.
-def : InstRW<[WriteMicrocoded], (instregex "LODS(L|Q)")>;
-
-// MOVS.
-def : InstRW<[WriteMicrocoded], (instregex "MOVS(B|L|Q|W)")>;
-
-// SCAS.
-def : InstRW<[WriteMicrocoded], (instregex "SCAS(B|W|L|Q)")>;
-
-// STOS
-def : InstRW<[WriteMicrocoded], (instregex "STOS(B|L|Q|W)")>;
-
 // XADD.
 def ZnXADD : SchedWriteRes<[ZnALU]>;
 def : InstRW<[ZnXADD], (instregex "XADD(8|16|32|64)rr")>;
index 90b66d2..0a0243d 100644 (file)
@@ -777,25 +777,6 @@ def : InstRW<[WriteMicrocoded], (instregex "RDRAND(16|32|64)r")>;
 // XGETBV.
 def : InstRW<[WriteMicrocoded], (instregex "XGETBV")>;
 
-//-- String instructions --//
-// CMPS.
-def : InstRW<[WriteMicrocoded], (instregex "CMPS(B|L|Q|W)")>;
-
-// LODSB/W.
-def : InstRW<[WriteMicrocoded], (instregex "LODS(B|W)")>;
-
-// LODSD/Q.
-def : InstRW<[WriteMicrocoded], (instregex "LODS(L|Q)")>;
-
-// MOVS.
-def : InstRW<[WriteMicrocoded], (instregex "MOVS(B|L|Q|W)")>;
-
-// SCAS.
-def : InstRW<[WriteMicrocoded], (instregex "SCAS(B|W|L|Q)")>;
-
-// STOS
-def : InstRW<[WriteMicrocoded], (instregex "STOS(B|L|Q|W)")>;
-
 // XADD.
 def Zn2XADD : SchedWriteRes<[Zn2ALU]>;
 def : InstRW<[Zn2XADD], (instregex "XADD(8|16|32|64)rr")>;
index dc81366..a936472 100644 (file)
@@ -61,8 +61,8 @@ mwait
 # CHECK-NEXT:  1      8     0.50    *                   movddup        (%rax), %xmm2
 # CHECK-NEXT:  1      1     0.50                        movshdup       %xmm0, %xmm2
 # CHECK-NEXT:  1      8     0.50    *                   movshdup       (%rax), %xmm2
-# CHECK-NEXT:  1      100   0.25                        movsldup       %xmm0, %xmm2
-# CHECK-NEXT:  1      100   0.25    *                   movsldup       (%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                        movsldup       %xmm0, %xmm2
+# CHECK-NEXT:  1      8     0.50    *                   movsldup       (%rax), %xmm2
 # CHECK-NEXT:  1      100   0.25    *      *      U     mwait
 
 # CHECK:      Resources:
@@ -81,7 +81,7 @@ mwait
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]
-# CHECK-NEXT: 4.50   4.50    -      -      -      -      -      -     2.00   4.00   2.00    -
+# CHECK-NEXT: 5.00   5.00    -      -      -      -      -      -     3.00   5.00   2.00    -
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   Instructions:
@@ -103,6 +103,6 @@ mwait
 # CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -     0.50   0.50    -      -     movddup      (%rax), %xmm2
 # CHECK-NEXT:  -      -      -      -      -      -      -      -     0.50   0.50    -      -     movshdup     %xmm0, %xmm2
 # CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -     0.50   0.50    -      -     movshdup     (%rax), %xmm2
-# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     movsldup     %xmm0, %xmm2
-# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     movsldup     (%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -     0.50   0.50    -      -     movsldup     %xmm0, %xmm2
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -     0.50   0.50    -      -     movsldup     (%rax), %xmm2
 # CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     mwait
index fa1b238..7be34f4 100644 (file)
@@ -61,8 +61,8 @@ mwait
 # CHECK-NEXT:  1      8     0.50    *                   movddup        (%rax), %xmm2
 # CHECK-NEXT:  1      1     0.50                        movshdup       %xmm0, %xmm2
 # CHECK-NEXT:  1      8     0.50    *                   movshdup       (%rax), %xmm2
-# CHECK-NEXT:  1      100   0.25                        movsldup       %xmm0, %xmm2
-# CHECK-NEXT:  1      100   0.25    *                   movsldup       (%rax), %xmm2
+# CHECK-NEXT:  1      1     0.50                        movsldup       %xmm0, %xmm2
+# CHECK-NEXT:  1      8     0.50    *                   movsldup       (%rax), %xmm2
 # CHECK-NEXT:  1      100   0.25    *      *      U     mwait
 
 # CHECK:      Resources:
@@ -82,7 +82,7 @@ mwait
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]
-# CHECK-NEXT: 3.00   3.00   3.00    -      -      -      -      -      -     2.00   4.00   2.00    -
+# CHECK-NEXT: 3.33   3.33   3.33    -      -      -      -      -      -     3.00   5.00   2.00    -
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]   Instructions:
@@ -104,6 +104,6 @@ mwait
 # CHECK-NEXT: 0.33   0.33   0.33    -      -      -      -      -      -     0.50   0.50    -      -     movddup       (%rax), %xmm2
 # CHECK-NEXT:  -      -      -      -      -      -      -      -      -     0.50   0.50    -      -     movshdup      %xmm0, %xmm2
 # CHECK-NEXT: 0.33   0.33   0.33    -      -      -      -      -      -     0.50   0.50    -      -     movshdup      (%rax), %xmm2
-# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -      -     movsldup      %xmm0, %xmm2
-# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -      -     movsldup      (%rax), %xmm2
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -     0.50   0.50    -      -     movsldup      %xmm0, %xmm2
+# CHECK-NEXT: 0.33   0.33   0.33    -      -      -      -      -      -     0.50   0.50    -      -     movsldup      (%rax), %xmm2
 # CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -      -     mwait