Index: llvm/lib/Target/X86/X86SchedSkylakeClient.td =================================================================== --- llvm/lib/Target/X86/X86SchedSkylakeClient.td +++ llvm/lib/Target/X86/X86SchedSkylakeClient.td @@ -362,9 +362,9 @@ defm : SKLWriteResPair; // Vector integer TEST instructions. defm : SKLWriteResPair; defm : X86WriteResPairUnsupported; -defm : SKLWriteResPair; // Vector integer multiply. -defm : SKLWriteResPair; -defm : SKLWriteResPair; +defm : SKLWriteResPair; // Vector integer multiply. +defm : SKLWriteResPair; +defm : SKLWriteResPair; defm : X86WriteResPairUnsupported; defm : SKLWriteResPair; // Vector PMULLD. defm : SKLWriteResPair; Index: llvm/lib/Target/X86/X86SchedSkylakeServer.td =================================================================== --- llvm/lib/Target/X86/X86SchedSkylakeServer.td +++ llvm/lib/Target/X86/X86SchedSkylakeServer.td @@ -362,10 +362,10 @@ defm : SKXWriteResPair; // Vector integer TEST instructions. defm : SKXWriteResPair; defm : SKXWriteResPair; -defm : SKXWriteResPair; // Vector integer multiply. -defm : SKXWriteResPair; -defm : SKXWriteResPair; -defm : SKXWriteResPair; +defm : SKXWriteResPair; // Vector integer multiply. +defm : SKXWriteResPair; +defm : SKXWriteResPair; +defm : SKXWriteResPair; defm : SKXWriteResPair; // Vector PMULLD. defm : SKXWriteResPair; defm : SKXWriteResPair; Index: llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-avx1.s =================================================================== --- llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-avx1.s +++ llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-avx1.s @@ -1477,10 +1477,10 @@ # 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 @@ # 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: llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-avx2.s =================================================================== --- llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-avx2.s +++ llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-avx2.s @@ -588,10 +588,10 @@ # 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 @@ # 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: llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-mmx.s =================================================================== --- llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-mmx.s +++ llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-mmx.s @@ -209,12 +209,12 @@ # 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 9 1.00 * pmaddwd (%rax), %mm2 -# CHECK-NEXT: 1 4 1.00 pmulhw %mm0, %mm2 -# CHECK-NEXT: 2 9 1.00 * pmulhw (%rax), %mm2 -# CHECK-NEXT: 1 4 1.00 pmullw %mm0, %mm2 -# CHECK-NEXT: 2 9 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: llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-sse1.s =================================================================== --- llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-sse1.s +++ llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-sse1.s @@ -280,8 +280,8 @@ # 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 9 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: llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-sse2.s =================================================================== --- llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-sse2.s +++ llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-sse2.s @@ -563,8 +563,8 @@ # 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 @@ # 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 9 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: llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-sse41.s =================================================================== --- llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-sse41.s +++ llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-sse41.s @@ -237,8 +237,8 @@ # 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: llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-ssse3.s =================================================================== --- llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-ssse3.s +++ llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-ssse3.s @@ -146,14 +146,14 @@ # 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 9 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 9 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: llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx1.s =================================================================== --- llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx1.s +++ llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx1.s @@ -1477,10 +1477,10 @@ # 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 @@ # 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: llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx2.s =================================================================== --- llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx2.s +++ llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx2.s @@ -588,10 +588,10 @@ # 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 @@ # 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: llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-mmx.s =================================================================== --- llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-mmx.s +++ llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-mmx.s @@ -209,12 +209,12 @@ # 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 9 1.00 * pmaddwd (%rax), %mm2 -# CHECK-NEXT: 1 4 1.00 pmulhw %mm0, %mm2 -# CHECK-NEXT: 2 9 1.00 * pmulhw (%rax), %mm2 -# CHECK-NEXT: 1 4 1.00 pmullw %mm0, %mm2 -# CHECK-NEXT: 2 9 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: llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-sse1.s =================================================================== --- llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-sse1.s +++ llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-sse1.s @@ -280,8 +280,8 @@ # 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 9 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: llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-sse2.s =================================================================== --- llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-sse2.s +++ llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-sse2.s @@ -563,8 +563,8 @@ # 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 @@ # 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 9 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: llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-sse41.s =================================================================== --- llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-sse41.s +++ llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-sse41.s @@ -237,8 +237,8 @@ # 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: llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-ssse3.s =================================================================== --- llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-ssse3.s +++ llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-ssse3.s @@ -146,14 +146,14 @@ # 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 9 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 9 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