[llvm] f9b1208 - [X86][Atom] Fix vector integer multiplication resource/throughputs

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Sat May 15 06:26:02 PDT 2021


Author: Simon Pilgrim
Date: 2021-05-15T14:25:48+01:00
New Revision: f9b1208681f650eed536648e26b0f9266134b628

URL: https://github.com/llvm/llvm-project/commit/f9b1208681f650eed536648e26b0f9266134b628
DIFF: https://github.com/llvm/llvm-project/commit/f9b1208681f650eed536648e26b0f9266134b628.diff

LOG: [X86][Atom] Fix vector integer multiplication resource/throughputs

Match whats documented in the Intel AOM (and Agner/instlatx64 agree) - vector integer multiplies are pipelined - all Port0, throughput = 2 @ 128bits, 1 @ 64bits.

Noticed while checking reduction costs - now that we can use in-order models in llvm-mca, the atom model is the "worst case scenario" we have in x86.

Added: 
    

Modified: 
    llvm/lib/Target/X86/X86ScheduleAtom.td
    llvm/test/tools/llvm-mca/X86/Atom/resources-mmx.s
    llvm/test/tools/llvm-mca/X86/Atom/resources-sse1.s
    llvm/test/tools/llvm-mca/X86/Atom/resources-sse2.s
    llvm/test/tools/llvm-mca/X86/Atom/resources-ssse3.s

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/X86/X86ScheduleAtom.td b/llvm/lib/Target/X86/X86ScheduleAtom.td
index 5312a55ddcfde..6c6287e44cfb1 100644
--- a/llvm/lib/Target/X86/X86ScheduleAtom.td
+++ b/llvm/lib/Target/X86/X86ScheduleAtom.td
@@ -399,8 +399,8 @@ defm : AtomWriteResPair<WriteVecShiftImm,  [AtomPort01], [AtomPort01], 1, 1, [1]
 defm : AtomWriteResPair<WriteVecShiftImmX, [AtomPort01], [AtomPort01], 1, 1, [1], [1]>;
 defm : X86WriteResPairUnsupported<WriteVecShiftImmY>;
 defm : X86WriteResPairUnsupported<WriteVecShiftImmZ>;
-defm : AtomWriteResPair<WriteVecIMul,       [AtomPort0],  [AtomPort0], 4, 4, [4], [4]>;
-defm : AtomWriteResPair<WriteVecIMulX,      [AtomPort0],  [AtomPort0], 5, 5, [5], [5]>;
+defm : AtomWriteResPair<WriteVecIMul,       [AtomPort0],  [AtomPort0], 4, 4, [1], [1]>;
+defm : AtomWriteResPair<WriteVecIMulX,      [AtomPort0],  [AtomPort0], 5, 5, [2], [2]>;
 defm : X86WriteResPairUnsupported<WriteVecIMulY>;
 defm : X86WriteResPairUnsupported<WriteVecIMulZ>;
 defm : X86WriteResPairUnsupported<WritePMULLD>;
@@ -410,8 +410,8 @@ defm : X86WriteResPairUnsupported<WritePHMINPOS>;
 defm : X86WriteResPairUnsupported<WriteMPSAD>;
 defm : X86WriteResPairUnsupported<WriteMPSADY>;
 defm : X86WriteResPairUnsupported<WriteMPSADZ>;
-defm : AtomWriteResPair<WritePSADBW,       [AtomPort01], [AtomPort01], 4, 4, [4], [4]>;
-defm : AtomWriteResPair<WritePSADBWX,       [AtomPort0],  [AtomPort0], 5, 5, [5], [5]>;
+defm : AtomWriteResPair<WritePSADBW,        [AtomPort0],  [AtomPort0], 4, 4, [1], [1]>;
+defm : AtomWriteResPair<WritePSADBWX,       [AtomPort0],  [AtomPort0], 5, 5, [2], [2]>;
 defm : X86WriteResPairUnsupported<WritePSADBWY>;
 defm : X86WriteResPairUnsupported<WritePSADBWZ>;
 defm : AtomWriteResPair<WriteShuffle,       [AtomPort0],  [AtomPort0], 1, 1>;

