[X86] Raise the latency for VectorImul from 4 to 5 in Skylake scheduler models
authorCraig Topper <craig.topper@intel.com>
Tue, 11 Feb 2020 19:04:47 +0000 (11:04 -0800)
committerCraig Topper <craig.topper@intel.com>
Tue, 11 Feb 2020 19:24:25 +0000 (11:24 -0800)
Based on uops.info these should have 5 cycle latency as they did on Haswell/Broadwell. I have no additional internal information from Intel.

This was also shown as a discrepancy in the spreadsheet that was sent with an early llvm-dev post about llvm-exegesis.
It also matches Agner Fog.

Differential Revision: https://reviews.llvm.org/D74357

16 files changed:
llvm/lib/Target/X86/X86SchedSkylakeClient.td
llvm/lib/Target/X86/X86SchedSkylakeServer.td
llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-avx1.s
llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-avx2.s
llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-mmx.s
llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-sse1.s
llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-sse2.s
llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-sse41.s
llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-ssse3.s
llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx1.s
llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx2.s
llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-mmx.s
llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-sse1.s
llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-sse2.s
llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-sse41.s
llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-ssse3.s

index 0950203801afa21860637260a0046319d2c26571..febef9cc32b98921a4baa7c3c2ca3cfe2d28e94e 100644 (file)
@@ -362,9 +362,9 @@ defm : X86WriteResPairUnsupported<WriteVecLogicZ>;
 defm : SKLWriteResPair<WriteVecTest,  [SKLPort0,SKLPort5], 3, [1,1], 2, 6>; // Vector integer TEST instructions.
 defm : SKLWriteResPair<WriteVecTestY, [SKLPort0,SKLPort5], 3, [1,1], 2, 7>;
 defm : X86WriteResPairUnsupported<WriteVecTestZ>;
-defm : SKLWriteResPair<WriteVecIMul,  [SKLPort0] ,  4, [1], 1, 5>; // Vector integer multiply.
-defm : SKLWriteResPair<WriteVecIMulX, [SKLPort01],  4, [1], 1, 6>;
-defm : SKLWriteResPair<WriteVecIMulY, [SKLPort01],  4, [1], 1, 7>;
+defm : SKLWriteResPair<WriteVecIMul,  [SKLPort0] ,  5, [1], 1, 5>; // Vector integer multiply.
+defm : SKLWriteResPair<WriteVecIMulX, [SKLPort01],  5, [1], 1, 6>;
+defm : SKLWriteResPair<WriteVecIMulY, [SKLPort01],  5, [1], 1, 7>;
 defm : X86WriteResPairUnsupported<WriteVecIMulZ>;
 defm : SKLWriteResPair<WritePMULLD,   [SKLPort01], 10, [2], 2, 6>; // Vector PMULLD.
 defm : SKLWriteResPair<WritePMULLDY,  [SKLPort01], 10, [2], 2, 7>;
index 2556f06c64c3b4d3ee1c9749747d41f97e6ac2c6..55893945638e9d691f2674132cc02546b7302016 100644 (file)
@@ -362,10 +362,10 @@ defm : SKXWriteResPair<WriteVecLogicZ,[SKXPort05], 1, [1], 1, 7>;
 defm : SKXWriteResPair<WriteVecTest,  [SKXPort0,SKXPort5], 3, [1,1], 2, 6>; // Vector integer TEST instructions.
 defm : SKXWriteResPair<WriteVecTestY, [SKXPort0,SKXPort5], 3, [1,1], 2, 7>;
 defm : SKXWriteResPair<WriteVecTestZ, [SKXPort0,SKXPort5], 3, [1,1], 2, 7>;
-defm : SKXWriteResPair<WriteVecIMul,  [SKXPort0],    4, [1], 1, 5>; // Vector integer multiply.
-defm : SKXWriteResPair<WriteVecIMulX, [SKXPort01],  4, [1], 1, 6>;
-defm : SKXWriteResPair<WriteVecIMulY, [SKXPort01],  4, [1], 1, 7>;
-defm : SKXWriteResPair<WriteVecIMulZ, [SKXPort05],  4, [1], 1, 7>;
+defm : SKXWriteResPair<WriteVecIMul,  [SKXPort0],   5, [1], 1, 5>; // Vector integer multiply.
+defm : SKXWriteResPair<WriteVecIMulX, [SKXPort01],  5, [1], 1, 6>;
+defm : SKXWriteResPair<WriteVecIMulY, [SKXPort01],  5, [1], 1, 7>;
+defm : SKXWriteResPair<WriteVecIMulZ, [SKXPort05],  5, [1], 1, 7>;
 defm : SKXWriteResPair<WritePMULLD,   [SKXPort01], 10, [2], 2, 6>; // Vector PMULLD.
 defm : SKXWriteResPair<WritePMULLDY,  [SKXPort01], 10, [2], 2, 7>;
 defm : SKXWriteResPair<WritePMULLDZ,  [SKXPort05], 10, [2], 2, 7>;
index 62816f790cc24bcd05bc2c2bccaa246038cf2edc..210f18c132322efd3f7cbfdb0411f6e07d8058d6 100644 (file)
@@ -1477,10 +1477,10 @@ vzeroupper
 # CHECK-NEXT:  2      6     1.00    *                   vpinsrq        $1, (%rax), %xmm1, %xmm2
 # CHECK-NEXT:  2      2     2.00                        vpinsrw        $1, %eax, %xmm1, %xmm2
 # CHECK-NEXT:  2      6     1.00    *                   vpinsrw        $1, (%rax), %xmm1, %xmm2
