[X86][SNB] Fix scheduling of MMX integer multiply instructions.
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Wed, 2 May 2018 19:26:14 +0000 (19:26 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Wed, 2 May 2018 19:26:14 +0000 (19:26 +0000)
The entries were being bound to the wrong class.

llvm-svn: 331388

llvm/lib/Target/X86/X86SchedSandyBridge.td
llvm/test/CodeGen/X86/mmx-schedule.ll
llvm/test/tools/llvm-mca/X86/SandyBridge/resources-mmx.s
llvm/test/tools/llvm-mca/X86/SandyBridge/resources-sse1.s
llvm/test/tools/llvm-mca/X86/SandyBridge/resources-sse2.s
llvm/test/tools/llvm-mca/X86/SandyBridge/resources-ssse3.s

index 8923eb1..cf15ccd 100644 (file)
@@ -1247,14 +1247,14 @@ def SBWriteResGroup89_2 : SchedWriteRes<[SBPort0,SBPort23]> {
   let NumMicroOps = 2;
   let ResourceCycles = [1,1];
 }
-def: InstRW<[SBWriteResGroup89], (instregex "MMX_PMADDUBSWrm",
-                                            "MMX_PMADDWDirm",
-                                            "MMX_PMULHRSWrm",
-                                            "MMX_PMULHUWirm",
-                                            "MMX_PMULHWirm",
-                                            "MMX_PMULLWirm",
-                                            "MMX_PMULUDQirm",
-                                            "MMX_PSADBWirm")>;
+def: InstRW<[SBWriteResGroup89_2], (instregex "MMX_PMADDUBSWrm",
+                                              "MMX_PMADDWDirm",
+                                              "MMX_PMULHRSWrm",
+                                              "MMX_PMULHUWirm",
+                                              "MMX_PMULHWirm",
+                                              "MMX_PMULLWirm",
+                                              "MMX_PMULUDQirm",
+                                              "MMX_PSADBWirm")>;
 
 def SBWriteResGroup90 : SchedWriteRes<[SBPort1,SBPort23]> {
   let Latency = 9;
index c08dc0e..3556a79 100644 (file)
@@ -3591,7 +3591,7 @@ define i64 @test_pmaddwd(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
 ; GENERIC-LABEL: test_pmaddwd:
 ; GENERIC:       # %bb.0:
 ; GENERIC-NEXT:    pmaddwd %mm1, %mm0 # sched: [5:1.00]
-; GENERIC-NEXT:    pmaddwd (%rdi), %mm0 # sched: [11:1.00]
+; GENERIC-NEXT:    pmaddwd (%rdi), %mm0 # sched: [10:1.00]
 ; GENERIC-NEXT:    movq %mm0, %rax # sched: [1:0.33]
 ; GENERIC-NEXT:    retq # sched: [1:1.00]
 ;
@@ -3612,7 +3612,7 @@ define i64 @test_pmaddwd(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
 ; SANDY-LABEL: test_pmaddwd:
 ; SANDY:       # %bb.0:
 ; SANDY-NEXT:    pmaddwd %mm1, %mm0 # sched: [5:1.00]
-; SANDY-NEXT:    pmaddwd (%rdi), %mm0 # sched: [11:1.00]
+; SANDY-NEXT:    pmaddwd (%rdi), %mm0 # sched: [10:1.00]
 ; SANDY-NEXT:    movq %mm0, %rax # sched: [1:0.33]
 ; SANDY-NEXT:    retq # sched: [1:1.00]
 ;
@@ -3669,7 +3669,7 @@ define i64 @test_pmaddubsw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
 ; GENERIC-LABEL: test_pmaddubsw:
 ; GENERIC:       # %bb.0:
 ; GENERIC-NEXT:    pmaddubsw %mm1, %mm0 # sched: [5:1.00]
-; GENERIC-NEXT:    pmaddubsw (%rdi), %mm0 # sched: [11:1.00]
+; GENERIC-NEXT:    pmaddubsw (%rdi), %mm0 # sched: [10:1.00]
 ; GENERIC-NEXT:    movq %mm0, %rax # sched: [1:0.33]
 ; GENERIC-NEXT:    retq # sched: [1:1.00]
 ;
@@ -3690,7 +3690,7 @@ define i64 @test_pmaddubsw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
 ; SANDY-LABEL: test_pmaddubsw:
 ; SANDY:       # %bb.0:
 ; SANDY-NEXT:    pmaddubsw %mm1, %mm0 # sched: [5:1.00]
-; SANDY-NEXT:    pmaddubsw (%rdi), %mm0 # sched: [11:1.00]
+; SANDY-NEXT:    pmaddubsw (%rdi), %mm0 # sched: [10:1.00]
 ; SANDY-NEXT:    movq %mm0, %rax # sched: [1:0.33]
 ; SANDY-NEXT:    retq # sched: [1:1.00]
 ;
@@ -4114,7 +4114,7 @@ define i64 @test_pmulhrsw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
 ; GENERIC-LABEL: test_pmulhrsw:
 ; GENERIC:       # %bb.0:
 ; GENERIC-NEXT:    pmulhrsw %mm1, %mm0 # sched: [5:1.00]
-; GENERIC-NEXT:    pmulhrsw (%rdi), %mm0 # sched: [11:1.00]
+; GENERIC-NEXT:    pmulhrsw (%rdi), %mm0 # sched: [10:1.00]
 ; GENERIC-NEXT:    movq %mm0, %rax # sched: [1:0.33]
 ; GENERIC-NEXT:    retq # sched: [1:1.00]
 ;
@@ -4135,7 +4135,7 @@ define i64 @test_pmulhrsw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
 ; SANDY-LABEL: test_pmulhrsw:
 ; SANDY:       # %bb.0:
 ; SANDY-NEXT:    pmulhrsw %mm1, %mm0 # sched: [5:1.00]
-; SANDY-NEXT:    pmulhrsw (%rdi), %mm0 # sched: [11:1.00]
+; SANDY-NEXT:    pmulhrsw (%rdi), %mm0 # sched: [10:1.00]
 ; SANDY-NEXT:    movq %mm0, %rax # sched: [1:0.33]
 ; SANDY-NEXT:    retq # sched: [1:1.00]
 ;
@@ -4192,7 +4192,7 @@ define i64 @test_pmulhw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
 ; GENERIC-LABEL: test_pmulhw:
 ; GENERIC:       # %bb.0:
 ; GENERIC-NEXT:    pmulhw %mm1, %mm0 # sched: [5:1.00]
-; GENERIC-NEXT:    pmulhw (%rdi), %mm0 # sched: [11:1.00]
+; GENERIC-NEXT:    pmulhw (%rdi), %mm0 # sched: [10:1.00]
 ; GENERIC-NEXT:    movq %mm0, %rax # sched: [1:0.33]
 ; GENERIC-NEXT:    retq # sched: [1:1.00]
 ;
@@ -4213,7 +4213,7 @@ define i64 @test_pmulhw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
 ; SANDY-LABEL: test_pmulhw:
 ; SANDY:       # %bb.0:
 ; SANDY-NEXT:    pmulhw %mm1, %mm0 # sched: [5:1.00]
-; SANDY-NEXT:    pmulhw (%rdi), %mm0 # sched: [11:1.00]
+; SANDY-NEXT:    pmulhw (%rdi), %mm0 # sched: [10:1.00]
 ; SANDY-NEXT:    movq %mm0, %rax # sched: [1:0.33]
 ; SANDY-NEXT:    retq # sched: [1:1.00]
 ;
@@ -4270,7 +4270,7 @@ define i64 @test_pmulhuw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
 ; GENERIC-LABEL: test_pmulhuw:
 ; GENERIC:       # %bb.0:
 ; GENERIC-NEXT:    pmulhuw %mm1, %mm0 # sched: [5:1.00]
-; GENERIC-NEXT:    pmulhuw (%rdi), %mm0 # sched: [11:1.00]
+; GENERIC-NEXT:    pmulhuw (%rdi), %mm0 # sched: [10:1.00]
 ; GENERIC-NEXT:    movq %mm0, %rax # sched: [1:0.33]
 ; GENERIC-NEXT:    retq # sched: [1:1.00]
 ;
@@ -4291,7 +4291,7 @@ define i64 @test_pmulhuw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
 ; SANDY-LABEL: test_pmulhuw:
 ; SANDY:       # %bb.0:
 ; SANDY-NEXT:    pmulhuw %mm1, %mm0 # sched: [5:1.00]
-; SANDY-NEXT:    pmulhuw (%rdi), %mm0 # sched: [11:1.00]
+; SANDY-NEXT:    pmulhuw (%rdi), %mm0 # sched: [10:1.00]
 ; SANDY-NEXT:    movq %mm0, %rax # sched: [1:0.33]
 ; SANDY-NEXT:    retq # sched: [1:1.00]
 ;
@@ -4348,7 +4348,7 @@ define i64 @test_pmullw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
 ; GENERIC-LABEL: test_pmullw:
 ; GENERIC:       # %bb.0:
 ; GENERIC-NEXT:    pmullw %mm1, %mm0 # sched: [5:1.00]
-; GENERIC-NEXT:    pmullw (%rdi), %mm0 # sched: [11:1.00]
+; GENERIC-NEXT:    pmullw (%rdi), %mm0 # sched: [10:1.00]
 ; GENERIC-NEXT:    movq %mm0, %rax # sched: [1:0.33]
 ; GENERIC-NEXT:    retq # sched: [1:1.00]
 ;
@@ -4369,7 +4369,7 @@ define i64 @test_pmullw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
 ; SANDY-LABEL: test_pmullw:
 ; SANDY:       # %bb.0:
 ; SANDY-NEXT:    pmullw %mm1, %mm0 # sched: [5:1.00]
-; SANDY-NEXT:    pmullw (%rdi), %mm0 # sched: [11:1.00]
+; SANDY-NEXT:    pmullw (%rdi), %mm0 # sched: [10:1.00]
 ; SANDY-NEXT:    movq %mm0, %rax # sched: [1:0.33]
 ; SANDY-NEXT:    retq # sched: [1:1.00]
 ;
@@ -4426,7 +4426,7 @@ define i64 @test_pmuludq(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
 ; GENERIC-LABEL: test_pmuludq:
 ; GENERIC:       # %bb.0:
 ; GENERIC-NEXT:    pmuludq %mm1, %mm0 # sched: [5:1.00]
-; GENERIC-NEXT:    pmuludq (%rdi), %mm0 # sched: [11:1.00]
+; GENERIC-NEXT:    pmuludq (%rdi), %mm0 # sched: [10:1.00]
 ; GENERIC-NEXT:    movq %mm0, %rax # sched: [1:0.33]
 ; GENERIC-NEXT:    retq # sched: [1:1.00]
 ;
@@ -4447,7 +4447,7 @@ define i64 @test_pmuludq(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
 ; SANDY-LABEL: test_pmuludq:
 ; SANDY:       # %bb.0:
 ; SANDY-NEXT:    pmuludq %mm1, %mm0 # sched: [5:1.00]
-; SANDY-NEXT:    pmuludq (%rdi), %mm0 # sched: [11:1.00]
+; SANDY-NEXT:    pmuludq (%rdi), %mm0 # sched: [10:1.00]
 ; SANDY-NEXT:    movq %mm0, %rax # sched: [1:0.33]
 ; SANDY-NEXT:    retq # sched: [1:1.00]
 ;
@@ -4582,7 +4582,7 @@ define i64 @test_psadbw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
 ; GENERIC-LABEL: test_psadbw:
 ; GENERIC:       # %bb.0:
 ; GENERIC-NEXT:    psadbw %mm1, %mm0 # sched: [5:1.00]
-; GENERIC-NEXT:    psadbw (%rdi), %mm0 # sched: [11:1.00]
+; GENERIC-NEXT:    psadbw (%rdi), %mm0 # sched: [10:1.00]
 ; GENERIC-NEXT:    movq %mm0, %rax # sched: [1:0.33]
 ; GENERIC-NEXT:    retq # sched: [1:1.00]
 ;
@@ -4603,7 +4603,7 @@ define i64 @test_psadbw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
 ; SANDY-LABEL: test_psadbw:
 ; SANDY:       # %bb.0:
 ; SANDY-NEXT:    psadbw %mm1, %mm0 # sched: [5:1.00]
-; SANDY-NEXT:    psadbw (%rdi), %mm0 # sched: [11:1.00]
+; SANDY-NEXT:    psadbw (%rdi), %mm0 # sched: [10:1.00]
 ; SANDY-NEXT:    movq %mm0, %rax # sched: [1:0.33]
 ; SANDY-NEXT:    retq # sched: [1:1.00]
 ;
index 1453d94..99668b0 100644 (file)
@@ -210,11 +210,11 @@ pxor        (%rax), %mm2
 # CHECK-NEXT:  1      3     1.00                       pcmpgtw %mm0, %mm2
 # CHECK-NEXT:  2      8     1.00    *                  pcmpgtw (%rax), %mm2
 # CHECK-NEXT:  1      5     1.00                       pmaddwd %mm0, %mm2
-# CHECK-NEXT:  2      11    1.00    *                  pmaddwd (%rax), %mm2
+# CHECK-NEXT:  2      10    1.00    *                  pmaddwd (%rax), %mm2
 # CHECK-NEXT:  1      5     1.00                       pmulhw  %mm0, %mm2
-# CHECK-NEXT:  2      11    1.00    *                  pmulhw  (%rax), %mm2
+# CHECK-NEXT:  2      10    1.00    *                  pmulhw  (%rax), %mm2
 # CHECK-NEXT:  1      5     1.00                       pmullw  %mm0, %mm2
-# CHECK-NEXT:  2      11    1.00    *                  pmullw  (%rax), %mm2
+# CHECK-NEXT:  2      10    1.00    *                  pmullw  (%rax), %mm2
 # CHECK-NEXT:  1      1     0.33                       por     %mm0, %mm2
 # CHECK-NEXT:  2      6     0.50    *                  por     (%rax), %mm2
 # CHECK-NEXT:  1      1     1.00                       pslld   $1, %mm2
index 46e1b47..0cd4eb9 100644 (file)
@@ -281,13 +281,13 @@ xorps       (%rax), %xmm2
 # CHECK-NEXT:  2      8     1.00    *                  pminub  (%rax), %mm2
 # CHECK-NEXT:  1      2     1.00                       pmovmskb        %xmm0, %ecx
 # CHECK-NEXT:  1      5     1.00                       pmulhuw %mm0, %mm2
-# CHECK-NEXT:  2      11    1.00    *                  pmulhuw (%rax), %mm2
+# CHECK-NEXT:  2      10    1.00    *                  pmulhuw (%rax), %mm2
 # CHECK-NEXT:  1      5     0.50    *      *           prefetcht0      (%rax)
 # CHECK-NEXT:  1      5     0.50    *      *           prefetcht1      (%rax)
 # CHECK-NEXT:  1      5     0.50    *      *           prefetcht2      (%rax)
 # CHECK-NEXT:  1      5     0.50    *      *           prefetchnta     (%rax)
 # CHECK-NEXT:  1      5     1.00                       psadbw  %mm0, %mm2
-# CHECK-NEXT:  2      11    1.00    *                  psadbw  (%rax), %mm2
+# CHECK-NEXT:  2      10    1.00    *                  psadbw  (%rax), %mm2
 # CHECK-NEXT:  1      1     1.00                       pshufw  $1, %mm0, %mm2
 # CHECK-NEXT:  2      6     1.00    *                  pshufw  $1, (%rax), %mm2
 # CHECK-NEXT:  1      5     1.00                       rcpps   %xmm0, %xmm2
index f8ca0cc..ab7d138 100644 (file)
@@ -573,7 +573,7 @@ xorpd       (%rax), %xmm2
 # CHECK-NEXT:  1      5     1.00                       pmullw  %xmm0, %xmm2
 # CHECK-NEXT:  2      11    1.00    *                  pmullw  (%rax), %xmm2
 # CHECK-NEXT:  1      5     1.00                       pmuludq %mm0, %mm2
-# CHECK-NEXT:  2      11    1.00    *                  pmuludq (%rax), %mm2
+# CHECK-NEXT:  2      10    1.00    *                  pmuludq (%rax), %mm2
 # CHECK-NEXT:  1      5     1.00                       pmuludq %xmm0, %xmm2
 # CHECK-NEXT:  2      11    1.00    *                  pmuludq (%rax), %xmm2
 # CHECK-NEXT:  1      1     0.33                       por     %xmm0, %xmm2
index 63b1892..7486d8e 100644 (file)
@@ -147,11 +147,11 @@ psignw      (%rax), %xmm2
 # CHECK-NEXT:  3      3     1.50                       phsubw  %xmm0, %xmm2
 # CHECK-NEXT:  4      9     1.50    *                  phsubw  (%rax), %xmm2
 # CHECK-NEXT:  1      5     1.00                       pmaddubsw       %mm0, %mm2
-# CHECK-NEXT:  2      11    1.00    *                  pmaddubsw       (%rax), %mm2
+# CHECK-NEXT:  2      10    1.00    *                  pmaddubsw       (%rax), %mm2
 # CHECK-NEXT:  1      5     1.00                       pmaddubsw       %xmm0, %xmm2
 # CHECK-NEXT:  2      11    1.00    *                  pmaddubsw       (%rax), %xmm2
 # CHECK-NEXT:  1      5     1.00                       pmulhrsw        %mm0, %mm2
-# CHECK-NEXT:  2      11    1.00    *                  pmulhrsw        (%rax), %mm2
+# CHECK-NEXT:  2      10    1.00    *                  pmulhrsw        (%rax), %mm2
 # CHECK-NEXT:  1      5     1.00                       pmulhrsw        %xmm0, %xmm2
 # CHECK-NEXT:  2      11    1.00    *                  pmulhrsw        (%rax), %xmm2
 # CHECK-NEXT:  1      1     0.50                       pshufb  %mm0, %mm2