diff  --git a/llvm/test/tools/llvm-mca/X86/Atom/resources-mmx.s b/llvm/test/tools/llvm-mca/X86/Atom/resources-mmx.s
index 6610a8ca007a3..28a5b6765c7c8 100644
--- a/llvm/test/tools/llvm-mca/X86/Atom/resources-mmx.s
+++ b/llvm/test/tools/llvm-mca/X86/Atom/resources-mmx.s
@@ -209,12 +209,12 @@ pxor        (%rax), %mm2
 # CHECK-NEXT:  1      1     1.00    *                   pcmpgtd	(%rax), %mm2
 # CHECK-NEXT:  1      1     0.50                        pcmpgtw	%mm0, %mm2
 # CHECK-NEXT:  1      1     1.00    *                   pcmpgtw	(%rax), %mm2
-# CHECK-NEXT:  1      4     4.00                        pmaddwd	%mm0, %mm2
-# CHECK-NEXT:  1      4     4.00    *                   pmaddwd	(%rax), %mm2
-# CHECK-NEXT:  1      4     4.00                        pmulhw	%mm0, %mm2
-# CHECK-NEXT:  1      4     4.00    *                   pmulhw	(%rax), %mm2
-# CHECK-NEXT:  1      4     4.00                        pmullw	%mm0, %mm2
-# CHECK-NEXT:  1      4     4.00    *                   pmullw	(%rax), %mm2
+# CHECK-NEXT:  1      4     1.00                        pmaddwd	%mm0, %mm2
+# CHECK-NEXT:  1      4     1.00    *                   pmaddwd	(%rax), %mm2
+# CHECK-NEXT:  1      4     1.00                        pmulhw	%mm0, %mm2
+# CHECK-NEXT:  1      4     1.00    *                   pmulhw	(%rax), %mm2
+# CHECK-NEXT:  1      4     1.00                        pmullw	%mm0, %mm2
+# CHECK-NEXT:  1      4     1.00    *                   pmullw	(%rax), %mm2
 # CHECK-NEXT:  1      1     0.50                        por	%mm0, %mm2
 # CHECK-NEXT:  1      1     1.00    *                   por	(%rax), %mm2
 # CHECK-NEXT:  1      1     0.50                        pslld	$1, %mm2
@@ -276,7 +276,7 @@ pxor        (%rax), %mm2
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]
-# CHECK-NEXT: 113.50 41.50
+# CHECK-NEXT: 95.50  41.50
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    Instructions:
@@ -325,12 +325,12 @@ pxor        (%rax), %mm2
 # CHECK-NEXT: 1.00    -     pcmpgtd	(%rax), %mm2
 # CHECK-NEXT: 0.50   0.50   pcmpgtw	%mm0, %mm2
 # CHECK-NEXT: 1.00    -     pcmpgtw	(%rax), %mm2
-# CHECK-NEXT: 4.00    -     pmaddwd	%mm0, %mm2
-# CHECK-NEXT: 4.00    -     pmaddwd	(%rax), %mm2
-# CHECK-NEXT: 4.00    -     pmulhw	%mm0, %mm2
-# CHECK-NEXT: 4.00    -     pmulhw	(%rax), %mm2
-# CHECK-NEXT: 4.00    -     pmullw	%mm0, %mm2
-# CHECK-NEXT: 4.00    -     pmullw	(%rax), %mm2
+# CHECK-NEXT: 1.00    -     pmaddwd	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     pmaddwd	(%rax), %mm2
+# CHECK-NEXT: 1.00    -     pmulhw	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     pmulhw	(%rax), %mm2
+# CHECK-NEXT: 1.00    -     pmullw	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     pmullw	(%rax), %mm2
 # CHECK-NEXT: 0.50   0.50   por	%mm0, %mm2
 # CHECK-NEXT: 1.00    -     por	(%rax), %mm2
 # CHECK-NEXT: 0.50   0.50   pslld	$1, %mm2

diff  --git a/llvm/test/tools/llvm-mca/X86/Atom/resources-sse1.s b/llvm/test/tools/llvm-mca/X86/Atom/resources-sse1.s
index 2579663c2d02c..8131f474a4496 100644
--- a/llvm/test/tools/llvm-mca/X86/Atom/resources-sse1.s
+++ b/llvm/test/tools/llvm-mca/X86/Atom/resources-sse1.s
@@ -280,14 +280,14 @@ xorps       (%rax), %xmm2
 # CHECK-NEXT:  1      1     0.50                        pminub	%mm0, %mm2
 # CHECK-NEXT:  1      1     1.00    *                   pminub	(%rax), %mm2
 # CHECK-NEXT:  1      3     3.00                        pmovmskb	%mm0, %ecx