-# CHECK-NEXT:  1      4     0.50                        vpmaddubsw     %xmm0, %xmm1, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   vpmaddubsw     (%rax), %xmm1, %xmm2
-# CHECK-NEXT:  1      4     0.50                        vpmaddwd       %xmm0, %xmm1, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   vpmaddwd       (%rax), %xmm1, %xmm2
+# CHECK-NEXT:  1      5     0.50                        vpmaddubsw     %xmm0, %xmm1, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   vpmaddubsw     (%rax), %xmm1, %xmm2
+# CHECK-NEXT:  1      5     0.50                        vpmaddwd       %xmm0, %xmm1, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   vpmaddwd       (%rax), %xmm1, %xmm2
 # CHECK-NEXT:  1      1     0.50                        vpmaxsb        %xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  2      7     0.50    *                   vpmaxsb        (%rax), %xmm1, %xmm2
 # CHECK-NEXT:  1      1     0.50                        vpmaxsd        %xmm0, %xmm1, %xmm2
@@ -1530,20 +1530,20 @@ vzeroupper
 # CHECK-NEXT:  2      6     1.00    *                   vpmovzxwd      (%rax), %xmm2
 # CHECK-NEXT:  1      1     1.00                        vpmovzxwq      %xmm0, %xmm2
 # CHECK-NEXT:  2      6     1.00    *                   vpmovzxwq      (%rax), %xmm2
-# CHECK-NEXT:  1      4     0.50                        vpmuldq        %xmm0, %xmm1, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   vpmuldq        (%rax), %xmm1, %xmm2
-# CHECK-NEXT:  1      4     0.50                        vpmulhrsw      %xmm0, %xmm1, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   vpmulhrsw      (%rax), %xmm1, %xmm2
-# CHECK-NEXT:  1      4     0.50                        vpmulhuw       %xmm0, %xmm1, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   vpmulhuw       (%rax), %xmm1, %xmm2
-# CHECK-NEXT:  1      4     0.50                        vpmulhw        %xmm0, %xmm1, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   vpmulhw        (%rax), %xmm1, %xmm2
+# CHECK-NEXT:  1      5     0.50                        vpmuldq        %xmm0, %xmm1, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   vpmuldq        (%rax), %xmm1, %xmm2
+# CHECK-NEXT:  1      5     0.50                        vpmulhrsw      %xmm0, %xmm1, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   vpmulhrsw      (%rax), %xmm1, %xmm2
+# CHECK-NEXT:  1      5     0.50                        vpmulhuw       %xmm0, %xmm1, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   vpmulhuw       (%rax), %xmm1, %xmm2
+# CHECK-NEXT:  1      5     0.50                        vpmulhw        %xmm0, %xmm1, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   vpmulhw        (%rax), %xmm1, %xmm2
 # CHECK-NEXT:  2      10    1.00                        vpmulld        %xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  3      16    1.00    *                   vpmulld        (%rax), %xmm1, %xmm2
-# CHECK-NEXT:  1      4     0.50                        vpmullw        %xmm0, %xmm1, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   vpmullw        (%rax), %xmm1, %xmm2
-# CHECK-NEXT:  1      4     0.50                        vpmuludq       %xmm0, %xmm1, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   vpmuludq       (%rax), %xmm1, %xmm2
+# CHECK-NEXT:  1      5     0.50                        vpmullw        %xmm0, %xmm1, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   vpmullw        (%rax), %xmm1, %xmm2
+# CHECK-NEXT:  1      5     0.50                        vpmuludq       %xmm0, %xmm1, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   vpmuludq       (%rax), %xmm1, %xmm2
 # CHECK-NEXT:  1      1     0.33                        vpor   %xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  2      7     0.50    *                   vpor   (%rax), %xmm1, %xmm2
 # CHECK-NEXT:  1      3     1.00                        vpsadbw        %xmm0, %xmm1, %xmm2
index 9f6b518da9d8da920bb5a69feb8b4d855923720f..8072a061135550ebf5eea9418f195756c08dc91c 100644 (file)
@@ -588,10 +588,10 @@ vpxor           (%rax), %ymm1, %ymm2
 # CHECK-NEXT:  4      10    2.00    *                   vphsubsw       (%rax), %ymm1, %ymm2
 # CHECK-NEXT:  3      3     2.00                        vphsubw        %ymm0, %ymm1, %ymm2
 # CHECK-NEXT:  4      10    2.00    *                   vphsubw        (%rax), %ymm1, %ymm2
-# CHECK-NEXT:  1      4     0.50                        vpmaddubsw     %ymm0, %ymm1, %ymm2
-# CHECK-NEXT:  2      11    0.50    *                   vpmaddubsw     (%rax), %ymm1, %ymm2
-# CHECK-NEXT:  1      4     0.50                        vpmaddwd       %ymm0, %ymm1, %ymm2
-# CHECK-NEXT:  2      11    0.50    *                   vpmaddwd       (%rax), %ymm1, %ymm2
+# CHECK-NEXT:  1      5     0.50                        vpmaddubsw     %ymm0, %ymm1, %ymm2
+# CHECK-NEXT:  2      12    0.50    *                   vpmaddubsw     (%rax), %ymm1, %ymm2
+# CHECK-NEXT:  1      5     0.50                        vpmaddwd       %ymm0, %ymm1, %ymm2
+# CHECK-NEXT:  2      12    0.50    *                   vpmaddwd       (%rax), %ymm1, %ymm2
 # CHECK-NEXT:  2      7     0.50    *                   vpmaskmovd     (%rax), %xmm0, %xmm2
 # CHECK-NEXT:  2      8     0.50    *                   vpmaskmovd     (%rax), %ymm0, %ymm2
 # CHECK-NEXT:  2      2     1.00    *      *            vpmaskmovd     %xmm0, %xmm1, (%rax)
