[MCA][X86] Add AVX512 broadcast instruction test coverage
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Mon, 13 Dec 2021 17:39:31 +0000 (17:39 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Mon, 13 Dec 2021 17:45:16 +0000 (17:45 +0000)
As noted on D115547

12 files changed:
llvm/test/tools/llvm-mca/X86/Generic/resources-avx512.s
llvm/test/tools/llvm-mca/X86/Generic/resources-avx512bw.s
llvm/test/tools/llvm-mca/X86/Generic/resources-avx512bwvl.s
llvm/test/tools/llvm-mca/X86/Generic/resources-avx512vl.s
llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512.s
llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512bw.s
llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512bwvl.s
llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512vl.s
llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512.s
llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512bw.s
llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512bwvl.s
llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512vl.s

index 94da64e..e91da22 100644 (file)
@@ -50,6 +50,20 @@ valignq           $1, %zmm16, %zmm17, %zmm19 {z}{k1}
 valignq           $1, (%rax), %zmm17, %zmm19 {z}{k1}
 valignq           $1, (%rax){1to8}, %zmm17, %zmm19 {z}{k1}
 
+vbroadcastsd      %xmm16, %zmm19
+vbroadcastsd      (%rax), %zmm19
+vbroadcastsd      %xmm16, %zmm19 {k1}
+vbroadcastsd      (%rax), %zmm19 {k1}
+vbroadcastsd      %xmm16, %zmm19 {z}{k1}
+vbroadcastsd      (%rax), %zmm19 {z}{k1}
+
+vbroadcastss      %xmm16, %zmm19
+vbroadcastss      (%rax), %zmm19
+vbroadcastss      %xmm16, %zmm19 {k1}
+vbroadcastss      (%rax), %zmm19 {k1}
+vbroadcastss      %xmm16, %zmm19 {z}{k1}
+vbroadcastss      (%rax), %zmm19 {z}{k1}
+
 vcmppd            $0, %zmm0, %zmm1, %k2
 vcmppd            $0, (%rax), %zmm1, %k2
 vcmppd            $0, (%rax){1to8}, %zmm1, %k2
@@ -242,6 +256,20 @@ vpaddq            %zmm16, %zmm17, %zmm19 {z}{k1}
 vpaddq            (%rax), %zmm17, %zmm19 {z}{k1}
 vpaddq            (%rax){1to8}, %zmm17, %zmm19 {z}{k1}
 
+vpbroadcastd      %xmm16, %zmm19
+vpbroadcastd      (%rax), %zmm19
+vpbroadcastd      %xmm16, %zmm19 {k1}
+vpbroadcastd      (%rax), %zmm19 {k1}
+vpbroadcastd      %xmm16, %zmm19 {z}{k1}
+vpbroadcastd      (%rax), %zmm19 {z}{k1}
+
+vpbroadcastq      %xmm16, %zmm19
+vpbroadcastq      (%rax), %zmm19
+vpbroadcastq      %xmm16, %zmm19 {k1}
+vpbroadcastq      (%rax), %zmm19 {k1}
+vpbroadcastq      %xmm16, %zmm19 {z}{k1}
+vpbroadcastq      (%rax), %zmm19 {z}{k1}
+
 vpcmpd            $0, %zmm0, %zmm1, %k2
 vpcmpd            $0, (%rax), %zmm1, %k2
 vpcmpd            $0, (%rax){1to16}, %zmm1, %k2
@@ -791,6 +819,18 @@ vunpcklps         (%rax){1to16}, %zmm17, %zmm19 {z}{k1}
 # CHECK-NEXT:  1      1     1.00                        valignq        $1, %zmm16, %zmm17, %zmm19 {%k1} {z}
 # CHECK-NEXT:  2      8     1.00    *                   valignq        $1, (%rax), %zmm17, %zmm19 {%k1} {z}
 # CHECK-NEXT:  2      8     1.00    *                   valignq        $1, (%rax){1to8}, %zmm17, %zmm19 {%k1} {z}
+# CHECK-NEXT:  1      1     1.00                        vbroadcastsd   %xmm16, %zmm19
+# CHECK-NEXT:  2      8     1.00    *                   vbroadcastsd   (%rax), %zmm19
+# CHECK-NEXT:  1      1     1.00                        vbroadcastsd   %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  2      8     1.00    *                   vbroadcastsd   (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vbroadcastsd   %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  2      8     1.00    *                   vbroadcastsd   (%rax), %zmm19 {%k1} {z}
+# CHECK-NEXT:  1      1     1.00                        vbroadcastss   %xmm16, %zmm19
+# CHECK-NEXT:  2      8     1.00    *                   vbroadcastss   (%rax), %zmm19
+# CHECK-NEXT:  1      1     1.00                        vbroadcastss   %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  2      8     1.00    *                   vbroadcastss   (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vbroadcastss   %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  2      8     1.00    *                   vbroadcastss   (%rax), %zmm19 {%k1} {z}
 # CHECK-NEXT:  1      3     1.00                        vcmpeqpd       %zmm0, %zmm1, %k2
 # CHECK-NEXT:  2      10    1.00    *                   vcmpeqpd       (%rax), %zmm1, %k2
 # CHECK-NEXT:  2      10    1.00    *                   vcmpeqpd       (%rax){1to8}, %zmm1, %k2
@@ -961,6 +1001,18 @@ vunpcklps         (%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                        vpbroadcastd   %xmm16, %zmm19
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastd   (%rax), %zmm19
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastd   %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastd   (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastd   %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastd   (%rax), %zmm19 {%k1} {z}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastq   %xmm16, %zmm19
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastq   (%rax), %zmm19
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastq   %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastq   (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastq   %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastq   (%rax), %zmm19 {%k1} {z}
 # CHECK-NEXT:  1      1     0.50                        vpcmpeqd       %zmm0, %zmm1, %k2
 # CHECK-NEXT:  2      8     0.50    *                   vpcmpeqd       (%rax), %zmm1, %k2
 # CHECK-NEXT:  2      8     0.50    *                   vpcmpeqd       (%rax){1to16}, %zmm1, %k2
@@ -1412,7 +1464,7 @@ vunpcklps         (%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:  -     1506.00 138.67 201.67  -    384.67 209.00 209.00
+# CHECK-NEXT:  -     1506.00 138.67 201.67  -    408.67 215.00 215.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  Instructions:
@@ -1460,6 +1512,18 @@ vunpcklps         (%rax){1to16}, %zmm17, %zmm19 {z}{k1}
 # CHECK-NEXT:  -      -      -      -      -     1.00    -      -     valignq  $1, %zmm16, %zmm17, %zmm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   valignq  $1, (%rax), %zmm17, %zmm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   valignq  $1, (%rax){1to8}, %zmm17, %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vbroadcastsd     %xmm16, %zmm19
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vbroadcastsd     (%rax), %zmm19
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vbroadcastsd     %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vbroadcastsd     (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vbroadcastsd     %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vbroadcastsd     (%rax), %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vbroadcastss     %xmm16, %zmm19
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vbroadcastss     (%rax), %zmm19
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vbroadcastss     %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vbroadcastss     (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vbroadcastss     %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vbroadcastss     (%rax), %zmm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -     1.00    -      -      -      -     vcmpeqpd %zmm0, %zmm1, %k2
 # CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   vcmpeqpd (%rax), %zmm1, %k2
 # CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   vcmpeqpd (%rax){1to8}, %zmm1, %k2
@@ -1630,6 +1694,18 @@ vunpcklps         (%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    -      -     vpbroadcastd     %xmm16, %zmm19
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpbroadcastd     (%rax), %zmm19
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastd     %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpbroadcastd     (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastd     %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpbroadcastd     (%rax), %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastq     %xmm16, %zmm19
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpbroadcastq     (%rax), %zmm19
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastq     %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpbroadcastq     (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastq     %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpbroadcastq     (%rax), %zmm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     vpcmpeqd %zmm0, %zmm1, %k2
 # CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   vpcmpeqd (%rax), %zmm1, %k2
 # CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   vpcmpeqd (%rax){1to16}, %zmm1, %k2
index 3ccb874..a1ea3bb 100644 (file)
@@ -83,6 +83,20 @@ vpalignr          $1, (%rax), %zmm17, %zmm19 {k1}
 vpalignr          $1, %zmm16, %zmm17, %zmm19 {z}{k1}
 vpalignr          $1, (%rax), %zmm17, %zmm19 {z}{k1}
 
+vpbroadcastb      %xmm16, %zmm19
+vpbroadcastb      (%rax), %zmm19
+vpbroadcastb      %xmm16, %zmm19 {k1}
+vpbroadcastb      (%rax), %zmm19 {k1}
+vpbroadcastb      %xmm16, %zmm19 {z}{k1}
+vpbroadcastb      (%rax), %zmm19 {z}{k1}
+
+vpbroadcastw      %xmm16, %zmm19
+vpbroadcastw      (%rax), %zmm19
+vpbroadcastw      %xmm16, %zmm19 {k1}
+vpbroadcastw      (%rax), %zmm19 {k1}
+vpbroadcastw      %xmm16, %zmm19 {z}{k1}
+vpbroadcastw      (%rax), %zmm19 {z}{k1}
+
 vpcmpb            $0, %zmm0, %zmm1, %k2
 vpcmpb            $0, (%rax), %zmm1, %k2
 vpcmpb            $0, %zmm0, %zmm1, %k2 {k3}
@@ -320,6 +334,18 @@ vpmovw2m          %zmm0, %k0
 # CHECK-NEXT:  2      8     1.00    *                   vpalignr       $1, (%rax), %zmm17, %zmm19 {%k1}
 # CHECK-NEXT:  1      1     1.00                        vpalignr       $1, %zmm16, %zmm17, %zmm19 {%k1} {z}
 # CHECK-NEXT:  2      8     1.00    *                   vpalignr       $1, (%rax), %zmm17, %zmm19 {%k1} {z}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastb   %xmm16, %zmm19
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastb   (%rax), %zmm19
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastb   %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastb   (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastb   %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastb   (%rax), %zmm19 {%k1} {z}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastw   %xmm16, %zmm19
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastw   (%rax), %zmm19
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastw   %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastw   (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastw   %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastw   (%rax), %zmm19 {%k1} {z}
 # CHECK-NEXT:  1      1     0.50                        vpcmpeqb       %zmm0, %zmm1, %k2
 # CHECK-NEXT:  2      8     0.50    *                   vpcmpeqb       (%rax), %zmm1, %k2
 # CHECK-NEXT:  1      1     0.50                        vpcmpeqb       %zmm0, %zmm1, %k2 {%k3}
@@ -461,7 +487,7 @@ vpmovw2m          %zmm0, %k0
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
-# CHECK-NEXT:  -      -     10.67  47.67   -     141.67 44.50  44.50
+# CHECK-NEXT:  -      -     10.67  47.67   -     153.67 47.50  47.50
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  Instructions:
@@ -537,6 +563,18 @@ vpmovw2m          %zmm0, %k0
 # CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpalignr $1, (%rax), %zmm17, %zmm19 {%k1}
 # CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpalignr $1, %zmm16, %zmm17, %zmm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpalignr $1, (%rax), %zmm17, %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastb     %xmm16, %zmm19
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpbroadcastb     (%rax), %zmm19
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastb     %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpbroadcastb     (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastb     %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpbroadcastb     (%rax), %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastw     %xmm16, %zmm19
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpbroadcastw     (%rax), %zmm19
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastw     %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpbroadcastw     (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastw     %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpbroadcastw     (%rax), %zmm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     vpcmpeqb %zmm0, %zmm1, %k2
 # CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   vpcmpeqb (%rax), %zmm1, %k2
 # CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     vpcmpeqb %zmm0, %zmm1, %k2 {%k3}
index 207660a..d0eeeab 100644 (file)
@@ -127,6 +127,34 @@ vpalignr          $1, (%rax), %ymm17, %ymm19 {k1}
 vpalignr          $1, %ymm16, %ymm17, %ymm19 {z}{k1}
 vpalignr          $1, (%rax), %ymm17, %ymm19 {z}{k1}
 
+vpbroadcastb      %xmm16, %xmm19
+vpbroadcastb      (%rax), %xmm19
+vpbroadcastb      %xmm16, %xmm19 {k1}
+vpbroadcastb      (%rax), %xmm19 {k1}
+vpbroadcastb      %xmm16, %xmm19 {z}{k1}
+vpbroadcastb      (%rax), %xmm19 {z}{k1}
+
+vpbroadcastb      %xmm16, %ymm19
+vpbroadcastb      (%rax), %ymm19
+vpbroadcastb      %xmm16, %ymm19 {k1}
+vpbroadcastb      (%rax), %ymm19 {k1}
+vpbroadcastb      %xmm16, %ymm19 {z}{k1}
+vpbroadcastb      (%rax), %ymm19 {z}{k1}
+
+vpbroadcastw      %xmm16, %xmm19
+vpbroadcastw      (%rax), %xmm19
+vpbroadcastw      %xmm16, %xmm19 {k1}
+vpbroadcastw      (%rax), %xmm19 {k1}
+vpbroadcastw      %xmm16, %xmm19 {z}{k1}
+vpbroadcastw      (%rax), %xmm19 {z}{k1}
+
+vpbroadcastw      %xmm16, %ymm19
+vpbroadcastw      (%rax), %ymm19
+vpbroadcastw      %xmm16, %ymm19 {k1}
+vpbroadcastw      (%rax), %ymm19 {k1}
+vpbroadcastw      %xmm16, %ymm19 {z}{k1}
+vpbroadcastw      (%rax), %ymm19 {z}{k1}
+
 vpcmpb            $0, %xmm0, %xmm1, %k2
 vpcmpb            $0, (%rax), %xmm1, %k2
 vpcmpb            $0, %xmm0, %xmm1, %k2 {k3}
@@ -556,6 +584,30 @@ vpmovw2m          %ymm0, %k0
 # CHECK-NEXT:  2      8     1.00    *                   vpalignr       $1, (%rax), %ymm17, %ymm19 {%k1}
 # CHECK-NEXT:  1      1     1.00                        vpalignr       $1, %ymm16, %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  2      8     1.00    *                   vpalignr       $1, (%rax), %ymm17, %ymm19 {%k1} {z}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastb   %xmm16, %xmm19
+# CHECK-NEXT:  2      7     0.50    *                   vpbroadcastb   (%rax), %xmm19
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastb   %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  2      7     0.50    *                   vpbroadcastb   (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastb   %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  2      7     0.50    *                   vpbroadcastb   (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastb   %xmm16, %ymm19
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastb   (%rax), %ymm19
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastb   %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastb   (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastb   %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastb   (%rax), %ymm19 {%k1} {z}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastw   %xmm16, %xmm19
+# CHECK-NEXT:  2      7     0.50    *                   vpbroadcastw   (%rax), %xmm19
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastw   %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  2      7     0.50    *                   vpbroadcastw   (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastw   %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  2      7     0.50    *                   vpbroadcastw   (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastw   %xmm16, %ymm19
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastw   (%rax), %ymm19
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastw   %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastw   (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastw   %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastw   (%rax), %ymm19 {%k1} {z}
 # CHECK-NEXT:  1      1     0.50                        vpcmpeqb       %xmm0, %xmm1, %k2
 # CHECK-NEXT:  2      7     0.50    *                   vpcmpeqb       (%rax), %xmm1, %k2
 # CHECK-NEXT:  1      1     0.50                        vpcmpeqb       %xmm0, %xmm1, %k2 {%k3}
@@ -825,7 +877,7 @@ vpmovw2m          %ymm0, %k0
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
-# CHECK-NEXT:  -      -     13.33  128.33  -     222.33 89.00  89.00
+# CHECK-NEXT:  -      -     13.33  131.33  -     243.33 95.00  95.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  Instructions:
@@ -937,6 +989,30 @@ vpmovw2m          %ymm0, %k0
 # CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpalignr $1, (%rax), %ymm17, %ymm19 {%k1}
 # CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpalignr $1, %ymm16, %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpalignr $1, (%rax), %ymm17, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastb     %xmm16, %xmm19
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   vpbroadcastb     (%rax), %xmm19
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastb     %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   vpbroadcastb     (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastb     %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   vpbroadcastb     (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastb     %xmm16, %ymm19
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpbroadcastb     (%rax), %ymm19
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastb     %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpbroadcastb     (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastb     %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpbroadcastb     (%rax), %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastw     %xmm16, %xmm19
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   vpbroadcastw     (%rax), %xmm19
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastw     %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   vpbroadcastw     (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastw     %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   vpbroadcastw     (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastw     %xmm16, %ymm19
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpbroadcastw     (%rax), %ymm19
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastw     %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpbroadcastw     (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastw     %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpbroadcastw     (%rax), %ymm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     vpcmpeqb %xmm0, %xmm1, %k2
 # CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   vpcmpeqb (%rax), %xmm1, %k2
 # CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     vpcmpeqb %xmm0, %xmm1, %k2 {%k3}
index 1e6e671..65b6d41 100644 (file)
@@ -81,6 +81,27 @@ valignq           $1, %ymm16, %ymm17, %ymm19 {z}{k1}
 valignq           $1, (%rax), %ymm17, %ymm19 {z}{k1}
 valignq           $1, (%rax){1to4}, %ymm17, %ymm19 {z}{k1}
 
+vbroadcastsd      %xmm16, %ymm19
+vbroadcastsd      (%rax), %ymm19
+vbroadcastsd      %xmm16, %ymm19 {k1}
+vbroadcastsd      (%rax), %ymm19 {k1}
+vbroadcastsd      %xmm16, %ymm19 {z}{k1}
+vbroadcastsd      (%rax), %ymm19 {z}{k1}
+
+vbroadcastss      %xmm16, %xmm19
+vbroadcastss      (%rax), %xmm19
+vbroadcastss      %xmm16, %xmm19 {k1}
+vbroadcastss      (%rax), %xmm19 {k1}
+vbroadcastss      %xmm16, %xmm19 {z}{k1}
+vbroadcastss      (%rax), %xmm19 {z}{k1}
+
+vbroadcastss      %xmm16, %ymm19
+vbroadcastss      (%rax), %ymm19
+vbroadcastss      %xmm16, %ymm19 {k1}
+vbroadcastss      (%rax), %ymm19 {k1}
+vbroadcastss      %xmm16, %ymm19 {z}{k1}
+vbroadcastss      (%rax), %ymm19 {z}{k1}
+
 vcmppd            $0, %xmm0, %xmm1, %k2
 vcmppd            $0, (%rax), %xmm1, %k2
 vcmppd            $0, (%rax){1to2}, %xmm1, %k2
@@ -359,6 +380,34 @@ vpaddq            %ymm16, %ymm17, %ymm19 {z}{k1}
 vpaddq            (%rax), %ymm17, %ymm19 {z}{k1}
 vpaddq            (%rax){1to4}, %ymm17, %ymm19 {z}{k1}
 
+vpbroadcastd      %xmm16, %xmm19
+vpbroadcastd      (%rax), %xmm19
+vpbroadcastd      %xmm16, %xmm19 {k1}
+vpbroadcastd      (%rax), %xmm19 {k1}
+vpbroadcastd      %xmm16, %xmm19 {z}{k1}
+vpbroadcastd      (%rax), %xmm19 {z}{k1}
+
+vpbroadcastd      %xmm16, %ymm19
+vpbroadcastd      (%rax), %ymm19
+vpbroadcastd      %xmm16, %ymm19 {k1}
+vpbroadcastd      (%rax), %ymm19 {k1}
+vpbroadcastd      %xmm16, %ymm19 {z}{k1}
+vpbroadcastd      (%rax), %ymm19 {z}{k1}
+
+vpbroadcastq      %xmm16, %xmm19
+vpbroadcastq      (%rax), %xmm19
+vpbroadcastq      %xmm16, %xmm19 {k1}
+vpbroadcastq      (%rax), %xmm19 {k1}
+vpbroadcastq      %xmm16, %xmm19 {z}{k1}
+vpbroadcastq      (%rax), %xmm19 {z}{k1}
+
+vpbroadcastq      %xmm16, %ymm19
+vpbroadcastq      (%rax), %ymm19
+vpbroadcastq      %xmm16, %ymm19 {k1}
+vpbroadcastq      (%rax), %ymm19 {k1}
+vpbroadcastq      %xmm16, %ymm19 {z}{k1}
+vpbroadcastq      (%rax), %ymm19 {z}{k1}
+
 vpcmpd            $0, %xmm0, %xmm1, %k2
 vpcmpd            $0, (%rax), %xmm1, %k2
 vpcmpd            $0, (%rax){1to4}, %xmm1, %k2
@@ -1218,6 +1267,24 @@ vunpcklps         (%rax){1to8}, %ymm17, %ymm19 {z}{k1}
 # CHECK-NEXT:  1      1     1.00                        valignq        $1, %ymm16, %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  2      8     1.00    *                   valignq        $1, (%rax), %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  2      8     1.00    *                   valignq        $1, (%rax){1to4}, %ymm17, %ymm19 {%k1} {z}
+# CHECK-NEXT:  1      1     1.00                        vbroadcastsd   %xmm16, %ymm19
+# CHECK-NEXT:  2      8     1.00    *                   vbroadcastsd   (%rax), %ymm19
+# CHECK-NEXT:  1      1     1.00                        vbroadcastsd   %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  2      8     1.00    *                   vbroadcastsd   (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vbroadcastsd   %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  2      8     1.00    *                   vbroadcastsd   (%rax), %ymm19 {%k1} {z}
+# CHECK-NEXT:  1      1     1.00                        vbroadcastss   %xmm16, %xmm19
+# CHECK-NEXT:  2      8     1.00    *                   vbroadcastss   (%rax), %xmm19
+# CHECK-NEXT:  1      1     1.00                        vbroadcastss   %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  2      8     1.00    *                   vbroadcastss   (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vbroadcastss   %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  2      8     1.00    *                   vbroadcastss   (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  1      1     1.00                        vbroadcastss   %xmm16, %ymm19
+# CHECK-NEXT:  2      8     1.00    *                   vbroadcastss   (%rax), %ymm19
+# CHECK-NEXT:  1      1     1.00                        vbroadcastss   %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  2      8     1.00    *                   vbroadcastss   (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vbroadcastss   %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  2      8     1.00    *                   vbroadcastss   (%rax), %ymm19 {%k1} {z}
 # CHECK-NEXT:  1      3     1.00                        vcmpeqpd       %xmm0, %xmm1, %k2
 # CHECK-NEXT:  2      9     1.00    *                   vcmpeqpd       (%rax), %xmm1, %k2
 # CHECK-NEXT:  2      9     1.00    *                   vcmpeqpd       (%rax){1to2}, %xmm1, %k2
@@ -1466,6 +1533,30 @@ vunpcklps         (%rax){1to8}, %ymm17, %ymm19 {z}{k1}
 # CHECK-NEXT:  1      1     0.50                        vpaddq %ymm16, %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  2      8     0.50    *                   vpaddq (%rax), %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  2      8     0.50    *                   vpaddq (%rax){1to4}, %ymm17, %ymm19 {%k1} {z}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastd   %xmm16, %xmm19
+# CHECK-NEXT:  2      7     0.50    *                   vpbroadcastd   (%rax), %xmm19
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastd   %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  2      7     0.50    *                   vpbroadcastd   (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastd   %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  2      7     0.50    *                   vpbroadcastd   (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastd   %xmm16, %ymm19
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastd   (%rax), %ymm19
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastd   %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastd   (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastd   %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastd   (%rax), %ymm19 {%k1} {z}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastq   %xmm16, %xmm19
+# CHECK-NEXT:  2      7     0.50    *                   vpbroadcastq   (%rax), %xmm19
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastq   %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  2      7     0.50    *                   vpbroadcastq   (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastq   %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  2      7     0.50    *                   vpbroadcastq   (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastq   %xmm16, %ymm19
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastq   (%rax), %ymm19
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastq   %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastq   (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastq   %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastq   (%rax), %ymm19 {%k1} {z}
 # CHECK-NEXT:  1      1     0.50                        vpcmpeqd       %xmm0, %xmm1, %k2
 # CHECK-NEXT:  2      7     0.50    *                   vpcmpeqd       (%rax), %xmm1, %k2
 # CHECK-NEXT:  2      7     0.50    *                   vpcmpeqd       (%rax){1to4}, %xmm1, %k2
@@ -2165,7 +2256,7 @@ vunpcklps         (%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:  -     1935.00 196.00 356.50  -    527.50 328.00 328.00
+# CHECK-NEXT:  -     1935.00 196.00 359.50  -    566.50 338.50 338.50
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  Instructions:
@@ -2241,6 +2332,24 @@ vunpcklps         (%rax){1to8}, %ymm17, %ymm19 {z}{k1}
 # CHECK-NEXT:  -      -      -      -      -     1.00    -      -     valignq  $1, %ymm16, %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   valignq  $1, (%rax), %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   valignq  $1, (%rax){1to4}, %ymm17, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vbroadcastsd     %xmm16, %ymm19
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vbroadcastsd     (%rax), %ymm19
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vbroadcastsd     %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vbroadcastsd     (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vbroadcastsd     %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vbroadcastsd     (%rax), %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vbroadcastss     %xmm16, %xmm19
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vbroadcastss     (%rax), %xmm19
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vbroadcastss     %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vbroadcastss     (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vbroadcastss     %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vbroadcastss     (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vbroadcastss     %xmm16, %ymm19
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vbroadcastss     (%rax), %ymm19
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vbroadcastss     %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vbroadcastss     (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vbroadcastss     %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vbroadcastss     (%rax), %ymm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -     1.00    -      -      -      -     vcmpeqpd %xmm0, %xmm1, %k2
 # CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   vcmpeqpd (%rax), %xmm1, %k2
 # CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   vcmpeqpd (%rax){1to2}, %xmm1, %k2
@@ -2489,6 +2598,30 @@ vunpcklps         (%rax){1to8}, %ymm17, %ymm19 {z}{k1}
 # CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     vpaddq   %ymm16, %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   vpaddq   (%rax), %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   vpaddq   (%rax){1to4}, %ymm17, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastd     %xmm16, %xmm19
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   vpbroadcastd     (%rax), %xmm19
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastd     %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   vpbroadcastd     (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastd     %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   vpbroadcastd     (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastd     %xmm16, %ymm19
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpbroadcastd     (%rax), %ymm19
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastd     %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpbroadcastd     (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastd     %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpbroadcastd     (%rax), %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastq     %xmm16, %xmm19
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   vpbroadcastq     (%rax), %xmm19
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastq     %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   vpbroadcastq     (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastq     %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   vpbroadcastq     (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastq     %xmm16, %ymm19
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpbroadcastq     (%rax), %ymm19
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastq     %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpbroadcastq     (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     vpbroadcastq     %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   vpbroadcastq     (%rax), %ymm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -     0.50    -     0.50    -      -     vpcmpeqd %xmm0, %xmm1, %k2
 # CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   vpcmpeqd (%rax), %xmm1, %k2
 # CHECK-NEXT:  -      -      -     0.50    -     0.50   0.50   0.50   vpcmpeqd (%rax){1to4}, %xmm1, %k2
index b843e7a..c9a1bef 100644 (file)
@@ -50,6 +50,20 @@ valignq           $1, %zmm16, %zmm17, %zmm19 {z}{k1}
 valignq           $1, (%rax), %zmm17, %zmm19 {z}{k1}
 valignq           $1, (%rax){1to8}, %zmm17, %zmm19 {z}{k1}
 
+vbroadcastsd      %xmm16, %zmm19
+vbroadcastsd      (%rax), %zmm19
+vbroadcastsd      %xmm16, %zmm19 {k1}
+vbroadcastsd      (%rax), %zmm19 {k1}
+vbroadcastsd      %xmm16, %zmm19 {z}{k1}
+vbroadcastsd      (%rax), %zmm19 {z}{k1}
+
+vbroadcastss      %xmm16, %zmm19
+vbroadcastss      (%rax), %zmm19
+vbroadcastss      %xmm16, %zmm19 {k1}
+vbroadcastss      (%rax), %zmm19 {k1}
+vbroadcastss      %xmm16, %zmm19 {z}{k1}
+vbroadcastss      (%rax), %zmm19 {z}{k1}
+
 vcmppd            $0, %zmm0, %zmm1, %k2
 vcmppd            $0, (%rax), %zmm1, %k2
 vcmppd            $0, (%rax){1to8}, %zmm1, %k2
@@ -242,6 +256,20 @@ vpaddq            %zmm16, %zmm17, %zmm19 {z}{k1}
 vpaddq            (%rax), %zmm17, %zmm19 {z}{k1}
 vpaddq            (%rax){1to8}, %zmm17, %zmm19 {z}{k1}
 
+vpbroadcastd      %xmm16, %zmm19
+vpbroadcastd      (%rax), %zmm19
+vpbroadcastd      %xmm16, %zmm19 {k1}
+vpbroadcastd      (%rax), %zmm19 {k1}
+vpbroadcastd      %xmm16, %zmm19 {z}{k1}
+vpbroadcastd      (%rax), %zmm19 {z}{k1}
+
+vpbroadcastq      %xmm16, %zmm19
+vpbroadcastq      (%rax), %zmm19
+vpbroadcastq      %xmm16, %zmm19 {k1}
+vpbroadcastq      (%rax), %zmm19 {k1}
+vpbroadcastq      %xmm16, %zmm19 {z}{k1}
+vpbroadcastq      (%rax), %zmm19 {z}{k1}
+
 vpcmpd            $0, %zmm0, %zmm1, %k2
 vpcmpd            $0, (%rax), %zmm1, %k2
 vpcmpd            $0, (%rax){1to16}, %zmm1, %k2
@@ -791,6 +819,18 @@ vunpcklps         (%rax){1to16}, %zmm17, %zmm19 {z}{k1}
 # CHECK-NEXT:  1      3     1.00                        valignq        $1, %zmm16, %zmm17, %zmm19 {%k1} {z}
 # CHECK-NEXT:  2      10    1.00    *                   valignq        $1, (%rax), %zmm17, %zmm19 {%k1} {z}
 # CHECK-NEXT:  2      10    1.00    *                   valignq        $1, (%rax){1to8}, %zmm17, %zmm19 {%k1} {z}
+# CHECK-NEXT:  1      3     1.00                        vbroadcastsd   %xmm16, %zmm19
+# CHECK-NEXT:  2      8     0.50    *                   vbroadcastsd   (%rax), %zmm19
+# CHECK-NEXT:  1      3     1.00                        vbroadcastsd   %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  2      8     0.50    *                   vbroadcastsd   (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vbroadcastsd   %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  2      8     0.50    *                   vbroadcastsd   (%rax), %zmm19 {%k1} {z}
+# CHECK-NEXT:  1      3     1.00                        vbroadcastss   %xmm16, %zmm19
+# CHECK-NEXT:  2      8     0.50    *                   vbroadcastss   (%rax), %zmm19
+# CHECK-NEXT:  1      3     1.00                        vbroadcastss   %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  2      8     0.50    *                   vbroadcastss   (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vbroadcastss   %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  2      8     0.50    *                   vbroadcastss   (%rax), %zmm19 {%k1} {z}
 # CHECK-NEXT:  1      4     1.00                        vcmpeqpd       %zmm0, %zmm1, %k2
 # CHECK-NEXT:  2      11    1.00    *                   vcmpeqpd       (%rax), %zmm1, %k2
 # CHECK-NEXT:  2      11    1.00    *                   vcmpeqpd       (%rax){1to8}, %zmm1, %k2
@@ -961,6 +1001,18 @@ vunpcklps         (%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                        vpbroadcastd   %xmm16, %zmm19
+# CHECK-NEXT:  2      8     0.50    *                   vpbroadcastd   (%rax), %zmm19
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastd   %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  2      8     0.50    *                   vpbroadcastd   (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastd   %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  2      8     0.50    *                   vpbroadcastd   (%rax), %zmm19 {%k1} {z}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastq   %xmm16, %zmm19
+# CHECK-NEXT:  2      8     0.50    *                   vpbroadcastq   (%rax), %zmm19
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastq   %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  2      8     0.50    *                   vpbroadcastq   (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastq   %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  2      8     0.50    *                   vpbroadcastq   (%rax), %zmm19 {%k1} {z}
 # CHECK-NEXT:  1      4     1.00                        vpcmpeqd       %zmm0, %zmm1, %k2
 # CHECK-NEXT:  2      11    1.00    *                   vpcmpeqd       (%rax), %zmm1, %k2
 # CHECK-NEXT:  2      11    1.00    *                   vpcmpeqd       (%rax){1to16}, %zmm1, %k2
@@ -1416,7 +1468,7 @@ vunpcklps         (%rax){1to16}, %zmm17, %zmm19 {z}{k1}
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]
-# CHECK-NEXT:  -     612.00 209.67 30.67  245.00 245.00  -     507.67 2.00    -      -      -
+# CHECK-NEXT:  -     612.00 213.67 34.67  251.00 251.00  -     523.67 2.00    -      -      -
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   Instructions:
@@ -1464,6 +1516,18 @@ vunpcklps         (%rax){1to16}, %zmm17, %zmm19 {z}{k1}
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     valignq      $1, %zmm16, %zmm17, %zmm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     valignq      $1, (%rax), %zmm17, %zmm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     valignq      $1, (%rax){1to8}, %zmm17, %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vbroadcastsd %xmm16, %zmm19
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vbroadcastsd (%rax), %zmm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vbroadcastsd %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vbroadcastsd (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vbroadcastsd %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vbroadcastsd (%rax), %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vbroadcastss %xmm16, %zmm19
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vbroadcastss (%rax), %zmm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vbroadcastss %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vbroadcastss (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vbroadcastss %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vbroadcastss (%rax), %zmm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vcmpeqpd     %zmm0, %zmm1, %k2
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vcmpeqpd     (%rax), %zmm1, %k2
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vcmpeqpd     (%rax){1to8}, %zmm1, %k2
@@ -1634,6 +1698,18 @@ vunpcklps         (%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    -      -      -      -     vpbroadcastd %xmm16, %zmm19
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vpbroadcastd (%rax), %zmm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastd %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vpbroadcastd (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastd %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vpbroadcastd (%rax), %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastq %xmm16, %zmm19
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vpbroadcastq (%rax), %zmm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastq %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vpbroadcastq (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastq %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vpbroadcastq (%rax), %zmm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpcmpeqd     %zmm0, %zmm1, %k2
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpcmpeqd     (%rax), %zmm1, %k2
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpcmpeqd     (%rax){1to16}, %zmm1, %k2
index 31a755f..12ee084 100644 (file)
@@ -83,6 +83,20 @@ vpalignr          $1, (%rax), %zmm17, %zmm19 {k1}
 vpalignr          $1, %zmm16, %zmm17, %zmm19 {z}{k1}
 vpalignr          $1, (%rax), %zmm17, %zmm19 {z}{k1}
 
+vpbroadcastb      %xmm16, %zmm19
+vpbroadcastb      (%rax), %zmm19
+vpbroadcastb      %xmm16, %zmm19 {k1}
+vpbroadcastb      (%rax), %zmm19 {k1}
+vpbroadcastb      %xmm16, %zmm19 {z}{k1}
+vpbroadcastb      (%rax), %zmm19 {z}{k1}
+
+vpbroadcastw      %xmm16, %zmm19
+vpbroadcastw      (%rax), %zmm19
+vpbroadcastw      %xmm16, %zmm19 {k1}
+vpbroadcastw      (%rax), %zmm19 {k1}
+vpbroadcastw      %xmm16, %zmm19 {z}{k1}
+vpbroadcastw      (%rax), %zmm19 {z}{k1}
+
 vpcmpb            $0, %zmm0, %zmm1, %k2
 vpcmpb            $0, (%rax), %zmm1, %k2
 vpcmpb            $0, %zmm0, %zmm1, %k2 {k3}
@@ -320,6 +334,18 @@ vpmovw2m          %zmm0, %k0
 # CHECK-NEXT:  2      8     1.00    *                   vpalignr       $1, (%rax), %zmm17, %zmm19 {%k1}
 # CHECK-NEXT:  1      1     1.00                        vpalignr       $1, %zmm16, %zmm17, %zmm19 {%k1} {z}
 # CHECK-NEXT:  2      8     1.00    *                   vpalignr       $1, (%rax), %zmm17, %zmm19 {%k1} {z}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastb   %xmm16, %zmm19
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastb   (%rax), %zmm19
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastb   %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastb   (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastb   %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastb   (%rax), %zmm19 {%k1} {z}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastw   %xmm16, %zmm19
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastw   (%rax), %zmm19
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastw   %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastw   (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastw   %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastw   (%rax), %zmm19 {%k1} {z}
 # CHECK-NEXT:  1      4     1.00                        vpcmpeqb       %zmm0, %zmm1, %k2
 # CHECK-NEXT:  2      11    1.00    *                   vpcmpeqb       (%rax), %zmm1, %k2
 # CHECK-NEXT:  1      4     1.00                        vpcmpeqb       %zmm0, %zmm1, %k2 {%k3}
@@ -465,7 +491,7 @@ vpmovw2m          %zmm0, %k0
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]
-# CHECK-NEXT:  -      -     32.50  8.50   44.50  44.50   -     164.50 0.50    -      -      -
+# CHECK-NEXT:  -      -     32.50  8.50   47.50  47.50   -     176.50 0.50    -      -      -
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   Instructions:
@@ -541,6 +567,18 @@ vpmovw2m          %zmm0, %k0
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpalignr     $1, (%rax), %zmm17, %zmm19 {%k1}
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpalignr     $1, %zmm16, %zmm17, %zmm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpalignr     $1, (%rax), %zmm17, %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastb %xmm16, %zmm19
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpbroadcastb (%rax), %zmm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastb %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpbroadcastb (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastb %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpbroadcastb (%rax), %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastw %xmm16, %zmm19
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpbroadcastw (%rax), %zmm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastw %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpbroadcastw (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastw %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpbroadcastw (%rax), %zmm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpcmpeqb     %zmm0, %zmm1, %k2
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpcmpeqb     (%rax), %zmm1, %k2
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpcmpeqb     %zmm0, %zmm1, %k2 {%k3}
index 8b2300e..e013b4a 100644 (file)
@@ -127,6 +127,34 @@ vpalignr          $1, (%rax), %ymm17, %ymm19 {k1}
 vpalignr          $1, %ymm16, %ymm17, %ymm19 {z}{k1}
 vpalignr          $1, (%rax), %ymm17, %ymm19 {z}{k1}
 
+vpbroadcastb      %xmm16, %xmm19
+vpbroadcastb      (%rax), %xmm19
+vpbroadcastb      %xmm16, %xmm19 {k1}
+vpbroadcastb      (%rax), %xmm19 {k1}
+vpbroadcastb      %xmm16, %xmm19 {z}{k1}
+vpbroadcastb      (%rax), %xmm19 {z}{k1}
+
+vpbroadcastb      %xmm16, %ymm19
+vpbroadcastb      (%rax), %ymm19
+vpbroadcastb      %xmm16, %ymm19 {k1}
+vpbroadcastb      (%rax), %ymm19 {k1}
+vpbroadcastb      %xmm16, %ymm19 {z}{k1}
+vpbroadcastb      (%rax), %ymm19 {z}{k1}
+
+vpbroadcastw      %xmm16, %xmm19
+vpbroadcastw      (%rax), %xmm19
+vpbroadcastw      %xmm16, %xmm19 {k1}
+vpbroadcastw      (%rax), %xmm19 {k1}
+vpbroadcastw      %xmm16, %xmm19 {z}{k1}
+vpbroadcastw      (%rax), %xmm19 {z}{k1}
+
+vpbroadcastw      %xmm16, %ymm19
+vpbroadcastw      (%rax), %ymm19
+vpbroadcastw      %xmm16, %ymm19 {k1}
+vpbroadcastw      (%rax), %ymm19 {k1}
+vpbroadcastw      %xmm16, %ymm19 {z}{k1}
+vpbroadcastw      (%rax), %ymm19 {z}{k1}
+
 vpcmpb            $0, %xmm0, %xmm1, %k2
 vpcmpb            $0, (%rax), %xmm1, %k2
 vpcmpb            $0, %xmm0, %xmm1, %k2 {k3}
@@ -556,6 +584,30 @@ vpmovw2m          %ymm0, %k0
 # CHECK-NEXT:  2      8     1.00    *                   vpalignr       $1, (%rax), %ymm17, %ymm19 {%k1}
 # CHECK-NEXT:  1      1     1.00                        vpalignr       $1, %ymm16, %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  2      8     1.00    *                   vpalignr       $1, (%rax), %ymm17, %ymm19 {%k1} {z}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastb   %xmm16, %xmm19
+# CHECK-NEXT:  2      7     1.00    *                   vpbroadcastb   (%rax), %xmm19
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastb   %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  2      7     1.00    *                   vpbroadcastb   (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastb   %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  2      7     1.00    *                   vpbroadcastb   (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastb   %xmm16, %ymm19
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastb   (%rax), %ymm19
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastb   %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastb   (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastb   %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastb   (%rax), %ymm19 {%k1} {z}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastw   %xmm16, %xmm19
+# CHECK-NEXT:  2      7     1.00    *                   vpbroadcastw   (%rax), %xmm19
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastw   %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  2      7     1.00    *                   vpbroadcastw   (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastw   %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  2      7     1.00    *                   vpbroadcastw   (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastw   %xmm16, %ymm19
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastw   (%rax), %ymm19
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastw   %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastw   (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastw   %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastw   (%rax), %ymm19 {%k1} {z}
 # CHECK-NEXT:  1      4     1.00                        vpcmpeqb       %xmm0, %xmm1, %k2
 # CHECK-NEXT:  2      10    1.00    *                   vpcmpeqb       (%rax), %xmm1, %k2
 # CHECK-NEXT:  1      4     1.00                        vpcmpeqb       %xmm0, %xmm1, %k2 {%k3}
@@ -829,7 +881,7 @@ vpmovw2m          %ymm0, %k0
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]
-# CHECK-NEXT:  -      -     33.00  29.00  89.00  89.00   -     313.00 1.00    -      -      -
+# CHECK-NEXT:  -      -     33.00  29.00  95.00  95.00   -     337.00 1.00    -      -      -
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   Instructions:
@@ -941,6 +993,30 @@ vpmovw2m          %ymm0, %k0
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpalignr     $1, (%rax), %ymm17, %ymm19 {%k1}
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpalignr     $1, %ymm16, %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpalignr     $1, (%rax), %ymm17, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastb %xmm16, %xmm19
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpbroadcastb (%rax), %xmm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastb %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpbroadcastb (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastb %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpbroadcastb (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastb %xmm16, %ymm19
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpbroadcastb (%rax), %ymm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastb %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpbroadcastb (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastb %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpbroadcastb (%rax), %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastw %xmm16, %xmm19
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpbroadcastw (%rax), %xmm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastw %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpbroadcastw (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastw %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpbroadcastw (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastw %xmm16, %ymm19
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpbroadcastw (%rax), %ymm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastw %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpbroadcastw (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastw %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpbroadcastw (%rax), %ymm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpcmpeqb     %xmm0, %xmm1, %k2
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpcmpeqb     (%rax), %xmm1, %k2
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpcmpeqb     %xmm0, %xmm1, %k2 {%k3}
index 4e4668d..e00b1d9 100644 (file)
@@ -81,6 +81,27 @@ valignq           $1, %ymm16, %ymm17, %ymm19 {z}{k1}
 valignq           $1, (%rax), %ymm17, %ymm19 {z}{k1}
 valignq           $1, (%rax){1to4}, %ymm17, %ymm19 {z}{k1}
 
+vbroadcastsd      %xmm16, %ymm19
+vbroadcastsd      (%rax), %ymm19
+vbroadcastsd      %xmm16, %ymm19 {k1}
+vbroadcastsd      (%rax), %ymm19 {k1}
+vbroadcastsd      %xmm16, %ymm19 {z}{k1}
+vbroadcastsd      (%rax), %ymm19 {z}{k1}
+
+vbroadcastss      %xmm16, %xmm19
+vbroadcastss      (%rax), %xmm19
+vbroadcastss      %xmm16, %xmm19 {k1}
+vbroadcastss      (%rax), %xmm19 {k1}
+vbroadcastss      %xmm16, %xmm19 {z}{k1}
+vbroadcastss      (%rax), %xmm19 {z}{k1}
+
+vbroadcastss      %xmm16, %ymm19
+vbroadcastss      (%rax), %ymm19
+vbroadcastss      %xmm16, %ymm19 {k1}
+vbroadcastss      (%rax), %ymm19 {k1}
+vbroadcastss      %xmm16, %ymm19 {z}{k1}
+vbroadcastss      (%rax), %ymm19 {z}{k1}
+
 vcmppd            $0, %xmm0, %xmm1, %k2
 vcmppd            $0, (%rax), %xmm1, %k2
 vcmppd            $0, (%rax){1to2}, %xmm1, %k2
@@ -359,6 +380,34 @@ vpaddq            %ymm16, %ymm17, %ymm19 {z}{k1}
 vpaddq            (%rax), %ymm17, %ymm19 {z}{k1}
 vpaddq            (%rax){1to4}, %ymm17, %ymm19 {z}{k1}
 
+vpbroadcastd      %xmm16, %xmm19
+vpbroadcastd      (%rax), %xmm19
+vpbroadcastd      %xmm16, %xmm19 {k1}
+vpbroadcastd      (%rax), %xmm19 {k1}
+vpbroadcastd      %xmm16, %xmm19 {z}{k1}
+vpbroadcastd      (%rax), %xmm19 {z}{k1}
+
+vpbroadcastd      %xmm16, %ymm19
+vpbroadcastd      (%rax), %ymm19
+vpbroadcastd      %xmm16, %ymm19 {k1}
+vpbroadcastd      (%rax), %ymm19 {k1}
+vpbroadcastd      %xmm16, %ymm19 {z}{k1}
+vpbroadcastd      (%rax), %ymm19 {z}{k1}
+
+vpbroadcastq      %xmm16, %xmm19
+vpbroadcastq      (%rax), %xmm19
+vpbroadcastq      %xmm16, %xmm19 {k1}
+vpbroadcastq      (%rax), %xmm19 {k1}
+vpbroadcastq      %xmm16, %xmm19 {z}{k1}
+vpbroadcastq      (%rax), %xmm19 {z}{k1}
+
+vpbroadcastq      %xmm16, %ymm19
+vpbroadcastq      (%rax), %ymm19
+vpbroadcastq      %xmm16, %ymm19 {k1}
+vpbroadcastq      (%rax), %ymm19 {k1}
+vpbroadcastq      %xmm16, %ymm19 {z}{k1}
+vpbroadcastq      (%rax), %ymm19 {z}{k1}
+
 vpcmpd            $0, %xmm0, %xmm1, %k2
 vpcmpd            $0, (%rax), %xmm1, %k2
 vpcmpd            $0, (%rax){1to4}, %xmm1, %k2
@@ -1218,6 +1267,24 @@ vunpcklps         (%rax){1to8}, %ymm17, %ymm19 {z}{k1}
 # CHECK-NEXT:  1      3     1.00                        valignq        $1, %ymm16, %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  2      10    1.00    *                   valignq        $1, (%rax), %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  2      10    1.00    *                   valignq        $1, (%rax){1to4}, %ymm17, %ymm19 {%k1} {z}
+# CHECK-NEXT:  1      3     1.00                        vbroadcastsd   %xmm16, %ymm19
+# CHECK-NEXT:  2      8     0.50    *                   vbroadcastsd   (%rax), %ymm19
+# CHECK-NEXT:  1      3     1.00                        vbroadcastsd   %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  2      8     0.50    *                   vbroadcastsd   (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vbroadcastsd   %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  2      8     0.50    *                   vbroadcastsd   (%rax), %ymm19 {%k1} {z}
+# CHECK-NEXT:  1      3     1.00                        vbroadcastss   %xmm16, %xmm19
+# CHECK-NEXT:  2      7     0.50    *                   vbroadcastss   (%rax), %xmm19
+# CHECK-NEXT:  1      3     1.00                        vbroadcastss   %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  2      7     0.50    *                   vbroadcastss   (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vbroadcastss   %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  2      7     0.50    *                   vbroadcastss   (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  1      3     1.00                        vbroadcastss   %xmm16, %ymm19
+# CHECK-NEXT:  2      8     0.50    *                   vbroadcastss   (%rax), %ymm19
+# CHECK-NEXT:  1      3     1.00                        vbroadcastss   %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  2      8     0.50    *                   vbroadcastss   (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vbroadcastss   %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  2      8     0.50    *                   vbroadcastss   (%rax), %ymm19 {%k1} {z}
 # CHECK-NEXT:  1      4     1.00                        vcmpeqpd       %xmm0, %xmm1, %k2
 # CHECK-NEXT:  2      10    1.00    *                   vcmpeqpd       (%rax), %xmm1, %k2
 # CHECK-NEXT:  2      10    1.00    *                   vcmpeqpd       (%rax){1to2}, %xmm1, %k2
@@ -1466,6 +1533,30 @@ vunpcklps         (%rax){1to8}, %ymm17, %ymm19 {z}{k1}
 # CHECK-NEXT:  1      1     0.33                        vpaddq %ymm16, %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  2      8     0.50    *                   vpaddq (%rax), %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  2      8     0.50    *                   vpaddq (%rax){1to4}, %ymm17, %ymm19 {%k1} {z}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastd   %xmm16, %xmm19
+# CHECK-NEXT:  2      7     0.50    *                   vpbroadcastd   (%rax), %xmm19
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastd   %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  2      7     0.50    *                   vpbroadcastd   (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastd   %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  2      7     0.50    *                   vpbroadcastd   (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastd   %xmm16, %ymm19
+# CHECK-NEXT:  2      8     0.50    *                   vpbroadcastd   (%rax), %ymm19
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastd   %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  2      8     0.50    *                   vpbroadcastd   (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastd   %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  2      8     0.50    *                   vpbroadcastd   (%rax), %ymm19 {%k1} {z}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastq   %xmm16, %xmm19
+# CHECK-NEXT:  2      7     0.50    *                   vpbroadcastq   (%rax), %xmm19
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastq   %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  2      7     0.50    *                   vpbroadcastq   (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastq   %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  2      7     0.50    *                   vpbroadcastq   (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastq   %xmm16, %ymm19
+# CHECK-NEXT:  2      8     0.50    *                   vpbroadcastq   (%rax), %ymm19
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastq   %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  2      8     0.50    *                   vpbroadcastq   (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastq   %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  2      8     0.50    *                   vpbroadcastq   (%rax), %ymm19 {%k1} {z}
 # CHECK-NEXT:  1      4     1.00                        vpcmpeqd       %xmm0, %xmm1, %k2
 # CHECK-NEXT:  2      10    1.00    *                   vpcmpeqd       (%rax), %xmm1, %k2
 # CHECK-NEXT:  2      10    1.00    *                   vpcmpeqd       (%rax){1to4}, %xmm1, %k2
@@ -2169,7 +2260,7 @@ vunpcklps         (%rax){1to8}, %ymm17, %ymm19 {z}{k1}
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]
-# CHECK-NEXT:  -     423.00 242.33 154.33 350.00 350.00  -     661.33 4.00    -      -      -
+# CHECK-NEXT:  -     423.00 249.33 161.33 360.50 360.50  -     689.33 4.00    -      -      -
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   Instructions:
@@ -2245,6 +2336,24 @@ vunpcklps         (%rax){1to8}, %ymm17, %ymm19 {z}{k1}
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     valignq      $1, %ymm16, %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     valignq      $1, (%rax), %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     valignq      $1, (%rax){1to4}, %ymm17, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vbroadcastsd %xmm16, %ymm19
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vbroadcastsd (%rax), %ymm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vbroadcastsd %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vbroadcastsd (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vbroadcastsd %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vbroadcastsd (%rax), %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vbroadcastss %xmm16, %xmm19
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vbroadcastss (%rax), %xmm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vbroadcastss %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vbroadcastss (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vbroadcastss %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vbroadcastss (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vbroadcastss %xmm16, %ymm19
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vbroadcastss (%rax), %ymm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vbroadcastss %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vbroadcastss (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vbroadcastss %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vbroadcastss (%rax), %ymm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vcmpeqpd     %xmm0, %xmm1, %k2
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vcmpeqpd     (%rax), %xmm1, %k2
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vcmpeqpd     (%rax){1to2}, %xmm1, %k2
@@ -2493,6 +2602,30 @@ vunpcklps         (%rax){1to8}, %ymm17, %ymm19 {z}{k1}
 # CHECK-NEXT:  -      -     0.33   0.33    -      -      -     0.33    -      -      -      -     vpaddq       %ymm16, %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vpaddq       (%rax), %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vpaddq       (%rax){1to4}, %ymm17, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastd %xmm16, %xmm19
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vpbroadcastd (%rax), %xmm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastd %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vpbroadcastd (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastd %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vpbroadcastd (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastd %xmm16, %ymm19
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vpbroadcastd (%rax), %ymm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastd %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vpbroadcastd (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastd %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vpbroadcastd (%rax), %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastq %xmm16, %xmm19
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vpbroadcastq (%rax), %xmm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastq %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vpbroadcastq (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastq %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vpbroadcastq (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastq %xmm16, %ymm19
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vpbroadcastq (%rax), %ymm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastq %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vpbroadcastq (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpbroadcastq %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -      -      -     vpbroadcastq (%rax), %ymm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -     vpcmpeqd     %xmm0, %xmm1, %k2
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpcmpeqd     (%rax), %xmm1, %k2
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -      -      -     vpcmpeqd     (%rax){1to4}, %xmm1, %k2
index 6994323..bf2b6a3 100644 (file)
@@ -50,6 +50,20 @@ valignq           $1, %zmm16, %zmm17, %zmm19 {z}{k1}
 valignq           $1, (%rax), %zmm17, %zmm19 {z}{k1}
 valignq           $1, (%rax){1to8}, %zmm17, %zmm19 {z}{k1}
 
+vbroadcastsd      %xmm16, %zmm19
+vbroadcastsd      (%rax), %zmm19
+vbroadcastsd      %xmm16, %zmm19 {k1}
+vbroadcastsd      (%rax), %zmm19 {k1}
+vbroadcastsd      %xmm16, %zmm19 {z}{k1}
+vbroadcastsd      (%rax), %zmm19 {z}{k1}
+
+vbroadcastss      %xmm16, %zmm19
+vbroadcastss      (%rax), %zmm19
+vbroadcastss      %xmm16, %zmm19 {k1}
+vbroadcastss      (%rax), %zmm19 {k1}
+vbroadcastss      %xmm16, %zmm19 {z}{k1}
+vbroadcastss      (%rax), %zmm19 {z}{k1}
+
 vcmppd            $0, %zmm0, %zmm1, %k2
 vcmppd            $0, (%rax), %zmm1, %k2
 vcmppd            $0, (%rax){1to8}, %zmm1, %k2
@@ -242,6 +256,20 @@ vpaddq            %zmm16, %zmm17, %zmm19 {z}{k1}
 vpaddq            (%rax), %zmm17, %zmm19 {z}{k1}
 vpaddq            (%rax){1to8}, %zmm17, %zmm19 {z}{k1}
 
+vpbroadcastd      %xmm16, %zmm19
+vpbroadcastd      (%rax), %zmm19
+vpbroadcastd      %xmm16, %zmm19 {k1}
+vpbroadcastd      (%rax), %zmm19 {k1}
+vpbroadcastd      %xmm16, %zmm19 {z}{k1}
+vpbroadcastd      (%rax), %zmm19 {z}{k1}
+
+vpbroadcastq      %xmm16, %zmm19
+vpbroadcastq      (%rax), %zmm19
+vpbroadcastq      %xmm16, %zmm19 {k1}
+vpbroadcastq      (%rax), %zmm19 {k1}
+vpbroadcastq      %xmm16, %zmm19 {z}{k1}
+vpbroadcastq      (%rax), %zmm19 {z}{k1}
+
 vpcmpd            $0, %zmm0, %zmm1, %k2
 vpcmpd            $0, (%rax), %zmm1, %k2
 vpcmpd            $0, (%rax){1to16}, %zmm1, %k2
@@ -791,6 +819,18 @@ vunpcklps         (%rax){1to16}, %zmm17, %zmm19 {z}{k1}
 # CHECK-NEXT:  1      3     1.00                        valignq        $1, %zmm16, %zmm17, %zmm19 {%k1} {z}
 # CHECK-NEXT:  2      10    1.00    *                   valignq        $1, (%rax), %zmm17, %zmm19 {%k1} {z}
 # CHECK-NEXT:  2      10    1.00    *                   valignq        $1, (%rax){1to8}, %zmm17, %zmm19 {%k1} {z}
+# CHECK-NEXT:  1      3     1.00                        vbroadcastsd   %xmm16, %zmm19
+# CHECK-NEXT:  2      8     0.50    *                   vbroadcastsd   (%rax), %zmm19
+# CHECK-NEXT:  1      3     1.00                        vbroadcastsd   %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  2      8     0.50    *                   vbroadcastsd   (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vbroadcastsd   %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  2      8     0.50    *                   vbroadcastsd   (%rax), %zmm19 {%k1} {z}
+# CHECK-NEXT:  1      3     1.00                        vbroadcastss   %xmm16, %zmm19
+# CHECK-NEXT:  2      8     0.50    *                   vbroadcastss   (%rax), %zmm19
+# CHECK-NEXT:  1      3     1.00                        vbroadcastss   %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  2      8     0.50    *                   vbroadcastss   (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vbroadcastss   %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  2      8     0.50    *                   vbroadcastss   (%rax), %zmm19 {%k1} {z}
 # CHECK-NEXT:  1      4     1.00                        vcmpeqpd       %zmm0, %zmm1, %k2
 # CHECK-NEXT:  2      11    1.00    *                   vcmpeqpd       (%rax), %zmm1, %k2
 # CHECK-NEXT:  2      11    1.00    *                   vcmpeqpd       (%rax){1to8}, %zmm1, %k2
@@ -961,6 +1001,18 @@ vunpcklps         (%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                        vpbroadcastd   %xmm16, %zmm19
+# CHECK-NEXT:  2      8     0.50    *                   vpbroadcastd   (%rax), %zmm19
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastd   %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  2      8     0.50    *                   vpbroadcastd   (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastd   %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  2      8     0.50    *                   vpbroadcastd   (%rax), %zmm19 {%k1} {z}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastq   %xmm16, %zmm19
+# CHECK-NEXT:  2      8     0.50    *                   vpbroadcastq   (%rax), %zmm19
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastq   %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  2      8     0.50    *                   vpbroadcastq   (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastq   %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  2      8     0.50    *                   vpbroadcastq   (%rax), %zmm19 {%k1} {z}
 # CHECK-NEXT:  1      4     1.00                        vpcmpeqd       %zmm0, %zmm1, %k2
 # CHECK-NEXT:  2      11    1.00    *                   vpcmpeqd       (%rax), %zmm1, %k2
 # CHECK-NEXT:  2      11    1.00    *                   vpcmpeqd       (%rax){1to16}, %zmm1, %k2
@@ -1414,7 +1466,7 @@ vunpcklps         (%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:  -     612.00 209.67 30.67  245.00 245.00  -     507.67 2.00    -
+# CHECK-NEXT:  -     612.00 213.67 34.67  251.00 251.00  -     523.67 2.00    -
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
@@ -1462,6 +1514,18 @@ vunpcklps         (%rax){1to16}, %zmm17, %zmm19 {z}{k1}
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     valignq    $1, %zmm16, %zmm17, %zmm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     valignq    $1, (%rax), %zmm17, %zmm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     valignq    $1, (%rax){1to8}, %zmm17, %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vbroadcastsd       %xmm16, %zmm19
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vbroadcastsd       (%rax), %zmm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vbroadcastsd       %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vbroadcastsd       (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vbroadcastsd       %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vbroadcastsd       (%rax), %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vbroadcastss       %xmm16, %zmm19
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vbroadcastss       (%rax), %zmm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vbroadcastss       %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vbroadcastss       (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vbroadcastss       %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vbroadcastss       (%rax), %zmm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vcmpeqpd   %zmm0, %zmm1, %k2
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vcmpeqpd   (%rax), %zmm1, %k2
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vcmpeqpd   (%rax){1to8}, %zmm1, %k2
@@ -1632,6 +1696,18 @@ vunpcklps         (%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    -      -     vpbroadcastd       %xmm16, %zmm19
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vpbroadcastd       (%rax), %zmm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastd       %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vpbroadcastd       (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastd       %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vpbroadcastd       (%rax), %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastq       %xmm16, %zmm19
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vpbroadcastq       (%rax), %zmm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastq       %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vpbroadcastq       (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastq       %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vpbroadcastq       (%rax), %zmm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpcmpeqd   %zmm0, %zmm1, %k2
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpcmpeqd   (%rax), %zmm1, %k2
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpcmpeqd   (%rax){1to16}, %zmm1, %k2
index 0115476..389f51f 100644 (file)
@@ -83,6 +83,20 @@ vpalignr          $1, (%rax), %zmm17, %zmm19 {k1}
 vpalignr          $1, %zmm16, %zmm17, %zmm19 {z}{k1}
 vpalignr          $1, (%rax), %zmm17, %zmm19 {z}{k1}
 
+vpbroadcastb      %xmm16, %zmm19
+vpbroadcastb      (%rax), %zmm19
+vpbroadcastb      %xmm16, %zmm19 {k1}
+vpbroadcastb      (%rax), %zmm19 {k1}
+vpbroadcastb      %xmm16, %zmm19 {z}{k1}
+vpbroadcastb      (%rax), %zmm19 {z}{k1}
+
+vpbroadcastw      %xmm16, %zmm19
+vpbroadcastw      (%rax), %zmm19
+vpbroadcastw      %xmm16, %zmm19 {k1}
+vpbroadcastw      (%rax), %zmm19 {k1}
+vpbroadcastw      %xmm16, %zmm19 {z}{k1}
+vpbroadcastw      (%rax), %zmm19 {z}{k1}
+
 vpcmpb            $0, %zmm0, %zmm1, %k2
 vpcmpb            $0, (%rax), %zmm1, %k2
 vpcmpb            $0, %zmm0, %zmm1, %k2 {k3}
@@ -320,6 +334,18 @@ vpmovw2m          %zmm0, %k0
 # CHECK-NEXT:  2      8     1.00    *                   vpalignr       $1, (%rax), %zmm17, %zmm19 {%k1}
 # CHECK-NEXT:  1      1     1.00                        vpalignr       $1, %zmm16, %zmm17, %zmm19 {%k1} {z}
 # CHECK-NEXT:  2      8     1.00    *                   vpalignr       $1, (%rax), %zmm17, %zmm19 {%k1} {z}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastb   %xmm16, %zmm19
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastb   (%rax), %zmm19
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastb   %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastb   (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastb   %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastb   (%rax), %zmm19 {%k1} {z}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastw   %xmm16, %zmm19
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastw   (%rax), %zmm19
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastw   %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastw   (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastw   %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastw   (%rax), %zmm19 {%k1} {z}
 # CHECK-NEXT:  1      4     1.00                        vpcmpeqb       %zmm0, %zmm1, %k2
 # CHECK-NEXT:  2      11    1.00    *                   vpcmpeqb       (%rax), %zmm1, %k2
 # CHECK-NEXT:  1      4     1.00                        vpcmpeqb       %zmm0, %zmm1, %k2 {%k3}
@@ -463,7 +489,7 @@ vpmovw2m          %zmm0, %k0
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]
-# CHECK-NEXT:  -      -     32.50  8.50   44.50  44.50   -     164.50 0.50    -
+# CHECK-NEXT:  -      -     32.50  8.50   47.50  47.50   -     176.50 0.50    -
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
@@ -539,6 +565,18 @@ vpmovw2m          %zmm0, %k0
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpalignr   $1, (%rax), %zmm17, %zmm19 {%k1}
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpalignr   $1, %zmm16, %zmm17, %zmm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpalignr   $1, (%rax), %zmm17, %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastb       %xmm16, %zmm19
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpbroadcastb       (%rax), %zmm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastb       %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpbroadcastb       (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastb       %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpbroadcastb       (%rax), %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastw       %xmm16, %zmm19
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpbroadcastw       (%rax), %zmm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastw       %xmm16, %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpbroadcastw       (%rax), %zmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastw       %xmm16, %zmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpbroadcastw       (%rax), %zmm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpcmpeqb   %zmm0, %zmm1, %k2
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpcmpeqb   (%rax), %zmm1, %k2
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpcmpeqb   %zmm0, %zmm1, %k2 {%k3}
index 4517930..042108d 100644 (file)
@@ -127,6 +127,34 @@ vpalignr          $1, (%rax), %ymm17, %ymm19 {k1}
 vpalignr          $1, %ymm16, %ymm17, %ymm19 {z}{k1}
 vpalignr          $1, (%rax), %ymm17, %ymm19 {z}{k1}
 
+vpbroadcastb      %xmm16, %xmm19
+vpbroadcastb      (%rax), %xmm19
+vpbroadcastb      %xmm16, %xmm19 {k1}
+vpbroadcastb      (%rax), %xmm19 {k1}
+vpbroadcastb      %xmm16, %xmm19 {z}{k1}
+vpbroadcastb      (%rax), %xmm19 {z}{k1}
+
+vpbroadcastb      %xmm16, %ymm19
+vpbroadcastb      (%rax), %ymm19
+vpbroadcastb      %xmm16, %ymm19 {k1}
+vpbroadcastb      (%rax), %ymm19 {k1}
+vpbroadcastb      %xmm16, %ymm19 {z}{k1}
+vpbroadcastb      (%rax), %ymm19 {z}{k1}
+
+vpbroadcastw      %xmm16, %xmm19
+vpbroadcastw      (%rax), %xmm19
+vpbroadcastw      %xmm16, %xmm19 {k1}
+vpbroadcastw      (%rax), %xmm19 {k1}
+vpbroadcastw      %xmm16, %xmm19 {z}{k1}
+vpbroadcastw      (%rax), %xmm19 {z}{k1}
+
+vpbroadcastw      %xmm16, %ymm19
+vpbroadcastw      (%rax), %ymm19
+vpbroadcastw      %xmm16, %ymm19 {k1}
+vpbroadcastw      (%rax), %ymm19 {k1}
+vpbroadcastw      %xmm16, %ymm19 {z}{k1}
+vpbroadcastw      (%rax), %ymm19 {z}{k1}
+
 vpcmpb            $0, %xmm0, %xmm1, %k2
 vpcmpb            $0, (%rax), %xmm1, %k2
 vpcmpb            $0, %xmm0, %xmm1, %k2 {k3}
@@ -556,6 +584,30 @@ vpmovw2m          %ymm0, %k0
 # CHECK-NEXT:  2      8     1.00    *                   vpalignr       $1, (%rax), %ymm17, %ymm19 {%k1}
 # CHECK-NEXT:  1      1     1.00                        vpalignr       $1, %ymm16, %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  2      8     1.00    *                   vpalignr       $1, (%rax), %ymm17, %ymm19 {%k1} {z}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastb   %xmm16, %xmm19
+# CHECK-NEXT:  2      7     1.00    *                   vpbroadcastb   (%rax), %xmm19
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastb   %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  2      7     1.00    *                   vpbroadcastb   (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastb   %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  2      7     1.00    *                   vpbroadcastb   (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastb   %xmm16, %ymm19
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastb   (%rax), %ymm19
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastb   %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastb   (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastb   %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastb   (%rax), %ymm19 {%k1} {z}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastw   %xmm16, %xmm19
+# CHECK-NEXT:  2      7     1.00    *                   vpbroadcastw   (%rax), %xmm19
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastw   %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  2      7     1.00    *                   vpbroadcastw   (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastw   %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  2      7     1.00    *                   vpbroadcastw   (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastw   %xmm16, %ymm19
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastw   (%rax), %ymm19
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastw   %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastw   (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastw   %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  2      8     1.00    *                   vpbroadcastw   (%rax), %ymm19 {%k1} {z}
 # CHECK-NEXT:  1      4     1.00                        vpcmpeqb       %xmm0, %xmm1, %k2
 # CHECK-NEXT:  2      10    1.00    *                   vpcmpeqb       (%rax), %xmm1, %k2
 # CHECK-NEXT:  1      4     1.00                        vpcmpeqb       %xmm0, %xmm1, %k2 {%k3}
@@ -827,7 +879,7 @@ vpmovw2m          %ymm0, %k0
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]
-# CHECK-NEXT:  -      -     33.00  29.00  89.00  89.00   -     313.00 1.00    -
+# CHECK-NEXT:  -      -     33.00  29.00  95.00  95.00   -     337.00 1.00    -
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
@@ -939,6 +991,30 @@ vpmovw2m          %ymm0, %k0
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpalignr   $1, (%rax), %ymm17, %ymm19 {%k1}
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpalignr   $1, %ymm16, %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpalignr   $1, (%rax), %ymm17, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastb       %xmm16, %xmm19
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpbroadcastb       (%rax), %xmm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastb       %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpbroadcastb       (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastb       %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpbroadcastb       (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastb       %xmm16, %ymm19
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpbroadcastb       (%rax), %ymm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastb       %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpbroadcastb       (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastb       %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpbroadcastb       (%rax), %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastw       %xmm16, %xmm19
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpbroadcastw       (%rax), %xmm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastw       %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpbroadcastw       (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastw       %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpbroadcastw       (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastw       %xmm16, %ymm19
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpbroadcastw       (%rax), %ymm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastw       %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpbroadcastw       (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastw       %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpbroadcastw       (%rax), %ymm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpcmpeqb   %xmm0, %xmm1, %k2
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpcmpeqb   (%rax), %xmm1, %k2
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpcmpeqb   %xmm0, %xmm1, %k2 {%k3}
index 98f92d0..9fdf265 100644 (file)
@@ -81,6 +81,27 @@ valignq           $1, %ymm16, %ymm17, %ymm19 {z}{k1}
 valignq           $1, (%rax), %ymm17, %ymm19 {z}{k1}
 valignq           $1, (%rax){1to4}, %ymm17, %ymm19 {z}{k1}
 
+vbroadcastsd      %xmm16, %ymm19
+vbroadcastsd      (%rax), %ymm19
+vbroadcastsd      %xmm16, %ymm19 {k1}
+vbroadcastsd      (%rax), %ymm19 {k1}
+vbroadcastsd      %xmm16, %ymm19 {z}{k1}
+vbroadcastsd      (%rax), %ymm19 {z}{k1}
+
+vbroadcastss      %xmm16, %xmm19
+vbroadcastss      (%rax), %xmm19
+vbroadcastss      %xmm16, %xmm19 {k1}
+vbroadcastss      (%rax), %xmm19 {k1}
+vbroadcastss      %xmm16, %xmm19 {z}{k1}
+vbroadcastss      (%rax), %xmm19 {z}{k1}
+
+vbroadcastss      %xmm16, %ymm19
+vbroadcastss      (%rax), %ymm19
+vbroadcastss      %xmm16, %ymm19 {k1}
+vbroadcastss      (%rax), %ymm19 {k1}
+vbroadcastss      %xmm16, %ymm19 {z}{k1}
+vbroadcastss      (%rax), %ymm19 {z}{k1}
+
 vcmppd            $0, %xmm0, %xmm1, %k2
 vcmppd            $0, (%rax), %xmm1, %k2
 vcmppd            $0, (%rax){1to2}, %xmm1, %k2
@@ -359,6 +380,34 @@ vpaddq            %ymm16, %ymm17, %ymm19 {z}{k1}
 vpaddq            (%rax), %ymm17, %ymm19 {z}{k1}
 vpaddq            (%rax){1to4}, %ymm17, %ymm19 {z}{k1}
 
+vpbroadcastd      %xmm16, %xmm19
+vpbroadcastd      (%rax), %xmm19
+vpbroadcastd      %xmm16, %xmm19 {k1}
+vpbroadcastd      (%rax), %xmm19 {k1}
+vpbroadcastd      %xmm16, %xmm19 {z}{k1}
+vpbroadcastd      (%rax), %xmm19 {z}{k1}
+
+vpbroadcastd      %xmm16, %ymm19
+vpbroadcastd      (%rax), %ymm19
+vpbroadcastd      %xmm16, %ymm19 {k1}
+vpbroadcastd      (%rax), %ymm19 {k1}
+vpbroadcastd      %xmm16, %ymm19 {z}{k1}
+vpbroadcastd      (%rax), %ymm19 {z}{k1}
+
+vpbroadcastq      %xmm16, %xmm19
+vpbroadcastq      (%rax), %xmm19
+vpbroadcastq      %xmm16, %xmm19 {k1}
+vpbroadcastq      (%rax), %xmm19 {k1}
+vpbroadcastq      %xmm16, %xmm19 {z}{k1}
+vpbroadcastq      (%rax), %xmm19 {z}{k1}
+
+vpbroadcastq      %xmm16, %ymm19
+vpbroadcastq      (%rax), %ymm19
+vpbroadcastq      %xmm16, %ymm19 {k1}
+vpbroadcastq      (%rax), %ymm19 {k1}
+vpbroadcastq      %xmm16, %ymm19 {z}{k1}
+vpbroadcastq      (%rax), %ymm19 {z}{k1}
+
 vpcmpd            $0, %xmm0, %xmm1, %k2
 vpcmpd            $0, (%rax), %xmm1, %k2
 vpcmpd            $0, (%rax){1to4}, %xmm1, %k2
@@ -1218,6 +1267,24 @@ vunpcklps         (%rax){1to8}, %ymm17, %ymm19 {z}{k1}
 # CHECK-NEXT:  1      3     1.00                        valignq        $1, %ymm16, %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  2      10    1.00    *                   valignq        $1, (%rax), %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  2      10    1.00    *                   valignq        $1, (%rax){1to4}, %ymm17, %ymm19 {%k1} {z}
+# CHECK-NEXT:  1      3     1.00                        vbroadcastsd   %xmm16, %ymm19
+# CHECK-NEXT:  2      8     0.50    *                   vbroadcastsd   (%rax), %ymm19
+# CHECK-NEXT:  1      3     1.00                        vbroadcastsd   %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  2      8     0.50    *                   vbroadcastsd   (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vbroadcastsd   %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  2      8     0.50    *                   vbroadcastsd   (%rax), %ymm19 {%k1} {z}
+# CHECK-NEXT:  1      3     1.00                        vbroadcastss   %xmm16, %xmm19
+# CHECK-NEXT:  2      7     0.50    *                   vbroadcastss   (%rax), %xmm19
+# CHECK-NEXT:  1      3     1.00                        vbroadcastss   %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  2      7     0.50    *                   vbroadcastss   (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vbroadcastss   %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  2      7     0.50    *                   vbroadcastss   (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  1      3     1.00                        vbroadcastss   %xmm16, %ymm19
+# CHECK-NEXT:  2      8     0.50    *                   vbroadcastss   (%rax), %ymm19
+# CHECK-NEXT:  1      3     1.00                        vbroadcastss   %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  2      8     0.50    *                   vbroadcastss   (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vbroadcastss   %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  2      8     0.50    *                   vbroadcastss   (%rax), %ymm19 {%k1} {z}
 # CHECK-NEXT:  1      4     1.00                        vcmpeqpd       %xmm0, %xmm1, %k2
 # CHECK-NEXT:  2      10    1.00    *                   vcmpeqpd       (%rax), %xmm1, %k2
 # CHECK-NEXT:  2      10    1.00    *                   vcmpeqpd       (%rax){1to2}, %xmm1, %k2
@@ -1466,6 +1533,30 @@ vunpcklps         (%rax){1to8}, %ymm17, %ymm19 {z}{k1}
 # CHECK-NEXT:  1      1     0.33                        vpaddq %ymm16, %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  2      8     0.50    *                   vpaddq (%rax), %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  2      8     0.50    *                   vpaddq (%rax){1to4}, %ymm17, %ymm19 {%k1} {z}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastd   %xmm16, %xmm19
+# CHECK-NEXT:  2      7     0.50    *                   vpbroadcastd   (%rax), %xmm19
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastd   %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  2      7     0.50    *                   vpbroadcastd   (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastd   %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  2      7     0.50    *                   vpbroadcastd   (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastd   %xmm16, %ymm19
+# CHECK-NEXT:  2      8     0.50    *                   vpbroadcastd   (%rax), %ymm19
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastd   %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  2      8     0.50    *                   vpbroadcastd   (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastd   %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  2      8     0.50    *                   vpbroadcastd   (%rax), %ymm19 {%k1} {z}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastq   %xmm16, %xmm19
+# CHECK-NEXT:  2      7     0.50    *                   vpbroadcastq   (%rax), %xmm19
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastq   %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  2      7     0.50    *                   vpbroadcastq   (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  1      1     1.00                        vpbroadcastq   %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  2      7     0.50    *                   vpbroadcastq   (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastq   %xmm16, %ymm19
+# CHECK-NEXT:  2      8     0.50    *                   vpbroadcastq   (%rax), %ymm19
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastq   %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  2      8     0.50    *                   vpbroadcastq   (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  1      3     1.00                        vpbroadcastq   %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  2      8     0.50    *                   vpbroadcastq   (%rax), %ymm19 {%k1} {z}
 # CHECK-NEXT:  1      4     1.00                        vpcmpeqd       %xmm0, %xmm1, %k2
 # CHECK-NEXT:  2      10    1.00    *                   vpcmpeqd       (%rax), %xmm1, %k2
 # CHECK-NEXT:  2      10    1.00    *                   vpcmpeqd       (%rax){1to4}, %xmm1, %k2
@@ -2167,7 +2258,7 @@ vunpcklps         (%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:  -     423.00 242.33 154.33 350.00 350.00  -     661.33 4.00    -
+# CHECK-NEXT:  -     423.00 249.33 161.33 360.50 360.50  -     689.33 4.00    -
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
@@ -2243,6 +2334,24 @@ vunpcklps         (%rax){1to8}, %ymm17, %ymm19 {z}{k1}
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     valignq    $1, %ymm16, %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     valignq    $1, (%rax), %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     valignq    $1, (%rax){1to4}, %ymm17, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vbroadcastsd       %xmm16, %ymm19
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vbroadcastsd       (%rax), %ymm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vbroadcastsd       %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vbroadcastsd       (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vbroadcastsd       %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vbroadcastsd       (%rax), %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vbroadcastss       %xmm16, %xmm19
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vbroadcastss       (%rax), %xmm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vbroadcastss       %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vbroadcastss       (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vbroadcastss       %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vbroadcastss       (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vbroadcastss       %xmm16, %ymm19
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vbroadcastss       (%rax), %ymm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vbroadcastss       %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vbroadcastss       (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vbroadcastss       %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vbroadcastss       (%rax), %ymm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vcmpeqpd   %xmm0, %xmm1, %k2
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vcmpeqpd   (%rax), %xmm1, %k2
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vcmpeqpd   (%rax){1to2}, %xmm1, %k2
@@ -2491,6 +2600,30 @@ vunpcklps         (%rax){1to8}, %ymm17, %ymm19 {z}{k1}
 # CHECK-NEXT:  -      -     0.33   0.33    -      -      -     0.33    -      -     vpaddq     %ymm16, %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vpaddq     (%rax), %ymm17, %ymm19 {%k1} {z}
 # CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vpaddq     (%rax){1to4}, %ymm17, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastd       %xmm16, %xmm19
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vpbroadcastd       (%rax), %xmm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastd       %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vpbroadcastd       (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastd       %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vpbroadcastd       (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastd       %xmm16, %ymm19
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vpbroadcastd       (%rax), %ymm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastd       %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vpbroadcastd       (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastd       %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vpbroadcastd       (%rax), %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastq       %xmm16, %xmm19
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vpbroadcastq       (%rax), %xmm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastq       %xmm16, %xmm19 {%k1}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vpbroadcastq       (%rax), %xmm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastq       %xmm16, %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vpbroadcastq       (%rax), %xmm19 {%k1} {z}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastq       %xmm16, %ymm19
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vpbroadcastq       (%rax), %ymm19
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastq       %xmm16, %ymm19 {%k1}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vpbroadcastq       (%rax), %ymm19 {%k1}
+# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpbroadcastq       %xmm16, %ymm19 {%k1} {z}
+# CHECK-NEXT:  -      -     0.33   0.33   0.50   0.50    -     0.33    -      -     vpbroadcastq       (%rax), %ymm19 {%k1} {z}
 # CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -     vpcmpeqd   %xmm0, %xmm1, %k2
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpcmpeqd   (%rax), %xmm1, %k2
 # CHECK-NEXT:  -      -      -      -     0.50   0.50    -     1.00    -      -     vpcmpeqd   (%rax){1to4}, %xmm1, %k2