-# CHECK-NEXT:  1      4     4.00                        pmulhuw	%mm0, %mm2
-# CHECK-NEXT:  1      4     4.00    *                   pmulhuw	(%rax), %mm2
+# CHECK-NEXT:  1      4     1.00                        pmulhuw	%mm0, %mm2
+# CHECK-NEXT:  1      4     1.00    *                   pmulhuw	(%rax), %mm2
 # CHECK-NEXT:  1      1     1.00    *      *            prefetcht0	(%rax)
 # CHECK-NEXT:  1      1     1.00    *      *            prefetcht1	(%rax)
 # CHECK-NEXT:  1      1     1.00    *      *            prefetcht2	(%rax)
 # CHECK-NEXT:  1      1     1.00    *      *            prefetchnta	(%rax)
-# CHECK-NEXT:  1      4     2.00                        psadbw	%mm0, %mm2
-# CHECK-NEXT:  1      4     2.00    *                   psadbw	(%rax), %mm2
+# CHECK-NEXT:  1      4     1.00                        psadbw	%mm0, %mm2
+# CHECK-NEXT:  1      4     1.00    *                   psadbw	(%rax), %mm2
 # CHECK-NEXT:  1      1     1.00                        pshufw	$1, %mm0, %mm2
 # CHECK-NEXT:  1      1     1.00    *                   pshufw	$1, (%rax), %mm2
 # CHECK-NEXT:  1      9     4.50                        rcpps	%xmm0, %xmm2
@@ -325,7 +325,7 @@ xorps       (%rax), %xmm2
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]
-# CHECK-NEXT: 516.00 350.00
+# CHECK-NEXT: 508.00 346.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    Instructions:
@@ -415,14 +415,14 @@ xorps       (%rax), %xmm2
 # CHECK-NEXT: 0.50   0.50   pminub	%mm0, %mm2
 # CHECK-NEXT: 1.00    -     pminub	(%rax), %mm2
 # CHECK-NEXT: 3.00    -     pmovmskb	%mm0, %ecx
-# CHECK-NEXT: 4.00    -     pmulhuw	%mm0, %mm2
-# CHECK-NEXT: 4.00    -     pmulhuw	(%rax), %mm2
+# CHECK-NEXT: 1.00    -     pmulhuw	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     pmulhuw	(%rax), %mm2
 # CHECK-NEXT: 1.00    -     prefetcht0	(%rax)
 # CHECK-NEXT: 1.00    -     prefetcht1	(%rax)
 # CHECK-NEXT: 1.00    -     prefetcht2	(%rax)
 # CHECK-NEXT: 1.00    -     prefetchnta	(%rax)
-# CHECK-NEXT: 2.00   2.00   psadbw	%mm0, %mm2
-# CHECK-NEXT: 2.00   2.00   psadbw	(%rax), %mm2
+# CHECK-NEXT: 1.00    -     psadbw	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     psadbw	(%rax), %mm2
 # CHECK-NEXT: 1.00    -     pshufw	$1, %mm0, %mm2
 # CHECK-NEXT: 1.00    -     pshufw	$1, (%rax), %mm2
 # CHECK-NEXT: 4.50   4.50   rcpps	%xmm0, %xmm2

diff  --git a/llvm/test/tools/llvm-mca/X86/Atom/resources-sse2.s b/llvm/test/tools/llvm-mca/X86/Atom/resources-sse2.s
index c490014fb665f..032b76936094c 100644
--- a/llvm/test/tools/llvm-mca/X86/Atom/resources-sse2.s
+++ b/llvm/test/tools/llvm-mca/X86/Atom/resources-sse2.s
@@ -563,8 +563,8 @@ xorpd       (%rax), %xmm2
 # CHECK-NEXT:  1      4     2.00                        pextrw	$1, %xmm0, %ecx
 # CHECK-NEXT:  1      1     1.00                        pinsrw	$1, %eax, %xmm0
 # CHECK-NEXT:  1      1     1.00    *                   pinsrw	$1, (%rax), %xmm0