@@ -649,20 +649,20 @@ vpxor           (%rax), %ymm1, %ymm2
 # CHECK-NEXT:  2      9     1.00    *                   vpmovzxwd      (%rax), %ymm2
 # CHECK-NEXT:  1      3     1.00                        vpmovzxwq      %xmm0, %ymm2
 # CHECK-NEXT:  2      10    1.00    *                   vpmovzxwq      (%rax), %ymm2
-# CHECK-NEXT:  1      4     0.50                        vpmuldq        %ymm0, %ymm1, %ymm2
-# CHECK-NEXT:  2      11    0.50    *                   vpmuldq        (%rax), %ymm1, %ymm2
-# CHECK-NEXT:  1      4     0.50                        vpmulhrsw      %ymm0, %ymm1, %ymm2
-# CHECK-NEXT:  2      11    0.50    *                   vpmulhrsw      (%rax), %ymm1, %ymm2
-# CHECK-NEXT:  1      4     0.50                        vpmulhuw       %ymm0, %ymm1, %ymm2
-# CHECK-NEXT:  2      11    0.50    *                   vpmulhuw       (%rax), %ymm1, %ymm2
-# CHECK-NEXT:  1      4     0.50                        vpmulhw        %ymm0, %ymm1, %ymm2
-# CHECK-NEXT:  2      11    0.50    *                   vpmulhw        (%rax), %ymm1, %ymm2
+# CHECK-NEXT:  1      5     0.50                        vpmuldq        %ymm0, %ymm1, %ymm2
+# CHECK-NEXT:  2      12    0.50    *                   vpmuldq        (%rax), %ymm1, %ymm2
+# CHECK-NEXT:  1      5     0.50                        vpmulhrsw      %ymm0, %ymm1, %ymm2
+# CHECK-NEXT:  2      12    0.50    *                   vpmulhrsw      (%rax), %ymm1, %ymm2
+# CHECK-NEXT:  1      5     0.50                        vpmulhuw       %ymm0, %ymm1, %ymm2
+# CHECK-NEXT:  2      12    0.50    *                   vpmulhuw       (%rax), %ymm1, %ymm2
+# CHECK-NEXT:  1      5     0.50                        vpmulhw        %ymm0, %ymm1, %ymm2
+# CHECK-NEXT:  2      12    0.50    *                   vpmulhw        (%rax), %ymm1, %ymm2
 # CHECK-NEXT:  2      10    1.00                        vpmulld        %ymm0, %ymm1, %ymm2
 # CHECK-NEXT:  3      17    1.00    *                   vpmulld        (%rax), %ymm1, %ymm2
-# CHECK-NEXT:  1      4     0.50                        vpmullw        %ymm0, %ymm1, %ymm2
-# CHECK-NEXT:  2      11    0.50    *                   vpmullw        (%rax), %ymm1, %ymm2
-# CHECK-NEXT:  1      4     0.50                        vpmuludq       %ymm0, %ymm1, %ymm2
-# CHECK-NEXT:  2      11    0.50    *                   vpmuludq       (%rax), %ymm1, %ymm2
+# CHECK-NEXT:  1      5     0.50                        vpmullw        %ymm0, %ymm1, %ymm2
+# CHECK-NEXT:  2      12    0.50    *                   vpmullw        (%rax), %ymm1, %ymm2
+# CHECK-NEXT:  1      5     0.50                        vpmuludq       %ymm0, %ymm1, %ymm2
+# CHECK-NEXT:  2      12    0.50    *                   vpmuludq       (%rax), %ymm1, %ymm2
 # CHECK-NEXT:  1      1     0.33                        vpor   %ymm0, %ymm1, %ymm2
 # CHECK-NEXT:  2      8     0.50    *                   vpor   (%rax), %ymm1, %ymm2
 # CHECK-NEXT:  1      3     1.00                        vpsadbw        %ymm0, %ymm1, %ymm2
index 8da7071f0b7869c7c399a33af7b31c7140d6ab31..75c49be784eba47ed58fafe709916be8a0439951 100644 (file)
@@ -209,12 +209,12 @@ pxor        (%rax), %mm2
 # CHECK-NEXT:  2      6     1.00    *                   pcmpgtd        (%rax), %mm2
 # CHECK-NEXT:  1      1     1.00                        pcmpgtw        %mm0, %mm2
 # CHECK-NEXT:  2      6     1.00    *                   pcmpgtw        (%rax), %mm2
-# CHECK-NEXT:  1      4     1.00                        pmaddwd        %mm0, %mm2
-# CHECK-NEXT:  2          1.00    *                   pmaddwd        (%rax), %mm2
-# CHECK-NEXT:  1      4     1.00                        pmulhw %mm0, %mm2
-# CHECK-NEXT:  2          1.00    *                   pmulhw (%rax), %mm2
-# CHECK-NEXT:  1      4     1.00                        pmullw %mm0, %mm2
-# CHECK-NEXT:  2          1.00    *                   pmullw (%rax), %mm2
+# CHECK-NEXT:  1      5     1.00                        pmaddwd        %mm0, %mm2
+# CHECK-NEXT:  2      10    1.00    *                   pmaddwd        (%rax), %mm2
+# CHECK-NEXT:  1      5     1.00                        pmulhw %mm0, %mm2
+# CHECK-NEXT:  2      10    1.00    *                   pmulhw (%rax), %mm2
+# CHECK-NEXT:  1      5     1.00                        pmullw %mm0, %mm2
+# CHECK-NEXT:  2      10    1.00    *                   pmullw (%rax), %mm2
 # CHECK-NEXT:  1      1     0.50                        por    %mm0, %mm2
 # CHECK-NEXT:  2      6     0.50    *                   por    (%rax), %mm2
 # CHECK-NEXT:  1      1     1.00                        pslld  $1, %mm2
