From: Simon Pilgrim Date: Fri, 25 Jan 2019 09:17:30 +0000 (+0000) Subject: [llvm-mca][X86] Add missing shuffle tests X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ec3165a24ab126615b1766f6c48c0b0de844e4cb;p=llvm [llvm-mca][X86] Add missing shuffle tests Match the coverage of test\CodeGen\X86\avx512-shuffle-schedule.ll so we can get rid of -print-schedule (and fix PR37160) without losing schedule tests git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352179 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/tools/llvm-mca/X86/Generic/resources-avx512.s b/test/tools/llvm-mca/X86/Generic/resources-avx512.s index c9fcee86914..68b4e5c6b0e 100644 --- a/test/tools/llvm-mca/X86/Generic/resources-avx512.s +++ b/test/tools/llvm-mca/X86/Generic/resources-avx512.s @@ -101,6 +101,196 @@ vpaddq %zmm16, %zmm17, %zmm19 {z}{k1} vpaddq (%rax), %zmm17, %zmm19 {z}{k1} vpaddq (%rax){1to8}, %zmm17, %zmm19 {z}{k1} +vpermd %zmm16, %zmm17, %zmm19 +vpermd (%rax), %zmm17, %zmm19 +vpermd (%rax){1to16}, %zmm17, %zmm19 +vpermd %zmm16, %zmm17, %zmm19 {k1} +vpermd (%rax), %zmm17, %zmm19 {k1} +vpermd (%rax){1to16}, %zmm17, %zmm19 {k1} +vpermd %zmm16, %zmm17, %zmm19 {z}{k1} +vpermd (%rax), %zmm17, %zmm19 {z}{k1} +vpermd (%rax){1to16}, %zmm17, %zmm19 {z}{k1} + +vpermilpd $0, %zmm16, %zmm19 +vpermilpd $0, (%rax), %zmm19 +vpermilpd $0, (%rax){1to8}, %zmm19 +vpermilpd $0, %zmm16, %zmm19 {k1} +vpermilpd $0, (%rax), %zmm19 {k1} +vpermilpd $0, (%rax){1to8}, %zmm19 {k1} +vpermilpd $0, %zmm16, %zmm19 {z}{k1} +vpermilpd $0, (%rax), %zmm19 {z}{k1} +vpermilpd $0, (%rax){1to8}, %zmm19 {z}{k1} + +vpermilpd %zmm16, %zmm17, %zmm19 +vpermilpd (%rax), %zmm17, %zmm19 +vpermilpd (%rax){1to8}, %zmm17, %zmm19 +vpermilpd %zmm16, %zmm17, %zmm19 {k1} +vpermilpd (%rax), %zmm17, %zmm19 {k1} +vpermilpd (%rax){1to8}, %zmm17, %zmm19 {k1} +vpermilpd %zmm16, %zmm17, %zmm19 {z}{k1} +vpermilpd (%rax), %zmm17, %zmm19 {z}{k1} +vpermilpd (%rax){1to8}, %zmm17, %zmm19 {z}{k1} + +vpermilps $0, %zmm16, %zmm19 +vpermilps $0, (%rax), %zmm19 +vpermilps $0, (%rax){1to16}, %zmm19 +vpermilps $0, %zmm16, %zmm19 {k1} +vpermilps $0, (%rax), %zmm19 {k1} +vpermilps $0, (%rax){1to16}, %zmm19 {k1} +vpermilps $0, %zmm16, %zmm19 {z}{k1} +vpermilps $0, (%rax), %zmm19 {z}{k1} +vpermilps $0, (%rax){1to16}, %zmm19 {z}{k1} + +vpermilps %zmm16, %zmm17, %zmm19 +vpermilps (%rax), %zmm17, %zmm19 +vpermilps (%rax){1to16}, %zmm17, %zmm19 +vpermilps %zmm16, %zmm17, %zmm19 {k1} +vpermilps (%rax), %zmm17, %zmm19 {k1} +vpermilps (%rax){1to16}, %zmm17, %zmm19 {k1} +vpermilps %zmm16, %zmm17, %zmm19 {z}{k1} +vpermilps (%rax), %zmm17, %zmm19 {z}{k1} +vpermilps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} + +vpermpd $0, %zmm16, %zmm19 +vpermpd $0, (%rax), %zmm19 +vpermpd $0, (%rax){1to8}, %zmm19 +vpermpd $0, %zmm16, %zmm19 {k1} +vpermpd $0, (%rax), %zmm19 {k1} +vpermpd $0, (%rax){1to8}, %zmm19 {k1} +vpermpd $0, %zmm16, %zmm19 {z}{k1} +vpermpd $0, (%rax), %zmm19 {z}{k1} +vpermpd $0, (%rax){1to8}, %zmm19 {z}{k1} + +vpermpd %zmm16, %zmm17, %zmm19 +vpermpd (%rax), %zmm17, %zmm19 +vpermpd (%rax){1to8}, %zmm17, %zmm19 +vpermpd %zmm16, %zmm17, %zmm19 {k1} +vpermpd (%rax), %zmm17, %zmm19 {k1} +vpermpd (%rax){1to8}, %zmm17, %zmm19 {k1} +vpermpd %zmm16, %zmm17, %zmm19 {z}{k1} +vpermpd (%rax), %zmm17, %zmm19 {z}{k1} +vpermpd (%rax){1to8}, %zmm17, %zmm19 {z}{k1} + +vpermps %zmm16, %zmm17, %zmm19 +vpermps (%rax), %zmm17, %zmm19 +vpermps (%rax){1to16}, %zmm17, %zmm19 +vpermps %zmm16, %zmm17, %zmm19 {k1} +vpermps (%rax), %zmm17, %zmm19 {k1} +vpermps (%rax){1to16}, %zmm17, %zmm19 {k1} +vpermps %zmm16, %zmm17, %zmm19 {z}{k1} +vpermps (%rax), %zmm17, %zmm19 {z}{k1} +vpermps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} + +vpermq $0, %zmm16, %zmm19 +vpermq $0, (%rax), %zmm19 +vpermq $0, (%rax){1to8}, %zmm19 +vpermq $0, %zmm16, %zmm19 {k1} +vpermq $0, (%rax), %zmm19 {k1} +vpermq $0, (%rax){1to8}, %zmm19 {k1} +vpermq $0, %zmm16, %zmm19 {z}{k1} +vpermq $0, (%rax), %zmm19 {z}{k1} +vpermq $0, (%rax){1to8}, %zmm19 {z}{k1} + +vpermq %zmm16, %zmm17, %zmm19 +vpermq (%rax), %zmm17, %zmm19 +vpermq (%rax){1to8}, %zmm17, %zmm19 +vpermq %zmm16, %zmm17, %zmm19 {k1} +vpermq (%rax), %zmm17, %zmm19 {k1} +vpermq (%rax){1to8}, %zmm17, %zmm19 {k1} +vpermq %zmm16, %zmm17, %zmm19 {z}{k1} +vpermq (%rax), %zmm17, %zmm19 {z}{k1} +vpermq (%rax){1to8}, %zmm17, %zmm19 {z}{k1} + +vpshufd $0, %zmm16, %zmm19 +vpshufd $0, (%rax), %zmm19 +vpshufd $0, (%rax){1to16}, %zmm19 +vpshufd $0, %zmm16, %zmm19 {k1} +vpshufd $0, (%rax), %zmm19 {k1} +vpshufd $0, (%rax){1to16}, %zmm19 {k1} +vpshufd $0, %zmm16, %zmm19 {z}{k1} +vpshufd $0, (%rax), %zmm19 {z}{k1} +vpshufd $0, (%rax){1to16}, %zmm19 {z}{k1} + +vpunpckhdq %zmm16, %zmm17, %zmm19 +vpunpckhdq (%rax), %zmm17, %zmm19 +vpunpckhdq (%rax){1to16}, %zmm17, %zmm19 +vpunpckhdq %zmm16, %zmm17, %zmm19 {k1} +vpunpckhdq (%rax), %zmm17, %zmm19 {k1} +vpunpckhdq (%rax){1to16}, %zmm17, %zmm19 {k1} +vpunpckhdq %zmm16, %zmm17, %zmm19 {z}{k1} +vpunpckhdq (%rax), %zmm17, %zmm19 {z}{k1} +vpunpckhdq (%rax){1to16}, %zmm17, %zmm19 {z}{k1} + +vpunpckhqdq %zmm16, %zmm17, %zmm19 +vpunpckhqdq (%rax), %zmm17, %zmm19 +vpunpckhqdq (%rax){1to8}, %zmm17, %zmm19 +vpunpckhqdq %zmm16, %zmm17, %zmm19 {k1} +vpunpckhqdq (%rax), %zmm17, %zmm19 {k1} +vpunpckhqdq (%rax){1to8}, %zmm17, %zmm19 {k1} +vpunpckhqdq %zmm16, %zmm17, %zmm19 {z}{k1} +vpunpckhqdq (%rax), %zmm17, %zmm19 {z}{k1} +vpunpckhqdq (%rax){1to8}, %zmm17, %zmm19 {z}{k1} + +vpunpckldq %zmm16, %zmm17, %zmm19 +vpunpckldq (%rax), %zmm17, %zmm19 +vpunpckldq (%rax){1to16}, %zmm17, %zmm19 +vpunpckldq %zmm16, %zmm17, %zmm19 {k1} +vpunpckldq (%rax), %zmm17, %zmm19 {k1} +vpunpckldq (%rax){1to16}, %zmm17, %zmm19 {k1} +vpunpckldq %zmm16, %zmm17, %zmm19 {z}{k1} +vpunpckldq (%rax), %zmm17, %zmm19 {z}{k1} +vpunpckldq (%rax){1to16}, %zmm17, %zmm19 {z}{k1} + +vpunpcklqdq %zmm16, %zmm17, %zmm19 +vpunpcklqdq (%rax), %zmm17, %zmm19 +vpunpcklqdq (%rax){1to8}, %zmm17, %zmm19 +vpunpcklqdq %zmm16, %zmm17, %zmm19 {k1} +vpunpcklqdq (%rax), %zmm17, %zmm19 {k1} +vpunpcklqdq (%rax){1to8}, %zmm17, %zmm19 {k1} +vpunpcklqdq %zmm16, %zmm17, %zmm19 {z}{k1} +vpunpcklqdq (%rax), %zmm17, %zmm19 {z}{k1} +vpunpcklqdq (%rax){1to8}, %zmm17, %zmm19 {z}{k1} + +vshuff32x4 $0, %zmm16, %zmm17, %zmm19 +vshuff32x4 $0, (%rax), %zmm17, %zmm19 +vshuff32x4 $0, (%rax){1to16}, %zmm17, %zmm19 +vshuff32x4 $0, %zmm16, %zmm17, %zmm19 {k1} +vshuff32x4 $0, (%rax), %zmm17, %zmm19 {k1} +vshuff32x4 $0, (%rax){1to16}, %zmm17, %zmm19 {k1} +vshuff32x4 $0, %zmm16, %zmm17, %zmm19 {z}{k1} +vshuff32x4 $0, (%rax), %zmm17, %zmm19 {z}{k1} +vshuff32x4 $0, (%rax){1to16}, %zmm17, %zmm19 {z}{k1} + +vshuff64x2 $0, %zmm16, %zmm17, %zmm19 +vshuff64x2 $0, (%rax), %zmm17, %zmm19 +vshuff64x2 $0, (%rax){1to8}, %zmm17, %zmm19 +vshuff64x2 $0, %zmm16, %zmm17, %zmm19 {k1} +vshuff64x2 $0, (%rax), %zmm17, %zmm19 {k1} +vshuff64x2 $0, (%rax){1to8}, %zmm17, %zmm19 {k1} +vshuff64x2 $0, %zmm16, %zmm17, %zmm19 {z}{k1} +vshuff64x2 $0, (%rax), %zmm17, %zmm19 {z}{k1} +vshuff64x2 $0, (%rax){1to8}, %zmm17, %zmm19 {z}{k1} + +vshufi32x4 $0, %zmm16, %zmm17, %zmm19 +vshufi32x4 $0, (%rax), %zmm17, %zmm19 +vshufi32x4 $0, (%rax){1to16}, %zmm17, %zmm19 +vshufi32x4 $0, %zmm16, %zmm17, %zmm19 {k1} +vshufi32x4 $0, (%rax), %zmm17, %zmm19 {k1} +vshufi32x4 $0, (%rax){1to16}, %zmm17, %zmm19 {k1} +vshufi32x4 $0, %zmm16, %zmm17, %zmm19 {z}{k1} +vshufi32x4 $0, (%rax), %zmm17, %zmm19 {z}{k1} +vshufi32x4 $0, (%rax){1to16}, %zmm17, %zmm19 {z}{k1} + +vshufi64x2 $0, %zmm16, %zmm17, %zmm19 +vshufi64x2 $0, (%rax), %zmm17, %zmm19 +vshufi64x2 $0, (%rax){1to8}, %zmm17, %zmm19 +vshufi64x2 $0, %zmm16, %zmm17, %zmm19 {k1} +vshufi64x2 $0, (%rax), %zmm17, %zmm19 {k1} +vshufi64x2 $0, (%rax){1to8}, %zmm17, %zmm19 {k1} +vshufi64x2 $0, %zmm16, %zmm17, %zmm19 {z}{k1} +vshufi64x2 $0, (%rax), %zmm17, %zmm19 {z}{k1} +vshufi64x2 $0, (%rax){1to8}, %zmm17, %zmm19 {z}{k1} + vpsubd %zmm16, %zmm17, %zmm19 vpsubd (%rax), %zmm17, %zmm19 vpsubd (%rax){1to16}, %zmm17, %zmm19 @@ -141,6 +331,46 @@ vsubps %zmm16, %zmm17, %zmm19 {z}{k1} vsubps (%rax), %zmm17, %zmm19 {z}{k1} vsubps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} +vunpckhpd %zmm16, %zmm17, %zmm19 +vunpckhpd (%rax), %zmm17, %zmm19 +vunpckhpd (%rax){1to8}, %zmm17, %zmm19 +vunpckhpd %zmm16, %zmm17, %zmm19 {k1} +vunpckhpd (%rax), %zmm17, %zmm19 {k1} +vunpckhpd (%rax){1to8}, %zmm17, %zmm19 {k1} +vunpckhpd %zmm16, %zmm17, %zmm19 {z}{k1} +vunpckhpd (%rax), %zmm17, %zmm19 {z}{k1} +vunpckhpd (%rax){1to8}, %zmm17, %zmm19 {z}{k1} + +vunpckhps %zmm16, %zmm17, %zmm19 +vunpckhps (%rax), %zmm17, %zmm19 +vunpckhps (%rax){1to16}, %zmm17, %zmm19 +vunpckhps %zmm16, %zmm17, %zmm19 {k1} +vunpckhps (%rax), %zmm17, %zmm19 {k1} +vunpckhps (%rax){1to16}, %zmm17, %zmm19 {k1} +vunpckhps %zmm16, %zmm17, %zmm19 {z}{k1} +vunpckhps (%rax), %zmm17, %zmm19 {z}{k1} +vunpckhps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} + +vunpcklpd %zmm16, %zmm17, %zmm19 +vunpcklpd (%rax), %zmm17, %zmm19 +vunpcklpd (%rax){1to8}, %zmm17, %zmm19 +vunpcklpd %zmm16, %zmm17, %zmm19 {k1} +vunpcklpd (%rax), %zmm17, %zmm19 {k1} +vunpcklpd (%rax){1to8}, %zmm17, %zmm19 {k1} +vunpcklpd %zmm16, %zmm17, %zmm19 {z}{k1} +vunpcklpd (%rax), %zmm17, %zmm19 {z}{k1} +vunpcklpd (%rax){1to8}, %zmm17, %zmm19 {z}{k1} + +vunpcklps %zmm16, %zmm17, %zmm19 +vunpcklps (%rax), %zmm17, %zmm19 +vunpcklps (%rax){1to16}, %zmm17, %zmm19 +vunpcklps %zmm16, %zmm17, %zmm19 {k1} +vunpcklps (%rax), %zmm17, %zmm19 {k1} +vunpcklps (%rax){1to16}, %zmm17, %zmm19 {k1} +vunpcklps %zmm16, %zmm17, %zmm19 {z}{k1} +vunpcklps (%rax), %zmm17, %zmm19 {z}{k1} +vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} + # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps # CHECK-NEXT: [2]: Latency @@ -240,6 +470,177 @@ vsubps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: 1 1 0.50 vpaddq %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vpaddq (%rax), %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vpaddq (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermd (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpermd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermd (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermd (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermd (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermilpd $0, %zmm16, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermilpd $0, (%rax), %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermilpd $0, (%rax){1to8}, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpermilpd $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilpd $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilpd $0, (%rax){1to8}, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermilpd $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilpd $0, (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilpd $0, (%rax){1to8}, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermilpd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermilpd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermilpd (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpermilpd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilpd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilpd (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermilpd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilpd (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilpd (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermilps $0, %zmm16, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermilps $0, (%rax), %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermilps $0, (%rax){1to16}, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpermilps $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilps $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilps $0, (%rax){1to16}, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermilps $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilps $0, (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilps $0, (%rax){1to16}, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermilps %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpermilps %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermilps %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermpd $0, %zmm16, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermpd $0, (%rax), %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermpd $0, (%rax){1to8}, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpermpd $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermpd $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermpd $0, (%rax){1to8}, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermpd $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermpd $0, (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermpd $0, (%rax){1to8}, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermpd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermpd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermpd (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpermpd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermpd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermpd (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermpd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermpd (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermpd (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermps %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermps (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermps (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpermps %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermps (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermps (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermps %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermps (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermq $0, %zmm16, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermq $0, (%rax), %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermq $0, (%rax){1to8}, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpermq $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermq $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermq $0, (%rax){1to8}, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermq $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermq $0, (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermq $0, (%rax){1to8}, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermq %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermq (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermq (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpermq %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermq (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermq (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermq %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermq (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermq (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpshufd $0, %zmm16, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpshufd $0, (%rax), %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpshufd $0, (%rax){1to16}, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpshufd $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpshufd $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpshufd $0, (%rax){1to16}, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpshufd $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpshufd $0, (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpshufd $0, (%rax){1to16}, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpckhdq %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckhdq (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckhdq (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpunpckhdq %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckhdq (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckhdq (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpckhdq %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckhdq (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckhdq (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpckhqdq %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckhqdq (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckhqdq (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpunpckhqdq %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckhqdq (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckhqdq (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpckhqdq %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckhqdq (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckhqdq (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpckldq %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckldq (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckldq (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpunpckldq %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckldq (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckldq (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpckldq %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckldq (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckldq (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpcklqdq %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpunpcklqdq (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpunpcklqdq (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpunpcklqdq %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpcklqdq (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpcklqdq (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpcklqdq %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpcklqdq (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpcklqdq (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vshuff32x4 $0, %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vshuff32x4 $0, (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vshuff32x4 $0, (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vshuff32x4 $0, %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vshuff32x4 $0, (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vshuff32x4 $0, (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vshuff32x4 $0, %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vshuff32x4 $0, (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vshuff32x4 $0, (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vshuff64x2 $0, %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vshuff64x2 $0, (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vshuff64x2 $0, (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vshuff64x2 $0, %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vshuff64x2 $0, (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vshuff64x2 $0, (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vshuff64x2 $0, %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vshuff64x2 $0, (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vshuff64x2 $0, (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vshufi32x4 $0, %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vshufi32x4 $0, (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vshufi32x4 $0, (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vshufi32x4 $0, %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vshufi32x4 $0, (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vshufi32x4 $0, (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vshufi32x4 $0, %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vshufi32x4 $0, (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vshufi32x4 $0, (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vshufi64x2 $0, %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vshufi64x2 $0, (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vshufi64x2 $0, (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vshufi64x2 $0, %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vshufi64x2 $0, (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vshufi64x2 $0, (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vshufi64x2 $0, %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vshufi64x2 $0, (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vshufi64x2 $0, (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 1 1 0.50 vpsubd %zmm16, %zmm17, %zmm19 # CHECK-NEXT: 2 8 0.50 * vpsubd (%rax), %zmm17, %zmm19 # CHECK-NEXT: 2 8 0.50 * vpsubd (%rax){1to16}, %zmm17, %zmm19 @@ -276,6 +677,42 @@ vsubps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: 1 3 1.00 vsubps %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 10 1.00 * vsubps (%rax), %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 10 1.00 * vsubps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vunpckhpd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vunpckhpd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vunpckhpd (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vunpckhpd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpckhpd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpckhpd (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vunpckhpd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpckhpd (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpckhpd (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vunpckhps %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vunpckhps (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vunpckhps (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vunpckhps %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpckhps (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpckhps (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vunpckhps %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpckhps (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpckhps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vunpcklpd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vunpcklpd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vunpcklpd (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vunpcklpd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpcklpd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpcklpd (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vunpcklpd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpcklpd (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpcklpd (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vunpcklps %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vunpcklps (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vunpcklps (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vunpcklps %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpcklps (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpcklps (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vunpcklps %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpcklps (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpcklps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} # CHECK: Resources: # CHECK-NEXT: [0] - SBDivider @@ -289,7 +726,7 @@ vsubps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] -# CHECK-NEXT: - 648.00 63.00 63.00 - 36.00 42.00 42.00 +# CHECK-NEXT: - 648.00 63.00 63.00 - 243.00 111.00 111.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions: @@ -383,6 +820,177 @@ vsubps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: - - - 0.50 - 0.50 - - vpaddq %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpaddq (%rax), %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpaddq (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermd (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermd (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermd (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermd (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermilpd $0, %zmm16, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd $0, (%rax), %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd $0, (%rax){1to8}, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermilpd $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd $0, (%rax){1to8}, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermilpd $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd $0, (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd $0, (%rax){1to8}, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermilpd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermilpd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermilpd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermilps $0, %zmm16, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps $0, (%rax), %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps $0, (%rax){1to16}, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermilps $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps $0, (%rax){1to16}, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermilps $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps $0, (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps $0, (%rax){1to16}, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermilps %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermilps %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermilps %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermpd $0, %zmm16, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermpd $0, (%rax), %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermpd $0, (%rax){1to8}, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermpd $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermpd $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermpd $0, (%rax){1to8}, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermpd $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermpd $0, (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermpd $0, (%rax){1to8}, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermpd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermpd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermpd (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermpd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermpd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermpd (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermpd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermpd (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermpd (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermps %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermps (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermps (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermps %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermps (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermps (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermps %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermps (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermq $0, %zmm16, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermq $0, (%rax), %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermq $0, (%rax){1to8}, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermq $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermq $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermq $0, (%rax){1to8}, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermq $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermq $0, (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermq $0, (%rax){1to8}, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermq %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermq (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermq (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermq %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermq (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermq (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermq %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermq (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermq (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpshufd $0, %zmm16, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpshufd $0, (%rax), %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpshufd $0, (%rax){1to16}, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpshufd $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpshufd $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpshufd $0, (%rax){1to16}, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpshufd $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpshufd $0, (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpshufd $0, (%rax){1to16}, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpunpckhdq %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhdq (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhdq (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpunpckhdq %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhdq (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhdq (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpunpckhdq %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhdq (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhdq (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpunpckhqdq %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhqdq (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhqdq (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpunpckhqdq %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhqdq (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhqdq (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpunpckhqdq %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhqdq (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhqdq (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpunpckldq %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckldq (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckldq (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpunpckldq %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckldq (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckldq (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpunpckldq %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckldq (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckldq (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpunpcklqdq %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpcklqdq (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpcklqdq (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpunpcklqdq %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpcklqdq (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpcklqdq (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpunpcklqdq %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpcklqdq (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpcklqdq (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vshuff32x4 $0, %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshuff32x4 $0, (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshuff32x4 $0, (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vshuff32x4 $0, %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshuff32x4 $0, (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshuff32x4 $0, (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vshuff32x4 $0, %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshuff32x4 $0, (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshuff32x4 $0, (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vshuff64x2 $0, %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshuff64x2 $0, (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshuff64x2 $0, (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vshuff64x2 $0, %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshuff64x2 $0, (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshuff64x2 $0, (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vshuff64x2 $0, %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshuff64x2 $0, (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshuff64x2 $0, (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vshufi32x4 $0, %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshufi32x4 $0, (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshufi32x4 $0, (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vshufi32x4 $0, %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshufi32x4 $0, (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshufi32x4 $0, (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vshufi32x4 $0, %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshufi32x4 $0, (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshufi32x4 $0, (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vshufi64x2 $0, %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshufi64x2 $0, (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshufi64x2 $0, (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vshufi64x2 $0, %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshufi64x2 $0, (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshufi64x2 $0, (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vshufi64x2 $0, %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshufi64x2 $0, (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshufi64x2 $0, (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - - 0.50 - 0.50 - - vpsubd %zmm16, %zmm17, %zmm19 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpsubd (%rax), %zmm17, %zmm19 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpsubd (%rax){1to16}, %zmm17, %zmm19 @@ -419,3 +1027,39 @@ vsubps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: - - - 1.00 - - - - vsubps %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vsubps (%rax), %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vsubps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vunpckhpd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhpd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhpd (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vunpckhpd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhpd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhpd (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vunpckhpd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhpd (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhpd (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vunpckhps %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhps (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhps (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vunpckhps %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhps (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhps (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vunpckhps %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhps (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vunpcklpd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklpd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklpd (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vunpcklpd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklpd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklpd (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vunpcklpd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklpd (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklpd (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vunpcklps %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklps (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklps (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vunpcklps %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklps (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklps (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vunpcklps %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklps (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} diff --git a/test/tools/llvm-mca/X86/Generic/resources-avx512bw.s b/test/tools/llvm-mca/X86/Generic/resources-avx512bw.s index 8d4091eb8c2..145192932f5 100644 --- a/test/tools/llvm-mca/X86/Generic/resources-avx512bw.s +++ b/test/tools/llvm-mca/X86/Generic/resources-avx512bw.s @@ -29,6 +29,34 @@ vpaddw (%rax), %zmm17, %zmm19 {k1} vpaddw %zmm16, %zmm17, %zmm19 {z}{k1} vpaddw (%rax), %zmm17, %zmm19 {z}{k1} +vpermw %zmm16, %zmm17, %zmm19 +vpermw (%rax), %zmm17, %zmm19 +vpermw %zmm16, %zmm17, %zmm19 {k1} +vpermw (%rax), %zmm17, %zmm19 {k1} +vpermw %zmm16, %zmm17, %zmm19 {z}{k1} +vpermw (%rax), %zmm17, %zmm19 {z}{k1} + +vpshufb %zmm16, %zmm17, %zmm19 +vpshufb (%rax), %zmm17, %zmm19 +vpshufb %zmm16, %zmm17, %zmm19 {k1} +vpshufb (%rax), %zmm17, %zmm19 {k1} +vpshufb %zmm16, %zmm17, %zmm19 {z}{k1} +vpshufb (%rax), %zmm17, %zmm19 {z}{k1} + +vpshufhw $0, %zmm16, %zmm19 +vpshufhw $0, (%rax), %zmm19 +vpshufhw $0, %zmm16, %zmm19 {k1} +vpshufhw $0, (%rax), %zmm19 {k1} +vpshufhw $0, %zmm16, %zmm19 {z}{k1} +vpshufhw $0, (%rax), %zmm19 {z}{k1} + +vpshuflw $0, %zmm16, %zmm19 +vpshuflw $0, (%rax), %zmm19 +vpshuflw $0, %zmm16, %zmm19 {k1} +vpshuflw $0, (%rax), %zmm19 {k1} +vpshuflw $0, %zmm16, %zmm19 {z}{k1} +vpshuflw $0, (%rax), %zmm19 {z}{k1} + vpsubb %zmm16, %zmm17, %zmm19 vpsubb (%rax), %zmm17, %zmm19 vpsubb %zmm16, %zmm17, %zmm19 {k1} @@ -43,6 +71,34 @@ vpsubw (%rax), %zmm17, %zmm19 {k1} vpsubw %zmm16, %zmm17, %zmm19 {z}{k1} vpsubw (%rax), %zmm17, %zmm19 {z}{k1} +vpunpckhbw %zmm16, %zmm17, %zmm19 +vpunpckhbw (%rax), %zmm17, %zmm19 +vpunpckhbw %zmm16, %zmm17, %zmm19 {k1} +vpunpckhbw (%rax), %zmm17, %zmm19 {k1} +vpunpckhbw %zmm16, %zmm17, %zmm19 {z}{k1} +vpunpckhbw (%rax), %zmm17, %zmm19 {z}{k1} + +vpunpckhwd %zmm16, %zmm17, %zmm19 +vpunpckhwd (%rax), %zmm17, %zmm19 +vpunpckhwd %zmm16, %zmm17, %zmm19 {k1} +vpunpckhwd (%rax), %zmm17, %zmm19 {k1} +vpunpckhwd %zmm16, %zmm17, %zmm19 {z}{k1} +vpunpckhwd (%rax), %zmm17, %zmm19 {z}{k1} + +vpunpcklbw %zmm16, %zmm17, %zmm19 +vpunpcklbw (%rax), %zmm17, %zmm19 +vpunpcklbw %zmm16, %zmm17, %zmm19 {k1} +vpunpcklbw (%rax), %zmm17, %zmm19 {k1} +vpunpcklbw %zmm16, %zmm17, %zmm19 {z}{k1} +vpunpcklbw (%rax), %zmm17, %zmm19 {z}{k1} + +vpunpcklwd %zmm16, %zmm17, %zmm19 +vpunpcklwd (%rax), %zmm17, %zmm19 +vpunpcklwd %zmm16, %zmm17, %zmm19 {k1} +vpunpcklwd (%rax), %zmm17, %zmm19 {k1} +vpunpcklwd %zmm16, %zmm17, %zmm19 {z}{k1} +vpunpcklwd (%rax), %zmm17, %zmm19 {z}{k1} + # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps # CHECK-NEXT: [2]: Latency @@ -76,6 +132,30 @@ vpsubw (%rax), %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: 2 8 0.50 * vpaddw (%rax), %zmm17, %zmm19 {%k1} # CHECK-NEXT: 1 1 0.50 vpaddw %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vpaddw (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermw %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermw (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpermw %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermw (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermw %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermw (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 0.50 vpshufb %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 0.50 * vpshufb (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 1 1 0.50 vpshufb %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 0.50 * vpshufb (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 0.50 vpshufb %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 0.50 * vpshufb (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpshufhw $0, %zmm16, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpshufhw $0, (%rax), %zmm19 +# CHECK-NEXT: 1 1 1.00 vpshufhw $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpshufhw $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpshufhw $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpshufhw $0, (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpshuflw $0, %zmm16, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpshuflw $0, (%rax), %zmm19 +# CHECK-NEXT: 1 1 1.00 vpshuflw $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpshuflw $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpshuflw $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpshuflw $0, (%rax), %zmm19 {%k1} {z} # CHECK-NEXT: 1 1 0.50 vpsubb %zmm16, %zmm17, %zmm19 # CHECK-NEXT: 2 8 0.50 * vpsubb (%rax), %zmm17, %zmm19 # CHECK-NEXT: 1 1 0.50 vpsubb %zmm16, %zmm17, %zmm19 {%k1} @@ -88,6 +168,30 @@ vpsubw (%rax), %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: 2 8 0.50 * vpsubw (%rax), %zmm17, %zmm19 {%k1} # CHECK-NEXT: 1 1 0.50 vpsubw %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vpsubw (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpckhbw %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckhbw (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpunpckhbw %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckhbw (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpckhbw %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckhbw (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpckhwd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckhwd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpunpckhwd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckhwd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpckhwd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckhwd (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpcklbw %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpunpcklbw (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpunpcklbw %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpcklbw (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpcklbw %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpcklbw (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpcklwd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpunpcklwd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpunpcklwd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpcklwd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpcklwd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpcklwd (%rax), %zmm17, %zmm19 {%k1} {z} # CHECK: Resources: # CHECK-NEXT: [0] - SBDivider @@ -101,7 +205,7 @@ vpsubw (%rax), %zmm17, %zmm19 {z}{k1} # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] -# CHECK-NEXT: - - - 18.00 - 18.00 9.00 9.00 +# CHECK-NEXT: - - - 21.00 - 63.00 21.00 21.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions: @@ -129,6 +233,30 @@ vpsubw (%rax), %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpaddw (%rax), %zmm17, %zmm19 {%k1} # CHECK-NEXT: - - - 0.50 - 0.50 - - vpaddw %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpaddw (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermw %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermw (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermw %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermw (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermw %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermw (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpshufb %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpshufb (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpshufb %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpshufb (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpshufb %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpshufb (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpshufhw $0, %zmm16, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpshufhw $0, (%rax), %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpshufhw $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpshufhw $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpshufhw $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpshufhw $0, (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpshuflw $0, %zmm16, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpshuflw $0, (%rax), %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpshuflw $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpshuflw $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpshuflw $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpshuflw $0, (%rax), %zmm19 {%k1} {z} # CHECK-NEXT: - - - 0.50 - 0.50 - - vpsubb %zmm16, %zmm17, %zmm19 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpsubb (%rax), %zmm17, %zmm19 # CHECK-NEXT: - - - 0.50 - 0.50 - - vpsubb %zmm16, %zmm17, %zmm19 {%k1} @@ -141,3 +269,27 @@ vpsubw (%rax), %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpsubw (%rax), %zmm17, %zmm19 {%k1} # CHECK-NEXT: - - - 0.50 - 0.50 - - vpsubw %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpsubw (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpunpckhbw %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhbw (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpunpckhbw %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhbw (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpunpckhbw %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhbw (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpunpckhwd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhwd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpunpckhwd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhwd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpunpckhwd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhwd (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpunpcklbw %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpcklbw (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpunpcklbw %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpcklbw (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpunpcklbw %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpcklbw (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpunpcklwd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpcklwd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpunpcklwd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpcklwd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpunpcklwd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpcklwd (%rax), %zmm17, %zmm19 {%k1} {z} diff --git a/test/tools/llvm-mca/X86/Generic/resources-avx512bwvl.s b/test/tools/llvm-mca/X86/Generic/resources-avx512bwvl.s index 5efa5a3cf1e..71c54b8f941 100644 --- a/test/tools/llvm-mca/X86/Generic/resources-avx512bwvl.s +++ b/test/tools/llvm-mca/X86/Generic/resources-avx512bwvl.s @@ -57,6 +57,48 @@ vpaddw (%rax), %ymm17, %ymm19 {k1} vpaddw %ymm16, %ymm17, %ymm19 {z}{k1} vpaddw (%rax), %ymm17, %ymm19 {z}{k1} +vpermw %xmm16, %xmm17, %xmm19 +vpermw (%rax), %xmm17, %xmm19 +vpermw %xmm16, %xmm17, %xmm19 {k1} +vpermw (%rax), %xmm17, %xmm19 {k1} +vpermw %xmm16, %xmm17, %xmm19 {z}{k1} +vpermw (%rax), %xmm17, %xmm19 {z}{k1} + +vpermw %ymm16, %ymm17, %ymm19 +vpermw (%rax), %ymm17, %ymm19 +vpermw %ymm16, %ymm17, %ymm19 {k1} +vpermw (%rax), %ymm17, %ymm19 {k1} +vpermw %ymm16, %ymm17, %ymm19 {z}{k1} +vpermw (%rax), %ymm17, %ymm19 {z}{k1} + +vpshufb %xmm16, %xmm17, %xmm19 +vpshufb (%rax), %xmm17, %xmm19 +vpshufb %xmm16, %xmm17, %xmm19 {k1} +vpshufb (%rax), %xmm17, %xmm19 {k1} +vpshufb %xmm16, %xmm17, %xmm19 {z}{k1} +vpshufb (%rax), %xmm17, %xmm19 {z}{k1} + +vpshufb %ymm16, %ymm17, %ymm19 +vpshufb (%rax), %ymm17, %ymm19 +vpshufb %ymm16, %ymm17, %ymm19 {k1} +vpshufb (%rax), %ymm17, %ymm19 {k1} +vpshufb %ymm16, %ymm17, %ymm19 {z}{k1} +vpshufb (%rax), %ymm17, %ymm19 {z}{k1} + +vpshufhw $0, %xmm16, %xmm19 +vpshufhw $0, (%rax), %xmm19 +vpshufhw $0, %xmm16, %xmm19 {k1} +vpshufhw $0, (%rax), %xmm19 {k1} +vpshufhw $0, %xmm16, %xmm19 {z}{k1} +vpshufhw $0, (%rax), %xmm19 {z}{k1} + +vpshufhw $0, %ymm16, %ymm19 +vpshufhw $0, (%rax), %ymm19 +vpshufhw $0, %ymm16, %ymm19 {k1} +vpshufhw $0, (%rax), %ymm19 {k1} +vpshufhw $0, %ymm16, %ymm19 {z}{k1} +vpshufhw $0, (%rax), %ymm19 {z}{k1} + vpsubb %xmm16, %xmm17, %xmm19 vpsubb (%rax), %xmm17, %xmm19 vpsubb %xmm16, %xmm17, %xmm19 {k1} @@ -85,6 +127,62 @@ vpsubw (%rax), %ymm17, %ymm19 {k1} vpsubw %ymm16, %ymm17, %ymm19 {z}{k1} vpsubw (%rax), %ymm17, %ymm19 {z}{k1} +vpunpckhbw %xmm16, %xmm17, %xmm19 +vpunpckhbw (%rax), %xmm17, %xmm19 +vpunpckhbw %xmm16, %xmm17, %xmm19 {k1} +vpunpckhbw (%rax), %xmm17, %xmm19 {k1} +vpunpckhbw %xmm16, %xmm17, %xmm19 {z}{k1} +vpunpckhbw (%rax), %xmm17, %xmm19 {z}{k1} + +vpunpckhbw %ymm16, %ymm17, %ymm19 +vpunpckhbw (%rax), %ymm17, %ymm19 +vpunpckhbw %ymm16, %ymm17, %ymm19 {k1} +vpunpckhbw (%rax), %ymm17, %ymm19 {k1} +vpunpckhbw %ymm16, %ymm17, %ymm19 {z}{k1} +vpunpckhbw (%rax), %ymm17, %ymm19 {z}{k1} + +vpunpckhwd %xmm16, %xmm17, %xmm19 +vpunpckhwd (%rax), %xmm17, %xmm19 +vpunpckhwd %xmm16, %xmm17, %xmm19 {k1} +vpunpckhwd (%rax), %xmm17, %xmm19 {k1} +vpunpckhwd %xmm16, %xmm17, %xmm19 {z}{k1} +vpunpckhwd (%rax), %xmm17, %xmm19 {z}{k1} + +vpunpckhwd %ymm16, %ymm17, %ymm19 +vpunpckhwd (%rax), %ymm17, %ymm19 +vpunpckhwd %ymm16, %ymm17, %ymm19 {k1} +vpunpckhwd (%rax), %ymm17, %ymm19 {k1} +vpunpckhwd %ymm16, %ymm17, %ymm19 {z}{k1} +vpunpckhwd (%rax), %ymm17, %ymm19 {z}{k1} + +vpunpcklbw %xmm16, %xmm17, %xmm19 +vpunpcklbw (%rax), %xmm17, %xmm19 +vpunpcklbw %xmm16, %xmm17, %xmm19 {k1} +vpunpcklbw (%rax), %xmm17, %xmm19 {k1} +vpunpcklbw %xmm16, %xmm17, %xmm19 {z}{k1} +vpunpcklbw (%rax), %xmm17, %xmm19 {z}{k1} + +vpunpcklbw %ymm16, %ymm17, %ymm19 +vpunpcklbw (%rax), %ymm17, %ymm19 +vpunpcklbw %ymm16, %ymm17, %ymm19 {k1} +vpunpcklbw (%rax), %ymm17, %ymm19 {k1} +vpunpcklbw %ymm16, %ymm17, %ymm19 {z}{k1} +vpunpcklbw (%rax), %ymm17, %ymm19 {z}{k1} + +vpunpcklwd %xmm16, %xmm17, %xmm19 +vpunpcklwd (%rax), %xmm17, %xmm19 +vpunpcklwd %xmm16, %xmm17, %xmm19 {k1} +vpunpcklwd (%rax), %xmm17, %xmm19 {k1} +vpunpcklwd %xmm16, %xmm17, %xmm19 {z}{k1} +vpunpcklwd (%rax), %xmm17, %xmm19 {z}{k1} + +vpunpcklwd %ymm16, %ymm17, %ymm19 +vpunpcklwd (%rax), %ymm17, %ymm19 +vpunpcklwd %ymm16, %ymm17, %ymm19 {k1} +vpunpcklwd (%rax), %ymm17, %ymm19 {k1} +vpunpcklwd %ymm16, %ymm17, %ymm19 {z}{k1} +vpunpcklwd (%rax), %ymm17, %ymm19 {z}{k1} + # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps # CHECK-NEXT: [2]: Latency @@ -142,6 +240,42 @@ vpsubw (%rax), %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: 2 8 0.50 * vpaddw (%rax), %ymm17, %ymm19 {%k1} # CHECK-NEXT: 1 1 0.50 vpaddw %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vpaddw (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermw %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 8 1.00 * vpermw (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 1 1 1.00 vpermw %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermw (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermw %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermw (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermw %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermw (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpermw %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermw (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermw %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermw (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 0.50 vpshufb %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 0.50 * vpshufb (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 1 1 0.50 vpshufb %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 0.50 * vpshufb (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 0.50 vpshufb %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 0.50 * vpshufb (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 0.50 vpshufb %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 0.50 * vpshufb (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 1 1 0.50 vpshufb %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 0.50 * vpshufb (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 0.50 vpshufb %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 0.50 * vpshufb (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 0.50 vpshufhw $0, %xmm16, %xmm19 +# CHECK-NEXT: 2 7 0.50 * vpshufhw $0, (%rax), %xmm19 +# CHECK-NEXT: 1 1 0.50 vpshufhw $0, %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 2 7 0.50 * vpshufhw $0, (%rax), %xmm19 {%k1} +# CHECK-NEXT: 1 1 0.50 vpshufhw $0, %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 0.50 * vpshufhw $0, (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpshufhw $0, %ymm16, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpshufhw $0, (%rax), %ymm19 +# CHECK-NEXT: 1 1 1.00 vpshufhw $0, %ymm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpshufhw $0, (%rax), %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpshufhw $0, %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpshufhw $0, (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: 1 1 0.50 vpsubb %xmm16, %xmm17, %xmm19 # CHECK-NEXT: 2 7 0.50 * vpsubb (%rax), %xmm17, %xmm19 # CHECK-NEXT: 1 1 0.50 vpsubb %xmm16, %xmm17, %xmm19 {%k1} @@ -166,6 +300,54 @@ vpsubw (%rax), %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: 2 8 0.50 * vpsubw (%rax), %ymm17, %ymm19 {%k1} # CHECK-NEXT: 1 1 0.50 vpsubw %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vpsubw (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 0.50 vpunpckhbw %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 0.50 * vpunpckhbw (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 1 1 0.50 vpunpckhbw %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 0.50 * vpunpckhbw (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 0.50 vpunpckhbw %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 0.50 * vpunpckhbw (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpckhbw %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckhbw (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpunpckhbw %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckhbw (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpckhbw %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckhbw (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 0.50 vpunpckhwd %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 0.50 * vpunpckhwd (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 1 1 0.50 vpunpckhwd %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 0.50 * vpunpckhwd (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 0.50 vpunpckhwd %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 0.50 * vpunpckhwd (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpckhwd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckhwd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpunpckhwd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckhwd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpckhwd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckhwd (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 0.50 vpunpcklbw %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 0.50 * vpunpcklbw (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 1 1 0.50 vpunpcklbw %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 0.50 * vpunpcklbw (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 0.50 vpunpcklbw %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 0.50 * vpunpcklbw (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpcklbw %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpunpcklbw (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpunpcklbw %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpcklbw (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpcklbw %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpcklbw (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 0.50 vpunpcklwd %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 0.50 * vpunpcklwd (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 1 1 0.50 vpunpcklwd %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 0.50 * vpunpcklwd (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 0.50 vpunpcklwd %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 0.50 * vpunpcklwd (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpcklwd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpunpcklwd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpunpcklwd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpcklwd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpcklwd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpcklwd (%rax), %ymm17, %ymm19 {%k1} {z} # CHECK: Resources: # CHECK-NEXT: [0] - SBDivider @@ -179,7 +361,7 @@ vpsubw (%rax), %ymm17, %ymm19 {z}{k1} # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] -# CHECK-NEXT: - - - 36.00 - 36.00 18.00 18.00 +# CHECK-NEXT: - - - 57.00 - 99.00 39.00 39.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions: @@ -231,6 +413,42 @@ vpsubw (%rax), %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpaddw (%rax), %ymm17, %ymm19 {%k1} # CHECK-NEXT: - - - 0.50 - 0.50 - - vpaddw %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpaddw (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermw %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermw (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermw %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermw (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermw %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermw (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermw %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermw (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermw %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermw (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermw %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermw (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpshufb %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpshufb (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpshufb %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpshufb (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpshufb %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpshufb (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpshufb %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpshufb (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpshufb %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpshufb (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpshufb %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpshufb (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpshufhw $0, %xmm16, %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpshufhw $0, (%rax), %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpshufhw $0, %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpshufhw $0, (%rax), %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpshufhw $0, %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpshufhw $0, (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpshufhw $0, %ymm16, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpshufhw $0, (%rax), %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vpshufhw $0, %ymm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpshufhw $0, (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpshufhw $0, %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpshufhw $0, (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: - - - 0.50 - 0.50 - - vpsubb %xmm16, %xmm17, %xmm19 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpsubb (%rax), %xmm17, %xmm19 # CHECK-NEXT: - - - 0.50 - 0.50 - - vpsubb %xmm16, %xmm17, %xmm19 {%k1} @@ -255,3 +473,51 @@ vpsubw (%rax), %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpsubw (%rax), %ymm17, %ymm19 {%k1} # CHECK-NEXT: - - - 0.50 - 0.50 - - vpsubw %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpsubw (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpunpckhbw %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpunpckhbw (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpunpckhbw %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpunpckhbw (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpunpckhbw %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpunpckhbw (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpunpckhbw %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhbw (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vpunpckhbw %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhbw (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpunpckhbw %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhbw (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpunpckhwd %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpunpckhwd (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpunpckhwd %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpunpckhwd (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpunpckhwd %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpunpckhwd (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpunpckhwd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhwd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vpunpckhwd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhwd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpunpckhwd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhwd (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpunpcklbw %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpunpcklbw (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpunpcklbw %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpunpcklbw (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpunpcklbw %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpunpcklbw (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpunpcklbw %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpcklbw (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vpunpcklbw %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpcklbw (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpunpcklbw %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpcklbw (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpunpcklwd %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpunpcklwd (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpunpcklwd %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpunpcklwd (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpunpcklwd %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpunpcklwd (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpunpcklwd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpcklwd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vpunpcklwd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpcklwd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpunpcklwd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpcklwd (%rax), %ymm17, %ymm19 {%k1} {z} diff --git a/test/tools/llvm-mca/X86/Generic/resources-avx512vl.s b/test/tools/llvm-mca/X86/Generic/resources-avx512vl.s index 81358314d4a..18d92507ed9 100644 --- a/test/tools/llvm-mca/X86/Generic/resources-avx512vl.s +++ b/test/tools/llvm-mca/X86/Generic/resources-avx512vl.s @@ -121,6 +121,246 @@ vmulps %ymm16, %ymm17, %ymm19 {z}{k1} vmulps (%rax), %ymm17, %ymm19 {z}{k1} vmulps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} +vpermd %ymm16, %ymm17, %ymm19 +vpermd (%rax), %ymm17, %ymm19 +vpermd (%rax){1to8}, %ymm17, %ymm19 +vpermd %ymm16, %ymm17, %ymm19 {k1} +vpermd (%rax), %ymm17, %ymm19 {k1} +vpermd (%rax){1to8}, %ymm17, %ymm19 {k1} +vpermd %ymm16, %ymm17, %ymm19 {z}{k1} +vpermd (%rax), %ymm17, %ymm19 {z}{k1} +vpermd (%rax){1to8}, %ymm17, %ymm19 {z}{k1} + +vpermilpd $0, %xmm16, %xmm19 +vpermilpd $0, (%rax), %xmm19 +vpermilpd $0, (%rax){1to2}, %xmm19 +vpermilpd $0, %xmm16, %xmm19 {k1} +vpermilpd $0, (%rax), %xmm19 {k1} +vpermilpd $0, (%rax){1to2}, %xmm19 {k1} +vpermilpd $0, %xmm16, %xmm19 {z}{k1} +vpermilpd $0, (%rax), %xmm19 {z}{k1} +vpermilpd $0, (%rax){1to2}, %xmm19 {z}{k1} + +vpermilpd $0, %ymm16, %ymm19 +vpermilpd $0, (%rax), %ymm19 +vpermilpd $0, (%rax){1to4}, %ymm19 +vpermilpd $0, %ymm16, %ymm19 {k1} +vpermilpd $0, (%rax), %ymm19 {k1} +vpermilpd $0, (%rax){1to4}, %ymm19 {k1} +vpermilpd $0, %ymm16, %ymm19 {z}{k1} +vpermilpd $0, (%rax), %ymm19 {z}{k1} +vpermilpd $0, (%rax){1to4}, %ymm19 {z}{k1} + +vpermilpd %xmm16, %xmm17, %xmm19 +vpermilpd (%rax), %xmm17, %xmm19 +vpermilpd (%rax){1to2}, %xmm17, %xmm19 +vpermilpd %xmm16, %xmm17, %xmm19 {k1} +vpermilpd (%rax), %xmm17, %xmm19 {k1} +vpermilpd (%rax){1to2}, %xmm17, %xmm19 {k1} +vpermilpd %xmm16, %xmm17, %xmm19 {z}{k1} +vpermilpd (%rax), %xmm17, %xmm19 {z}{k1} +vpermilpd (%rax){1to2}, %xmm17, %xmm19 {z}{k1} + +vpermilpd %ymm16, %ymm17, %ymm19 +vpermilpd (%rax), %ymm17, %ymm19 +vpermilpd (%rax){1to4}, %ymm17, %ymm19 +vpermilpd %ymm16, %ymm17, %ymm19 {k1} +vpermilpd (%rax), %ymm17, %ymm19 {k1} +vpermilpd (%rax){1to4}, %ymm17, %ymm19 {k1} +vpermilpd %ymm16, %ymm17, %ymm19 {z}{k1} +vpermilpd (%rax), %ymm17, %ymm19 {z}{k1} +vpermilpd (%rax){1to4}, %ymm17, %ymm19 {z}{k1} + +vpermilps $0, %xmm16, %xmm19 +vpermilps $0, (%rax), %xmm19 +vpermilps $0, (%rax){1to4}, %xmm19 +vpermilps $0, %xmm16, %xmm19 {k1} +vpermilps $0, (%rax), %xmm19 {k1} +vpermilps $0, (%rax){1to4}, %xmm19 {k1} +vpermilps $0, %xmm16, %xmm19 {z}{k1} +vpermilps $0, (%rax), %xmm19 {z}{k1} +vpermilps $0, (%rax){1to4}, %xmm19 {z}{k1} + +vpermilps $0, %ymm16, %ymm19 +vpermilps $0, (%rax), %ymm19 +vpermilps $0, (%rax){1to8}, %ymm19 +vpermilps $0, %ymm16, %ymm19 {k1} +vpermilps $0, (%rax), %ymm19 {k1} +vpermilps $0, (%rax){1to8}, %ymm19 {k1} +vpermilps $0, %ymm16, %ymm19 {z}{k1} +vpermilps $0, (%rax), %ymm19 {z}{k1} +vpermilps $0, (%rax){1to8}, %ymm19 {z}{k1} + +vpermilps %xmm16, %xmm17, %xmm19 +vpermilps (%rax), %xmm17, %xmm19 +vpermilps (%rax){1to4}, %xmm17, %xmm19 +vpermilps %xmm16, %xmm17, %xmm19 {k1} +vpermilps (%rax), %xmm17, %xmm19 {k1} +vpermilps (%rax){1to4}, %xmm17, %xmm19 {k1} +vpermilps %xmm16, %xmm17, %xmm19 {z}{k1} +vpermilps (%rax), %xmm17, %xmm19 {z}{k1} +vpermilps (%rax){1to4}, %xmm17, %xmm19 {z}{k1} + +vpermilps %ymm16, %ymm17, %ymm19 +vpermilps (%rax), %ymm17, %ymm19 +vpermilps (%rax){1to8}, %ymm17, %ymm19 +vpermilps %ymm16, %ymm17, %ymm19 {k1} +vpermilps (%rax), %ymm17, %ymm19 {k1} +vpermilps (%rax){1to8}, %ymm17, %ymm19 {k1} +vpermilps %ymm16, %ymm17, %ymm19 {z}{k1} +vpermilps (%rax), %ymm17, %ymm19 {z}{k1} +vpermilps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} + +vpermpd $0, %ymm16, %ymm19 +vpermpd $0, (%rax), %ymm19 +vpermpd $0, (%rax){1to4}, %ymm19 +vpermpd $0, %ymm16, %ymm19 {k1} +vpermpd $0, (%rax), %ymm19 {k1} +vpermpd $0, (%rax){1to4}, %ymm19 {k1} +vpermpd $0, %ymm16, %ymm19 {z}{k1} +vpermpd $0, (%rax), %ymm19 {z}{k1} +vpermpd $0, (%rax){1to4}, %ymm19 {z}{k1} + +vpermpd %ymm16, %ymm17, %ymm19 +vpermpd (%rax), %ymm17, %ymm19 +vpermpd (%rax){1to4}, %ymm17, %ymm19 +vpermpd %ymm16, %ymm17, %ymm19 {k1} +vpermpd (%rax), %ymm17, %ymm19 {k1} +vpermpd (%rax){1to4}, %ymm17, %ymm19 {k1} +vpermpd %ymm16, %ymm17, %ymm19 {z}{k1} +vpermpd (%rax), %ymm17, %ymm19 {z}{k1} +vpermpd (%rax){1to4}, %ymm17, %ymm19 {z}{k1} + +vpermps %ymm16, %ymm17, %ymm19 +vpermps (%rax), %ymm17, %ymm19 +vpermps (%rax){1to8}, %ymm17, %ymm19 +vpermps %ymm16, %ymm17, %ymm19 {k1} +vpermps (%rax), %ymm17, %ymm19 {k1} +vpermps (%rax){1to8}, %ymm17, %ymm19 {k1} +vpermps %ymm16, %ymm17, %ymm19 {z}{k1} +vpermps (%rax), %ymm17, %ymm19 {z}{k1} +vpermps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} + +vpermq $0, %ymm16, %ymm19 +vpermq $0, (%rax), %ymm19 +vpermq $0, (%rax){1to4}, %ymm19 +vpermq $0, %ymm16, %ymm19 {k1} +vpermq $0, (%rax), %ymm19 {k1} +vpermq $0, (%rax){1to4}, %ymm19 {k1} +vpermq $0, %ymm16, %ymm19 {z}{k1} +vpermq $0, (%rax), %ymm19 {z}{k1} +vpermq $0, (%rax){1to4}, %ymm19 {z}{k1} + +vpermq %ymm16, %ymm17, %ymm19 +vpermq (%rax), %ymm17, %ymm19 +vpermq (%rax){1to4}, %ymm17, %ymm19 +vpermq %ymm16, %ymm17, %ymm19 {k1} +vpermq (%rax), %ymm17, %ymm19 {k1} +vpermq (%rax){1to4}, %ymm17, %ymm19 {k1} +vpermq %ymm16, %ymm17, %ymm19 {z}{k1} +vpermq (%rax), %ymm17, %ymm19 {z}{k1} +vpermq (%rax){1to4}, %ymm17, %ymm19 {z}{k1} + +vpshufd $0, %xmm16, %xmm19 +vpshufd $0, (%rax), %xmm19 +vpshufd $0, (%rax){1to4}, %xmm19 +vpshufd $0, %xmm16, %xmm19 {k1} +vpshufd $0, (%rax), %xmm19 {k1} +vpshufd $0, (%rax){1to4}, %xmm19 {k1} +vpshufd $0, %xmm16, %xmm19 {z}{k1} +vpshufd $0, (%rax), %xmm19 {z}{k1} +vpshufd $0, (%rax){1to4}, %xmm19 {z}{k1} + +vpshufd $0, %ymm16, %ymm19 +vpshufd $0, (%rax), %ymm19 +vpshufd $0, (%rax){1to8}, %ymm19 +vpshufd $0, %ymm16, %ymm19 {k1} +vpshufd $0, (%rax), %ymm19 {k1} +vpshufd $0, (%rax){1to8}, %ymm19 {k1} +vpshufd $0, %ymm16, %ymm19 {z}{k1} +vpshufd $0, (%rax), %ymm19 {z}{k1} +vpshufd $0, (%rax){1to8}, %ymm19 {z}{k1} + +vpunpckhdq %xmm16, %xmm17, %xmm19 +vpunpckhdq (%rax), %xmm17, %xmm19 +vpunpckhdq (%rax){1to4}, %xmm17, %xmm19 +vpunpckhdq %xmm16, %xmm17, %xmm19 {k1} +vpunpckhdq (%rax), %xmm17, %xmm19 {k1} +vpunpckhdq (%rax){1to4}, %xmm17, %xmm19 {k1} +vpunpckhdq %xmm16, %xmm17, %xmm19 {z}{k1} +vpunpckhdq (%rax), %xmm17, %xmm19 {z}{k1} +vpunpckhdq (%rax){1to4}, %xmm17, %xmm19 {z}{k1} + +vpunpckhdq %ymm16, %ymm17, %ymm19 +vpunpckhdq (%rax), %ymm17, %ymm19 +vpunpckhdq (%rax){1to8}, %ymm17, %ymm19 +vpunpckhdq %ymm16, %ymm17, %ymm19 {k1} +vpunpckhdq (%rax), %ymm17, %ymm19 {k1} +vpunpckhdq (%rax){1to8}, %ymm17, %ymm19 {k1} +vpunpckhdq %ymm16, %ymm17, %ymm19 {z}{k1} +vpunpckhdq (%rax), %ymm17, %ymm19 {z}{k1} +vpunpckhdq (%rax){1to8}, %ymm17, %ymm19 {z}{k1} + +vpunpckldq %xmm16, %xmm17, %xmm19 +vpunpckldq (%rax), %xmm17, %xmm19 +vpunpckldq (%rax){1to4}, %xmm17, %xmm19 +vpunpckldq %xmm16, %xmm17, %xmm19 {k1} +vpunpckldq (%rax), %xmm17, %xmm19 {k1} +vpunpckldq (%rax){1to4}, %xmm17, %xmm19 {k1} +vpunpckldq %xmm16, %xmm17, %xmm19 {z}{k1} +vpunpckldq (%rax), %xmm17, %xmm19 {z}{k1} +vpunpckldq (%rax){1to4}, %xmm17, %xmm19 {z}{k1} + +vpunpckldq %ymm16, %ymm17, %ymm19 +vpunpckldq (%rax), %ymm17, %ymm19 +vpunpckldq (%rax){1to8}, %ymm17, %ymm19 +vpunpckldq %ymm16, %ymm17, %ymm19 {k1} +vpunpckldq (%rax), %ymm17, %ymm19 {k1} +vpunpckldq (%rax){1to8}, %ymm17, %ymm19 {k1} +vpunpckldq %ymm16, %ymm17, %ymm19 {z}{k1} +vpunpckldq (%rax), %ymm17, %ymm19 {z}{k1} +vpunpckldq (%rax){1to8}, %ymm17, %ymm19 {z}{k1} + +vshuff32x4 $0, %ymm16, %ymm17, %ymm19 +vshuff32x4 $0, (%rax), %ymm17, %ymm19 +vshuff32x4 $0, (%rax){1to8}, %ymm17, %ymm19 +vshuff32x4 $0, %ymm16, %ymm17, %ymm19 {k1} +vshuff32x4 $0, (%rax), %ymm17, %ymm19 {k1} +vshuff32x4 $0, (%rax){1to8}, %ymm17, %ymm19 {k1} +vshuff32x4 $0, %ymm16, %ymm17, %ymm19 {z}{k1} +vshuff32x4 $0, (%rax), %ymm17, %ymm19 {z}{k1} +vshuff32x4 $0, (%rax){1to8}, %ymm17, %ymm19 {z}{k1} + +vshuff64x2 $0, %ymm16, %ymm17, %ymm19 +vshuff64x2 $0, (%rax), %ymm17, %ymm19 +vshuff64x2 $0, (%rax){1to4}, %ymm17, %ymm19 +vshuff64x2 $0, %ymm16, %ymm17, %ymm19 {k1} +vshuff64x2 $0, (%rax), %ymm17, %ymm19 {k1} +vshuff64x2 $0, (%rax){1to4}, %ymm17, %ymm19 {k1} +vshuff64x2 $0, %ymm16, %ymm17, %ymm19 {z}{k1} +vshuff64x2 $0, (%rax), %ymm17, %ymm19 {z}{k1} +vshuff64x2 $0, (%rax){1to4}, %ymm17, %ymm19 {z}{k1} + +vshufi32x4 $0, %ymm16, %ymm17, %ymm19 +vshufi32x4 $0, (%rax), %ymm17, %ymm19 +vshufi32x4 $0, (%rax){1to8}, %ymm17, %ymm19 +vshufi32x4 $0, %ymm16, %ymm17, %ymm19 {k1} +vshufi32x4 $0, (%rax), %ymm17, %ymm19 {k1} +vshufi32x4 $0, (%rax){1to8}, %ymm17, %ymm19 {k1} +vshufi32x4 $0, %ymm16, %ymm17, %ymm19 {z}{k1} +vshufi32x4 $0, (%rax), %ymm17, %ymm19 {z}{k1} +vshufi32x4 $0, (%rax){1to8}, %ymm17, %ymm19 {z}{k1} + +vshufi64x2 $0, %ymm16, %ymm17, %ymm19 +vshufi64x2 $0, (%rax), %ymm17, %ymm19 +vshufi64x2 $0, (%rax){1to4}, %ymm17, %ymm19 +vshufi64x2 $0, %ymm16, %ymm17, %ymm19 {k1} +vshufi64x2 $0, (%rax), %ymm17, %ymm19 {k1} +vshufi64x2 $0, (%rax){1to4}, %ymm17, %ymm19 {k1} +vshufi64x2 $0, %ymm16, %ymm17, %ymm19 {z}{k1} +vshufi64x2 $0, (%rax), %ymm17, %ymm19 {z}{k1} +vshufi64x2 $0, (%rax){1to4}, %ymm17, %ymm19 {z}{k1} + vsubpd %xmm16, %xmm17, %xmm19 vsubpd (%rax), %xmm17, %xmm19 vsubpd (%rax){1to2}, %xmm17, %xmm19 @@ -161,6 +401,86 @@ vsubps %ymm16, %ymm17, %ymm19 {z}{k1} vsubps (%rax), %ymm17, %ymm19 {z}{k1} vsubps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} +vunpckhpd %xmm16, %xmm17, %xmm19 +vunpckhpd (%rax), %xmm17, %xmm19 +vunpckhpd (%rax){1to2}, %xmm17, %xmm19 +vunpckhpd %xmm16, %xmm17, %xmm19 {k1} +vunpckhpd (%rax), %xmm17, %xmm19 {k1} +vunpckhpd (%rax){1to2}, %xmm17, %xmm19 {k1} +vunpckhpd %xmm16, %xmm17, %xmm19 {z}{k1} +vunpckhpd (%rax), %xmm17, %xmm19 {z}{k1} +vunpckhpd (%rax){1to2}, %xmm17, %xmm19 {z}{k1} + +vunpckhpd %ymm16, %ymm17, %ymm19 +vunpckhpd (%rax), %ymm17, %ymm19 +vunpckhpd (%rax){1to4}, %ymm17, %ymm19 +vunpckhpd %ymm16, %ymm17, %ymm19 {k1} +vunpckhpd (%rax), %ymm17, %ymm19 {k1} +vunpckhpd (%rax){1to4}, %ymm17, %ymm19 {k1} +vunpckhpd %ymm16, %ymm17, %ymm19 {z}{k1} +vunpckhpd (%rax), %ymm17, %ymm19 {z}{k1} +vunpckhpd (%rax){1to4}, %ymm17, %ymm19 {z}{k1} + +vunpckhps %xmm16, %xmm17, %xmm19 +vunpckhps (%rax), %xmm17, %xmm19 +vunpckhps (%rax){1to4}, %xmm17, %xmm19 +vunpckhps %xmm16, %xmm17, %xmm19 {k1} +vunpckhps (%rax), %xmm17, %xmm19 {k1} +vunpckhps (%rax){1to4}, %xmm17, %xmm19 {k1} +vunpckhps %xmm16, %xmm17, %xmm19 {z}{k1} +vunpckhps (%rax), %xmm17, %xmm19 {z}{k1} +vunpckhps (%rax){1to4}, %xmm17, %xmm19 {z}{k1} + +vunpckhps %ymm16, %ymm17, %ymm19 +vunpckhps (%rax), %ymm17, %ymm19 +vunpckhps (%rax){1to8}, %ymm17, %ymm19 +vunpckhps %ymm16, %ymm17, %ymm19 {k1} +vunpckhps (%rax), %ymm17, %ymm19 {k1} +vunpckhps (%rax){1to8}, %ymm17, %ymm19 {k1} +vunpckhps %ymm16, %ymm17, %ymm19 {z}{k1} +vunpckhps (%rax), %ymm17, %ymm19 {z}{k1} +vunpckhps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} + +vunpcklpd %xmm16, %xmm17, %xmm19 +vunpcklpd (%rax), %xmm17, %xmm19 +vunpcklpd (%rax){1to2}, %xmm17, %xmm19 +vunpcklpd %xmm16, %xmm17, %xmm19 {k1} +vunpcklpd (%rax), %xmm17, %xmm19 {k1} +vunpcklpd (%rax){1to2}, %xmm17, %xmm19 {k1} +vunpcklpd %xmm16, %xmm17, %xmm19 {z}{k1} +vunpcklpd (%rax), %xmm17, %xmm19 {z}{k1} +vunpcklpd (%rax){1to2}, %xmm17, %xmm19 {z}{k1} + +vunpcklpd %ymm16, %ymm17, %ymm19 +vunpcklpd (%rax), %ymm17, %ymm19 +vunpcklpd (%rax){1to4}, %ymm17, %ymm19 +vunpcklpd %ymm16, %ymm17, %ymm19 {k1} +vunpcklpd (%rax), %ymm17, %ymm19 {k1} +vunpcklpd (%rax){1to4}, %ymm17, %ymm19 {k1} +vunpcklpd %ymm16, %ymm17, %ymm19 {z}{k1} +vunpcklpd (%rax), %ymm17, %ymm19 {z}{k1} +vunpcklpd (%rax){1to4}, %ymm17, %ymm19 {z}{k1} + +vunpcklps %xmm16, %xmm17, %xmm19 +vunpcklps (%rax), %xmm17, %xmm19 +vunpcklps (%rax){1to4}, %xmm17, %xmm19 +vunpcklps %xmm16, %xmm17, %xmm19 {k1} +vunpcklps (%rax), %xmm17, %xmm19 {k1} +vunpcklps (%rax){1to4}, %xmm17, %xmm19 {k1} +vunpcklps %xmm16, %xmm17, %xmm19 {z}{k1} +vunpcklps (%rax), %xmm17, %xmm19 {z}{k1} +vunpcklps (%rax){1to4}, %xmm17, %xmm19 {z}{k1} + +vunpcklps %ymm16, %ymm17, %ymm19 +vunpcklps (%rax), %ymm17, %ymm19 +vunpcklps (%rax){1to8}, %ymm17, %ymm19 +vunpcklps %ymm16, %ymm17, %ymm19 {k1} +vunpcklps (%rax), %ymm17, %ymm19 {k1} +vunpcklps (%rax){1to8}, %ymm17, %ymm19 {k1} +vunpcklps %ymm16, %ymm17, %ymm19 {z}{k1} +vunpcklps (%rax), %ymm17, %ymm19 {z}{k1} +vunpcklps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} + # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps # CHECK-NEXT: [2]: Latency @@ -278,6 +598,222 @@ vsubps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: 1 5 1.00 vmulps %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 12 1.00 * vmulps (%rax), %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 12 1.00 * vmulps (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermd (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpermd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermd (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermd (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermd (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermilpd $0, %xmm16, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpermilpd $0, (%rax), %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpermilpd $0, (%rax){1to2}, %xmm19 +# CHECK-NEXT: 1 1 1.00 vpermilpd $0, %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpermilpd $0, (%rax), %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpermilpd $0, (%rax){1to2}, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermilpd $0, %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpermilpd $0, (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpermilpd $0, (%rax){1to2}, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermilpd $0, %ymm16, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermilpd $0, (%rax), %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermilpd $0, (%rax){1to4}, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpermilpd $0, %ymm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilpd $0, (%rax), %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilpd $0, (%rax){1to4}, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermilpd $0, %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilpd $0, (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilpd $0, (%rax){1to4}, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermilpd %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpermilpd (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpermilpd (%rax){1to2}, %xmm17, %xmm19 +# CHECK-NEXT: 1 1 1.00 vpermilpd %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpermilpd (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpermilpd (%rax){1to2}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermilpd %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpermilpd (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpermilpd (%rax){1to2}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermilpd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermilpd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermilpd (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpermilpd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilpd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilpd (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermilpd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilpd (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilpd (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermilps $0, %xmm16, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpermilps $0, (%rax), %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpermilps $0, (%rax){1to4}, %xmm19 +# CHECK-NEXT: 1 1 1.00 vpermilps $0, %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpermilps $0, (%rax), %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpermilps $0, (%rax){1to4}, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermilps $0, %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpermilps $0, (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpermilps $0, (%rax){1to4}, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermilps $0, %ymm16, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermilps $0, (%rax), %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermilps $0, (%rax){1to8}, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpermilps $0, %ymm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilps $0, (%rax), %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilps $0, (%rax){1to8}, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermilps $0, %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilps $0, (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilps $0, (%rax){1to8}, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermilps %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpermilps (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpermilps (%rax){1to4}, %xmm17, %xmm19 +# CHECK-NEXT: 1 1 1.00 vpermilps %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpermilps (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpermilps (%rax){1to4}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermilps %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpermilps (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpermilps (%rax){1to4}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermilps %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpermilps %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermilps %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermpd $0, %ymm16, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermpd $0, (%rax), %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermpd $0, (%rax){1to4}, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpermpd $0, %ymm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermpd $0, (%rax), %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermpd $0, (%rax){1to4}, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermpd $0, %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermpd $0, (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermpd $0, (%rax){1to4}, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermpd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermpd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermpd (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpermpd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermpd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermpd (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermpd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermpd (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermpd (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermps %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermps (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermps (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpermps %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermps (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermps (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermps %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermps (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermps (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermq $0, %ymm16, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermq $0, (%rax), %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermq $0, (%rax){1to4}, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpermq $0, %ymm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermq $0, (%rax), %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermq $0, (%rax){1to4}, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermq $0, %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermq $0, (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermq $0, (%rax){1to4}, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermq %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermq (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermq (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpermq %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermq (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermq (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermq %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermq (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermq (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 0.50 vpshufd $0, %xmm16, %xmm19 +# CHECK-NEXT: 2 7 0.50 * vpshufd $0, (%rax), %xmm19 +# CHECK-NEXT: 2 7 0.50 * vpshufd $0, (%rax){1to4}, %xmm19 +# CHECK-NEXT: 1 1 0.50 vpshufd $0, %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 2 7 0.50 * vpshufd $0, (%rax), %xmm19 {%k1} +# CHECK-NEXT: 2 7 0.50 * vpshufd $0, (%rax){1to4}, %xmm19 {%k1} +# CHECK-NEXT: 1 1 0.50 vpshufd $0, %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 0.50 * vpshufd $0, (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 0.50 * vpshufd $0, (%rax){1to4}, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpshufd $0, %ymm16, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpshufd $0, (%rax), %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpshufd $0, (%rax){1to8}, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpshufd $0, %ymm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpshufd $0, (%rax), %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpshufd $0, (%rax){1to8}, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpshufd $0, %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpshufd $0, (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpshufd $0, (%rax){1to8}, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 0.50 vpunpckhdq %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 0.50 * vpunpckhdq (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 2 7 0.50 * vpunpckhdq (%rax){1to4}, %xmm17, %xmm19 +# CHECK-NEXT: 1 1 0.50 vpunpckhdq %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 0.50 * vpunpckhdq (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 0.50 * vpunpckhdq (%rax){1to4}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 0.50 vpunpckhdq %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 0.50 * vpunpckhdq (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 0.50 * vpunpckhdq (%rax){1to4}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpckhdq %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckhdq (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckhdq (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpunpckhdq %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckhdq (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckhdq (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpckhdq %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckhdq (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckhdq (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 0.50 vpunpckldq %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 0.50 * vpunpckldq (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 2 7 0.50 * vpunpckldq (%rax){1to4}, %xmm17, %xmm19 +# CHECK-NEXT: 1 1 0.50 vpunpckldq %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 0.50 * vpunpckldq (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 0.50 * vpunpckldq (%rax){1to4}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 0.50 vpunpckldq %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 0.50 * vpunpckldq (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 0.50 * vpunpckldq (%rax){1to4}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpckldq %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckldq (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckldq (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpunpckldq %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckldq (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckldq (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpckldq %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckldq (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckldq (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vshuff32x4 $0, %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vshuff32x4 $0, (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vshuff32x4 $0, (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vshuff32x4 $0, %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vshuff32x4 $0, (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vshuff32x4 $0, (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vshuff32x4 $0, %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vshuff32x4 $0, (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vshuff32x4 $0, (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vshuff64x2 $0, %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vshuff64x2 $0, (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vshuff64x2 $0, (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vshuff64x2 $0, %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vshuff64x2 $0, (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vshuff64x2 $0, (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vshuff64x2 $0, %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vshuff64x2 $0, (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vshuff64x2 $0, (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vshufi32x4 $0, %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vshufi32x4 $0, (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vshufi32x4 $0, (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vshufi32x4 $0, %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vshufi32x4 $0, (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vshufi32x4 $0, (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vshufi32x4 $0, %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vshufi32x4 $0, (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vshufi32x4 $0, (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vshufi64x2 $0, %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vshufi64x2 $0, (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vshufi64x2 $0, (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vshufi64x2 $0, %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vshufi64x2 $0, (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vshufi64x2 $0, (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vshufi64x2 $0, %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vshufi64x2 $0, (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vshufi64x2 $0, (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 1 3 1.00 vsubpd %xmm16, %xmm17, %xmm19 # CHECK-NEXT: 2 9 1.00 * vsubpd (%rax), %xmm17, %xmm19 # CHECK-NEXT: 2 9 1.00 * vsubpd (%rax){1to2}, %xmm17, %xmm19 @@ -314,6 +850,78 @@ vsubps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: 1 3 1.00 vsubps %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 10 1.00 * vsubps (%rax), %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 10 1.00 * vsubps (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vunpckhpd %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vunpckhpd (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vunpckhpd (%rax){1to2}, %xmm17, %xmm19 +# CHECK-NEXT: 1 1 1.00 vunpckhpd %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vunpckhpd (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vunpckhpd (%rax){1to2}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vunpckhpd %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vunpckhpd (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vunpckhpd (%rax){1to2}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vunpckhpd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vunpckhpd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vunpckhpd (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vunpckhpd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpckhpd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpckhpd (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vunpckhpd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpckhpd (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpckhpd (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vunpckhps %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vunpckhps (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vunpckhps (%rax){1to4}, %xmm17, %xmm19 +# CHECK-NEXT: 1 1 1.00 vunpckhps %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vunpckhps (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vunpckhps (%rax){1to4}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vunpckhps %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vunpckhps (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vunpckhps (%rax){1to4}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vunpckhps %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vunpckhps (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vunpckhps (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vunpckhps %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpckhps (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpckhps (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vunpckhps %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpckhps (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpckhps (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vunpcklpd %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vunpcklpd (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vunpcklpd (%rax){1to2}, %xmm17, %xmm19 +# CHECK-NEXT: 1 1 1.00 vunpcklpd %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vunpcklpd (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vunpcklpd (%rax){1to2}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vunpcklpd %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vunpcklpd (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vunpcklpd (%rax){1to2}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vunpcklpd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vunpcklpd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vunpcklpd (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vunpcklpd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpcklpd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpcklpd (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vunpcklpd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpcklpd (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpcklpd (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vunpcklps %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vunpcklps (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vunpcklps (%rax){1to4}, %xmm17, %xmm19 +# CHECK-NEXT: 1 1 1.00 vunpcklps %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vunpcklps (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vunpcklps (%rax){1to4}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vunpcklps %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vunpcklps (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vunpcklps (%rax){1to4}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vunpcklps %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vunpcklps (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vunpcklps (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vunpcklps %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpcklps (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpcklps (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vunpcklps %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpcklps (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpcklps (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} # CHECK: Resources: # CHECK-NEXT: [0] - SBDivider @@ -327,7 +935,7 @@ vsubps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] -# CHECK-NEXT: - 972.00 99.00 72.00 - 9.00 48.00 48.00 +# CHECK-NEXT: - 972.00 99.00 85.50 - 283.50 144.00 144.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions: @@ -439,6 +1047,222 @@ vsubps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: - - 1.00 - - - - - vmulps %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vmulps (%rax), %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vmulps (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermd (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermd (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermd (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermd (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermilpd $0, %xmm16, %xmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd $0, (%rax), %xmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd $0, (%rax){1to2}, %xmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermilpd $0, %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd $0, (%rax), %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd $0, (%rax){1to2}, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermilpd $0, %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd $0, (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd $0, (%rax){1to2}, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermilpd $0, %ymm16, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd $0, (%rax), %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd $0, (%rax){1to4}, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermilpd $0, %ymm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd $0, (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd $0, (%rax){1to4}, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermilpd $0, %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd $0, (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd $0, (%rax){1to4}, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermilpd %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd (%rax){1to2}, %xmm17, %xmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermilpd %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd (%rax){1to2}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermilpd %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd (%rax){1to2}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermilpd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermilpd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermilpd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilpd (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermilps $0, %xmm16, %xmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps $0, (%rax), %xmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps $0, (%rax){1to4}, %xmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermilps $0, %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps $0, (%rax), %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps $0, (%rax){1to4}, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermilps $0, %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps $0, (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps $0, (%rax){1to4}, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermilps $0, %ymm16, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps $0, (%rax), %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps $0, (%rax){1to8}, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermilps $0, %ymm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps $0, (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps $0, (%rax){1to8}, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermilps $0, %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps $0, (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps $0, (%rax){1to8}, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermilps %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps (%rax){1to4}, %xmm17, %xmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermilps %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps (%rax){1to4}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermilps %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps (%rax){1to4}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermilps %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermilps %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermilps %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermilps (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermpd $0, %ymm16, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermpd $0, (%rax), %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermpd $0, (%rax){1to4}, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermpd $0, %ymm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermpd $0, (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermpd $0, (%rax){1to4}, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermpd $0, %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermpd $0, (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermpd $0, (%rax){1to4}, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermpd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermpd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermpd (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermpd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermpd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermpd (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermpd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermpd (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermpd (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermps %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermps (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermps (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermps %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermps (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermps (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermps %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermps (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermps (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermq $0, %ymm16, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermq $0, (%rax), %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermq $0, (%rax){1to4}, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermq $0, %ymm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermq $0, (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermq $0, (%rax){1to4}, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermq $0, %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermq $0, (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermq $0, (%rax){1to4}, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpermq %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermq (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermq (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vpermq %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermq (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermq (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpermq %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermq (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpermq (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpshufd $0, %xmm16, %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpshufd $0, (%rax), %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpshufd $0, (%rax){1to4}, %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpshufd $0, %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpshufd $0, (%rax), %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpshufd $0, (%rax){1to4}, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpshufd $0, %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpshufd $0, (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpshufd $0, (%rax){1to4}, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpshufd $0, %ymm16, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpshufd $0, (%rax), %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpshufd $0, (%rax){1to8}, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vpshufd $0, %ymm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpshufd $0, (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpshufd $0, (%rax){1to8}, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpshufd $0, %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpshufd $0, (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpshufd $0, (%rax){1to8}, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpunpckhdq %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpunpckhdq (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpunpckhdq (%rax){1to4}, %xmm17, %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpunpckhdq %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpunpckhdq (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpunpckhdq (%rax){1to4}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpunpckhdq %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpunpckhdq (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpunpckhdq (%rax){1to4}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpunpckhdq %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhdq (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhdq (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vpunpckhdq %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhdq (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhdq (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpunpckhdq %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhdq (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckhdq (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpunpckldq %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpunpckldq (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpunpckldq (%rax){1to4}, %xmm17, %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpunpckldq %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpunpckldq (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpunpckldq (%rax){1to4}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 - - vpunpckldq %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpunpckldq (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpunpckldq (%rax){1to4}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpunpckldq %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckldq (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckldq (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vpunpckldq %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckldq (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckldq (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpunpckldq %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckldq (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpunpckldq (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vshuff32x4 $0, %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshuff32x4 $0, (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshuff32x4 $0, (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vshuff32x4 $0, %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshuff32x4 $0, (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshuff32x4 $0, (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vshuff32x4 $0, %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshuff32x4 $0, (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshuff32x4 $0, (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vshuff64x2 $0, %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshuff64x2 $0, (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshuff64x2 $0, (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vshuff64x2 $0, %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshuff64x2 $0, (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshuff64x2 $0, (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vshuff64x2 $0, %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshuff64x2 $0, (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshuff64x2 $0, (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vshufi32x4 $0, %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshufi32x4 $0, (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshufi32x4 $0, (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vshufi32x4 $0, %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshufi32x4 $0, (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshufi32x4 $0, (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vshufi32x4 $0, %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshufi32x4 $0, (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshufi32x4 $0, (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vshufi64x2 $0, %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshufi64x2 $0, (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshufi64x2 $0, (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vshufi64x2 $0, %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshufi64x2 $0, (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshufi64x2 $0, (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vshufi64x2 $0, %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshufi64x2 $0, (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vshufi64x2 $0, (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - - 1.00 - - - - vsubpd %xmm16, %xmm17, %xmm19 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vsubpd (%rax), %xmm17, %xmm19 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vsubpd (%rax){1to2}, %xmm17, %xmm19 @@ -475,3 +1299,75 @@ vsubps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: - - - 1.00 - - - - vsubps %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vsubps (%rax), %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vsubps (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vunpckhpd %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhpd (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhpd (%rax){1to2}, %xmm17, %xmm19 +# CHECK-NEXT: - - - - - 1.00 - - vunpckhpd %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhpd (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhpd (%rax){1to2}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vunpckhpd %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhpd (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhpd (%rax){1to2}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vunpckhpd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhpd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhpd (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vunpckhpd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhpd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhpd (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vunpckhpd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhpd (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhpd (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vunpckhps %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhps (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhps (%rax){1to4}, %xmm17, %xmm19 +# CHECK-NEXT: - - - - - 1.00 - - vunpckhps %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhps (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhps (%rax){1to4}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vunpckhps %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhps (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhps (%rax){1to4}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vunpckhps %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhps (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhps (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vunpckhps %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhps (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhps (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vunpckhps %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhps (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpckhps (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vunpcklpd %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklpd (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklpd (%rax){1to2}, %xmm17, %xmm19 +# CHECK-NEXT: - - - - - 1.00 - - vunpcklpd %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklpd (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklpd (%rax){1to2}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vunpcklpd %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklpd (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklpd (%rax){1to2}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vunpcklpd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklpd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklpd (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vunpcklpd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklpd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklpd (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vunpcklpd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklpd (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklpd (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vunpcklps %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklps (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklps (%rax){1to4}, %xmm17, %xmm19 +# CHECK-NEXT: - - - - - 1.00 - - vunpcklps %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklps (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklps (%rax){1to4}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vunpcklps %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklps (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklps (%rax){1to4}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vunpcklps %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklps (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklps (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vunpcklps %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklps (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklps (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vunpcklps %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklps (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vunpcklps (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} diff --git a/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512.s b/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512.s index c2e955a6157..a9268b1cb10 100644 --- a/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512.s +++ b/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512.s @@ -101,6 +101,196 @@ vpaddq %zmm16, %zmm17, %zmm19 {z}{k1} vpaddq (%rax), %zmm17, %zmm19 {z}{k1} vpaddq (%rax){1to8}, %zmm17, %zmm19 {z}{k1} +vpermd %zmm16, %zmm17, %zmm19 +vpermd (%rax), %zmm17, %zmm19 +vpermd (%rax){1to16}, %zmm17, %zmm19 +vpermd %zmm16, %zmm17, %zmm19 {k1} +vpermd (%rax), %zmm17, %zmm19 {k1} +vpermd (%rax){1to16}, %zmm17, %zmm19 {k1} +vpermd %zmm16, %zmm17, %zmm19 {z}{k1} +vpermd (%rax), %zmm17, %zmm19 {z}{k1} +vpermd (%rax){1to16}, %zmm17, %zmm19 {z}{k1} + +vpermilpd $0, %zmm16, %zmm19 +vpermilpd $0, (%rax), %zmm19 +vpermilpd $0, (%rax){1to8}, %zmm19 +vpermilpd $0, %zmm16, %zmm19 {k1} +vpermilpd $0, (%rax), %zmm19 {k1} +vpermilpd $0, (%rax){1to8}, %zmm19 {k1} +vpermilpd $0, %zmm16, %zmm19 {z}{k1} +vpermilpd $0, (%rax), %zmm19 {z}{k1} +vpermilpd $0, (%rax){1to8}, %zmm19 {z}{k1} + +vpermilpd %zmm16, %zmm17, %zmm19 +vpermilpd (%rax), %zmm17, %zmm19 +vpermilpd (%rax){1to8}, %zmm17, %zmm19 +vpermilpd %zmm16, %zmm17, %zmm19 {k1} +vpermilpd (%rax), %zmm17, %zmm19 {k1} +vpermilpd (%rax){1to8}, %zmm17, %zmm19 {k1} +vpermilpd %zmm16, %zmm17, %zmm19 {z}{k1} +vpermilpd (%rax), %zmm17, %zmm19 {z}{k1} +vpermilpd (%rax){1to8}, %zmm17, %zmm19 {z}{k1} + +vpermilps $0, %zmm16, %zmm19 +vpermilps $0, (%rax), %zmm19 +vpermilps $0, (%rax){1to16}, %zmm19 +vpermilps $0, %zmm16, %zmm19 {k1} +vpermilps $0, (%rax), %zmm19 {k1} +vpermilps $0, (%rax){1to16}, %zmm19 {k1} +vpermilps $0, %zmm16, %zmm19 {z}{k1} +vpermilps $0, (%rax), %zmm19 {z}{k1} +vpermilps $0, (%rax){1to16}, %zmm19 {z}{k1} + +vpermilps %zmm16, %zmm17, %zmm19 +vpermilps (%rax), %zmm17, %zmm19 +vpermilps (%rax){1to16}, %zmm17, %zmm19 +vpermilps %zmm16, %zmm17, %zmm19 {k1} +vpermilps (%rax), %zmm17, %zmm19 {k1} +vpermilps (%rax){1to16}, %zmm17, %zmm19 {k1} +vpermilps %zmm16, %zmm17, %zmm19 {z}{k1} +vpermilps (%rax), %zmm17, %zmm19 {z}{k1} +vpermilps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} + +vpermpd $0, %zmm16, %zmm19 +vpermpd $0, (%rax), %zmm19 +vpermpd $0, (%rax){1to8}, %zmm19 +vpermpd $0, %zmm16, %zmm19 {k1} +vpermpd $0, (%rax), %zmm19 {k1} +vpermpd $0, (%rax){1to8}, %zmm19 {k1} +vpermpd $0, %zmm16, %zmm19 {z}{k1} +vpermpd $0, (%rax), %zmm19 {z}{k1} +vpermpd $0, (%rax){1to8}, %zmm19 {z}{k1} + +vpermpd %zmm16, %zmm17, %zmm19 +vpermpd (%rax), %zmm17, %zmm19 +vpermpd (%rax){1to8}, %zmm17, %zmm19 +vpermpd %zmm16, %zmm17, %zmm19 {k1} +vpermpd (%rax), %zmm17, %zmm19 {k1} +vpermpd (%rax){1to8}, %zmm17, %zmm19 {k1} +vpermpd %zmm16, %zmm17, %zmm19 {z}{k1} +vpermpd (%rax), %zmm17, %zmm19 {z}{k1} +vpermpd (%rax){1to8}, %zmm17, %zmm19 {z}{k1} + +vpermps %zmm16, %zmm17, %zmm19 +vpermps (%rax), %zmm17, %zmm19 +vpermps (%rax){1to16}, %zmm17, %zmm19 +vpermps %zmm16, %zmm17, %zmm19 {k1} +vpermps (%rax), %zmm17, %zmm19 {k1} +vpermps (%rax){1to16}, %zmm17, %zmm19 {k1} +vpermps %zmm16, %zmm17, %zmm19 {z}{k1} +vpermps (%rax), %zmm17, %zmm19 {z}{k1} +vpermps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} + +vpermq $0, %zmm16, %zmm19 +vpermq $0, (%rax), %zmm19 +vpermq $0, (%rax){1to8}, %zmm19 +vpermq $0, %zmm16, %zmm19 {k1} +vpermq $0, (%rax), %zmm19 {k1} +vpermq $0, (%rax){1to8}, %zmm19 {k1} +vpermq $0, %zmm16, %zmm19 {z}{k1} +vpermq $0, (%rax), %zmm19 {z}{k1} +vpermq $0, (%rax){1to8}, %zmm19 {z}{k1} + +vpermq %zmm16, %zmm17, %zmm19 +vpermq (%rax), %zmm17, %zmm19 +vpermq (%rax){1to8}, %zmm17, %zmm19 +vpermq %zmm16, %zmm17, %zmm19 {k1} +vpermq (%rax), %zmm17, %zmm19 {k1} +vpermq (%rax){1to8}, %zmm17, %zmm19 {k1} +vpermq %zmm16, %zmm17, %zmm19 {z}{k1} +vpermq (%rax), %zmm17, %zmm19 {z}{k1} +vpermq (%rax){1to8}, %zmm17, %zmm19 {z}{k1} + +vpshufd $0, %zmm16, %zmm19 +vpshufd $0, (%rax), %zmm19 +vpshufd $0, (%rax){1to16}, %zmm19 +vpshufd $0, %zmm16, %zmm19 {k1} +vpshufd $0, (%rax), %zmm19 {k1} +vpshufd $0, (%rax){1to16}, %zmm19 {k1} +vpshufd $0, %zmm16, %zmm19 {z}{k1} +vpshufd $0, (%rax), %zmm19 {z}{k1} +vpshufd $0, (%rax){1to16}, %zmm19 {z}{k1} + +vpunpckhdq %zmm16, %zmm17, %zmm19 +vpunpckhdq (%rax), %zmm17, %zmm19 +vpunpckhdq (%rax){1to16}, %zmm17, %zmm19 +vpunpckhdq %zmm16, %zmm17, %zmm19 {k1} +vpunpckhdq (%rax), %zmm17, %zmm19 {k1} +vpunpckhdq (%rax){1to16}, %zmm17, %zmm19 {k1} +vpunpckhdq %zmm16, %zmm17, %zmm19 {z}{k1} +vpunpckhdq (%rax), %zmm17, %zmm19 {z}{k1} +vpunpckhdq (%rax){1to16}, %zmm17, %zmm19 {z}{k1} + +vpunpckhqdq %zmm16, %zmm17, %zmm19 +vpunpckhqdq (%rax), %zmm17, %zmm19 +vpunpckhqdq (%rax){1to8}, %zmm17, %zmm19 +vpunpckhqdq %zmm16, %zmm17, %zmm19 {k1} +vpunpckhqdq (%rax), %zmm17, %zmm19 {k1} +vpunpckhqdq (%rax){1to8}, %zmm17, %zmm19 {k1} +vpunpckhqdq %zmm16, %zmm17, %zmm19 {z}{k1} +vpunpckhqdq (%rax), %zmm17, %zmm19 {z}{k1} +vpunpckhqdq (%rax){1to8}, %zmm17, %zmm19 {z}{k1} + +vpunpckldq %zmm16, %zmm17, %zmm19 +vpunpckldq (%rax), %zmm17, %zmm19 +vpunpckldq (%rax){1to16}, %zmm17, %zmm19 +vpunpckldq %zmm16, %zmm17, %zmm19 {k1} +vpunpckldq (%rax), %zmm17, %zmm19 {k1} +vpunpckldq (%rax){1to16}, %zmm17, %zmm19 {k1} +vpunpckldq %zmm16, %zmm17, %zmm19 {z}{k1} +vpunpckldq (%rax), %zmm17, %zmm19 {z}{k1} +vpunpckldq (%rax){1to16}, %zmm17, %zmm19 {z}{k1} + +vpunpcklqdq %zmm16, %zmm17, %zmm19 +vpunpcklqdq (%rax), %zmm17, %zmm19 +vpunpcklqdq (%rax){1to8}, %zmm17, %zmm19 +vpunpcklqdq %zmm16, %zmm17, %zmm19 {k1} +vpunpcklqdq (%rax), %zmm17, %zmm19 {k1} +vpunpcklqdq (%rax){1to8}, %zmm17, %zmm19 {k1} +vpunpcklqdq %zmm16, %zmm17, %zmm19 {z}{k1} +vpunpcklqdq (%rax), %zmm17, %zmm19 {z}{k1} +vpunpcklqdq (%rax){1to8}, %zmm17, %zmm19 {z}{k1} + +vshuff32x4 $0, %zmm16, %zmm17, %zmm19 +vshuff32x4 $0, (%rax), %zmm17, %zmm19 +vshuff32x4 $0, (%rax){1to16}, %zmm17, %zmm19 +vshuff32x4 $0, %zmm16, %zmm17, %zmm19 {k1} +vshuff32x4 $0, (%rax), %zmm17, %zmm19 {k1} +vshuff32x4 $0, (%rax){1to16}, %zmm17, %zmm19 {k1} +vshuff32x4 $0, %zmm16, %zmm17, %zmm19 {z}{k1} +vshuff32x4 $0, (%rax), %zmm17, %zmm19 {z}{k1} +vshuff32x4 $0, (%rax){1to16}, %zmm17, %zmm19 {z}{k1} + +vshuff64x2 $0, %zmm16, %zmm17, %zmm19 +vshuff64x2 $0, (%rax), %zmm17, %zmm19 +vshuff64x2 $0, (%rax){1to8}, %zmm17, %zmm19 +vshuff64x2 $0, %zmm16, %zmm17, %zmm19 {k1} +vshuff64x2 $0, (%rax), %zmm17, %zmm19 {k1} +vshuff64x2 $0, (%rax){1to8}, %zmm17, %zmm19 {k1} +vshuff64x2 $0, %zmm16, %zmm17, %zmm19 {z}{k1} +vshuff64x2 $0, (%rax), %zmm17, %zmm19 {z}{k1} +vshuff64x2 $0, (%rax){1to8}, %zmm17, %zmm19 {z}{k1} + +vshufi32x4 $0, %zmm16, %zmm17, %zmm19 +vshufi32x4 $0, (%rax), %zmm17, %zmm19 +vshufi32x4 $0, (%rax){1to16}, %zmm17, %zmm19 +vshufi32x4 $0, %zmm16, %zmm17, %zmm19 {k1} +vshufi32x4 $0, (%rax), %zmm17, %zmm19 {k1} +vshufi32x4 $0, (%rax){1to16}, %zmm17, %zmm19 {k1} +vshufi32x4 $0, %zmm16, %zmm17, %zmm19 {z}{k1} +vshufi32x4 $0, (%rax), %zmm17, %zmm19 {z}{k1} +vshufi32x4 $0, (%rax){1to16}, %zmm17, %zmm19 {z}{k1} + +vshufi64x2 $0, %zmm16, %zmm17, %zmm19 +vshufi64x2 $0, (%rax), %zmm17, %zmm19 +vshufi64x2 $0, (%rax){1to8}, %zmm17, %zmm19 +vshufi64x2 $0, %zmm16, %zmm17, %zmm19 {k1} +vshufi64x2 $0, (%rax), %zmm17, %zmm19 {k1} +vshufi64x2 $0, (%rax){1to8}, %zmm17, %zmm19 {k1} +vshufi64x2 $0, %zmm16, %zmm17, %zmm19 {z}{k1} +vshufi64x2 $0, (%rax), %zmm17, %zmm19 {z}{k1} +vshufi64x2 $0, (%rax){1to8}, %zmm17, %zmm19 {z}{k1} + vpsubd %zmm16, %zmm17, %zmm19 vpsubd (%rax), %zmm17, %zmm19 vpsubd (%rax){1to16}, %zmm17, %zmm19 @@ -141,6 +331,46 @@ vsubps %zmm16, %zmm17, %zmm19 {z}{k1} vsubps (%rax), %zmm17, %zmm19 {z}{k1} vsubps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} +vunpckhpd %zmm16, %zmm17, %zmm19 +vunpckhpd (%rax), %zmm17, %zmm19 +vunpckhpd (%rax){1to8}, %zmm17, %zmm19 +vunpckhpd %zmm16, %zmm17, %zmm19 {k1} +vunpckhpd (%rax), %zmm17, %zmm19 {k1} +vunpckhpd (%rax){1to8}, %zmm17, %zmm19 {k1} +vunpckhpd %zmm16, %zmm17, %zmm19 {z}{k1} +vunpckhpd (%rax), %zmm17, %zmm19 {z}{k1} +vunpckhpd (%rax){1to8}, %zmm17, %zmm19 {z}{k1} + +vunpckhps %zmm16, %zmm17, %zmm19 +vunpckhps (%rax), %zmm17, %zmm19 +vunpckhps (%rax){1to16}, %zmm17, %zmm19 +vunpckhps %zmm16, %zmm17, %zmm19 {k1} +vunpckhps (%rax), %zmm17, %zmm19 {k1} +vunpckhps (%rax){1to16}, %zmm17, %zmm19 {k1} +vunpckhps %zmm16, %zmm17, %zmm19 {z}{k1} +vunpckhps (%rax), %zmm17, %zmm19 {z}{k1} +vunpckhps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} + +vunpcklpd %zmm16, %zmm17, %zmm19 +vunpcklpd (%rax), %zmm17, %zmm19 +vunpcklpd (%rax){1to8}, %zmm17, %zmm19 +vunpcklpd %zmm16, %zmm17, %zmm19 {k1} +vunpcklpd (%rax), %zmm17, %zmm19 {k1} +vunpcklpd (%rax){1to8}, %zmm17, %zmm19 {k1} +vunpcklpd %zmm16, %zmm17, %zmm19 {z}{k1} +vunpcklpd (%rax), %zmm17, %zmm19 {z}{k1} +vunpcklpd (%rax){1to8}, %zmm17, %zmm19 {z}{k1} + +vunpcklps %zmm16, %zmm17, %zmm19 +vunpcklps (%rax), %zmm17, %zmm19 +vunpcklps (%rax){1to16}, %zmm17, %zmm19 +vunpcklps %zmm16, %zmm17, %zmm19 {k1} +vunpcklps (%rax), %zmm17, %zmm19 {k1} +vunpcklps (%rax){1to16}, %zmm17, %zmm19 {k1} +vunpcklps %zmm16, %zmm17, %zmm19 {z}{k1} +vunpcklps (%rax), %zmm17, %zmm19 {z}{k1} +vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} + # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps # CHECK-NEXT: [2]: Latency @@ -240,6 +470,177 @@ vsubps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: 1 1 0.33 vpaddq %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vpaddq (%rax), %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vpaddq (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpermd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 10 1.00 * vpermd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 10 1.00 * vpermd (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: 1 3 1.00 vpermd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vpermd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vpermd (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpermd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vpermd (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vpermd (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermilpd $0, %zmm16, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermilpd $0, (%rax), %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermilpd $0, (%rax){1to8}, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpermilpd $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilpd $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilpd $0, (%rax){1to8}, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermilpd $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilpd $0, (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilpd $0, (%rax){1to8}, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermilpd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermilpd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermilpd (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpermilpd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilpd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilpd (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermilpd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilpd (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilpd (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermilps $0, %zmm16, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermilps $0, (%rax), %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermilps $0, (%rax){1to16}, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpermilps $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilps $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilps $0, (%rax){1to16}, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermilps $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilps $0, (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilps $0, (%rax){1to16}, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermilps %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpermilps %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermilps %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpermpd $0, %zmm16, %zmm19 +# CHECK-NEXT: 2 10 1.00 * vpermpd $0, (%rax), %zmm19 +# CHECK-NEXT: 2 10 1.00 * vpermpd $0, (%rax){1to8}, %zmm19 +# CHECK-NEXT: 1 3 1.00 vpermpd $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vpermpd $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vpermpd $0, (%rax){1to8}, %zmm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpermpd $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vpermpd $0, (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vpermpd $0, (%rax){1to8}, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpermpd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 10 1.00 * vpermpd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 10 1.00 * vpermpd (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: 1 3 1.00 vpermpd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vpermpd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vpermpd (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpermpd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vpermpd (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vpermpd (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpermps %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 10 1.00 * vpermps (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 10 1.00 * vpermps (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: 1 3 1.00 vpermps %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vpermps (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vpermps (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpermps %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vpermps (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vpermps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpermq $0, %zmm16, %zmm19 +# CHECK-NEXT: 2 10 1.00 * vpermq $0, (%rax), %zmm19 +# CHECK-NEXT: 2 10 1.00 * vpermq $0, (%rax){1to8}, %zmm19 +# CHECK-NEXT: 1 3 1.00 vpermq $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vpermq $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vpermq $0, (%rax){1to8}, %zmm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpermq $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vpermq $0, (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vpermq $0, (%rax){1to8}, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpermq %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 10 1.00 * vpermq (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 10 1.00 * vpermq (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: 1 3 1.00 vpermq %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vpermq (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vpermq (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpermq %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vpermq (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vpermq (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpshufd $0, %zmm16, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpshufd $0, (%rax), %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpshufd $0, (%rax){1to16}, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpshufd $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpshufd $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpshufd $0, (%rax){1to16}, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpshufd $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpshufd $0, (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpshufd $0, (%rax){1to16}, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpckhdq %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckhdq (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckhdq (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpunpckhdq %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckhdq (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckhdq (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpckhdq %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckhdq (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckhdq (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpckhqdq %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckhqdq (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckhqdq (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpunpckhqdq %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckhqdq (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckhqdq (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpckhqdq %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckhqdq (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckhqdq (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpckldq %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckldq (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckldq (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpunpckldq %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckldq (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckldq (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpckldq %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckldq (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckldq (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpcklqdq %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpunpcklqdq (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpunpcklqdq (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpunpcklqdq %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpcklqdq (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpcklqdq (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpcklqdq %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpcklqdq (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpcklqdq (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vshuff32x4 $0, %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 10 1.00 * vshuff32x4 $0, (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 10 1.00 * vshuff32x4 $0, (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: 1 3 1.00 vshuff32x4 $0, %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vshuff32x4 $0, (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vshuff32x4 $0, (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vshuff32x4 $0, %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vshuff32x4 $0, (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vshuff32x4 $0, (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vshuff64x2 $0, %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 10 1.00 * vshuff64x2 $0, (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 10 1.00 * vshuff64x2 $0, (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: 1 3 1.00 vshuff64x2 $0, %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vshuff64x2 $0, (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vshuff64x2 $0, (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vshuff64x2 $0, %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vshuff64x2 $0, (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vshuff64x2 $0, (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vshufi32x4 $0, %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 10 1.00 * vshufi32x4 $0, (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 10 1.00 * vshufi32x4 $0, (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: 1 3 1.00 vshufi32x4 $0, %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vshufi32x4 $0, (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vshufi32x4 $0, (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vshufi32x4 $0, %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vshufi32x4 $0, (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vshufi32x4 $0, (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vshufi64x2 $0, %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 10 1.00 * vshufi64x2 $0, (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 10 1.00 * vshufi64x2 $0, (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: 1 3 1.00 vshufi64x2 $0, %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vshufi64x2 $0, (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vshufi64x2 $0, (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vshufi64x2 $0, %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vshufi64x2 $0, (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vshufi64x2 $0, (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 1 1 0.33 vpsubd %zmm16, %zmm17, %zmm19 # CHECK-NEXT: 2 8 0.50 * vpsubd (%rax), %zmm17, %zmm19 # CHECK-NEXT: 2 8 0.50 * vpsubd (%rax){1to16}, %zmm17, %zmm19 @@ -276,6 +677,42 @@ vsubps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: 1 4 0.50 vsubps %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 11 0.50 * vsubps (%rax), %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 11 0.50 * vsubps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vunpckhpd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vunpckhpd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vunpckhpd (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vunpckhpd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpckhpd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpckhpd (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vunpckhpd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpckhpd (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpckhpd (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vunpckhps %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vunpckhps (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vunpckhps (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vunpckhps %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpckhps (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpckhps (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vunpckhps %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpckhps (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpckhps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vunpcklpd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vunpcklpd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vunpcklpd (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vunpcklpd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpcklpd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpcklpd (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vunpcklpd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpcklpd (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpcklpd (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vunpcklps %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vunpcklps (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vunpcklps (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vunpcklps %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpcklps (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpcklps (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vunpcklps %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpcklps (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpcklps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} # CHECK: Resources: # CHECK-NEXT: [0] - SKXDivider @@ -291,7 +728,7 @@ vsubps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: - 234.00 93.00 12.00 42.00 42.00 - 57.00 - - +# CHECK-NEXT: - 234.00 93.00 12.00 111.00 111.00 - 264.00 - - # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -385,6 +822,177 @@ vsubps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vpaddq %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpaddq (%rax), %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpaddq (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermd (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpermd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermd (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermd (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermd (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilpd $0, %zmm16, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd $0, (%rax), %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd $0, (%rax){1to8}, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilpd $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd $0, (%rax){1to8}, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilpd $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd $0, (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd $0, (%rax){1to8}, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilpd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilpd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilpd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilps $0, %zmm16, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps $0, (%rax), %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps $0, (%rax){1to16}, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilps $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps $0, (%rax){1to16}, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilps $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps $0, (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps $0, (%rax){1to16}, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilps %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilps %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilps %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermpd $0, %zmm16, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermpd $0, (%rax), %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermpd $0, (%rax){1to8}, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpermpd $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermpd $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermpd $0, (%rax){1to8}, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermpd $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermpd $0, (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermpd $0, (%rax){1to8}, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermpd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermpd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermpd (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpermpd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermpd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermpd (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermpd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermpd (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermpd (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermps %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermps (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermps (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpermps %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermps (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermps (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermps %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermps (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermq $0, %zmm16, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermq $0, (%rax), %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermq $0, (%rax){1to8}, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpermq $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermq $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermq $0, (%rax){1to8}, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermq $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermq $0, (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermq $0, (%rax){1to8}, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermq %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermq (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermq (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpermq %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermq (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermq (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermq %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermq (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermq (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufd $0, %zmm16, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufd $0, (%rax), %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufd $0, (%rax){1to16}, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufd $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufd $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufd $0, (%rax){1to16}, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufd $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufd $0, (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufd $0, (%rax){1to16}, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhdq %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhdq (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhdq (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhdq %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhdq (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhdq (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhdq %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhdq (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhdq (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhqdq %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhqdq (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhqdq (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhqdq %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhqdq (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhqdq (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhqdq %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhqdq (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhqdq (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckldq %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckldq (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckldq (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckldq %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckldq (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckldq (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckldq %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckldq (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckldq (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpcklqdq %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpcklqdq (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpcklqdq (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpcklqdq %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpcklqdq (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpcklqdq (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpcklqdq %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpcklqdq (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpcklqdq (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vshuff32x4 $0, %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshuff32x4 $0, (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshuff32x4 $0, (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vshuff32x4 $0, %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshuff32x4 $0, (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshuff32x4 $0, (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vshuff32x4 $0, %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshuff32x4 $0, (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshuff32x4 $0, (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vshuff64x2 $0, %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshuff64x2 $0, (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshuff64x2 $0, (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vshuff64x2 $0, %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshuff64x2 $0, (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshuff64x2 $0, (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vshuff64x2 $0, %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshuff64x2 $0, (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshuff64x2 $0, (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vshufi32x4 $0, %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshufi32x4 $0, (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshufi32x4 $0, (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vshufi32x4 $0, %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshufi32x4 $0, (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshufi32x4 $0, (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vshufi32x4 $0, %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshufi32x4 $0, (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshufi32x4 $0, (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vshufi64x2 $0, %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshufi64x2 $0, (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshufi64x2 $0, (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vshufi64x2 $0, %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshufi64x2 $0, (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshufi64x2 $0, (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vshufi64x2 $0, %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshufi64x2 $0, (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshufi64x2 $0, (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vpsubd %zmm16, %zmm17, %zmm19 # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpsubd (%rax), %zmm17, %zmm19 # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpsubd (%rax){1to16}, %zmm17, %zmm19 @@ -421,3 +1029,39 @@ vsubps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: - - 0.50 - - - - 0.50 - - vsubps %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - 0.50 - 0.50 0.50 - 0.50 - - vsubps (%rax), %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - 0.50 - 0.50 0.50 - 0.50 - - vsubps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vunpckhpd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhpd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhpd (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vunpckhpd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhpd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhpd (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vunpckhpd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhpd (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhpd (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vunpckhps %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhps (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhps (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vunpckhps %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhps (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhps (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vunpckhps %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhps (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vunpcklpd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklpd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklpd (%rax){1to8}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vunpcklpd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklpd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklpd (%rax){1to8}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vunpcklpd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklpd (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklpd (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vunpcklps %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklps (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklps (%rax){1to16}, %zmm17, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vunpcklps %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklps (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklps (%rax){1to16}, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vunpcklps %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklps (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklps (%rax){1to16}, %zmm17, %zmm19 {%k1} {z} diff --git a/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512bw.s b/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512bw.s index e9b502a6090..a73e63c846f 100644 --- a/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512bw.s +++ b/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512bw.s @@ -29,6 +29,34 @@ vpaddw (%rax), %zmm17, %zmm19 {k1} vpaddw %zmm16, %zmm17, %zmm19 {z}{k1} vpaddw (%rax), %zmm17, %zmm19 {z}{k1} +vpermw %zmm16, %zmm17, %zmm19 +vpermw (%rax), %zmm17, %zmm19 +vpermw %zmm16, %zmm17, %zmm19 {k1} +vpermw (%rax), %zmm17, %zmm19 {k1} +vpermw %zmm16, %zmm17, %zmm19 {z}{k1} +vpermw (%rax), %zmm17, %zmm19 {z}{k1} + +vpshufb %zmm16, %zmm17, %zmm19 +vpshufb (%rax), %zmm17, %zmm19 +vpshufb %zmm16, %zmm17, %zmm19 {k1} +vpshufb (%rax), %zmm17, %zmm19 {k1} +vpshufb %zmm16, %zmm17, %zmm19 {z}{k1} +vpshufb (%rax), %zmm17, %zmm19 {z}{k1} + +vpshufhw $0, %zmm16, %zmm19 +vpshufhw $0, (%rax), %zmm19 +vpshufhw $0, %zmm16, %zmm19 {k1} +vpshufhw $0, (%rax), %zmm19 {k1} +vpshufhw $0, %zmm16, %zmm19 {z}{k1} +vpshufhw $0, (%rax), %zmm19 {z}{k1} + +vpshuflw $0, %zmm16, %zmm19 +vpshuflw $0, (%rax), %zmm19 +vpshuflw $0, %zmm16, %zmm19 {k1} +vpshuflw $0, (%rax), %zmm19 {k1} +vpshuflw $0, %zmm16, %zmm19 {z}{k1} +vpshuflw $0, (%rax), %zmm19 {z}{k1} + vpsubb %zmm16, %zmm17, %zmm19 vpsubb (%rax), %zmm17, %zmm19 vpsubb %zmm16, %zmm17, %zmm19 {k1} @@ -43,6 +71,34 @@ vpsubw (%rax), %zmm17, %zmm19 {k1} vpsubw %zmm16, %zmm17, %zmm19 {z}{k1} vpsubw (%rax), %zmm17, %zmm19 {z}{k1} +vpunpckhbw %zmm16, %zmm17, %zmm19 +vpunpckhbw (%rax), %zmm17, %zmm19 +vpunpckhbw %zmm16, %zmm17, %zmm19 {k1} +vpunpckhbw (%rax), %zmm17, %zmm19 {k1} +vpunpckhbw %zmm16, %zmm17, %zmm19 {z}{k1} +vpunpckhbw (%rax), %zmm17, %zmm19 {z}{k1} + +vpunpckhwd %zmm16, %zmm17, %zmm19 +vpunpckhwd (%rax), %zmm17, %zmm19 +vpunpckhwd %zmm16, %zmm17, %zmm19 {k1} +vpunpckhwd (%rax), %zmm17, %zmm19 {k1} +vpunpckhwd %zmm16, %zmm17, %zmm19 {z}{k1} +vpunpckhwd (%rax), %zmm17, %zmm19 {z}{k1} + +vpunpcklbw %zmm16, %zmm17, %zmm19 +vpunpcklbw (%rax), %zmm17, %zmm19 +vpunpcklbw %zmm16, %zmm17, %zmm19 {k1} +vpunpcklbw (%rax), %zmm17, %zmm19 {k1} +vpunpcklbw %zmm16, %zmm17, %zmm19 {z}{k1} +vpunpcklbw (%rax), %zmm17, %zmm19 {z}{k1} + +vpunpcklwd %zmm16, %zmm17, %zmm19 +vpunpcklwd (%rax), %zmm17, %zmm19 +vpunpcklwd %zmm16, %zmm17, %zmm19 {k1} +vpunpcklwd (%rax), %zmm17, %zmm19 {k1} +vpunpcklwd %zmm16, %zmm17, %zmm19 {z}{k1} +vpunpcklwd (%rax), %zmm17, %zmm19 {z}{k1} + # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps # CHECK-NEXT: [2]: Latency @@ -76,6 +132,30 @@ vpsubw (%rax), %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: 2 8 0.50 * vpaddw (%rax), %zmm17, %zmm19 {%k1} # CHECK-NEXT: 1 1 0.33 vpaddw %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vpaddw (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 6 2.00 vpermw %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 3 13 2.00 * vpermw (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 2 6 2.00 vpermw %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 3 13 2.00 * vpermw (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 6 2.00 vpermw %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 3 13 2.00 * vpermw (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpshufb %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpshufb (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpshufb %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpshufb (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpshufb %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpshufb (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpshufhw $0, %zmm16, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpshufhw $0, (%rax), %zmm19 +# CHECK-NEXT: 1 1 1.00 vpshufhw $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpshufhw $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpshufhw $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpshufhw $0, (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpshuflw $0, %zmm16, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpshuflw $0, (%rax), %zmm19 +# CHECK-NEXT: 1 1 1.00 vpshuflw $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpshuflw $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpshuflw $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpshuflw $0, (%rax), %zmm19 {%k1} {z} # CHECK-NEXT: 1 1 0.33 vpsubb %zmm16, %zmm17, %zmm19 # CHECK-NEXT: 2 8 0.50 * vpsubb (%rax), %zmm17, %zmm19 # CHECK-NEXT: 1 1 0.33 vpsubb %zmm16, %zmm17, %zmm19 {%k1} @@ -88,6 +168,30 @@ vpsubw (%rax), %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: 2 8 0.50 * vpsubw (%rax), %zmm17, %zmm19 {%k1} # CHECK-NEXT: 1 1 0.33 vpsubw %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vpsubw (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpckhbw %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckhbw (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpunpckhbw %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckhbw (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpckhbw %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckhbw (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpckhwd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckhwd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpunpckhwd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckhwd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpckhwd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckhwd (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpcklbw %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpunpcklbw (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpunpcklbw %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpcklbw (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpcklbw %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpcklbw (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpcklwd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpunpcklwd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: 1 1 1.00 vpunpcklwd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpcklwd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpcklwd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpcklwd (%rax), %zmm17, %zmm19 {%k1} {z} # CHECK: Resources: # CHECK-NEXT: [0] - SKXDivider @@ -103,7 +207,7 @@ vpsubw (%rax), %zmm17, %zmm19 {z}{k1} # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: - - 20.00 8.00 9.00 9.00 - 8.00 - - +# CHECK-NEXT: - - 20.00 8.00 21.00 21.00 - 62.00 - - # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -131,6 +235,30 @@ vpsubw (%rax), %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpaddw (%rax), %zmm17, %zmm19 {%k1} # CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vpaddw %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpaddw (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 2.00 - - vpermw %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - vpermw (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - - - 2.00 - - vpermw %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - vpermw (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 2.00 - - vpermw %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - vpermw (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufb %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufb (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufb %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufb (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufb %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufb (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufhw $0, %zmm16, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufhw $0, (%rax), %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufhw $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufhw $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufhw $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufhw $0, (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpshuflw $0, %zmm16, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshuflw $0, (%rax), %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpshuflw $0, %zmm16, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshuflw $0, (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpshuflw $0, %zmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshuflw $0, (%rax), %zmm19 {%k1} {z} # CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vpsubb %zmm16, %zmm17, %zmm19 # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpsubb (%rax), %zmm17, %zmm19 # CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vpsubb %zmm16, %zmm17, %zmm19 {%k1} @@ -143,3 +271,27 @@ vpsubw (%rax), %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpsubw (%rax), %zmm17, %zmm19 {%k1} # CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vpsubw %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpsubw (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhbw %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhbw (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhbw %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhbw (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhbw %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhbw (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhwd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhwd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhwd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhwd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhwd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhwd (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpcklbw %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpcklbw (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpcklbw %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpcklbw (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpcklbw %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpcklbw (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpcklwd %zmm16, %zmm17, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpcklwd (%rax), %zmm17, %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpcklwd %zmm16, %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpcklwd (%rax), %zmm17, %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpcklwd %zmm16, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpcklwd (%rax), %zmm17, %zmm19 {%k1} {z} diff --git a/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512bwvl.s b/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512bwvl.s index 0eedb6eaf2b..2939f1cbe49 100644 --- a/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512bwvl.s +++ b/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512bwvl.s @@ -57,6 +57,48 @@ vpaddw (%rax), %ymm17, %ymm19 {k1} vpaddw %ymm16, %ymm17, %ymm19 {z}{k1} vpaddw (%rax), %ymm17, %ymm19 {z}{k1} +vpermw %xmm16, %xmm17, %xmm19 +vpermw (%rax), %xmm17, %xmm19 +vpermw %xmm16, %xmm17, %xmm19 {k1} +vpermw (%rax), %xmm17, %xmm19 {k1} +vpermw %xmm16, %xmm17, %xmm19 {z}{k1} +vpermw (%rax), %xmm17, %xmm19 {z}{k1} + +vpermw %ymm16, %ymm17, %ymm19 +vpermw (%rax), %ymm17, %ymm19 +vpermw %ymm16, %ymm17, %ymm19 {k1} +vpermw (%rax), %ymm17, %ymm19 {k1} +vpermw %ymm16, %ymm17, %ymm19 {z}{k1} +vpermw (%rax), %ymm17, %ymm19 {z}{k1} + +vpshufb %xmm16, %xmm17, %xmm19 +vpshufb (%rax), %xmm17, %xmm19 +vpshufb %xmm16, %xmm17, %xmm19 {k1} +vpshufb (%rax), %xmm17, %xmm19 {k1} +vpshufb %xmm16, %xmm17, %xmm19 {z}{k1} +vpshufb (%rax), %xmm17, %xmm19 {z}{k1} + +vpshufb %ymm16, %ymm17, %ymm19 +vpshufb (%rax), %ymm17, %ymm19 +vpshufb %ymm16, %ymm17, %ymm19 {k1} +vpshufb (%rax), %ymm17, %ymm19 {k1} +vpshufb %ymm16, %ymm17, %ymm19 {z}{k1} +vpshufb (%rax), %ymm17, %ymm19 {z}{k1} + +vpshufhw $0, %xmm16, %xmm19 +vpshufhw $0, (%rax), %xmm19 +vpshufhw $0, %xmm16, %xmm19 {k1} +vpshufhw $0, (%rax), %xmm19 {k1} +vpshufhw $0, %xmm16, %xmm19 {z}{k1} +vpshufhw $0, (%rax), %xmm19 {z}{k1} + +vpshufhw $0, %ymm16, %ymm19 +vpshufhw $0, (%rax), %ymm19 +vpshufhw $0, %ymm16, %ymm19 {k1} +vpshufhw $0, (%rax), %ymm19 {k1} +vpshufhw $0, %ymm16, %ymm19 {z}{k1} +vpshufhw $0, (%rax), %ymm19 {z}{k1} + vpsubb %xmm16, %xmm17, %xmm19 vpsubb (%rax), %xmm17, %xmm19 vpsubb %xmm16, %xmm17, %xmm19 {k1} @@ -85,6 +127,62 @@ vpsubw (%rax), %ymm17, %ymm19 {k1} vpsubw %ymm16, %ymm17, %ymm19 {z}{k1} vpsubw (%rax), %ymm17, %ymm19 {z}{k1} +vpunpckhbw %xmm16, %xmm17, %xmm19 +vpunpckhbw (%rax), %xmm17, %xmm19 +vpunpckhbw %xmm16, %xmm17, %xmm19 {k1} +vpunpckhbw (%rax), %xmm17, %xmm19 {k1} +vpunpckhbw %xmm16, %xmm17, %xmm19 {z}{k1} +vpunpckhbw (%rax), %xmm17, %xmm19 {z}{k1} + +vpunpckhbw %ymm16, %ymm17, %ymm19 +vpunpckhbw (%rax), %ymm17, %ymm19 +vpunpckhbw %ymm16, %ymm17, %ymm19 {k1} +vpunpckhbw (%rax), %ymm17, %ymm19 {k1} +vpunpckhbw %ymm16, %ymm17, %ymm19 {z}{k1} +vpunpckhbw (%rax), %ymm17, %ymm19 {z}{k1} + +vpunpckhwd %xmm16, %xmm17, %xmm19 +vpunpckhwd (%rax), %xmm17, %xmm19 +vpunpckhwd %xmm16, %xmm17, %xmm19 {k1} +vpunpckhwd (%rax), %xmm17, %xmm19 {k1} +vpunpckhwd %xmm16, %xmm17, %xmm19 {z}{k1} +vpunpckhwd (%rax), %xmm17, %xmm19 {z}{k1} + +vpunpckhwd %ymm16, %ymm17, %ymm19 +vpunpckhwd (%rax), %ymm17, %ymm19 +vpunpckhwd %ymm16, %ymm17, %ymm19 {k1} +vpunpckhwd (%rax), %ymm17, %ymm19 {k1} +vpunpckhwd %ymm16, %ymm17, %ymm19 {z}{k1} +vpunpckhwd (%rax), %ymm17, %ymm19 {z}{k1} + +vpunpcklbw %xmm16, %xmm17, %xmm19 +vpunpcklbw (%rax), %xmm17, %xmm19 +vpunpcklbw %xmm16, %xmm17, %xmm19 {k1} +vpunpcklbw (%rax), %xmm17, %xmm19 {k1} +vpunpcklbw %xmm16, %xmm17, %xmm19 {z}{k1} +vpunpcklbw (%rax), %xmm17, %xmm19 {z}{k1} + +vpunpcklbw %ymm16, %ymm17, %ymm19 +vpunpcklbw (%rax), %ymm17, %ymm19 +vpunpcklbw %ymm16, %ymm17, %ymm19 {k1} +vpunpcklbw (%rax), %ymm17, %ymm19 {k1} +vpunpcklbw %ymm16, %ymm17, %ymm19 {z}{k1} +vpunpcklbw (%rax), %ymm17, %ymm19 {z}{k1} + +vpunpcklwd %xmm16, %xmm17, %xmm19 +vpunpcklwd (%rax), %xmm17, %xmm19 +vpunpcklwd %xmm16, %xmm17, %xmm19 {k1} +vpunpcklwd (%rax), %xmm17, %xmm19 {k1} +vpunpcklwd %xmm16, %xmm17, %xmm19 {z}{k1} +vpunpcklwd (%rax), %xmm17, %xmm19 {z}{k1} + +vpunpcklwd %ymm16, %ymm17, %ymm19 +vpunpcklwd (%rax), %ymm17, %ymm19 +vpunpcklwd %ymm16, %ymm17, %ymm19 {k1} +vpunpcklwd (%rax), %ymm17, %ymm19 {k1} +vpunpcklwd %ymm16, %ymm17, %ymm19 {z}{k1} +vpunpcklwd (%rax), %ymm17, %ymm19 {z}{k1} + # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps # CHECK-NEXT: [2]: Latency @@ -142,6 +240,42 @@ vpsubw (%rax), %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: 2 8 0.50 * vpaddw (%rax), %ymm17, %ymm19 {%k1} # CHECK-NEXT: 1 1 0.33 vpaddw %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vpaddw (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 6 2.00 vpermw %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 3 12 2.00 * vpermw (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 2 6 2.00 vpermw %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 3 12 2.00 * vpermw (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 6 2.00 vpermw %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 3 12 2.00 * vpermw (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 6 2.00 vpermw %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 3 13 2.00 * vpermw (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 6 2.00 vpermw %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 3 13 2.00 * vpermw (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 6 2.00 vpermw %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 3 13 2.00 * vpermw (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpshufb %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpshufb (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 1 1 1.00 vpshufb %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpshufb (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpshufb %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpshufb (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpshufb %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpshufb (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpshufb %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpshufb (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpshufb %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpshufb (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpshufhw $0, %xmm16, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpshufhw $0, (%rax), %xmm19 +# CHECK-NEXT: 1 1 1.00 vpshufhw $0, %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpshufhw $0, (%rax), %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpshufhw $0, %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpshufhw $0, (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpshufhw $0, %ymm16, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpshufhw $0, (%rax), %ymm19 +# CHECK-NEXT: 1 1 1.00 vpshufhw $0, %ymm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpshufhw $0, (%rax), %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpshufhw $0, %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpshufhw $0, (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: 1 1 0.33 vpsubb %xmm16, %xmm17, %xmm19 # CHECK-NEXT: 2 7 0.50 * vpsubb (%rax), %xmm17, %xmm19 # CHECK-NEXT: 1 1 0.33 vpsubb %xmm16, %xmm17, %xmm19 {%k1} @@ -166,6 +300,54 @@ vpsubw (%rax), %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: 2 8 0.50 * vpsubw (%rax), %ymm17, %ymm19 {%k1} # CHECK-NEXT: 1 1 0.33 vpsubw %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vpsubw (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpckhbw %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpunpckhbw (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 1 1 1.00 vpunpckhbw %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpunpckhbw (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpckhbw %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpunpckhbw (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpckhbw %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckhbw (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpunpckhbw %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckhbw (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpckhbw %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckhbw (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpckhwd %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpunpckhwd (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 1 1 1.00 vpunpckhwd %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpunpckhwd (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpckhwd %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpunpckhwd (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpckhwd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckhwd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpunpckhwd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckhwd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpckhwd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckhwd (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpcklbw %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpunpcklbw (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 1 1 1.00 vpunpcklbw %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpunpcklbw (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpcklbw %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpunpcklbw (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpcklbw %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpunpcklbw (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpunpcklbw %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpcklbw (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpcklbw %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpcklbw (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpcklwd %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpunpcklwd (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 1 1 1.00 vpunpcklwd %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpunpcklwd (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpcklwd %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpunpcklwd (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpcklwd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpunpcklwd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpunpcklwd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpcklwd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpcklwd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpcklwd (%rax), %ymm17, %ymm19 {%k1} {z} # CHECK: Resources: # CHECK-NEXT: [0] - SKXDivider @@ -181,7 +363,7 @@ vpsubw (%rax), %ymm17, %ymm19 {z}{k1} # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: - - 28.00 28.00 18.00 18.00 - 16.00 - - +# CHECK-NEXT: - - 28.00 28.00 39.00 39.00 - 112.00 - - # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -233,6 +415,42 @@ vpsubw (%rax), %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpaddw (%rax), %ymm17, %ymm19 {%k1} # CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vpaddw %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpaddw (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 2.00 - - vpermw %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - vpermw (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - - - - - 2.00 - - vpermw %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - vpermw (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 2.00 - - vpermw %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - vpermw (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 2.00 - - vpermw %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - vpermw (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - - - 2.00 - - vpermw %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - vpermw (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 2.00 - - vpermw %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - vpermw (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufb %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufb (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufb %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufb (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufb %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufb (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufb %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufb (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufb %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufb (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufb %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufb (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufhw $0, %xmm16, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufhw $0, (%rax), %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufhw $0, %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufhw $0, (%rax), %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufhw $0, %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufhw $0, (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufhw $0, %ymm16, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufhw $0, (%rax), %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufhw $0, %ymm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufhw $0, (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufhw $0, %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufhw $0, (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vpsubb %xmm16, %xmm17, %xmm19 # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpsubb (%rax), %xmm17, %xmm19 # CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vpsubb %xmm16, %xmm17, %xmm19 {%k1} @@ -257,3 +475,51 @@ vpsubw (%rax), %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpsubw (%rax), %ymm17, %ymm19 {%k1} # CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vpsubw %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpsubw (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhbw %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhbw (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhbw %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhbw (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhbw %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhbw (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhbw %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhbw (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhbw %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhbw (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhbw %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhbw (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhwd %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhwd (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhwd %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhwd (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhwd %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhwd (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhwd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhwd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhwd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhwd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhwd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhwd (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpcklbw %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpcklbw (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpcklbw %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpcklbw (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpcklbw %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpcklbw (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpcklbw %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpcklbw (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpcklbw %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpcklbw (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpcklbw %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpcklbw (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpcklwd %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpcklwd (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpcklwd %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpcklwd (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpcklwd %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpcklwd (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpcklwd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpcklwd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpcklwd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpcklwd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpcklwd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpcklwd (%rax), %ymm17, %ymm19 {%k1} {z} diff --git a/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512vl.s b/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512vl.s index 3ec9efc028a..44b26d7ca26 100644 --- a/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512vl.s +++ b/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512vl.s @@ -121,6 +121,246 @@ vmulps %ymm16, %ymm17, %ymm19 {z}{k1} vmulps (%rax), %ymm17, %ymm19 {z}{k1} vmulps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} +vpermd %ymm16, %ymm17, %ymm19 +vpermd (%rax), %ymm17, %ymm19 +vpermd (%rax){1to8}, %ymm17, %ymm19 +vpermd %ymm16, %ymm17, %ymm19 {k1} +vpermd (%rax), %ymm17, %ymm19 {k1} +vpermd (%rax){1to8}, %ymm17, %ymm19 {k1} +vpermd %ymm16, %ymm17, %ymm19 {z}{k1} +vpermd (%rax), %ymm17, %ymm19 {z}{k1} +vpermd (%rax){1to8}, %ymm17, %ymm19 {z}{k1} + +vpermilpd $0, %xmm16, %xmm19 +vpermilpd $0, (%rax), %xmm19 +vpermilpd $0, (%rax){1to2}, %xmm19 +vpermilpd $0, %xmm16, %xmm19 {k1} +vpermilpd $0, (%rax), %xmm19 {k1} +vpermilpd $0, (%rax){1to2}, %xmm19 {k1} +vpermilpd $0, %xmm16, %xmm19 {z}{k1} +vpermilpd $0, (%rax), %xmm19 {z}{k1} +vpermilpd $0, (%rax){1to2}, %xmm19 {z}{k1} + +vpermilpd $0, %ymm16, %ymm19 +vpermilpd $0, (%rax), %ymm19 +vpermilpd $0, (%rax){1to4}, %ymm19 +vpermilpd $0, %ymm16, %ymm19 {k1} +vpermilpd $0, (%rax), %ymm19 {k1} +vpermilpd $0, (%rax){1to4}, %ymm19 {k1} +vpermilpd $0, %ymm16, %ymm19 {z}{k1} +vpermilpd $0, (%rax), %ymm19 {z}{k1} +vpermilpd $0, (%rax){1to4}, %ymm19 {z}{k1} + +vpermilpd %xmm16, %xmm17, %xmm19 +vpermilpd (%rax), %xmm17, %xmm19 +vpermilpd (%rax){1to2}, %xmm17, %xmm19 +vpermilpd %xmm16, %xmm17, %xmm19 {k1} +vpermilpd (%rax), %xmm17, %xmm19 {k1} +vpermilpd (%rax){1to2}, %xmm17, %xmm19 {k1} +vpermilpd %xmm16, %xmm17, %xmm19 {z}{k1} +vpermilpd (%rax), %xmm17, %xmm19 {z}{k1} +vpermilpd (%rax){1to2}, %xmm17, %xmm19 {z}{k1} + +vpermilpd %ymm16, %ymm17, %ymm19 +vpermilpd (%rax), %ymm17, %ymm19 +vpermilpd (%rax){1to4}, %ymm17, %ymm19 +vpermilpd %ymm16, %ymm17, %ymm19 {k1} +vpermilpd (%rax), %ymm17, %ymm19 {k1} +vpermilpd (%rax){1to4}, %ymm17, %ymm19 {k1} +vpermilpd %ymm16, %ymm17, %ymm19 {z}{k1} +vpermilpd (%rax), %ymm17, %ymm19 {z}{k1} +vpermilpd (%rax){1to4}, %ymm17, %ymm19 {z}{k1} + +vpermilps $0, %xmm16, %xmm19 +vpermilps $0, (%rax), %xmm19 +vpermilps $0, (%rax){1to4}, %xmm19 +vpermilps $0, %xmm16, %xmm19 {k1} +vpermilps $0, (%rax), %xmm19 {k1} +vpermilps $0, (%rax){1to4}, %xmm19 {k1} +vpermilps $0, %xmm16, %xmm19 {z}{k1} +vpermilps $0, (%rax), %xmm19 {z}{k1} +vpermilps $0, (%rax){1to4}, %xmm19 {z}{k1} + +vpermilps $0, %ymm16, %ymm19 +vpermilps $0, (%rax), %ymm19 +vpermilps $0, (%rax){1to8}, %ymm19 +vpermilps $0, %ymm16, %ymm19 {k1} +vpermilps $0, (%rax), %ymm19 {k1} +vpermilps $0, (%rax){1to8}, %ymm19 {k1} +vpermilps $0, %ymm16, %ymm19 {z}{k1} +vpermilps $0, (%rax), %ymm19 {z}{k1} +vpermilps $0, (%rax){1to8}, %ymm19 {z}{k1} + +vpermilps %xmm16, %xmm17, %xmm19 +vpermilps (%rax), %xmm17, %xmm19 +vpermilps (%rax){1to4}, %xmm17, %xmm19 +vpermilps %xmm16, %xmm17, %xmm19 {k1} +vpermilps (%rax), %xmm17, %xmm19 {k1} +vpermilps (%rax){1to4}, %xmm17, %xmm19 {k1} +vpermilps %xmm16, %xmm17, %xmm19 {z}{k1} +vpermilps (%rax), %xmm17, %xmm19 {z}{k1} +vpermilps (%rax){1to4}, %xmm17, %xmm19 {z}{k1} + +vpermilps %ymm16, %ymm17, %ymm19 +vpermilps (%rax), %ymm17, %ymm19 +vpermilps (%rax){1to8}, %ymm17, %ymm19 +vpermilps %ymm16, %ymm17, %ymm19 {k1} +vpermilps (%rax), %ymm17, %ymm19 {k1} +vpermilps (%rax){1to8}, %ymm17, %ymm19 {k1} +vpermilps %ymm16, %ymm17, %ymm19 {z}{k1} +vpermilps (%rax), %ymm17, %ymm19 {z}{k1} +vpermilps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} + +vpermpd $0, %ymm16, %ymm19 +vpermpd $0, (%rax), %ymm19 +vpermpd $0, (%rax){1to4}, %ymm19 +vpermpd $0, %ymm16, %ymm19 {k1} +vpermpd $0, (%rax), %ymm19 {k1} +vpermpd $0, (%rax){1to4}, %ymm19 {k1} +vpermpd $0, %ymm16, %ymm19 {z}{k1} +vpermpd $0, (%rax), %ymm19 {z}{k1} +vpermpd $0, (%rax){1to4}, %ymm19 {z}{k1} + +vpermpd %ymm16, %ymm17, %ymm19 +vpermpd (%rax), %ymm17, %ymm19 +vpermpd (%rax){1to4}, %ymm17, %ymm19 +vpermpd %ymm16, %ymm17, %ymm19 {k1} +vpermpd (%rax), %ymm17, %ymm19 {k1} +vpermpd (%rax){1to4}, %ymm17, %ymm19 {k1} +vpermpd %ymm16, %ymm17, %ymm19 {z}{k1} +vpermpd (%rax), %ymm17, %ymm19 {z}{k1} +vpermpd (%rax){1to4}, %ymm17, %ymm19 {z}{k1} + +vpermps %ymm16, %ymm17, %ymm19 +vpermps (%rax), %ymm17, %ymm19 +vpermps (%rax){1to8}, %ymm17, %ymm19 +vpermps %ymm16, %ymm17, %ymm19 {k1} +vpermps (%rax), %ymm17, %ymm19 {k1} +vpermps (%rax){1to8}, %ymm17, %ymm19 {k1} +vpermps %ymm16, %ymm17, %ymm19 {z}{k1} +vpermps (%rax), %ymm17, %ymm19 {z}{k1} +vpermps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} + +vpermq $0, %ymm16, %ymm19 +vpermq $0, (%rax), %ymm19 +vpermq $0, (%rax){1to4}, %ymm19 +vpermq $0, %ymm16, %ymm19 {k1} +vpermq $0, (%rax), %ymm19 {k1} +vpermq $0, (%rax){1to4}, %ymm19 {k1} +vpermq $0, %ymm16, %ymm19 {z}{k1} +vpermq $0, (%rax), %ymm19 {z}{k1} +vpermq $0, (%rax){1to4}, %ymm19 {z}{k1} + +vpermq %ymm16, %ymm17, %ymm19 +vpermq (%rax), %ymm17, %ymm19 +vpermq (%rax){1to4}, %ymm17, %ymm19 +vpermq %ymm16, %ymm17, %ymm19 {k1} +vpermq (%rax), %ymm17, %ymm19 {k1} +vpermq (%rax){1to4}, %ymm17, %ymm19 {k1} +vpermq %ymm16, %ymm17, %ymm19 {z}{k1} +vpermq (%rax), %ymm17, %ymm19 {z}{k1} +vpermq (%rax){1to4}, %ymm17, %ymm19 {z}{k1} + +vpshufd $0, %xmm16, %xmm19 +vpshufd $0, (%rax), %xmm19 +vpshufd $0, (%rax){1to4}, %xmm19 +vpshufd $0, %xmm16, %xmm19 {k1} +vpshufd $0, (%rax), %xmm19 {k1} +vpshufd $0, (%rax){1to4}, %xmm19 {k1} +vpshufd $0, %xmm16, %xmm19 {z}{k1} +vpshufd $0, (%rax), %xmm19 {z}{k1} +vpshufd $0, (%rax){1to4}, %xmm19 {z}{k1} + +vpshufd $0, %ymm16, %ymm19 +vpshufd $0, (%rax), %ymm19 +vpshufd $0, (%rax){1to8}, %ymm19 +vpshufd $0, %ymm16, %ymm19 {k1} +vpshufd $0, (%rax), %ymm19 {k1} +vpshufd $0, (%rax){1to8}, %ymm19 {k1} +vpshufd $0, %ymm16, %ymm19 {z}{k1} +vpshufd $0, (%rax), %ymm19 {z}{k1} +vpshufd $0, (%rax){1to8}, %ymm19 {z}{k1} + +vpunpckhdq %xmm16, %xmm17, %xmm19 +vpunpckhdq (%rax), %xmm17, %xmm19 +vpunpckhdq (%rax){1to4}, %xmm17, %xmm19 +vpunpckhdq %xmm16, %xmm17, %xmm19 {k1} +vpunpckhdq (%rax), %xmm17, %xmm19 {k1} +vpunpckhdq (%rax){1to4}, %xmm17, %xmm19 {k1} +vpunpckhdq %xmm16, %xmm17, %xmm19 {z}{k1} +vpunpckhdq (%rax), %xmm17, %xmm19 {z}{k1} +vpunpckhdq (%rax){1to4}, %xmm17, %xmm19 {z}{k1} + +vpunpckhdq %ymm16, %ymm17, %ymm19 +vpunpckhdq (%rax), %ymm17, %ymm19 +vpunpckhdq (%rax){1to8}, %ymm17, %ymm19 +vpunpckhdq %ymm16, %ymm17, %ymm19 {k1} +vpunpckhdq (%rax), %ymm17, %ymm19 {k1} +vpunpckhdq (%rax){1to8}, %ymm17, %ymm19 {k1} +vpunpckhdq %ymm16, %ymm17, %ymm19 {z}{k1} +vpunpckhdq (%rax), %ymm17, %ymm19 {z}{k1} +vpunpckhdq (%rax){1to8}, %ymm17, %ymm19 {z}{k1} + +vpunpckldq %xmm16, %xmm17, %xmm19 +vpunpckldq (%rax), %xmm17, %xmm19 +vpunpckldq (%rax){1to4}, %xmm17, %xmm19 +vpunpckldq %xmm16, %xmm17, %xmm19 {k1} +vpunpckldq (%rax), %xmm17, %xmm19 {k1} +vpunpckldq (%rax){1to4}, %xmm17, %xmm19 {k1} +vpunpckldq %xmm16, %xmm17, %xmm19 {z}{k1} +vpunpckldq (%rax), %xmm17, %xmm19 {z}{k1} +vpunpckldq (%rax){1to4}, %xmm17, %xmm19 {z}{k1} + +vpunpckldq %ymm16, %ymm17, %ymm19 +vpunpckldq (%rax), %ymm17, %ymm19 +vpunpckldq (%rax){1to8}, %ymm17, %ymm19 +vpunpckldq %ymm16, %ymm17, %ymm19 {k1} +vpunpckldq (%rax), %ymm17, %ymm19 {k1} +vpunpckldq (%rax){1to8}, %ymm17, %ymm19 {k1} +vpunpckldq %ymm16, %ymm17, %ymm19 {z}{k1} +vpunpckldq (%rax), %ymm17, %ymm19 {z}{k1} +vpunpckldq (%rax){1to8}, %ymm17, %ymm19 {z}{k1} + +vshuff32x4 $0, %ymm16, %ymm17, %ymm19 +vshuff32x4 $0, (%rax), %ymm17, %ymm19 +vshuff32x4 $0, (%rax){1to8}, %ymm17, %ymm19 +vshuff32x4 $0, %ymm16, %ymm17, %ymm19 {k1} +vshuff32x4 $0, (%rax), %ymm17, %ymm19 {k1} +vshuff32x4 $0, (%rax){1to8}, %ymm17, %ymm19 {k1} +vshuff32x4 $0, %ymm16, %ymm17, %ymm19 {z}{k1} +vshuff32x4 $0, (%rax), %ymm17, %ymm19 {z}{k1} +vshuff32x4 $0, (%rax){1to8}, %ymm17, %ymm19 {z}{k1} + +vshuff64x2 $0, %ymm16, %ymm17, %ymm19 +vshuff64x2 $0, (%rax), %ymm17, %ymm19 +vshuff64x2 $0, (%rax){1to4}, %ymm17, %ymm19 +vshuff64x2 $0, %ymm16, %ymm17, %ymm19 {k1} +vshuff64x2 $0, (%rax), %ymm17, %ymm19 {k1} +vshuff64x2 $0, (%rax){1to4}, %ymm17, %ymm19 {k1} +vshuff64x2 $0, %ymm16, %ymm17, %ymm19 {z}{k1} +vshuff64x2 $0, (%rax), %ymm17, %ymm19 {z}{k1} +vshuff64x2 $0, (%rax){1to4}, %ymm17, %ymm19 {z}{k1} + +vshufi32x4 $0, %ymm16, %ymm17, %ymm19 +vshufi32x4 $0, (%rax), %ymm17, %ymm19 +vshufi32x4 $0, (%rax){1to8}, %ymm17, %ymm19 +vshufi32x4 $0, %ymm16, %ymm17, %ymm19 {k1} +vshufi32x4 $0, (%rax), %ymm17, %ymm19 {k1} +vshufi32x4 $0, (%rax){1to8}, %ymm17, %ymm19 {k1} +vshufi32x4 $0, %ymm16, %ymm17, %ymm19 {z}{k1} +vshufi32x4 $0, (%rax), %ymm17, %ymm19 {z}{k1} +vshufi32x4 $0, (%rax){1to8}, %ymm17, %ymm19 {z}{k1} + +vshufi64x2 $0, %ymm16, %ymm17, %ymm19 +vshufi64x2 $0, (%rax), %ymm17, %ymm19 +vshufi64x2 $0, (%rax){1to4}, %ymm17, %ymm19 +vshufi64x2 $0, %ymm16, %ymm17, %ymm19 {k1} +vshufi64x2 $0, (%rax), %ymm17, %ymm19 {k1} +vshufi64x2 $0, (%rax){1to4}, %ymm17, %ymm19 {k1} +vshufi64x2 $0, %ymm16, %ymm17, %ymm19 {z}{k1} +vshufi64x2 $0, (%rax), %ymm17, %ymm19 {z}{k1} +vshufi64x2 $0, (%rax){1to4}, %ymm17, %ymm19 {z}{k1} + vsubpd %xmm16, %xmm17, %xmm19 vsubpd (%rax), %xmm17, %xmm19 vsubpd (%rax){1to2}, %xmm17, %xmm19 @@ -161,6 +401,86 @@ vsubps %ymm16, %ymm17, %ymm19 {z}{k1} vsubps (%rax), %ymm17, %ymm19 {z}{k1} vsubps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} +vunpckhpd %xmm16, %xmm17, %xmm19 +vunpckhpd (%rax), %xmm17, %xmm19 +vunpckhpd (%rax){1to2}, %xmm17, %xmm19 +vunpckhpd %xmm16, %xmm17, %xmm19 {k1} +vunpckhpd (%rax), %xmm17, %xmm19 {k1} +vunpckhpd (%rax){1to2}, %xmm17, %xmm19 {k1} +vunpckhpd %xmm16, %xmm17, %xmm19 {z}{k1} +vunpckhpd (%rax), %xmm17, %xmm19 {z}{k1} +vunpckhpd (%rax){1to2}, %xmm17, %xmm19 {z}{k1} + +vunpckhpd %ymm16, %ymm17, %ymm19 +vunpckhpd (%rax), %ymm17, %ymm19 +vunpckhpd (%rax){1to4}, %ymm17, %ymm19 +vunpckhpd %ymm16, %ymm17, %ymm19 {k1} +vunpckhpd (%rax), %ymm17, %ymm19 {k1} +vunpckhpd (%rax){1to4}, %ymm17, %ymm19 {k1} +vunpckhpd %ymm16, %ymm17, %ymm19 {z}{k1} +vunpckhpd (%rax), %ymm17, %ymm19 {z}{k1} +vunpckhpd (%rax){1to4}, %ymm17, %ymm19 {z}{k1} + +vunpckhps %xmm16, %xmm17, %xmm19 +vunpckhps (%rax), %xmm17, %xmm19 +vunpckhps (%rax){1to4}, %xmm17, %xmm19 +vunpckhps %xmm16, %xmm17, %xmm19 {k1} +vunpckhps (%rax), %xmm17, %xmm19 {k1} +vunpckhps (%rax){1to4}, %xmm17, %xmm19 {k1} +vunpckhps %xmm16, %xmm17, %xmm19 {z}{k1} +vunpckhps (%rax), %xmm17, %xmm19 {z}{k1} +vunpckhps (%rax){1to4}, %xmm17, %xmm19 {z}{k1} + +vunpckhps %ymm16, %ymm17, %ymm19 +vunpckhps (%rax), %ymm17, %ymm19 +vunpckhps (%rax){1to8}, %ymm17, %ymm19 +vunpckhps %ymm16, %ymm17, %ymm19 {k1} +vunpckhps (%rax), %ymm17, %ymm19 {k1} +vunpckhps (%rax){1to8}, %ymm17, %ymm19 {k1} +vunpckhps %ymm16, %ymm17, %ymm19 {z}{k1} +vunpckhps (%rax), %ymm17, %ymm19 {z}{k1} +vunpckhps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} + +vunpcklpd %xmm16, %xmm17, %xmm19 +vunpcklpd (%rax), %xmm17, %xmm19 +vunpcklpd (%rax){1to2}, %xmm17, %xmm19 +vunpcklpd %xmm16, %xmm17, %xmm19 {k1} +vunpcklpd (%rax), %xmm17, %xmm19 {k1} +vunpcklpd (%rax){1to2}, %xmm17, %xmm19 {k1} +vunpcklpd %xmm16, %xmm17, %xmm19 {z}{k1} +vunpcklpd (%rax), %xmm17, %xmm19 {z}{k1} +vunpcklpd (%rax){1to2}, %xmm17, %xmm19 {z}{k1} + +vunpcklpd %ymm16, %ymm17, %ymm19 +vunpcklpd (%rax), %ymm17, %ymm19 +vunpcklpd (%rax){1to4}, %ymm17, %ymm19 +vunpcklpd %ymm16, %ymm17, %ymm19 {k1} +vunpcklpd (%rax), %ymm17, %ymm19 {k1} +vunpcklpd (%rax){1to4}, %ymm17, %ymm19 {k1} +vunpcklpd %ymm16, %ymm17, %ymm19 {z}{k1} +vunpcklpd (%rax), %ymm17, %ymm19 {z}{k1} +vunpcklpd (%rax){1to4}, %ymm17, %ymm19 {z}{k1} + +vunpcklps %xmm16, %xmm17, %xmm19 +vunpcklps (%rax), %xmm17, %xmm19 +vunpcklps (%rax){1to4}, %xmm17, %xmm19 +vunpcklps %xmm16, %xmm17, %xmm19 {k1} +vunpcklps (%rax), %xmm17, %xmm19 {k1} +vunpcklps (%rax){1to4}, %xmm17, %xmm19 {k1} +vunpcklps %xmm16, %xmm17, %xmm19 {z}{k1} +vunpcklps (%rax), %xmm17, %xmm19 {z}{k1} +vunpcklps (%rax){1to4}, %xmm17, %xmm19 {z}{k1} + +vunpcklps %ymm16, %ymm17, %ymm19 +vunpcklps (%rax), %ymm17, %ymm19 +vunpcklps (%rax){1to8}, %ymm17, %ymm19 +vunpcklps %ymm16, %ymm17, %ymm19 {k1} +vunpcklps (%rax), %ymm17, %ymm19 {k1} +vunpcklps (%rax){1to8}, %ymm17, %ymm19 {k1} +vunpcklps %ymm16, %ymm17, %ymm19 {z}{k1} +vunpcklps (%rax), %ymm17, %ymm19 {z}{k1} +vunpcklps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} + # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps # CHECK-NEXT: [2]: Latency @@ -278,6 +598,222 @@ vsubps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: 1 4 0.50 vmulps %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 11 0.50 * vmulps (%rax), %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 11 0.50 * vmulps (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpermd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 10 1.00 * vpermd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 10 1.00 * vpermd (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: 1 3 1.00 vpermd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vpermd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vpermd (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpermd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vpermd (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vpermd (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermilpd $0, %xmm16, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpermilpd $0, (%rax), %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpermilpd $0, (%rax){1to2}, %xmm19 +# CHECK-NEXT: 1 1 1.00 vpermilpd $0, %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpermilpd $0, (%rax), %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpermilpd $0, (%rax){1to2}, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermilpd $0, %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpermilpd $0, (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpermilpd $0, (%rax){1to2}, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermilpd $0, %ymm16, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermilpd $0, (%rax), %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermilpd $0, (%rax){1to4}, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpermilpd $0, %ymm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilpd $0, (%rax), %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilpd $0, (%rax){1to4}, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermilpd $0, %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilpd $0, (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilpd $0, (%rax){1to4}, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermilpd %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpermilpd (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpermilpd (%rax){1to2}, %xmm17, %xmm19 +# CHECK-NEXT: 1 1 1.00 vpermilpd %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpermilpd (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpermilpd (%rax){1to2}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermilpd %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpermilpd (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpermilpd (%rax){1to2}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermilpd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermilpd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermilpd (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpermilpd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilpd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilpd (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermilpd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilpd (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilpd (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermilps $0, %xmm16, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpermilps $0, (%rax), %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpermilps $0, (%rax){1to4}, %xmm19 +# CHECK-NEXT: 1 1 1.00 vpermilps $0, %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpermilps $0, (%rax), %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpermilps $0, (%rax){1to4}, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermilps $0, %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpermilps $0, (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpermilps $0, (%rax){1to4}, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermilps $0, %ymm16, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermilps $0, (%rax), %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermilps $0, (%rax){1to8}, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpermilps $0, %ymm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilps $0, (%rax), %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilps $0, (%rax){1to8}, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermilps $0, %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilps $0, (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilps $0, (%rax){1to8}, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermilps %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpermilps (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpermilps (%rax){1to4}, %xmm17, %xmm19 +# CHECK-NEXT: 1 1 1.00 vpermilps %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpermilps (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpermilps (%rax){1to4}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermilps %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpermilps (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpermilps (%rax){1to4}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpermilps %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpermilps %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpermilps %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpermilps (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpermpd $0, %ymm16, %ymm19 +# CHECK-NEXT: 2 10 1.00 * vpermpd $0, (%rax), %ymm19 +# CHECK-NEXT: 2 10 1.00 * vpermpd $0, (%rax){1to4}, %ymm19 +# CHECK-NEXT: 1 3 1.00 vpermpd $0, %ymm16, %ymm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vpermpd $0, (%rax), %ymm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vpermpd $0, (%rax){1to4}, %ymm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpermpd $0, %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vpermpd $0, (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vpermpd $0, (%rax){1to4}, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpermpd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 10 1.00 * vpermpd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 10 1.00 * vpermpd (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: 1 3 1.00 vpermpd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vpermpd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vpermpd (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpermpd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vpermpd (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vpermpd (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpermps %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 10 1.00 * vpermps (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 10 1.00 * vpermps (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: 1 3 1.00 vpermps %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vpermps (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vpermps (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpermps %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vpermps (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vpermps (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpermq $0, %ymm16, %ymm19 +# CHECK-NEXT: 2 10 1.00 * vpermq $0, (%rax), %ymm19 +# CHECK-NEXT: 2 10 1.00 * vpermq $0, (%rax){1to4}, %ymm19 +# CHECK-NEXT: 1 3 1.00 vpermq $0, %ymm16, %ymm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vpermq $0, (%rax), %ymm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vpermq $0, (%rax){1to4}, %ymm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpermq $0, %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vpermq $0, (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vpermq $0, (%rax){1to4}, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpermq %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 10 1.00 * vpermq (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 10 1.00 * vpermq (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: 1 3 1.00 vpermq %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vpermq (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vpermq (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpermq %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vpermq (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vpermq (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpshufd $0, %xmm16, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpshufd $0, (%rax), %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpshufd $0, (%rax){1to4}, %xmm19 +# CHECK-NEXT: 1 1 1.00 vpshufd $0, %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpshufd $0, (%rax), %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpshufd $0, (%rax){1to4}, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpshufd $0, %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpshufd $0, (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpshufd $0, (%rax){1to4}, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpshufd $0, %ymm16, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpshufd $0, (%rax), %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpshufd $0, (%rax){1to8}, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpshufd $0, %ymm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpshufd $0, (%rax), %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpshufd $0, (%rax){1to8}, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpshufd $0, %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpshufd $0, (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpshufd $0, (%rax){1to8}, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpckhdq %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpunpckhdq (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpunpckhdq (%rax){1to4}, %xmm17, %xmm19 +# CHECK-NEXT: 1 1 1.00 vpunpckhdq %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpunpckhdq (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpunpckhdq (%rax){1to4}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpckhdq %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpunpckhdq (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpunpckhdq (%rax){1to4}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpckhdq %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckhdq (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckhdq (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpunpckhdq %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckhdq (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckhdq (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpckhdq %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckhdq (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckhdq (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpckldq %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpunpckldq (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpunpckldq (%rax){1to4}, %xmm17, %xmm19 +# CHECK-NEXT: 1 1 1.00 vpunpckldq %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpunpckldq (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpunpckldq (%rax){1to4}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpckldq %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpunpckldq (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpunpckldq (%rax){1to4}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpunpckldq %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckldq (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpunpckldq (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vpunpckldq %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckldq (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpunpckldq (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpunpckldq %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckldq (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpunpckldq (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vshuff32x4 $0, %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 10 1.00 * vshuff32x4 $0, (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 10 1.00 * vshuff32x4 $0, (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: 1 3 1.00 vshuff32x4 $0, %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vshuff32x4 $0, (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vshuff32x4 $0, (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vshuff32x4 $0, %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vshuff32x4 $0, (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vshuff32x4 $0, (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vshuff64x2 $0, %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 10 1.00 * vshuff64x2 $0, (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 10 1.00 * vshuff64x2 $0, (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: 1 3 1.00 vshuff64x2 $0, %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vshuff64x2 $0, (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vshuff64x2 $0, (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vshuff64x2 $0, %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vshuff64x2 $0, (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vshuff64x2 $0, (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vshufi32x4 $0, %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 10 1.00 * vshufi32x4 $0, (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 10 1.00 * vshufi32x4 $0, (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: 1 3 1.00 vshufi32x4 $0, %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vshufi32x4 $0, (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vshufi32x4 $0, (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vshufi32x4 $0, %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vshufi32x4 $0, (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vshufi32x4 $0, (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vshufi64x2 $0, %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 10 1.00 * vshufi64x2 $0, (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 10 1.00 * vshufi64x2 $0, (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: 1 3 1.00 vshufi64x2 $0, %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vshufi64x2 $0, (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 10 1.00 * vshufi64x2 $0, (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vshufi64x2 $0, %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vshufi64x2 $0, (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 10 1.00 * vshufi64x2 $0, (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 1 4 0.50 vsubpd %xmm16, %xmm17, %xmm19 # CHECK-NEXT: 2 10 0.50 * vsubpd (%rax), %xmm17, %xmm19 # CHECK-NEXT: 2 10 0.50 * vsubpd (%rax){1to2}, %xmm17, %xmm19 @@ -314,6 +850,78 @@ vsubps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: 1 4 0.50 vsubps %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 11 0.50 * vsubps (%rax), %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 11 0.50 * vsubps (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vunpckhpd %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vunpckhpd (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vunpckhpd (%rax){1to2}, %xmm17, %xmm19 +# CHECK-NEXT: 1 1 1.00 vunpckhpd %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vunpckhpd (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vunpckhpd (%rax){1to2}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vunpckhpd %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vunpckhpd (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vunpckhpd (%rax){1to2}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vunpckhpd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vunpckhpd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vunpckhpd (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vunpckhpd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpckhpd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpckhpd (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vunpckhpd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpckhpd (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpckhpd (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vunpckhps %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vunpckhps (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vunpckhps (%rax){1to4}, %xmm17, %xmm19 +# CHECK-NEXT: 1 1 1.00 vunpckhps %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vunpckhps (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vunpckhps (%rax){1to4}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vunpckhps %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vunpckhps (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vunpckhps (%rax){1to4}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vunpckhps %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vunpckhps (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vunpckhps (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vunpckhps %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpckhps (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpckhps (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vunpckhps %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpckhps (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpckhps (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vunpcklpd %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vunpcklpd (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vunpcklpd (%rax){1to2}, %xmm17, %xmm19 +# CHECK-NEXT: 1 1 1.00 vunpcklpd %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vunpcklpd (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vunpcklpd (%rax){1to2}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vunpcklpd %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vunpcklpd (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vunpcklpd (%rax){1to2}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vunpcklpd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vunpcklpd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vunpcklpd (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vunpcklpd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpcklpd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpcklpd (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vunpcklpd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpcklpd (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpcklpd (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vunpcklps %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vunpcklps (%rax), %xmm17, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vunpcklps (%rax){1to4}, %xmm17, %xmm19 +# CHECK-NEXT: 1 1 1.00 vunpcklps %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vunpcklps (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vunpcklps (%rax){1to4}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vunpcklps %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vunpcklps (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vunpcklps (%rax){1to4}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vunpcklps %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vunpcklps (%rax), %ymm17, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vunpcklps (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: 1 1 1.00 vunpcklps %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpcklps (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vunpcklps (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vunpcklps %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpcklps (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vunpcklps (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} # CHECK: Resources: # CHECK-NEXT: [0] - SKXDivider @@ -329,7 +937,7 @@ vsubps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: - 180.00 90.00 54.00 48.00 48.00 - - - - +# CHECK-NEXT: - 180.00 90.00 54.00 144.00 144.00 - 288.00 - - # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -441,6 +1049,222 @@ vsubps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: - - 0.50 0.50 - - - - - - vmulps %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vmulps (%rax), %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vmulps (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermd (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpermd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermd (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermd (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermd (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilpd $0, %xmm16, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd $0, (%rax), %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd $0, (%rax){1to2}, %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilpd $0, %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd $0, (%rax), %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd $0, (%rax){1to2}, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilpd $0, %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd $0, (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd $0, (%rax){1to2}, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilpd $0, %ymm16, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd $0, (%rax), %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd $0, (%rax){1to4}, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilpd $0, %ymm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd $0, (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd $0, (%rax){1to4}, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilpd $0, %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd $0, (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd $0, (%rax){1to4}, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilpd %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd (%rax){1to2}, %xmm17, %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilpd %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd (%rax){1to2}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilpd %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd (%rax){1to2}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilpd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilpd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilpd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilpd (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilps $0, %xmm16, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps $0, (%rax), %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps $0, (%rax){1to4}, %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilps $0, %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps $0, (%rax), %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps $0, (%rax){1to4}, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilps $0, %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps $0, (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps $0, (%rax){1to4}, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilps $0, %ymm16, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps $0, (%rax), %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps $0, (%rax){1to8}, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilps $0, %ymm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps $0, (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps $0, (%rax){1to8}, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilps $0, %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps $0, (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps $0, (%rax){1to8}, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilps %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps (%rax){1to4}, %xmm17, %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilps %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps (%rax){1to4}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilps %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps (%rax){1to4}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilps %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilps %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermilps %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermilps (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermpd $0, %ymm16, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermpd $0, (%rax), %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermpd $0, (%rax){1to4}, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpermpd $0, %ymm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermpd $0, (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermpd $0, (%rax){1to4}, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermpd $0, %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermpd $0, (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermpd $0, (%rax){1to4}, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermpd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermpd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermpd (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpermpd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermpd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermpd (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermpd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermpd (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermpd (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermps %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermps (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermps (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpermps %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermps (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermps (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermps %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermps (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermps (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermq $0, %ymm16, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermq $0, (%rax), %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermq $0, (%rax){1to4}, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpermq $0, %ymm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermq $0, (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermq $0, (%rax){1to4}, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermq $0, %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermq $0, (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermq $0, (%rax){1to4}, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermq %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermq (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermq (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpermq %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermq (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermq (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpermq %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermq (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpermq (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufd $0, %xmm16, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufd $0, (%rax), %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufd $0, (%rax){1to4}, %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufd $0, %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufd $0, (%rax), %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufd $0, (%rax){1to4}, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufd $0, %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufd $0, (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufd $0, (%rax){1to4}, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufd $0, %ymm16, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufd $0, (%rax), %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufd $0, (%rax){1to8}, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufd $0, %ymm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufd $0, (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufd $0, (%rax){1to8}, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpshufd $0, %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufd $0, (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpshufd $0, (%rax){1to8}, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhdq %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhdq (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhdq (%rax){1to4}, %xmm17, %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhdq %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhdq (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhdq (%rax){1to4}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhdq %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhdq (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhdq (%rax){1to4}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhdq %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhdq (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhdq (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhdq %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhdq (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhdq (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckhdq %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhdq (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckhdq (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckldq %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckldq (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckldq (%rax){1to4}, %xmm17, %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckldq %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckldq (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckldq (%rax){1to4}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckldq %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckldq (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckldq (%rax){1to4}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckldq %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckldq (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckldq (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckldq %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckldq (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckldq (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpunpckldq %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckldq (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpunpckldq (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vshuff32x4 $0, %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshuff32x4 $0, (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshuff32x4 $0, (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vshuff32x4 $0, %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshuff32x4 $0, (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshuff32x4 $0, (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vshuff32x4 $0, %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshuff32x4 $0, (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshuff32x4 $0, (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vshuff64x2 $0, %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshuff64x2 $0, (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshuff64x2 $0, (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vshuff64x2 $0, %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshuff64x2 $0, (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshuff64x2 $0, (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vshuff64x2 $0, %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshuff64x2 $0, (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshuff64x2 $0, (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vshufi32x4 $0, %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshufi32x4 $0, (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshufi32x4 $0, (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vshufi32x4 $0, %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshufi32x4 $0, (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshufi32x4 $0, (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vshufi32x4 $0, %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshufi32x4 $0, (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshufi32x4 $0, (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vshufi64x2 $0, %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshufi64x2 $0, (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshufi64x2 $0, (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vshufi64x2 $0, %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshufi64x2 $0, (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshufi64x2 $0, (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vshufi64x2 $0, %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshufi64x2 $0, (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vshufi64x2 $0, (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - 0.50 0.50 - - - - - - vsubpd %xmm16, %xmm17, %xmm19 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vsubpd (%rax), %xmm17, %xmm19 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vsubpd (%rax){1to2}, %xmm17, %xmm19 @@ -477,3 +1301,75 @@ vsubps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: - - 0.50 0.50 - - - - - - vsubps %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vsubps (%rax), %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vsubps (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vunpckhpd %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhpd (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhpd (%rax){1to2}, %xmm17, %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vunpckhpd %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhpd (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhpd (%rax){1to2}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vunpckhpd %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhpd (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhpd (%rax){1to2}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vunpckhpd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhpd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhpd (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vunpckhpd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhpd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhpd (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vunpckhpd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhpd (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhpd (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vunpckhps %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhps (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhps (%rax){1to4}, %xmm17, %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vunpckhps %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhps (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhps (%rax){1to4}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vunpckhps %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhps (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhps (%rax){1to4}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vunpckhps %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhps (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhps (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vunpckhps %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhps (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhps (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vunpckhps %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhps (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpckhps (%rax){1to8}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vunpcklpd %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklpd (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklpd (%rax){1to2}, %xmm17, %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vunpcklpd %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklpd (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklpd (%rax){1to2}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vunpcklpd %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklpd (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklpd (%rax){1to2}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vunpcklpd %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklpd (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklpd (%rax){1to4}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vunpcklpd %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklpd (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklpd (%rax){1to4}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vunpcklpd %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklpd (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklpd (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vunpcklps %xmm16, %xmm17, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklps (%rax), %xmm17, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklps (%rax){1to4}, %xmm17, %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vunpcklps %xmm16, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklps (%rax), %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklps (%rax){1to4}, %xmm17, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vunpcklps %xmm16, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklps (%rax), %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklps (%rax){1to4}, %xmm17, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vunpcklps %ymm16, %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklps (%rax), %ymm17, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklps (%rax){1to8}, %ymm17, %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vunpcklps %ymm16, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklps (%rax), %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklps (%rax){1to8}, %ymm17, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vunpcklps %ymm16, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklps (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vunpcklps (%rax){1to8}, %ymm17, %ymm19 {%k1} {z}