-# CHECK-NEXT:  1      5     5.00                        pmaddwd	%xmm0, %xmm2
-# CHECK-NEXT:  1      5     5.00    *                   pmaddwd	(%rax), %xmm2
+# CHECK-NEXT:  1      5     2.00                        pmaddwd	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     2.00    *                   pmaddwd	(%rax), %xmm2
 # CHECK-NEXT:  1      1     0.50                        pmaxsw	%xmm0, %xmm2
 # CHECK-NEXT:  1      1     1.00    *                   pmaxsw	(%rax), %xmm2
 # CHECK-NEXT:  1      1     0.50                        pmaxub	%xmm0, %xmm2
@@ -574,20 +574,20 @@ xorpd       (%rax), %xmm2
 # CHECK-NEXT:  1      1     0.50                        pminub	%xmm0, %xmm2
 # CHECK-NEXT:  1      1     1.00    *                   pminub	(%rax), %xmm2
 # CHECK-NEXT:  1      3     3.00                        pmovmskb	%xmm0, %ecx
-# CHECK-NEXT:  1      5     5.00                        pmulhuw	%xmm0, %xmm2
-# CHECK-NEXT:  1      5     5.00    *                   pmulhuw	(%rax), %xmm2
-# CHECK-NEXT:  1      5     5.00                        pmulhw	%xmm0, %xmm2
-# CHECK-NEXT:  1      5     5.00    *                   pmulhw	(%rax), %xmm2
-# CHECK-NEXT:  1      5     5.00                        pmullw	%xmm0, %xmm2
-# CHECK-NEXT:  1      5     5.00    *                   pmullw	(%rax), %xmm2
-# CHECK-NEXT:  1      4     4.00                        pmuludq	%mm0, %mm2
-# CHECK-NEXT:  1      4     4.00    *                   pmuludq	(%rax), %mm2
-# CHECK-NEXT:  1      5     5.00                        pmuludq	%xmm0, %xmm2
-# CHECK-NEXT:  1      5     5.00    *                   pmuludq	(%rax), %xmm2
+# CHECK-NEXT:  1      5     2.00                        pmulhuw	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     2.00    *                   pmulhuw	(%rax), %xmm2
+# CHECK-NEXT:  1      5     2.00                        pmulhw	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     2.00    *                   pmulhw	(%rax), %xmm2
+# CHECK-NEXT:  1      5     2.00                        pmullw	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     2.00    *                   pmullw	(%rax), %xmm2
+# CHECK-NEXT:  1      4     1.00                        pmuludq	%mm0, %mm2
+# CHECK-NEXT:  1      4     1.00    *                   pmuludq	(%rax), %mm2
+# CHECK-NEXT:  1      5     2.00                        pmuludq	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     2.00    *                   pmuludq	(%rax), %xmm2
 # CHECK-NEXT:  1      1     0.50                        por	%xmm0, %xmm2
 # CHECK-NEXT:  1      1     1.00    *                   por	(%rax), %xmm2
-# CHECK-NEXT:  1      5     5.00                        psadbw	%xmm0, %xmm2
-# CHECK-NEXT:  1      5     5.00    *                   psadbw	(%rax), %xmm2
+# CHECK-NEXT:  1      5     2.00                        psadbw	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     2.00    *                   psadbw	(%rax), %xmm2
 # CHECK-NEXT:  1      1     1.00                        pshufd	$1, %xmm0, %xmm2
 # CHECK-NEXT:  1      1     1.00    *                   pshufd	$1, (%rax), %xmm2
 # CHECK-NEXT:  1      1     1.00                        pshufhw	$1, %xmm0, %xmm2
@@ -681,7 +681,7 @@ xorpd       (%rax), %xmm2
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]
-# CHECK-NEXT: 871.50 638.50
+# CHECK-NEXT: 829.50 638.50
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    Instructions:
@@ -841,8 +841,8 @@ xorpd       (%rax), %xmm2
 # CHECK-NEXT: 2.00   2.00   pextrw	$1, %xmm0, %ecx
 # CHECK-NEXT: 1.00    -     pinsrw	$1, %eax, %xmm0
 # CHECK-NEXT: 1.00    -     pinsrw	$1, (%rax), %xmm0