index 8a2fb55ab734bbc59388c2b4091258b3bdf261e1..11557412ea515986b9e643f20cd75b4f7b176d5d 100644 (file)
@@ -280,8 +280,8 @@ xorps       (%rax), %xmm2
 # CHECK-NEXT:  1      1     1.00                        pminub %mm0, %mm2
 # CHECK-NEXT:  2      6     1.00    *                   pminub (%rax), %mm2
 # CHECK-NEXT:  1      2     1.00                        pmovmskb       %mm0, %ecx
-# CHECK-NEXT:  1      4     1.00                        pmulhuw        %mm0, %mm2
-# CHECK-NEXT:  2          1.00    *                   pmulhuw        (%rax), %mm2
+# CHECK-NEXT:  1      5     1.00                        pmulhuw        %mm0, %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)
index 869a2a4a1c78e0be6b3b9d3a01e523f22c8ce1d5..7b31b045bc1010452e40ba40d4866f94a43c4b0b 100644 (file)
@@ -563,8 +563,8 @@ xorpd       (%rax), %xmm2
 # CHECK-NEXT:  2      3     1.00                        pextrw $1, %xmm0, %ecx
 # CHECK-NEXT:  2      2     2.00                        pinsrw $1, %eax, %xmm0
 # CHECK-NEXT:  2      6     1.00    *                   pinsrw $1, (%rax), %xmm0
-# CHECK-NEXT:  1      4     0.50                        pmaddwd        %xmm0, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   pmaddwd        (%rax), %xmm2
+# CHECK-NEXT:  1      5     0.50                        pmaddwd        %xmm0, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   pmaddwd        (%rax), %xmm2
 # CHECK-NEXT:  1      1     0.50                        pmaxsw %xmm0, %xmm2
 # CHECK-NEXT:  2      7     0.50    *                   pmaxsw (%rax), %xmm2
 # CHECK-NEXT:  1      1     0.50                        pmaxub %xmm0, %xmm2
@@ -574,16 +574,16 @@ xorpd       (%rax), %xmm2
 # CHECK-NEXT:  1      1     0.50                        pminub %xmm0, %xmm2
 # CHECK-NEXT:  2      7     0.50    *                   pminub (%rax), %xmm2
 # CHECK-NEXT:  1      2     1.00                        pmovmskb       %xmm0, %ecx
-# CHECK-NEXT:  1      4     0.50                        pmulhuw        %xmm0, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   pmulhuw        (%rax), %xmm2
-# CHECK-NEXT:  1      4     0.50                        pmulhw %xmm0, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   pmulhw (%rax), %xmm2
-# CHECK-NEXT:  1      4     0.50                        pmullw %xmm0, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   pmullw (%rax), %xmm2
-# CHECK-NEXT:  1      4     1.00                        pmuludq        %mm0, %mm2
-# CHECK-NEXT:  2          1.00    *                   pmuludq        (%rax), %mm2
-# CHECK-NEXT:  1      4     0.50                        pmuludq        %xmm0, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   pmuludq        (%rax), %xmm2
+# CHECK-NEXT:  1      5     0.50                        pmulhuw        %xmm0, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   pmulhuw        (%rax), %xmm2
+# CHECK-NEXT:  1      5     0.50                        pmulhw %xmm0, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   pmulhw (%rax), %xmm2
+# CHECK-NEXT:  1      5     0.50                        pmullw %xmm0, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   pmullw (%rax), %xmm2
+# CHECK-NEXT:  1      5     1.00                        pmuludq        %mm0, %mm2
+# CHECK-NEXT:  2      10    1.00    *                   pmuludq        (%rax), %mm2
+# CHECK-NEXT:  1      5     0.50                        pmuludq        %xmm0, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   pmuludq        (%rax), %xmm2
 # CHECK-NEXT:  1      1     0.33                        por    %xmm0, %xmm2
 # CHECK-NEXT:  2      7     0.50    *                   por    (%rax), %xmm2
 # CHECK-NEXT:  1      3     1.00                        psadbw %xmm0, %xmm2
index 5789de04c3d9d8aa1a05e0a1b840213c34482bd8..6e11bb6df8e2915c074c30b48e535629a354db6c 100644 (file)
@@ -237,8 +237,8 @@ roundss     $1, (%rax), %xmm2
 # CHECK-NEXT:  2      6     1.00    *                   pmovzxwd       (%rax), %xmm2
 # CHECK-NEXT:  1      1     1.00                        pmovzxwq       %xmm0, %xmm2
 # CHECK-NEXT:  2      6     1.00    *                   pmovzxwq       (%rax), %xmm2
-# CHECK-NEXT:  1      4     0.50                        pmuldq %xmm0, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   pmuldq (%rax), %xmm2
+# CHECK-NEXT:  1      5     0.50                        pmuldq %xmm0, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   pmuldq (%rax), %xmm2
 # CHECK-NEXT:  2      10    1.00                        pmulld %xmm0, %xmm2
 # CHECK-NEXT:  3      16    1.00    *                   pmulld (%rax), %xmm2
 # CHECK-NEXT:  2      3     1.00                        ptest  %xmm0, %xmm1