-# CHECK-NEXT: 5.00    -     pmaddwd	%xmm0, %xmm2
-# CHECK-NEXT: 5.00    -     pmaddwd	(%rax), %xmm2
+# CHECK-NEXT: 2.00    -     pmaddwd	%xmm0, %xmm2
+# CHECK-NEXT: 2.00    -     pmaddwd	(%rax), %xmm2
 # CHECK-NEXT: 0.50   0.50   pmaxsw	%xmm0, %xmm2
 # CHECK-NEXT: 1.00    -     pmaxsw	(%rax), %xmm2
 # CHECK-NEXT: 0.50   0.50   pmaxub	%xmm0, %xmm2
@@ -852,20 +852,20 @@ xorpd       (%rax), %xmm2
 # CHECK-NEXT: 0.50   0.50   pminub	%xmm0, %xmm2
 # CHECK-NEXT: 1.00    -     pminub	(%rax), %xmm2
 # CHECK-NEXT: 3.00    -     pmovmskb	%xmm0, %ecx
-# CHECK-NEXT: 5.00    -     pmulhuw	%xmm0, %xmm2
-# CHECK-NEXT: 5.00    -     pmulhuw	(%rax), %xmm2
-# CHECK-NEXT: 5.00    -     pmulhw	%xmm0, %xmm2
-# CHECK-NEXT: 5.00    -     pmulhw	(%rax), %xmm2
-# CHECK-NEXT: 5.00    -     pmullw	%xmm0, %xmm2
-# CHECK-NEXT: 5.00    -     pmullw	(%rax), %xmm2
-# CHECK-NEXT: 4.00    -     pmuludq	%mm0, %mm2
-# CHECK-NEXT: 4.00    -     pmuludq	(%rax), %mm2
-# CHECK-NEXT: 5.00    -     pmuludq	%xmm0, %xmm2
-# CHECK-NEXT: 5.00    -     pmuludq	(%rax), %xmm2
+# CHECK-NEXT: 2.00    -     pmulhuw	%xmm0, %xmm2
+# CHECK-NEXT: 2.00    -     pmulhuw	(%rax), %xmm2
+# CHECK-NEXT: 2.00    -     pmulhw	%xmm0, %xmm2
+# CHECK-NEXT: 2.00    -     pmulhw	(%rax), %xmm2
+# CHECK-NEXT: 2.00    -     pmullw	%xmm0, %xmm2
+# CHECK-NEXT: 2.00    -     pmullw	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     pmuludq	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     pmuludq	(%rax), %mm2
+# CHECK-NEXT: 2.00    -     pmuludq	%xmm0, %xmm2
+# CHECK-NEXT: 2.00    -     pmuludq	(%rax), %xmm2
 # CHECK-NEXT: 0.50   0.50   por	%xmm0, %xmm2
 # CHECK-NEXT: 1.00    -     por	(%rax), %xmm2
-# CHECK-NEXT: 5.00    -     psadbw	%xmm0, %xmm2
-# CHECK-NEXT: 5.00    -     psadbw	(%rax), %xmm2
+# CHECK-NEXT: 2.00    -     psadbw	%xmm0, %xmm2
+# CHECK-NEXT: 2.00    -     psadbw	(%rax), %xmm2
 # CHECK-NEXT: 1.00    -     pshufd	$1, %xmm0, %xmm2
 # CHECK-NEXT: 1.00    -     pshufd	$1, (%rax), %xmm2
 # CHECK-NEXT: 1.00    -     pshufhw	$1, %xmm0, %xmm2

diff  --git a/llvm/test/tools/llvm-mca/X86/Atom/resources-ssse3.s b/llvm/test/tools/llvm-mca/X86/Atom/resources-ssse3.s
index b8da070354553..05b41a9435bcc 100644
--- a/llvm/test/tools/llvm-mca/X86/Atom/resources-ssse3.s
+++ b/llvm/test/tools/llvm-mca/X86/Atom/resources-ssse3.s
@@ -146,14 +146,14 @@ psignw      (%rax), %xmm2
 # CHECK-NEXT:  1      6     3.00    *                   phsubw	(%rax), %mm2
 # CHECK-NEXT:  1      7     3.50                        phsubw	%xmm0, %xmm2
 # CHECK-NEXT:  1      8     4.00    *                   phsubw	(%rax), %xmm2