index a0e2de6e923af5f1a2f3ebafb6dbe75af4f049a7..047974f8a6c711243ac2f098e55573c111930c06 100644 (file)
@@ -146,14 +146,14 @@ psignw      (%rax), %xmm2
 # CHECK-NEXT:  4      8     2.00    *                   phsubw (%rax), %mm2
 # CHECK-NEXT:  3      3     2.00                        phsubw %xmm0, %xmm2
 # CHECK-NEXT:  4      9     2.00    *                   phsubw (%rax), %xmm2
-# CHECK-NEXT:  1      4     1.00                        pmaddubsw      %mm0, %mm2
-# CHECK-NEXT:  2          1.00    *                   pmaddubsw      (%rax), %mm2
-# CHECK-NEXT:  1      4     0.50                        pmaddubsw      %xmm0, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   pmaddubsw      (%rax), %xmm2
-# CHECK-NEXT:  1      4     1.00                        pmulhrsw       %mm0, %mm2
-# CHECK-NEXT:  2          1.00    *                   pmulhrsw       (%rax), %mm2
-# CHECK-NEXT:  1      4     0.50                        pmulhrsw       %xmm0, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   pmulhrsw       (%rax), %xmm2
+# CHECK-NEXT:  1      5     1.00                        pmaddubsw      %mm0, %mm2
+# CHECK-NEXT:  2      10    1.00    *                   pmaddubsw      (%rax), %mm2
+# CHECK-NEXT:  1      5     0.50                        pmaddubsw      %xmm0, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   pmaddubsw      (%rax), %xmm2
+# CHECK-NEXT:  1      5     1.00                        pmulhrsw       %mm0, %mm2
+# CHECK-NEXT:  2      10    1.00    *                   pmulhrsw       (%rax), %mm2
+# CHECK-NEXT:  1      5     0.50                        pmulhrsw       %xmm0, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   pmulhrsw       (%rax), %xmm2
 # CHECK-NEXT:  1      1     1.00                        pshufb %mm0, %mm2
 # CHECK-NEXT:  2      6     1.00    *                   pshufb (%rax), %mm2
 # CHECK-NEXT:  1      1     1.00                        pshufb %xmm0, %xmm2
index 97eb3ae44eabe51e12b9f1e66d45550356ac6adb..5a8671922f6c00b7d7acf9ad42485c1c3260480a 100644 (file)
@@ -1477,10 +1477,10 @@ vzeroupper
 # CHECK-NEXT:  2      6     1.00    *                   vpinsrq        $1, (%rax), %xmm1, %xmm2
 # CHECK-NEXT:  2      2     2.00                        vpinsrw        $1, %eax, %xmm1, %xmm2
 # CHECK-NEXT:  2      6     1.00    *                   vpinsrw        $1, (%rax), %xmm1, %xmm2
-# CHECK-NEXT:  1      4     0.50                        vpmaddubsw     %xmm0, %xmm1, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   vpmaddubsw     (%rax), %xmm1, %xmm2
-# CHECK-NEXT:  1      4     0.50                        vpmaddwd       %xmm0, %xmm1, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   vpmaddwd       (%rax), %xmm1, %xmm2
+# CHECK-NEXT:  1      5     0.50                        vpmaddubsw     %xmm0, %xmm1, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   vpmaddubsw     (%rax), %xmm1, %xmm2
+# CHECK-NEXT:  1      5     0.50                        vpmaddwd       %xmm0, %xmm1, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   vpmaddwd       (%rax), %xmm1, %xmm2
 # CHECK-NEXT:  1      1     0.50                        vpmaxsb        %xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  2      7     0.50    *                   vpmaxsb        (%rax), %xmm1, %xmm2
 # CHECK-NEXT:  1      1     0.50                        vpmaxsd        %xmm0, %xmm1, %xmm2
@@ -1530,20 +1530,20 @@ vzeroupper
 # CHECK-NEXT:  2      6     1.00    *                   vpmovzxwd      (%rax), %xmm2
 # CHECK-NEXT:  1      1     1.00                        vpmovzxwq      %xmm0, %xmm2
 # CHECK-NEXT:  2      6     1.00    *                   vpmovzxwq      (%rax), %xmm2
-# CHECK-NEXT:  1      4     0.50                        vpmuldq        %xmm0, %xmm1, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   vpmuldq        (%rax), %xmm1, %xmm2
-# CHECK-NEXT:  1      4     0.50                        vpmulhrsw      %xmm0, %xmm1, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   vpmulhrsw      (%rax), %xmm1, %xmm2
-# CHECK-NEXT:  1      4     0.50                        vpmulhuw       %xmm0, %xmm1, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   vpmulhuw       (%rax), %xmm1, %xmm2
-# CHECK-NEXT:  1      4     0.50                        vpmulhw        %xmm0, %xmm1, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   vpmulhw        (%rax), %xmm1, %xmm2
+# CHECK-NEXT:  1      5     0.50                        vpmuldq        %xmm0, %xmm1, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   vpmuldq        (%rax), %xmm1, %xmm2
+# CHECK-NEXT:  1      5     0.50                        vpmulhrsw      %xmm0, %xmm1, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   vpmulhrsw      (%rax), %xmm1, %xmm2
+# CHECK-NEXT:  1      5     0.50                        vpmulhuw       %xmm0, %xmm1, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   vpmulhuw       (%rax), %xmm1, %xmm2
+# CHECK-NEXT:  1      5     0.50                        vpmulhw        %xmm0, %xmm1, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   vpmulhw        (%rax), %xmm1, %xmm2
 # CHECK-NEXT:  2      10    1.00                        vpmulld        %xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  3      16    1.00    *                   vpmulld        (%rax), %xmm1, %xmm2