-# CHECK-NEXT:  1      4     4.00                        pmaddubsw	%mm0, %mm2
-# CHECK-NEXT:  1      4     4.00    *                   pmaddubsw	(%rax), %mm2
-# CHECK-NEXT:  1      5     5.00                        pmaddubsw	%xmm0, %xmm2
-# CHECK-NEXT:  1      5     5.00    *                   pmaddubsw	(%rax), %xmm2
-# CHECK-NEXT:  1      4     4.00                        pmulhrsw	%mm0, %mm2
-# CHECK-NEXT:  1      4     4.00    *                   pmulhrsw	(%rax), %mm2
-# CHECK-NEXT:  1      5     5.00                        pmulhrsw	%xmm0, %xmm2
-# CHECK-NEXT:  1      5     5.00    *                   pmulhrsw	(%rax), %xmm2
+# CHECK-NEXT:  1      4     1.00                        pmaddubsw	%mm0, %mm2
+# CHECK-NEXT:  1      4     1.00    *                   pmaddubsw	(%rax), %mm2
+# CHECK-NEXT:  1      5     2.00                        pmaddubsw	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     2.00    *                   pmaddubsw	(%rax), %xmm2
+# CHECK-NEXT:  1      4     1.00                        pmulhrsw	%mm0, %mm2
+# CHECK-NEXT:  1      4     1.00    *                   pmulhrsw	(%rax), %mm2
+# CHECK-NEXT:  1      5     2.00                        pmulhrsw	%xmm0, %xmm2
+# CHECK-NEXT:  1      5     2.00    *                   pmulhrsw	(%rax), %xmm2
 # CHECK-NEXT:  1      1     1.00                        pshufb	%mm0, %mm2
 # CHECK-NEXT:  1      1     1.00    *                   pshufb	(%rax), %mm2
 # CHECK-NEXT:  1      4     2.00                        pshufb	%xmm0, %xmm2
@@ -177,7 +177,7 @@ psignw      (%rax), %xmm2
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]
-# CHECK-NEXT: 130.50 76.50
+# CHECK-NEXT: 106.50 76.50
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    Instructions:
@@ -221,14 +221,14 @@ psignw      (%rax), %xmm2
 # CHECK-NEXT: 3.00   3.00   phsubw	(%rax), %mm2
 # CHECK-NEXT: 3.50   3.50   phsubw	%xmm0, %xmm2
 # CHECK-NEXT: 4.00   4.00   phsubw	(%rax), %xmm2
-# CHECK-NEXT: 4.00    -     pmaddubsw	%mm0, %mm2
-# CHECK-NEXT: 4.00    -     pmaddubsw	(%rax), %mm2
-# CHECK-NEXT: 5.00    -     pmaddubsw	%xmm0, %xmm2
-# CHECK-NEXT: 5.00    -     pmaddubsw	(%rax), %xmm2
-# CHECK-NEXT: 4.00    -     pmulhrsw	%mm0, %mm2
-# CHECK-NEXT: 4.00    -     pmulhrsw	(%rax), %mm2
-# CHECK-NEXT: 5.00    -     pmulhrsw	%xmm0, %xmm2
-# CHECK-NEXT: 5.00    -     pmulhrsw	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     pmaddubsw	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     pmaddubsw	(%rax), %mm2
+# CHECK-NEXT: 2.00    -     pmaddubsw	%xmm0, %xmm2
+# CHECK-NEXT: 2.00    -     pmaddubsw	(%rax), %xmm2
+# CHECK-NEXT: 1.00    -     pmulhrsw	%mm0, %mm2
+# CHECK-NEXT: 1.00    -     pmulhrsw	(%rax), %mm2
+# CHECK-NEXT: 2.00    -     pmulhrsw	%xmm0, %xmm2
+# CHECK-NEXT: 2.00    -     pmulhrsw	(%rax), %xmm2
 # CHECK-NEXT: 1.00    -     pshufb	%mm0, %mm2
 # CHECK-NEXT: 1.00    -     pshufb	(%rax), %mm2
 # CHECK-NEXT: 2.00   2.00   pshufb	%xmm0, %xmm2


        


More information about the llvm-commits mailing list