-# CHECK-NEXT:  1      4     0.50                        vpmullw        %xmm0, %xmm1, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   vpmullw        (%rax), %xmm1, %xmm2
-# CHECK-NEXT:  1      4     0.50                        vpmuludq       %xmm0, %xmm1, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   vpmuludq       (%rax), %xmm1, %xmm2
+# CHECK-NEXT:  1      5     0.50                        vpmullw        %xmm0, %xmm1, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   vpmullw        (%rax), %xmm1, %xmm2
+# CHECK-NEXT:  1      5     0.50                        vpmuludq       %xmm0, %xmm1, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   vpmuludq       (%rax), %xmm1, %xmm2
 # CHECK-NEXT:  1      1     0.33                        vpor   %xmm0, %xmm1, %xmm2
 # CHECK-NEXT:  2      7     0.50    *                   vpor   (%rax), %xmm1, %xmm2
 # CHECK-NEXT:  1      3     1.00                        vpsadbw        %xmm0, %xmm1, %xmm2
index f9c51a18ff7d1a34bb36cf9c6baec13f1ec87b4d..546ff0c9dc67da1e3be970e13dbc28786f80dd69 100644 (file)
@@ -588,10 +588,10 @@ vpxor           (%rax), %ymm1, %ymm2
 # CHECK-NEXT:  4      10    2.00    *                   vphsubsw       (%rax), %ymm1, %ymm2
 # CHECK-NEXT:  3      3     2.00                        vphsubw        %ymm0, %ymm1, %ymm2
 # CHECK-NEXT:  4      10    2.00    *                   vphsubw        (%rax), %ymm1, %ymm2
-# CHECK-NEXT:  1      4     0.50                        vpmaddubsw     %ymm0, %ymm1, %ymm2
-# CHECK-NEXT:  2      11    0.50    *                   vpmaddubsw     (%rax), %ymm1, %ymm2
-# CHECK-NEXT:  1      4     0.50                        vpmaddwd       %ymm0, %ymm1, %ymm2
-# CHECK-NEXT:  2      11    0.50    *                   vpmaddwd       (%rax), %ymm1, %ymm2
+# CHECK-NEXT:  1      5     0.50                        vpmaddubsw     %ymm0, %ymm1, %ymm2
+# CHECK-NEXT:  2      12    0.50    *                   vpmaddubsw     (%rax), %ymm1, %ymm2
+# CHECK-NEXT:  1      5     0.50                        vpmaddwd       %ymm0, %ymm1, %ymm2
+# CHECK-NEXT:  2      12    0.50    *                   vpmaddwd       (%rax), %ymm1, %ymm2
 # CHECK-NEXT:  2      7     0.50    *                   vpmaskmovd     (%rax), %xmm0, %xmm2
 # CHECK-NEXT:  2      8     0.50    *                   vpmaskmovd     (%rax), %ymm0, %ymm2
 # CHECK-NEXT:  2      2     1.00    *      *            vpmaskmovd     %xmm0, %xmm1, (%rax)
@@ -649,20 +649,20 @@ vpxor           (%rax), %ymm1, %ymm2
 # CHECK-NEXT:  2      9     1.00    *                   vpmovzxwd      (%rax), %ymm2
 # CHECK-NEXT:  1      3     1.00                        vpmovzxwq      %xmm0, %ymm2
 # CHECK-NEXT:  2      10    1.00    *                   vpmovzxwq      (%rax), %ymm2
-# CHECK-NEXT:  1      4     0.50                        vpmuldq        %ymm0, %ymm1, %ymm2
-# CHECK-NEXT:  2      11    0.50    *                   vpmuldq        (%rax), %ymm1, %ymm2
-# CHECK-NEXT:  1      4     0.50                        vpmulhrsw      %ymm0, %ymm1, %ymm2
-# CHECK-NEXT:  2      11    0.50    *                   vpmulhrsw      (%rax), %ymm1, %ymm2
-# CHECK-NEXT:  1      4     0.50                        vpmulhuw       %ymm0, %ymm1, %ymm2
-# CHECK-NEXT:  2      11    0.50    *                   vpmulhuw       (%rax), %ymm1, %ymm2
-# CHECK-NEXT:  1      4     0.50                        vpmulhw        %ymm0, %ymm1, %ymm2
-# CHECK-NEXT:  2      11    0.50    *                   vpmulhw        (%rax), %ymm1, %ymm2
+# CHECK-NEXT:  1      5     0.50                        vpmuldq        %ymm0, %ymm1, %ymm2
+# CHECK-NEXT:  2      12    0.50    *                   vpmuldq        (%rax), %ymm1, %ymm2
+# CHECK-NEXT:  1      5     0.50                        vpmulhrsw      %ymm0, %ymm1, %ymm2
+# CHECK-NEXT:  2      12    0.50    *                   vpmulhrsw      (%rax), %ymm1, %ymm2
+# CHECK-NEXT:  1      5     0.50                        vpmulhuw       %ymm0, %ymm1, %ymm2
+# CHECK-NEXT:  2      12    0.50    *                   vpmulhuw       (%rax), %ymm1, %ymm2
+# CHECK-NEXT:  1      5     0.50                        vpmulhw        %ymm0, %ymm1, %ymm2
+# CHECK-NEXT:  2      12    0.50    *                   vpmulhw        (%rax), %ymm1, %ymm2
 # CHECK-NEXT:  2      10    1.00                        vpmulld        %ymm0, %ymm1, %ymm2
 # CHECK-NEXT:  3      17    1.00    *                   vpmulld        (%rax), %ymm1, %ymm2
-# CHECK-NEXT:  1      4     0.50                        vpmullw        %ymm0, %ymm1, %ymm2
-# CHECK-NEXT:  2      11    0.50    *                   vpmullw        (%rax), %ymm1, %ymm2
-# CHECK-NEXT:  1      4     0.50                        vpmuludq       %ymm0, %ymm1, %ymm2
-# CHECK-NEXT:  2      11    0.50    *                   vpmuludq       (%rax), %ymm1, %ymm2
+# CHECK-NEXT:  1      5     0.50                        vpmullw        %ymm0, %ymm1, %ymm2
+# CHECK-NEXT:  2      12    0.50    *                   vpmullw        (%rax), %ymm1, %ymm2
+# CHECK-NEXT:  1      5     0.50                        vpmuludq       %ymm0, %ymm1, %ymm2
+# CHECK-NEXT:  2      12    0.50    *                   vpmuludq       (%rax), %ymm1, %ymm2
 # CHECK-NEXT:  1      1     0.33                        vpor   %ymm0, %ymm1, %ymm2
 # CHECK-NEXT:  2      8     0.50    *                   vpor   (%rax), %ymm1, %ymm2
 # CHECK-NEXT:  1      3     1.00                        vpsadbw        %ymm0, %ymm1, %ymm2
index 91c550c00bf4f90e75249052b58bf1ebf965b6e9..befbe68689ff9b86a4f82da45a92070466ca2d17 100644 (file)
@@ -209,12 +209,12 @@ pxor        (%rax), %mm2
 # CHECK-NEXT:  2      6     1.00    *                   pcmpgtd        (%rax), %mm2
 # CHECK-NEXT:  1      1     1.00                        pcmpgtw        %mm0, %mm2
 # CHECK-NEXT:  2      6     1.00    *                   pcmpgtw        (%rax), %mm2
-# CHECK-NEXT:  1      4     1.00                        pmaddwd        %mm0, %mm2
-# CHECK-NEXT:  2          1.00    *                   pmaddwd        (%rax), %mm2
-# CHECK-NEXT:  1      4     1.00                        pmulhw %mm0, %mm2
-# CHECK-NEXT:  2          1.00    *                   pmulhw (%rax), %mm2
-# CHECK-NEXT:  1      4     1.00                        pmullw %mm0, %mm2
-# CHECK-NEXT:  2          1.00    *                   pmullw (%rax), %mm2
+# CHECK-NEXT:  1      5     1.00                        pmaddwd        %mm0, %mm2
+# CHECK-NEXT:  2      10    1.00    *                   pmaddwd        (%rax), %mm2
+# CHECK-NEXT:  1      5     1.00                        pmulhw %mm0, %mm2
+# CHECK-NEXT:  2      10    1.00    *                   pmulhw (%rax), %mm2
+# CHECK-NEXT:  1      5     1.00                        pmullw %mm0, %mm2
+# CHECK-NEXT:  2      10    1.00    *                   pmullw (%rax), %mm2
 # CHECK-NEXT:  1      1     0.50                        por    %mm0, %mm2
 # CHECK-NEXT:  2      6     0.50    *                   por    (%rax), %mm2
 # CHECK-NEXT:  1      1     1.00                        pslld  $1, %mm2
index 7ce873567f51b2cf1690c0592ffd84c360f732f1..9754746949ef44f3c4f7c9cf1e54f5b3ba432494 100644 (file)
@@ -280,8 +280,8 @@ xorps       (%rax), %xmm2
 # CHECK-NEXT:  1      1     1.00                        pminub %mm0, %mm2
 # CHECK-NEXT:  2      6     1.00    *                   pminub (%rax), %mm2
 # CHECK-NEXT:  1      2     1.00                        pmovmskb       %mm0, %ecx
-# CHECK-NEXT:  1      4     1.00                        pmulhuw        %mm0, %mm2
-# CHECK-NEXT:  2          1.00    *                   pmulhuw        (%rax), %mm2
+# CHECK-NEXT:  1      5     1.00                        pmulhuw        %mm0, %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)
index 27ecebd9589a28eb708d6170d55648d40d473dbb..6a09e157a2ff2c7d31d7b3b492e808f4e247b5f3 100644 (file)
@@ -563,8 +563,8 @@ xorpd       (%rax), %xmm2
 # CHECK-NEXT:  2      3     1.00                        pextrw $1, %xmm0, %ecx
 # CHECK-NEXT:  2      2     2.00                        pinsrw $1, %eax, %xmm0
 # CHECK-NEXT:  2      6     1.00    *                   pinsrw $1, (%rax), %xmm0
-# CHECK-NEXT:  1      4     0.50                        pmaddwd        %xmm0, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   pmaddwd        (%rax), %xmm2
+# CHECK-NEXT:  1      5     0.50                        pmaddwd        %xmm0, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   pmaddwd        (%rax), %xmm2
 # CHECK-NEXT:  1      1     0.50                        pmaxsw %xmm0, %xmm2
 # CHECK-NEXT:  2      7     0.50    *                   pmaxsw (%rax), %xmm2
 # CHECK-NEXT:  1      1     0.50                        pmaxub %xmm0, %xmm2
@@ -574,16 +574,16 @@ xorpd       (%rax), %xmm2
 # CHECK-NEXT:  1      1     0.50                        pminub %xmm0, %xmm2
 # CHECK-NEXT:  2      7     0.50    *                   pminub (%rax), %xmm2
 # CHECK-NEXT:  1      2     1.00                        pmovmskb       %xmm0, %ecx
-# CHECK-NEXT:  1      4     0.50                        pmulhuw        %xmm0, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   pmulhuw        (%rax), %xmm2
-# CHECK-NEXT:  1      4     0.50                        pmulhw %xmm0, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   pmulhw (%rax), %xmm2
-# CHECK-NEXT:  1      4     0.50                        pmullw %xmm0, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   pmullw (%rax), %xmm2
-# CHECK-NEXT:  1      4     1.00                        pmuludq        %mm0, %mm2
-# CHECK-NEXT:  2          1.00    *                   pmuludq        (%rax), %mm2
-# CHECK-NEXT:  1      4     0.50                        pmuludq        %xmm0, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   pmuludq        (%rax), %xmm2
+# CHECK-NEXT:  1      5     0.50                        pmulhuw        %xmm0, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   pmulhuw        (%rax), %xmm2
+# CHECK-NEXT:  1      5     0.50                        pmulhw %xmm0, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   pmulhw (%rax), %xmm2
+# CHECK-NEXT:  1      5     0.50                        pmullw %xmm0, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   pmullw (%rax), %xmm2
+# CHECK-NEXT:  1      5     1.00                        pmuludq        %mm0, %mm2
+# CHECK-NEXT:  2      10    1.00    *                   pmuludq        (%rax), %mm2
+# CHECK-NEXT:  1      5     0.50                        pmuludq        %xmm0, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   pmuludq        (%rax), %xmm2
 # CHECK-NEXT:  1      1     0.33                        por    %xmm0, %xmm2
 # CHECK-NEXT:  2      7     0.50    *                   por    (%rax), %xmm2
 # CHECK-NEXT:  1      3     1.00                        psadbw %xmm0, %xmm2
index 9c4ccd4987a029bdaffe641538b9fed438493196..15cd09bf7e9768eee53bc24c40a82a6fb9f2af09 100644 (file)
@@ -237,8 +237,8 @@ roundss     $1, (%rax), %xmm2
 # CHECK-NEXT:  2      6     1.00    *                   pmovzxwd       (%rax), %xmm2
 # CHECK-NEXT:  1      1     1.00                        pmovzxwq       %xmm0, %xmm2
 # CHECK-NEXT:  2      6     1.00    *                   pmovzxwq       (%rax), %xmm2
-# CHECK-NEXT:  1      4     0.50                        pmuldq %xmm0, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   pmuldq (%rax), %xmm2
+# CHECK-NEXT:  1      5     0.50                        pmuldq %xmm0, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   pmuldq (%rax), %xmm2
 # CHECK-NEXT:  2      10    1.00                        pmulld %xmm0, %xmm2
 # CHECK-NEXT:  3      16    1.00    *                   pmulld (%rax), %xmm2
 # CHECK-NEXT:  2      3     1.00                        ptest  %xmm0, %xmm1
index bc28ab550b098740490d7dedce81a02f1f432543..c8b5cbb95245170da9b360c6bef6e8b33fee754f 100644 (file)
@@ -146,14 +146,14 @@ psignw      (%rax), %xmm2
 # CHECK-NEXT:  4      8     2.00    *                   phsubw (%rax), %mm2
 # CHECK-NEXT:  3      3     2.00                        phsubw %xmm0, %xmm2
 # CHECK-NEXT:  4      9     2.00    *                   phsubw (%rax), %xmm2
-# CHECK-NEXT:  1      4     1.00                        pmaddubsw      %mm0, %mm2
-# CHECK-NEXT:  2          1.00    *                   pmaddubsw      (%rax), %mm2
-# CHECK-NEXT:  1      4     0.50                        pmaddubsw      %xmm0, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   pmaddubsw      (%rax), %xmm2
-# CHECK-NEXT:  1      4     1.00                        pmulhrsw       %mm0, %mm2
-# CHECK-NEXT:  2          1.00    *                   pmulhrsw       (%rax), %mm2
-# CHECK-NEXT:  1      4     0.50                        pmulhrsw       %xmm0, %xmm2
-# CHECK-NEXT:  2      10    0.50    *                   pmulhrsw       (%rax), %xmm2
+# CHECK-NEXT:  1      5     1.00                        pmaddubsw      %mm0, %mm2
+# CHECK-NEXT:  2      10    1.00    *                   pmaddubsw      (%rax), %mm2
+# CHECK-NEXT:  1      5     0.50                        pmaddubsw      %xmm0, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   pmaddubsw      (%rax), %xmm2
+# CHECK-NEXT:  1      5     1.00                        pmulhrsw       %mm0, %mm2
+# CHECK-NEXT:  2      10    1.00    *                   pmulhrsw       (%rax), %mm2
+# CHECK-NEXT:  1      5     0.50                        pmulhrsw       %xmm0, %xmm2
+# CHECK-NEXT:  2      11    0.50    *                   pmulhrsw       (%rax), %xmm2
 # CHECK-NEXT:  1      1     1.00                        pshufb %mm0, %mm2
 # CHECK-NEXT:  2      6     1.00    *                   pshufb (%rax), %mm2
 # CHECK-NEXT:  1      1     1.00                        pshufb %xmm0, %xmm2