Home | History | Annotate | Download | only in X86
      1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
      2 ; RUN: llc -mtriple=x86_64-apple-darwin -mattr=avx < %s | FileCheck %s --check-prefix=AVX  --check-prefix=AVX1
      3 ; RUN: llc -mtriple=x86_64-apple-darwin -mattr=avx2 < %s | FileCheck %s --check-prefix=AVX --check-prefix=AVX2
      4 ; RUN: llc -mtriple=x86_64-apple-darwin -mattr=avx512f < %s | FileCheck %s --check-prefix=AVX512 --check-prefix=AVX512F
      5 ; RUN: llc -mtriple=x86_64-apple-darwin -mattr=avx512f,avx512bw,avx512vl < %s | FileCheck %s --check-prefix=AVX512 --check-prefix=SKX
      6 
      7 ; To test for the case where masked load/store is not legal, we should add a run with a target
      8 ; that does not have AVX, but that case should probably be a separate test file using less tests
      9 ; because it takes over 1.2 seconds to codegen these tests on Haswell 4GHz if there's no maskmov.
     10 
     11 define <16 x i32> @test1(<16 x i32> %trigger, <16 x i32>* %addr) {
     12 ; AVX1-LABEL: test1:
     13 ; AVX1:       ## BB#0:
     14 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
     15 ; AVX1-NEXT:    vpxor %xmm3, %xmm3, %xmm3
     16 ; AVX1-NEXT:    vpcmpeqd %xmm3, %xmm2, %xmm2
     17 ; AVX1-NEXT:    vpcmpeqd %xmm3, %xmm0, %xmm0
     18 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
     19 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
     20 ; AVX1-NEXT:    vpcmpeqd %xmm3, %xmm2, %xmm2
     21 ; AVX1-NEXT:    vpcmpeqd %xmm3, %xmm1, %xmm1
     22 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm1
     23 ; AVX1-NEXT:    vmaskmovps 32(%rdi), %ymm1, %ymm1
     24 ; AVX1-NEXT:    vmaskmovps (%rdi), %ymm0, %ymm0
     25 ; AVX1-NEXT:    retq
     26 ;
     27 ; AVX2-LABEL: test1:
     28 ; AVX2:       ## BB#0:
     29 ; AVX2-NEXT:    vpxor %ymm2, %ymm2, %ymm2
     30 ; AVX2-NEXT:    vpcmpeqd %ymm2, %ymm0, %ymm0
     31 ; AVX2-NEXT:    vpcmpeqd %ymm2, %ymm1, %ymm1
     32 ; AVX2-NEXT:    vpmaskmovd 32(%rdi), %ymm1, %ymm1
     33 ; AVX2-NEXT:    vpmaskmovd (%rdi), %ymm0, %ymm0
     34 ; AVX2-NEXT:    retq
     35 ;
     36 ; AVX512-LABEL: test1:
     37 ; AVX512:       ## BB#0:
     38 ; AVX512-NEXT:    vpxord %zmm1, %zmm1, %zmm1
     39 ; AVX512-NEXT:    vpcmpeqd %zmm1, %zmm0, %k1
     40 ; AVX512-NEXT:    vmovdqu32 (%rdi), %zmm0 {%k1} {z}
     41 ; AVX512-NEXT:    retq
     42   %mask = icmp eq <16 x i32> %trigger, zeroinitializer
     43   %res = call <16 x i32> @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* %addr, i32 4, <16 x i1>%mask, <16 x i32>undef)
     44   ret <16 x i32> %res
     45 }
     46 
     47 define <16 x i32> @test2(<16 x i32> %trigger, <16 x i32>* %addr) {
     48 ; AVX1-LABEL: test2:
     49 ; AVX1:       ## BB#0:
     50 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
     51 ; AVX1-NEXT:    vpxor %xmm3, %xmm3, %xmm3
     52 ; AVX1-NEXT:    vpcmpeqd %xmm3, %xmm2, %xmm2
     53 ; AVX1-NEXT:    vpcmpeqd %xmm3, %xmm0, %xmm0
     54 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
     55 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
     56 ; AVX1-NEXT:    vpcmpeqd %xmm3, %xmm2, %xmm2
     57 ; AVX1-NEXT:    vpcmpeqd %xmm3, %xmm1, %xmm1
     58 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm1
     59 ; AVX1-NEXT:    vmaskmovps 32(%rdi), %ymm1, %ymm1
     60 ; AVX1-NEXT:    vmaskmovps (%rdi), %ymm0, %ymm0
     61 ; AVX1-NEXT:    retq
     62 ;
     63 ; AVX2-LABEL: test2:
     64 ; AVX2:       ## BB#0:
     65 ; AVX2-NEXT:    vpxor %ymm2, %ymm2, %ymm2
     66 ; AVX2-NEXT:    vpcmpeqd %ymm2, %ymm0, %ymm0
     67 ; AVX2-NEXT:    vpcmpeqd %ymm2, %ymm1, %ymm1
     68 ; AVX2-NEXT:    vpmaskmovd 32(%rdi), %ymm1, %ymm1
     69 ; AVX2-NEXT:    vpmaskmovd (%rdi), %ymm0, %ymm0
     70 ; AVX2-NEXT:    retq
     71 ;
     72 ; AVX512-LABEL: test2:
     73 ; AVX512:       ## BB#0:
     74 ; AVX512-NEXT:    vpxord %zmm1, %zmm1, %zmm1
     75 ; AVX512-NEXT:    vpcmpeqd %zmm1, %zmm0, %k1
     76 ; AVX512-NEXT:    vmovdqu32 (%rdi), %zmm0 {%k1} {z}
     77 ; AVX512-NEXT:    retq
     78   %mask = icmp eq <16 x i32> %trigger, zeroinitializer
     79   %res = call <16 x i32> @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* %addr, i32 4, <16 x i1>%mask, <16 x i32>zeroinitializer)
     80   ret <16 x i32> %res
     81 }
     82 
     83 define void @test3(<16 x i32> %trigger, <16 x i32>* %addr, <16 x i32> %val) {
     84 ; AVX1-LABEL: test3:
     85 ; AVX1:       ## BB#0:
     86 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm4
     87 ; AVX1-NEXT:    vpxor %xmm5, %xmm5, %xmm5
     88 ; AVX1-NEXT:    vpcmpeqd %xmm5, %xmm4, %xmm4
     89 ; AVX1-NEXT:    vpcmpeqd %xmm5, %xmm0, %xmm0
     90 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm0
     91 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm4
     92 ; AVX1-NEXT:    vpcmpeqd %xmm5, %xmm4, %xmm4
     93 ; AVX1-NEXT:    vpcmpeqd %xmm5, %xmm1, %xmm1
     94 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm1, %ymm1
     95 ; AVX1-NEXT:    vmaskmovps %ymm3, %ymm1, 32(%rdi)
     96 ; AVX1-NEXT:    vmaskmovps %ymm2, %ymm0, (%rdi)
     97 ; AVX1-NEXT:    vzeroupper
     98 ; AVX1-NEXT:    retq
     99 ;
    100 ; AVX2-LABEL: test3:
    101 ; AVX2:       ## BB#0:
    102 ; AVX2-NEXT:    vpxor %ymm4, %ymm4, %ymm4
    103 ; AVX2-NEXT:    vpcmpeqd %ymm4, %ymm0, %ymm0
    104 ; AVX2-NEXT:    vpcmpeqd %ymm4, %ymm1, %ymm1
    105 ; AVX2-NEXT:    vpmaskmovd %ymm3, %ymm1, 32(%rdi)
    106 ; AVX2-NEXT:    vpmaskmovd %ymm2, %ymm0, (%rdi)
    107 ; AVX2-NEXT:    vzeroupper
    108 ; AVX2-NEXT:    retq
    109 ;
    110 ; AVX512-LABEL: test3:
    111 ; AVX512:       ## BB#0:
    112 ; AVX512-NEXT:    vpxord %zmm2, %zmm2, %zmm2
    113 ; AVX512-NEXT:    vpcmpeqd %zmm2, %zmm0, %k1
    114 ; AVX512-NEXT:    vmovdqu32 %zmm1, (%rdi) {%k1}
    115 ; AVX512-NEXT:    retq
    116   %mask = icmp eq <16 x i32> %trigger, zeroinitializer
    117   call void @llvm.masked.store.v16i32.p0v16i32(<16 x i32>%val, <16 x i32>* %addr, i32 4, <16 x i1>%mask)
    118   ret void
    119 }
    120 
    121 define <16 x float> @test4(<16 x i32> %trigger, <16 x float>* %addr, <16 x float> %dst) {
    122 ; AVX1-LABEL: test4:
    123 ; AVX1:       ## BB#0:
    124 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm4
    125 ; AVX1-NEXT:    vpxor %xmm5, %xmm5, %xmm5
    126 ; AVX1-NEXT:    vpcmpeqd %xmm5, %xmm4, %xmm4
    127 ; AVX1-NEXT:    vpcmpeqd %xmm5, %xmm1, %xmm1
    128 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm1, %ymm1
    129 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm4
    130 ; AVX1-NEXT:    vpcmpeqd %xmm5, %xmm4, %xmm4
    131 ; AVX1-NEXT:    vpcmpeqd %xmm5, %xmm0, %xmm0
    132 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm0
    133 ; AVX1-NEXT:    vmaskmovps (%rdi), %ymm0, %ymm4
    134 ; AVX1-NEXT:    vblendvps %ymm0, %ymm4, %ymm2, %ymm0
    135 ; AVX1-NEXT:    vmaskmovps 32(%rdi), %ymm1, %ymm2
    136 ; AVX1-NEXT:    vblendvps %ymm1, %ymm2, %ymm3, %ymm1
    137 ; AVX1-NEXT:    retq
    138 ;
    139 ; AVX2-LABEL: test4:
    140 ; AVX2:       ## BB#0:
    141 ; AVX2-NEXT:    vpxor %ymm4, %ymm4, %ymm4
    142 ; AVX2-NEXT:    vpcmpeqd %ymm4, %ymm1, %ymm1
    143 ; AVX2-NEXT:    vpcmpeqd %ymm4, %ymm0, %ymm0
    144 ; AVX2-NEXT:    vmaskmovps (%rdi), %ymm0, %ymm4
    145 ; AVX2-NEXT:    vblendvps %ymm0, %ymm4, %ymm2, %ymm0
    146 ; AVX2-NEXT:    vmaskmovps 32(%rdi), %ymm1, %ymm2
    147 ; AVX2-NEXT:    vblendvps %ymm1, %ymm2, %ymm3, %ymm1
    148 ; AVX2-NEXT:    retq
    149 ;
    150 ; AVX512-LABEL: test4:
    151 ; AVX512:       ## BB#0:
    152 ; AVX512-NEXT:    vpxord %zmm2, %zmm2, %zmm2
    153 ; AVX512-NEXT:    vpcmpeqd %zmm2, %zmm0, %k1
    154 ; AVX512-NEXT:    vmovups (%rdi), %zmm1 {%k1}
    155 ; AVX512-NEXT:    vmovaps %zmm1, %zmm0
    156 ; AVX512-NEXT:    retq
    157   %mask = icmp eq <16 x i32> %trigger, zeroinitializer
    158   %res = call <16 x float> @llvm.masked.load.v16f32.p0v16f32(<16 x float>* %addr, i32 4, <16 x i1>%mask, <16 x float> %dst)
    159   ret <16 x float> %res
    160 }
    161 
    162 define <8 x double> @test5(<8 x i32> %trigger, <8 x double>* %addr, <8 x double> %dst) {
    163 ; AVX1-LABEL: test5:
    164 ; AVX1:       ## BB#0:
    165 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
    166 ; AVX1-NEXT:    vpxor %xmm4, %xmm4, %xmm4
    167 ; AVX1-NEXT:    vpcmpeqd %xmm4, %xmm3, %xmm3
    168 ; AVX1-NEXT:    vpmovsxdq %xmm3, %xmm5
    169 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[2,3,0,1]
    170 ; AVX1-NEXT:    vpmovsxdq %xmm3, %xmm3
    171 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm5, %ymm3
    172 ; AVX1-NEXT:    vpcmpeqd %xmm4, %xmm0, %xmm0
    173 ; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm4
    174 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
    175 ; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm0
    176 ; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm4, %ymm0
    177 ; AVX1-NEXT:    vmaskmovpd (%rdi), %ymm0, %ymm4
    178 ; AVX1-NEXT:    vblendvpd %ymm0, %ymm4, %ymm1, %ymm0
    179 ; AVX1-NEXT:    vmaskmovpd 32(%rdi), %ymm3, %ymm1
    180 ; AVX1-NEXT:    vblendvpd %ymm3, %ymm1, %ymm2, %ymm1
    181 ; AVX1-NEXT:    retq
    182 ;
    183 ; AVX2-LABEL: test5:
    184 ; AVX2:       ## BB#0:
    185 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm3
    186 ; AVX2-NEXT:    vpxor %xmm4, %xmm4, %xmm4
    187 ; AVX2-NEXT:    vpcmpeqd %xmm4, %xmm3, %xmm3
    188 ; AVX2-NEXT:    vpmovsxdq %xmm3, %ymm3
    189 ; AVX2-NEXT:    vpcmpeqd %xmm4, %xmm0, %xmm0
    190 ; AVX2-NEXT:    vpmovsxdq %xmm0, %ymm0
    191 ; AVX2-NEXT:    vmaskmovpd (%rdi), %ymm0, %ymm4
    192 ; AVX2-NEXT:    vblendvpd %ymm0, %ymm4, %ymm1, %ymm0
    193 ; AVX2-NEXT:    vmaskmovpd 32(%rdi), %ymm3, %ymm1
    194 ; AVX2-NEXT:    vblendvpd %ymm3, %ymm1, %ymm2, %ymm1
    195 ; AVX2-NEXT:    retq
    196 ;
    197 ; AVX512F-LABEL: test5:
    198 ; AVX512F:       ## BB#0:
    199 ; AVX512F-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<def>
    200 ; AVX512F-NEXT:    vpxor %ymm2, %ymm2, %ymm2
    201 ; AVX512F-NEXT:    vpcmpeqd %zmm2, %zmm0, %k1
    202 ; AVX512F-NEXT:    vmovupd (%rdi), %zmm1 {%k1}
    203 ; AVX512F-NEXT:    vmovaps %zmm1, %zmm0
    204 ; AVX512F-NEXT:    retq
    205 ;
    206 ; SKX-LABEL: test5:
    207 ; SKX:       ## BB#0:
    208 ; SKX-NEXT:    vpxord %ymm2, %ymm2, %ymm2
    209 ; SKX-NEXT:    vpcmpeqd %ymm2, %ymm0, %k1
    210 ; SKX-NEXT:    vmovupd (%rdi), %zmm1 {%k1}
    211 ; SKX-NEXT:    vmovaps %zmm1, %zmm0
    212 ; SKX-NEXT:    retq
    213   %mask = icmp eq <8 x i32> %trigger, zeroinitializer
    214   %res = call <8 x double> @llvm.masked.load.v8f64.p0v8f64(<8 x double>* %addr, i32 4, <8 x i1>%mask, <8 x double>%dst)
    215   ret <8 x double> %res
    216 }
    217 
    218 define <2 x double> @test6(<2 x i64> %trigger, <2 x double>* %addr, <2 x double> %dst) {
    219 ; AVX-LABEL: test6:
    220 ; AVX:       ## BB#0:
    221 ; AVX-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    222 ; AVX-NEXT:    vpcmpeqq %xmm2, %xmm0, %xmm0
    223 ; AVX-NEXT:    vmaskmovpd (%rdi), %xmm0, %xmm2
    224 ; AVX-NEXT:    vblendvpd %xmm0, %xmm2, %xmm1, %xmm0
    225 ; AVX-NEXT:    retq
    226 ;
    227 ; AVX512F-LABEL: test6:
    228 ; AVX512F:       ## BB#0:
    229 ; AVX512F-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    230 ; AVX512F-NEXT:    vpcmpeqq %xmm2, %xmm0, %xmm0
    231 ; AVX512F-NEXT:    vmaskmovpd (%rdi), %xmm0, %xmm2
    232 ; AVX512F-NEXT:    vblendvpd %xmm0, %xmm2, %xmm1, %xmm0
    233 ; AVX512F-NEXT:    retq
    234 ;
    235 ; SKX-LABEL: test6:
    236 ; SKX:       ## BB#0:
    237 ; SKX-NEXT:    vpxord %xmm2, %xmm2, %xmm2
    238 ; SKX-NEXT:    vpcmpeqq %xmm2, %xmm0, %k1
    239 ; SKX-NEXT:    vmovupd (%rdi), %xmm1 {%k1}
    240 ; SKX-NEXT:    vmovaps %zmm1, %zmm0
    241 ; SKX-NEXT:    retq
    242   %mask = icmp eq <2 x i64> %trigger, zeroinitializer
    243   %res = call <2 x double> @llvm.masked.load.v2f64.p0v2f64(<2 x double>* %addr, i32 4, <2 x i1>%mask, <2 x double>%dst)
    244   ret <2 x double> %res
    245 }
    246 
    247 define <4 x float> @test7(<4 x i32> %trigger, <4 x float>* %addr, <4 x float> %dst) {
    248 ; AVX-LABEL: test7:
    249 ; AVX:       ## BB#0:
    250 ; AVX-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    251 ; AVX-NEXT:    vpcmpeqd %xmm2, %xmm0, %xmm0
    252 ; AVX-NEXT:    vmaskmovps (%rdi), %xmm0, %xmm2
    253 ; AVX-NEXT:    vblendvps %xmm0, %xmm2, %xmm1, %xmm0
    254 ; AVX-NEXT:    retq
    255 ;
    256 ; AVX512F-LABEL: test7:
    257 ; AVX512F:       ## BB#0:
    258 ; AVX512F-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    259 ; AVX512F-NEXT:    vpcmpeqd %xmm2, %xmm0, %xmm0
    260 ; AVX512F-NEXT:    vmaskmovps (%rdi), %xmm0, %xmm2
    261 ; AVX512F-NEXT:    vblendvps %xmm0, %xmm2, %xmm1, %xmm0
    262 ; AVX512F-NEXT:    retq
    263 ;
    264 ; SKX-LABEL: test7:
    265 ; SKX:       ## BB#0:
    266 ; SKX-NEXT:    vpxord %xmm2, %xmm2, %xmm2
    267 ; SKX-NEXT:    vpcmpeqd %xmm2, %xmm0, %k1
    268 ; SKX-NEXT:    vmovups (%rdi), %xmm1 {%k1}
    269 ; SKX-NEXT:    vmovaps %zmm1, %zmm0
    270 ; SKX-NEXT:    retq
    271   %mask = icmp eq <4 x i32> %trigger, zeroinitializer
    272   %res = call <4 x float> @llvm.masked.load.v4f32.p0v4f32(<4 x float>* %addr, i32 4, <4 x i1>%mask, <4 x float>%dst)
    273   ret <4 x float> %res
    274 }
    275 
    276 define <4 x i32> @test8(<4 x i32> %trigger, <4 x i32>* %addr, <4 x i32> %dst) {
    277 ; AVX1-LABEL: test8:
    278 ; AVX1:       ## BB#0:
    279 ; AVX1-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    280 ; AVX1-NEXT:    vpcmpeqd %xmm2, %xmm0, %xmm0
    281 ; AVX1-NEXT:    vmaskmovps (%rdi), %xmm0, %xmm2
    282 ; AVX1-NEXT:    vblendvps %xmm0, %xmm2, %xmm1, %xmm0
    283 ; AVX1-NEXT:    retq
    284 ;
    285 ; AVX2-LABEL: test8:
    286 ; AVX2:       ## BB#0:
    287 ; AVX2-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    288 ; AVX2-NEXT:    vpcmpeqd %xmm2, %xmm0, %xmm0
    289 ; AVX2-NEXT:    vpmaskmovd (%rdi), %xmm0, %xmm2
    290 ; AVX2-NEXT:    vblendvps %xmm0, %xmm2, %xmm1, %xmm0
    291 ; AVX2-NEXT:    retq
    292 ;
    293 ; AVX512F-LABEL: test8:
    294 ; AVX512F:       ## BB#0:
    295 ; AVX512F-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    296 ; AVX512F-NEXT:    vpcmpeqd %xmm2, %xmm0, %xmm0
    297 ; AVX512F-NEXT:    vpmaskmovd (%rdi), %xmm0, %xmm2
    298 ; AVX512F-NEXT:    vblendvps %xmm0, %xmm2, %xmm1, %xmm0
    299 ; AVX512F-NEXT:    retq
    300 ;
    301 ; SKX-LABEL: test8:
    302 ; SKX:       ## BB#0:
    303 ; SKX-NEXT:    vpxord %xmm2, %xmm2, %xmm2
    304 ; SKX-NEXT:    vpcmpeqd %xmm2, %xmm0, %k1
    305 ; SKX-NEXT:    vmovdqu32 (%rdi), %xmm1 {%k1}
    306 ; SKX-NEXT:    vmovaps %zmm1, %zmm0
    307 ; SKX-NEXT:    retq
    308   %mask = icmp eq <4 x i32> %trigger, zeroinitializer
    309   %res = call <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %addr, i32 4, <4 x i1>%mask, <4 x i32>%dst)
    310   ret <4 x i32> %res
    311 }
    312 
    313 define void @test9(<4 x i32> %trigger, <4 x i32>* %addr, <4 x i32> %val) {
    314 ; AVX1-LABEL: test9:
    315 ; AVX1:       ## BB#0:
    316 ; AVX1-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    317 ; AVX1-NEXT:    vpcmpeqd %xmm2, %xmm0, %xmm0
    318 ; AVX1-NEXT:    vmaskmovps %xmm1, %xmm0, (%rdi)
    319 ; AVX1-NEXT:    retq
    320 ;
    321 ; AVX2-LABEL: test9:
    322 ; AVX2:       ## BB#0:
    323 ; AVX2-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    324 ; AVX2-NEXT:    vpcmpeqd %xmm2, %xmm0, %xmm0
    325 ; AVX2-NEXT:    vpmaskmovd %xmm1, %xmm0, (%rdi)
    326 ; AVX2-NEXT:    retq
    327 ;
    328 ; AVX512F-LABEL: test9:
    329 ; AVX512F:       ## BB#0:
    330 ; AVX512F-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    331 ; AVX512F-NEXT:    vpcmpeqd %xmm2, %xmm0, %xmm0
    332 ; AVX512F-NEXT:    vpmaskmovd %xmm1, %xmm0, (%rdi)
    333 ; AVX512F-NEXT:    retq
    334 ;
    335 ; SKX-LABEL: test9:
    336 ; SKX:       ## BB#0:
    337 ; SKX-NEXT:    vpxord %xmm2, %xmm2, %xmm2
    338 ; SKX-NEXT:    vpcmpeqd %xmm2, %xmm0, %k1
    339 ; SKX-NEXT:    vmovdqu32 %xmm1, (%rdi) {%k1}
    340 ; SKX-NEXT:    retq
    341   %mask = icmp eq <4 x i32> %trigger, zeroinitializer
    342   call void @llvm.masked.store.v4i32.p0v4i32(<4 x i32>%val, <4 x i32>* %addr, i32 4, <4 x i1>%mask)
    343   ret void
    344 }
    345 
    346 define <4 x double> @test10(<4 x i32> %trigger, <4 x double>* %addr, <4 x double> %dst) {
    347 ; AVX1-LABEL: test10:
    348 ; AVX1:       ## BB#0:
    349 ; AVX1-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    350 ; AVX1-NEXT:    vpcmpeqd %xmm2, %xmm0, %xmm0
    351 ; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm2
    352 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
    353 ; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm0
    354 ; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm2, %ymm0
    355 ; AVX1-NEXT:    vmaskmovpd (%rdi), %ymm0, %ymm2
    356 ; AVX1-NEXT:    vblendvpd %ymm0, %ymm2, %ymm1, %ymm0
    357 ; AVX1-NEXT:    retq
    358 ;
    359 ; AVX2-LABEL: test10:
    360 ; AVX2:       ## BB#0:
    361 ; AVX2-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    362 ; AVX2-NEXT:    vpcmpeqd %xmm2, %xmm0, %xmm0
    363 ; AVX2-NEXT:    vpmovsxdq %xmm0, %ymm0
    364 ; AVX2-NEXT:    vmaskmovpd (%rdi), %ymm0, %ymm2
    365 ; AVX2-NEXT:    vblendvpd %ymm0, %ymm2, %ymm1, %ymm0
    366 ; AVX2-NEXT:    retq
    367 ;
    368 ; AVX512F-LABEL: test10:
    369 ; AVX512F:       ## BB#0:
    370 ; AVX512F-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    371 ; AVX512F-NEXT:    vpcmpeqd %xmm2, %xmm0, %xmm0
    372 ; AVX512F-NEXT:    vpmovsxdq %xmm0, %ymm0
    373 ; AVX512F-NEXT:    vmaskmovpd (%rdi), %ymm0, %ymm2
    374 ; AVX512F-NEXT:    vblendvpd %ymm0, %ymm2, %ymm1, %ymm0
    375 ; AVX512F-NEXT:    retq
    376 ;
    377 ; SKX-LABEL: test10:
    378 ; SKX:       ## BB#0:
    379 ; SKX-NEXT:    vpxord %xmm2, %xmm2, %xmm2
    380 ; SKX-NEXT:    vpcmpeqd %xmm2, %xmm0, %k1
    381 ; SKX-NEXT:    vmovapd (%rdi), %ymm1 {%k1}
    382 ; SKX-NEXT:    vmovaps %zmm1, %zmm0
    383 ; SKX-NEXT:    retq
    384   %mask = icmp eq <4 x i32> %trigger, zeroinitializer
    385   %res = call <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %addr, i32 32, <4 x i1>%mask, <4 x double>%dst)
    386   ret <4 x double> %res
    387 }
    388 
    389 define <4 x double> @test10b(<4 x i32> %trigger, <4 x double>* %addr, <4 x double> %dst) {
    390 ; AVX1-LABEL: test10b:
    391 ; AVX1:       ## BB#0:
    392 ; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1
    393 ; AVX1-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm0
    394 ; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm1
    395 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
    396 ; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm0
    397 ; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
    398 ; AVX1-NEXT:    vmaskmovpd (%rdi), %ymm0, %ymm0
    399 ; AVX1-NEXT:    retq
    400 ;
    401 ; AVX2-LABEL: test10b:
    402 ; AVX2:       ## BB#0:
    403 ; AVX2-NEXT:    vpxor %xmm1, %xmm1, %xmm1
    404 ; AVX2-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm0
    405 ; AVX2-NEXT:    vpmovsxdq %xmm0, %ymm0
    406 ; AVX2-NEXT:    vmaskmovpd (%rdi), %ymm0, %ymm0
    407 ; AVX2-NEXT:    retq
    408 ;
    409 ; AVX512F-LABEL: test10b:
    410 ; AVX512F:       ## BB#0:
    411 ; AVX512F-NEXT:    vpxor %xmm1, %xmm1, %xmm1
    412 ; AVX512F-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm0
    413 ; AVX512F-NEXT:    vpmovsxdq %xmm0, %ymm0
    414 ; AVX512F-NEXT:    vmaskmovpd (%rdi), %ymm0, %ymm0
    415 ; AVX512F-NEXT:    retq
    416 ;
    417 ; SKX-LABEL: test10b:
    418 ; SKX:       ## BB#0:
    419 ; SKX-NEXT:    vpxord %xmm1, %xmm1, %xmm1
    420 ; SKX-NEXT:    vpcmpeqd %xmm1, %xmm0, %k1
    421 ; SKX-NEXT:    vmovapd (%rdi), %ymm0 {%k1} {z}
    422 ; SKX-NEXT:    retq
    423   %mask = icmp eq <4 x i32> %trigger, zeroinitializer
    424   %res = call <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %addr, i32 32, <4 x i1>%mask, <4 x double>zeroinitializer)
    425   ret <4 x double> %res
    426 }
    427 
    428 define <8 x float> @test11a(<8 x i32> %trigger, <8 x float>* %addr, <8 x float> %dst) {
    429 ; AVX1-LABEL: test11a:
    430 ; AVX1:       ## BB#0:
    431 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
    432 ; AVX1-NEXT:    vpxor %xmm3, %xmm3, %xmm3
    433 ; AVX1-NEXT:    vpcmpeqd %xmm3, %xmm2, %xmm2
    434 ; AVX1-NEXT:    vpcmpeqd %xmm3, %xmm0, %xmm0
    435 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
    436 ; AVX1-NEXT:    vmaskmovps (%rdi), %ymm0, %ymm2
    437 ; AVX1-NEXT:    vblendvps %ymm0, %ymm2, %ymm1, %ymm0
    438 ; AVX1-NEXT:    retq
    439 ;
    440 ; AVX2-LABEL: test11a:
    441 ; AVX2:       ## BB#0:
    442 ; AVX2-NEXT:    vpxor %ymm2, %ymm2, %ymm2
    443 ; AVX2-NEXT:    vpcmpeqd %ymm2, %ymm0, %ymm0
    444 ; AVX2-NEXT:    vmaskmovps (%rdi), %ymm0, %ymm2
    445 ; AVX2-NEXT:    vblendvps %ymm0, %ymm2, %ymm1, %ymm0
    446 ; AVX2-NEXT:    retq
    447 ;
    448 ; AVX512F-LABEL: test11a:
    449 ; AVX512F:       ## BB#0:
    450 ; AVX512F-NEXT:    ## kill: %YMM1<def> %YMM1<kill> %ZMM1<def>
    451 ; AVX512F-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<def>
    452 ; AVX512F-NEXT:    vpxor %ymm2, %ymm2, %ymm2
    453 ; AVX512F-NEXT:    vpcmpeqd %zmm2, %zmm0, %k0
    454 ; AVX512F-NEXT:    kshiftlw $8, %k0, %k0
    455 ; AVX512F-NEXT:    kshiftrw $8, %k0, %k1
    456 ; AVX512F-NEXT:    vmovups (%rdi), %zmm1 {%k1}
    457 ; AVX512F-NEXT:    vmovaps %zmm1, %zmm0
    458 ; AVX512F-NEXT:    retq
    459 ;
    460 ; SKX-LABEL: test11a:
    461 ; SKX:       ## BB#0:
    462 ; SKX-NEXT:    vpxord %ymm2, %ymm2, %ymm2
    463 ; SKX-NEXT:    vpcmpeqd %ymm2, %ymm0, %k1
    464 ; SKX-NEXT:    vmovaps (%rdi), %ymm1 {%k1}
    465 ; SKX-NEXT:    vmovaps %zmm1, %zmm0
    466 ; SKX-NEXT:    retq
    467   %mask = icmp eq <8 x i32> %trigger, zeroinitializer
    468   %res = call <8 x float> @llvm.masked.load.v8f32.p0v8f32(<8 x float>* %addr, i32 32, <8 x i1>%mask, <8 x float>%dst)
    469   ret <8 x float> %res
    470 }
    471 
    472 define <8 x i32> @test11b(<8 x i1> %mask, <8 x i32>* %addr, <8 x i32> %dst) {
    473 ; AVX1-LABEL: test11b:
    474 ; AVX1:       ## BB#0:
    475 ; AVX1-NEXT:    vpmovzxwd {{.*#+}} xmm2 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
    476 ; AVX1-NEXT:    vpslld $31, %xmm2, %xmm2
    477 ; AVX1-NEXT:    vpsrad $31, %xmm2, %xmm2
    478 ; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm0[4,4,5,5,6,6,7,7]
    479 ; AVX1-NEXT:    vpslld $31, %xmm0, %xmm0
    480 ; AVX1-NEXT:    vpsrad $31, %xmm0, %xmm0
    481 ; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm2, %ymm0
    482 ; AVX1-NEXT:    vmaskmovps (%rdi), %ymm0, %ymm2
    483 ; AVX1-NEXT:    vblendvps %ymm0, %ymm2, %ymm1, %ymm0
    484 ; AVX1-NEXT:    retq
    485 ;
    486 ; AVX2-LABEL: test11b:
    487 ; AVX2:       ## BB#0:
    488 ; AVX2-NEXT:    vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
    489 ; AVX2-NEXT:    vpslld $31, %ymm0, %ymm0
    490 ; AVX2-NEXT:    vpsrad $31, %ymm0, %ymm0
    491 ; AVX2-NEXT:    vpmaskmovd (%rdi), %ymm0, %ymm2
    492 ; AVX2-NEXT:    vblendvps %ymm0, %ymm2, %ymm1, %ymm0
    493 ; AVX2-NEXT:    retq
    494 ;
    495 ; AVX512F-LABEL: test11b:
    496 ; AVX512F:       ## BB#0:
    497 ; AVX512F-NEXT:    ## kill: %YMM1<def> %YMM1<kill> %ZMM1<def>
    498 ; AVX512F-NEXT:    vpmovsxwq %xmm0, %zmm0
    499 ; AVX512F-NEXT:    vpsllq $63, %zmm0, %zmm0
    500 ; AVX512F-NEXT:    vptestmq %zmm0, %zmm0, %k0
    501 ; AVX512F-NEXT:    kshiftlw $8, %k0, %k0
    502 ; AVX512F-NEXT:    kshiftrw $8, %k0, %k1
    503 ; AVX512F-NEXT:    vmovdqu32 (%rdi), %zmm1 {%k1}
    504 ; AVX512F-NEXT:    vmovaps %zmm1, %zmm0
    505 ; AVX512F-NEXT:    retq
    506 ;
    507 ; SKX-LABEL: test11b:
    508 ; SKX:       ## BB#0:
    509 ; SKX-NEXT:    vpsllw $15, %xmm0, %xmm0
    510 ; SKX-NEXT:    vpmovw2m %xmm0, %k1
    511 ; SKX-NEXT:    vmovdqu32 (%rdi), %ymm1 {%k1}
    512 ; SKX-NEXT:    vmovaps %zmm1, %zmm0
    513 ; SKX-NEXT:    retq
    514   %res = call <8 x i32> @llvm.masked.load.v8i32.p0v8i32(<8 x i32>* %addr, i32 4, <8 x i1>%mask, <8 x i32>%dst)
    515   ret <8 x i32> %res
    516 }
    517 
    518 define <8 x float> @test11c(<8 x i1> %mask, <8 x float>* %addr) {
    519 ; AVX1-LABEL: test11c:
    520 ; AVX1:       ## BB#0:
    521 ; AVX1-NEXT:    vpmovzxwd {{.*#+}} xmm1 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
    522 ; AVX1-NEXT:    vpslld $31, %xmm1, %xmm1
    523 ; AVX1-NEXT:    vpsrad $31, %xmm1, %xmm1
    524 ; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm0[4,4,5,5,6,6,7,7]
    525 ; AVX1-NEXT:    vpslld $31, %xmm0, %xmm0
    526 ; AVX1-NEXT:    vpsrad $31, %xmm0, %xmm0
    527 ; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
    528 ; AVX1-NEXT:    vmaskmovps (%rdi), %ymm0, %ymm0
    529 ; AVX1-NEXT:    retq
    530 ;
    531 ; AVX2-LABEL: test11c:
    532 ; AVX2:       ## BB#0:
    533 ; AVX2-NEXT:    vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
    534 ; AVX2-NEXT:    vpslld $31, %ymm0, %ymm0
    535 ; AVX2-NEXT:    vpsrad $31, %ymm0, %ymm0
    536 ; AVX2-NEXT:    vmaskmovps (%rdi), %ymm0, %ymm0
    537 ; AVX2-NEXT:    retq
    538 ;
    539 ; AVX512F-LABEL: test11c:
    540 ; AVX512F:       ## BB#0:
    541 ; AVX512F-NEXT:    vpmovsxwq %xmm0, %zmm0
    542 ; AVX512F-NEXT:    vpsllq $63, %zmm0, %zmm0
    543 ; AVX512F-NEXT:    vptestmq %zmm0, %zmm0, %k0
    544 ; AVX512F-NEXT:    kshiftlw $8, %k0, %k0
    545 ; AVX512F-NEXT:    kshiftrw $8, %k0, %k1
    546 ; AVX512F-NEXT:    vmovups (%rdi), %zmm0 {%k1} {z}
    547 ; AVX512F-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<kill>
    548 ; AVX512F-NEXT:    retq
    549 ;
    550 ; SKX-LABEL: test11c:
    551 ; SKX:       ## BB#0:
    552 ; SKX-NEXT:    vpsllw $15, %xmm0, %xmm0
    553 ; SKX-NEXT:    vpmovw2m %xmm0, %k1
    554 ; SKX-NEXT:    vmovaps (%rdi), %ymm0 {%k1} {z}
    555 ; SKX-NEXT:    retq
    556   %res = call <8 x float> @llvm.masked.load.v8f32.p0v8f32(<8 x float>* %addr, i32 32, <8 x i1> %mask, <8 x float> zeroinitializer)
    557   ret <8 x float> %res
    558 }
    559 
    560 define <8 x i32> @test11d(<8 x i1> %mask, <8 x i32>* %addr) {
    561 ; AVX1-LABEL: test11d:
    562 ; AVX1:       ## BB#0:
    563 ; AVX1-NEXT:    vpmovzxwd {{.*#+}} xmm1 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
    564 ; AVX1-NEXT:    vpslld $31, %xmm1, %xmm1
    565 ; AVX1-NEXT:    vpsrad $31, %xmm1, %xmm1
    566 ; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm0[4,4,5,5,6,6,7,7]
    567 ; AVX1-NEXT:    vpslld $31, %xmm0, %xmm0
    568 ; AVX1-NEXT:    vpsrad $31, %xmm0, %xmm0
    569 ; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
    570 ; AVX1-NEXT:    vmaskmovps (%rdi), %ymm0, %ymm0
    571 ; AVX1-NEXT:    retq
    572 ;
    573 ; AVX2-LABEL: test11d:
    574 ; AVX2:       ## BB#0:
    575 ; AVX2-NEXT:    vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
    576 ; AVX2-NEXT:    vpslld $31, %ymm0, %ymm0
    577 ; AVX2-NEXT:    vpsrad $31, %ymm0, %ymm0
    578 ; AVX2-NEXT:    vpmaskmovd (%rdi), %ymm0, %ymm0
    579 ; AVX2-NEXT:    retq
    580 ;
    581 ; AVX512F-LABEL: test11d:
    582 ; AVX512F:       ## BB#0:
    583 ; AVX512F-NEXT:    vpmovsxwq %xmm0, %zmm0
    584 ; AVX512F-NEXT:    vpsllq $63, %zmm0, %zmm0
    585 ; AVX512F-NEXT:    vptestmq %zmm0, %zmm0, %k0
    586 ; AVX512F-NEXT:    kshiftlw $8, %k0, %k0
    587 ; AVX512F-NEXT:    kshiftrw $8, %k0, %k1
    588 ; AVX512F-NEXT:    vmovdqu32 (%rdi), %zmm0 {%k1} {z}
    589 ; AVX512F-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<kill>
    590 ; AVX512F-NEXT:    retq
    591 ;
    592 ; SKX-LABEL: test11d:
    593 ; SKX:       ## BB#0:
    594 ; SKX-NEXT:    vpsllw $15, %xmm0, %xmm0
    595 ; SKX-NEXT:    vpmovw2m %xmm0, %k1
    596 ; SKX-NEXT:    vmovdqu32 (%rdi), %ymm0 {%k1} {z}
    597 ; SKX-NEXT:    retq
    598   %res = call <8 x i32> @llvm.masked.load.v8i32.p0v8i32(<8 x i32>* %addr, i32 4, <8 x i1> %mask, <8 x i32> zeroinitializer)
    599   ret <8 x i32> %res
    600 }
    601 
    602 define void @test12(<8 x i32> %trigger, <8 x i32>* %addr, <8 x i32> %val) {
    603 ; AVX1-LABEL: test12:
    604 ; AVX1:       ## BB#0:
    605 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
    606 ; AVX1-NEXT:    vpxor %xmm3, %xmm3, %xmm3
    607 ; AVX1-NEXT:    vpcmpeqd %xmm3, %xmm2, %xmm2
    608 ; AVX1-NEXT:    vpcmpeqd %xmm3, %xmm0, %xmm0
    609 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
    610 ; AVX1-NEXT:    vmaskmovps %ymm1, %ymm0, (%rdi)
    611 ; AVX1-NEXT:    vzeroupper
    612 ; AVX1-NEXT:    retq
    613 ;
    614 ; AVX2-LABEL: test12:
    615 ; AVX2:       ## BB#0:
    616 ; AVX2-NEXT:    vpxor %ymm2, %ymm2, %ymm2
    617 ; AVX2-NEXT:    vpcmpeqd %ymm2, %ymm0, %ymm0
    618 ; AVX2-NEXT:    vpmaskmovd %ymm1, %ymm0, (%rdi)
    619 ; AVX2-NEXT:    vzeroupper
    620 ; AVX2-NEXT:    retq
    621 ;
    622 ; AVX512F-LABEL: test12:
    623 ; AVX512F:       ## BB#0:
    624 ; AVX512F-NEXT:    ## kill: %YMM1<def> %YMM1<kill> %ZMM1<def>
    625 ; AVX512F-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<def>
    626 ; AVX512F-NEXT:    vpxor %ymm2, %ymm2, %ymm2
    627 ; AVX512F-NEXT:    vpcmpeqd %zmm2, %zmm0, %k0
    628 ; AVX512F-NEXT:    kshiftlw $8, %k0, %k0
    629 ; AVX512F-NEXT:    kshiftrw $8, %k0, %k1
    630 ; AVX512F-NEXT:    vmovdqu32 %zmm1, (%rdi) {%k1}
    631 ; AVX512F-NEXT:    retq
    632 ;
    633 ; SKX-LABEL: test12:
    634 ; SKX:       ## BB#0:
    635 ; SKX-NEXT:    vpxord %ymm2, %ymm2, %ymm2
    636 ; SKX-NEXT:    vpcmpeqd %ymm2, %ymm0, %k1
    637 ; SKX-NEXT:    vmovdqu32 %ymm1, (%rdi) {%k1}
    638 ; SKX-NEXT:    retq
    639   %mask = icmp eq <8 x i32> %trigger, zeroinitializer
    640   call void @llvm.masked.store.v8i32.p0v8i32(<8 x i32>%val, <8 x i32>* %addr, i32 4, <8 x i1>%mask)
    641   ret void
    642 }
    643 
    644 define void @test13(<16 x i32> %trigger, <16 x float>* %addr, <16 x float> %val) {
    645 ; AVX1-LABEL: test13:
    646 ; AVX1:       ## BB#0:
    647 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm4
    648 ; AVX1-NEXT:    vpxor %xmm5, %xmm5, %xmm5
    649 ; AVX1-NEXT:    vpcmpeqd %xmm5, %xmm4, %xmm4
    650 ; AVX1-NEXT:    vpcmpeqd %xmm5, %xmm0, %xmm0
    651 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm0
    652 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm4
    653 ; AVX1-NEXT:    vpcmpeqd %xmm5, %xmm4, %xmm4
    654 ; AVX1-NEXT:    vpcmpeqd %xmm5, %xmm1, %xmm1
    655 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm1, %ymm1
    656 ; AVX1-NEXT:    vmaskmovps %ymm3, %ymm1, 32(%rdi)
    657 ; AVX1-NEXT:    vmaskmovps %ymm2, %ymm0, (%rdi)
    658 ; AVX1-NEXT:    vzeroupper
    659 ; AVX1-NEXT:    retq
    660 ;
    661 ; AVX2-LABEL: test13:
    662 ; AVX2:       ## BB#0:
    663 ; AVX2-NEXT:    vpxor %ymm4, %ymm4, %ymm4
    664 ; AVX2-NEXT:    vpcmpeqd %ymm4, %ymm0, %ymm0
    665 ; AVX2-NEXT:    vpcmpeqd %ymm4, %ymm1, %ymm1
    666 ; AVX2-NEXT:    vmaskmovps %ymm3, %ymm1, 32(%rdi)
    667 ; AVX2-NEXT:    vmaskmovps %ymm2, %ymm0, (%rdi)
    668 ; AVX2-NEXT:    vzeroupper
    669 ; AVX2-NEXT:    retq
    670 ;
    671 ; AVX512-LABEL: test13:
    672 ; AVX512:       ## BB#0:
    673 ; AVX512-NEXT:    vpxord %zmm2, %zmm2, %zmm2
    674 ; AVX512-NEXT:    vpcmpeqd %zmm2, %zmm0, %k1
    675 ; AVX512-NEXT:    vmovups %zmm1, (%rdi) {%k1}
    676 ; AVX512-NEXT:    retq
    677   %mask = icmp eq <16 x i32> %trigger, zeroinitializer
    678   call void @llvm.masked.store.v16f32.p0v16f32(<16 x float>%val, <16 x float>* %addr, i32 4, <16 x i1>%mask)
    679   ret void
    680 }
    681 
    682 define void @test14(<2 x i32> %trigger, <2 x float>* %addr, <2 x float> %val) {
    683 ; AVX1-LABEL: test14:
    684 ; AVX1:       ## BB#0:
    685 ; AVX1-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    686 ; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm2[2,3],xmm0[4,5],xmm2[6,7]
    687 ; AVX1-NEXT:    vpcmpeqq %xmm2, %xmm0, %xmm0
    688 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
    689 ; AVX1-NEXT:    vmovq {{.*#+}} xmm0 = xmm0[0],zero
    690 ; AVX1-NEXT:    vmaskmovps %xmm1, %xmm0, (%rdi)
    691 ; AVX1-NEXT:    retq
    692 ;
    693 ; AVX2-LABEL: test14:
    694 ; AVX2:       ## BB#0:
    695 ; AVX2-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    696 ; AVX2-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0],xmm2[1],xmm0[2],xmm2[3]
    697 ; AVX2-NEXT:    vpcmpeqq %xmm2, %xmm0, %xmm0
    698 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
    699 ; AVX2-NEXT:    vmovq {{.*#+}} xmm0 = xmm0[0],zero
    700 ; AVX2-NEXT:    vmaskmovps %xmm1, %xmm0, (%rdi)
    701 ; AVX2-NEXT:    retq
    702 ;
    703 ; AVX512F-LABEL: test14:
    704 ; AVX512F:       ## BB#0:
    705 ; AVX512F-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    706 ; AVX512F-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0],xmm2[1],xmm0[2],xmm2[3]
    707 ; AVX512F-NEXT:    vpcmpeqq %xmm2, %xmm0, %xmm0
    708 ; AVX512F-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
    709 ; AVX512F-NEXT:    vmovq {{.*#+}} xmm0 = xmm0[0],zero
    710 ; AVX512F-NEXT:    vmaskmovps %xmm1, %xmm0, (%rdi)
    711 ; AVX512F-NEXT:    retq
    712 ;
    713 ; SKX-LABEL: test14:
    714 ; SKX:       ## BB#0:
    715 ; SKX-NEXT:    vpxord %xmm2, %xmm2, %xmm2
    716 ; SKX-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0],xmm2[1],xmm0[2],xmm2[3]
    717 ; SKX-NEXT:    vpcmpeqq %xmm2, %xmm0, %k0
    718 ; SKX-NEXT:    kshiftlw $14, %k0, %k0
    719 ; SKX-NEXT:    kshiftrw $14, %k0, %k1
    720 ; SKX-NEXT:    vmovups %xmm1, (%rdi) {%k1}
    721 ; SKX-NEXT:    retq
    722   %mask = icmp eq <2 x i32> %trigger, zeroinitializer
    723   call void @llvm.masked.store.v2f32.p0v2f32(<2 x float>%val, <2 x float>* %addr, i32 4, <2 x i1>%mask)
    724   ret void
    725 }
    726 
    727 define void @test15(<2 x i32> %trigger, <2 x i32>* %addr, <2 x i32> %val) {
    728 ; AVX1-LABEL: test15:
    729 ; AVX1:       ## BB#0:
    730 ; AVX1-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    731 ; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm2[2,3],xmm0[4,5],xmm2[6,7]
    732 ; AVX1-NEXT:    vpcmpeqq %xmm2, %xmm0, %xmm0
    733 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
    734 ; AVX1-NEXT:    vmovq {{.*#+}} xmm0 = xmm0[0],zero
    735 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
    736 ; AVX1-NEXT:    vmaskmovps %xmm1, %xmm0, (%rdi)
    737 ; AVX1-NEXT:    retq
    738 ;
    739 ; AVX2-LABEL: test15:
    740 ; AVX2:       ## BB#0:
    741 ; AVX2-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    742 ; AVX2-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0],xmm2[1],xmm0[2],xmm2[3]
    743 ; AVX2-NEXT:    vpcmpeqq %xmm2, %xmm0, %xmm0
    744 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
    745 ; AVX2-NEXT:    vmovq {{.*#+}} xmm0 = xmm0[0],zero
    746 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
    747 ; AVX2-NEXT:    vpmaskmovd %xmm1, %xmm0, (%rdi)
    748 ; AVX2-NEXT:    retq
    749 ;
    750 ; AVX512F-LABEL: test15:
    751 ; AVX512F:       ## BB#0:
    752 ; AVX512F-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    753 ; AVX512F-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0],xmm2[1],xmm0[2],xmm2[3]
    754 ; AVX512F-NEXT:    vpcmpeqq %xmm2, %xmm0, %xmm0
    755 ; AVX512F-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
    756 ; AVX512F-NEXT:    vmovq {{.*#+}} xmm0 = xmm0[0],zero
    757 ; AVX512F-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
    758 ; AVX512F-NEXT:    vpmaskmovd %xmm1, %xmm0, (%rdi)
    759 ; AVX512F-NEXT:    retq
    760 ;
    761 ; SKX-LABEL: test15:
    762 ; SKX:       ## BB#0:
    763 ; SKX-NEXT:    vpxord %xmm2, %xmm2, %xmm2
    764 ; SKX-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0],xmm2[1],xmm0[2],xmm2[3]
    765 ; SKX-NEXT:    vpcmpeqq %xmm2, %xmm0, %k1
    766 ; SKX-NEXT:    vpmovqd %xmm1, (%rdi) {%k1}
    767 ; SKX-NEXT:    retq
    768   %mask = icmp eq <2 x i32> %trigger, zeroinitializer
    769   call void @llvm.masked.store.v2i32.p0v2i32(<2 x i32>%val, <2 x i32>* %addr, i32 4, <2 x i1>%mask)
    770   ret void
    771 }
    772 
    773 define <2 x float> @test16(<2 x i32> %trigger, <2 x float>* %addr, <2 x float> %dst) {
    774 ; AVX1-LABEL: test16:
    775 ; AVX1:       ## BB#0:
    776 ; AVX1-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    777 ; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm2[2,3],xmm0[4,5],xmm2[6,7]
    778 ; AVX1-NEXT:    vpcmpeqq %xmm2, %xmm0, %xmm0
    779 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
    780 ; AVX1-NEXT:    vmovq {{.*#+}} xmm0 = xmm0[0],zero
    781 ; AVX1-NEXT:    vmaskmovps (%rdi), %xmm0, %xmm2
    782 ; AVX1-NEXT:    vblendvps %xmm0, %xmm2, %xmm1, %xmm0
    783 ; AVX1-NEXT:    retq
    784 ;
    785 ; AVX2-LABEL: test16:
    786 ; AVX2:       ## BB#0:
    787 ; AVX2-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    788 ; AVX2-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0],xmm2[1],xmm0[2],xmm2[3]
    789 ; AVX2-NEXT:    vpcmpeqq %xmm2, %xmm0, %xmm0
    790 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
    791 ; AVX2-NEXT:    vmovq {{.*#+}} xmm0 = xmm0[0],zero
    792 ; AVX2-NEXT:    vmaskmovps (%rdi), %xmm0, %xmm2
    793 ; AVX2-NEXT:    vblendvps %xmm0, %xmm2, %xmm1, %xmm0
    794 ; AVX2-NEXT:    retq
    795 ;
    796 ; AVX512F-LABEL: test16:
    797 ; AVX512F:       ## BB#0:
    798 ; AVX512F-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    799 ; AVX512F-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0],xmm2[1],xmm0[2],xmm2[3]
    800 ; AVX512F-NEXT:    vpcmpeqq %xmm2, %xmm0, %xmm0
    801 ; AVX512F-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
    802 ; AVX512F-NEXT:    vmovq {{.*#+}} xmm0 = xmm0[0],zero
    803 ; AVX512F-NEXT:    vmaskmovps (%rdi), %xmm0, %xmm2
    804 ; AVX512F-NEXT:    vblendvps %xmm0, %xmm2, %xmm1, %xmm0
    805 ; AVX512F-NEXT:    retq
    806 ;
    807 ; SKX-LABEL: test16:
    808 ; SKX:       ## BB#0:
    809 ; SKX-NEXT:    vpxord %xmm2, %xmm2, %xmm2
    810 ; SKX-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0],xmm2[1],xmm0[2],xmm2[3]
    811 ; SKX-NEXT:    vpcmpeqq %xmm2, %xmm0, %k0
    812 ; SKX-NEXT:    kshiftlw $14, %k0, %k0
    813 ; SKX-NEXT:    kshiftrw $14, %k0, %k1
    814 ; SKX-NEXT:    vmovups (%rdi), %xmm1 {%k1}
    815 ; SKX-NEXT:    vmovaps %zmm1, %zmm0
    816 ; SKX-NEXT:    retq
    817   %mask = icmp eq <2 x i32> %trigger, zeroinitializer
    818   %res = call <2 x float> @llvm.masked.load.v2f32.p0v2f32(<2 x float>* %addr, i32 4, <2 x i1>%mask, <2 x float>%dst)
    819   ret <2 x float> %res
    820 }
    821 
    822 define <2 x i32> @test17(<2 x i32> %trigger, <2 x i32>* %addr, <2 x i32> %dst) {
    823 ; AVX1-LABEL: test17:
    824 ; AVX1:       ## BB#0:
    825 ; AVX1-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    826 ; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm2[2,3],xmm0[4,5],xmm2[6,7]
    827 ; AVX1-NEXT:    vpcmpeqq %xmm2, %xmm0, %xmm0
    828 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
    829 ; AVX1-NEXT:    vmovq {{.*#+}} xmm0 = xmm0[0],zero
    830 ; AVX1-NEXT:    vmaskmovps (%rdi), %xmm0, %xmm2
    831 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
    832 ; AVX1-NEXT:    vblendvps %xmm0, %xmm2, %xmm1, %xmm0
    833 ; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm0
    834 ; AVX1-NEXT:    retq
    835 ;
    836 ; AVX2-LABEL: test17:
    837 ; AVX2:       ## BB#0:
    838 ; AVX2-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    839 ; AVX2-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0],xmm2[1],xmm0[2],xmm2[3]
    840 ; AVX2-NEXT:    vpcmpeqq %xmm2, %xmm0, %xmm0
    841 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
    842 ; AVX2-NEXT:    vmovq {{.*#+}} xmm0 = xmm0[0],zero
    843 ; AVX2-NEXT:    vpmaskmovd (%rdi), %xmm0, %xmm2
    844 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
    845 ; AVX2-NEXT:    vblendvps %xmm0, %xmm2, %xmm1, %xmm0
    846 ; AVX2-NEXT:    vpmovsxdq %xmm0, %xmm0
    847 ; AVX2-NEXT:    retq
    848 ;
    849 ; AVX512F-LABEL: test17:
    850 ; AVX512F:       ## BB#0:
    851 ; AVX512F-NEXT:    vpxor %xmm2, %xmm2, %xmm2
    852 ; AVX512F-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0],xmm2[1],xmm0[2],xmm2[3]
    853 ; AVX512F-NEXT:    vpcmpeqq %xmm2, %xmm0, %xmm0
    854 ; AVX512F-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
    855 ; AVX512F-NEXT:    vmovq {{.*#+}} xmm0 = xmm0[0],zero
    856 ; AVX512F-NEXT:    vpmaskmovd (%rdi), %xmm0, %xmm2
    857 ; AVX512F-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
    858 ; AVX512F-NEXT:    vblendvps %xmm0, %xmm2, %xmm1, %xmm0
    859 ; AVX512F-NEXT:    vpmovsxdq %xmm0, %xmm0
    860 ; AVX512F-NEXT:    retq
    861 ;
    862 ; SKX-LABEL: test17:
    863 ; SKX:       ## BB#0:
    864 ; SKX-NEXT:    vpxord %xmm2, %xmm2, %xmm2
    865 ; SKX-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0],xmm2[1],xmm0[2],xmm2[3]
    866 ; SKX-NEXT:    vpcmpeqq %xmm2, %xmm0, %k0
    867 ; SKX-NEXT:    kshiftlw $14, %k0, %k0
    868 ; SKX-NEXT:    kshiftrw $14, %k0, %k1
    869 ; SKX-NEXT:    vpshufd {{.*#+}} xmm0 = xmm1[0,2,2,3]
    870 ; SKX-NEXT:    vmovdqu32 (%rdi), %xmm0 {%k1}
    871 ; SKX-NEXT:    vpmovsxdq %xmm0, %xmm0
    872 ; SKX-NEXT:    retq
    873   %mask = icmp eq <2 x i32> %trigger, zeroinitializer
    874   %res = call <2 x i32> @llvm.masked.load.v2i32.p0v2i32(<2 x i32>* %addr, i32 4, <2 x i1>%mask, <2 x i32>%dst)
    875   ret <2 x i32> %res
    876 }
    877 
    878 define <2 x float> @test18(<2 x i32> %trigger, <2 x float>* %addr) {
    879 ; AVX1-LABEL: test18:
    880 ; AVX1:       ## BB#0:
    881 ; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1
    882 ; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3],xmm0[4,5],xmm1[6,7]
    883 ; AVX1-NEXT:    vpcmpeqq %xmm1, %xmm0, %xmm0
    884 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
    885 ; AVX1-NEXT:    vmovq {{.*#+}} xmm0 = xmm0[0],zero
    886 ; AVX1-NEXT:    vmaskmovps (%rdi), %xmm0, %xmm0
    887 ; AVX1-NEXT:    retq
    888 ;
    889 ; AVX2-LABEL: test18:
    890 ; AVX2:       ## BB#0:
    891 ; AVX2-NEXT:    vpxor %xmm1, %xmm1, %xmm1
    892 ; AVX2-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2],xmm1[3]
    893 ; AVX2-NEXT:    vpcmpeqq %xmm1, %xmm0, %xmm0
    894 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
    895 ; AVX2-NEXT:    vmovq {{.*#+}} xmm0 = xmm0[0],zero
    896 ; AVX2-NEXT:    vmaskmovps (%rdi), %xmm0, %xmm0
    897 ; AVX2-NEXT:    retq
    898 ;
    899 ; AVX512F-LABEL: test18:
    900 ; AVX512F:       ## BB#0:
    901 ; AVX512F-NEXT:    vpxor %xmm1, %xmm1, %xmm1
    902 ; AVX512F-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2],xmm1[3]
    903 ; AVX512F-NEXT:    vpcmpeqq %xmm1, %xmm0, %xmm0
    904 ; AVX512F-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
    905 ; AVX512F-NEXT:    vmovq {{.*#+}} xmm0 = xmm0[0],zero
    906 ; AVX512F-NEXT:    vmaskmovps (%rdi), %xmm0, %xmm0
    907 ; AVX512F-NEXT:    retq
    908 ;
    909 ; SKX-LABEL: test18:
    910 ; SKX:       ## BB#0:
    911 ; SKX-NEXT:    vpxord %xmm1, %xmm1, %xmm1
    912 ; SKX-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2],xmm1[3]
    913 ; SKX-NEXT:    vpcmpeqq %xmm1, %xmm0, %k0
    914 ; SKX-NEXT:    kshiftlw $14, %k0, %k0
    915 ; SKX-NEXT:    kshiftrw $14, %k0, %k1
    916 ; SKX-NEXT:    vmovups (%rdi), %xmm0 {%k1} {z}
    917 ; SKX-NEXT:    retq
    918   %mask = icmp eq <2 x i32> %trigger, zeroinitializer
    919   %res = call <2 x float> @llvm.masked.load.v2f32.p0v2f32(<2 x float>* %addr, i32 4, <2 x i1>%mask, <2 x float>undef)
    920   ret <2 x float> %res
    921 }
    922 
    923 define <4 x float> @load_all(<4 x i32> %trigger, <4 x float>* %addr) {
    924 ; AVX-LABEL: load_all:
    925 ; AVX:       ## BB#0:
    926 ; AVX-NEXT:    vmovups (%rdi), %xmm0
    927 ; AVX-NEXT:    retq
    928 ;
    929 ; AVX512F-LABEL: load_all:
    930 ; AVX512F:       ## BB#0:
    931 ; AVX512F-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0
    932 ; AVX512F-NEXT:    vmaskmovps (%rdi), %xmm0, %xmm0
    933 ; AVX512F-NEXT:    retq
    934 ;
    935 ; SKX-LABEL: load_all:
    936 ; SKX:       ## BB#0:
    937 ; SKX-NEXT:    kxnorw %k0, %k0, %k1
    938 ; SKX-NEXT:    vmovups (%rdi), %xmm0 {%k1} {z}
    939 ; SKX-NEXT:    retq
    940   %mask = icmp eq <4 x i32> %trigger, zeroinitializer
    941   %res = call <4 x float> @llvm.masked.load.v4f32.p0v4f32(<4 x float>* %addr, i32 4, <4 x i1><i1 true, i1 true, i1 true, i1 true>, <4 x float>undef)
    942   ret <4 x float> %res
    943 }
    944 
    945 ;;; Loads with Constant Masks - these should be optimized to use something other than a variable blend.
    946 
    947 ; 128-bit FP vectors are supported with AVX.
    948 
    949 define <4 x float> @mload_constmask_v4f32(<4 x float>* %addr, <4 x float> %dst) {
    950 ; AVX-LABEL: mload_constmask_v4f32:
    951 ; AVX:       ## BB#0:
    952 ; AVX-NEXT:    vblendps {{.*#+}} xmm0 = mem[0],xmm0[1],mem[2,3]
    953 ; AVX-NEXT:    retq
    954 ;
    955 ; AVX512F-LABEL: mload_constmask_v4f32:
    956 ; AVX512F:       ## BB#0:
    957 ; AVX512F-NEXT:    vmovaps {{.*#+}} xmm1 = [4294967295,0,4294967295,4294967295]
    958 ; AVX512F-NEXT:    vmaskmovps (%rdi), %xmm1, %xmm2
    959 ; AVX512F-NEXT:    vblendvps %xmm1, %xmm2, %xmm0, %xmm0
    960 ; AVX512F-NEXT:    retq
    961 ;
    962 ; SKX-LABEL: mload_constmask_v4f32:
    963 ; SKX:       ## BB#0:
    964 ; SKX-NEXT:    movb $13, %al
    965 ; SKX-NEXT:    kmovw %eax, %k1
    966 ; SKX-NEXT:    vmovups (%rdi), %xmm0 {%k1}
    967 ; SKX-NEXT:    retq
    968   %res = call <4 x float> @llvm.masked.load.v4f32.p0v4f32(<4 x float>* %addr, i32 4, <4 x i1> <i1 1, i1 0, i1 1, i1 1>, <4 x float> %dst)
    969   ret <4 x float> %res
    970 }
    971 
    972 ; 128-bit integer vectors are supported with AVX2.
    973 
    974 define <4 x i32> @mload_constmask_v4i32(<4 x i32>* %addr, <4 x i32> %dst) {
    975 ; AVX1-LABEL: mload_constmask_v4i32:
    976 ; AVX1:       ## BB#0:
    977 ; AVX1-NEXT:    vmovaps {{.*#+}} xmm1 = [0,4294967295,4294967295,4294967295]
    978 ; AVX1-NEXT:    vmaskmovps (%rdi), %xmm1, %xmm1
    979 ; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3,4,5,6,7]
    980 ; AVX1-NEXT:    retq
    981 ;
    982 ; AVX2-LABEL: mload_constmask_v4i32:
    983 ; AVX2:       ## BB#0:
    984 ; AVX2-NEXT:    vmovdqa {{.*#+}} xmm1 = [0,4294967295,4294967295,4294967295]
    985 ; AVX2-NEXT:    vpmaskmovd (%rdi), %xmm1, %xmm1
    986 ; AVX2-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3]
    987 ; AVX2-NEXT:    retq
    988 ;
    989 ; AVX512F-LABEL: mload_constmask_v4i32:
    990 ; AVX512F:       ## BB#0:
    991 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm1 = [0,4294967295,4294967295,4294967295]
    992 ; AVX512F-NEXT:    vpmaskmovd (%rdi), %xmm1, %xmm2
    993 ; AVX512F-NEXT:    vblendvps %xmm1, %xmm2, %xmm0, %xmm0
    994 ; AVX512F-NEXT:    retq
    995 ;
    996 ; SKX-LABEL: mload_constmask_v4i32:
    997 ; SKX:       ## BB#0:
    998 ; SKX-NEXT:    movb $14, %al
    999 ; SKX-NEXT:    kmovw %eax, %k1
   1000 ; SKX-NEXT:    vmovdqu32 (%rdi), %xmm0 {%k1}
   1001 ; SKX-NEXT:    retq
   1002   %res = call <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %addr, i32 4, <4 x i1> <i1 0, i1 1, i1 1, i1 1>, <4 x i32> %dst)
   1003   ret <4 x i32> %res
   1004 }
   1005 
   1006 ; 256-bit FP vectors are supported with AVX.
   1007 
   1008 define <8 x float> @mload_constmask_v8f32(<8 x float>* %addr, <8 x float> %dst) {
   1009 ; AVX-LABEL: mload_constmask_v8f32:
   1010 ; AVX:       ## BB#0:
   1011 ; AVX-NEXT:    vmovaps {{.*#+}} ymm1 = [4294967295,4294967295,4294967295,0,0,0,0,0]
   1012 ; AVX-NEXT:    vmaskmovps (%rdi), %ymm1, %ymm1
   1013 ; AVX-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3,4,5,6,7]
   1014 ; AVX-NEXT:    retq
   1015 ;
   1016 ; AVX512F-LABEL: mload_constmask_v8f32:
   1017 ; AVX512F:       ## BB#0:
   1018 ; AVX512F-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<def>
   1019 ; AVX512F-NEXT:    movw $7, %ax
   1020 ; AVX512F-NEXT:    kmovw %eax, %k1
   1021 ; AVX512F-NEXT:    vmovups (%rdi), %zmm0 {%k1}
   1022 ; AVX512F-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<kill>
   1023 ; AVX512F-NEXT:    retq
   1024 ;
   1025 ; SKX-LABEL: mload_constmask_v8f32:
   1026 ; SKX:       ## BB#0:
   1027 ; SKX-NEXT:    movb $7, %al
   1028 ; SKX-NEXT:    kmovw %eax, %k1
   1029 ; SKX-NEXT:    vmovups (%rdi), %ymm0 {%k1}
   1030 ; SKX-NEXT:    retq
   1031   %res = call <8 x float> @llvm.masked.load.v8f32.p0v8f32(<8 x float>* %addr, i32 4, <8 x i1> <i1 1, i1 1, i1 1, i1 0, i1 0, i1 0, i1 0, i1 0>, <8 x float> %dst)
   1032   ret <8 x float> %res
   1033 }
   1034 
   1035 define <4 x double> @mload_constmask_v4f64(<4 x double>* %addr, <4 x double> %dst) {
   1036 ; AVX-LABEL: mload_constmask_v4f64:
   1037 ; AVX:       ## BB#0:
   1038 ; AVX-NEXT:    vmovapd {{.*#+}} ymm1 = [18446744073709551615,18446744073709551615,18446744073709551615,0]
   1039 ; AVX-NEXT:    vmaskmovpd (%rdi), %ymm1, %ymm1
   1040 ; AVX-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3]
   1041 ; AVX-NEXT:    retq
   1042 ;
   1043 ; AVX512F-LABEL: mload_constmask_v4f64:
   1044 ; AVX512F:       ## BB#0:
   1045 ; AVX512F-NEXT:    vmovapd {{.*#+}} ymm1 = [18446744073709551615,18446744073709551615,18446744073709551615,0]
   1046 ; AVX512F-NEXT:    vmaskmovpd (%rdi), %ymm1, %ymm2
   1047 ; AVX512F-NEXT:    vblendvpd %ymm1, %ymm2, %ymm0, %ymm0
   1048 ; AVX512F-NEXT:    retq
   1049 ;
   1050 ; SKX-LABEL: mload_constmask_v4f64:
   1051 ; SKX:       ## BB#0:
   1052 ; SKX-NEXT:    movb $7, %al
   1053 ; SKX-NEXT:    kmovw %eax, %k1
   1054 ; SKX-NEXT:    vmovupd (%rdi), %ymm0 {%k1}
   1055 ; SKX-NEXT:    retq
   1056   %res = call <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %addr, i32 4, <4 x i1> <i1 1, i1 1, i1 1, i1 0>, <4 x double> %dst)
   1057   ret <4 x double> %res
   1058 }
   1059 
   1060 ; 256-bit integer vectors are supported with AVX2.
   1061 
   1062 define <8 x i32> @mload_constmask_v8i32(<8 x i32>* %addr, <8 x i32> %dst) {
   1063 ; AVX1-LABEL: mload_constmask_v8i32:
   1064 ; AVX1:       ## BB#0:
   1065 ; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = mem[0,1,2],ymm0[3,4,5,6],mem[7]
   1066 ; AVX1-NEXT:    retq
   1067 ;
   1068 ; AVX2-LABEL: mload_constmask_v8i32:
   1069 ; AVX2:       ## BB#0:
   1070 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = mem[0,1,2],ymm0[3,4,5,6],mem[7]
   1071 ; AVX2-NEXT:    retq
   1072 ;
   1073 ; AVX512F-LABEL: mload_constmask_v8i32:
   1074 ; AVX512F:       ## BB#0:
   1075 ; AVX512F-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<def>
   1076 ; AVX512F-NEXT:    movw $135, %ax
   1077 ; AVX512F-NEXT:    kmovw %eax, %k1
   1078 ; AVX512F-NEXT:    vmovdqu32 (%rdi), %zmm0 {%k1}
   1079 ; AVX512F-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<kill>
   1080 ; AVX512F-NEXT:    retq
   1081 ;
   1082 ; SKX-LABEL: mload_constmask_v8i32:
   1083 ; SKX:       ## BB#0:
   1084 ; SKX-NEXT:    movb $-121, %al
   1085 ; SKX-NEXT:    kmovw %eax, %k1
   1086 ; SKX-NEXT:    vmovdqu32 (%rdi), %ymm0 {%k1}
   1087 ; SKX-NEXT:    retq
   1088   %res = call <8 x i32> @llvm.masked.load.v8i32.p0v8i32(<8 x i32>* %addr, i32 4, <8 x i1> <i1 1, i1 1, i1 1, i1 0, i1 0, i1 0, i1 0, i1 1>, <8 x i32> %dst)
   1089   ret <8 x i32> %res
   1090 }
   1091 
   1092 define <4 x i64> @mload_constmask_v4i64(<4 x i64>* %addr, <4 x i64> %dst) {
   1093 ; AVX1-LABEL: mload_constmask_v4i64:
   1094 ; AVX1:       ## BB#0:
   1095 ; AVX1-NEXT:    vblendpd {{.*#+}} ymm0 = mem[0],ymm0[1,2],mem[3]
   1096 ; AVX1-NEXT:    retq
   1097 ;
   1098 ; AVX2-LABEL: mload_constmask_v4i64:
   1099 ; AVX2:       ## BB#0:
   1100 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = mem[0,1],ymm0[2,3,4,5],mem[6,7]
   1101 ; AVX2-NEXT:    retq
   1102 ;
   1103 ; AVX512F-LABEL: mload_constmask_v4i64:
   1104 ; AVX512F:       ## BB#0:
   1105 ; AVX512F-NEXT:    vmovdqa {{.*#+}} ymm1 = [18446744073709551615,0,0,18446744073709551615]
   1106 ; AVX512F-NEXT:    vpmaskmovq (%rdi), %ymm1, %ymm2
   1107 ; AVX512F-NEXT:    vblendvpd %ymm1, %ymm2, %ymm0, %ymm0
   1108 ; AVX512F-NEXT:    retq
   1109 ;
   1110 ; SKX-LABEL: mload_constmask_v4i64:
   1111 ; SKX:       ## BB#0:
   1112 ; SKX-NEXT:    movb $9, %al
   1113 ; SKX-NEXT:    kmovw %eax, %k1
   1114 ; SKX-NEXT:    vmovdqu64 (%rdi), %ymm0 {%k1}
   1115 ; SKX-NEXT:    retq
   1116   %res = call <4 x i64> @llvm.masked.load.v4i64.p0v4i64(<4 x i64>* %addr, i32 4, <4 x i1> <i1 1, i1 0, i1 0, i1 1>, <4 x i64> %dst)
   1117   ret <4 x i64> %res
   1118 }
   1119 
   1120 ; 512-bit FP vectors are supported with AVX512.
   1121 
   1122 define <8 x double> @mload_constmask_v8f64(<8 x double>* %addr, <8 x double> %dst) {
   1123 ; AVX-LABEL: mload_constmask_v8f64:
   1124 ; AVX:       ## BB#0:
   1125 ; AVX-NEXT:    vblendpd {{.*#+}} ymm1 = ymm1[0,1,2],mem[3]
   1126 ; AVX-NEXT:    vblendpd {{.*#+}} ymm0 = mem[0,1,2],ymm0[3]
   1127 ; AVX-NEXT:    retq
   1128 ;
   1129 ; AVX512-LABEL: mload_constmask_v8f64:
   1130 ; AVX512:       ## BB#0:
   1131 ; AVX512-NEXT:    movb $-121, %al
   1132 ; AVX512-NEXT:    kmovw %eax, %k1
   1133 ; AVX512-NEXT:    vmovupd (%rdi), %zmm0 {%k1}
   1134 ; AVX512-NEXT:    retq
   1135   %res = call <8 x double> @llvm.masked.load.v8f64.p0v8f64(<8 x double>* %addr, i32 4, <8 x i1> <i1 1, i1 1, i1 1, i1 0, i1 0, i1 0, i1 0, i1 1>, <8 x double> %dst)
   1136   ret <8 x double> %res
   1137 }
   1138 
   1139 ; If the pass-through operand is undef, no blend is needed.
   1140 
   1141 define <4 x double> @mload_constmask_v4f64_undef_passthrough(<4 x double>* %addr) {
   1142 ; AVX-LABEL: mload_constmask_v4f64_undef_passthrough:
   1143 ; AVX:       ## BB#0:
   1144 ; AVX-NEXT:    vmovapd {{.*#+}} ymm0 = [18446744073709551615,18446744073709551615,18446744073709551615,0]
   1145 ; AVX-NEXT:    vmaskmovpd (%rdi), %ymm0, %ymm0
   1146 ; AVX-NEXT:    retq
   1147 ;
   1148 ; AVX512F-LABEL: mload_constmask_v4f64_undef_passthrough:
   1149 ; AVX512F:       ## BB#0:
   1150 ; AVX512F-NEXT:    vmovapd {{.*#+}} ymm0 = [18446744073709551615,18446744073709551615,18446744073709551615,0]
   1151 ; AVX512F-NEXT:    vmaskmovpd (%rdi), %ymm0, %ymm0
   1152 ; AVX512F-NEXT:    retq
   1153 ;
   1154 ; SKX-LABEL: mload_constmask_v4f64_undef_passthrough:
   1155 ; SKX:       ## BB#0:
   1156 ; SKX-NEXT:    movb $7, %al
   1157 ; SKX-NEXT:    kmovw %eax, %k1
   1158 ; SKX-NEXT:    vmovupd (%rdi), %ymm0 {%k1} {z}
   1159 ; SKX-NEXT:    retq
   1160   %res = call <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %addr, i32 4, <4 x i1> <i1 1, i1 1, i1 1, i1 0>, <4 x double> undef)
   1161   ret <4 x double> %res
   1162 }
   1163 
   1164 define <4 x i64> @mload_constmask_v4i64_undef_passthrough(<4 x i64>* %addr) {
   1165 ; AVX1-LABEL: mload_constmask_v4i64_undef_passthrough:
   1166 ; AVX1:       ## BB#0:
   1167 ; AVX1-NEXT:    vmovapd {{.*#+}} ymm0 = [0,18446744073709551615,18446744073709551615,0]
   1168 ; AVX1-NEXT:    vmaskmovpd (%rdi), %ymm0, %ymm0
   1169 ; AVX1-NEXT:    retq
   1170 ;
   1171 ; AVX2-LABEL: mload_constmask_v4i64_undef_passthrough:
   1172 ; AVX2:       ## BB#0:
   1173 ; AVX2-NEXT:    vmovdqa {{.*#+}} ymm0 = [0,18446744073709551615,18446744073709551615,0]
   1174 ; AVX2-NEXT:    vpmaskmovq (%rdi), %ymm0, %ymm0
   1175 ; AVX2-NEXT:    retq
   1176 ;
   1177 ; AVX512F-LABEL: mload_constmask_v4i64_undef_passthrough:
   1178 ; AVX512F:       ## BB#0:
   1179 ; AVX512F-NEXT:    vmovdqa {{.*#+}} ymm0 = [0,18446744073709551615,18446744073709551615,0]
   1180 ; AVX512F-NEXT:    vpmaskmovq (%rdi), %ymm0, %ymm0
   1181 ; AVX512F-NEXT:    retq
   1182 ;
   1183 ; SKX-LABEL: mload_constmask_v4i64_undef_passthrough:
   1184 ; SKX:       ## BB#0:
   1185 ; SKX-NEXT:    movb $6, %al
   1186 ; SKX-NEXT:    kmovw %eax, %k1
   1187 ; SKX-NEXT:    vmovdqu64 (%rdi), %ymm0 {%k1} {z}
   1188 ; SKX-NEXT:    retq
   1189   %res = call <4 x i64> @llvm.masked.load.v4i64.p0v4i64(<4 x i64>* %addr, i32 4, <4 x i1> <i1 0, i1 1, i1 1, i1 0>, <4 x i64> undef)
   1190   ret <4 x i64> %res
   1191 }
   1192 
   1193 define void @test21(<4 x i32> %trigger, <4 x i32>* %addr, <4 x i32> %val) {
   1194 ; AVX1-LABEL: test21:
   1195 ; AVX1:       ## BB#0:
   1196 ; AVX1-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0
   1197 ; AVX1-NEXT:    vmaskmovps %xmm1, %xmm0, (%rdi)
   1198 ; AVX1-NEXT:    retq
   1199 ;
   1200 ; AVX2-LABEL: test21:
   1201 ; AVX2:       ## BB#0:
   1202 ; AVX2-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0
   1203 ; AVX2-NEXT:    vpmaskmovd %xmm1, %xmm0, (%rdi)
   1204 ; AVX2-NEXT:    retq
   1205 ;
   1206 ; AVX512F-LABEL: test21:
   1207 ; AVX512F:       ## BB#0:
   1208 ; AVX512F-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0
   1209 ; AVX512F-NEXT:    vpmaskmovd %xmm1, %xmm0, (%rdi)
   1210 ; AVX512F-NEXT:    retq
   1211 ;
   1212 ; SKX-LABEL: test21:
   1213 ; SKX:       ## BB#0:
   1214 ; SKX-NEXT:    kxnorw %k0, %k0, %k1
   1215 ; SKX-NEXT:    vmovdqu32 %xmm1, (%rdi) {%k1}
   1216 ; SKX-NEXT:    retq
   1217   %mask = icmp eq <4 x i32> %trigger, zeroinitializer
   1218   call void @llvm.masked.store.v4i32.p0v4i32(<4 x i32>%val, <4 x i32>* %addr, i32 4, <4 x i1><i1 true, i1 true, i1 true, i1 true>)
   1219   ret void
   1220 }
   1221 
   1222 ;  When only one element of the mask is set, reduce to a scalar store.
   1223 
   1224 define void @one_mask_bit_set1(<4 x i32>* %addr, <4 x i32> %val) {
   1225 ; AVX-LABEL: one_mask_bit_set1:
   1226 ; AVX:       ## BB#0:
   1227 ; AVX-NEXT:    vmovd %xmm0, (%rdi)
   1228 ; AVX-NEXT:    retq
   1229 ;
   1230 ; AVX512-LABEL: one_mask_bit_set1:
   1231 ; AVX512:       ## BB#0:
   1232 ; AVX512-NEXT:    vmovd %xmm0, (%rdi)
   1233 ; AVX512-NEXT:    retq
   1234   call void @llvm.masked.store.v4i32.p0v4i32(<4 x i32> %val, <4 x i32>* %addr, i32 4, <4 x i1><i1 true, i1 false, i1 false, i1 false>)
   1235   ret void
   1236 }
   1237 
   1238 ; Choose a different element to show that the correct address offset is produced.
   1239 
   1240 define void @one_mask_bit_set2(<4 x float>* %addr, <4 x float> %val) {
   1241 ; AVX-LABEL: one_mask_bit_set2:
   1242 ; AVX:       ## BB#0:
   1243 ; AVX-NEXT:    vextractps $2, %xmm0, 8(%rdi)
   1244 ; AVX-NEXT:    retq
   1245 ;
   1246 ; AVX512-LABEL: one_mask_bit_set2:
   1247 ; AVX512:       ## BB#0:
   1248 ; AVX512-NEXT:    vextractps $2, %xmm0, 8(%rdi)
   1249 ; AVX512-NEXT:    retq
   1250   call void @llvm.masked.store.v4f32.p0v4f32(<4 x float> %val, <4 x float>* %addr, i32 4, <4 x i1><i1 false, i1 false, i1 true, i1 false>)
   1251   ret void
   1252 }
   1253 
   1254 ; Choose a different scalar type and a high element of a 256-bit vector because AVX doesn't support those evenly.
   1255 
   1256 define void @one_mask_bit_set3(<4 x i64>* %addr, <4 x i64> %val) {
   1257 ; AVX-LABEL: one_mask_bit_set3:
   1258 ; AVX:       ## BB#0:
   1259 ; AVX-NEXT:    vextractf128 $1, %ymm0, %xmm0
   1260 ; AVX-NEXT:    vmovlps %xmm0, 16(%rdi)
   1261 ; AVX-NEXT:    vzeroupper
   1262 ; AVX-NEXT:    retq
   1263 ;
   1264 ; AVX512F-LABEL: one_mask_bit_set3:
   1265 ; AVX512F:       ## BB#0:
   1266 ; AVX512F-NEXT:    vextractf128 $1, %ymm0, %xmm0
   1267 ; AVX512F-NEXT:    vmovq %xmm0, 16(%rdi)
   1268 ; AVX512F-NEXT:    retq
   1269 ;
   1270 ; SKX-LABEL: one_mask_bit_set3:
   1271 ; SKX:       ## BB#0:
   1272 ; SKX-NEXT:    vextracti32x4 $1, %ymm0, %xmm0
   1273 ; SKX-NEXT:    vmovq %xmm0, 16(%rdi)
   1274 ; SKX-NEXT:    retq
   1275   call void @llvm.masked.store.v4i64.p0v4i64(<4 x i64> %val, <4 x i64>* %addr, i32 4, <4 x i1><i1 false, i1 false, i1 true, i1 false>)
   1276   ret void
   1277 }
   1278 
   1279 ; Choose a different scalar type and a high element of a 256-bit vector because AVX doesn't support those evenly.
   1280 
   1281 define void @one_mask_bit_set4(<4 x double>* %addr, <4 x double> %val) {
   1282 ; AVX-LABEL: one_mask_bit_set4:
   1283 ; AVX:       ## BB#0:
   1284 ; AVX-NEXT:    vextractf128 $1, %ymm0, %xmm0
   1285 ; AVX-NEXT:    vmovhpd %xmm0, 24(%rdi)
   1286 ; AVX-NEXT:    vzeroupper
   1287 ; AVX-NEXT:    retq
   1288 ;
   1289 ; AVX512F-LABEL: one_mask_bit_set4:
   1290 ; AVX512F:       ## BB#0:
   1291 ; AVX512F-NEXT:    vextractf128 $1, %ymm0, %xmm0
   1292 ; AVX512F-NEXT:    vmovhpd %xmm0, 24(%rdi)
   1293 ; AVX512F-NEXT:    retq
   1294 ;
   1295 ; SKX-LABEL: one_mask_bit_set4:
   1296 ; SKX:       ## BB#0:
   1297 ; SKX-NEXT:    vextractf32x4 $1, %ymm0, %xmm0
   1298 ; SKX-NEXT:    vmovhpd %xmm0, 24(%rdi)
   1299 ; SKX-NEXT:    retq
   1300   call void @llvm.masked.store.v4f64.p0v4f64(<4 x double> %val, <4 x double>* %addr, i32 4, <4 x i1><i1 false, i1 false, i1 false, i1 true>)
   1301   ret void
   1302 }
   1303 
   1304 ; Try a 512-bit vector to make sure AVX doesn't die and AVX512 works as expected.
   1305 
   1306 define void @one_mask_bit_set5(<8 x double>* %addr, <8 x double> %val) {
   1307 ; AVX-LABEL: one_mask_bit_set5:
   1308 ; AVX:       ## BB#0:
   1309 ; AVX-NEXT:    vextractf128 $1, %ymm1, %xmm0
   1310 ; AVX-NEXT:    vmovlps %xmm0, 48(%rdi)
   1311 ; AVX-NEXT:    vzeroupper
   1312 ; AVX-NEXT:    retq
   1313 ;
   1314 ; AVX512-LABEL: one_mask_bit_set5:
   1315 ; AVX512:       ## BB#0:
   1316 ; AVX512-NEXT:    vextractf32x4 $3, %zmm0, %xmm0
   1317 ; AVX512-NEXT:    vmovlpd %xmm0, 48(%rdi)
   1318 ; AVX512-NEXT:    retq
   1319   call void @llvm.masked.store.v8f64.p0v8f64(<8 x double> %val, <8 x double>* %addr, i32 4, <8 x i1><i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 true, i1 false>)
   1320   ret void
   1321 }
   1322 
   1323 ;  When only one element of the mask is set, reduce to a scalar load.
   1324 
   1325 define <4 x i32> @load_one_mask_bit_set1(<4 x i32>* %addr, <4 x i32> %val) {
   1326 ; AVX-LABEL: load_one_mask_bit_set1:
   1327 ; AVX:       ## BB#0:
   1328 ; AVX-NEXT:    vpinsrd $0, (%rdi), %xmm0, %xmm0
   1329 ; AVX-NEXT:    retq
   1330 ;
   1331 ; AVX512-LABEL: load_one_mask_bit_set1:
   1332 ; AVX512:       ## BB#0:
   1333 ; AVX512-NEXT:    vpinsrd $0, (%rdi), %xmm0, %xmm0
   1334 ; AVX512-NEXT:    retq
   1335   %res = call <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %addr, i32 4, <4 x i1><i1 true, i1 false, i1 false, i1 false>, <4 x i32> %val)
   1336   ret <4 x i32> %res
   1337 }
   1338 
   1339 ; Choose a different element to show that the correct address offset is produced.
   1340 
   1341 define <4 x float> @load_one_mask_bit_set2(<4 x float>* %addr, <4 x float> %val) {
   1342 ; AVX-LABEL: load_one_mask_bit_set2:
   1343 ; AVX:       ## BB#0:
   1344 ; AVX-NEXT:    vinsertps {{.*#+}} xmm0 = xmm0[0,1],mem[0],xmm0[3]
   1345 ; AVX-NEXT:    retq
   1346 ;
   1347 ; AVX512-LABEL: load_one_mask_bit_set2:
   1348 ; AVX512:       ## BB#0:
   1349 ; AVX512-NEXT:    vinsertps {{.*#+}} xmm0 = xmm0[0,1],mem[0],xmm0[3]
   1350 ; AVX512-NEXT:    retq
   1351   %res = call <4 x float> @llvm.masked.load.v4f32.p0v4f32(<4 x float>* %addr, i32 4, <4 x i1><i1 false, i1 false, i1 true, i1 false>, <4 x float> %val)
   1352   ret <4 x float> %res
   1353 }
   1354 
   1355 ; Choose a different scalar type and a high element of a 256-bit vector because AVX doesn't support those evenly.
   1356 
   1357 define <4 x i64> @load_one_mask_bit_set3(<4 x i64>* %addr, <4 x i64> %val) {
   1358 ; AVX1-LABEL: load_one_mask_bit_set3:
   1359 ; AVX1:       ## BB#0:
   1360 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
   1361 ; AVX1-NEXT:    vpinsrq $0, 16(%rdi), %xmm1, %xmm1
   1362 ; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
   1363 ; AVX1-NEXT:    retq
   1364 ;
   1365 ; AVX2-LABEL: load_one_mask_bit_set3:
   1366 ; AVX2:       ## BB#0:
   1367 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
   1368 ; AVX2-NEXT:    vpinsrq $0, 16(%rdi), %xmm1, %xmm1
   1369 ; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   1370 ; AVX2-NEXT:    retq
   1371 ;
   1372 ; AVX512F-LABEL: load_one_mask_bit_set3:
   1373 ; AVX512F:       ## BB#0:
   1374 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
   1375 ; AVX512F-NEXT:    vpinsrq $0, 16(%rdi), %xmm1, %xmm1
   1376 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   1377 ; AVX512F-NEXT:    retq
   1378 ;
   1379 ; SKX-LABEL: load_one_mask_bit_set3:
   1380 ; SKX:       ## BB#0:
   1381 ; SKX-NEXT:    vextracti32x4 $1, %ymm0, %xmm1
   1382 ; SKX-NEXT:    vpinsrq $0, 16(%rdi), %xmm1, %xmm1
   1383 ; SKX-NEXT:    vinserti32x4 $1, %xmm1, %ymm0, %ymm0
   1384 ; SKX-NEXT:    retq
   1385   %res = call <4 x i64> @llvm.masked.load.v4i64.p0v4i64(<4 x i64>* %addr, i32 4, <4 x i1><i1 false, i1 false, i1 true, i1 false>, <4 x i64> %val)
   1386   ret <4 x i64> %res
   1387 }
   1388 
   1389 ; Choose a different scalar type and a high element of a 256-bit vector because AVX doesn't support those evenly.
   1390 
   1391 define <4 x double> @load_one_mask_bit_set4(<4 x double>* %addr, <4 x double> %val) {
   1392 ; AVX-LABEL: load_one_mask_bit_set4:
   1393 ; AVX:       ## BB#0:
   1394 ; AVX-NEXT:    vextractf128 $1, %ymm0, %xmm1
   1395 ; AVX-NEXT:    vmovhpd {{.*#+}} xmm1 = xmm1[0],mem[0]
   1396 ; AVX-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
   1397 ; AVX-NEXT:    retq
   1398 ;
   1399 ; AVX512F-LABEL: load_one_mask_bit_set4:
   1400 ; AVX512F:       ## BB#0:
   1401 ; AVX512F-NEXT:    vextractf128 $1, %ymm0, %xmm1
   1402 ; AVX512F-NEXT:    vmovhpd {{.*#+}} xmm1 = xmm1[0],mem[0]
   1403 ; AVX512F-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
   1404 ; AVX512F-NEXT:    retq
   1405 ;
   1406 ; SKX-LABEL: load_one_mask_bit_set4:
   1407 ; SKX:       ## BB#0:
   1408 ; SKX-NEXT:    vextractf32x4 $1, %ymm0, %xmm1
   1409 ; SKX-NEXT:    vmovhpd {{.*#+}} xmm1 = xmm1[0],mem[0]
   1410 ; SKX-NEXT:    vinsertf32x4 $1, %xmm1, %ymm0, %ymm0
   1411 ; SKX-NEXT:    retq
   1412   %res = call <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %addr, i32 4, <4 x i1><i1 false, i1 false, i1 false, i1 true>, <4 x double> %val)
   1413   ret <4 x double> %res
   1414 }
   1415 
   1416 ; Try a 512-bit vector to make sure AVX doesn't die and AVX512 works as expected.
   1417 
   1418 define <8 x double> @load_one_mask_bit_set5(<8 x double>* %addr, <8 x double> %val) {
   1419 ; AVX-LABEL: load_one_mask_bit_set5:
   1420 ; AVX:       ## BB#0:
   1421 ; AVX-NEXT:    vextractf128 $1, %ymm1, %xmm2
   1422 ; AVX-NEXT:    vmovsd {{.*#+}} xmm3 = mem[0],zero
   1423 ; AVX-NEXT:    vunpcklpd {{.*#+}} xmm2 = xmm2[0],xmm3[0]
   1424 ; AVX-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm1
   1425 ; AVX-NEXT:    retq
   1426 ;
   1427 ; AVX512-LABEL: load_one_mask_bit_set5:
   1428 ; AVX512:       ## BB#0:
   1429 ; AVX512-NEXT:    vextractf32x4 $3, %zmm0, %xmm1
   1430 ; AVX512-NEXT:    vmovhpd {{.*#+}} xmm1 = xmm1[0],mem[0]
   1431 ; AVX512-NEXT:    vinsertf32x4 $3, %xmm1, %zmm0, %zmm0
   1432 ; AVX512-NEXT:    retq
   1433   %res = call <8 x double> @llvm.masked.load.v8f64.p0v8f64(<8 x double>* %addr, i32 4, <8 x i1><i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 true>, <8 x double> %val)
   1434   ret <8 x double> %res
   1435 }
   1436 
   1437 declare <16 x i32> @llvm.masked.load.v16i32.p0v16i32(<16 x i32>*, i32, <16 x i1>, <16 x i32>)
   1438 declare <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>*, i32, <4 x i1>, <4 x i32>)
   1439 declare <2 x i32> @llvm.masked.load.v2i32.p0v2i32(<2 x i32>*, i32, <2 x i1>, <2 x i32>)
   1440 declare <4 x i64> @llvm.masked.load.v4i64.p0v4i64(<4 x i64>*, i32, <4 x i1>, <4 x i64>)
   1441 declare void @llvm.masked.store.v16i32.p0v16i32(<16 x i32>, <16 x i32>*, i32, <16 x i1>)
   1442 declare void @llvm.masked.store.v8i32.p0v8i32(<8 x i32>, <8 x i32>*, i32, <8 x i1>)
   1443 declare void @llvm.masked.store.v4i32.p0v4i32(<4 x i32>, <4 x i32>*, i32, <4 x i1>)
   1444 declare void @llvm.masked.store.v4i64.p0v4i64(<4 x i64>, <4 x i64>*, i32, <4 x i1>)
   1445 declare void @llvm.masked.store.v2f32.p0v2f32(<2 x float>, <2 x float>*, i32, <2 x i1>)
   1446 declare void @llvm.masked.store.v2i32.p0v2i32(<2 x i32>, <2 x i32>*, i32, <2 x i1>)
   1447 declare void @llvm.masked.store.v4f32.p0v4f32(<4 x float>, <4 x float>*, i32, <4 x i1>)
   1448 declare void @llvm.masked.store.v16f32.p0v16f32(<16 x float>, <16 x float>*, i32, <16 x i1>)
   1449 declare <16 x float> @llvm.masked.load.v16f32.p0v16f32(<16 x float>*, i32, <16 x i1>, <16 x float>)
   1450 declare <8 x float> @llvm.masked.load.v8f32.p0v8f32(<8 x float>*, i32, <8 x i1>, <8 x float>)
   1451 declare <8 x i32> @llvm.masked.load.v8i32.p0v8i32(<8 x i32>*, i32, <8 x i1>, <8 x i32>)
   1452 declare <4 x float> @llvm.masked.load.v4f32.p0v4f32(<4 x float>*, i32, <4 x i1>, <4 x float>)
   1453 declare <2 x float> @llvm.masked.load.v2f32.p0v2f32(<2 x float>*, i32, <2 x i1>, <2 x float>)
   1454 declare <8 x double> @llvm.masked.load.v8f64.p0v8f64(<8 x double>*, i32, <8 x i1>, <8 x double>)
   1455 declare <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>*, i32, <4 x i1>, <4 x double>)
   1456 declare <2 x double> @llvm.masked.load.v2f64.p0v2f64(<2 x double>*, i32, <2 x i1>, <2 x double>)
   1457 declare void @llvm.masked.store.v8f64.p0v8f64(<8 x double>, <8 x double>*, i32, <8 x i1>)
   1458 declare void @llvm.masked.store.v4f64.p0v4f64(<4 x double>, <4 x double>*, i32, <4 x i1>)
   1459 declare void @llvm.masked.store.v2f64.p0v2f64(<2 x double>, <2 x double>*, i32, <2 x i1>)
   1460 declare void @llvm.masked.store.v2i64.p0v2i64(<2 x i64>, <2 x i64>*, i32, <2 x i1>)
   1461 
   1462 declare <16 x i32*> @llvm.masked.load.v16p0i32.p0v16p0i32(<16 x i32*>*, i32, <16 x i1>, <16 x i32*>)
   1463 
   1464 define <16 x i32*> @test23(<16 x i32*> %trigger, <16 x i32*>* %addr) {
   1465 ; AVX1-LABEL: test23:
   1466 ; AVX1:       ## BB#0:
   1467 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm4
   1468 ; AVX1-NEXT:    vpxor %xmm5, %xmm5, %xmm5
   1469 ; AVX1-NEXT:    vpcmpeqq %xmm5, %xmm4, %xmm4
   1470 ; AVX1-NEXT:    vpcmpeqq %xmm5, %xmm0, %xmm0
   1471 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm0
   1472 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm4
   1473 ; AVX1-NEXT:    vpcmpeqq %xmm5, %xmm4, %xmm4
   1474 ; AVX1-NEXT:    vpcmpeqq %xmm5, %xmm1, %xmm1
   1475 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm1, %ymm1
   1476 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm4
   1477 ; AVX1-NEXT:    vpcmpeqq %xmm5, %xmm4, %xmm4
   1478 ; AVX1-NEXT:    vpcmpeqq %xmm5, %xmm2, %xmm2
   1479 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm2, %ymm2
   1480 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   1481 ; AVX1-NEXT:    vpcmpeqq %xmm5, %xmm4, %xmm4
   1482 ; AVX1-NEXT:    vpcmpeqq %xmm5, %xmm3, %xmm3
   1483 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   1484 ; AVX1-NEXT:    vmaskmovpd 96(%rdi), %ymm3, %ymm3
   1485 ; AVX1-NEXT:    vmaskmovpd 64(%rdi), %ymm2, %ymm2
   1486 ; AVX1-NEXT:    vmaskmovpd 32(%rdi), %ymm1, %ymm1
   1487 ; AVX1-NEXT:    vmaskmovpd (%rdi), %ymm0, %ymm0
   1488 ; AVX1-NEXT:    retq
   1489 ;
   1490 ; AVX2-LABEL: test23:
   1491 ; AVX2:       ## BB#0:
   1492 ; AVX2-NEXT:    vpxor %ymm4, %ymm4, %ymm4
   1493 ; AVX2-NEXT:    vpcmpeqq %ymm4, %ymm0, %ymm0
   1494 ; AVX2-NEXT:    vpcmpeqq %ymm4, %ymm1, %ymm1
   1495 ; AVX2-NEXT:    vpcmpeqq %ymm4, %ymm2, %ymm2
   1496 ; AVX2-NEXT:    vpcmpeqq %ymm4, %ymm3, %ymm3
   1497 ; AVX2-NEXT:    vpmaskmovq 96(%rdi), %ymm3, %ymm3
   1498 ; AVX2-NEXT:    vpmaskmovq 64(%rdi), %ymm2, %ymm2
   1499 ; AVX2-NEXT:    vpmaskmovq 32(%rdi), %ymm1, %ymm1
   1500 ; AVX2-NEXT:    vpmaskmovq (%rdi), %ymm0, %ymm0
   1501 ; AVX2-NEXT:    retq
   1502 ;
   1503 ; AVX512-LABEL: test23:
   1504 ; AVX512:       ## BB#0:
   1505 ; AVX512-NEXT:    vpxord %zmm2, %zmm2, %zmm2
   1506 ; AVX512-NEXT:    vpcmpeqq %zmm2, %zmm0, %k1
   1507 ; AVX512-NEXT:    vpcmpeqq %zmm2, %zmm1, %k2
   1508 ; AVX512-NEXT:    vmovdqu64 64(%rdi), %zmm1 {%k2} {z}
   1509 ; AVX512-NEXT:    vmovdqu64 (%rdi), %zmm0 {%k1} {z}
   1510 ; AVX512-NEXT:    retq
   1511   %mask = icmp eq <16 x i32*> %trigger, zeroinitializer
   1512   %res = call <16 x i32*> @llvm.masked.load.v16p0i32.p0v16p0i32(<16 x i32*>* %addr, i32 4, <16 x i1>%mask, <16 x i32*>zeroinitializer)
   1513   ret <16 x i32*> %res
   1514 }
   1515 
   1516 %mystruct = type { i16, i16, [1 x i8*] }
   1517 
   1518 declare <16 x %mystruct*> @llvm.masked.load.v16p0mystruct.p0v16p0mystruct(<16 x %mystruct*>*, i32, <16 x i1>, <16 x %mystruct*>)
   1519 
   1520 define <16 x %mystruct*> @test24(<16 x i1> %mask, <16 x %mystruct*>* %addr) {
   1521 ; AVX1-LABEL: test24:
   1522 ; AVX1:       ## BB#0:
   1523 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
   1524 ; AVX1-NEXT:    vpslld $31, %xmm1, %xmm1
   1525 ; AVX1-NEXT:    vpsrad $31, %xmm1, %xmm1
   1526 ; AVX1-NEXT:    vpmovsxdq %xmm1, %xmm2
   1527 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
   1528 ; AVX1-NEXT:    vpmovsxdq %xmm1, %xmm1
   1529 ; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm2, %ymm1
   1530 ; AVX1-NEXT:    vmaskmovpd (%rdi), %ymm1, %ymm4
   1531 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[3,1,2,3]
   1532 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero
   1533 ; AVX1-NEXT:    vpslld $31, %xmm1, %xmm1
   1534 ; AVX1-NEXT:    vpsrad $31, %xmm1, %xmm1
   1535 ; AVX1-NEXT:    vpmovsxdq %xmm1, %xmm2
   1536 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
   1537 ; AVX1-NEXT:    vpmovsxdq %xmm1, %xmm1
   1538 ; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm2, %ymm1
   1539 ; AVX1-NEXT:    vmaskmovpd 96(%rdi), %ymm1, %ymm3
   1540 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
   1541 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero
   1542 ; AVX1-NEXT:    vpslld $31, %xmm1, %xmm1
   1543 ; AVX1-NEXT:    vpsrad $31, %xmm1, %xmm1
   1544 ; AVX1-NEXT:    vpmovsxdq %xmm1, %xmm2
   1545 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
   1546 ; AVX1-NEXT:    vpmovsxdq %xmm1, %xmm1
   1547 ; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm2, %ymm1
   1548 ; AVX1-NEXT:    vmaskmovpd 64(%rdi), %ymm1, %ymm2
   1549 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
   1550 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
   1551 ; AVX1-NEXT:    vpslld $31, %xmm0, %xmm0
   1552 ; AVX1-NEXT:    vpsrad $31, %xmm0, %xmm0
   1553 ; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm1
   1554 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
   1555 ; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm0
   1556 ; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
   1557 ; AVX1-NEXT:    vmaskmovpd 32(%rdi), %ymm0, %ymm1
   1558 ; AVX1-NEXT:    vmovapd %ymm4, %ymm0
   1559 ; AVX1-NEXT:    retq
   1560 ;
   1561 ; AVX2-LABEL: test24:
   1562 ; AVX2:       ## BB#0:
   1563 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
   1564 ; AVX2-NEXT:    vpslld $31, %xmm1, %xmm1
   1565 ; AVX2-NEXT:    vpsrad $31, %xmm1, %xmm1
   1566 ; AVX2-NEXT:    vpmovsxdq %xmm1, %ymm1
   1567 ; AVX2-NEXT:    vpmaskmovq (%rdi), %ymm1, %ymm4
   1568 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[3,1,2,3]
   1569 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero
   1570 ; AVX2-NEXT:    vpslld $31, %xmm1, %xmm1
   1571 ; AVX2-NEXT:    vpsrad $31, %xmm1, %xmm1
   1572 ; AVX2-NEXT:    vpmovsxdq %xmm1, %ymm1
   1573 ; AVX2-NEXT:    vpmaskmovq 96(%rdi), %ymm1, %ymm3
   1574 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
   1575 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero
   1576 ; AVX2-NEXT:    vpslld $31, %xmm1, %xmm1
   1577 ; AVX2-NEXT:    vpsrad $31, %xmm1, %xmm1
   1578 ; AVX2-NEXT:    vpmovsxdq %xmm1, %ymm1
   1579 ; AVX2-NEXT:    vpmaskmovq 64(%rdi), %ymm1, %ymm2
   1580 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
   1581 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
   1582 ; AVX2-NEXT:    vpslld $31, %xmm0, %xmm0
   1583 ; AVX2-NEXT:    vpsrad $31, %xmm0, %xmm0
   1584 ; AVX2-NEXT:    vpmovsxdq %xmm0, %ymm0
   1585 ; AVX2-NEXT:    vpmaskmovq 32(%rdi), %ymm0, %ymm1
   1586 ; AVX2-NEXT:    vmovdqa %ymm4, %ymm0
   1587 ; AVX2-NEXT:    retq
   1588 ;
   1589 ; AVX512F-LABEL: test24:
   1590 ; AVX512F:       ## BB#0:
   1591 ; AVX512F-NEXT:    vpmovsxbd %xmm0, %zmm0
   1592 ; AVX512F-NEXT:    vpslld $31, %zmm0, %zmm0
   1593 ; AVX512F-NEXT:    vptestmd %zmm0, %zmm0, %k1
   1594 ; AVX512F-NEXT:    vmovdqu64 (%rdi), %zmm0 {%k1} {z}
   1595 ; AVX512F-NEXT:    kshiftrw $8, %k1, %k1
   1596 ; AVX512F-NEXT:    vmovdqu64 64(%rdi), %zmm1 {%k1} {z}
   1597 ; AVX512F-NEXT:    retq
   1598 ;
   1599 ; SKX-LABEL: test24:
   1600 ; SKX:       ## BB#0:
   1601 ; SKX-NEXT:    vpsllw $7, %xmm0, %xmm0
   1602 ; SKX-NEXT:    vpmovb2m %xmm0, %k1
   1603 ; SKX-NEXT:    vmovdqu64 (%rdi), %zmm0 {%k1} {z}
   1604 ; SKX-NEXT:    kshiftrw $8, %k1, %k1
   1605 ; SKX-NEXT:    vmovdqu64 64(%rdi), %zmm1 {%k1} {z}
   1606 ; SKX-NEXT:    retq
   1607   %res = call <16 x %mystruct*> @llvm.masked.load.v16p0mystruct.p0v16p0mystruct(<16 x %mystruct*>* %addr, i32 4, <16 x i1>%mask, <16 x %mystruct*>zeroinitializer)
   1608   ret <16 x %mystruct*> %res
   1609 }
   1610 
   1611 define void @test_store_16i64(<16 x i64>* %ptrs, <16 x i1> %mask, <16 x i64> %src0)  {
   1612 ; AVX1-LABEL: test_store_16i64:
   1613 ; AVX1:       ## BB#0:
   1614 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm5 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
   1615 ; AVX1-NEXT:    vpslld $31, %xmm5, %xmm5
   1616 ; AVX1-NEXT:    vpsrad $31, %xmm5, %xmm5
   1617 ; AVX1-NEXT:    vpmovsxdq %xmm5, %xmm6
   1618 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm5 = xmm5[2,3,0,1]
   1619 ; AVX1-NEXT:    vpmovsxdq %xmm5, %xmm5
   1620 ; AVX1-NEXT:    vinsertf128 $1, %xmm5, %ymm6, %ymm5
   1621 ; AVX1-NEXT:    vmaskmovpd %ymm1, %ymm5, (%rdi)
   1622 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[3,1,2,3]
   1623 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero
   1624 ; AVX1-NEXT:    vpslld $31, %xmm1, %xmm1
   1625 ; AVX1-NEXT:    vpsrad $31, %xmm1, %xmm1
   1626 ; AVX1-NEXT:    vpmovsxdq %xmm1, %xmm5
   1627 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
   1628 ; AVX1-NEXT:    vpmovsxdq %xmm1, %xmm1
   1629 ; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm5, %ymm1
   1630 ; AVX1-NEXT:    vmaskmovpd %ymm4, %ymm1, 96(%rdi)
   1631 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
   1632 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero
   1633 ; AVX1-NEXT:    vpslld $31, %xmm1, %xmm1
   1634 ; AVX1-NEXT:    vpsrad $31, %xmm1, %xmm1
   1635 ; AVX1-NEXT:    vpmovsxdq %xmm1, %xmm4
   1636 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
   1637 ; AVX1-NEXT:    vpmovsxdq %xmm1, %xmm1
   1638 ; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm4, %ymm1
   1639 ; AVX1-NEXT:    vmaskmovpd %ymm3, %ymm1, 64(%rdi)
   1640 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
   1641 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
   1642 ; AVX1-NEXT:    vpslld $31, %xmm0, %xmm0
   1643 ; AVX1-NEXT:    vpsrad $31, %xmm0, %xmm0
   1644 ; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm1
   1645 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
   1646 ; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm0
   1647 ; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
   1648 ; AVX1-NEXT:    vmaskmovpd %ymm2, %ymm0, 32(%rdi)
   1649 ; AVX1-NEXT:    vzeroupper
   1650 ; AVX1-NEXT:    retq
   1651 ;
   1652 ; AVX2-LABEL: test_store_16i64:
   1653 ; AVX2:       ## BB#0:
   1654 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm5 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
   1655 ; AVX2-NEXT:    vpslld $31, %xmm5, %xmm5
   1656 ; AVX2-NEXT:    vpsrad $31, %xmm5, %xmm5
   1657 ; AVX2-NEXT:    vpmovsxdq %xmm5, %ymm5
   1658 ; AVX2-NEXT:    vpmaskmovq %ymm1, %ymm5, (%rdi)
   1659 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[3,1,2,3]
   1660 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero
   1661 ; AVX2-NEXT:    vpslld $31, %xmm1, %xmm1
   1662 ; AVX2-NEXT:    vpsrad $31, %xmm1, %xmm1
   1663 ; AVX2-NEXT:    vpmovsxdq %xmm1, %ymm1
   1664 ; AVX2-NEXT:    vpmaskmovq %ymm4, %ymm1, 96(%rdi)
   1665 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
   1666 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero
   1667 ; AVX2-NEXT:    vpslld $31, %xmm1, %xmm1
   1668 ; AVX2-NEXT:    vpsrad $31, %xmm1, %xmm1
   1669 ; AVX2-NEXT:    vpmovsxdq %xmm1, %ymm1
   1670 ; AVX2-NEXT:    vpmaskmovq %ymm3, %ymm1, 64(%rdi)
   1671 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
   1672 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
   1673 ; AVX2-NEXT:    vpslld $31, %xmm0, %xmm0
   1674 ; AVX2-NEXT:    vpsrad $31, %xmm0, %xmm0
   1675 ; AVX2-NEXT:    vpmovsxdq %xmm0, %ymm0
   1676 ; AVX2-NEXT:    vpmaskmovq %ymm2, %ymm0, 32(%rdi)
   1677 ; AVX2-NEXT:    vzeroupper
   1678 ; AVX2-NEXT:    retq
   1679 ;
   1680 ; AVX512F-LABEL: test_store_16i64:
   1681 ; AVX512F:       ## BB#0:
   1682 ; AVX512F-NEXT:    vpmovsxbd %xmm0, %zmm0
   1683 ; AVX512F-NEXT:    vpslld $31, %zmm0, %zmm0
   1684 ; AVX512F-NEXT:    vptestmd %zmm0, %zmm0, %k1
   1685 ; AVX512F-NEXT:    vmovdqu64 %zmm1, (%rdi) {%k1}
   1686 ; AVX512F-NEXT:    kshiftrw $8, %k1, %k1
   1687 ; AVX512F-NEXT:    vmovdqu64 %zmm2, 64(%rdi) {%k1}
   1688 ; AVX512F-NEXT:    retq
   1689 ;
   1690 ; SKX-LABEL: test_store_16i64:
   1691 ; SKX:       ## BB#0:
   1692 ; SKX-NEXT:    vpsllw $7, %xmm0, %xmm0
   1693 ; SKX-NEXT:    vpmovb2m %xmm0, %k1
   1694 ; SKX-NEXT:    vmovdqu64 %zmm1, (%rdi) {%k1}
   1695 ; SKX-NEXT:    kshiftrw $8, %k1, %k1
   1696 ; SKX-NEXT:    vmovdqu64 %zmm2, 64(%rdi) {%k1}
   1697 ; SKX-NEXT:    retq
   1698   call void @llvm.masked.store.v16i64.p0v16i64(<16 x i64> %src0, <16 x i64>* %ptrs, i32 4, <16 x i1> %mask)
   1699   ret void
   1700 }
   1701 declare void @llvm.masked.store.v16i64.p0v16i64(<16 x i64> %src0, <16 x i64>* %ptrs, i32, <16 x i1> %mask)
   1702 
   1703 define void @test_store_16f64(<16 x double>* %ptrs, <16 x i1> %mask, <16 x double> %src0)  {
   1704 ; AVX1-LABEL: test_store_16f64:
   1705 ; AVX1:       ## BB#0:
   1706 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm5 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
   1707 ; AVX1-NEXT:    vpslld $31, %xmm5, %xmm5
   1708 ; AVX1-NEXT:    vpsrad $31, %xmm5, %xmm5
   1709 ; AVX1-NEXT:    vpmovsxdq %xmm5, %xmm6
   1710 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm5 = xmm5[2,3,0,1]
   1711 ; AVX1-NEXT:    vpmovsxdq %xmm5, %xmm5
   1712 ; AVX1-NEXT:    vinsertf128 $1, %xmm5, %ymm6, %ymm5
   1713 ; AVX1-NEXT:    vmaskmovpd %ymm1, %ymm5, (%rdi)
   1714 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[3,1,2,3]
   1715 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero
   1716 ; AVX1-NEXT:    vpslld $31, %xmm1, %xmm1
   1717 ; AVX1-NEXT:    vpsrad $31, %xmm1, %xmm1
   1718 ; AVX1-NEXT:    vpmovsxdq %xmm1, %xmm5
   1719 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
   1720 ; AVX1-NEXT:    vpmovsxdq %xmm1, %xmm1
   1721 ; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm5, %ymm1
   1722 ; AVX1-NEXT:    vmaskmovpd %ymm4, %ymm1, 96(%rdi)
   1723 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
   1724 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero
   1725 ; AVX1-NEXT:    vpslld $31, %xmm1, %xmm1
   1726 ; AVX1-NEXT:    vpsrad $31, %xmm1, %xmm1
   1727 ; AVX1-NEXT:    vpmovsxdq %xmm1, %xmm4
   1728 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
   1729 ; AVX1-NEXT:    vpmovsxdq %xmm1, %xmm1
   1730 ; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm4, %ymm1
   1731 ; AVX1-NEXT:    vmaskmovpd %ymm3, %ymm1, 64(%rdi)
   1732 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
   1733 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
   1734 ; AVX1-NEXT:    vpslld $31, %xmm0, %xmm0
   1735 ; AVX1-NEXT:    vpsrad $31, %xmm0, %xmm0
   1736 ; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm1
   1737 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
   1738 ; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm0
   1739 ; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
   1740 ; AVX1-NEXT:    vmaskmovpd %ymm2, %ymm0, 32(%rdi)
   1741 ; AVX1-NEXT:    vzeroupper
   1742 ; AVX1-NEXT:    retq
   1743 ;
   1744 ; AVX2-LABEL: test_store_16f64:
   1745 ; AVX2:       ## BB#0:
   1746 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm5 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
   1747 ; AVX2-NEXT:    vpslld $31, %xmm5, %xmm5
   1748 ; AVX2-NEXT:    vpsrad $31, %xmm5, %xmm5
   1749 ; AVX2-NEXT:    vpmovsxdq %xmm5, %ymm5
   1750 ; AVX2-NEXT:    vmaskmovpd %ymm1, %ymm5, (%rdi)
   1751 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[3,1,2,3]
   1752 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero
   1753 ; AVX2-NEXT:    vpslld $31, %xmm1, %xmm1
   1754 ; AVX2-NEXT:    vpsrad $31, %xmm1, %xmm1
   1755 ; AVX2-NEXT:    vpmovsxdq %xmm1, %ymm1
   1756 ; AVX2-NEXT:    vmaskmovpd %ymm4, %ymm1, 96(%rdi)
   1757 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
   1758 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero
   1759 ; AVX2-NEXT:    vpslld $31, %xmm1, %xmm1
   1760 ; AVX2-NEXT:    vpsrad $31, %xmm1, %xmm1
   1761 ; AVX2-NEXT:    vpmovsxdq %xmm1, %ymm1
   1762 ; AVX2-NEXT:    vmaskmovpd %ymm3, %ymm1, 64(%rdi)
   1763 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
   1764 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
   1765 ; AVX2-NEXT:    vpslld $31, %xmm0, %xmm0
   1766 ; AVX2-NEXT:    vpsrad $31, %xmm0, %xmm0
   1767 ; AVX2-NEXT:    vpmovsxdq %xmm0, %ymm0
   1768 ; AVX2-NEXT:    vmaskmovpd %ymm2, %ymm0, 32(%rdi)
   1769 ; AVX2-NEXT:    vzeroupper
   1770 ; AVX2-NEXT:    retq
   1771 ;
   1772 ; AVX512F-LABEL: test_store_16f64:
   1773 ; AVX512F:       ## BB#0:
   1774 ; AVX512F-NEXT:    vpmovsxbd %xmm0, %zmm0
   1775 ; AVX512F-NEXT:    vpslld $31, %zmm0, %zmm0
   1776 ; AVX512F-NEXT:    vptestmd %zmm0, %zmm0, %k1
   1777 ; AVX512F-NEXT:    vmovupd %zmm1, (%rdi) {%k1}
   1778 ; AVX512F-NEXT:    kshiftrw $8, %k1, %k1
   1779 ; AVX512F-NEXT:    vmovupd %zmm2, 64(%rdi) {%k1}
   1780 ; AVX512F-NEXT:    retq
   1781 ;
   1782 ; SKX-LABEL: test_store_16f64:
   1783 ; SKX:       ## BB#0:
   1784 ; SKX-NEXT:    vpsllw $7, %xmm0, %xmm0
   1785 ; SKX-NEXT:    vpmovb2m %xmm0, %k1
   1786 ; SKX-NEXT:    vmovupd %zmm1, (%rdi) {%k1}
   1787 ; SKX-NEXT:    kshiftrw $8, %k1, %k1
   1788 ; SKX-NEXT:    vmovupd %zmm2, 64(%rdi) {%k1}
   1789 ; SKX-NEXT:    retq
   1790   call void @llvm.masked.store.v16f64.p0v16f64(<16 x double> %src0, <16 x double>* %ptrs, i32 4, <16 x i1> %mask)
   1791   ret void
   1792 }
   1793 declare void @llvm.masked.store.v16f64.p0v16f64(<16 x double> %src0, <16 x double>* %ptrs, i32, <16 x i1> %mask)
   1794 
   1795 define <16 x i64> @test_load_16i64(<16 x i64>* %ptrs, <16 x i1> %mask, <16 x i64> %src0)  {
   1796 ; AVX1-LABEL: test_load_16i64:
   1797 ; AVX1:       ## BB#0:
   1798 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm5 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
   1799 ; AVX1-NEXT:    vpslld $31, %xmm5, %xmm5
   1800 ; AVX1-NEXT:    vpsrad $31, %xmm5, %xmm5
   1801 ; AVX1-NEXT:    vpmovsxdq %xmm5, %xmm6
   1802 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm5 = xmm5[2,3,0,1]
   1803 ; AVX1-NEXT:    vpmovsxdq %xmm5, %xmm5
   1804 ; AVX1-NEXT:    vinsertf128 $1, %xmm5, %ymm6, %ymm5
   1805 ; AVX1-NEXT:    vmaskmovpd (%rdi), %ymm5, %ymm6
   1806 ; AVX1-NEXT:    vblendvpd %ymm5, %ymm6, %ymm1, %ymm5
   1807 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[1,1,2,3]
   1808 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero
   1809 ; AVX1-NEXT:    vpslld $31, %xmm1, %xmm1
   1810 ; AVX1-NEXT:    vpsrad $31, %xmm1, %xmm1
   1811 ; AVX1-NEXT:    vpmovsxdq %xmm1, %xmm6
   1812 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
   1813 ; AVX1-NEXT:    vpmovsxdq %xmm1, %xmm1
   1814 ; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm6, %ymm1
   1815 ; AVX1-NEXT:    vmaskmovpd 32(%rdi), %ymm1, %ymm6
   1816 ; AVX1-NEXT:    vblendvpd %ymm1, %ymm6, %ymm2, %ymm1
   1817 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm2 = xmm0[2,3,0,1]
   1818 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm2 = xmm2[0],zero,zero,zero,xmm2[1],zero,zero,zero,xmm2[2],zero,zero,zero,xmm2[3],zero,zero,zero
   1819 ; AVX1-NEXT:    vpslld $31, %xmm2, %xmm2
   1820 ; AVX1-NEXT:    vpsrad $31, %xmm2, %xmm2
   1821 ; AVX1-NEXT:    vpmovsxdq %xmm2, %xmm6
   1822 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm2 = xmm2[2,3,0,1]
   1823 ; AVX1-NEXT:    vpmovsxdq %xmm2, %xmm2
   1824 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm6, %ymm2
   1825 ; AVX1-NEXT:    vmaskmovpd 64(%rdi), %ymm2, %ymm6
   1826 ; AVX1-NEXT:    vblendvpd %ymm2, %ymm6, %ymm3, %ymm2
   1827 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[3,1,2,3]
   1828 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
   1829 ; AVX1-NEXT:    vpslld $31, %xmm0, %xmm0
   1830 ; AVX1-NEXT:    vpsrad $31, %xmm0, %xmm0
   1831 ; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm3
   1832 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
   1833 ; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm0
   1834 ; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm3, %ymm0
   1835 ; AVX1-NEXT:    vmaskmovpd 96(%rdi), %ymm0, %ymm3
   1836 ; AVX1-NEXT:    vblendvpd %ymm0, %ymm3, %ymm4, %ymm3
   1837 ; AVX1-NEXT:    vmovapd %ymm5, %ymm0
   1838 ; AVX1-NEXT:    retq
   1839 ;
   1840 ; AVX2-LABEL: test_load_16i64:
   1841 ; AVX2:       ## BB#0:
   1842 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm5 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
   1843 ; AVX2-NEXT:    vpslld $31, %xmm5, %xmm5
   1844 ; AVX2-NEXT:    vpsrad $31, %xmm5, %xmm5
   1845 ; AVX2-NEXT:    vpmovsxdq %xmm5, %ymm5
   1846 ; AVX2-NEXT:    vpmaskmovq (%rdi), %ymm5, %ymm6
   1847 ; AVX2-NEXT:    vblendvpd %ymm5, %ymm6, %ymm1, %ymm5
   1848 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[1,1,2,3]
   1849 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero
   1850 ; AVX2-NEXT:    vpslld $31, %xmm1, %xmm1
   1851 ; AVX2-NEXT:    vpsrad $31, %xmm1, %xmm1
   1852 ; AVX2-NEXT:    vpmovsxdq %xmm1, %ymm1
   1853 ; AVX2-NEXT:    vpmaskmovq 32(%rdi), %ymm1, %ymm6
   1854 ; AVX2-NEXT:    vblendvpd %ymm1, %ymm6, %ymm2, %ymm1
   1855 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm2 = xmm0[2,3,0,1]
   1856 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm2 = xmm2[0],zero,zero,zero,xmm2[1],zero,zero,zero,xmm2[2],zero,zero,zero,xmm2[3],zero,zero,zero
   1857 ; AVX2-NEXT:    vpslld $31, %xmm2, %xmm2
   1858 ; AVX2-NEXT:    vpsrad $31, %xmm2, %xmm2
   1859 ; AVX2-NEXT:    vpmovsxdq %xmm2, %ymm2
   1860 ; AVX2-NEXT:    vpmaskmovq 64(%rdi), %ymm2, %ymm6
   1861 ; AVX2-NEXT:    vblendvpd %ymm2, %ymm6, %ymm3, %ymm2
   1862 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[3,1,2,3]
   1863 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
   1864 ; AVX2-NEXT:    vpslld $31, %xmm0, %xmm0
   1865 ; AVX2-NEXT:    vpsrad $31, %xmm0, %xmm0
   1866 ; AVX2-NEXT:    vpmovsxdq %xmm0, %ymm0
   1867 ; AVX2-NEXT:    vpmaskmovq 96(%rdi), %ymm0, %ymm3
   1868 ; AVX2-NEXT:    vblendvpd %ymm0, %ymm3, %ymm4, %ymm3
   1869 ; AVX2-NEXT:    vmovapd %ymm5, %ymm0
   1870 ; AVX2-NEXT:    retq
   1871 ;
   1872 ; AVX512F-LABEL: test_load_16i64:
   1873 ; AVX512F:       ## BB#0:
   1874 ; AVX512F-NEXT:    vpmovsxbd %xmm0, %zmm0
   1875 ; AVX512F-NEXT:    vpslld $31, %zmm0, %zmm0
   1876 ; AVX512F-NEXT:    vptestmd %zmm0, %zmm0, %k1
   1877 ; AVX512F-NEXT:    vmovdqu64 (%rdi), %zmm1 {%k1}
   1878 ; AVX512F-NEXT:    kshiftrw $8, %k1, %k1
   1879 ; AVX512F-NEXT:    vmovdqu64 64(%rdi), %zmm2 {%k1}
   1880 ; AVX512F-NEXT:    vmovaps %zmm1, %zmm0
   1881 ; AVX512F-NEXT:    vmovaps %zmm2, %zmm1
   1882 ; AVX512F-NEXT:    retq
   1883 ;
   1884 ; SKX-LABEL: test_load_16i64:
   1885 ; SKX:       ## BB#0:
   1886 ; SKX-NEXT:    vpsllw $7, %xmm0, %xmm0
   1887 ; SKX-NEXT:    vpmovb2m %xmm0, %k1
   1888 ; SKX-NEXT:    vmovdqu64 (%rdi), %zmm1 {%k1}
   1889 ; SKX-NEXT:    kshiftrw $8, %k1, %k1
   1890 ; SKX-NEXT:    vmovdqu64 64(%rdi), %zmm2 {%k1}
   1891 ; SKX-NEXT:    vmovaps %zmm1, %zmm0
   1892 ; SKX-NEXT:    vmovaps %zmm2, %zmm1
   1893 ; SKX-NEXT:    retq
   1894   %res = call <16 x i64> @llvm.masked.load.v16i64.p0v16i64(<16 x i64>* %ptrs, i32 4, <16 x i1> %mask, <16 x i64> %src0)
   1895   ret <16 x i64> %res
   1896 }
   1897 declare <16 x i64> @llvm.masked.load.v16i64.p0v16i64(<16 x i64>* %ptrs, i32, <16 x i1> %mask, <16 x i64> %src0)
   1898 
   1899 define <16 x double> @test_load_16f64(<16 x double>* %ptrs, <16 x i1> %mask, <16 x double> %src0)  {
   1900 ; AVX1-LABEL: test_load_16f64:
   1901 ; AVX1:       ## BB#0:
   1902 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm5 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
   1903 ; AVX1-NEXT:    vpslld $31, %xmm5, %xmm5
   1904 ; AVX1-NEXT:    vpsrad $31, %xmm5, %xmm5
   1905 ; AVX1-NEXT:    vpmovsxdq %xmm5, %xmm6
   1906 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm5 = xmm5[2,3,0,1]
   1907 ; AVX1-NEXT:    vpmovsxdq %xmm5, %xmm5
   1908 ; AVX1-NEXT:    vinsertf128 $1, %xmm5, %ymm6, %ymm5
   1909 ; AVX1-NEXT:    vmaskmovpd (%rdi), %ymm5, %ymm6
   1910 ; AVX1-NEXT:    vblendvpd %ymm5, %ymm6, %ymm1, %ymm5
   1911 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[1,1,2,3]
   1912 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero
   1913 ; AVX1-NEXT:    vpslld $31, %xmm1, %xmm1
   1914 ; AVX1-NEXT:    vpsrad $31, %xmm1, %xmm1
   1915 ; AVX1-NEXT:    vpmovsxdq %xmm1, %xmm6
   1916 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
   1917 ; AVX1-NEXT:    vpmovsxdq %xmm1, %xmm1
   1918 ; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm6, %ymm1
   1919 ; AVX1-NEXT:    vmaskmovpd 32(%rdi), %ymm1, %ymm6
   1920 ; AVX1-NEXT:    vblendvpd %ymm1, %ymm6, %ymm2, %ymm1
   1921 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm2 = xmm0[2,3,0,1]
   1922 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm2 = xmm2[0],zero,zero,zero,xmm2[1],zero,zero,zero,xmm2[2],zero,zero,zero,xmm2[3],zero,zero,zero
   1923 ; AVX1-NEXT:    vpslld $31, %xmm2, %xmm2
   1924 ; AVX1-NEXT:    vpsrad $31, %xmm2, %xmm2
   1925 ; AVX1-NEXT:    vpmovsxdq %xmm2, %xmm6
   1926 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm2 = xmm2[2,3,0,1]
   1927 ; AVX1-NEXT:    vpmovsxdq %xmm2, %xmm2
   1928 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm6, %ymm2
   1929 ; AVX1-NEXT:    vmaskmovpd 64(%rdi), %ymm2, %ymm6
   1930 ; AVX1-NEXT:    vblendvpd %ymm2, %ymm6, %ymm3, %ymm2
   1931 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[3,1,2,3]
   1932 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
   1933 ; AVX1-NEXT:    vpslld $31, %xmm0, %xmm0
   1934 ; AVX1-NEXT:    vpsrad $31, %xmm0, %xmm0
   1935 ; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm3
   1936 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
   1937 ; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm0
   1938 ; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm3, %ymm0
   1939 ; AVX1-NEXT:    vmaskmovpd 96(%rdi), %ymm0, %ymm3
   1940 ; AVX1-NEXT:    vblendvpd %ymm0, %ymm3, %ymm4, %ymm3
   1941 ; AVX1-NEXT:    vmovapd %ymm5, %ymm0
   1942 ; AVX1-NEXT:    retq
   1943 ;
   1944 ; AVX2-LABEL: test_load_16f64:
   1945 ; AVX2:       ## BB#0:
   1946 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm5 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
   1947 ; AVX2-NEXT:    vpslld $31, %xmm5, %xmm5
   1948 ; AVX2-NEXT:    vpsrad $31, %xmm5, %xmm5
   1949 ; AVX2-NEXT:    vpmovsxdq %xmm5, %ymm5
   1950 ; AVX2-NEXT:    vmaskmovpd (%rdi), %ymm5, %ymm6
   1951 ; AVX2-NEXT:    vblendvpd %ymm5, %ymm6, %ymm1, %ymm5
   1952 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[1,1,2,3]
   1953 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero
   1954 ; AVX2-NEXT:    vpslld $31, %xmm1, %xmm1
   1955 ; AVX2-NEXT:    vpsrad $31, %xmm1, %xmm1
   1956 ; AVX2-NEXT:    vpmovsxdq %xmm1, %ymm1
   1957 ; AVX2-NEXT:    vmaskmovpd 32(%rdi), %ymm1, %ymm6
   1958 ; AVX2-NEXT:    vblendvpd %ymm1, %ymm6, %ymm2, %ymm1
   1959 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm2 = xmm0[2,3,0,1]
   1960 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm2 = xmm2[0],zero,zero,zero,xmm2[1],zero,zero,zero,xmm2[2],zero,zero,zero,xmm2[3],zero,zero,zero
   1961 ; AVX2-NEXT:    vpslld $31, %xmm2, %xmm2
   1962 ; AVX2-NEXT:    vpsrad $31, %xmm2, %xmm2
   1963 ; AVX2-NEXT:    vpmovsxdq %xmm2, %ymm2
   1964 ; AVX2-NEXT:    vmaskmovpd 64(%rdi), %ymm2, %ymm6
   1965 ; AVX2-NEXT:    vblendvpd %ymm2, %ymm6, %ymm3, %ymm2
   1966 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[3,1,2,3]
   1967 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
   1968 ; AVX2-NEXT:    vpslld $31, %xmm0, %xmm0
   1969 ; AVX2-NEXT:    vpsrad $31, %xmm0, %xmm0
   1970 ; AVX2-NEXT:    vpmovsxdq %xmm0, %ymm0
   1971 ; AVX2-NEXT:    vmaskmovpd 96(%rdi), %ymm0, %ymm3
   1972 ; AVX2-NEXT:    vblendvpd %ymm0, %ymm3, %ymm4, %ymm3
   1973 ; AVX2-NEXT:    vmovapd %ymm5, %ymm0
   1974 ; AVX2-NEXT:    retq
   1975 ;
   1976 ; AVX512F-LABEL: test_load_16f64:
   1977 ; AVX512F:       ## BB#0:
   1978 ; AVX512F-NEXT:    vpmovsxbd %xmm0, %zmm0
   1979 ; AVX512F-NEXT:    vpslld $31, %zmm0, %zmm0
   1980 ; AVX512F-NEXT:    vptestmd %zmm0, %zmm0, %k1
   1981 ; AVX512F-NEXT:    vmovupd (%rdi), %zmm1 {%k1}
   1982 ; AVX512F-NEXT:    kshiftrw $8, %k1, %k1
   1983 ; AVX512F-NEXT:    vmovupd 64(%rdi), %zmm2 {%k1}
   1984 ; AVX512F-NEXT:    vmovaps %zmm1, %zmm0
   1985 ; AVX512F-NEXT:    vmovaps %zmm2, %zmm1
   1986 ; AVX512F-NEXT:    retq
   1987 ;
   1988 ; SKX-LABEL: test_load_16f64:
   1989 ; SKX:       ## BB#0:
   1990 ; SKX-NEXT:    vpsllw $7, %xmm0, %xmm0
   1991 ; SKX-NEXT:    vpmovb2m %xmm0, %k1
   1992 ; SKX-NEXT:    vmovupd (%rdi), %zmm1 {%k1}
   1993 ; SKX-NEXT:    kshiftrw $8, %k1, %k1
   1994 ; SKX-NEXT:    vmovupd 64(%rdi), %zmm2 {%k1}
   1995 ; SKX-NEXT:    vmovaps %zmm1, %zmm0
   1996 ; SKX-NEXT:    vmovaps %zmm2, %zmm1
   1997 ; SKX-NEXT:    retq
   1998   %res = call <16 x double> @llvm.masked.load.v16f64.p0v16f64(<16 x double>* %ptrs, i32 4, <16 x i1> %mask, <16 x double> %src0)
   1999   ret <16 x double> %res
   2000 }
   2001 declare <16 x double> @llvm.masked.load.v16f64.p0v16f64(<16 x double>* %ptrs, i32, <16 x i1> %mask, <16 x double> %src0)
   2002 
   2003 define <32 x double> @test_load_32f64(<32 x double>* %ptrs, <32 x i1> %mask, <32 x double> %src0)  {
   2004 ; AVX1-LABEL: test_load_32f64:
   2005 ; AVX1:       ## BB#0:
   2006 ; AVX1-NEXT:    pushq %rbp
   2007 ; AVX1-NEXT:  Ltmp0:
   2008 ; AVX1-NEXT:    .cfi_def_cfa_offset 16
   2009 ; AVX1-NEXT:  Ltmp1:
   2010 ; AVX1-NEXT:    .cfi_offset %rbp, -16
   2011 ; AVX1-NEXT:    movq %rsp, %rbp
   2012 ; AVX1-NEXT:  Ltmp2:
   2013 ; AVX1-NEXT:    .cfi_def_cfa_register %rbp
   2014 ; AVX1-NEXT:    andq $-32, %rsp
   2015 ; AVX1-NEXT:    subq $32, %rsp
   2016 ; AVX1-NEXT:    vmovapd 16(%rbp), %ymm8
   2017 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm9 = xmm0[1,1,2,3]
   2018 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm9 = xmm9[0],zero,zero,zero,xmm9[1],zero,zero,zero,xmm9[2],zero,zero,zero,xmm9[3],zero,zero,zero
   2019 ; AVX1-NEXT:    vpslld $31, %xmm9, %xmm9
   2020 ; AVX1-NEXT:    vpsrad $31, %xmm9, %xmm9
   2021 ; AVX1-NEXT:    vpmovsxdq %xmm9, %xmm10
   2022 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm9 = xmm9[2,3,0,1]
   2023 ; AVX1-NEXT:    vpmovsxdq %xmm9, %xmm9
   2024 ; AVX1-NEXT:    vinsertf128 $1, %xmm9, %ymm10, %ymm9
   2025 ; AVX1-NEXT:    vmaskmovpd 32(%rsi), %ymm9, %ymm10
   2026 ; AVX1-NEXT:    vblendvpd %ymm9, %ymm10, %ymm2, %ymm9
   2027 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm2 = xmm0[2,3,0,1]
   2028 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm2 = xmm2[0],zero,zero,zero,xmm2[1],zero,zero,zero,xmm2[2],zero,zero,zero,xmm2[3],zero,zero,zero
   2029 ; AVX1-NEXT:    vpslld $31, %xmm2, %xmm2
   2030 ; AVX1-NEXT:    vpsrad $31, %xmm2, %xmm2
   2031 ; AVX1-NEXT:    vpmovsxdq %xmm2, %xmm10
   2032 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm2 = xmm2[2,3,0,1]
   2033 ; AVX1-NEXT:    vpmovsxdq %xmm2, %xmm2
   2034 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm10, %ymm2
   2035 ; AVX1-NEXT:    vmaskmovpd 64(%rsi), %ymm2, %ymm10
   2036 ; AVX1-NEXT:    vblendvpd %ymm2, %ymm10, %ymm3, %ymm11
   2037 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm2 = xmm0[3,1,2,3]
   2038 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm2 = xmm2[0],zero,zero,zero,xmm2[1],zero,zero,zero,xmm2[2],zero,zero,zero,xmm2[3],zero,zero,zero
   2039 ; AVX1-NEXT:    vpslld $31, %xmm2, %xmm2
   2040 ; AVX1-NEXT:    vpsrad $31, %xmm2, %xmm2
   2041 ; AVX1-NEXT:    vpmovsxdq %xmm2, %xmm10
   2042 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm2 = xmm2[2,3,0,1]
   2043 ; AVX1-NEXT:    vpmovsxdq %xmm2, %xmm2
   2044 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm10, %ymm2
   2045 ; AVX1-NEXT:    vmaskmovpd 96(%rsi), %ymm2, %ymm10
   2046 ; AVX1-NEXT:    vblendvpd %ymm2, %ymm10, %ymm4, %ymm4
   2047 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
   2048 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm3 = xmm2[1,1,2,3]
   2049 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm3 = xmm3[0],zero,zero,zero,xmm3[1],zero,zero,zero,xmm3[2],zero,zero,zero,xmm3[3],zero,zero,zero
   2050 ; AVX1-NEXT:    vpslld $31, %xmm3, %xmm3
   2051 ; AVX1-NEXT:    vpsrad $31, %xmm3, %xmm3
   2052 ; AVX1-NEXT:    vpmovsxdq %xmm3, %xmm10
   2053 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[2,3,0,1]
   2054 ; AVX1-NEXT:    vpmovsxdq %xmm3, %xmm3
   2055 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm10, %ymm3
   2056 ; AVX1-NEXT:    vmaskmovpd 160(%rsi), %ymm3, %ymm10
   2057 ; AVX1-NEXT:    vblendvpd %ymm3, %ymm10, %ymm6, %ymm6
   2058 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm3 = xmm2[2,3,0,1]
   2059 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm3 = xmm3[0],zero,zero,zero,xmm3[1],zero,zero,zero,xmm3[2],zero,zero,zero,xmm3[3],zero,zero,zero
   2060 ; AVX1-NEXT:    vpslld $31, %xmm3, %xmm3
   2061 ; AVX1-NEXT:    vpsrad $31, %xmm3, %xmm3
   2062 ; AVX1-NEXT:    vpmovsxdq %xmm3, %xmm10
   2063 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[2,3,0,1]
   2064 ; AVX1-NEXT:    vpmovsxdq %xmm3, %xmm3
   2065 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm10, %ymm3
   2066 ; AVX1-NEXT:    vmaskmovpd 192(%rsi), %ymm3, %ymm10
   2067 ; AVX1-NEXT:    vblendvpd %ymm3, %ymm10, %ymm7, %ymm7
   2068 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm3 = xmm2[3,1,2,3]
   2069 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm3 = xmm3[0],zero,zero,zero,xmm3[1],zero,zero,zero,xmm3[2],zero,zero,zero,xmm3[3],zero,zero,zero
   2070 ; AVX1-NEXT:    vpslld $31, %xmm3, %xmm3
   2071 ; AVX1-NEXT:    vpsrad $31, %xmm3, %xmm3
   2072 ; AVX1-NEXT:    vpmovsxdq %xmm3, %xmm10
   2073 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[2,3,0,1]
   2074 ; AVX1-NEXT:    vpmovsxdq %xmm3, %xmm3
   2075 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm10, %ymm3
   2076 ; AVX1-NEXT:    vmaskmovpd 224(%rsi), %ymm3, %ymm10
   2077 ; AVX1-NEXT:    vblendvpd %ymm3, %ymm10, %ymm8, %ymm3
   2078 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
   2079 ; AVX1-NEXT:    vpslld $31, %xmm0, %xmm0
   2080 ; AVX1-NEXT:    vpsrad $31, %xmm0, %xmm0
   2081 ; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm8
   2082 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
   2083 ; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm0
   2084 ; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm8, %ymm0
   2085 ; AVX1-NEXT:    vmaskmovpd (%rsi), %ymm0, %ymm8
   2086 ; AVX1-NEXT:    vblendvpd %ymm0, %ymm8, %ymm1, %ymm0
   2087 ; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm2[0],zero,zero,zero,xmm2[1],zero,zero,zero,xmm2[2],zero,zero,zero,xmm2[3],zero,zero,zero
   2088 ; AVX1-NEXT:    vpslld $31, %xmm1, %xmm1
   2089 ; AVX1-NEXT:    vpsrad $31, %xmm1, %xmm1
   2090 ; AVX1-NEXT:    vpmovsxdq %xmm1, %xmm2
   2091 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
   2092 ; AVX1-NEXT:    vpmovsxdq %xmm1, %xmm1
   2093 ; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm2, %ymm1
   2094 ; AVX1-NEXT:    vmaskmovpd 128(%rsi), %ymm1, %ymm2
   2095 ; AVX1-NEXT:    vblendvpd %ymm1, %ymm2, %ymm5, %ymm1
   2096 ; AVX1-NEXT:    vmovapd %ymm1, 128(%rdi)
   2097 ; AVX1-NEXT:    vmovapd %ymm0, (%rdi)
   2098 ; AVX1-NEXT:    vmovapd %ymm3, 224(%rdi)
   2099 ; AVX1-NEXT:    vmovapd %ymm7, 192(%rdi)
   2100 ; AVX1-NEXT:    vmovapd %ymm6, 160(%rdi)
   2101 ; AVX1-NEXT:    vmovapd %ymm4, 96(%rdi)
   2102 ; AVX1-NEXT:    vmovapd %ymm11, 64(%rdi)
   2103 ; AVX1-NEXT:    vmovapd %ymm9, 32(%rdi)
   2104 ; AVX1-NEXT:    movq %rdi, %rax
   2105 ; AVX1-NEXT:    movq %rbp, %rsp
   2106 ; AVX1-NEXT:    popq %rbp
   2107 ; AVX1-NEXT:    vzeroupper
   2108 ; AVX1-NEXT:    retq
   2109 ;
   2110 ; AVX2-LABEL: test_load_32f64:
   2111 ; AVX2:       ## BB#0:
   2112 ; AVX2-NEXT:    pushq %rbp
   2113 ; AVX2-NEXT:  Ltmp0:
   2114 ; AVX2-NEXT:    .cfi_def_cfa_offset 16
   2115 ; AVX2-NEXT:  Ltmp1:
   2116 ; AVX2-NEXT:    .cfi_offset %rbp, -16
   2117 ; AVX2-NEXT:    movq %rsp, %rbp
   2118 ; AVX2-NEXT:  Ltmp2:
   2119 ; AVX2-NEXT:    .cfi_def_cfa_register %rbp
   2120 ; AVX2-NEXT:    andq $-32, %rsp
   2121 ; AVX2-NEXT:    subq $32, %rsp
   2122 ; AVX2-NEXT:    vmovapd 16(%rbp), %ymm8
   2123 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm9 = xmm0[1,1,2,3]
   2124 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm9 = xmm9[0],zero,zero,zero,xmm9[1],zero,zero,zero,xmm9[2],zero,zero,zero,xmm9[3],zero,zero,zero
   2125 ; AVX2-NEXT:    vpslld $31, %xmm9, %xmm9
   2126 ; AVX2-NEXT:    vpsrad $31, %xmm9, %xmm9
   2127 ; AVX2-NEXT:    vpmovsxdq %xmm9, %ymm9
   2128 ; AVX2-NEXT:    vmaskmovpd 32(%rsi), %ymm9, %ymm10
   2129 ; AVX2-NEXT:    vblendvpd %ymm9, %ymm10, %ymm2, %ymm9
   2130 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm2 = xmm0[2,3,0,1]
   2131 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm2 = xmm2[0],zero,zero,zero,xmm2[1],zero,zero,zero,xmm2[2],zero,zero,zero,xmm2[3],zero,zero,zero
   2132 ; AVX2-NEXT:    vpslld $31, %xmm2, %xmm2
   2133 ; AVX2-NEXT:    vpsrad $31, %xmm2, %xmm2
   2134 ; AVX2-NEXT:    vpmovsxdq %xmm2, %ymm2
   2135 ; AVX2-NEXT:    vmaskmovpd 64(%rsi), %ymm2, %ymm10
   2136 ; AVX2-NEXT:    vblendvpd %ymm2, %ymm10, %ymm3, %ymm11
   2137 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm2 = xmm0[3,1,2,3]
   2138 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm2 = xmm2[0],zero,zero,zero,xmm2[1],zero,zero,zero,xmm2[2],zero,zero,zero,xmm2[3],zero,zero,zero
   2139 ; AVX2-NEXT:    vpslld $31, %xmm2, %xmm2
   2140 ; AVX2-NEXT:    vpsrad $31, %xmm2, %xmm2
   2141 ; AVX2-NEXT:    vpmovsxdq %xmm2, %ymm2
   2142 ; AVX2-NEXT:    vmaskmovpd 96(%rsi), %ymm2, %ymm10
   2143 ; AVX2-NEXT:    vblendvpd %ymm2, %ymm10, %ymm4, %ymm4
   2144 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm2
   2145 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm3 = xmm2[1,1,2,3]
   2146 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm3 = xmm3[0],zero,zero,zero,xmm3[1],zero,zero,zero,xmm3[2],zero,zero,zero,xmm3[3],zero,zero,zero
   2147 ; AVX2-NEXT:    vpslld $31, %xmm3, %xmm3
   2148 ; AVX2-NEXT:    vpsrad $31, %xmm3, %xmm3
   2149 ; AVX2-NEXT:    vpmovsxdq %xmm3, %ymm3
   2150 ; AVX2-NEXT:    vmaskmovpd 160(%rsi), %ymm3, %ymm10
   2151 ; AVX2-NEXT:    vblendvpd %ymm3, %ymm10, %ymm6, %ymm3
   2152 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm6 = xmm2[2,3,0,1]
   2153 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm6 = xmm6[0],zero,zero,zero,xmm6[1],zero,zero,zero,xmm6[2],zero,zero,zero,xmm6[3],zero,zero,zero
   2154 ; AVX2-NEXT:    vpslld $31, %xmm6, %xmm6
   2155 ; AVX2-NEXT:    vpsrad $31, %xmm6, %xmm6
   2156 ; AVX2-NEXT:    vpmovsxdq %xmm6, %ymm6
   2157 ; AVX2-NEXT:    vmaskmovpd 192(%rsi), %ymm6, %ymm10
   2158 ; AVX2-NEXT:    vblendvpd %ymm6, %ymm10, %ymm7, %ymm6
   2159 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm7 = xmm2[3,1,2,3]
   2160 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm7 = xmm7[0],zero,zero,zero,xmm7[1],zero,zero,zero,xmm7[2],zero,zero,zero,xmm7[3],zero,zero,zero
   2161 ; AVX2-NEXT:    vpslld $31, %xmm7, %xmm7
   2162 ; AVX2-NEXT:    vpsrad $31, %xmm7, %xmm7
   2163 ; AVX2-NEXT:    vpmovsxdq %xmm7, %ymm7
   2164 ; AVX2-NEXT:    vmaskmovpd 224(%rsi), %ymm7, %ymm10
   2165 ; AVX2-NEXT:    vblendvpd %ymm7, %ymm10, %ymm8, %ymm7
   2166 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
   2167 ; AVX2-NEXT:    vpslld $31, %xmm0, %xmm0
   2168 ; AVX2-NEXT:    vpsrad $31, %xmm0, %xmm0
   2169 ; AVX2-NEXT:    vpmovsxdq %xmm0, %ymm0
   2170 ; AVX2-NEXT:    vmaskmovpd (%rsi), %ymm0, %ymm8
   2171 ; AVX2-NEXT:    vblendvpd %ymm0, %ymm8, %ymm1, %ymm0
   2172 ; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm2[0],zero,zero,zero,xmm2[1],zero,zero,zero,xmm2[2],zero,zero,zero,xmm2[3],zero,zero,zero
   2173 ; AVX2-NEXT:    vpslld $31, %xmm1, %xmm1
   2174 ; AVX2-NEXT:    vpsrad $31, %xmm1, %xmm1
   2175 ; AVX2-NEXT:    vpmovsxdq %xmm1, %ymm1
   2176 ; AVX2-NEXT:    vmaskmovpd 128(%rsi), %ymm1, %ymm2
   2177 ; AVX2-NEXT:    vblendvpd %ymm1, %ymm2, %ymm5, %ymm1
   2178 ; AVX2-NEXT:    vmovapd %ymm1, 128(%rdi)
   2179 ; AVX2-NEXT:    vmovapd %ymm0, (%rdi)
   2180 ; AVX2-NEXT:    vmovapd %ymm7, 224(%rdi)
   2181 ; AVX2-NEXT:    vmovapd %ymm6, 192(%rdi)
   2182 ; AVX2-NEXT:    vmovapd %ymm3, 160(%rdi)
   2183 ; AVX2-NEXT:    vmovapd %ymm4, 96(%rdi)
   2184 ; AVX2-NEXT:    vmovapd %ymm11, 64(%rdi)
   2185 ; AVX2-NEXT:    vmovapd %ymm9, 32(%rdi)
   2186 ; AVX2-NEXT:    movq %rdi, %rax
   2187 ; AVX2-NEXT:    movq %rbp, %rsp
   2188 ; AVX2-NEXT:    popq %rbp
   2189 ; AVX2-NEXT:    vzeroupper
   2190 ; AVX2-NEXT:    retq
   2191 ;
   2192 ; AVX512F-LABEL: test_load_32f64:
   2193 ; AVX512F:       ## BB#0:
   2194 ; AVX512F-NEXT:    vextractf128 $1, %ymm0, %xmm5
   2195 ; AVX512F-NEXT:    vpmovsxbd %xmm5, %zmm5
   2196 ; AVX512F-NEXT:    vpslld $31, %zmm5, %zmm5
   2197 ; AVX512F-NEXT:    vptestmd %zmm5, %zmm5, %k1
   2198 ; AVX512F-NEXT:    vmovupd 128(%rdi), %zmm3 {%k1}
   2199 ; AVX512F-NEXT:    vpmovsxbd %xmm0, %zmm0
   2200 ; AVX512F-NEXT:    vpslld $31, %zmm0, %zmm0
   2201 ; AVX512F-NEXT:    vptestmd %zmm0, %zmm0, %k2
   2202 ; AVX512F-NEXT:    vmovupd (%rdi), %zmm1 {%k2}
   2203 ; AVX512F-NEXT:    kshiftrw $8, %k1, %k1
   2204 ; AVX512F-NEXT:    vmovupd 192(%rdi), %zmm4 {%k1}
   2205 ; AVX512F-NEXT:    kshiftrw $8, %k2, %k1
   2206 ; AVX512F-NEXT:    vmovupd 64(%rdi), %zmm2 {%k1}
   2207 ; AVX512F-NEXT:    vmovaps %zmm1, %zmm0
   2208 ; AVX512F-NEXT:    vmovaps %zmm2, %zmm1
   2209 ; AVX512F-NEXT:    vmovaps %zmm3, %zmm2
   2210 ; AVX512F-NEXT:    vmovaps %zmm4, %zmm3
   2211 ; AVX512F-NEXT:    retq
   2212 ;
   2213 ; SKX-LABEL: test_load_32f64:
   2214 ; SKX:       ## BB#0:
   2215 ; SKX-NEXT:    vpsllw $7, %ymm0, %ymm0
   2216 ; SKX-NEXT:    vpmovb2m %ymm0, %k1
   2217 ; SKX-NEXT:    vmovupd (%rdi), %zmm1 {%k1}
   2218 ; SKX-NEXT:    kshiftrd $16, %k1, %k2
   2219 ; SKX-NEXT:    vmovupd 128(%rdi), %zmm3 {%k2}
   2220 ; SKX-NEXT:    kshiftrw $8, %k1, %k1
   2221 ; SKX-NEXT:    vmovupd 64(%rdi), %zmm2 {%k1}
   2222 ; SKX-NEXT:    kshiftrw $8, %k2, %k1
   2223 ; SKX-NEXT:    vmovupd 192(%rdi), %zmm4 {%k1}
   2224 ; SKX-NEXT:    vmovaps %zmm1, %zmm0
   2225 ; SKX-NEXT:    vmovaps %zmm2, %zmm1
   2226 ; SKX-NEXT:    vmovaps %zmm3, %zmm2
   2227 ; SKX-NEXT:    vmovaps %zmm4, %zmm3
   2228 ; SKX-NEXT:    retq
   2229   %res = call <32 x double> @llvm.masked.load.v32f64.p0v32f64(<32 x double>* %ptrs, i32 4, <32 x i1> %mask, <32 x double> %src0)
   2230   ret <32 x double> %res
   2231 }
   2232 
   2233 declare <32 x double> @llvm.masked.load.v32f64.p0v32f64(<32 x double>* %ptrs, i32, <32 x i1> %mask, <32 x double> %src0)
   2234 
   2235 define <16 x i8> @test_mask_load_16xi8(<16 x i1> %mask, <16 x i8>* %addr, <16 x i8> %val) {
   2236 ; AVX-LABEL: test_mask_load_16xi8:
   2237 ; AVX:       ## BB#0:
   2238 ; AVX-NEXT:    vpextrb $0, %xmm0, %eax
   2239 ; AVX-NEXT:    ## implicit-def: %XMM1
   2240 ; AVX-NEXT:    testb $1, %al
   2241 ; AVX-NEXT:    je LBB50_2
   2242 ; AVX-NEXT:  ## BB#1: ## %cond.load
   2243 ; AVX-NEXT:    movzbl (%rdi), %eax
   2244 ; AVX-NEXT:    vmovd %eax, %xmm1
   2245 ; AVX-NEXT:  LBB50_2: ## %else
   2246 ; AVX-NEXT:    vpextrb $1, %xmm0, %eax
   2247 ; AVX-NEXT:    testb $1, %al
   2248 ; AVX-NEXT:    je LBB50_4
   2249 ; AVX-NEXT:  ## BB#3: ## %cond.load1
   2250 ; AVX-NEXT:    vpinsrb $1, 1(%rdi), %xmm1, %xmm1
   2251 ; AVX-NEXT:  LBB50_4: ## %else2
   2252 ; AVX-NEXT:    vpextrb $2, %xmm0, %eax
   2253 ; AVX-NEXT:    testb $1, %al
   2254 ; AVX-NEXT:    je LBB50_6
   2255 ; AVX-NEXT:  ## BB#5: ## %cond.load4
   2256 ; AVX-NEXT:    vpinsrb $2, 2(%rdi), %xmm1, %xmm1
   2257 ; AVX-NEXT:  LBB50_6: ## %else5
   2258 ; AVX-NEXT:    vpextrb $3, %xmm0, %eax
   2259 ; AVX-NEXT:    testb $1, %al
   2260 ; AVX-NEXT:    je LBB50_8
   2261 ; AVX-NEXT:  ## BB#7: ## %cond.load7
   2262 ; AVX-NEXT:    vpinsrb $3, 3(%rdi), %xmm1, %xmm1
   2263 ; AVX-NEXT:  LBB50_8: ## %else8
   2264 ; AVX-NEXT:    vpextrb $4, %xmm0, %eax
   2265 ; AVX-NEXT:    testb $1, %al
   2266 ; AVX-NEXT:    je LBB50_10
   2267 ; AVX-NEXT:  ## BB#9: ## %cond.load10
   2268 ; AVX-NEXT:    vpinsrb $4, 4(%rdi), %xmm1, %xmm1
   2269 ; AVX-NEXT:  LBB50_10: ## %else11
   2270 ; AVX-NEXT:    vpextrb $5, %xmm0, %eax
   2271 ; AVX-NEXT:    testb $1, %al
   2272 ; AVX-NEXT:    je LBB50_12
   2273 ; AVX-NEXT:  ## BB#11: ## %cond.load13
   2274 ; AVX-NEXT:    vpinsrb $5, 5(%rdi), %xmm1, %xmm1
   2275 ; AVX-NEXT:  LBB50_12: ## %else14
   2276 ; AVX-NEXT:    vpextrb $6, %xmm0, %eax
   2277 ; AVX-NEXT:    testb $1, %al
   2278 ; AVX-NEXT:    je LBB50_14
   2279 ; AVX-NEXT:  ## BB#13: ## %cond.load16
   2280 ; AVX-NEXT:    vpinsrb $6, 6(%rdi), %xmm1, %xmm1
   2281 ; AVX-NEXT:  LBB50_14: ## %else17
   2282 ; AVX-NEXT:    vpextrb $7, %xmm0, %eax
   2283 ; AVX-NEXT:    testb $1, %al
   2284 ; AVX-NEXT:    je LBB50_16
   2285 ; AVX-NEXT:  ## BB#15: ## %cond.load19
   2286 ; AVX-NEXT:    vpinsrb $7, 7(%rdi), %xmm1, %xmm1
   2287 ; AVX-NEXT:  LBB50_16: ## %else20
   2288 ; AVX-NEXT:    vpextrb $8, %xmm0, %eax
   2289 ; AVX-NEXT:    testb $1, %al
   2290 ; AVX-NEXT:    je LBB50_18
   2291 ; AVX-NEXT:  ## BB#17: ## %cond.load22
   2292 ; AVX-NEXT:    vpinsrb $8, 8(%rdi), %xmm1, %xmm1
   2293 ; AVX-NEXT:  LBB50_18: ## %else23
   2294 ; AVX-NEXT:    vpextrb $9, %xmm0, %eax
   2295 ; AVX-NEXT:    testb $1, %al
   2296 ; AVX-NEXT:    je LBB50_20
   2297 ; AVX-NEXT:  ## BB#19: ## %cond.load25
   2298 ; AVX-NEXT:    vpinsrb $9, 9(%rdi), %xmm1, %xmm1
   2299 ; AVX-NEXT:  LBB50_20: ## %else26
   2300 ; AVX-NEXT:    vpextrb $10, %xmm0, %eax
   2301 ; AVX-NEXT:    testb $1, %al
   2302 ; AVX-NEXT:    je LBB50_22
   2303 ; AVX-NEXT:  ## BB#21: ## %cond.load28
   2304 ; AVX-NEXT:    vpinsrb $10, 10(%rdi), %xmm1, %xmm1
   2305 ; AVX-NEXT:  LBB50_22: ## %else29
   2306 ; AVX-NEXT:    vpextrb $11, %xmm0, %eax
   2307 ; AVX-NEXT:    testb $1, %al
   2308 ; AVX-NEXT:    je LBB50_24
   2309 ; AVX-NEXT:  ## BB#23: ## %cond.load31
   2310 ; AVX-NEXT:    vpinsrb $11, 11(%rdi), %xmm1, %xmm1
   2311 ; AVX-NEXT:  LBB50_24: ## %else32
   2312 ; AVX-NEXT:    vpextrb $12, %xmm0, %eax
   2313 ; AVX-NEXT:    testb $1, %al
   2314 ; AVX-NEXT:    je LBB50_26
   2315 ; AVX-NEXT:  ## BB#25: ## %cond.load34
   2316 ; AVX-NEXT:    vpinsrb $12, 12(%rdi), %xmm1, %xmm1
   2317 ; AVX-NEXT:  LBB50_26: ## %else35
   2318 ; AVX-NEXT:    vpextrb $13, %xmm0, %eax
   2319 ; AVX-NEXT:    testb $1, %al
   2320 ; AVX-NEXT:    je LBB50_28
   2321 ; AVX-NEXT:  ## BB#27: ## %cond.load37
   2322 ; AVX-NEXT:    vpinsrb $13, 13(%rdi), %xmm1, %xmm1
   2323 ; AVX-NEXT:  LBB50_28: ## %else38
   2324 ; AVX-NEXT:    vpextrb $14, %xmm0, %eax
   2325 ; AVX-NEXT:    testb $1, %al
   2326 ; AVX-NEXT:    je LBB50_30
   2327 ; AVX-NEXT:  ## BB#29: ## %cond.load40
   2328 ; AVX-NEXT:    vpinsrb $14, 14(%rdi), %xmm1, %xmm1
   2329 ; AVX-NEXT:  LBB50_30: ## %else41
   2330 ; AVX-NEXT:    vpextrb $15, %xmm0, %eax
   2331 ; AVX-NEXT:    testb $1, %al
   2332 ; AVX-NEXT:    je LBB50_32
   2333 ; AVX-NEXT:  ## BB#31: ## %cond.load43
   2334 ; AVX-NEXT:    vpinsrb $15, 15(%rdi), %xmm1, %xmm1
   2335 ; AVX-NEXT:  LBB50_32: ## %else44
   2336 ; AVX-NEXT:    vpsllw $7, %xmm0, %xmm0
   2337 ; AVX-NEXT:    vpand {{.*}}(%rip), %xmm0, %xmm0
   2338 ; AVX-NEXT:    vpblendvb %xmm0, %xmm1, %xmm0, %xmm0
   2339 ; AVX-NEXT:    retq
   2340 ;
   2341 ; AVX512F-LABEL: test_mask_load_16xi8:
   2342 ; AVX512F:       ## BB#0:
   2343 ; AVX512F-NEXT:    vpmovsxbd %xmm0, %zmm0
   2344 ; AVX512F-NEXT:    vpslld $31, %zmm0, %zmm0
   2345 ; AVX512F-NEXT:    vptestmd %zmm0, %zmm0, %k1
   2346 ; AVX512F-NEXT:    kshiftlw $15, %k1, %k0
   2347 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   2348 ; AVX512F-NEXT:    kmovw %k0, %eax
   2349 ; AVX512F-NEXT:    ## implicit-def: %XMM0
   2350 ; AVX512F-NEXT:    testb %al, %al
   2351 ; AVX512F-NEXT:    je LBB50_2
   2352 ; AVX512F-NEXT:  ## BB#1: ## %cond.load
   2353 ; AVX512F-NEXT:    movzbl (%rdi), %eax
   2354 ; AVX512F-NEXT:    vmovd %eax, %xmm0
   2355 ; AVX512F-NEXT:  LBB50_2: ## %else
   2356 ; AVX512F-NEXT:    kshiftlw $14, %k1, %k0
   2357 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   2358 ; AVX512F-NEXT:    kmovw %k0, %eax
   2359 ; AVX512F-NEXT:    testb %al, %al
   2360 ; AVX512F-NEXT:    je LBB50_4
   2361 ; AVX512F-NEXT:  ## BB#3: ## %cond.load1
   2362 ; AVX512F-NEXT:    vpinsrb $1, 1(%rdi), %xmm0, %xmm0
   2363 ; AVX512F-NEXT:  LBB50_4: ## %else2
   2364 ; AVX512F-NEXT:    kshiftlw $13, %k1, %k0
   2365 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   2366 ; AVX512F-NEXT:    kmovw %k0, %eax
   2367 ; AVX512F-NEXT:    testb %al, %al
   2368 ; AVX512F-NEXT:    je LBB50_6
   2369 ; AVX512F-NEXT:  ## BB#5: ## %cond.load4
   2370 ; AVX512F-NEXT:    vpinsrb $2, 2(%rdi), %xmm0, %xmm0
   2371 ; AVX512F-NEXT:  LBB50_6: ## %else5
   2372 ; AVX512F-NEXT:    kshiftlw $12, %k1, %k0
   2373 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   2374 ; AVX512F-NEXT:    kmovw %k0, %eax
   2375 ; AVX512F-NEXT:    testb %al, %al
   2376 ; AVX512F-NEXT:    je LBB50_8
   2377 ; AVX512F-NEXT:  ## BB#7: ## %cond.load7
   2378 ; AVX512F-NEXT:    vpinsrb $3, 3(%rdi), %xmm0, %xmm0
   2379 ; AVX512F-NEXT:  LBB50_8: ## %else8
   2380 ; AVX512F-NEXT:    kshiftlw $11, %k1, %k0
   2381 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   2382 ; AVX512F-NEXT:    kmovw %k0, %eax
   2383 ; AVX512F-NEXT:    testb %al, %al
   2384 ; AVX512F-NEXT:    je LBB50_10
   2385 ; AVX512F-NEXT:  ## BB#9: ## %cond.load10
   2386 ; AVX512F-NEXT:    vpinsrb $4, 4(%rdi), %xmm0, %xmm0
   2387 ; AVX512F-NEXT:  LBB50_10: ## %else11
   2388 ; AVX512F-NEXT:    kshiftlw $10, %k1, %k0
   2389 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   2390 ; AVX512F-NEXT:    kmovw %k0, %eax
   2391 ; AVX512F-NEXT:    testb %al, %al
   2392 ; AVX512F-NEXT:    je LBB50_12
   2393 ; AVX512F-NEXT:  ## BB#11: ## %cond.load13
   2394 ; AVX512F-NEXT:    vpinsrb $5, 5(%rdi), %xmm0, %xmm0
   2395 ; AVX512F-NEXT:  LBB50_12: ## %else14
   2396 ; AVX512F-NEXT:    kshiftlw $9, %k1, %k0
   2397 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   2398 ; AVX512F-NEXT:    kmovw %k0, %eax
   2399 ; AVX512F-NEXT:    testb %al, %al
   2400 ; AVX512F-NEXT:    je LBB50_14
   2401 ; AVX512F-NEXT:  ## BB#13: ## %cond.load16
   2402 ; AVX512F-NEXT:    vpinsrb $6, 6(%rdi), %xmm0, %xmm0
   2403 ; AVX512F-NEXT:  LBB50_14: ## %else17
   2404 ; AVX512F-NEXT:    kshiftlw $8, %k1, %k0
   2405 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   2406 ; AVX512F-NEXT:    kmovw %k0, %eax
   2407 ; AVX512F-NEXT:    testb %al, %al
   2408 ; AVX512F-NEXT:    je LBB50_16
   2409 ; AVX512F-NEXT:  ## BB#15: ## %cond.load19
   2410 ; AVX512F-NEXT:    vpinsrb $7, 7(%rdi), %xmm0, %xmm0
   2411 ; AVX512F-NEXT:  LBB50_16: ## %else20
   2412 ; AVX512F-NEXT:    kshiftlw $7, %k1, %k0
   2413 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   2414 ; AVX512F-NEXT:    kmovw %k0, %eax
   2415 ; AVX512F-NEXT:    testb %al, %al
   2416 ; AVX512F-NEXT:    je LBB50_18
   2417 ; AVX512F-NEXT:  ## BB#17: ## %cond.load22
   2418 ; AVX512F-NEXT:    vpinsrb $8, 8(%rdi), %xmm0, %xmm0
   2419 ; AVX512F-NEXT:  LBB50_18: ## %else23
   2420 ; AVX512F-NEXT:    kshiftlw $6, %k1, %k0
   2421 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   2422 ; AVX512F-NEXT:    kmovw %k0, %eax
   2423 ; AVX512F-NEXT:    testb %al, %al
   2424 ; AVX512F-NEXT:    je LBB50_20
   2425 ; AVX512F-NEXT:  ## BB#19: ## %cond.load25
   2426 ; AVX512F-NEXT:    vpinsrb $9, 9(%rdi), %xmm0, %xmm0
   2427 ; AVX512F-NEXT:  LBB50_20: ## %else26
   2428 ; AVX512F-NEXT:    kshiftlw $5, %k1, %k0
   2429 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   2430 ; AVX512F-NEXT:    kmovw %k0, %eax
   2431 ; AVX512F-NEXT:    testb %al, %al
   2432 ; AVX512F-NEXT:    je LBB50_22
   2433 ; AVX512F-NEXT:  ## BB#21: ## %cond.load28
   2434 ; AVX512F-NEXT:    vpinsrb $10, 10(%rdi), %xmm0, %xmm0
   2435 ; AVX512F-NEXT:  LBB50_22: ## %else29
   2436 ; AVX512F-NEXT:    kshiftlw $4, %k1, %k0
   2437 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   2438 ; AVX512F-NEXT:    kmovw %k0, %eax
   2439 ; AVX512F-NEXT:    testb %al, %al
   2440 ; AVX512F-NEXT:    je LBB50_24
   2441 ; AVX512F-NEXT:  ## BB#23: ## %cond.load31
   2442 ; AVX512F-NEXT:    vpinsrb $11, 11(%rdi), %xmm0, %xmm0
   2443 ; AVX512F-NEXT:  LBB50_24: ## %else32
   2444 ; AVX512F-NEXT:    kshiftlw $3, %k1, %k0
   2445 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   2446 ; AVX512F-NEXT:    kmovw %k0, %eax
   2447 ; AVX512F-NEXT:    testb %al, %al
   2448 ; AVX512F-NEXT:    je LBB50_26
   2449 ; AVX512F-NEXT:  ## BB#25: ## %cond.load34
   2450 ; AVX512F-NEXT:    vpinsrb $12, 12(%rdi), %xmm0, %xmm0
   2451 ; AVX512F-NEXT:  LBB50_26: ## %else35
   2452 ; AVX512F-NEXT:    kshiftlw $2, %k1, %k0
   2453 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   2454 ; AVX512F-NEXT:    kmovw %k0, %eax
   2455 ; AVX512F-NEXT:    testb %al, %al
   2456 ; AVX512F-NEXT:    je LBB50_28
   2457 ; AVX512F-NEXT:  ## BB#27: ## %cond.load37
   2458 ; AVX512F-NEXT:    vpinsrb $13, 13(%rdi), %xmm0, %xmm0
   2459 ; AVX512F-NEXT:  LBB50_28: ## %else38
   2460 ; AVX512F-NEXT:    kshiftlw $1, %k1, %k0
   2461 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   2462 ; AVX512F-NEXT:    kmovw %k0, %eax
   2463 ; AVX512F-NEXT:    testb %al, %al
   2464 ; AVX512F-NEXT:    je LBB50_30
   2465 ; AVX512F-NEXT:  ## BB#29: ## %cond.load40
   2466 ; AVX512F-NEXT:    vpinsrb $14, 14(%rdi), %xmm0, %xmm0
   2467 ; AVX512F-NEXT:  LBB50_30: ## %else41
   2468 ; AVX512F-NEXT:    kshiftlw $0, %k1, %k0
   2469 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   2470 ; AVX512F-NEXT:    kmovw %k0, %eax
   2471 ; AVX512F-NEXT:    testb %al, %al
   2472 ; AVX512F-NEXT:    je LBB50_32
   2473 ; AVX512F-NEXT:  ## BB#31: ## %cond.load43
   2474 ; AVX512F-NEXT:    vpinsrb $15, 15(%rdi), %xmm0, %xmm0
   2475 ; AVX512F-NEXT:  LBB50_32: ## %else44
   2476 ; AVX512F-NEXT:    vpternlogd $255, %zmm1, %zmm1, %zmm1
   2477 ; AVX512F-NEXT:    vmovdqa32 %zmm1, %zmm1 {%k1} {z}
   2478 ; AVX512F-NEXT:    vpmovdb %zmm1, %xmm1
   2479 ; AVX512F-NEXT:    vpblendvb %xmm1, %xmm0, %xmm0, %xmm0
   2480 ; AVX512F-NEXT:    retq
   2481 ;
   2482 ; SKX-LABEL: test_mask_load_16xi8:
   2483 ; SKX:       ## BB#0:
   2484 ; SKX-NEXT:    vpsllw $7, %xmm0, %xmm0
   2485 ; SKX-NEXT:    vpmovb2m %xmm0, %k1
   2486 ; SKX-NEXT:    vmovdqu8 (%rdi), %xmm0 {%k1} {z}
   2487 ; SKX-NEXT:    retq
   2488   %res = call <16 x i8> @llvm.masked.load.v16i8.p0v16i8(<16 x i8>* %addr, i32 4, <16 x i1>%mask, <16 x i8> undef)
   2489   ret <16 x i8> %res
   2490 }
   2491 declare <16 x i8> @llvm.masked.load.v16i8.p0v16i8(<16 x i8>*, i32, <16 x i1>, <16 x i8>)
   2492 
   2493 define <32 x i8> @test_mask_load_32xi8(<32 x i1> %mask, <32 x i8>* %addr, <32 x i8> %val) {
   2494 ; AVX1-LABEL: test_mask_load_32xi8:
   2495 ; AVX1:       ## BB#0:
   2496 ; AVX1-NEXT:    vpextrb $0, %xmm0, %eax
   2497 ; AVX1-NEXT:    ## implicit-def: %YMM1
   2498 ; AVX1-NEXT:    testb $1, %al
   2499 ; AVX1-NEXT:    je LBB51_2
   2500 ; AVX1-NEXT:  ## BB#1: ## %cond.load
   2501 ; AVX1-NEXT:    movzbl (%rdi), %eax
   2502 ; AVX1-NEXT:    vmovd %eax, %xmm1
   2503 ; AVX1-NEXT:  LBB51_2: ## %else
   2504 ; AVX1-NEXT:    vpextrb $1, %xmm0, %eax
   2505 ; AVX1-NEXT:    testb $1, %al
   2506 ; AVX1-NEXT:    je LBB51_4
   2507 ; AVX1-NEXT:  ## BB#3: ## %cond.load1
   2508 ; AVX1-NEXT:    vpinsrb $1, 1(%rdi), %xmm1, %xmm2
   2509 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2510 ; AVX1-NEXT:  LBB51_4: ## %else2
   2511 ; AVX1-NEXT:    vpextrb $2, %xmm0, %eax
   2512 ; AVX1-NEXT:    testb $1, %al
   2513 ; AVX1-NEXT:    je LBB51_6
   2514 ; AVX1-NEXT:  ## BB#5: ## %cond.load4
   2515 ; AVX1-NEXT:    vpinsrb $2, 2(%rdi), %xmm1, %xmm2
   2516 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2517 ; AVX1-NEXT:  LBB51_6: ## %else5
   2518 ; AVX1-NEXT:    vpextrb $3, %xmm0, %eax
   2519 ; AVX1-NEXT:    testb $1, %al
   2520 ; AVX1-NEXT:    je LBB51_8
   2521 ; AVX1-NEXT:  ## BB#7: ## %cond.load7
   2522 ; AVX1-NEXT:    vpinsrb $3, 3(%rdi), %xmm1, %xmm2
   2523 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2524 ; AVX1-NEXT:  LBB51_8: ## %else8
   2525 ; AVX1-NEXT:    vpextrb $4, %xmm0, %eax
   2526 ; AVX1-NEXT:    testb $1, %al
   2527 ; AVX1-NEXT:    je LBB51_10
   2528 ; AVX1-NEXT:  ## BB#9: ## %cond.load10
   2529 ; AVX1-NEXT:    vpinsrb $4, 4(%rdi), %xmm1, %xmm2
   2530 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2531 ; AVX1-NEXT:  LBB51_10: ## %else11
   2532 ; AVX1-NEXT:    vpextrb $5, %xmm0, %eax
   2533 ; AVX1-NEXT:    testb $1, %al
   2534 ; AVX1-NEXT:    je LBB51_12
   2535 ; AVX1-NEXT:  ## BB#11: ## %cond.load13
   2536 ; AVX1-NEXT:    vpinsrb $5, 5(%rdi), %xmm1, %xmm2
   2537 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2538 ; AVX1-NEXT:  LBB51_12: ## %else14
   2539 ; AVX1-NEXT:    vpextrb $6, %xmm0, %eax
   2540 ; AVX1-NEXT:    testb $1, %al
   2541 ; AVX1-NEXT:    je LBB51_14
   2542 ; AVX1-NEXT:  ## BB#13: ## %cond.load16
   2543 ; AVX1-NEXT:    vpinsrb $6, 6(%rdi), %xmm1, %xmm2
   2544 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2545 ; AVX1-NEXT:  LBB51_14: ## %else17
   2546 ; AVX1-NEXT:    vpextrb $7, %xmm0, %eax
   2547 ; AVX1-NEXT:    testb $1, %al
   2548 ; AVX1-NEXT:    je LBB51_16
   2549 ; AVX1-NEXT:  ## BB#15: ## %cond.load19
   2550 ; AVX1-NEXT:    vpinsrb $7, 7(%rdi), %xmm1, %xmm2
   2551 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2552 ; AVX1-NEXT:  LBB51_16: ## %else20
   2553 ; AVX1-NEXT:    vpextrb $8, %xmm0, %eax
   2554 ; AVX1-NEXT:    testb $1, %al
   2555 ; AVX1-NEXT:    je LBB51_18
   2556 ; AVX1-NEXT:  ## BB#17: ## %cond.load22
   2557 ; AVX1-NEXT:    vpinsrb $8, 8(%rdi), %xmm1, %xmm2
   2558 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2559 ; AVX1-NEXT:  LBB51_18: ## %else23
   2560 ; AVX1-NEXT:    vpextrb $9, %xmm0, %eax
   2561 ; AVX1-NEXT:    testb $1, %al
   2562 ; AVX1-NEXT:    je LBB51_20
   2563 ; AVX1-NEXT:  ## BB#19: ## %cond.load25
   2564 ; AVX1-NEXT:    vpinsrb $9, 9(%rdi), %xmm1, %xmm2
   2565 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2566 ; AVX1-NEXT:  LBB51_20: ## %else26
   2567 ; AVX1-NEXT:    vpextrb $10, %xmm0, %eax
   2568 ; AVX1-NEXT:    testb $1, %al
   2569 ; AVX1-NEXT:    je LBB51_22
   2570 ; AVX1-NEXT:  ## BB#21: ## %cond.load28
   2571 ; AVX1-NEXT:    vpinsrb $10, 10(%rdi), %xmm1, %xmm2
   2572 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2573 ; AVX1-NEXT:  LBB51_22: ## %else29
   2574 ; AVX1-NEXT:    vpextrb $11, %xmm0, %eax
   2575 ; AVX1-NEXT:    testb $1, %al
   2576 ; AVX1-NEXT:    je LBB51_24
   2577 ; AVX1-NEXT:  ## BB#23: ## %cond.load31
   2578 ; AVX1-NEXT:    vpinsrb $11, 11(%rdi), %xmm1, %xmm2
   2579 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2580 ; AVX1-NEXT:  LBB51_24: ## %else32
   2581 ; AVX1-NEXT:    vpextrb $12, %xmm0, %eax
   2582 ; AVX1-NEXT:    testb $1, %al
   2583 ; AVX1-NEXT:    je LBB51_26
   2584 ; AVX1-NEXT:  ## BB#25: ## %cond.load34
   2585 ; AVX1-NEXT:    vpinsrb $12, 12(%rdi), %xmm1, %xmm2
   2586 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2587 ; AVX1-NEXT:  LBB51_26: ## %else35
   2588 ; AVX1-NEXT:    vpextrb $13, %xmm0, %eax
   2589 ; AVX1-NEXT:    testb $1, %al
   2590 ; AVX1-NEXT:    je LBB51_28
   2591 ; AVX1-NEXT:  ## BB#27: ## %cond.load37
   2592 ; AVX1-NEXT:    vpinsrb $13, 13(%rdi), %xmm1, %xmm2
   2593 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2594 ; AVX1-NEXT:  LBB51_28: ## %else38
   2595 ; AVX1-NEXT:    vpextrb $14, %xmm0, %eax
   2596 ; AVX1-NEXT:    testb $1, %al
   2597 ; AVX1-NEXT:    je LBB51_30
   2598 ; AVX1-NEXT:  ## BB#29: ## %cond.load40
   2599 ; AVX1-NEXT:    vpinsrb $14, 14(%rdi), %xmm1, %xmm2
   2600 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2601 ; AVX1-NEXT:  LBB51_30: ## %else41
   2602 ; AVX1-NEXT:    vpextrb $15, %xmm0, %eax
   2603 ; AVX1-NEXT:    testb $1, %al
   2604 ; AVX1-NEXT:    je LBB51_32
   2605 ; AVX1-NEXT:  ## BB#31: ## %cond.load43
   2606 ; AVX1-NEXT:    vpinsrb $15, 15(%rdi), %xmm1, %xmm2
   2607 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2608 ; AVX1-NEXT:  LBB51_32: ## %else44
   2609 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
   2610 ; AVX1-NEXT:    vpextrb $0, %xmm2, %eax
   2611 ; AVX1-NEXT:    testb $1, %al
   2612 ; AVX1-NEXT:    je LBB51_34
   2613 ; AVX1-NEXT:  ## BB#33: ## %cond.load46
   2614 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   2615 ; AVX1-NEXT:    vpinsrb $0, 16(%rdi), %xmm3, %xmm3
   2616 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm1, %ymm1
   2617 ; AVX1-NEXT:  LBB51_34: ## %else47
   2618 ; AVX1-NEXT:    vpextrb $1, %xmm2, %eax
   2619 ; AVX1-NEXT:    testb $1, %al
   2620 ; AVX1-NEXT:    je LBB51_36
   2621 ; AVX1-NEXT:  ## BB#35: ## %cond.load49
   2622 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   2623 ; AVX1-NEXT:    vpinsrb $1, 17(%rdi), %xmm3, %xmm3
   2624 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm1, %ymm1
   2625 ; AVX1-NEXT:  LBB51_36: ## %else50
   2626 ; AVX1-NEXT:    vpextrb $2, %xmm2, %eax
   2627 ; AVX1-NEXT:    testb $1, %al
   2628 ; AVX1-NEXT:    je LBB51_38
   2629 ; AVX1-NEXT:  ## BB#37: ## %cond.load52
   2630 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   2631 ; AVX1-NEXT:    vpinsrb $2, 18(%rdi), %xmm3, %xmm3
   2632 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm1, %ymm1
   2633 ; AVX1-NEXT:  LBB51_38: ## %else53
   2634 ; AVX1-NEXT:    vpextrb $3, %xmm2, %eax
   2635 ; AVX1-NEXT:    testb $1, %al
   2636 ; AVX1-NEXT:    je LBB51_40
   2637 ; AVX1-NEXT:  ## BB#39: ## %cond.load55
   2638 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   2639 ; AVX1-NEXT:    vpinsrb $3, 19(%rdi), %xmm3, %xmm3
   2640 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm1, %ymm1
   2641 ; AVX1-NEXT:  LBB51_40: ## %else56
   2642 ; AVX1-NEXT:    vpextrb $4, %xmm2, %eax
   2643 ; AVX1-NEXT:    testb $1, %al
   2644 ; AVX1-NEXT:    je LBB51_42
   2645 ; AVX1-NEXT:  ## BB#41: ## %cond.load58
   2646 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   2647 ; AVX1-NEXT:    vpinsrb $4, 20(%rdi), %xmm3, %xmm3
   2648 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm1, %ymm1
   2649 ; AVX1-NEXT:  LBB51_42: ## %else59
   2650 ; AVX1-NEXT:    vpextrb $5, %xmm2, %eax
   2651 ; AVX1-NEXT:    testb $1, %al
   2652 ; AVX1-NEXT:    je LBB51_44
   2653 ; AVX1-NEXT:  ## BB#43: ## %cond.load61
   2654 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   2655 ; AVX1-NEXT:    vpinsrb $5, 21(%rdi), %xmm3, %xmm3
   2656 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm1, %ymm1
   2657 ; AVX1-NEXT:  LBB51_44: ## %else62
   2658 ; AVX1-NEXT:    vpextrb $6, %xmm2, %eax
   2659 ; AVX1-NEXT:    testb $1, %al
   2660 ; AVX1-NEXT:    je LBB51_46
   2661 ; AVX1-NEXT:  ## BB#45: ## %cond.load64
   2662 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   2663 ; AVX1-NEXT:    vpinsrb $6, 22(%rdi), %xmm3, %xmm3
   2664 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm1, %ymm1
   2665 ; AVX1-NEXT:  LBB51_46: ## %else65
   2666 ; AVX1-NEXT:    vpextrb $7, %xmm2, %eax
   2667 ; AVX1-NEXT:    testb $1, %al
   2668 ; AVX1-NEXT:    je LBB51_48
   2669 ; AVX1-NEXT:  ## BB#47: ## %cond.load67
   2670 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   2671 ; AVX1-NEXT:    vpinsrb $7, 23(%rdi), %xmm3, %xmm3
   2672 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm1, %ymm1
   2673 ; AVX1-NEXT:  LBB51_48: ## %else68
   2674 ; AVX1-NEXT:    vpextrb $8, %xmm2, %eax
   2675 ; AVX1-NEXT:    testb $1, %al
   2676 ; AVX1-NEXT:    je LBB51_50
   2677 ; AVX1-NEXT:  ## BB#49: ## %cond.load70
   2678 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   2679 ; AVX1-NEXT:    vpinsrb $8, 24(%rdi), %xmm3, %xmm3
   2680 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm1, %ymm1
   2681 ; AVX1-NEXT:  LBB51_50: ## %else71
   2682 ; AVX1-NEXT:    vpextrb $9, %xmm2, %eax
   2683 ; AVX1-NEXT:    testb $1, %al
   2684 ; AVX1-NEXT:    je LBB51_52
   2685 ; AVX1-NEXT:  ## BB#51: ## %cond.load73
   2686 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   2687 ; AVX1-NEXT:    vpinsrb $9, 25(%rdi), %xmm3, %xmm3
   2688 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm1, %ymm1
   2689 ; AVX1-NEXT:  LBB51_52: ## %else74
   2690 ; AVX1-NEXT:    vpextrb $10, %xmm2, %eax
   2691 ; AVX1-NEXT:    testb $1, %al
   2692 ; AVX1-NEXT:    je LBB51_54
   2693 ; AVX1-NEXT:  ## BB#53: ## %cond.load76
   2694 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   2695 ; AVX1-NEXT:    vpinsrb $10, 26(%rdi), %xmm3, %xmm3
   2696 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm1, %ymm1
   2697 ; AVX1-NEXT:  LBB51_54: ## %else77
   2698 ; AVX1-NEXT:    vpextrb $11, %xmm2, %eax
   2699 ; AVX1-NEXT:    testb $1, %al
   2700 ; AVX1-NEXT:    je LBB51_56
   2701 ; AVX1-NEXT:  ## BB#55: ## %cond.load79
   2702 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   2703 ; AVX1-NEXT:    vpinsrb $11, 27(%rdi), %xmm3, %xmm3
   2704 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm1, %ymm1
   2705 ; AVX1-NEXT:  LBB51_56: ## %else80
   2706 ; AVX1-NEXT:    vpextrb $12, %xmm2, %eax
   2707 ; AVX1-NEXT:    testb $1, %al
   2708 ; AVX1-NEXT:    je LBB51_58
   2709 ; AVX1-NEXT:  ## BB#57: ## %cond.load82
   2710 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   2711 ; AVX1-NEXT:    vpinsrb $12, 28(%rdi), %xmm3, %xmm3
   2712 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm1, %ymm1
   2713 ; AVX1-NEXT:  LBB51_58: ## %else83
   2714 ; AVX1-NEXT:    vpextrb $13, %xmm2, %eax
   2715 ; AVX1-NEXT:    testb $1, %al
   2716 ; AVX1-NEXT:    je LBB51_60
   2717 ; AVX1-NEXT:  ## BB#59: ## %cond.load85
   2718 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   2719 ; AVX1-NEXT:    vpinsrb $13, 29(%rdi), %xmm3, %xmm3
   2720 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm1, %ymm1
   2721 ; AVX1-NEXT:  LBB51_60: ## %else86
   2722 ; AVX1-NEXT:    vpextrb $14, %xmm2, %eax
   2723 ; AVX1-NEXT:    testb $1, %al
   2724 ; AVX1-NEXT:    je LBB51_62
   2725 ; AVX1-NEXT:  ## BB#61: ## %cond.load88
   2726 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   2727 ; AVX1-NEXT:    vpinsrb $14, 30(%rdi), %xmm3, %xmm3
   2728 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm1, %ymm1
   2729 ; AVX1-NEXT:  LBB51_62: ## %else89
   2730 ; AVX1-NEXT:    vpextrb $15, %xmm2, %eax
   2731 ; AVX1-NEXT:    testb $1, %al
   2732 ; AVX1-NEXT:    je LBB51_64
   2733 ; AVX1-NEXT:  ## BB#63: ## %cond.load91
   2734 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   2735 ; AVX1-NEXT:    vpinsrb $15, 31(%rdi), %xmm3, %xmm3
   2736 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm1, %ymm1
   2737 ; AVX1-NEXT:  LBB51_64: ## %else92
   2738 ; AVX1-NEXT:    vpsllw $7, %xmm2, %xmm2
   2739 ; AVX1-NEXT:    vmovdqa {{.*#+}} xmm3 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128]
   2740 ; AVX1-NEXT:    vpand %xmm3, %xmm2, %xmm2
   2741 ; AVX1-NEXT:    vpxor %xmm4, %xmm4, %xmm4
   2742 ; AVX1-NEXT:    vpcmpgtb %xmm2, %xmm4, %xmm2
   2743 ; AVX1-NEXT:    vpsllw $7, %xmm0, %xmm0
   2744 ; AVX1-NEXT:    vpand %xmm3, %xmm0, %xmm0
   2745 ; AVX1-NEXT:    vpcmpgtb %xmm0, %xmm4, %xmm0
   2746 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
   2747 ; AVX1-NEXT:    vandps %ymm1, %ymm0, %ymm0
   2748 ; AVX1-NEXT:    retq
   2749 ;
   2750 ; AVX2-LABEL: test_mask_load_32xi8:
   2751 ; AVX2:       ## BB#0:
   2752 ; AVX2-NEXT:    vpextrb $0, %xmm0, %eax
   2753 ; AVX2-NEXT:    ## implicit-def: %YMM1
   2754 ; AVX2-NEXT:    testb $1, %al
   2755 ; AVX2-NEXT:    je LBB51_2
   2756 ; AVX2-NEXT:  ## BB#1: ## %cond.load
   2757 ; AVX2-NEXT:    movzbl (%rdi), %eax
   2758 ; AVX2-NEXT:    vmovd %eax, %xmm1
   2759 ; AVX2-NEXT:  LBB51_2: ## %else
   2760 ; AVX2-NEXT:    vpextrb $1, %xmm0, %eax
   2761 ; AVX2-NEXT:    testb $1, %al
   2762 ; AVX2-NEXT:    je LBB51_4
   2763 ; AVX2-NEXT:  ## BB#3: ## %cond.load1
   2764 ; AVX2-NEXT:    vpinsrb $1, 1(%rdi), %xmm1, %xmm2
   2765 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2766 ; AVX2-NEXT:  LBB51_4: ## %else2
   2767 ; AVX2-NEXT:    vpextrb $2, %xmm0, %eax
   2768 ; AVX2-NEXT:    testb $1, %al
   2769 ; AVX2-NEXT:    je LBB51_6
   2770 ; AVX2-NEXT:  ## BB#5: ## %cond.load4
   2771 ; AVX2-NEXT:    vpinsrb $2, 2(%rdi), %xmm1, %xmm2
   2772 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2773 ; AVX2-NEXT:  LBB51_6: ## %else5
   2774 ; AVX2-NEXT:    vpextrb $3, %xmm0, %eax
   2775 ; AVX2-NEXT:    testb $1, %al
   2776 ; AVX2-NEXT:    je LBB51_8
   2777 ; AVX2-NEXT:  ## BB#7: ## %cond.load7
   2778 ; AVX2-NEXT:    vpinsrb $3, 3(%rdi), %xmm1, %xmm2
   2779 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2780 ; AVX2-NEXT:  LBB51_8: ## %else8
   2781 ; AVX2-NEXT:    vpextrb $4, %xmm0, %eax
   2782 ; AVX2-NEXT:    testb $1, %al
   2783 ; AVX2-NEXT:    je LBB51_10
   2784 ; AVX2-NEXT:  ## BB#9: ## %cond.load10
   2785 ; AVX2-NEXT:    vpinsrb $4, 4(%rdi), %xmm1, %xmm2
   2786 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2787 ; AVX2-NEXT:  LBB51_10: ## %else11
   2788 ; AVX2-NEXT:    vpextrb $5, %xmm0, %eax
   2789 ; AVX2-NEXT:    testb $1, %al
   2790 ; AVX2-NEXT:    je LBB51_12
   2791 ; AVX2-NEXT:  ## BB#11: ## %cond.load13
   2792 ; AVX2-NEXT:    vpinsrb $5, 5(%rdi), %xmm1, %xmm2
   2793 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2794 ; AVX2-NEXT:  LBB51_12: ## %else14
   2795 ; AVX2-NEXT:    vpextrb $6, %xmm0, %eax
   2796 ; AVX2-NEXT:    testb $1, %al
   2797 ; AVX2-NEXT:    je LBB51_14
   2798 ; AVX2-NEXT:  ## BB#13: ## %cond.load16
   2799 ; AVX2-NEXT:    vpinsrb $6, 6(%rdi), %xmm1, %xmm2
   2800 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2801 ; AVX2-NEXT:  LBB51_14: ## %else17
   2802 ; AVX2-NEXT:    vpextrb $7, %xmm0, %eax
   2803 ; AVX2-NEXT:    testb $1, %al
   2804 ; AVX2-NEXT:    je LBB51_16
   2805 ; AVX2-NEXT:  ## BB#15: ## %cond.load19
   2806 ; AVX2-NEXT:    vpinsrb $7, 7(%rdi), %xmm1, %xmm2
   2807 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2808 ; AVX2-NEXT:  LBB51_16: ## %else20
   2809 ; AVX2-NEXT:    vpextrb $8, %xmm0, %eax
   2810 ; AVX2-NEXT:    testb $1, %al
   2811 ; AVX2-NEXT:    je LBB51_18
   2812 ; AVX2-NEXT:  ## BB#17: ## %cond.load22
   2813 ; AVX2-NEXT:    vpinsrb $8, 8(%rdi), %xmm1, %xmm2
   2814 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2815 ; AVX2-NEXT:  LBB51_18: ## %else23
   2816 ; AVX2-NEXT:    vpextrb $9, %xmm0, %eax
   2817 ; AVX2-NEXT:    testb $1, %al
   2818 ; AVX2-NEXT:    je LBB51_20
   2819 ; AVX2-NEXT:  ## BB#19: ## %cond.load25
   2820 ; AVX2-NEXT:    vpinsrb $9, 9(%rdi), %xmm1, %xmm2
   2821 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2822 ; AVX2-NEXT:  LBB51_20: ## %else26
   2823 ; AVX2-NEXT:    vpextrb $10, %xmm0, %eax
   2824 ; AVX2-NEXT:    testb $1, %al
   2825 ; AVX2-NEXT:    je LBB51_22
   2826 ; AVX2-NEXT:  ## BB#21: ## %cond.load28
   2827 ; AVX2-NEXT:    vpinsrb $10, 10(%rdi), %xmm1, %xmm2
   2828 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2829 ; AVX2-NEXT:  LBB51_22: ## %else29
   2830 ; AVX2-NEXT:    vpextrb $11, %xmm0, %eax
   2831 ; AVX2-NEXT:    testb $1, %al
   2832 ; AVX2-NEXT:    je LBB51_24
   2833 ; AVX2-NEXT:  ## BB#23: ## %cond.load31
   2834 ; AVX2-NEXT:    vpinsrb $11, 11(%rdi), %xmm1, %xmm2
   2835 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2836 ; AVX2-NEXT:  LBB51_24: ## %else32
   2837 ; AVX2-NEXT:    vpextrb $12, %xmm0, %eax
   2838 ; AVX2-NEXT:    testb $1, %al
   2839 ; AVX2-NEXT:    je LBB51_26
   2840 ; AVX2-NEXT:  ## BB#25: ## %cond.load34
   2841 ; AVX2-NEXT:    vpinsrb $12, 12(%rdi), %xmm1, %xmm2
   2842 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2843 ; AVX2-NEXT:  LBB51_26: ## %else35
   2844 ; AVX2-NEXT:    vpextrb $13, %xmm0, %eax
   2845 ; AVX2-NEXT:    testb $1, %al
   2846 ; AVX2-NEXT:    je LBB51_28
   2847 ; AVX2-NEXT:  ## BB#27: ## %cond.load37
   2848 ; AVX2-NEXT:    vpinsrb $13, 13(%rdi), %xmm1, %xmm2
   2849 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2850 ; AVX2-NEXT:  LBB51_28: ## %else38
   2851 ; AVX2-NEXT:    vpextrb $14, %xmm0, %eax
   2852 ; AVX2-NEXT:    testb $1, %al
   2853 ; AVX2-NEXT:    je LBB51_30
   2854 ; AVX2-NEXT:  ## BB#29: ## %cond.load40
   2855 ; AVX2-NEXT:    vpinsrb $14, 14(%rdi), %xmm1, %xmm2
   2856 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2857 ; AVX2-NEXT:  LBB51_30: ## %else41
   2858 ; AVX2-NEXT:    vpextrb $15, %xmm0, %eax
   2859 ; AVX2-NEXT:    testb $1, %al
   2860 ; AVX2-NEXT:    je LBB51_32
   2861 ; AVX2-NEXT:  ## BB#31: ## %cond.load43
   2862 ; AVX2-NEXT:    vpinsrb $15, 15(%rdi), %xmm1, %xmm2
   2863 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   2864 ; AVX2-NEXT:  LBB51_32: ## %else44
   2865 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm2
   2866 ; AVX2-NEXT:    vpextrb $0, %xmm2, %eax
   2867 ; AVX2-NEXT:    testb $1, %al
   2868 ; AVX2-NEXT:    je LBB51_34
   2869 ; AVX2-NEXT:  ## BB#33: ## %cond.load46
   2870 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm3
   2871 ; AVX2-NEXT:    vpinsrb $0, 16(%rdi), %xmm3, %xmm3
   2872 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   2873 ; AVX2-NEXT:  LBB51_34: ## %else47
   2874 ; AVX2-NEXT:    vpextrb $1, %xmm2, %eax
   2875 ; AVX2-NEXT:    testb $1, %al
   2876 ; AVX2-NEXT:    je LBB51_36
   2877 ; AVX2-NEXT:  ## BB#35: ## %cond.load49
   2878 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm3
   2879 ; AVX2-NEXT:    vpinsrb $1, 17(%rdi), %xmm3, %xmm3
   2880 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   2881 ; AVX2-NEXT:  LBB51_36: ## %else50
   2882 ; AVX2-NEXT:    vpextrb $2, %xmm2, %eax
   2883 ; AVX2-NEXT:    testb $1, %al
   2884 ; AVX2-NEXT:    je LBB51_38
   2885 ; AVX2-NEXT:  ## BB#37: ## %cond.load52
   2886 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm3
   2887 ; AVX2-NEXT:    vpinsrb $2, 18(%rdi), %xmm3, %xmm3
   2888 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   2889 ; AVX2-NEXT:  LBB51_38: ## %else53
   2890 ; AVX2-NEXT:    vpextrb $3, %xmm2, %eax
   2891 ; AVX2-NEXT:    testb $1, %al
   2892 ; AVX2-NEXT:    je LBB51_40
   2893 ; AVX2-NEXT:  ## BB#39: ## %cond.load55
   2894 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm3
   2895 ; AVX2-NEXT:    vpinsrb $3, 19(%rdi), %xmm3, %xmm3
   2896 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   2897 ; AVX2-NEXT:  LBB51_40: ## %else56
   2898 ; AVX2-NEXT:    vpextrb $4, %xmm2, %eax
   2899 ; AVX2-NEXT:    testb $1, %al
   2900 ; AVX2-NEXT:    je LBB51_42
   2901 ; AVX2-NEXT:  ## BB#41: ## %cond.load58
   2902 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm3
   2903 ; AVX2-NEXT:    vpinsrb $4, 20(%rdi), %xmm3, %xmm3
   2904 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   2905 ; AVX2-NEXT:  LBB51_42: ## %else59
   2906 ; AVX2-NEXT:    vpextrb $5, %xmm2, %eax
   2907 ; AVX2-NEXT:    testb $1, %al
   2908 ; AVX2-NEXT:    je LBB51_44
   2909 ; AVX2-NEXT:  ## BB#43: ## %cond.load61
   2910 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm3
   2911 ; AVX2-NEXT:    vpinsrb $5, 21(%rdi), %xmm3, %xmm3
   2912 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   2913 ; AVX2-NEXT:  LBB51_44: ## %else62
   2914 ; AVX2-NEXT:    vpextrb $6, %xmm2, %eax
   2915 ; AVX2-NEXT:    testb $1, %al
   2916 ; AVX2-NEXT:    je LBB51_46
   2917 ; AVX2-NEXT:  ## BB#45: ## %cond.load64
   2918 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm3
   2919 ; AVX2-NEXT:    vpinsrb $6, 22(%rdi), %xmm3, %xmm3
   2920 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   2921 ; AVX2-NEXT:  LBB51_46: ## %else65
   2922 ; AVX2-NEXT:    vpextrb $7, %xmm2, %eax
   2923 ; AVX2-NEXT:    testb $1, %al
   2924 ; AVX2-NEXT:    je LBB51_48
   2925 ; AVX2-NEXT:  ## BB#47: ## %cond.load67
   2926 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm3
   2927 ; AVX2-NEXT:    vpinsrb $7, 23(%rdi), %xmm3, %xmm3
   2928 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   2929 ; AVX2-NEXT:  LBB51_48: ## %else68
   2930 ; AVX2-NEXT:    vpextrb $8, %xmm2, %eax
   2931 ; AVX2-NEXT:    testb $1, %al
   2932 ; AVX2-NEXT:    je LBB51_50
   2933 ; AVX2-NEXT:  ## BB#49: ## %cond.load70
   2934 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm3
   2935 ; AVX2-NEXT:    vpinsrb $8, 24(%rdi), %xmm3, %xmm3
   2936 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   2937 ; AVX2-NEXT:  LBB51_50: ## %else71
   2938 ; AVX2-NEXT:    vpextrb $9, %xmm2, %eax
   2939 ; AVX2-NEXT:    testb $1, %al
   2940 ; AVX2-NEXT:    je LBB51_52
   2941 ; AVX2-NEXT:  ## BB#51: ## %cond.load73
   2942 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm3
   2943 ; AVX2-NEXT:    vpinsrb $9, 25(%rdi), %xmm3, %xmm3
   2944 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   2945 ; AVX2-NEXT:  LBB51_52: ## %else74
   2946 ; AVX2-NEXT:    vpextrb $10, %xmm2, %eax
   2947 ; AVX2-NEXT:    testb $1, %al
   2948 ; AVX2-NEXT:    je LBB51_54
   2949 ; AVX2-NEXT:  ## BB#53: ## %cond.load76
   2950 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm3
   2951 ; AVX2-NEXT:    vpinsrb $10, 26(%rdi), %xmm3, %xmm3
   2952 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   2953 ; AVX2-NEXT:  LBB51_54: ## %else77
   2954 ; AVX2-NEXT:    vpextrb $11, %xmm2, %eax
   2955 ; AVX2-NEXT:    testb $1, %al
   2956 ; AVX2-NEXT:    je LBB51_56
   2957 ; AVX2-NEXT:  ## BB#55: ## %cond.load79
   2958 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm3
   2959 ; AVX2-NEXT:    vpinsrb $11, 27(%rdi), %xmm3, %xmm3
   2960 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   2961 ; AVX2-NEXT:  LBB51_56: ## %else80
   2962 ; AVX2-NEXT:    vpextrb $12, %xmm2, %eax
   2963 ; AVX2-NEXT:    testb $1, %al
   2964 ; AVX2-NEXT:    je LBB51_58
   2965 ; AVX2-NEXT:  ## BB#57: ## %cond.load82
   2966 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm3
   2967 ; AVX2-NEXT:    vpinsrb $12, 28(%rdi), %xmm3, %xmm3
   2968 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   2969 ; AVX2-NEXT:  LBB51_58: ## %else83
   2970 ; AVX2-NEXT:    vpextrb $13, %xmm2, %eax
   2971 ; AVX2-NEXT:    testb $1, %al
   2972 ; AVX2-NEXT:    je LBB51_60
   2973 ; AVX2-NEXT:  ## BB#59: ## %cond.load85
   2974 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm3
   2975 ; AVX2-NEXT:    vpinsrb $13, 29(%rdi), %xmm3, %xmm3
   2976 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   2977 ; AVX2-NEXT:  LBB51_60: ## %else86
   2978 ; AVX2-NEXT:    vpextrb $14, %xmm2, %eax
   2979 ; AVX2-NEXT:    testb $1, %al
   2980 ; AVX2-NEXT:    je LBB51_62
   2981 ; AVX2-NEXT:  ## BB#61: ## %cond.load88
   2982 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm3
   2983 ; AVX2-NEXT:    vpinsrb $14, 30(%rdi), %xmm3, %xmm3
   2984 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   2985 ; AVX2-NEXT:  LBB51_62: ## %else89
   2986 ; AVX2-NEXT:    vpextrb $15, %xmm2, %eax
   2987 ; AVX2-NEXT:    testb $1, %al
   2988 ; AVX2-NEXT:    je LBB51_64
   2989 ; AVX2-NEXT:  ## BB#63: ## %cond.load91
   2990 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   2991 ; AVX2-NEXT:    vpinsrb $15, 31(%rdi), %xmm2, %xmm2
   2992 ; AVX2-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   2993 ; AVX2-NEXT:  LBB51_64: ## %else92
   2994 ; AVX2-NEXT:    vpsllw $7, %ymm0, %ymm0
   2995 ; AVX2-NEXT:    vpand {{.*}}(%rip), %ymm0, %ymm0
   2996 ; AVX2-NEXT:    vpxor %ymm2, %ymm2, %ymm2
   2997 ; AVX2-NEXT:    vpcmpgtb %ymm0, %ymm2, %ymm0
   2998 ; AVX2-NEXT:    vpand %ymm1, %ymm0, %ymm0
   2999 ; AVX2-NEXT:    retq
   3000 ;
   3001 ; AVX512F-LABEL: test_mask_load_32xi8:
   3002 ; AVX512F:       ## BB#0:
   3003 ; AVX512F-NEXT:    vpextrb $0, %xmm0, %eax
   3004 ; AVX512F-NEXT:    ## implicit-def: %YMM1
   3005 ; AVX512F-NEXT:    testb $1, %al
   3006 ; AVX512F-NEXT:    je LBB51_2
   3007 ; AVX512F-NEXT:  ## BB#1: ## %cond.load
   3008 ; AVX512F-NEXT:    movzbl (%rdi), %eax
   3009 ; AVX512F-NEXT:    vmovd %eax, %xmm1
   3010 ; AVX512F-NEXT:  LBB51_2: ## %else
   3011 ; AVX512F-NEXT:    vpextrb $1, %xmm0, %eax
   3012 ; AVX512F-NEXT:    testb $1, %al
   3013 ; AVX512F-NEXT:    je LBB51_4
   3014 ; AVX512F-NEXT:  ## BB#3: ## %cond.load1
   3015 ; AVX512F-NEXT:    vpinsrb $1, 1(%rdi), %xmm1, %xmm2
   3016 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   3017 ; AVX512F-NEXT:  LBB51_4: ## %else2
   3018 ; AVX512F-NEXT:    vpextrb $2, %xmm0, %eax
   3019 ; AVX512F-NEXT:    testb $1, %al
   3020 ; AVX512F-NEXT:    je LBB51_6
   3021 ; AVX512F-NEXT:  ## BB#5: ## %cond.load4
   3022 ; AVX512F-NEXT:    vpinsrb $2, 2(%rdi), %xmm1, %xmm2
   3023 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   3024 ; AVX512F-NEXT:  LBB51_6: ## %else5
   3025 ; AVX512F-NEXT:    vpextrb $3, %xmm0, %eax
   3026 ; AVX512F-NEXT:    testb $1, %al
   3027 ; AVX512F-NEXT:    je LBB51_8
   3028 ; AVX512F-NEXT:  ## BB#7: ## %cond.load7
   3029 ; AVX512F-NEXT:    vpinsrb $3, 3(%rdi), %xmm1, %xmm2
   3030 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   3031 ; AVX512F-NEXT:  LBB51_8: ## %else8
   3032 ; AVX512F-NEXT:    vpextrb $4, %xmm0, %eax
   3033 ; AVX512F-NEXT:    testb $1, %al
   3034 ; AVX512F-NEXT:    je LBB51_10
   3035 ; AVX512F-NEXT:  ## BB#9: ## %cond.load10
   3036 ; AVX512F-NEXT:    vpinsrb $4, 4(%rdi), %xmm1, %xmm2
   3037 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   3038 ; AVX512F-NEXT:  LBB51_10: ## %else11
   3039 ; AVX512F-NEXT:    vpextrb $5, %xmm0, %eax
   3040 ; AVX512F-NEXT:    testb $1, %al
   3041 ; AVX512F-NEXT:    je LBB51_12
   3042 ; AVX512F-NEXT:  ## BB#11: ## %cond.load13
   3043 ; AVX512F-NEXT:    vpinsrb $5, 5(%rdi), %xmm1, %xmm2
   3044 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   3045 ; AVX512F-NEXT:  LBB51_12: ## %else14
   3046 ; AVX512F-NEXT:    vpextrb $6, %xmm0, %eax
   3047 ; AVX512F-NEXT:    testb $1, %al
   3048 ; AVX512F-NEXT:    je LBB51_14
   3049 ; AVX512F-NEXT:  ## BB#13: ## %cond.load16
   3050 ; AVX512F-NEXT:    vpinsrb $6, 6(%rdi), %xmm1, %xmm2
   3051 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   3052 ; AVX512F-NEXT:  LBB51_14: ## %else17
   3053 ; AVX512F-NEXT:    vpextrb $7, %xmm0, %eax
   3054 ; AVX512F-NEXT:    testb $1, %al
   3055 ; AVX512F-NEXT:    je LBB51_16
   3056 ; AVX512F-NEXT:  ## BB#15: ## %cond.load19
   3057 ; AVX512F-NEXT:    vpinsrb $7, 7(%rdi), %xmm1, %xmm2
   3058 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   3059 ; AVX512F-NEXT:  LBB51_16: ## %else20
   3060 ; AVX512F-NEXT:    vpextrb $8, %xmm0, %eax
   3061 ; AVX512F-NEXT:    testb $1, %al
   3062 ; AVX512F-NEXT:    je LBB51_18
   3063 ; AVX512F-NEXT:  ## BB#17: ## %cond.load22
   3064 ; AVX512F-NEXT:    vpinsrb $8, 8(%rdi), %xmm1, %xmm2
   3065 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   3066 ; AVX512F-NEXT:  LBB51_18: ## %else23
   3067 ; AVX512F-NEXT:    vpextrb $9, %xmm0, %eax
   3068 ; AVX512F-NEXT:    testb $1, %al
   3069 ; AVX512F-NEXT:    je LBB51_20
   3070 ; AVX512F-NEXT:  ## BB#19: ## %cond.load25
   3071 ; AVX512F-NEXT:    vpinsrb $9, 9(%rdi), %xmm1, %xmm2
   3072 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   3073 ; AVX512F-NEXT:  LBB51_20: ## %else26
   3074 ; AVX512F-NEXT:    vpextrb $10, %xmm0, %eax
   3075 ; AVX512F-NEXT:    testb $1, %al
   3076 ; AVX512F-NEXT:    je LBB51_22
   3077 ; AVX512F-NEXT:  ## BB#21: ## %cond.load28
   3078 ; AVX512F-NEXT:    vpinsrb $10, 10(%rdi), %xmm1, %xmm2
   3079 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   3080 ; AVX512F-NEXT:  LBB51_22: ## %else29
   3081 ; AVX512F-NEXT:    vpextrb $11, %xmm0, %eax
   3082 ; AVX512F-NEXT:    testb $1, %al
   3083 ; AVX512F-NEXT:    je LBB51_24
   3084 ; AVX512F-NEXT:  ## BB#23: ## %cond.load31
   3085 ; AVX512F-NEXT:    vpinsrb $11, 11(%rdi), %xmm1, %xmm2
   3086 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   3087 ; AVX512F-NEXT:  LBB51_24: ## %else32
   3088 ; AVX512F-NEXT:    vpextrb $12, %xmm0, %eax
   3089 ; AVX512F-NEXT:    testb $1, %al
   3090 ; AVX512F-NEXT:    je LBB51_26
   3091 ; AVX512F-NEXT:  ## BB#25: ## %cond.load34
   3092 ; AVX512F-NEXT:    vpinsrb $12, 12(%rdi), %xmm1, %xmm2
   3093 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   3094 ; AVX512F-NEXT:  LBB51_26: ## %else35
   3095 ; AVX512F-NEXT:    vpextrb $13, %xmm0, %eax
   3096 ; AVX512F-NEXT:    testb $1, %al
   3097 ; AVX512F-NEXT:    je LBB51_28
   3098 ; AVX512F-NEXT:  ## BB#27: ## %cond.load37
   3099 ; AVX512F-NEXT:    vpinsrb $13, 13(%rdi), %xmm1, %xmm2
   3100 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   3101 ; AVX512F-NEXT:  LBB51_28: ## %else38
   3102 ; AVX512F-NEXT:    vpextrb $14, %xmm0, %eax
   3103 ; AVX512F-NEXT:    testb $1, %al
   3104 ; AVX512F-NEXT:    je LBB51_30
   3105 ; AVX512F-NEXT:  ## BB#29: ## %cond.load40
   3106 ; AVX512F-NEXT:    vpinsrb $14, 14(%rdi), %xmm1, %xmm2
   3107 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   3108 ; AVX512F-NEXT:  LBB51_30: ## %else41
   3109 ; AVX512F-NEXT:    vpextrb $15, %xmm0, %eax
   3110 ; AVX512F-NEXT:    testb $1, %al
   3111 ; AVX512F-NEXT:    je LBB51_32
   3112 ; AVX512F-NEXT:  ## BB#31: ## %cond.load43
   3113 ; AVX512F-NEXT:    vpinsrb $15, 15(%rdi), %xmm1, %xmm2
   3114 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   3115 ; AVX512F-NEXT:  LBB51_32: ## %else44
   3116 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm2
   3117 ; AVX512F-NEXT:    vpextrb $0, %xmm2, %eax
   3118 ; AVX512F-NEXT:    testb $1, %al
   3119 ; AVX512F-NEXT:    je LBB51_34
   3120 ; AVX512F-NEXT:  ## BB#33: ## %cond.load46
   3121 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm3
   3122 ; AVX512F-NEXT:    vpinsrb $0, 16(%rdi), %xmm3, %xmm3
   3123 ; AVX512F-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   3124 ; AVX512F-NEXT:  LBB51_34: ## %else47
   3125 ; AVX512F-NEXT:    vpextrb $1, %xmm2, %eax
   3126 ; AVX512F-NEXT:    testb $1, %al
   3127 ; AVX512F-NEXT:    je LBB51_36
   3128 ; AVX512F-NEXT:  ## BB#35: ## %cond.load49
   3129 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm3
   3130 ; AVX512F-NEXT:    vpinsrb $1, 17(%rdi), %xmm3, %xmm3
   3131 ; AVX512F-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   3132 ; AVX512F-NEXT:  LBB51_36: ## %else50
   3133 ; AVX512F-NEXT:    vpextrb $2, %xmm2, %eax
   3134 ; AVX512F-NEXT:    testb $1, %al
   3135 ; AVX512F-NEXT:    je LBB51_38
   3136 ; AVX512F-NEXT:  ## BB#37: ## %cond.load52
   3137 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm3
   3138 ; AVX512F-NEXT:    vpinsrb $2, 18(%rdi), %xmm3, %xmm3
   3139 ; AVX512F-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   3140 ; AVX512F-NEXT:  LBB51_38: ## %else53
   3141 ; AVX512F-NEXT:    vpextrb $3, %xmm2, %eax
   3142 ; AVX512F-NEXT:    testb $1, %al
   3143 ; AVX512F-NEXT:    je LBB51_40
   3144 ; AVX512F-NEXT:  ## BB#39: ## %cond.load55
   3145 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm3
   3146 ; AVX512F-NEXT:    vpinsrb $3, 19(%rdi), %xmm3, %xmm3
   3147 ; AVX512F-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   3148 ; AVX512F-NEXT:  LBB51_40: ## %else56
   3149 ; AVX512F-NEXT:    vpextrb $4, %xmm2, %eax
   3150 ; AVX512F-NEXT:    testb $1, %al
   3151 ; AVX512F-NEXT:    je LBB51_42
   3152 ; AVX512F-NEXT:  ## BB#41: ## %cond.load58
   3153 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm3
   3154 ; AVX512F-NEXT:    vpinsrb $4, 20(%rdi), %xmm3, %xmm3
   3155 ; AVX512F-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   3156 ; AVX512F-NEXT:  LBB51_42: ## %else59
   3157 ; AVX512F-NEXT:    vpextrb $5, %xmm2, %eax
   3158 ; AVX512F-NEXT:    testb $1, %al
   3159 ; AVX512F-NEXT:    je LBB51_44
   3160 ; AVX512F-NEXT:  ## BB#43: ## %cond.load61
   3161 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm3
   3162 ; AVX512F-NEXT:    vpinsrb $5, 21(%rdi), %xmm3, %xmm3
   3163 ; AVX512F-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   3164 ; AVX512F-NEXT:  LBB51_44: ## %else62
   3165 ; AVX512F-NEXT:    vpextrb $6, %xmm2, %eax
   3166 ; AVX512F-NEXT:    testb $1, %al
   3167 ; AVX512F-NEXT:    je LBB51_46
   3168 ; AVX512F-NEXT:  ## BB#45: ## %cond.load64
   3169 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm3
   3170 ; AVX512F-NEXT:    vpinsrb $6, 22(%rdi), %xmm3, %xmm3
   3171 ; AVX512F-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   3172 ; AVX512F-NEXT:  LBB51_46: ## %else65
   3173 ; AVX512F-NEXT:    vpextrb $7, %xmm2, %eax
   3174 ; AVX512F-NEXT:    testb $1, %al
   3175 ; AVX512F-NEXT:    je LBB51_48
   3176 ; AVX512F-NEXT:  ## BB#47: ## %cond.load67
   3177 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm3
   3178 ; AVX512F-NEXT:    vpinsrb $7, 23(%rdi), %xmm3, %xmm3
   3179 ; AVX512F-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   3180 ; AVX512F-NEXT:  LBB51_48: ## %else68
   3181 ; AVX512F-NEXT:    vpextrb $8, %xmm2, %eax
   3182 ; AVX512F-NEXT:    testb $1, %al
   3183 ; AVX512F-NEXT:    je LBB51_50
   3184 ; AVX512F-NEXT:  ## BB#49: ## %cond.load70
   3185 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm3
   3186 ; AVX512F-NEXT:    vpinsrb $8, 24(%rdi), %xmm3, %xmm3
   3187 ; AVX512F-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   3188 ; AVX512F-NEXT:  LBB51_50: ## %else71
   3189 ; AVX512F-NEXT:    vpextrb $9, %xmm2, %eax
   3190 ; AVX512F-NEXT:    testb $1, %al
   3191 ; AVX512F-NEXT:    je LBB51_52
   3192 ; AVX512F-NEXT:  ## BB#51: ## %cond.load73
   3193 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm3
   3194 ; AVX512F-NEXT:    vpinsrb $9, 25(%rdi), %xmm3, %xmm3
   3195 ; AVX512F-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   3196 ; AVX512F-NEXT:  LBB51_52: ## %else74
   3197 ; AVX512F-NEXT:    vpextrb $10, %xmm2, %eax
   3198 ; AVX512F-NEXT:    testb $1, %al
   3199 ; AVX512F-NEXT:    je LBB51_54
   3200 ; AVX512F-NEXT:  ## BB#53: ## %cond.load76
   3201 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm3
   3202 ; AVX512F-NEXT:    vpinsrb $10, 26(%rdi), %xmm3, %xmm3
   3203 ; AVX512F-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   3204 ; AVX512F-NEXT:  LBB51_54: ## %else77
   3205 ; AVX512F-NEXT:    vpextrb $11, %xmm2, %eax
   3206 ; AVX512F-NEXT:    testb $1, %al
   3207 ; AVX512F-NEXT:    je LBB51_56
   3208 ; AVX512F-NEXT:  ## BB#55: ## %cond.load79
   3209 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm3
   3210 ; AVX512F-NEXT:    vpinsrb $11, 27(%rdi), %xmm3, %xmm3
   3211 ; AVX512F-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   3212 ; AVX512F-NEXT:  LBB51_56: ## %else80
   3213 ; AVX512F-NEXT:    vpextrb $12, %xmm2, %eax
   3214 ; AVX512F-NEXT:    testb $1, %al
   3215 ; AVX512F-NEXT:    je LBB51_58
   3216 ; AVX512F-NEXT:  ## BB#57: ## %cond.load82
   3217 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm3
   3218 ; AVX512F-NEXT:    vpinsrb $12, 28(%rdi), %xmm3, %xmm3
   3219 ; AVX512F-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   3220 ; AVX512F-NEXT:  LBB51_58: ## %else83
   3221 ; AVX512F-NEXT:    vpextrb $13, %xmm2, %eax
   3222 ; AVX512F-NEXT:    testb $1, %al
   3223 ; AVX512F-NEXT:    je LBB51_60
   3224 ; AVX512F-NEXT:  ## BB#59: ## %cond.load85
   3225 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm3
   3226 ; AVX512F-NEXT:    vpinsrb $13, 29(%rdi), %xmm3, %xmm3
   3227 ; AVX512F-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   3228 ; AVX512F-NEXT:  LBB51_60: ## %else86
   3229 ; AVX512F-NEXT:    vpextrb $14, %xmm2, %eax
   3230 ; AVX512F-NEXT:    testb $1, %al
   3231 ; AVX512F-NEXT:    je LBB51_62
   3232 ; AVX512F-NEXT:  ## BB#61: ## %cond.load88
   3233 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm3
   3234 ; AVX512F-NEXT:    vpinsrb $14, 30(%rdi), %xmm3, %xmm3
   3235 ; AVX512F-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
   3236 ; AVX512F-NEXT:  LBB51_62: ## %else89
   3237 ; AVX512F-NEXT:    vpextrb $15, %xmm2, %eax
   3238 ; AVX512F-NEXT:    testb $1, %al
   3239 ; AVX512F-NEXT:    je LBB51_64
   3240 ; AVX512F-NEXT:  ## BB#63: ## %cond.load91
   3241 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   3242 ; AVX512F-NEXT:    vpinsrb $15, 31(%rdi), %xmm2, %xmm2
   3243 ; AVX512F-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   3244 ; AVX512F-NEXT:  LBB51_64: ## %else92
   3245 ; AVX512F-NEXT:    vpsllw $7, %ymm0, %ymm0
   3246 ; AVX512F-NEXT:    vpand {{.*}}(%rip), %ymm0, %ymm0
   3247 ; AVX512F-NEXT:    vpxor %ymm2, %ymm2, %ymm2
   3248 ; AVX512F-NEXT:    vpcmpgtb %ymm0, %ymm2, %ymm0
   3249 ; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm0
   3250 ; AVX512F-NEXT:    retq
   3251 ;
   3252 ; SKX-LABEL: test_mask_load_32xi8:
   3253 ; SKX:       ## BB#0:
   3254 ; SKX-NEXT:    vpsllw $7, %ymm0, %ymm0
   3255 ; SKX-NEXT:    vpmovb2m %ymm0, %k1
   3256 ; SKX-NEXT:    vmovdqu8 (%rdi), %ymm0 {%k1} {z}
   3257 ; SKX-NEXT:    retq
   3258   %res = call <32 x i8> @llvm.masked.load.v32i8.p0v32i8(<32 x i8>* %addr, i32 4, <32 x i1>%mask, <32 x i8> zeroinitializer)
   3259   ret <32 x i8> %res
   3260 }
   3261 declare <32 x i8> @llvm.masked.load.v32i8.p0v32i8(<32 x i8>*, i32, <32 x i1>, <32 x i8>)
   3262 
   3263 define <64 x i8> @test_mask_load_64xi8(<64 x i1> %mask, <64 x i8>* %addr, <64 x i8> %val) {
   3264 ; AVX1-LABEL: test_mask_load_64xi8:
   3265 ; AVX1:       ## BB#0:
   3266 ; AVX1-NEXT:    pushq %rbp
   3267 ; AVX1-NEXT:  Ltmp3:
   3268 ; AVX1-NEXT:    .cfi_def_cfa_offset 16
   3269 ; AVX1-NEXT:    pushq %r15
   3270 ; AVX1-NEXT:  Ltmp4:
   3271 ; AVX1-NEXT:    .cfi_def_cfa_offset 24
   3272 ; AVX1-NEXT:    pushq %r14
   3273 ; AVX1-NEXT:  Ltmp5:
   3274 ; AVX1-NEXT:    .cfi_def_cfa_offset 32
   3275 ; AVX1-NEXT:    pushq %r13
   3276 ; AVX1-NEXT:  Ltmp6:
   3277 ; AVX1-NEXT:    .cfi_def_cfa_offset 40
   3278 ; AVX1-NEXT:    pushq %r12
   3279 ; AVX1-NEXT:  Ltmp7:
   3280 ; AVX1-NEXT:    .cfi_def_cfa_offset 48
   3281 ; AVX1-NEXT:    pushq %rbx
   3282 ; AVX1-NEXT:  Ltmp8:
   3283 ; AVX1-NEXT:    .cfi_def_cfa_offset 56
   3284 ; AVX1-NEXT:    pushq %rax
   3285 ; AVX1-NEXT:  Ltmp9:
   3286 ; AVX1-NEXT:    .cfi_def_cfa_offset 64
   3287 ; AVX1-NEXT:  Ltmp10:
   3288 ; AVX1-NEXT:    .cfi_offset %rbx, -56
   3289 ; AVX1-NEXT:  Ltmp11:
   3290 ; AVX1-NEXT:    .cfi_offset %r12, -48
   3291 ; AVX1-NEXT:  Ltmp12:
   3292 ; AVX1-NEXT:    .cfi_offset %r13, -40
   3293 ; AVX1-NEXT:  Ltmp13:
   3294 ; AVX1-NEXT:    .cfi_offset %r14, -32
   3295 ; AVX1-NEXT:  Ltmp14:
   3296 ; AVX1-NEXT:    .cfi_offset %r15, -24
   3297 ; AVX1-NEXT:  Ltmp15:
   3298 ; AVX1-NEXT:    .cfi_offset %rbp, -16
   3299 ; AVX1-NEXT:    movq {{[0-9]+}}(%rsp), %rax
   3300 ; AVX1-NEXT:    movl %edi, %r13d
   3301 ; AVX1-NEXT:    testb $1, %dil
   3302 ; AVX1-NEXT:    je LBB52_2
   3303 ; AVX1-NEXT:  ## BB#1: ## %cond.load
   3304 ; AVX1-NEXT:    movzbl (%rax), %ebp
   3305 ; AVX1-NEXT:    vmovd %ebp, %xmm9
   3306 ; AVX1-NEXT:  LBB52_2: ## %else
   3307 ; AVX1-NEXT:    testb $1, %sil
   3308 ; AVX1-NEXT:    je LBB52_4
   3309 ; AVX1-NEXT:  ## BB#3: ## %cond.load1
   3310 ; AVX1-NEXT:    vpinsrb $1, 1(%rax), %xmm9, %xmm3
   3311 ; AVX1-NEXT:    vblendps {{.*#+}} ymm9 = ymm3[0,1,2,3],ymm9[4,5,6,7]
   3312 ; AVX1-NEXT:  LBB52_4: ## %else2
   3313 ; AVX1-NEXT:    testb $1, %dl
   3314 ; AVX1-NEXT:    je LBB52_6
   3315 ; AVX1-NEXT:  ## BB#5: ## %cond.load4
   3316 ; AVX1-NEXT:    vpinsrb $2, 2(%rax), %xmm9, %xmm3
   3317 ; AVX1-NEXT:    vblendps {{.*#+}} ymm9 = ymm3[0,1,2,3],ymm9[4,5,6,7]
   3318 ; AVX1-NEXT:  LBB52_6: ## %else5
   3319 ; AVX1-NEXT:    testb $1, %cl
   3320 ; AVX1-NEXT:    je LBB52_8
   3321 ; AVX1-NEXT:  ## BB#7: ## %cond.load7
   3322 ; AVX1-NEXT:    vpinsrb $3, 3(%rax), %xmm9, %xmm3
   3323 ; AVX1-NEXT:    vblendps {{.*#+}} ymm9 = ymm3[0,1,2,3],ymm9[4,5,6,7]
   3324 ; AVX1-NEXT:  LBB52_8: ## %else8
   3325 ; AVX1-NEXT:    testb $1, %r8b
   3326 ; AVX1-NEXT:    je LBB52_10
   3327 ; AVX1-NEXT:  ## BB#9: ## %cond.load10
   3328 ; AVX1-NEXT:    vpinsrb $4, 4(%rax), %xmm9, %xmm3
   3329 ; AVX1-NEXT:    vblendps {{.*#+}} ymm9 = ymm3[0,1,2,3],ymm9[4,5,6,7]
   3330 ; AVX1-NEXT:  LBB52_10: ## %else11
   3331 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %r10b
   3332 ; AVX1-NEXT:    testb $1, %r9b
   3333 ; AVX1-NEXT:    je LBB52_12
   3334 ; AVX1-NEXT:  ## BB#11: ## %cond.load13
   3335 ; AVX1-NEXT:    vpinsrb $5, 5(%rax), %xmm9, %xmm3
   3336 ; AVX1-NEXT:    vblendps {{.*#+}} ymm9 = ymm3[0,1,2,3],ymm9[4,5,6,7]
   3337 ; AVX1-NEXT:  LBB52_12: ## %else14
   3338 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %r11b
   3339 ; AVX1-NEXT:    testb $1, %r10b
   3340 ; AVX1-NEXT:    je LBB52_14
   3341 ; AVX1-NEXT:  ## BB#13: ## %cond.load16
   3342 ; AVX1-NEXT:    vpinsrb $6, 6(%rax), %xmm9, %xmm3
   3343 ; AVX1-NEXT:    vblendps {{.*#+}} ymm9 = ymm3[0,1,2,3],ymm9[4,5,6,7]
   3344 ; AVX1-NEXT:  LBB52_14: ## %else17
   3345 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %r14b
   3346 ; AVX1-NEXT:    testb $1, %r11b
   3347 ; AVX1-NEXT:    je LBB52_16
   3348 ; AVX1-NEXT:  ## BB#15: ## %cond.load19
   3349 ; AVX1-NEXT:    vpinsrb $7, 7(%rax), %xmm9, %xmm3
   3350 ; AVX1-NEXT:    vblendps {{.*#+}} ymm9 = ymm3[0,1,2,3],ymm9[4,5,6,7]
   3351 ; AVX1-NEXT:  LBB52_16: ## %else20
   3352 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %r15b
   3353 ; AVX1-NEXT:    testb $1, %r14b
   3354 ; AVX1-NEXT:    je LBB52_18
   3355 ; AVX1-NEXT:  ## BB#17: ## %cond.load22
   3356 ; AVX1-NEXT:    vpinsrb $8, 8(%rax), %xmm9, %xmm3
   3357 ; AVX1-NEXT:    vblendps {{.*#+}} ymm9 = ymm3[0,1,2,3],ymm9[4,5,6,7]
   3358 ; AVX1-NEXT:  LBB52_18: ## %else23
   3359 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %r12b
   3360 ; AVX1-NEXT:    testb $1, %r15b
   3361 ; AVX1-NEXT:    je LBB52_20
   3362 ; AVX1-NEXT:  ## BB#19: ## %cond.load25
   3363 ; AVX1-NEXT:    vpinsrb $9, 9(%rax), %xmm9, %xmm3
   3364 ; AVX1-NEXT:    vblendps {{.*#+}} ymm9 = ymm3[0,1,2,3],ymm9[4,5,6,7]
   3365 ; AVX1-NEXT:  LBB52_20: ## %else26
   3366 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dil
   3367 ; AVX1-NEXT:    testb $1, %r12b
   3368 ; AVX1-NEXT:    je LBB52_22
   3369 ; AVX1-NEXT:  ## BB#21: ## %cond.load28
   3370 ; AVX1-NEXT:    vpinsrb $10, 10(%rax), %xmm9, %xmm3
   3371 ; AVX1-NEXT:    vblendps {{.*#+}} ymm9 = ymm3[0,1,2,3],ymm9[4,5,6,7]
   3372 ; AVX1-NEXT:  LBB52_22: ## %else29
   3373 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %bpl
   3374 ; AVX1-NEXT:    testb $1, %dil
   3375 ; AVX1-NEXT:    je LBB52_24
   3376 ; AVX1-NEXT:  ## BB#23: ## %cond.load31
   3377 ; AVX1-NEXT:    vpinsrb $11, 11(%rax), %xmm9, %xmm3
   3378 ; AVX1-NEXT:    vblendps {{.*#+}} ymm9 = ymm3[0,1,2,3],ymm9[4,5,6,7]
   3379 ; AVX1-NEXT:  LBB52_24: ## %else32
   3380 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %bl
   3381 ; AVX1-NEXT:    testb $1, %bpl
   3382 ; AVX1-NEXT:    je LBB52_26
   3383 ; AVX1-NEXT:  ## BB#25: ## %cond.load34
   3384 ; AVX1-NEXT:    vpinsrb $12, 12(%rax), %xmm9, %xmm3
   3385 ; AVX1-NEXT:    vblendps {{.*#+}} ymm9 = ymm3[0,1,2,3],ymm9[4,5,6,7]
   3386 ; AVX1-NEXT:  LBB52_26: ## %else35
   3387 ; AVX1-NEXT:    testb $1, %bl
   3388 ; AVX1-NEXT:    je LBB52_28
   3389 ; AVX1-NEXT:  ## BB#27: ## %cond.load37
   3390 ; AVX1-NEXT:    vpinsrb $13, 13(%rax), %xmm9, %xmm3
   3391 ; AVX1-NEXT:    vblendps {{.*#+}} ymm9 = ymm3[0,1,2,3],ymm9[4,5,6,7]
   3392 ; AVX1-NEXT:  LBB52_28: ## %else38
   3393 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3394 ; AVX1-NEXT:    je LBB52_30
   3395 ; AVX1-NEXT:  ## BB#29: ## %cond.load40
   3396 ; AVX1-NEXT:    vpinsrb $14, 14(%rax), %xmm9, %xmm3
   3397 ; AVX1-NEXT:    vblendps {{.*#+}} ymm9 = ymm3[0,1,2,3],ymm9[4,5,6,7]
   3398 ; AVX1-NEXT:  LBB52_30: ## %else41
   3399 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3400 ; AVX1-NEXT:    je LBB52_32
   3401 ; AVX1-NEXT:  ## BB#31: ## %cond.load43
   3402 ; AVX1-NEXT:    vpinsrb $15, 15(%rax), %xmm9, %xmm3
   3403 ; AVX1-NEXT:    vblendps {{.*#+}} ymm9 = ymm3[0,1,2,3],ymm9[4,5,6,7]
   3404 ; AVX1-NEXT:  LBB52_32: ## %else44
   3405 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3406 ; AVX1-NEXT:    je LBB52_34
   3407 ; AVX1-NEXT:  ## BB#33: ## %cond.load46
   3408 ; AVX1-NEXT:    vextractf128 $1, %ymm9, %xmm3
   3409 ; AVX1-NEXT:    vpinsrb $0, 16(%rax), %xmm3, %xmm3
   3410 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm9, %ymm9
   3411 ; AVX1-NEXT:  LBB52_34: ## %else47
   3412 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3413 ; AVX1-NEXT:    je LBB52_36
   3414 ; AVX1-NEXT:  ## BB#35: ## %cond.load49
   3415 ; AVX1-NEXT:    vextractf128 $1, %ymm9, %xmm3
   3416 ; AVX1-NEXT:    vpinsrb $1, 17(%rax), %xmm3, %xmm3
   3417 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm9, %ymm9
   3418 ; AVX1-NEXT:  LBB52_36: ## %else50
   3419 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3420 ; AVX1-NEXT:    je LBB52_38
   3421 ; AVX1-NEXT:  ## BB#37: ## %cond.load52
   3422 ; AVX1-NEXT:    vextractf128 $1, %ymm9, %xmm3
   3423 ; AVX1-NEXT:    vpinsrb $2, 18(%rax), %xmm3, %xmm3
   3424 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm9, %ymm9
   3425 ; AVX1-NEXT:  LBB52_38: ## %else53
   3426 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3427 ; AVX1-NEXT:    je LBB52_40
   3428 ; AVX1-NEXT:  ## BB#39: ## %cond.load55
   3429 ; AVX1-NEXT:    vextractf128 $1, %ymm9, %xmm3
   3430 ; AVX1-NEXT:    vpinsrb $3, 19(%rax), %xmm3, %xmm3
   3431 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm9, %ymm9
   3432 ; AVX1-NEXT:  LBB52_40: ## %else56
   3433 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3434 ; AVX1-NEXT:    je LBB52_42
   3435 ; AVX1-NEXT:  ## BB#41: ## %cond.load58
   3436 ; AVX1-NEXT:    vextractf128 $1, %ymm9, %xmm3
   3437 ; AVX1-NEXT:    vpinsrb $4, 20(%rax), %xmm3, %xmm3
   3438 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm9, %ymm9
   3439 ; AVX1-NEXT:  LBB52_42: ## %else59
   3440 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3441 ; AVX1-NEXT:    je LBB52_44
   3442 ; AVX1-NEXT:  ## BB#43: ## %cond.load61
   3443 ; AVX1-NEXT:    vextractf128 $1, %ymm9, %xmm3
   3444 ; AVX1-NEXT:    vpinsrb $5, 21(%rax), %xmm3, %xmm3
   3445 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm9, %ymm9
   3446 ; AVX1-NEXT:  LBB52_44: ## %else62
   3447 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3448 ; AVX1-NEXT:    je LBB52_46
   3449 ; AVX1-NEXT:  ## BB#45: ## %cond.load64
   3450 ; AVX1-NEXT:    vextractf128 $1, %ymm9, %xmm3
   3451 ; AVX1-NEXT:    vpinsrb $6, 22(%rax), %xmm3, %xmm3
   3452 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm9, %ymm9
   3453 ; AVX1-NEXT:  LBB52_46: ## %else65
   3454 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3455 ; AVX1-NEXT:    je LBB52_48
   3456 ; AVX1-NEXT:  ## BB#47: ## %cond.load67
   3457 ; AVX1-NEXT:    vextractf128 $1, %ymm9, %xmm3
   3458 ; AVX1-NEXT:    vpinsrb $7, 23(%rax), %xmm3, %xmm3
   3459 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm9, %ymm9
   3460 ; AVX1-NEXT:  LBB52_48: ## %else68
   3461 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3462 ; AVX1-NEXT:    je LBB52_50
   3463 ; AVX1-NEXT:  ## BB#49: ## %cond.load70
   3464 ; AVX1-NEXT:    vextractf128 $1, %ymm9, %xmm3
   3465 ; AVX1-NEXT:    vpinsrb $8, 24(%rax), %xmm3, %xmm3
   3466 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm9, %ymm9
   3467 ; AVX1-NEXT:  LBB52_50: ## %else71
   3468 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3469 ; AVX1-NEXT:    je LBB52_52
   3470 ; AVX1-NEXT:  ## BB#51: ## %cond.load73
   3471 ; AVX1-NEXT:    vextractf128 $1, %ymm9, %xmm3
   3472 ; AVX1-NEXT:    vpinsrb $9, 25(%rax), %xmm3, %xmm3
   3473 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm9, %ymm9
   3474 ; AVX1-NEXT:  LBB52_52: ## %else74
   3475 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3476 ; AVX1-NEXT:    je LBB52_54
   3477 ; AVX1-NEXT:  ## BB#53: ## %cond.load76
   3478 ; AVX1-NEXT:    vextractf128 $1, %ymm9, %xmm3
   3479 ; AVX1-NEXT:    vpinsrb $10, 26(%rax), %xmm3, %xmm3
   3480 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm9, %ymm9
   3481 ; AVX1-NEXT:  LBB52_54: ## %else77
   3482 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3483 ; AVX1-NEXT:    je LBB52_56
   3484 ; AVX1-NEXT:  ## BB#55: ## %cond.load79
   3485 ; AVX1-NEXT:    vextractf128 $1, %ymm9, %xmm3
   3486 ; AVX1-NEXT:    vpinsrb $11, 27(%rax), %xmm3, %xmm3
   3487 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm9, %ymm9
   3488 ; AVX1-NEXT:  LBB52_56: ## %else80
   3489 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3490 ; AVX1-NEXT:    je LBB52_58
   3491 ; AVX1-NEXT:  ## BB#57: ## %cond.load82
   3492 ; AVX1-NEXT:    vextractf128 $1, %ymm9, %xmm3
   3493 ; AVX1-NEXT:    vpinsrb $12, 28(%rax), %xmm3, %xmm3
   3494 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm9, %ymm9
   3495 ; AVX1-NEXT:  LBB52_58: ## %else83
   3496 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3497 ; AVX1-NEXT:    je LBB52_60
   3498 ; AVX1-NEXT:  ## BB#59: ## %cond.load85
   3499 ; AVX1-NEXT:    vextractf128 $1, %ymm9, %xmm3
   3500 ; AVX1-NEXT:    vpinsrb $13, 29(%rax), %xmm3, %xmm3
   3501 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm9, %ymm9
   3502 ; AVX1-NEXT:  LBB52_60: ## %else86
   3503 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3504 ; AVX1-NEXT:    je LBB52_62
   3505 ; AVX1-NEXT:  ## BB#61: ## %cond.load88
   3506 ; AVX1-NEXT:    vextractf128 $1, %ymm9, %xmm3
   3507 ; AVX1-NEXT:    vpinsrb $14, 30(%rax), %xmm3, %xmm3
   3508 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm9, %ymm9
   3509 ; AVX1-NEXT:  LBB52_62: ## %else89
   3510 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3511 ; AVX1-NEXT:    je LBB52_64
   3512 ; AVX1-NEXT:  ## BB#63: ## %cond.load91
   3513 ; AVX1-NEXT:    vextractf128 $1, %ymm9, %xmm3
   3514 ; AVX1-NEXT:    vpinsrb $15, 31(%rax), %xmm3, %xmm3
   3515 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm9, %ymm9
   3516 ; AVX1-NEXT:  LBB52_64: ## %else92
   3517 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3518 ; AVX1-NEXT:    je LBB52_66
   3519 ; AVX1-NEXT:  ## BB#65: ## %cond.load94
   3520 ; AVX1-NEXT:    vpinsrb $0, 32(%rax), %xmm0, %xmm3
   3521 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm0[4,5,6,7]
   3522 ; AVX1-NEXT:  LBB52_66: ## %else95
   3523 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3524 ; AVX1-NEXT:    je LBB52_68
   3525 ; AVX1-NEXT:  ## BB#67: ## %cond.load97
   3526 ; AVX1-NEXT:    vpinsrb $1, 33(%rax), %xmm3, %xmm4
   3527 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   3528 ; AVX1-NEXT:  LBB52_68: ## %else98
   3529 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3530 ; AVX1-NEXT:    je LBB52_70
   3531 ; AVX1-NEXT:  ## BB#69: ## %cond.load100
   3532 ; AVX1-NEXT:    vpinsrb $2, 34(%rax), %xmm3, %xmm4
   3533 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   3534 ; AVX1-NEXT:  LBB52_70: ## %else101
   3535 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3536 ; AVX1-NEXT:    je LBB52_72
   3537 ; AVX1-NEXT:  ## BB#71: ## %cond.load103
   3538 ; AVX1-NEXT:    vpinsrb $3, 35(%rax), %xmm3, %xmm4
   3539 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   3540 ; AVX1-NEXT:  LBB52_72: ## %else104
   3541 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3542 ; AVX1-NEXT:    je LBB52_74
   3543 ; AVX1-NEXT:  ## BB#73: ## %cond.load106
   3544 ; AVX1-NEXT:    vpinsrb $4, 36(%rax), %xmm3, %xmm4
   3545 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   3546 ; AVX1-NEXT:  LBB52_74: ## %else107
   3547 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3548 ; AVX1-NEXT:    je LBB52_76
   3549 ; AVX1-NEXT:  ## BB#75: ## %cond.load109
   3550 ; AVX1-NEXT:    vpinsrb $5, 37(%rax), %xmm3, %xmm4
   3551 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   3552 ; AVX1-NEXT:  LBB52_76: ## %else110
   3553 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3554 ; AVX1-NEXT:    je LBB52_78
   3555 ; AVX1-NEXT:  ## BB#77: ## %cond.load112
   3556 ; AVX1-NEXT:    vpinsrb $6, 38(%rax), %xmm3, %xmm4
   3557 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   3558 ; AVX1-NEXT:  LBB52_78: ## %else113
   3559 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3560 ; AVX1-NEXT:    je LBB52_80
   3561 ; AVX1-NEXT:  ## BB#79: ## %cond.load115
   3562 ; AVX1-NEXT:    vpinsrb $7, 39(%rax), %xmm3, %xmm4
   3563 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   3564 ; AVX1-NEXT:  LBB52_80: ## %else116
   3565 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3566 ; AVX1-NEXT:    je LBB52_82
   3567 ; AVX1-NEXT:  ## BB#81: ## %cond.load118
   3568 ; AVX1-NEXT:    vpinsrb $8, 40(%rax), %xmm3, %xmm4
   3569 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   3570 ; AVX1-NEXT:  LBB52_82: ## %else119
   3571 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3572 ; AVX1-NEXT:    je LBB52_84
   3573 ; AVX1-NEXT:  ## BB#83: ## %cond.load121
   3574 ; AVX1-NEXT:    vpinsrb $9, 41(%rax), %xmm3, %xmm4
   3575 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   3576 ; AVX1-NEXT:  LBB52_84: ## %else122
   3577 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3578 ; AVX1-NEXT:    je LBB52_86
   3579 ; AVX1-NEXT:  ## BB#85: ## %cond.load124
   3580 ; AVX1-NEXT:    vpinsrb $10, 42(%rax), %xmm3, %xmm4
   3581 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   3582 ; AVX1-NEXT:  LBB52_86: ## %else125
   3583 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3584 ; AVX1-NEXT:    je LBB52_88
   3585 ; AVX1-NEXT:  ## BB#87: ## %cond.load127
   3586 ; AVX1-NEXT:    vpinsrb $11, 43(%rax), %xmm3, %xmm4
   3587 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   3588 ; AVX1-NEXT:  LBB52_88: ## %else128
   3589 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3590 ; AVX1-NEXT:    je LBB52_90
   3591 ; AVX1-NEXT:  ## BB#89: ## %cond.load130
   3592 ; AVX1-NEXT:    vpinsrb $12, 44(%rax), %xmm3, %xmm4
   3593 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   3594 ; AVX1-NEXT:  LBB52_90: ## %else131
   3595 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3596 ; AVX1-NEXT:    je LBB52_92
   3597 ; AVX1-NEXT:  ## BB#91: ## %cond.load133
   3598 ; AVX1-NEXT:    vpinsrb $13, 45(%rax), %xmm3, %xmm4
   3599 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   3600 ; AVX1-NEXT:  LBB52_92: ## %else134
   3601 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3602 ; AVX1-NEXT:    je LBB52_94
   3603 ; AVX1-NEXT:  ## BB#93: ## %cond.load136
   3604 ; AVX1-NEXT:    vpinsrb $14, 46(%rax), %xmm3, %xmm4
   3605 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   3606 ; AVX1-NEXT:  LBB52_94: ## %else137
   3607 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3608 ; AVX1-NEXT:    je LBB52_96
   3609 ; AVX1-NEXT:  ## BB#95: ## %cond.load139
   3610 ; AVX1-NEXT:    vpinsrb $15, 47(%rax), %xmm3, %xmm4
   3611 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   3612 ; AVX1-NEXT:  LBB52_96: ## %else140
   3613 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3614 ; AVX1-NEXT:    je LBB52_98
   3615 ; AVX1-NEXT:  ## BB#97: ## %cond.load142
   3616 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   3617 ; AVX1-NEXT:    vpinsrb $0, 48(%rax), %xmm4, %xmm4
   3618 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   3619 ; AVX1-NEXT:  LBB52_98: ## %else143
   3620 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3621 ; AVX1-NEXT:    je LBB52_100
   3622 ; AVX1-NEXT:  ## BB#99: ## %cond.load145
   3623 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   3624 ; AVX1-NEXT:    vpinsrb $1, 49(%rax), %xmm4, %xmm4
   3625 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   3626 ; AVX1-NEXT:  LBB52_100: ## %else146
   3627 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3628 ; AVX1-NEXT:    je LBB52_102
   3629 ; AVX1-NEXT:  ## BB#101: ## %cond.load148
   3630 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   3631 ; AVX1-NEXT:    vpinsrb $2, 50(%rax), %xmm4, %xmm4
   3632 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   3633 ; AVX1-NEXT:  LBB52_102: ## %else149
   3634 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3635 ; AVX1-NEXT:    je LBB52_104
   3636 ; AVX1-NEXT:  ## BB#103: ## %cond.load151
   3637 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   3638 ; AVX1-NEXT:    vpinsrb $3, 51(%rax), %xmm4, %xmm4
   3639 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   3640 ; AVX1-NEXT:  LBB52_104: ## %else152
   3641 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3642 ; AVX1-NEXT:    je LBB52_106
   3643 ; AVX1-NEXT:  ## BB#105: ## %cond.load154
   3644 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   3645 ; AVX1-NEXT:    vpinsrb $4, 52(%rax), %xmm4, %xmm4
   3646 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   3647 ; AVX1-NEXT:  LBB52_106: ## %else155
   3648 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3649 ; AVX1-NEXT:    je LBB52_108
   3650 ; AVX1-NEXT:  ## BB#107: ## %cond.load157
   3651 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   3652 ; AVX1-NEXT:    vpinsrb $5, 53(%rax), %xmm4, %xmm4
   3653 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   3654 ; AVX1-NEXT:  LBB52_108: ## %else158
   3655 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3656 ; AVX1-NEXT:    je LBB52_110
   3657 ; AVX1-NEXT:  ## BB#109: ## %cond.load160
   3658 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   3659 ; AVX1-NEXT:    vpinsrb $6, 54(%rax), %xmm4, %xmm4
   3660 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   3661 ; AVX1-NEXT:  LBB52_110: ## %else161
   3662 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3663 ; AVX1-NEXT:    je LBB52_112
   3664 ; AVX1-NEXT:  ## BB#111: ## %cond.load163
   3665 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   3666 ; AVX1-NEXT:    vpinsrb $7, 55(%rax), %xmm4, %xmm4
   3667 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   3668 ; AVX1-NEXT:  LBB52_112: ## %else164
   3669 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3670 ; AVX1-NEXT:    je LBB52_114
   3671 ; AVX1-NEXT:  ## BB#113: ## %cond.load166
   3672 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   3673 ; AVX1-NEXT:    vpinsrb $8, 56(%rax), %xmm4, %xmm4
   3674 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   3675 ; AVX1-NEXT:  LBB52_114: ## %else167
   3676 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3677 ; AVX1-NEXT:    je LBB52_116
   3678 ; AVX1-NEXT:  ## BB#115: ## %cond.load169
   3679 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   3680 ; AVX1-NEXT:    vpinsrb $9, 57(%rax), %xmm4, %xmm4
   3681 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   3682 ; AVX1-NEXT:  LBB52_116: ## %else170
   3683 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3684 ; AVX1-NEXT:    je LBB52_118
   3685 ; AVX1-NEXT:  ## BB#117: ## %cond.load172
   3686 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   3687 ; AVX1-NEXT:    vpinsrb $10, 58(%rax), %xmm4, %xmm4
   3688 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   3689 ; AVX1-NEXT:  LBB52_118: ## %else173
   3690 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3691 ; AVX1-NEXT:    je LBB52_120
   3692 ; AVX1-NEXT:  ## BB#119: ## %cond.load175
   3693 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   3694 ; AVX1-NEXT:    vpinsrb $11, 59(%rax), %xmm4, %xmm4
   3695 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   3696 ; AVX1-NEXT:  LBB52_120: ## %else176
   3697 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3698 ; AVX1-NEXT:    je LBB52_122
   3699 ; AVX1-NEXT:  ## BB#121: ## %cond.load178
   3700 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   3701 ; AVX1-NEXT:    vpinsrb $12, 60(%rax), %xmm4, %xmm4
   3702 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   3703 ; AVX1-NEXT:  LBB52_122: ## %else179
   3704 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3705 ; AVX1-NEXT:    je LBB52_124
   3706 ; AVX1-NEXT:  ## BB#123: ## %cond.load181
   3707 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   3708 ; AVX1-NEXT:    vpinsrb $13, 61(%rax), %xmm4, %xmm4
   3709 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   3710 ; AVX1-NEXT:  LBB52_124: ## %else182
   3711 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3712 ; AVX1-NEXT:    je LBB52_126
   3713 ; AVX1-NEXT:  ## BB#125: ## %cond.load184
   3714 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   3715 ; AVX1-NEXT:    vpinsrb $14, 62(%rax), %xmm4, %xmm4
   3716 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   3717 ; AVX1-NEXT:  LBB52_126: ## %else185
   3718 ; AVX1-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   3719 ; AVX1-NEXT:    movl %r9d, {{[0-9]+}}(%rsp) ## 4-byte Spill
   3720 ; AVX1-NEXT:    movl %r8d, (%rsp) ## 4-byte Spill
   3721 ; AVX1-NEXT:    movl %ecx, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3722 ; AVX1-NEXT:    movl %edx, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3723 ; AVX1-NEXT:    movl %esi, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3724 ; AVX1-NEXT:    je LBB52_128
   3725 ; AVX1-NEXT:  ## BB#127: ## %cond.load187
   3726 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   3727 ; AVX1-NEXT:    vpinsrb $15, 63(%rax), %xmm4, %xmm4
   3728 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   3729 ; AVX1-NEXT:  LBB52_128: ## %else188
   3730 ; AVX1-NEXT:    movzbl %r10b, %eax
   3731 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3732 ; AVX1-NEXT:    movzbl %r11b, %eax
   3733 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3734 ; AVX1-NEXT:    movzbl %r14b, %eax
   3735 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3736 ; AVX1-NEXT:    movzbl %r15b, %eax
   3737 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3738 ; AVX1-NEXT:    movzbl %r12b, %eax
   3739 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3740 ; AVX1-NEXT:    movzbl %dil, %eax
   3741 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3742 ; AVX1-NEXT:    movzbl %bpl, %eax
   3743 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3744 ; AVX1-NEXT:    movzbl %bl, %eax
   3745 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3746 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   3747 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3748 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   3749 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3750 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   3751 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3752 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   3753 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3754 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   3755 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3756 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   3757 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3758 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   3759 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3760 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   3761 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3762 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   3763 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3764 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   3765 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3766 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   3767 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3768 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   3769 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3770 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   3771 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3772 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   3773 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3774 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   3775 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3776 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   3777 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3778 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   3779 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3780 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   3781 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3782 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   3783 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3784 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   3785 ; AVX1-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3786 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %r12d
   3787 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %r15d
   3788 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %r14d
   3789 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %r11d
   3790 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %r8d
   3791 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %edx
   3792 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   3793 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
   3794 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %esi
   3795 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %r9d
   3796 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %r10d
   3797 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %ebx
   3798 ; AVX1-NEXT:    movzbl %r13b, %r13d
   3799 ; AVX1-NEXT:    vmovd %r13d, %xmm4
   3800 ; AVX1-NEXT:    movl -{{[0-9]+}}(%rsp), %edi ## 4-byte Reload
   3801 ; AVX1-NEXT:    movzbl %dil, %ebp
   3802 ; AVX1-NEXT:    vpinsrb $1, %ebp, %xmm4, %xmm4
   3803 ; AVX1-NEXT:    movl -{{[0-9]+}}(%rsp), %ebp ## 4-byte Reload
   3804 ; AVX1-NEXT:    movzbl %bpl, %ebp
   3805 ; AVX1-NEXT:    vpinsrb $2, %ebp, %xmm4, %xmm4
   3806 ; AVX1-NEXT:    movl -{{[0-9]+}}(%rsp), %ebp ## 4-byte Reload
   3807 ; AVX1-NEXT:    movzbl %bpl, %ebp
   3808 ; AVX1-NEXT:    vpinsrb $3, %ebp, %xmm4, %xmm4
   3809 ; AVX1-NEXT:    movl (%rsp), %ebp ## 4-byte Reload
   3810 ; AVX1-NEXT:    movzbl %bpl, %ebp
   3811 ; AVX1-NEXT:    vpinsrb $4, %ebp, %xmm4, %xmm4
   3812 ; AVX1-NEXT:    movl {{[0-9]+}}(%rsp), %ebp ## 4-byte Reload
   3813 ; AVX1-NEXT:    movzbl %bpl, %ebp
   3814 ; AVX1-NEXT:    vpinsrb $5, %ebp, %xmm4, %xmm4
   3815 ; AVX1-NEXT:    vpinsrb $6, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
   3816 ; AVX1-NEXT:    vpinsrb $7, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
   3817 ; AVX1-NEXT:    vpinsrb $8, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
   3818 ; AVX1-NEXT:    vpinsrb $9, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
   3819 ; AVX1-NEXT:    vpinsrb $10, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
   3820 ; AVX1-NEXT:    vpinsrb $11, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
   3821 ; AVX1-NEXT:    vpinsrb $12, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
   3822 ; AVX1-NEXT:    vpinsrb $13, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
   3823 ; AVX1-NEXT:    vpinsrb $14, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
   3824 ; AVX1-NEXT:    vpinsrb $15, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
   3825 ; AVX1-NEXT:    vmovd -{{[0-9]+}}(%rsp), %xmm5 ## 4-byte Folded Reload
   3826 ; AVX1-NEXT:    ## xmm5 = mem[0],zero,zero,zero
   3827 ; AVX1-NEXT:    vpinsrb $1, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   3828 ; AVX1-NEXT:    vpinsrb $2, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   3829 ; AVX1-NEXT:    vpinsrb $3, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   3830 ; AVX1-NEXT:    vpinsrb $4, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   3831 ; AVX1-NEXT:    vpinsrb $5, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   3832 ; AVX1-NEXT:    vpinsrb $6, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   3833 ; AVX1-NEXT:    vpinsrb $7, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   3834 ; AVX1-NEXT:    vpinsrb $8, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   3835 ; AVX1-NEXT:    vpinsrb $9, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   3836 ; AVX1-NEXT:    vpinsrb $10, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   3837 ; AVX1-NEXT:    vpinsrb $11, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   3838 ; AVX1-NEXT:    vpinsrb $12, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   3839 ; AVX1-NEXT:    vpinsrb $13, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   3840 ; AVX1-NEXT:    vpinsrb $14, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   3841 ; AVX1-NEXT:    vpinsrb $15, -{{[0-9]+}}(%rsp), %xmm5, %xmm8 ## 4-byte Folded Reload
   3842 ; AVX1-NEXT:    vmovd -{{[0-9]+}}(%rsp), %xmm6 ## 4-byte Folded Reload
   3843 ; AVX1-NEXT:    ## xmm6 = mem[0],zero,zero,zero
   3844 ; AVX1-NEXT:    vpinsrb $1, -{{[0-9]+}}(%rsp), %xmm6, %xmm6 ## 4-byte Folded Reload
   3845 ; AVX1-NEXT:    vpinsrb $2, %r12d, %xmm6, %xmm6
   3846 ; AVX1-NEXT:    vpinsrb $3, %r15d, %xmm6, %xmm6
   3847 ; AVX1-NEXT:    vpinsrb $4, %r14d, %xmm6, %xmm6
   3848 ; AVX1-NEXT:    vpinsrb $5, %r11d, %xmm6, %xmm6
   3849 ; AVX1-NEXT:    vpinsrb $6, %r8d, %xmm6, %xmm6
   3850 ; AVX1-NEXT:    vpinsrb $7, %edx, %xmm6, %xmm6
   3851 ; AVX1-NEXT:    vpinsrb $8, %eax, %xmm6, %xmm6
   3852 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %r13d
   3853 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %r14d
   3854 ; AVX1-NEXT:    vpinsrb $9, %ecx, %xmm6, %xmm6
   3855 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %r11d
   3856 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
   3857 ; AVX1-NEXT:    vpinsrb $10, %esi, %xmm6, %xmm6
   3858 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %r15d
   3859 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %r12d
   3860 ; AVX1-NEXT:    vpinsrb $11, %r9d, %xmm6, %xmm6
   3861 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %r8d
   3862 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
   3863 ; AVX1-NEXT:    vpinsrb $12, %r10d, %xmm6, %xmm6
   3864 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %r9d
   3865 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %esi
   3866 ; AVX1-NEXT:    vpinsrb $13, %ebx, %xmm6, %xmm6
   3867 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %r10d
   3868 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   3869 ; AVX1-NEXT:    vpinsrb $14, %r13d, %xmm6, %xmm6
   3870 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %r13d
   3871 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %edx
   3872 ; AVX1-NEXT:    vpinsrb $15, %r14d, %xmm6, %xmm10
   3873 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %r14d
   3874 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %ebx
   3875 ; AVX1-NEXT:    vmovd %edi, %xmm7
   3876 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
   3877 ; AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %ebp
   3878 ; AVX1-NEXT:    vpinsrb $1, %r11d, %xmm7, %xmm7
   3879 ; AVX1-NEXT:    vpinsrb $2, %r15d, %xmm7, %xmm7
   3880 ; AVX1-NEXT:    vpinsrb $3, %r12d, %xmm7, %xmm7
   3881 ; AVX1-NEXT:    vpinsrb $4, %r8d, %xmm7, %xmm7
   3882 ; AVX1-NEXT:    vpinsrb $5, %ecx, %xmm7, %xmm7
   3883 ; AVX1-NEXT:    vpinsrb $6, %r9d, %xmm7, %xmm7
   3884 ; AVX1-NEXT:    vpinsrb $7, %esi, %xmm7, %xmm7
   3885 ; AVX1-NEXT:    vpinsrb $8, %r10d, %xmm7, %xmm7
   3886 ; AVX1-NEXT:    vpinsrb $9, %eax, %xmm7, %xmm7
   3887 ; AVX1-NEXT:    vpinsrb $10, %r13d, %xmm7, %xmm7
   3888 ; AVX1-NEXT:    vpinsrb $11, %edx, %xmm7, %xmm7
   3889 ; AVX1-NEXT:    vpinsrb $12, %r14d, %xmm7, %xmm7
   3890 ; AVX1-NEXT:    vpinsrb $13, %ebx, %xmm7, %xmm7
   3891 ; AVX1-NEXT:    vpinsrb $14, %edi, %xmm7, %xmm7
   3892 ; AVX1-NEXT:    vpinsrb $15, %ebp, %xmm7, %xmm7
   3893 ; AVX1-NEXT:    vpsllw $7, %xmm4, %xmm4
   3894 ; AVX1-NEXT:    vmovdqa {{.*#+}} xmm5 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128]
   3895 ; AVX1-NEXT:    vpand %xmm5, %xmm4, %xmm4
   3896 ; AVX1-NEXT:    vpxor %xmm2, %xmm2, %xmm2
   3897 ; AVX1-NEXT:    vpcmpgtb %xmm4, %xmm2, %xmm4
   3898 ; AVX1-NEXT:    vpsllw $7, %xmm8, %xmm6
   3899 ; AVX1-NEXT:    vpand %xmm5, %xmm6, %xmm6
   3900 ; AVX1-NEXT:    vpcmpgtb %xmm6, %xmm2, %xmm6
   3901 ; AVX1-NEXT:    vinsertf128 $1, %xmm6, %ymm4, %ymm4
   3902 ; AVX1-NEXT:    vandnps %ymm0, %ymm4, %ymm0
   3903 ; AVX1-NEXT:    vandps %ymm4, %ymm9, %ymm4
   3904 ; AVX1-NEXT:    vorps %ymm0, %ymm4, %ymm0
   3905 ; AVX1-NEXT:    vpsllw $7, %xmm10, %xmm4
   3906 ; AVX1-NEXT:    vpand %xmm5, %xmm4, %xmm4
   3907 ; AVX1-NEXT:    vpcmpgtb %xmm4, %xmm2, %xmm4
   3908 ; AVX1-NEXT:    vpsllw $7, %xmm7, %xmm6
   3909 ; AVX1-NEXT:    vpand %xmm5, %xmm6, %xmm5
   3910 ; AVX1-NEXT:    vpcmpgtb %xmm5, %xmm2, %xmm2
   3911 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm4, %ymm2
   3912 ; AVX1-NEXT:    vandnps %ymm1, %ymm2, %ymm1
   3913 ; AVX1-NEXT:    vandps %ymm2, %ymm3, %ymm2
   3914 ; AVX1-NEXT:    vorps %ymm1, %ymm2, %ymm1
   3915 ; AVX1-NEXT:    addq $8, %rsp
   3916 ; AVX1-NEXT:    popq %rbx
   3917 ; AVX1-NEXT:    popq %r12
   3918 ; AVX1-NEXT:    popq %r13
   3919 ; AVX1-NEXT:    popq %r14
   3920 ; AVX1-NEXT:    popq %r15
   3921 ; AVX1-NEXT:    popq %rbp
   3922 ; AVX1-NEXT:    retq
   3923 ;
   3924 ; AVX2-LABEL: test_mask_load_64xi8:
   3925 ; AVX2:       ## BB#0:
   3926 ; AVX2-NEXT:    pushq %rbp
   3927 ; AVX2-NEXT:  Ltmp3:
   3928 ; AVX2-NEXT:    .cfi_def_cfa_offset 16
   3929 ; AVX2-NEXT:    pushq %r15
   3930 ; AVX2-NEXT:  Ltmp4:
   3931 ; AVX2-NEXT:    .cfi_def_cfa_offset 24
   3932 ; AVX2-NEXT:    pushq %r14
   3933 ; AVX2-NEXT:  Ltmp5:
   3934 ; AVX2-NEXT:    .cfi_def_cfa_offset 32
   3935 ; AVX2-NEXT:    pushq %r13
   3936 ; AVX2-NEXT:  Ltmp6:
   3937 ; AVX2-NEXT:    .cfi_def_cfa_offset 40
   3938 ; AVX2-NEXT:    pushq %r12
   3939 ; AVX2-NEXT:  Ltmp7:
   3940 ; AVX2-NEXT:    .cfi_def_cfa_offset 48
   3941 ; AVX2-NEXT:    pushq %rbx
   3942 ; AVX2-NEXT:  Ltmp8:
   3943 ; AVX2-NEXT:    .cfi_def_cfa_offset 56
   3944 ; AVX2-NEXT:    pushq %rax
   3945 ; AVX2-NEXT:  Ltmp9:
   3946 ; AVX2-NEXT:    .cfi_def_cfa_offset 64
   3947 ; AVX2-NEXT:  Ltmp10:
   3948 ; AVX2-NEXT:    .cfi_offset %rbx, -56
   3949 ; AVX2-NEXT:  Ltmp11:
   3950 ; AVX2-NEXT:    .cfi_offset %r12, -48
   3951 ; AVX2-NEXT:  Ltmp12:
   3952 ; AVX2-NEXT:    .cfi_offset %r13, -40
   3953 ; AVX2-NEXT:  Ltmp13:
   3954 ; AVX2-NEXT:    .cfi_offset %r14, -32
   3955 ; AVX2-NEXT:  Ltmp14:
   3956 ; AVX2-NEXT:    .cfi_offset %r15, -24
   3957 ; AVX2-NEXT:  Ltmp15:
   3958 ; AVX2-NEXT:    .cfi_offset %rbp, -16
   3959 ; AVX2-NEXT:    movq {{[0-9]+}}(%rsp), %rax
   3960 ; AVX2-NEXT:    movl %edi, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   3961 ; AVX2-NEXT:    testb $1, %dil
   3962 ; AVX2-NEXT:    je LBB52_2
   3963 ; AVX2-NEXT:  ## BB#1: ## %cond.load
   3964 ; AVX2-NEXT:    movzbl (%rax), %ebp
   3965 ; AVX2-NEXT:    vmovd %ebp, %xmm2
   3966 ; AVX2-NEXT:  LBB52_2: ## %else
   3967 ; AVX2-NEXT:    testb $1, %sil
   3968 ; AVX2-NEXT:    je LBB52_4
   3969 ; AVX2-NEXT:  ## BB#3: ## %cond.load1
   3970 ; AVX2-NEXT:    vpinsrb $1, 1(%rax), %xmm2, %xmm3
   3971 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
   3972 ; AVX2-NEXT:  LBB52_4: ## %else2
   3973 ; AVX2-NEXT:    testb $1, %dl
   3974 ; AVX2-NEXT:    je LBB52_6
   3975 ; AVX2-NEXT:  ## BB#5: ## %cond.load4
   3976 ; AVX2-NEXT:    vpinsrb $2, 2(%rax), %xmm2, %xmm3
   3977 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
   3978 ; AVX2-NEXT:  LBB52_6: ## %else5
   3979 ; AVX2-NEXT:    testb $1, %cl
   3980 ; AVX2-NEXT:    je LBB52_8
   3981 ; AVX2-NEXT:  ## BB#7: ## %cond.load7
   3982 ; AVX2-NEXT:    vpinsrb $3, 3(%rax), %xmm2, %xmm3
   3983 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
   3984 ; AVX2-NEXT:  LBB52_8: ## %else8
   3985 ; AVX2-NEXT:    testb $1, %r8b
   3986 ; AVX2-NEXT:    je LBB52_10
   3987 ; AVX2-NEXT:  ## BB#9: ## %cond.load10
   3988 ; AVX2-NEXT:    vpinsrb $4, 4(%rax), %xmm2, %xmm3
   3989 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
   3990 ; AVX2-NEXT:  LBB52_10: ## %else11
   3991 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %r10b
   3992 ; AVX2-NEXT:    testb $1, %r9b
   3993 ; AVX2-NEXT:    je LBB52_12
   3994 ; AVX2-NEXT:  ## BB#11: ## %cond.load13
   3995 ; AVX2-NEXT:    vpinsrb $5, 5(%rax), %xmm2, %xmm3
   3996 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
   3997 ; AVX2-NEXT:  LBB52_12: ## %else14
   3998 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %r11b
   3999 ; AVX2-NEXT:    testb $1, %r10b
   4000 ; AVX2-NEXT:    je LBB52_14
   4001 ; AVX2-NEXT:  ## BB#13: ## %cond.load16
   4002 ; AVX2-NEXT:    vpinsrb $6, 6(%rax), %xmm2, %xmm3
   4003 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
   4004 ; AVX2-NEXT:  LBB52_14: ## %else17
   4005 ; AVX2-NEXT:    testb $1, %r11b
   4006 ; AVX2-NEXT:    je LBB52_16
   4007 ; AVX2-NEXT:  ## BB#15: ## %cond.load19
   4008 ; AVX2-NEXT:    vpinsrb $7, 7(%rax), %xmm2, %xmm3
   4009 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
   4010 ; AVX2-NEXT:  LBB52_16: ## %else20
   4011 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4012 ; AVX2-NEXT:    je LBB52_18
   4013 ; AVX2-NEXT:  ## BB#17: ## %cond.load22
   4014 ; AVX2-NEXT:    vpinsrb $8, 8(%rax), %xmm2, %xmm3
   4015 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
   4016 ; AVX2-NEXT:  LBB52_18: ## %else23
   4017 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4018 ; AVX2-NEXT:    je LBB52_20
   4019 ; AVX2-NEXT:  ## BB#19: ## %cond.load25
   4020 ; AVX2-NEXT:    vpinsrb $9, 9(%rax), %xmm2, %xmm3
   4021 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
   4022 ; AVX2-NEXT:  LBB52_20: ## %else26
   4023 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4024 ; AVX2-NEXT:    je LBB52_22
   4025 ; AVX2-NEXT:  ## BB#21: ## %cond.load28
   4026 ; AVX2-NEXT:    vpinsrb $10, 10(%rax), %xmm2, %xmm3
   4027 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
   4028 ; AVX2-NEXT:  LBB52_22: ## %else29
   4029 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %bpl
   4030 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4031 ; AVX2-NEXT:    je LBB52_24
   4032 ; AVX2-NEXT:  ## BB#23: ## %cond.load31
   4033 ; AVX2-NEXT:    vpinsrb $11, 11(%rax), %xmm2, %xmm3
   4034 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
   4035 ; AVX2-NEXT:  LBB52_24: ## %else32
   4036 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %bl
   4037 ; AVX2-NEXT:    testb $1, %bpl
   4038 ; AVX2-NEXT:    je LBB52_26
   4039 ; AVX2-NEXT:  ## BB#25: ## %cond.load34
   4040 ; AVX2-NEXT:    vpinsrb $12, 12(%rax), %xmm2, %xmm3
   4041 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
   4042 ; AVX2-NEXT:  LBB52_26: ## %else35
   4043 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %r14b
   4044 ; AVX2-NEXT:    testb $1, %bl
   4045 ; AVX2-NEXT:    je LBB52_28
   4046 ; AVX2-NEXT:  ## BB#27: ## %cond.load37
   4047 ; AVX2-NEXT:    vpinsrb $13, 13(%rax), %xmm2, %xmm3
   4048 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
   4049 ; AVX2-NEXT:  LBB52_28: ## %else38
   4050 ; AVX2-NEXT:    testb $1, %r14b
   4051 ; AVX2-NEXT:    je LBB52_30
   4052 ; AVX2-NEXT:  ## BB#29: ## %cond.load40
   4053 ; AVX2-NEXT:    vpinsrb $14, 14(%rax), %xmm2, %xmm3
   4054 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
   4055 ; AVX2-NEXT:  LBB52_30: ## %else41
   4056 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %r13b
   4057 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4058 ; AVX2-NEXT:    je LBB52_32
   4059 ; AVX2-NEXT:  ## BB#31: ## %cond.load43
   4060 ; AVX2-NEXT:    vpinsrb $15, 15(%rax), %xmm2, %xmm3
   4061 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
   4062 ; AVX2-NEXT:  LBB52_32: ## %else44
   4063 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %r12b
   4064 ; AVX2-NEXT:    testb $1, %r13b
   4065 ; AVX2-NEXT:    je LBB52_34
   4066 ; AVX2-NEXT:  ## BB#33: ## %cond.load46
   4067 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm3
   4068 ; AVX2-NEXT:    vpinsrb $0, 16(%rax), %xmm3, %xmm3
   4069 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm2
   4070 ; AVX2-NEXT:  LBB52_34: ## %else47
   4071 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %r15b
   4072 ; AVX2-NEXT:    testb $1, %r12b
   4073 ; AVX2-NEXT:    je LBB52_36
   4074 ; AVX2-NEXT:  ## BB#35: ## %cond.load49
   4075 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm3
   4076 ; AVX2-NEXT:    vpinsrb $1, 17(%rax), %xmm3, %xmm3
   4077 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm2
   4078 ; AVX2-NEXT:  LBB52_36: ## %else50
   4079 ; AVX2-NEXT:    testb $1, %r15b
   4080 ; AVX2-NEXT:    je LBB52_38
   4081 ; AVX2-NEXT:  ## BB#37: ## %cond.load52
   4082 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm3
   4083 ; AVX2-NEXT:    vpinsrb $2, 18(%rax), %xmm3, %xmm3
   4084 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm2
   4085 ; AVX2-NEXT:  LBB52_38: ## %else53
   4086 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4087 ; AVX2-NEXT:    je LBB52_40
   4088 ; AVX2-NEXT:  ## BB#39: ## %cond.load55
   4089 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm3
   4090 ; AVX2-NEXT:    vpinsrb $3, 19(%rax), %xmm3, %xmm3
   4091 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm2
   4092 ; AVX2-NEXT:  LBB52_40: ## %else56
   4093 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4094 ; AVX2-NEXT:    je LBB52_42
   4095 ; AVX2-NEXT:  ## BB#41: ## %cond.load58
   4096 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm3
   4097 ; AVX2-NEXT:    vpinsrb $4, 20(%rax), %xmm3, %xmm3
   4098 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm2
   4099 ; AVX2-NEXT:  LBB52_42: ## %else59
   4100 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4101 ; AVX2-NEXT:    je LBB52_44
   4102 ; AVX2-NEXT:  ## BB#43: ## %cond.load61
   4103 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm3
   4104 ; AVX2-NEXT:    vpinsrb $5, 21(%rax), %xmm3, %xmm3
   4105 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm2
   4106 ; AVX2-NEXT:  LBB52_44: ## %else62
   4107 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4108 ; AVX2-NEXT:    je LBB52_46
   4109 ; AVX2-NEXT:  ## BB#45: ## %cond.load64
   4110 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm3
   4111 ; AVX2-NEXT:    vpinsrb $6, 22(%rax), %xmm3, %xmm3
   4112 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm2
   4113 ; AVX2-NEXT:  LBB52_46: ## %else65
   4114 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4115 ; AVX2-NEXT:    je LBB52_48
   4116 ; AVX2-NEXT:  ## BB#47: ## %cond.load67
   4117 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm3
   4118 ; AVX2-NEXT:    vpinsrb $7, 23(%rax), %xmm3, %xmm3
   4119 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm2
   4120 ; AVX2-NEXT:  LBB52_48: ## %else68
   4121 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4122 ; AVX2-NEXT:    je LBB52_50
   4123 ; AVX2-NEXT:  ## BB#49: ## %cond.load70
   4124 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm3
   4125 ; AVX2-NEXT:    vpinsrb $8, 24(%rax), %xmm3, %xmm3
   4126 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm2
   4127 ; AVX2-NEXT:  LBB52_50: ## %else71
   4128 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4129 ; AVX2-NEXT:    je LBB52_52
   4130 ; AVX2-NEXT:  ## BB#51: ## %cond.load73
   4131 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm3
   4132 ; AVX2-NEXT:    vpinsrb $9, 25(%rax), %xmm3, %xmm3
   4133 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm2
   4134 ; AVX2-NEXT:  LBB52_52: ## %else74
   4135 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4136 ; AVX2-NEXT:    je LBB52_54
   4137 ; AVX2-NEXT:  ## BB#53: ## %cond.load76
   4138 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm3
   4139 ; AVX2-NEXT:    vpinsrb $10, 26(%rax), %xmm3, %xmm3
   4140 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm2
   4141 ; AVX2-NEXT:  LBB52_54: ## %else77
   4142 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4143 ; AVX2-NEXT:    je LBB52_56
   4144 ; AVX2-NEXT:  ## BB#55: ## %cond.load79
   4145 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm3
   4146 ; AVX2-NEXT:    vpinsrb $11, 27(%rax), %xmm3, %xmm3
   4147 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm2
   4148 ; AVX2-NEXT:  LBB52_56: ## %else80
   4149 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4150 ; AVX2-NEXT:    je LBB52_58
   4151 ; AVX2-NEXT:  ## BB#57: ## %cond.load82
   4152 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm3
   4153 ; AVX2-NEXT:    vpinsrb $12, 28(%rax), %xmm3, %xmm3
   4154 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm2
   4155 ; AVX2-NEXT:  LBB52_58: ## %else83
   4156 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4157 ; AVX2-NEXT:    je LBB52_60
   4158 ; AVX2-NEXT:  ## BB#59: ## %cond.load85
   4159 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm3
   4160 ; AVX2-NEXT:    vpinsrb $13, 29(%rax), %xmm3, %xmm3
   4161 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm2
   4162 ; AVX2-NEXT:  LBB52_60: ## %else86
   4163 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4164 ; AVX2-NEXT:    je LBB52_62
   4165 ; AVX2-NEXT:  ## BB#61: ## %cond.load88
   4166 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm3
   4167 ; AVX2-NEXT:    vpinsrb $14, 30(%rax), %xmm3, %xmm3
   4168 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm2
   4169 ; AVX2-NEXT:  LBB52_62: ## %else89
   4170 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4171 ; AVX2-NEXT:    je LBB52_64
   4172 ; AVX2-NEXT:  ## BB#63: ## %cond.load91
   4173 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm3
   4174 ; AVX2-NEXT:    vpinsrb $15, 31(%rax), %xmm3, %xmm3
   4175 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm2
   4176 ; AVX2-NEXT:  LBB52_64: ## %else92
   4177 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4178 ; AVX2-NEXT:    je LBB52_66
   4179 ; AVX2-NEXT:  ## BB#65: ## %cond.load94
   4180 ; AVX2-NEXT:    vpinsrb $0, 32(%rax), %xmm0, %xmm3
   4181 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm0[4,5,6,7]
   4182 ; AVX2-NEXT:  LBB52_66: ## %else95
   4183 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4184 ; AVX2-NEXT:    je LBB52_68
   4185 ; AVX2-NEXT:  ## BB#67: ## %cond.load97
   4186 ; AVX2-NEXT:    vpinsrb $1, 33(%rax), %xmm3, %xmm4
   4187 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   4188 ; AVX2-NEXT:  LBB52_68: ## %else98
   4189 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4190 ; AVX2-NEXT:    je LBB52_70
   4191 ; AVX2-NEXT:  ## BB#69: ## %cond.load100
   4192 ; AVX2-NEXT:    vpinsrb $2, 34(%rax), %xmm3, %xmm4
   4193 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   4194 ; AVX2-NEXT:  LBB52_70: ## %else101
   4195 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4196 ; AVX2-NEXT:    je LBB52_72
   4197 ; AVX2-NEXT:  ## BB#71: ## %cond.load103
   4198 ; AVX2-NEXT:    vpinsrb $3, 35(%rax), %xmm3, %xmm4
   4199 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   4200 ; AVX2-NEXT:  LBB52_72: ## %else104
   4201 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4202 ; AVX2-NEXT:    je LBB52_74
   4203 ; AVX2-NEXT:  ## BB#73: ## %cond.load106
   4204 ; AVX2-NEXT:    vpinsrb $4, 36(%rax), %xmm3, %xmm4
   4205 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   4206 ; AVX2-NEXT:  LBB52_74: ## %else107
   4207 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4208 ; AVX2-NEXT:    je LBB52_76
   4209 ; AVX2-NEXT:  ## BB#75: ## %cond.load109
   4210 ; AVX2-NEXT:    vpinsrb $5, 37(%rax), %xmm3, %xmm4
   4211 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   4212 ; AVX2-NEXT:  LBB52_76: ## %else110
   4213 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4214 ; AVX2-NEXT:    je LBB52_78
   4215 ; AVX2-NEXT:  ## BB#77: ## %cond.load112
   4216 ; AVX2-NEXT:    vpinsrb $6, 38(%rax), %xmm3, %xmm4
   4217 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   4218 ; AVX2-NEXT:  LBB52_78: ## %else113
   4219 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4220 ; AVX2-NEXT:    je LBB52_80
   4221 ; AVX2-NEXT:  ## BB#79: ## %cond.load115
   4222 ; AVX2-NEXT:    vpinsrb $7, 39(%rax), %xmm3, %xmm4
   4223 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   4224 ; AVX2-NEXT:  LBB52_80: ## %else116
   4225 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4226 ; AVX2-NEXT:    je LBB52_82
   4227 ; AVX2-NEXT:  ## BB#81: ## %cond.load118
   4228 ; AVX2-NEXT:    vpinsrb $8, 40(%rax), %xmm3, %xmm4
   4229 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   4230 ; AVX2-NEXT:  LBB52_82: ## %else119
   4231 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4232 ; AVX2-NEXT:    je LBB52_84
   4233 ; AVX2-NEXT:  ## BB#83: ## %cond.load121
   4234 ; AVX2-NEXT:    vpinsrb $9, 41(%rax), %xmm3, %xmm4
   4235 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   4236 ; AVX2-NEXT:  LBB52_84: ## %else122
   4237 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4238 ; AVX2-NEXT:    je LBB52_86
   4239 ; AVX2-NEXT:  ## BB#85: ## %cond.load124
   4240 ; AVX2-NEXT:    vpinsrb $10, 42(%rax), %xmm3, %xmm4
   4241 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   4242 ; AVX2-NEXT:  LBB52_86: ## %else125
   4243 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4244 ; AVX2-NEXT:    je LBB52_88
   4245 ; AVX2-NEXT:  ## BB#87: ## %cond.load127
   4246 ; AVX2-NEXT:    vpinsrb $11, 43(%rax), %xmm3, %xmm4
   4247 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   4248 ; AVX2-NEXT:  LBB52_88: ## %else128
   4249 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4250 ; AVX2-NEXT:    je LBB52_90
   4251 ; AVX2-NEXT:  ## BB#89: ## %cond.load130
   4252 ; AVX2-NEXT:    vpinsrb $12, 44(%rax), %xmm3, %xmm4
   4253 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   4254 ; AVX2-NEXT:  LBB52_90: ## %else131
   4255 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4256 ; AVX2-NEXT:    je LBB52_92
   4257 ; AVX2-NEXT:  ## BB#91: ## %cond.load133
   4258 ; AVX2-NEXT:    vpinsrb $13, 45(%rax), %xmm3, %xmm4
   4259 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   4260 ; AVX2-NEXT:  LBB52_92: ## %else134
   4261 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4262 ; AVX2-NEXT:    je LBB52_94
   4263 ; AVX2-NEXT:  ## BB#93: ## %cond.load136
   4264 ; AVX2-NEXT:    vpinsrb $14, 46(%rax), %xmm3, %xmm4
   4265 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   4266 ; AVX2-NEXT:  LBB52_94: ## %else137
   4267 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4268 ; AVX2-NEXT:    je LBB52_96
   4269 ; AVX2-NEXT:  ## BB#95: ## %cond.load139
   4270 ; AVX2-NEXT:    vpinsrb $15, 47(%rax), %xmm3, %xmm4
   4271 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   4272 ; AVX2-NEXT:  LBB52_96: ## %else140
   4273 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4274 ; AVX2-NEXT:    je LBB52_98
   4275 ; AVX2-NEXT:  ## BB#97: ## %cond.load142
   4276 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   4277 ; AVX2-NEXT:    vpinsrb $0, 48(%rax), %xmm4, %xmm4
   4278 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   4279 ; AVX2-NEXT:  LBB52_98: ## %else143
   4280 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4281 ; AVX2-NEXT:    je LBB52_100
   4282 ; AVX2-NEXT:  ## BB#99: ## %cond.load145
   4283 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   4284 ; AVX2-NEXT:    vpinsrb $1, 49(%rax), %xmm4, %xmm4
   4285 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   4286 ; AVX2-NEXT:  LBB52_100: ## %else146
   4287 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4288 ; AVX2-NEXT:    je LBB52_102
   4289 ; AVX2-NEXT:  ## BB#101: ## %cond.load148
   4290 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   4291 ; AVX2-NEXT:    vpinsrb $2, 50(%rax), %xmm4, %xmm4
   4292 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   4293 ; AVX2-NEXT:  LBB52_102: ## %else149
   4294 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4295 ; AVX2-NEXT:    je LBB52_104
   4296 ; AVX2-NEXT:  ## BB#103: ## %cond.load151
   4297 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   4298 ; AVX2-NEXT:    vpinsrb $3, 51(%rax), %xmm4, %xmm4
   4299 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   4300 ; AVX2-NEXT:  LBB52_104: ## %else152
   4301 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4302 ; AVX2-NEXT:    je LBB52_106
   4303 ; AVX2-NEXT:  ## BB#105: ## %cond.load154
   4304 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   4305 ; AVX2-NEXT:    vpinsrb $4, 52(%rax), %xmm4, %xmm4
   4306 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   4307 ; AVX2-NEXT:  LBB52_106: ## %else155
   4308 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4309 ; AVX2-NEXT:    je LBB52_108
   4310 ; AVX2-NEXT:  ## BB#107: ## %cond.load157
   4311 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   4312 ; AVX2-NEXT:    vpinsrb $5, 53(%rax), %xmm4, %xmm4
   4313 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   4314 ; AVX2-NEXT:  LBB52_108: ## %else158
   4315 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4316 ; AVX2-NEXT:    je LBB52_110
   4317 ; AVX2-NEXT:  ## BB#109: ## %cond.load160
   4318 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   4319 ; AVX2-NEXT:    vpinsrb $6, 54(%rax), %xmm4, %xmm4
   4320 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   4321 ; AVX2-NEXT:  LBB52_110: ## %else161
   4322 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4323 ; AVX2-NEXT:    je LBB52_112
   4324 ; AVX2-NEXT:  ## BB#111: ## %cond.load163
   4325 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   4326 ; AVX2-NEXT:    vpinsrb $7, 55(%rax), %xmm4, %xmm4
   4327 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   4328 ; AVX2-NEXT:  LBB52_112: ## %else164
   4329 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4330 ; AVX2-NEXT:    je LBB52_114
   4331 ; AVX2-NEXT:  ## BB#113: ## %cond.load166
   4332 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   4333 ; AVX2-NEXT:    vpinsrb $8, 56(%rax), %xmm4, %xmm4
   4334 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   4335 ; AVX2-NEXT:  LBB52_114: ## %else167
   4336 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4337 ; AVX2-NEXT:    je LBB52_116
   4338 ; AVX2-NEXT:  ## BB#115: ## %cond.load169
   4339 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   4340 ; AVX2-NEXT:    vpinsrb $9, 57(%rax), %xmm4, %xmm4
   4341 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   4342 ; AVX2-NEXT:  LBB52_116: ## %else170
   4343 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4344 ; AVX2-NEXT:    je LBB52_118
   4345 ; AVX2-NEXT:  ## BB#117: ## %cond.load172
   4346 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   4347 ; AVX2-NEXT:    vpinsrb $10, 58(%rax), %xmm4, %xmm4
   4348 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   4349 ; AVX2-NEXT:  LBB52_118: ## %else173
   4350 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4351 ; AVX2-NEXT:    je LBB52_120
   4352 ; AVX2-NEXT:  ## BB#119: ## %cond.load175
   4353 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   4354 ; AVX2-NEXT:    vpinsrb $11, 59(%rax), %xmm4, %xmm4
   4355 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   4356 ; AVX2-NEXT:  LBB52_120: ## %else176
   4357 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4358 ; AVX2-NEXT:    je LBB52_122
   4359 ; AVX2-NEXT:  ## BB#121: ## %cond.load178
   4360 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   4361 ; AVX2-NEXT:    vpinsrb $12, 60(%rax), %xmm4, %xmm4
   4362 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   4363 ; AVX2-NEXT:  LBB52_122: ## %else179
   4364 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4365 ; AVX2-NEXT:    je LBB52_124
   4366 ; AVX2-NEXT:  ## BB#123: ## %cond.load181
   4367 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   4368 ; AVX2-NEXT:    vpinsrb $13, 61(%rax), %xmm4, %xmm4
   4369 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   4370 ; AVX2-NEXT:  LBB52_124: ## %else182
   4371 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4372 ; AVX2-NEXT:    jne LBB52_126
   4373 ; AVX2-NEXT:  ## BB#125:
   4374 ; AVX2-NEXT:    movq %rax, %rdi
   4375 ; AVX2-NEXT:    jmp LBB52_127
   4376 ; AVX2-NEXT:  LBB52_126: ## %cond.load184
   4377 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   4378 ; AVX2-NEXT:    movq %rax, %rdi
   4379 ; AVX2-NEXT:    vpinsrb $14, 62(%rax), %xmm4, %xmm4
   4380 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   4381 ; AVX2-NEXT:  LBB52_127: ## %else185
   4382 ; AVX2-NEXT:    movl %ebp, %eax
   4383 ; AVX2-NEXT:    testb $1, {{[0-9]+}}(%rsp)
   4384 ; AVX2-NEXT:    movl %r9d, {{[0-9]+}}(%rsp) ## 4-byte Spill
   4385 ; AVX2-NEXT:    movl %r8d, (%rsp) ## 4-byte Spill
   4386 ; AVX2-NEXT:    movl %ecx, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4387 ; AVX2-NEXT:    movl %edx, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4388 ; AVX2-NEXT:    movl %esi, %ebp
   4389 ; AVX2-NEXT:    je LBB52_129
   4390 ; AVX2-NEXT:  ## BB#128: ## %cond.load187
   4391 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   4392 ; AVX2-NEXT:    vpinsrb $15, 63(%rdi), %xmm4, %xmm4
   4393 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   4394 ; AVX2-NEXT:  LBB52_129: ## %else188
   4395 ; AVX2-NEXT:    movzbl %r10b, %ecx
   4396 ; AVX2-NEXT:    movl %ecx, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4397 ; AVX2-NEXT:    movzbl %r11b, %ecx
   4398 ; AVX2-NEXT:    movl %ecx, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4399 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
   4400 ; AVX2-NEXT:    movl %ecx, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4401 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
   4402 ; AVX2-NEXT:    movl %ecx, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4403 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
   4404 ; AVX2-NEXT:    movl %ecx, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4405 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
   4406 ; AVX2-NEXT:    movl %ecx, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4407 ; AVX2-NEXT:    movzbl %al, %eax
   4408 ; AVX2-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4409 ; AVX2-NEXT:    movzbl %bl, %eax
   4410 ; AVX2-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4411 ; AVX2-NEXT:    movzbl %r14b, %eax
   4412 ; AVX2-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4413 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   4414 ; AVX2-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4415 ; AVX2-NEXT:    movzbl %r12b, %eax
   4416 ; AVX2-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4417 ; AVX2-NEXT:    movzbl %r13b, %eax
   4418 ; AVX2-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4419 ; AVX2-NEXT:    movzbl %r15b, %eax
   4420 ; AVX2-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4421 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   4422 ; AVX2-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4423 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   4424 ; AVX2-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4425 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   4426 ; AVX2-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4427 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   4428 ; AVX2-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4429 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   4430 ; AVX2-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4431 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   4432 ; AVX2-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4433 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   4434 ; AVX2-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4435 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   4436 ; AVX2-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4437 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   4438 ; AVX2-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4439 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   4440 ; AVX2-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4441 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   4442 ; AVX2-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4443 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   4444 ; AVX2-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4445 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   4446 ; AVX2-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4447 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   4448 ; AVX2-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4449 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %r12d
   4450 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %r15d
   4451 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %r14d
   4452 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %ebx
   4453 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %r11d
   4454 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %r9d
   4455 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %esi
   4456 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   4457 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
   4458 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %edx
   4459 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %r8d
   4460 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %r10d
   4461 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
   4462 ; AVX2-NEXT:    movl %edi, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   4463 ; AVX2-NEXT:    movl -{{[0-9]+}}(%rsp), %edi ## 4-byte Reload
   4464 ; AVX2-NEXT:    movzbl %dil, %r13d
   4465 ; AVX2-NEXT:    vmovd %r13d, %xmm4
   4466 ; AVX2-NEXT:    movzbl %bpl, %ebp
   4467 ; AVX2-NEXT:    vpinsrb $1, %ebp, %xmm4, %xmm4
   4468 ; AVX2-NEXT:    movl -{{[0-9]+}}(%rsp), %ebp ## 4-byte Reload
   4469 ; AVX2-NEXT:    movzbl %bpl, %ebp
   4470 ; AVX2-NEXT:    vpinsrb $2, %ebp, %xmm4, %xmm4
   4471 ; AVX2-NEXT:    movl -{{[0-9]+}}(%rsp), %ebp ## 4-byte Reload
   4472 ; AVX2-NEXT:    movzbl %bpl, %ebp
   4473 ; AVX2-NEXT:    vpinsrb $3, %ebp, %xmm4, %xmm4
   4474 ; AVX2-NEXT:    movl (%rsp), %ebp ## 4-byte Reload
   4475 ; AVX2-NEXT:    movzbl %bpl, %ebp
   4476 ; AVX2-NEXT:    vpinsrb $4, %ebp, %xmm4, %xmm4
   4477 ; AVX2-NEXT:    movl {{[0-9]+}}(%rsp), %ebp ## 4-byte Reload
   4478 ; AVX2-NEXT:    movzbl %bpl, %ebp
   4479 ; AVX2-NEXT:    vpinsrb $5, %ebp, %xmm4, %xmm4
   4480 ; AVX2-NEXT:    vpinsrb $6, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
   4481 ; AVX2-NEXT:    vpinsrb $7, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
   4482 ; AVX2-NEXT:    vpinsrb $8, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
   4483 ; AVX2-NEXT:    vpinsrb $9, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
   4484 ; AVX2-NEXT:    vpinsrb $10, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
   4485 ; AVX2-NEXT:    vpinsrb $11, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
   4486 ; AVX2-NEXT:    vpinsrb $12, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
   4487 ; AVX2-NEXT:    vpinsrb $13, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
   4488 ; AVX2-NEXT:    vpinsrb $14, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
   4489 ; AVX2-NEXT:    vpinsrb $15, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
   4490 ; AVX2-NEXT:    vmovd -{{[0-9]+}}(%rsp), %xmm5 ## 4-byte Folded Reload
   4491 ; AVX2-NEXT:    ## xmm5 = mem[0],zero,zero,zero
   4492 ; AVX2-NEXT:    vpinsrb $1, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   4493 ; AVX2-NEXT:    vpinsrb $2, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   4494 ; AVX2-NEXT:    vpinsrb $3, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   4495 ; AVX2-NEXT:    vpinsrb $4, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   4496 ; AVX2-NEXT:    vpinsrb $5, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   4497 ; AVX2-NEXT:    vpinsrb $6, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   4498 ; AVX2-NEXT:    vpinsrb $7, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   4499 ; AVX2-NEXT:    vpinsrb $8, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   4500 ; AVX2-NEXT:    vpinsrb $9, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   4501 ; AVX2-NEXT:    vpinsrb $10, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   4502 ; AVX2-NEXT:    vpinsrb $11, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   4503 ; AVX2-NEXT:    vpinsrb $12, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   4504 ; AVX2-NEXT:    vpinsrb $13, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   4505 ; AVX2-NEXT:    vpinsrb $14, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   4506 ; AVX2-NEXT:    vpinsrb $15, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
   4507 ; AVX2-NEXT:    vmovd %r12d, %xmm6
   4508 ; AVX2-NEXT:    vpinsrb $1, -{{[0-9]+}}(%rsp), %xmm6, %xmm6 ## 4-byte Folded Reload
   4509 ; AVX2-NEXT:    vpinsrb $2, %r15d, %xmm6, %xmm6
   4510 ; AVX2-NEXT:    vpinsrb $3, %r14d, %xmm6, %xmm6
   4511 ; AVX2-NEXT:    vpinsrb $4, %ebx, %xmm6, %xmm6
   4512 ; AVX2-NEXT:    vpinsrb $5, %r11d, %xmm6, %xmm6
   4513 ; AVX2-NEXT:    vpinsrb $6, %r9d, %xmm6, %xmm6
   4514 ; AVX2-NEXT:    vpinsrb $7, %esi, %xmm6, %xmm6
   4515 ; AVX2-NEXT:    vpinsrb $8, %eax, %xmm6, %xmm6
   4516 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   4517 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %r15d
   4518 ; AVX2-NEXT:    vpinsrb $9, %ecx, %xmm6, %xmm6
   4519 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %r9d
   4520 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %r12d
   4521 ; AVX2-NEXT:    vpinsrb $10, %edx, %xmm6, %xmm6
   4522 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %r11d
   4523 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %r14d
   4524 ; AVX2-NEXT:    vpinsrb $11, %r8d, %xmm6, %xmm6
   4525 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %r13d
   4526 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
   4527 ; AVX2-NEXT:    vpinsrb $12, %r10d, %xmm6, %xmm6
   4528 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %r8d
   4529 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %ebx
   4530 ; AVX2-NEXT:    vpinsrb $13, -{{[0-9]+}}(%rsp), %xmm6, %xmm6 ## 4-byte Folded Reload
   4531 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %r10d
   4532 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %ebp
   4533 ; AVX2-NEXT:    vpinsrb $14, %eax, %xmm6, %xmm6
   4534 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
   4535 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
   4536 ; AVX2-NEXT:    vpinsrb $15, %r15d, %xmm6, %xmm6
   4537 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %r15d
   4538 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %esi
   4539 ; AVX2-NEXT:    vmovd %r12d, %xmm7
   4540 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %r12d
   4541 ; AVX2-NEXT:    movzbl {{[0-9]+}}(%rsp), %edx
   4542 ; AVX2-NEXT:    vpinsrb $1, %r9d, %xmm7, %xmm7
   4543 ; AVX2-NEXT:    vpinsrb $2, %r11d, %xmm7, %xmm7
   4544 ; AVX2-NEXT:    vpinsrb $3, %r14d, %xmm7, %xmm7
   4545 ; AVX2-NEXT:    vpinsrb $4, %r13d, %xmm7, %xmm7
   4546 ; AVX2-NEXT:    vpinsrb $5, %ecx, %xmm7, %xmm7
   4547 ; AVX2-NEXT:    vpinsrb $6, %r8d, %xmm7, %xmm7
   4548 ; AVX2-NEXT:    vpinsrb $7, %ebx, %xmm7, %xmm7
   4549 ; AVX2-NEXT:    vpinsrb $8, %r10d, %xmm7, %xmm7
   4550 ; AVX2-NEXT:    vpinsrb $9, %ebp, %xmm7, %xmm7
   4551 ; AVX2-NEXT:    vpinsrb $10, %eax, %xmm7, %xmm7
   4552 ; AVX2-NEXT:    vpinsrb $11, %edi, %xmm7, %xmm7
   4553 ; AVX2-NEXT:    vpinsrb $12, %r15d, %xmm7, %xmm7
   4554 ; AVX2-NEXT:    vpinsrb $13, %esi, %xmm7, %xmm7
   4555 ; AVX2-NEXT:    vpinsrb $14, %r12d, %xmm7, %xmm7
   4556 ; AVX2-NEXT:    vpinsrb $15, %edx, %xmm7, %xmm7
   4557 ; AVX2-NEXT:    vinserti128 $1, %xmm5, %ymm4, %ymm4
   4558 ; AVX2-NEXT:    vpsllw $7, %ymm4, %ymm4
   4559 ; AVX2-NEXT:    vmovdqa {{.*#+}} ymm5 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128]
   4560 ; AVX2-NEXT:    vpand %ymm5, %ymm4, %ymm4
   4561 ; AVX2-NEXT:    vpblendvb %ymm4, %ymm2, %ymm0, %ymm0
   4562 ; AVX2-NEXT:    vinserti128 $1, %xmm7, %ymm6, %ymm2
   4563 ; AVX2-NEXT:    vpsllw $7, %ymm2, %ymm2
   4564 ; AVX2-NEXT:    vpand %ymm5, %ymm2, %ymm2
   4565 ; AVX2-NEXT:    vpblendvb %ymm2, %ymm3, %ymm1, %ymm1
   4566 ; AVX2-NEXT:    addq $8, %rsp
   4567 ; AVX2-NEXT:    popq %rbx
   4568 ; AVX2-NEXT:    popq %r12
   4569 ; AVX2-NEXT:    popq %r13
   4570 ; AVX2-NEXT:    popq %r14
   4571 ; AVX2-NEXT:    popq %r15
   4572 ; AVX2-NEXT:    popq %rbp
   4573 ; AVX2-NEXT:    retq
   4574 ;
   4575 ; AVX512F-LABEL: test_mask_load_64xi8:
   4576 ; AVX512F:       ## BB#0:
   4577 ; AVX512F-NEXT:    pushq %rbp
   4578 ; AVX512F-NEXT:  Ltmp0:
   4579 ; AVX512F-NEXT:    .cfi_def_cfa_offset 16
   4580 ; AVX512F-NEXT:    pushq %r15
   4581 ; AVX512F-NEXT:  Ltmp1:
   4582 ; AVX512F-NEXT:    .cfi_def_cfa_offset 24
   4583 ; AVX512F-NEXT:    pushq %r14
   4584 ; AVX512F-NEXT:  Ltmp2:
   4585 ; AVX512F-NEXT:    .cfi_def_cfa_offset 32
   4586 ; AVX512F-NEXT:    pushq %r13
   4587 ; AVX512F-NEXT:  Ltmp3:
   4588 ; AVX512F-NEXT:    .cfi_def_cfa_offset 40
   4589 ; AVX512F-NEXT:    pushq %r12
   4590 ; AVX512F-NEXT:  Ltmp4:
   4591 ; AVX512F-NEXT:    .cfi_def_cfa_offset 48
   4592 ; AVX512F-NEXT:    pushq %rbx
   4593 ; AVX512F-NEXT:  Ltmp5:
   4594 ; AVX512F-NEXT:    .cfi_def_cfa_offset 56
   4595 ; AVX512F-NEXT:    subq $76, %rsp
   4596 ; AVX512F-NEXT:  Ltmp6:
   4597 ; AVX512F-NEXT:    .cfi_def_cfa_offset 132
   4598 ; AVX512F-NEXT:  Ltmp7:
   4599 ; AVX512F-NEXT:    .cfi_offset %rbx, -56
   4600 ; AVX512F-NEXT:  Ltmp8:
   4601 ; AVX512F-NEXT:    .cfi_offset %r12, -48
   4602 ; AVX512F-NEXT:  Ltmp9:
   4603 ; AVX512F-NEXT:    .cfi_offset %r13, -40
   4604 ; AVX512F-NEXT:  Ltmp10:
   4605 ; AVX512F-NEXT:    .cfi_offset %r14, -32
   4606 ; AVX512F-NEXT:  Ltmp11:
   4607 ; AVX512F-NEXT:    .cfi_offset %r15, -24
   4608 ; AVX512F-NEXT:  Ltmp12:
   4609 ; AVX512F-NEXT:    .cfi_offset %rbp, -16
   4610 ; AVX512F-NEXT:    vpmovsxbd %xmm0, %zmm0
   4611 ; AVX512F-NEXT:    vpslld $31, %zmm0, %zmm0
   4612 ; AVX512F-NEXT:    vptestmd %zmm0, %zmm0, %k0
   4613 ; AVX512F-NEXT:    kshiftlw $15, %k0, %k1
   4614 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   4615 ; AVX512F-NEXT:    kmovw %k1, {{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4616 ; AVX512F-NEXT:    kmovw %k1, %eax
   4617 ; AVX512F-NEXT:    testb %al, %al
   4618 ; AVX512F-NEXT:    je LBB52_2
   4619 ; AVX512F-NEXT:  ## BB#1: ## %cond.load
   4620 ; AVX512F-NEXT:    movzbl (%rdi), %eax
   4621 ; AVX512F-NEXT:    vmovd %eax, %xmm0
   4622 ; AVX512F-NEXT:  LBB52_2: ## %else
   4623 ; AVX512F-NEXT:    kshiftlw $14, %k0, %k1
   4624 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   4625 ; AVX512F-NEXT:    kmovw %k1, {{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4626 ; AVX512F-NEXT:    kmovw %k1, %eax
   4627 ; AVX512F-NEXT:    testb %al, %al
   4628 ; AVX512F-NEXT:    je LBB52_4
   4629 ; AVX512F-NEXT:  ## BB#3: ## %cond.load1
   4630 ; AVX512F-NEXT:    vpinsrb $1, 1(%rdi), %xmm0, %xmm6
   4631 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm0 = ymm6[0,1,2,3],ymm0[4,5,6,7]
   4632 ; AVX512F-NEXT:  LBB52_4: ## %else2
   4633 ; AVX512F-NEXT:    kshiftlw $13, %k0, %k1
   4634 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   4635 ; AVX512F-NEXT:    kmovw %k1, {{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4636 ; AVX512F-NEXT:    kmovw %k1, %eax
   4637 ; AVX512F-NEXT:    testb %al, %al
   4638 ; AVX512F-NEXT:    je LBB52_6
   4639 ; AVX512F-NEXT:  ## BB#5: ## %cond.load4
   4640 ; AVX512F-NEXT:    vpinsrb $2, 2(%rdi), %xmm0, %xmm6
   4641 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm0 = ymm6[0,1,2,3],ymm0[4,5,6,7]
   4642 ; AVX512F-NEXT:  LBB52_6: ## %else5
   4643 ; AVX512F-NEXT:    kshiftlw $12, %k0, %k1
   4644 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   4645 ; AVX512F-NEXT:    kmovw %k1, {{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4646 ; AVX512F-NEXT:    kmovw %k1, %eax
   4647 ; AVX512F-NEXT:    testb %al, %al
   4648 ; AVX512F-NEXT:    je LBB52_8
   4649 ; AVX512F-NEXT:  ## BB#7: ## %cond.load7
   4650 ; AVX512F-NEXT:    vpinsrb $3, 3(%rdi), %xmm0, %xmm6
   4651 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm0 = ymm6[0,1,2,3],ymm0[4,5,6,7]
   4652 ; AVX512F-NEXT:  LBB52_8: ## %else8
   4653 ; AVX512F-NEXT:    kshiftlw $11, %k0, %k1
   4654 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   4655 ; AVX512F-NEXT:    kmovw %k1, {{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4656 ; AVX512F-NEXT:    kmovw %k1, %eax
   4657 ; AVX512F-NEXT:    testb %al, %al
   4658 ; AVX512F-NEXT:    je LBB52_10
   4659 ; AVX512F-NEXT:  ## BB#9: ## %cond.load10
   4660 ; AVX512F-NEXT:    vpinsrb $4, 4(%rdi), %xmm0, %xmm6
   4661 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm0 = ymm6[0,1,2,3],ymm0[4,5,6,7]
   4662 ; AVX512F-NEXT:  LBB52_10: ## %else11
   4663 ; AVX512F-NEXT:    kshiftlw $10, %k0, %k1
   4664 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   4665 ; AVX512F-NEXT:    kmovw %k1, {{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4666 ; AVX512F-NEXT:    kmovw %k1, %eax
   4667 ; AVX512F-NEXT:    testb %al, %al
   4668 ; AVX512F-NEXT:    je LBB52_12
   4669 ; AVX512F-NEXT:  ## BB#11: ## %cond.load13
   4670 ; AVX512F-NEXT:    vpinsrb $5, 5(%rdi), %xmm0, %xmm6
   4671 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm0 = ymm6[0,1,2,3],ymm0[4,5,6,7]
   4672 ; AVX512F-NEXT:  LBB52_12: ## %else14
   4673 ; AVX512F-NEXT:    kshiftlw $9, %k0, %k1
   4674 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   4675 ; AVX512F-NEXT:    kmovw %k1, {{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4676 ; AVX512F-NEXT:    kmovw %k1, %eax
   4677 ; AVX512F-NEXT:    testb %al, %al
   4678 ; AVX512F-NEXT:    je LBB52_14
   4679 ; AVX512F-NEXT:  ## BB#13: ## %cond.load16
   4680 ; AVX512F-NEXT:    vpinsrb $6, 6(%rdi), %xmm0, %xmm6
   4681 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm0 = ymm6[0,1,2,3],ymm0[4,5,6,7]
   4682 ; AVX512F-NEXT:  LBB52_14: ## %else17
   4683 ; AVX512F-NEXT:    kshiftlw $8, %k0, %k1
   4684 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   4685 ; AVX512F-NEXT:    kmovw %k1, {{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4686 ; AVX512F-NEXT:    kmovw %k1, %eax
   4687 ; AVX512F-NEXT:    testb %al, %al
   4688 ; AVX512F-NEXT:    je LBB52_16
   4689 ; AVX512F-NEXT:  ## BB#15: ## %cond.load19
   4690 ; AVX512F-NEXT:    vpinsrb $7, 7(%rdi), %xmm0, %xmm6
   4691 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm0 = ymm6[0,1,2,3],ymm0[4,5,6,7]
   4692 ; AVX512F-NEXT:  LBB52_16: ## %else20
   4693 ; AVX512F-NEXT:    kshiftlw $7, %k0, %k1
   4694 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   4695 ; AVX512F-NEXT:    kmovw %k1, {{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4696 ; AVX512F-NEXT:    kmovw %k1, %eax
   4697 ; AVX512F-NEXT:    testb %al, %al
   4698 ; AVX512F-NEXT:    je LBB52_18
   4699 ; AVX512F-NEXT:  ## BB#17: ## %cond.load22
   4700 ; AVX512F-NEXT:    vpinsrb $8, 8(%rdi), %xmm0, %xmm6
   4701 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm0 = ymm6[0,1,2,3],ymm0[4,5,6,7]
   4702 ; AVX512F-NEXT:  LBB52_18: ## %else23
   4703 ; AVX512F-NEXT:    kshiftlw $6, %k0, %k1
   4704 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   4705 ; AVX512F-NEXT:    kmovw %k1, (%rsp) ## 2-byte Folded Spill
   4706 ; AVX512F-NEXT:    kmovw %k1, %eax
   4707 ; AVX512F-NEXT:    testb %al, %al
   4708 ; AVX512F-NEXT:    je LBB52_20
   4709 ; AVX512F-NEXT:  ## BB#19: ## %cond.load25
   4710 ; AVX512F-NEXT:    vpinsrb $9, 9(%rdi), %xmm0, %xmm6
   4711 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm0 = ymm6[0,1,2,3],ymm0[4,5,6,7]
   4712 ; AVX512F-NEXT:  LBB52_20: ## %else26
   4713 ; AVX512F-NEXT:    kshiftlw $5, %k0, %k1
   4714 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   4715 ; AVX512F-NEXT:    kmovw %k1, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4716 ; AVX512F-NEXT:    kmovw %k1, %eax
   4717 ; AVX512F-NEXT:    testb %al, %al
   4718 ; AVX512F-NEXT:    je LBB52_22
   4719 ; AVX512F-NEXT:  ## BB#21: ## %cond.load28
   4720 ; AVX512F-NEXT:    vpinsrb $10, 10(%rdi), %xmm0, %xmm6
   4721 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm0 = ymm6[0,1,2,3],ymm0[4,5,6,7]
   4722 ; AVX512F-NEXT:  LBB52_22: ## %else29
   4723 ; AVX512F-NEXT:    kshiftlw $4, %k0, %k1
   4724 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   4725 ; AVX512F-NEXT:    kmovw %k1, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4726 ; AVX512F-NEXT:    kmovw %k1, %eax
   4727 ; AVX512F-NEXT:    testb %al, %al
   4728 ; AVX512F-NEXT:    je LBB52_24
   4729 ; AVX512F-NEXT:  ## BB#23: ## %cond.load31
   4730 ; AVX512F-NEXT:    vpinsrb $11, 11(%rdi), %xmm0, %xmm6
   4731 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm0 = ymm6[0,1,2,3],ymm0[4,5,6,7]
   4732 ; AVX512F-NEXT:  LBB52_24: ## %else32
   4733 ; AVX512F-NEXT:    kshiftlw $3, %k0, %k1
   4734 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   4735 ; AVX512F-NEXT:    kmovw %k1, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4736 ; AVX512F-NEXT:    kmovw %k1, %eax
   4737 ; AVX512F-NEXT:    testb %al, %al
   4738 ; AVX512F-NEXT:    je LBB52_26
   4739 ; AVX512F-NEXT:  ## BB#25: ## %cond.load34
   4740 ; AVX512F-NEXT:    vpinsrb $12, 12(%rdi), %xmm0, %xmm6
   4741 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm0 = ymm6[0,1,2,3],ymm0[4,5,6,7]
   4742 ; AVX512F-NEXT:  LBB52_26: ## %else35
   4743 ; AVX512F-NEXT:    vpmovsxbd %xmm1, %zmm1
   4744 ; AVX512F-NEXT:    kshiftlw $2, %k0, %k1
   4745 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   4746 ; AVX512F-NEXT:    kmovw %k1, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4747 ; AVX512F-NEXT:    kmovw %k1, %eax
   4748 ; AVX512F-NEXT:    testb %al, %al
   4749 ; AVX512F-NEXT:    je LBB52_28
   4750 ; AVX512F-NEXT:  ## BB#27: ## %cond.load37
   4751 ; AVX512F-NEXT:    vpinsrb $13, 13(%rdi), %xmm0, %xmm6
   4752 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm0 = ymm6[0,1,2,3],ymm0[4,5,6,7]
   4753 ; AVX512F-NEXT:  LBB52_28: ## %else38
   4754 ; AVX512F-NEXT:    vpslld $31, %zmm1, %zmm1
   4755 ; AVX512F-NEXT:    kshiftlw $1, %k0, %k1
   4756 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   4757 ; AVX512F-NEXT:    kmovw %k1, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4758 ; AVX512F-NEXT:    kmovw %k1, %eax
   4759 ; AVX512F-NEXT:    testb %al, %al
   4760 ; AVX512F-NEXT:    je LBB52_30
   4761 ; AVX512F-NEXT:  ## BB#29: ## %cond.load40
   4762 ; AVX512F-NEXT:    vpinsrb $14, 14(%rdi), %xmm0, %xmm6
   4763 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm0 = ymm6[0,1,2,3],ymm0[4,5,6,7]
   4764 ; AVX512F-NEXT:  LBB52_30: ## %else41
   4765 ; AVX512F-NEXT:    vptestmd %zmm1, %zmm1, %k1
   4766 ; AVX512F-NEXT:    kshiftlw $0, %k0, %k0
   4767 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   4768 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4769 ; AVX512F-NEXT:    kmovw %k0, %eax
   4770 ; AVX512F-NEXT:    testb %al, %al
   4771 ; AVX512F-NEXT:    je LBB52_32
   4772 ; AVX512F-NEXT:  ## BB#31: ## %cond.load43
   4773 ; AVX512F-NEXT:    vpinsrb $15, 15(%rdi), %xmm0, %xmm1
   4774 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
   4775 ; AVX512F-NEXT:  LBB52_32: ## %else44
   4776 ; AVX512F-NEXT:    kshiftlw $15, %k1, %k0
   4777 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   4778 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4779 ; AVX512F-NEXT:    kmovw %k0, %eax
   4780 ; AVX512F-NEXT:    testb %al, %al
   4781 ; AVX512F-NEXT:    je LBB52_34
   4782 ; AVX512F-NEXT:  ## BB#33: ## %cond.load46
   4783 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
   4784 ; AVX512F-NEXT:    vpinsrb $0, 16(%rdi), %xmm1, %xmm1
   4785 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   4786 ; AVX512F-NEXT:  LBB52_34: ## %else47
   4787 ; AVX512F-NEXT:    kshiftlw $14, %k1, %k0
   4788 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   4789 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4790 ; AVX512F-NEXT:    kmovw %k0, %eax
   4791 ; AVX512F-NEXT:    testb %al, %al
   4792 ; AVX512F-NEXT:    je LBB52_36
   4793 ; AVX512F-NEXT:  ## BB#35: ## %cond.load49
   4794 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
   4795 ; AVX512F-NEXT:    vpinsrb $1, 17(%rdi), %xmm1, %xmm1
   4796 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   4797 ; AVX512F-NEXT:  LBB52_36: ## %else50
   4798 ; AVX512F-NEXT:    kshiftlw $13, %k1, %k0
   4799 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   4800 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4801 ; AVX512F-NEXT:    kmovw %k0, %eax
   4802 ; AVX512F-NEXT:    testb %al, %al
   4803 ; AVX512F-NEXT:    je LBB52_38
   4804 ; AVX512F-NEXT:  ## BB#37: ## %cond.load52
   4805 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
   4806 ; AVX512F-NEXT:    vpinsrb $2, 18(%rdi), %xmm1, %xmm1
   4807 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   4808 ; AVX512F-NEXT:  LBB52_38: ## %else53
   4809 ; AVX512F-NEXT:    kshiftlw $12, %k1, %k0
   4810 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   4811 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4812 ; AVX512F-NEXT:    kmovw %k0, %eax
   4813 ; AVX512F-NEXT:    testb %al, %al
   4814 ; AVX512F-NEXT:    je LBB52_40
   4815 ; AVX512F-NEXT:  ## BB#39: ## %cond.load55
   4816 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
   4817 ; AVX512F-NEXT:    vpinsrb $3, 19(%rdi), %xmm1, %xmm1
   4818 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   4819 ; AVX512F-NEXT:  LBB52_40: ## %else56
   4820 ; AVX512F-NEXT:    kshiftlw $11, %k1, %k0
   4821 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   4822 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4823 ; AVX512F-NEXT:    kmovw %k0, %eax
   4824 ; AVX512F-NEXT:    testb %al, %al
   4825 ; AVX512F-NEXT:    je LBB52_42
   4826 ; AVX512F-NEXT:  ## BB#41: ## %cond.load58
   4827 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
   4828 ; AVX512F-NEXT:    vpinsrb $4, 20(%rdi), %xmm1, %xmm1
   4829 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   4830 ; AVX512F-NEXT:  LBB52_42: ## %else59
   4831 ; AVX512F-NEXT:    kshiftlw $10, %k1, %k0
   4832 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   4833 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4834 ; AVX512F-NEXT:    kmovw %k0, %eax
   4835 ; AVX512F-NEXT:    testb %al, %al
   4836 ; AVX512F-NEXT:    je LBB52_44
   4837 ; AVX512F-NEXT:  ## BB#43: ## %cond.load61
   4838 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
   4839 ; AVX512F-NEXT:    vpinsrb $5, 21(%rdi), %xmm1, %xmm1
   4840 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   4841 ; AVX512F-NEXT:  LBB52_44: ## %else62
   4842 ; AVX512F-NEXT:    kshiftlw $9, %k1, %k0
   4843 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   4844 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4845 ; AVX512F-NEXT:    kmovw %k0, %eax
   4846 ; AVX512F-NEXT:    testb %al, %al
   4847 ; AVX512F-NEXT:    je LBB52_46
   4848 ; AVX512F-NEXT:  ## BB#45: ## %cond.load64
   4849 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
   4850 ; AVX512F-NEXT:    vpinsrb $6, 22(%rdi), %xmm1, %xmm1
   4851 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   4852 ; AVX512F-NEXT:  LBB52_46: ## %else65
   4853 ; AVX512F-NEXT:    kshiftlw $8, %k1, %k0
   4854 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   4855 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4856 ; AVX512F-NEXT:    kmovw %k0, %eax
   4857 ; AVX512F-NEXT:    testb %al, %al
   4858 ; AVX512F-NEXT:    je LBB52_48
   4859 ; AVX512F-NEXT:  ## BB#47: ## %cond.load67
   4860 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
   4861 ; AVX512F-NEXT:    vpinsrb $7, 23(%rdi), %xmm1, %xmm1
   4862 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   4863 ; AVX512F-NEXT:  LBB52_48: ## %else68
   4864 ; AVX512F-NEXT:    kshiftlw $7, %k1, %k0
   4865 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   4866 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4867 ; AVX512F-NEXT:    kmovw %k0, %eax
   4868 ; AVX512F-NEXT:    testb %al, %al
   4869 ; AVX512F-NEXT:    je LBB52_50
   4870 ; AVX512F-NEXT:  ## BB#49: ## %cond.load70
   4871 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
   4872 ; AVX512F-NEXT:    vpinsrb $8, 24(%rdi), %xmm1, %xmm1
   4873 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   4874 ; AVX512F-NEXT:  LBB52_50: ## %else71
   4875 ; AVX512F-NEXT:    kshiftlw $6, %k1, %k0
   4876 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   4877 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4878 ; AVX512F-NEXT:    kmovw %k0, %eax
   4879 ; AVX512F-NEXT:    testb %al, %al
   4880 ; AVX512F-NEXT:    je LBB52_52
   4881 ; AVX512F-NEXT:  ## BB#51: ## %cond.load73
   4882 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
   4883 ; AVX512F-NEXT:    vpinsrb $9, 25(%rdi), %xmm1, %xmm1
   4884 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   4885 ; AVX512F-NEXT:  LBB52_52: ## %else74
   4886 ; AVX512F-NEXT:    kshiftlw $5, %k1, %k0
   4887 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   4888 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4889 ; AVX512F-NEXT:    kmovw %k0, %eax
   4890 ; AVX512F-NEXT:    testb %al, %al
   4891 ; AVX512F-NEXT:    je LBB52_54
   4892 ; AVX512F-NEXT:  ## BB#53: ## %cond.load76
   4893 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
   4894 ; AVX512F-NEXT:    vpinsrb $10, 26(%rdi), %xmm1, %xmm1
   4895 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   4896 ; AVX512F-NEXT:  LBB52_54: ## %else77
   4897 ; AVX512F-NEXT:    kshiftlw $4, %k1, %k0
   4898 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   4899 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4900 ; AVX512F-NEXT:    kmovw %k0, %eax
   4901 ; AVX512F-NEXT:    testb %al, %al
   4902 ; AVX512F-NEXT:    je LBB52_56
   4903 ; AVX512F-NEXT:  ## BB#55: ## %cond.load79
   4904 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
   4905 ; AVX512F-NEXT:    vpinsrb $11, 27(%rdi), %xmm1, %xmm1
   4906 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   4907 ; AVX512F-NEXT:  LBB52_56: ## %else80
   4908 ; AVX512F-NEXT:    kshiftlw $3, %k1, %k0
   4909 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   4910 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4911 ; AVX512F-NEXT:    kmovw %k0, %eax
   4912 ; AVX512F-NEXT:    testb %al, %al
   4913 ; AVX512F-NEXT:    je LBB52_58
   4914 ; AVX512F-NEXT:  ## BB#57: ## %cond.load82
   4915 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
   4916 ; AVX512F-NEXT:    vpinsrb $12, 28(%rdi), %xmm1, %xmm1
   4917 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   4918 ; AVX512F-NEXT:  LBB52_58: ## %else83
   4919 ; AVX512F-NEXT:    vpmovsxbd %xmm2, %zmm1
   4920 ; AVX512F-NEXT:    kshiftlw $2, %k1, %k0
   4921 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   4922 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4923 ; AVX512F-NEXT:    kmovw %k0, %eax
   4924 ; AVX512F-NEXT:    testb %al, %al
   4925 ; AVX512F-NEXT:    je LBB52_60
   4926 ; AVX512F-NEXT:  ## BB#59: ## %cond.load85
   4927 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm2
   4928 ; AVX512F-NEXT:    vpinsrb $13, 29(%rdi), %xmm2, %xmm2
   4929 ; AVX512F-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm0
   4930 ; AVX512F-NEXT:  LBB52_60: ## %else86
   4931 ; AVX512F-NEXT:    vpslld $31, %zmm1, %zmm1
   4932 ; AVX512F-NEXT:    kshiftlw $1, %k1, %k0
   4933 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   4934 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4935 ; AVX512F-NEXT:    kmovw %k0, %eax
   4936 ; AVX512F-NEXT:    testb %al, %al
   4937 ; AVX512F-NEXT:    je LBB52_62
   4938 ; AVX512F-NEXT:  ## BB#61: ## %cond.load88
   4939 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm2
   4940 ; AVX512F-NEXT:    vpinsrb $14, 30(%rdi), %xmm2, %xmm2
   4941 ; AVX512F-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm0
   4942 ; AVX512F-NEXT:  LBB52_62: ## %else89
   4943 ; AVX512F-NEXT:    vptestmd %zmm1, %zmm1, %k0
   4944 ; AVX512F-NEXT:    kshiftlw $0, %k1, %k1
   4945 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   4946 ; AVX512F-NEXT:    kmovw %k1, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4947 ; AVX512F-NEXT:    kmovw %k1, %eax
   4948 ; AVX512F-NEXT:    testb %al, %al
   4949 ; AVX512F-NEXT:    je LBB52_64
   4950 ; AVX512F-NEXT:  ## BB#63: ## %cond.load91
   4951 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
   4952 ; AVX512F-NEXT:    vpinsrb $15, 31(%rdi), %xmm1, %xmm1
   4953 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   4954 ; AVX512F-NEXT:  LBB52_64: ## %else92
   4955 ; AVX512F-NEXT:    kshiftlw $15, %k0, %k1
   4956 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   4957 ; AVX512F-NEXT:    kmovw %k1, {{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4958 ; AVX512F-NEXT:    kmovw %k1, %eax
   4959 ; AVX512F-NEXT:    testb %al, %al
   4960 ; AVX512F-NEXT:    je LBB52_66
   4961 ; AVX512F-NEXT:  ## BB#65: ## %cond.load94
   4962 ; AVX512F-NEXT:    vpinsrb $0, 32(%rdi), %xmm0, %xmm1
   4963 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm0[4,5,6,7]
   4964 ; AVX512F-NEXT:  LBB52_66: ## %else95
   4965 ; AVX512F-NEXT:    kshiftlw $14, %k0, %k1
   4966 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   4967 ; AVX512F-NEXT:    kmovw %k1, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4968 ; AVX512F-NEXT:    kmovw %k1, %eax
   4969 ; AVX512F-NEXT:    testb %al, %al
   4970 ; AVX512F-NEXT:    je LBB52_68
   4971 ; AVX512F-NEXT:  ## BB#67: ## %cond.load97
   4972 ; AVX512F-NEXT:    vpinsrb $1, 33(%rdi), %xmm1, %xmm2
   4973 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   4974 ; AVX512F-NEXT:  LBB52_68: ## %else98
   4975 ; AVX512F-NEXT:    kshiftlw $13, %k0, %k1
   4976 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   4977 ; AVX512F-NEXT:    kmovw %k1, {{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4978 ; AVX512F-NEXT:    kmovw %k1, %eax
   4979 ; AVX512F-NEXT:    testb %al, %al
   4980 ; AVX512F-NEXT:    je LBB52_70
   4981 ; AVX512F-NEXT:  ## BB#69: ## %cond.load100
   4982 ; AVX512F-NEXT:    vpinsrb $2, 34(%rdi), %xmm1, %xmm2
   4983 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   4984 ; AVX512F-NEXT:  LBB52_70: ## %else101
   4985 ; AVX512F-NEXT:    kshiftlw $12, %k0, %k1
   4986 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   4987 ; AVX512F-NEXT:    kmovw %k1, {{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4988 ; AVX512F-NEXT:    kmovw %k1, %eax
   4989 ; AVX512F-NEXT:    testb %al, %al
   4990 ; AVX512F-NEXT:    je LBB52_72
   4991 ; AVX512F-NEXT:  ## BB#71: ## %cond.load103
   4992 ; AVX512F-NEXT:    vpinsrb $3, 35(%rdi), %xmm1, %xmm2
   4993 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   4994 ; AVX512F-NEXT:  LBB52_72: ## %else104
   4995 ; AVX512F-NEXT:    kshiftlw $11, %k0, %k1
   4996 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   4997 ; AVX512F-NEXT:    kmovw %k1, {{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   4998 ; AVX512F-NEXT:    kmovw %k1, %eax
   4999 ; AVX512F-NEXT:    testb %al, %al
   5000 ; AVX512F-NEXT:    je LBB52_74
   5001 ; AVX512F-NEXT:  ## BB#73: ## %cond.load106
   5002 ; AVX512F-NEXT:    vpinsrb $4, 36(%rdi), %xmm1, %xmm2
   5003 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   5004 ; AVX512F-NEXT:  LBB52_74: ## %else107
   5005 ; AVX512F-NEXT:    kshiftlw $10, %k0, %k1
   5006 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   5007 ; AVX512F-NEXT:    kmovw %k1, {{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   5008 ; AVX512F-NEXT:    kmovw %k1, %eax
   5009 ; AVX512F-NEXT:    testb %al, %al
   5010 ; AVX512F-NEXT:    je LBB52_76
   5011 ; AVX512F-NEXT:  ## BB#75: ## %cond.load109
   5012 ; AVX512F-NEXT:    vpinsrb $5, 37(%rdi), %xmm1, %xmm2
   5013 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   5014 ; AVX512F-NEXT:  LBB52_76: ## %else110
   5015 ; AVX512F-NEXT:    kshiftlw $9, %k0, %k1
   5016 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   5017 ; AVX512F-NEXT:    kmovw %k1, {{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   5018 ; AVX512F-NEXT:    kmovw %k1, %eax
   5019 ; AVX512F-NEXT:    testb %al, %al
   5020 ; AVX512F-NEXT:    je LBB52_78
   5021 ; AVX512F-NEXT:  ## BB#77: ## %cond.load112
   5022 ; AVX512F-NEXT:    vpinsrb $6, 38(%rdi), %xmm1, %xmm2
   5023 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   5024 ; AVX512F-NEXT:  LBB52_78: ## %else113
   5025 ; AVX512F-NEXT:    kshiftlw $8, %k0, %k1
   5026 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   5027 ; AVX512F-NEXT:    kmovw %k1, {{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   5028 ; AVX512F-NEXT:    kmovw %k1, %eax
   5029 ; AVX512F-NEXT:    testb %al, %al
   5030 ; AVX512F-NEXT:    je LBB52_80
   5031 ; AVX512F-NEXT:  ## BB#79: ## %cond.load115
   5032 ; AVX512F-NEXT:    vpinsrb $7, 39(%rdi), %xmm1, %xmm2
   5033 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   5034 ; AVX512F-NEXT:  LBB52_80: ## %else116
   5035 ; AVX512F-NEXT:    kshiftlw $7, %k0, %k1
   5036 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   5037 ; AVX512F-NEXT:    kmovw %k1, {{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   5038 ; AVX512F-NEXT:    kmovw %k1, %eax
   5039 ; AVX512F-NEXT:    testb %al, %al
   5040 ; AVX512F-NEXT:    je LBB52_82
   5041 ; AVX512F-NEXT:  ## BB#81: ## %cond.load118
   5042 ; AVX512F-NEXT:    vpinsrb $8, 40(%rdi), %xmm1, %xmm2
   5043 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   5044 ; AVX512F-NEXT:  LBB52_82: ## %else119
   5045 ; AVX512F-NEXT:    kshiftlw $6, %k0, %k1
   5046 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   5047 ; AVX512F-NEXT:    kmovw %k1, {{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   5048 ; AVX512F-NEXT:    kmovw %k1, %eax
   5049 ; AVX512F-NEXT:    testb %al, %al
   5050 ; AVX512F-NEXT:    je LBB52_84
   5051 ; AVX512F-NEXT:  ## BB#83: ## %cond.load121
   5052 ; AVX512F-NEXT:    vpinsrb $9, 41(%rdi), %xmm1, %xmm2
   5053 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   5054 ; AVX512F-NEXT:  LBB52_84: ## %else122
   5055 ; AVX512F-NEXT:    kshiftlw $5, %k0, %k1
   5056 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   5057 ; AVX512F-NEXT:    kmovw %k1, {{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   5058 ; AVX512F-NEXT:    kmovw %k1, %eax
   5059 ; AVX512F-NEXT:    testb %al, %al
   5060 ; AVX512F-NEXT:    je LBB52_86
   5061 ; AVX512F-NEXT:  ## BB#85: ## %cond.load124
   5062 ; AVX512F-NEXT:    vpinsrb $10, 42(%rdi), %xmm1, %xmm2
   5063 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   5064 ; AVX512F-NEXT:  LBB52_86: ## %else125
   5065 ; AVX512F-NEXT:    kshiftlw $4, %k0, %k1
   5066 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   5067 ; AVX512F-NEXT:    kmovw %k1, {{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   5068 ; AVX512F-NEXT:    kmovw %k1, %eax
   5069 ; AVX512F-NEXT:    testb %al, %al
   5070 ; AVX512F-NEXT:    je LBB52_88
   5071 ; AVX512F-NEXT:  ## BB#87: ## %cond.load127
   5072 ; AVX512F-NEXT:    vpinsrb $11, 43(%rdi), %xmm1, %xmm2
   5073 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   5074 ; AVX512F-NEXT:  LBB52_88: ## %else128
   5075 ; AVX512F-NEXT:    kshiftlw $3, %k0, %k1
   5076 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   5077 ; AVX512F-NEXT:    kmovw %k1, {{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   5078 ; AVX512F-NEXT:    kmovw %k1, %eax
   5079 ; AVX512F-NEXT:    testb %al, %al
   5080 ; AVX512F-NEXT:    je LBB52_90
   5081 ; AVX512F-NEXT:  ## BB#89: ## %cond.load130
   5082 ; AVX512F-NEXT:    vpinsrb $12, 44(%rdi), %xmm1, %xmm2
   5083 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   5084 ; AVX512F-NEXT:  LBB52_90: ## %else131
   5085 ; AVX512F-NEXT:    vpmovsxbd %xmm3, %zmm2
   5086 ; AVX512F-NEXT:    kshiftlw $2, %k0, %k1
   5087 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   5088 ; AVX512F-NEXT:    kmovw %k1, {{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   5089 ; AVX512F-NEXT:    kmovw %k1, %eax
   5090 ; AVX512F-NEXT:    testb %al, %al
   5091 ; AVX512F-NEXT:    je LBB52_92
   5092 ; AVX512F-NEXT:  ## BB#91: ## %cond.load133
   5093 ; AVX512F-NEXT:    vpinsrb $13, 45(%rdi), %xmm1, %xmm3
   5094 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm3[0,1,2,3],ymm1[4,5,6,7]
   5095 ; AVX512F-NEXT:  LBB52_92: ## %else134
   5096 ; AVX512F-NEXT:    vpslld $31, %zmm2, %zmm2
   5097 ; AVX512F-NEXT:    kshiftlw $1, %k0, %k1
   5098 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   5099 ; AVX512F-NEXT:    kmovw %k1, {{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   5100 ; AVX512F-NEXT:    kmovw %k1, %eax
   5101 ; AVX512F-NEXT:    testb %al, %al
   5102 ; AVX512F-NEXT:    je LBB52_94
   5103 ; AVX512F-NEXT:  ## BB#93: ## %cond.load136
   5104 ; AVX512F-NEXT:    vpinsrb $14, 46(%rdi), %xmm1, %xmm3
   5105 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm3[0,1,2,3],ymm1[4,5,6,7]
   5106 ; AVX512F-NEXT:  LBB52_94: ## %else137
   5107 ; AVX512F-NEXT:    vptestmd %zmm2, %zmm2, %k1
   5108 ; AVX512F-NEXT:    kshiftlw $0, %k0, %k0
   5109 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   5110 ; AVX512F-NEXT:    kmovw %k0, {{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   5111 ; AVX512F-NEXT:    kmovw %k0, %eax
   5112 ; AVX512F-NEXT:    testb %al, %al
   5113 ; AVX512F-NEXT:    je LBB52_96
   5114 ; AVX512F-NEXT:  ## BB#95: ## %cond.load139
   5115 ; AVX512F-NEXT:    vpinsrb $15, 47(%rdi), %xmm1, %xmm2
   5116 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   5117 ; AVX512F-NEXT:  LBB52_96: ## %else140
   5118 ; AVX512F-NEXT:    kshiftlw $15, %k1, %k0
   5119 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   5120 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   5121 ; AVX512F-NEXT:    kmovw %k0, %eax
   5122 ; AVX512F-NEXT:    testb %al, %al
   5123 ; AVX512F-NEXT:    je LBB52_98
   5124 ; AVX512F-NEXT:  ## BB#97: ## %cond.load142
   5125 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   5126 ; AVX512F-NEXT:    vpinsrb $0, 48(%rdi), %xmm2, %xmm2
   5127 ; AVX512F-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   5128 ; AVX512F-NEXT:  LBB52_98: ## %else143
   5129 ; AVX512F-NEXT:    kshiftlw $14, %k1, %k0
   5130 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   5131 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   5132 ; AVX512F-NEXT:    kmovw %k0, %eax
   5133 ; AVX512F-NEXT:    testb %al, %al
   5134 ; AVX512F-NEXT:    je LBB52_100
   5135 ; AVX512F-NEXT:  ## BB#99: ## %cond.load145
   5136 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   5137 ; AVX512F-NEXT:    vpinsrb $1, 49(%rdi), %xmm2, %xmm2
   5138 ; AVX512F-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   5139 ; AVX512F-NEXT:  LBB52_100: ## %else146
   5140 ; AVX512F-NEXT:    kshiftlw $13, %k1, %k0
   5141 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   5142 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   5143 ; AVX512F-NEXT:    kmovw %k0, %eax
   5144 ; AVX512F-NEXT:    testb %al, %al
   5145 ; AVX512F-NEXT:    je LBB52_102
   5146 ; AVX512F-NEXT:  ## BB#101: ## %cond.load148
   5147 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   5148 ; AVX512F-NEXT:    vpinsrb $2, 50(%rdi), %xmm2, %xmm2
   5149 ; AVX512F-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   5150 ; AVX512F-NEXT:  LBB52_102: ## %else149
   5151 ; AVX512F-NEXT:    kshiftlw $12, %k1, %k0
   5152 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   5153 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   5154 ; AVX512F-NEXT:    kmovw %k0, %eax
   5155 ; AVX512F-NEXT:    testb %al, %al
   5156 ; AVX512F-NEXT:    je LBB52_104
   5157 ; AVX512F-NEXT:  ## BB#103: ## %cond.load151
   5158 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   5159 ; AVX512F-NEXT:    vpinsrb $3, 51(%rdi), %xmm2, %xmm2
   5160 ; AVX512F-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   5161 ; AVX512F-NEXT:  LBB52_104: ## %else152
   5162 ; AVX512F-NEXT:    kshiftlw $11, %k1, %k0
   5163 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   5164 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   5165 ; AVX512F-NEXT:    kmovw %k0, %eax
   5166 ; AVX512F-NEXT:    testb %al, %al
   5167 ; AVX512F-NEXT:    je LBB52_106
   5168 ; AVX512F-NEXT:  ## BB#105: ## %cond.load154
   5169 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   5170 ; AVX512F-NEXT:    vpinsrb $4, 52(%rdi), %xmm2, %xmm2
   5171 ; AVX512F-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   5172 ; AVX512F-NEXT:  LBB52_106: ## %else155
   5173 ; AVX512F-NEXT:    kshiftlw $10, %k1, %k0
   5174 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   5175 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   5176 ; AVX512F-NEXT:    kmovw %k0, %eax
   5177 ; AVX512F-NEXT:    testb %al, %al
   5178 ; AVX512F-NEXT:    je LBB52_108
   5179 ; AVX512F-NEXT:  ## BB#107: ## %cond.load157
   5180 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   5181 ; AVX512F-NEXT:    vpinsrb $5, 53(%rdi), %xmm2, %xmm2
   5182 ; AVX512F-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   5183 ; AVX512F-NEXT:  LBB52_108: ## %else158
   5184 ; AVX512F-NEXT:    kshiftlw $9, %k1, %k0
   5185 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   5186 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   5187 ; AVX512F-NEXT:    kmovw %k0, %eax
   5188 ; AVX512F-NEXT:    testb %al, %al
   5189 ; AVX512F-NEXT:    je LBB52_110
   5190 ; AVX512F-NEXT:  ## BB#109: ## %cond.load160
   5191 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   5192 ; AVX512F-NEXT:    vpinsrb $6, 54(%rdi), %xmm2, %xmm2
   5193 ; AVX512F-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   5194 ; AVX512F-NEXT:  LBB52_110: ## %else161
   5195 ; AVX512F-NEXT:    kshiftlw $8, %k1, %k0
   5196 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   5197 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   5198 ; AVX512F-NEXT:    kmovw %k0, %eax
   5199 ; AVX512F-NEXT:    testb %al, %al
   5200 ; AVX512F-NEXT:    je LBB52_112
   5201 ; AVX512F-NEXT:  ## BB#111: ## %cond.load163
   5202 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   5203 ; AVX512F-NEXT:    vpinsrb $7, 55(%rdi), %xmm2, %xmm2
   5204 ; AVX512F-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   5205 ; AVX512F-NEXT:  LBB52_112: ## %else164
   5206 ; AVX512F-NEXT:    kshiftlw $7, %k1, %k0
   5207 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   5208 ; AVX512F-NEXT:    kmovw %k0, -{{[0-9]+}}(%rsp) ## 2-byte Folded Spill
   5209 ; AVX512F-NEXT:    kmovw %k0, %eax
   5210 ; AVX512F-NEXT:    testb %al, %al
   5211 ; AVX512F-NEXT:    je LBB52_114
   5212 ; AVX512F-NEXT:  ## BB#113: ## %cond.load166
   5213 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   5214 ; AVX512F-NEXT:    vpinsrb $8, 56(%rdi), %xmm2, %xmm2
   5215 ; AVX512F-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   5216 ; AVX512F-NEXT:  LBB52_114: ## %else167
   5217 ; AVX512F-NEXT:    kshiftlw $6, %k1, %k2
   5218 ; AVX512F-NEXT:    kshiftrw $15, %k2, %k2
   5219 ; AVX512F-NEXT:    kmovw %k2, %eax
   5220 ; AVX512F-NEXT:    testb %al, %al
   5221 ; AVX512F-NEXT:    je LBB52_116
   5222 ; AVX512F-NEXT:  ## BB#115: ## %cond.load169
   5223 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   5224 ; AVX512F-NEXT:    vpinsrb $9, 57(%rdi), %xmm2, %xmm2
   5225 ; AVX512F-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   5226 ; AVX512F-NEXT:  LBB52_116: ## %else170
   5227 ; AVX512F-NEXT:    kshiftlw $5, %k1, %k3
   5228 ; AVX512F-NEXT:    kshiftrw $15, %k3, %k3
   5229 ; AVX512F-NEXT:    kmovw %k3, %eax
   5230 ; AVX512F-NEXT:    testb %al, %al
   5231 ; AVX512F-NEXT:    je LBB52_118
   5232 ; AVX512F-NEXT:  ## BB#117: ## %cond.load172
   5233 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   5234 ; AVX512F-NEXT:    vpinsrb $10, 58(%rdi), %xmm2, %xmm2
   5235 ; AVX512F-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   5236 ; AVX512F-NEXT:  LBB52_118: ## %else173
   5237 ; AVX512F-NEXT:    kshiftlw $4, %k1, %k4
   5238 ; AVX512F-NEXT:    kshiftrw $15, %k4, %k4
   5239 ; AVX512F-NEXT:    kmovw %k4, %eax
   5240 ; AVX512F-NEXT:    testb %al, %al
   5241 ; AVX512F-NEXT:    je LBB52_120
   5242 ; AVX512F-NEXT:  ## BB#119: ## %cond.load175
   5243 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   5244 ; AVX512F-NEXT:    vpinsrb $11, 59(%rdi), %xmm2, %xmm2
   5245 ; AVX512F-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   5246 ; AVX512F-NEXT:  LBB52_120: ## %else176
   5247 ; AVX512F-NEXT:    kshiftlw $3, %k1, %k5
   5248 ; AVX512F-NEXT:    kshiftrw $15, %k5, %k5
   5249 ; AVX512F-NEXT:    kmovw %k5, %eax
   5250 ; AVX512F-NEXT:    testb %al, %al
   5251 ; AVX512F-NEXT:    je LBB52_122
   5252 ; AVX512F-NEXT:  ## BB#121: ## %cond.load178
   5253 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   5254 ; AVX512F-NEXT:    vpinsrb $12, 60(%rdi), %xmm2, %xmm2
   5255 ; AVX512F-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   5256 ; AVX512F-NEXT:  LBB52_122: ## %else179
   5257 ; AVX512F-NEXT:    kshiftlw $2, %k1, %k6
   5258 ; AVX512F-NEXT:    kshiftrw $15, %k6, %k6
   5259 ; AVX512F-NEXT:    kmovw %k6, %eax
   5260 ; AVX512F-NEXT:    testb %al, %al
   5261 ; AVX512F-NEXT:    je LBB52_124
   5262 ; AVX512F-NEXT:  ## BB#123: ## %cond.load181
   5263 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   5264 ; AVX512F-NEXT:    vpinsrb $13, 61(%rdi), %xmm2, %xmm2
   5265 ; AVX512F-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   5266 ; AVX512F-NEXT:  LBB52_124: ## %else182
   5267 ; AVX512F-NEXT:    kshiftlw $1, %k1, %k7
   5268 ; AVX512F-NEXT:    kshiftrw $15, %k7, %k7
   5269 ; AVX512F-NEXT:    kmovw %k7, %eax
   5270 ; AVX512F-NEXT:    testb %al, %al
   5271 ; AVX512F-NEXT:    je LBB52_126
   5272 ; AVX512F-NEXT:  ## BB#125: ## %cond.load184
   5273 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   5274 ; AVX512F-NEXT:    vpinsrb $14, 62(%rdi), %xmm2, %xmm2
   5275 ; AVX512F-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   5276 ; AVX512F-NEXT:  LBB52_126: ## %else185
   5277 ; AVX512F-NEXT:    kshiftlw $0, %k1, %k1
   5278 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   5279 ; AVX512F-NEXT:    kmovw %k1, %eax
   5280 ; AVX512F-NEXT:    testb %al, %al
   5281 ; AVX512F-NEXT:    je LBB52_128
   5282 ; AVX512F-NEXT:  ## BB#127: ## %cond.load187
   5283 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   5284 ; AVX512F-NEXT:    vpinsrb $15, 63(%rdi), %xmm2, %xmm2
   5285 ; AVX512F-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   5286 ; AVX512F-NEXT:  LBB52_128: ## %else188
   5287 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5288 ; AVX512F-NEXT:    kmovw %k0, %eax
   5289 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5290 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5291 ; AVX512F-NEXT:    kmovw %k0, %eax
   5292 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5293 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5294 ; AVX512F-NEXT:    kmovw %k0, %eax
   5295 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5296 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5297 ; AVX512F-NEXT:    kmovw %k0, %eax
   5298 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5299 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5300 ; AVX512F-NEXT:    kmovw %k0, %eax
   5301 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5302 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5303 ; AVX512F-NEXT:    kmovw %k0, %eax
   5304 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5305 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5306 ; AVX512F-NEXT:    kmovw %k0, %eax
   5307 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5308 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5309 ; AVX512F-NEXT:    kmovw %k0, %eax
   5310 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5311 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5312 ; AVX512F-NEXT:    kmovw %k0, %eax
   5313 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5314 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5315 ; AVX512F-NEXT:    kmovw %k0, %eax
   5316 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5317 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5318 ; AVX512F-NEXT:    kmovw %k0, %eax
   5319 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5320 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5321 ; AVX512F-NEXT:    kmovw %k0, %eax
   5322 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5323 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5324 ; AVX512F-NEXT:    kmovw %k0, %eax
   5325 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5326 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5327 ; AVX512F-NEXT:    kmovw %k0, %eax
   5328 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5329 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5330 ; AVX512F-NEXT:    kmovw %k0, %eax
   5331 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5332 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5333 ; AVX512F-NEXT:    kmovw %k0, %eax
   5334 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5335 ; AVX512F-NEXT:    kmovw {{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5336 ; AVX512F-NEXT:    kmovw %k0, %eax
   5337 ; AVX512F-NEXT:    movl %eax, {{[0-9]+}}(%rsp) ## 4-byte Spill
   5338 ; AVX512F-NEXT:    kmovw {{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5339 ; AVX512F-NEXT:    kmovw %k0, %eax
   5340 ; AVX512F-NEXT:    movl %eax, {{[0-9]+}}(%rsp) ## 4-byte Spill
   5341 ; AVX512F-NEXT:    kmovw {{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5342 ; AVX512F-NEXT:    kmovw %k0, %eax
   5343 ; AVX512F-NEXT:    movl %eax, {{[0-9]+}}(%rsp) ## 4-byte Spill
   5344 ; AVX512F-NEXT:    kmovw {{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5345 ; AVX512F-NEXT:    kmovw %k0, %eax
   5346 ; AVX512F-NEXT:    movl %eax, {{[0-9]+}}(%rsp) ## 4-byte Spill
   5347 ; AVX512F-NEXT:    kmovw {{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5348 ; AVX512F-NEXT:    kmovw %k0, %eax
   5349 ; AVX512F-NEXT:    movl %eax, {{[0-9]+}}(%rsp) ## 4-byte Spill
   5350 ; AVX512F-NEXT:    kmovw {{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5351 ; AVX512F-NEXT:    kmovw %k0, %eax
   5352 ; AVX512F-NEXT:    movl %eax, {{[0-9]+}}(%rsp) ## 4-byte Spill
   5353 ; AVX512F-NEXT:    kmovw {{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5354 ; AVX512F-NEXT:    kmovw %k0, %eax
   5355 ; AVX512F-NEXT:    movl %eax, {{[0-9]+}}(%rsp) ## 4-byte Spill
   5356 ; AVX512F-NEXT:    kmovw {{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5357 ; AVX512F-NEXT:    kmovw %k0, %eax
   5358 ; AVX512F-NEXT:    movl %eax, {{[0-9]+}}(%rsp) ## 4-byte Spill
   5359 ; AVX512F-NEXT:    kmovw {{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5360 ; AVX512F-NEXT:    kmovw %k0, %eax
   5361 ; AVX512F-NEXT:    movl %eax, {{[0-9]+}}(%rsp) ## 4-byte Spill
   5362 ; AVX512F-NEXT:    kmovw (%rsp), %k0 ## 2-byte Folded Reload
   5363 ; AVX512F-NEXT:    kmovw %k0, %eax
   5364 ; AVX512F-NEXT:    movl %eax, (%rsp) ## 4-byte Spill
   5365 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5366 ; AVX512F-NEXT:    kmovw %k0, %eax
   5367 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5368 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5369 ; AVX512F-NEXT:    kmovw %k0, %eax
   5370 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5371 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5372 ; AVX512F-NEXT:    kmovw %k0, %eax
   5373 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5374 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5375 ; AVX512F-NEXT:    kmovw %k0, %eax
   5376 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5377 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5378 ; AVX512F-NEXT:    kmovw %k0, %eax
   5379 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5380 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5381 ; AVX512F-NEXT:    kmovw %k0, %eax
   5382 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5383 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5384 ; AVX512F-NEXT:    kmovw %k0, %eax
   5385 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5386 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5387 ; AVX512F-NEXT:    kmovw %k0, %eax
   5388 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5389 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5390 ; AVX512F-NEXT:    kmovw %k0, %eax
   5391 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5392 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5393 ; AVX512F-NEXT:    kmovw %k0, %eax
   5394 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5395 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5396 ; AVX512F-NEXT:    kmovw %k0, %eax
   5397 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5398 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5399 ; AVX512F-NEXT:    kmovw %k0, %eax
   5400 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5401 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5402 ; AVX512F-NEXT:    kmovw %k0, %eax
   5403 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5404 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5405 ; AVX512F-NEXT:    kmovw %k0, %eax
   5406 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5407 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5408 ; AVX512F-NEXT:    kmovw %k0, %eax
   5409 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5410 ; AVX512F-NEXT:    kmovw %k2, %eax
   5411 ; AVX512F-NEXT:    movl %eax, {{[0-9]+}}(%rsp) ## 4-byte Spill
   5412 ; AVX512F-NEXT:    kmovw %k3, %r12d
   5413 ; AVX512F-NEXT:    kmovw %k4, %r15d
   5414 ; AVX512F-NEXT:    kmovw %k5, %r14d
   5415 ; AVX512F-NEXT:    kmovw %k6, %ebx
   5416 ; AVX512F-NEXT:    kmovw %k7, %r11d
   5417 ; AVX512F-NEXT:    kmovw %k1, %r10d
   5418 ; AVX512F-NEXT:    kmovw -{{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5419 ; AVX512F-NEXT:    kmovw %k0, %eax
   5420 ; AVX512F-NEXT:    movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
   5421 ; AVX512F-NEXT:    kmovw {{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5422 ; AVX512F-NEXT:    kmovw %k0, %r8d
   5423 ; AVX512F-NEXT:    kmovw {{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5424 ; AVX512F-NEXT:    kmovw %k0, %r9d
   5425 ; AVX512F-NEXT:    kmovw {{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5426 ; AVX512F-NEXT:    kmovw %k0, %edi
   5427 ; AVX512F-NEXT:    kmovw {{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5428 ; AVX512F-NEXT:    kmovw %k0, %esi
   5429 ; AVX512F-NEXT:    kmovw {{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5430 ; AVX512F-NEXT:    kmovw %k0, %edx
   5431 ; AVX512F-NEXT:    kmovw {{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5432 ; AVX512F-NEXT:    kmovw %k0, %ecx
   5433 ; AVX512F-NEXT:    kmovw {{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5434 ; AVX512F-NEXT:    kmovw %k0, %eax
   5435 ; AVX512F-NEXT:    movl -{{[0-9]+}}(%rsp), %r13d ## 4-byte Reload
   5436 ; AVX512F-NEXT:    vmovd %r13d, %xmm2
   5437 ; AVX512F-NEXT:    vpinsrb $1, -{{[0-9]+}}(%rsp), %xmm2, %xmm2 ## 4-byte Folded Reload
   5438 ; AVX512F-NEXT:    vpinsrb $2, -{{[0-9]+}}(%rsp), %xmm2, %xmm2 ## 4-byte Folded Reload
   5439 ; AVX512F-NEXT:    vpinsrb $3, -{{[0-9]+}}(%rsp), %xmm2, %xmm2 ## 4-byte Folded Reload
   5440 ; AVX512F-NEXT:    vpinsrb $4, -{{[0-9]+}}(%rsp), %xmm2, %xmm2 ## 4-byte Folded Reload
   5441 ; AVX512F-NEXT:    vpinsrb $5, -{{[0-9]+}}(%rsp), %xmm2, %xmm2 ## 4-byte Folded Reload
   5442 ; AVX512F-NEXT:    vpinsrb $6, -{{[0-9]+}}(%rsp), %xmm2, %xmm2 ## 4-byte Folded Reload
   5443 ; AVX512F-NEXT:    vpinsrb $7, -{{[0-9]+}}(%rsp), %xmm2, %xmm2 ## 4-byte Folded Reload
   5444 ; AVX512F-NEXT:    vpinsrb $8, -{{[0-9]+}}(%rsp), %xmm2, %xmm2 ## 4-byte Folded Reload
   5445 ; AVX512F-NEXT:    vpinsrb $9, -{{[0-9]+}}(%rsp), %xmm2, %xmm2 ## 4-byte Folded Reload
   5446 ; AVX512F-NEXT:    vpinsrb $10, -{{[0-9]+}}(%rsp), %xmm2, %xmm2 ## 4-byte Folded Reload
   5447 ; AVX512F-NEXT:    vpinsrb $11, -{{[0-9]+}}(%rsp), %xmm2, %xmm2 ## 4-byte Folded Reload
   5448 ; AVX512F-NEXT:    vpinsrb $12, -{{[0-9]+}}(%rsp), %xmm2, %xmm2 ## 4-byte Folded Reload
   5449 ; AVX512F-NEXT:    vpinsrb $13, -{{[0-9]+}}(%rsp), %xmm2, %xmm2 ## 4-byte Folded Reload
   5450 ; AVX512F-NEXT:    vpinsrb $14, -{{[0-9]+}}(%rsp), %xmm2, %xmm2 ## 4-byte Folded Reload
   5451 ; AVX512F-NEXT:    vpinsrb $15, -{{[0-9]+}}(%rsp), %xmm2, %xmm2 ## 4-byte Folded Reload
   5452 ; AVX512F-NEXT:    movl {{[0-9]+}}(%rsp), %ebp ## 4-byte Reload
   5453 ; AVX512F-NEXT:    vmovd %ebp, %xmm3
   5454 ; AVX512F-NEXT:    vpinsrb $1, {{[0-9]+}}(%rsp), %xmm3, %xmm3 ## 4-byte Folded Reload
   5455 ; AVX512F-NEXT:    vpinsrb $2, {{[0-9]+}}(%rsp), %xmm3, %xmm3 ## 4-byte Folded Reload
   5456 ; AVX512F-NEXT:    vpinsrb $3, {{[0-9]+}}(%rsp), %xmm3, %xmm3 ## 4-byte Folded Reload
   5457 ; AVX512F-NEXT:    vpinsrb $4, {{[0-9]+}}(%rsp), %xmm3, %xmm3 ## 4-byte Folded Reload
   5458 ; AVX512F-NEXT:    vpinsrb $5, {{[0-9]+}}(%rsp), %xmm3, %xmm3 ## 4-byte Folded Reload
   5459 ; AVX512F-NEXT:    vpinsrb $6, {{[0-9]+}}(%rsp), %xmm3, %xmm3 ## 4-byte Folded Reload
   5460 ; AVX512F-NEXT:    vpinsrb $7, {{[0-9]+}}(%rsp), %xmm3, %xmm3 ## 4-byte Folded Reload
   5461 ; AVX512F-NEXT:    vpinsrb $8, {{[0-9]+}}(%rsp), %xmm3, %xmm3 ## 4-byte Folded Reload
   5462 ; AVX512F-NEXT:    vpinsrb $9, (%rsp), %xmm3, %xmm3 ## 4-byte Folded Reload
   5463 ; AVX512F-NEXT:    vpinsrb $10, -{{[0-9]+}}(%rsp), %xmm3, %xmm3 ## 4-byte Folded Reload
   5464 ; AVX512F-NEXT:    vpinsrb $11, -{{[0-9]+}}(%rsp), %xmm3, %xmm3 ## 4-byte Folded Reload
   5465 ; AVX512F-NEXT:    vpinsrb $12, -{{[0-9]+}}(%rsp), %xmm3, %xmm3 ## 4-byte Folded Reload
   5466 ; AVX512F-NEXT:    vpinsrb $13, -{{[0-9]+}}(%rsp), %xmm3, %xmm3 ## 4-byte Folded Reload
   5467 ; AVX512F-NEXT:    vpinsrb $14, -{{[0-9]+}}(%rsp), %xmm3, %xmm3 ## 4-byte Folded Reload
   5468 ; AVX512F-NEXT:    vpinsrb $15, -{{[0-9]+}}(%rsp), %xmm3, %xmm3 ## 4-byte Folded Reload
   5469 ; AVX512F-NEXT:    movl -{{[0-9]+}}(%rsp), %ebp ## 4-byte Reload
   5470 ; AVX512F-NEXT:    vmovd %ebp, %xmm6
   5471 ; AVX512F-NEXT:    vpinsrb $1, -{{[0-9]+}}(%rsp), %xmm6, %xmm6 ## 4-byte Folded Reload
   5472 ; AVX512F-NEXT:    vpinsrb $2, -{{[0-9]+}}(%rsp), %xmm6, %xmm6 ## 4-byte Folded Reload
   5473 ; AVX512F-NEXT:    vpinsrb $3, -{{[0-9]+}}(%rsp), %xmm6, %xmm6 ## 4-byte Folded Reload
   5474 ; AVX512F-NEXT:    vpinsrb $4, -{{[0-9]+}}(%rsp), %xmm6, %xmm6 ## 4-byte Folded Reload
   5475 ; AVX512F-NEXT:    vpinsrb $5, -{{[0-9]+}}(%rsp), %xmm6, %xmm6 ## 4-byte Folded Reload
   5476 ; AVX512F-NEXT:    vpinsrb $6, -{{[0-9]+}}(%rsp), %xmm6, %xmm6 ## 4-byte Folded Reload
   5477 ; AVX512F-NEXT:    vpinsrb $7, -{{[0-9]+}}(%rsp), %xmm6, %xmm6 ## 4-byte Folded Reload
   5478 ; AVX512F-NEXT:    vpinsrb $8, -{{[0-9]+}}(%rsp), %xmm6, %xmm6 ## 4-byte Folded Reload
   5479 ; AVX512F-NEXT:    vpinsrb $9, {{[0-9]+}}(%rsp), %xmm6, %xmm6 ## 4-byte Folded Reload
   5480 ; AVX512F-NEXT:    kmovw {{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5481 ; AVX512F-NEXT:    kmovw %k0, %r13d
   5482 ; AVX512F-NEXT:    vpinsrb $10, %r12d, %xmm6, %xmm6
   5483 ; AVX512F-NEXT:    kmovw {{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5484 ; AVX512F-NEXT:    kmovw %k0, %r12d
   5485 ; AVX512F-NEXT:    vpinsrb $11, %r15d, %xmm6, %xmm6
   5486 ; AVX512F-NEXT:    kmovw {{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5487 ; AVX512F-NEXT:    kmovw %k0, %r15d
   5488 ; AVX512F-NEXT:    vpinsrb $12, %r14d, %xmm6, %xmm6
   5489 ; AVX512F-NEXT:    kmovw {{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5490 ; AVX512F-NEXT:    kmovw %k0, %r14d
   5491 ; AVX512F-NEXT:    vpinsrb $13, %ebx, %xmm6, %xmm6
   5492 ; AVX512F-NEXT:    kmovw {{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5493 ; AVX512F-NEXT:    kmovw %k0, %ebx
   5494 ; AVX512F-NEXT:    vpinsrb $14, %r11d, %xmm6, %xmm6
   5495 ; AVX512F-NEXT:    kmovw {{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5496 ; AVX512F-NEXT:    kmovw %k0, %r11d
   5497 ; AVX512F-NEXT:    vpinsrb $15, %r10d, %xmm6, %xmm6
   5498 ; AVX512F-NEXT:    kmovw {{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5499 ; AVX512F-NEXT:    kmovw %k0, %r10d
   5500 ; AVX512F-NEXT:    vmovd %r8d, %xmm7
   5501 ; AVX512F-NEXT:    kmovw {{[0-9]+}}(%rsp), %k0 ## 2-byte Folded Reload
   5502 ; AVX512F-NEXT:    kmovw %k0, %r8d
   5503 ; AVX512F-NEXT:    vinserti128 $1, %xmm2, %ymm3, %ymm2
   5504 ; AVX512F-NEXT:    vpsllw $7, %ymm2, %ymm2
   5505 ; AVX512F-NEXT:    vmovdqa {{.*#+}} ymm3 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128]
   5506 ; AVX512F-NEXT:    vpand %ymm3, %ymm2, %ymm2
   5507 ; AVX512F-NEXT:    vpblendvb %ymm2, %ymm0, %ymm4, %ymm0
   5508 ; AVX512F-NEXT:    vpinsrb $1, -{{[0-9]+}}(%rsp), %xmm7, %xmm2 ## 4-byte Folded Reload
   5509 ; AVX512F-NEXT:    vpinsrb $2, %r9d, %xmm2, %xmm2
   5510 ; AVX512F-NEXT:    vpinsrb $3, %edi, %xmm2, %xmm2
   5511 ; AVX512F-NEXT:    vpinsrb $4, %esi, %xmm2, %xmm2
   5512 ; AVX512F-NEXT:    vpinsrb $5, %edx, %xmm2, %xmm2
   5513 ; AVX512F-NEXT:    vpinsrb $6, %ecx, %xmm2, %xmm2
   5514 ; AVX512F-NEXT:    vpinsrb $7, %eax, %xmm2, %xmm2
   5515 ; AVX512F-NEXT:    vpinsrb $8, %r13d, %xmm2, %xmm2
   5516 ; AVX512F-NEXT:    vpinsrb $9, %r12d, %xmm2, %xmm2
   5517 ; AVX512F-NEXT:    vpinsrb $10, %r15d, %xmm2, %xmm2
   5518 ; AVX512F-NEXT:    vpinsrb $11, %r14d, %xmm2, %xmm2
   5519 ; AVX512F-NEXT:    vpinsrb $12, %ebx, %xmm2, %xmm2
   5520 ; AVX512F-NEXT:    vpinsrb $13, %r11d, %xmm2, %xmm2
   5521 ; AVX512F-NEXT:    vpinsrb $14, %r10d, %xmm2, %xmm2
   5522 ; AVX512F-NEXT:    vpinsrb $15, %r8d, %xmm2, %xmm2
   5523 ; AVX512F-NEXT:    vinserti128 $1, %xmm6, %ymm2, %ymm2
   5524 ; AVX512F-NEXT:    vpsllw $7, %ymm2, %ymm2
   5525 ; AVX512F-NEXT:    vpand %ymm3, %ymm2, %ymm2
   5526 ; AVX512F-NEXT:    vpblendvb %ymm2, %ymm1, %ymm5, %ymm1
   5527 ; AVX512F-NEXT:    addq $76, %rsp
   5528 ; AVX512F-NEXT:    popq %rbx
   5529 ; AVX512F-NEXT:    popq %r12
   5530 ; AVX512F-NEXT:    popq %r13
   5531 ; AVX512F-NEXT:    popq %r14
   5532 ; AVX512F-NEXT:    popq %r15
   5533 ; AVX512F-NEXT:    popq %rbp
   5534 ; AVX512F-NEXT:    retq
   5535 ;
   5536 ; SKX-LABEL: test_mask_load_64xi8:
   5537 ; SKX:       ## BB#0:
   5538 ; SKX-NEXT:    vpsllw $7, %zmm0, %zmm0
   5539 ; SKX-NEXT:    vpmovb2m %zmm0, %k1
   5540 ; SKX-NEXT:    vmovdqu8 (%rdi), %zmm1 {%k1}
   5541 ; SKX-NEXT:    vmovaps %zmm1, %zmm0
   5542 ; SKX-NEXT:    retq
   5543   %res = call <64 x i8> @llvm.masked.load.v64i8.p0v64i8(<64 x i8>* %addr, i32 4, <64 x i1>%mask, <64 x i8> %val)
   5544   ret <64 x i8> %res
   5545 }
   5546 declare <64 x i8> @llvm.masked.load.v64i8.p0v64i8(<64 x i8>*, i32, <64 x i1>, <64 x i8>)
   5547 
   5548 define <8 x i16> @test_mask_load_8xi16(<8 x i1> %mask, <8 x i16>* %addr, <8 x i16> %val) {
   5549 ; AVX-LABEL: test_mask_load_8xi16:
   5550 ; AVX:       ## BB#0:
   5551 ; AVX-NEXT:    vpextrb $0, %xmm0, %eax
   5552 ; AVX-NEXT:    ## implicit-def: %XMM1
   5553 ; AVX-NEXT:    testb $1, %al
   5554 ; AVX-NEXT:    je LBB53_2
   5555 ; AVX-NEXT:  ## BB#1: ## %cond.load
   5556 ; AVX-NEXT:    movzwl (%rdi), %eax
   5557 ; AVX-NEXT:    vmovd %eax, %xmm1
   5558 ; AVX-NEXT:  LBB53_2: ## %else
   5559 ; AVX-NEXT:    vpextrb $2, %xmm0, %eax
   5560 ; AVX-NEXT:    testb $1, %al
   5561 ; AVX-NEXT:    je LBB53_4
   5562 ; AVX-NEXT:  ## BB#3: ## %cond.load1
   5563 ; AVX-NEXT:    vpinsrw $1, 2(%rdi), %xmm1, %xmm1
   5564 ; AVX-NEXT:  LBB53_4: ## %else2
   5565 ; AVX-NEXT:    vpextrb $4, %xmm0, %eax
   5566 ; AVX-NEXT:    testb $1, %al
   5567 ; AVX-NEXT:    je LBB53_6
   5568 ; AVX-NEXT:  ## BB#5: ## %cond.load4
   5569 ; AVX-NEXT:    vpinsrw $2, 4(%rdi), %xmm1, %xmm1
   5570 ; AVX-NEXT:  LBB53_6: ## %else5
   5571 ; AVX-NEXT:    vpextrb $6, %xmm0, %eax
   5572 ; AVX-NEXT:    testb $1, %al
   5573 ; AVX-NEXT:    je LBB53_8
   5574 ; AVX-NEXT:  ## BB#7: ## %cond.load7
   5575 ; AVX-NEXT:    vpinsrw $3, 6(%rdi), %xmm1, %xmm1
   5576 ; AVX-NEXT:  LBB53_8: ## %else8
   5577 ; AVX-NEXT:    vpextrb $8, %xmm0, %eax
   5578 ; AVX-NEXT:    testb $1, %al
   5579 ; AVX-NEXT:    je LBB53_10
   5580 ; AVX-NEXT:  ## BB#9: ## %cond.load10
   5581 ; AVX-NEXT:    vpinsrw $4, 8(%rdi), %xmm1, %xmm1
   5582 ; AVX-NEXT:  LBB53_10: ## %else11
   5583 ; AVX-NEXT:    vpextrb $10, %xmm0, %eax
   5584 ; AVX-NEXT:    testb $1, %al
   5585 ; AVX-NEXT:    je LBB53_12
   5586 ; AVX-NEXT:  ## BB#11: ## %cond.load13
   5587 ; AVX-NEXT:    vpinsrw $5, 10(%rdi), %xmm1, %xmm1
   5588 ; AVX-NEXT:  LBB53_12: ## %else14
   5589 ; AVX-NEXT:    vpextrb $12, %xmm0, %eax
   5590 ; AVX-NEXT:    testb $1, %al
   5591 ; AVX-NEXT:    je LBB53_14
   5592 ; AVX-NEXT:  ## BB#13: ## %cond.load16
   5593 ; AVX-NEXT:    vpinsrw $6, 12(%rdi), %xmm1, %xmm1
   5594 ; AVX-NEXT:  LBB53_14: ## %else17
   5595 ; AVX-NEXT:    vpextrb $14, %xmm0, %eax
   5596 ; AVX-NEXT:    testb $1, %al
   5597 ; AVX-NEXT:    je LBB53_16
   5598 ; AVX-NEXT:  ## BB#15: ## %cond.load19
   5599 ; AVX-NEXT:    vpinsrw $7, 14(%rdi), %xmm1, %xmm1
   5600 ; AVX-NEXT:  LBB53_16: ## %else20
   5601 ; AVX-NEXT:    vpsllw $15, %xmm0, %xmm0
   5602 ; AVX-NEXT:    vpsraw $15, %xmm0, %xmm0
   5603 ; AVX-NEXT:    vpcmpeqd %xmm2, %xmm2, %xmm2
   5604 ; AVX-NEXT:    vpxor %xmm2, %xmm0, %xmm2
   5605 ; AVX-NEXT:    vpand %xmm0, %xmm1, %xmm0
   5606 ; AVX-NEXT:    vpor %xmm2, %xmm0, %xmm0
   5607 ; AVX-NEXT:    retq
   5608 ;
   5609 ; AVX512F-LABEL: test_mask_load_8xi16:
   5610 ; AVX512F:       ## BB#0:
   5611 ; AVX512F-NEXT:    vpmovsxwq %xmm0, %zmm0
   5612 ; AVX512F-NEXT:    vpsllq $63, %zmm0, %zmm0
   5613 ; AVX512F-NEXT:    vptestmq %zmm0, %zmm0, %k1
   5614 ; AVX512F-NEXT:    kshiftlw $15, %k1, %k0
   5615 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   5616 ; AVX512F-NEXT:    kmovw %k0, %eax
   5617 ; AVX512F-NEXT:    ## implicit-def: %XMM0
   5618 ; AVX512F-NEXT:    testb %al, %al
   5619 ; AVX512F-NEXT:    je LBB53_2
   5620 ; AVX512F-NEXT:  ## BB#1: ## %cond.load
   5621 ; AVX512F-NEXT:    movzwl (%rdi), %eax
   5622 ; AVX512F-NEXT:    vmovd %eax, %xmm0
   5623 ; AVX512F-NEXT:  LBB53_2: ## %else
   5624 ; AVX512F-NEXT:    kshiftlw $14, %k1, %k0
   5625 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   5626 ; AVX512F-NEXT:    kmovw %k0, %eax
   5627 ; AVX512F-NEXT:    testb %al, %al
   5628 ; AVX512F-NEXT:    je LBB53_4
   5629 ; AVX512F-NEXT:  ## BB#3: ## %cond.load1
   5630 ; AVX512F-NEXT:    vpinsrw $1, 2(%rdi), %xmm0, %xmm0
   5631 ; AVX512F-NEXT:  LBB53_4: ## %else2
   5632 ; AVX512F-NEXT:    kshiftlw $13, %k1, %k0
   5633 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   5634 ; AVX512F-NEXT:    kmovw %k0, %eax
   5635 ; AVX512F-NEXT:    testb %al, %al
   5636 ; AVX512F-NEXT:    je LBB53_6
   5637 ; AVX512F-NEXT:  ## BB#5: ## %cond.load4
   5638 ; AVX512F-NEXT:    vpinsrw $2, 4(%rdi), %xmm0, %xmm0
   5639 ; AVX512F-NEXT:  LBB53_6: ## %else5
   5640 ; AVX512F-NEXT:    kshiftlw $12, %k1, %k0
   5641 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   5642 ; AVX512F-NEXT:    kmovw %k0, %eax
   5643 ; AVX512F-NEXT:    testb %al, %al
   5644 ; AVX512F-NEXT:    je LBB53_8
   5645 ; AVX512F-NEXT:  ## BB#7: ## %cond.load7
   5646 ; AVX512F-NEXT:    vpinsrw $3, 6(%rdi), %xmm0, %xmm0
   5647 ; AVX512F-NEXT:  LBB53_8: ## %else8
   5648 ; AVX512F-NEXT:    kshiftlw $11, %k1, %k0
   5649 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   5650 ; AVX512F-NEXT:    kmovw %k0, %eax
   5651 ; AVX512F-NEXT:    testb %al, %al
   5652 ; AVX512F-NEXT:    je LBB53_10
   5653 ; AVX512F-NEXT:  ## BB#9: ## %cond.load10
   5654 ; AVX512F-NEXT:    vpinsrw $4, 8(%rdi), %xmm0, %xmm0
   5655 ; AVX512F-NEXT:  LBB53_10: ## %else11
   5656 ; AVX512F-NEXT:    kshiftlw $10, %k1, %k0
   5657 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   5658 ; AVX512F-NEXT:    kmovw %k0, %eax
   5659 ; AVX512F-NEXT:    testb %al, %al
   5660 ; AVX512F-NEXT:    je LBB53_12
   5661 ; AVX512F-NEXT:  ## BB#11: ## %cond.load13
   5662 ; AVX512F-NEXT:    vpinsrw $5, 10(%rdi), %xmm0, %xmm0
   5663 ; AVX512F-NEXT:  LBB53_12: ## %else14
   5664 ; AVX512F-NEXT:    kshiftlw $9, %k1, %k0
   5665 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   5666 ; AVX512F-NEXT:    kmovw %k0, %eax
   5667 ; AVX512F-NEXT:    testb %al, %al
   5668 ; AVX512F-NEXT:    je LBB53_14
   5669 ; AVX512F-NEXT:  ## BB#13: ## %cond.load16
   5670 ; AVX512F-NEXT:    vpinsrw $6, 12(%rdi), %xmm0, %xmm0
   5671 ; AVX512F-NEXT:  LBB53_14: ## %else17
   5672 ; AVX512F-NEXT:    kshiftlw $8, %k1, %k0
   5673 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   5674 ; AVX512F-NEXT:    kmovw %k0, %eax
   5675 ; AVX512F-NEXT:    testb %al, %al
   5676 ; AVX512F-NEXT:    je LBB53_16
   5677 ; AVX512F-NEXT:  ## BB#15: ## %cond.load19
   5678 ; AVX512F-NEXT:    vpinsrw $7, 14(%rdi), %xmm0, %xmm0
   5679 ; AVX512F-NEXT:  LBB53_16: ## %else20
   5680 ; AVX512F-NEXT:    vpternlogd $255, %zmm1, %zmm1, %zmm1
   5681 ; AVX512F-NEXT:    vmovdqa64 %zmm1, %zmm1 {%k1} {z}
   5682 ; AVX512F-NEXT:    vpmovqw %zmm1, %xmm1
   5683 ; AVX512F-NEXT:    vpcmpeqd %xmm2, %xmm2, %xmm2
   5684 ; AVX512F-NEXT:    vpxor %xmm2, %xmm1, %xmm2
   5685 ; AVX512F-NEXT:    vpand %xmm1, %xmm0, %xmm0
   5686 ; AVX512F-NEXT:    vpor %xmm2, %xmm0, %xmm0
   5687 ; AVX512F-NEXT:    retq
   5688 ;
   5689 ; SKX-LABEL: test_mask_load_8xi16:
   5690 ; SKX:       ## BB#0:
   5691 ; SKX-NEXT:    vpsllw $15, %xmm0, %xmm0
   5692 ; SKX-NEXT:    vpmovw2m %xmm0, %k1
   5693 ; SKX-NEXT:    vmovdqu16 (%rdi), %xmm0 {%k1} {z}
   5694 ; SKX-NEXT:    retq
   5695   %res = call <8 x i16> @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* %addr, i32 4, <8 x i1>%mask, <8 x i16> undef)
   5696   ret <8 x i16> %res
   5697 }
   5698 declare <8 x i16> @llvm.masked.load.v8i16.p0v8i16(<8 x i16>*, i32, <8 x i1>, <8 x i16>)
   5699 
   5700 define <16 x i16> @test_mask_load_16xi16(<16 x i1> %mask, <16 x i16>* %addr, <16 x i16> %val) {
   5701 ; AVX1-LABEL: test_mask_load_16xi16:
   5702 ; AVX1:       ## BB#0:
   5703 ; AVX1-NEXT:    vpextrb $0, %xmm0, %eax
   5704 ; AVX1-NEXT:    ## implicit-def: %YMM1
   5705 ; AVX1-NEXT:    testb $1, %al
   5706 ; AVX1-NEXT:    je LBB54_2
   5707 ; AVX1-NEXT:  ## BB#1: ## %cond.load
   5708 ; AVX1-NEXT:    movzwl (%rdi), %eax
   5709 ; AVX1-NEXT:    vmovd %eax, %xmm1
   5710 ; AVX1-NEXT:  LBB54_2: ## %else
   5711 ; AVX1-NEXT:    vpextrb $1, %xmm0, %eax
   5712 ; AVX1-NEXT:    testb $1, %al
   5713 ; AVX1-NEXT:    je LBB54_4
   5714 ; AVX1-NEXT:  ## BB#3: ## %cond.load1
   5715 ; AVX1-NEXT:    vpinsrw $1, 2(%rdi), %xmm1, %xmm2
   5716 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   5717 ; AVX1-NEXT:  LBB54_4: ## %else2
   5718 ; AVX1-NEXT:    vpextrb $2, %xmm0, %eax
   5719 ; AVX1-NEXT:    testb $1, %al
   5720 ; AVX1-NEXT:    je LBB54_6
   5721 ; AVX1-NEXT:  ## BB#5: ## %cond.load4
   5722 ; AVX1-NEXT:    vpinsrw $2, 4(%rdi), %xmm1, %xmm2
   5723 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   5724 ; AVX1-NEXT:  LBB54_6: ## %else5
   5725 ; AVX1-NEXT:    vpextrb $3, %xmm0, %eax
   5726 ; AVX1-NEXT:    testb $1, %al
   5727 ; AVX1-NEXT:    je LBB54_8
   5728 ; AVX1-NEXT:  ## BB#7: ## %cond.load7
   5729 ; AVX1-NEXT:    vpinsrw $3, 6(%rdi), %xmm1, %xmm2
   5730 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   5731 ; AVX1-NEXT:  LBB54_8: ## %else8
   5732 ; AVX1-NEXT:    vpextrb $4, %xmm0, %eax
   5733 ; AVX1-NEXT:    testb $1, %al
   5734 ; AVX1-NEXT:    je LBB54_10
   5735 ; AVX1-NEXT:  ## BB#9: ## %cond.load10
   5736 ; AVX1-NEXT:    vpinsrw $4, 8(%rdi), %xmm1, %xmm2
   5737 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   5738 ; AVX1-NEXT:  LBB54_10: ## %else11
   5739 ; AVX1-NEXT:    vpextrb $5, %xmm0, %eax
   5740 ; AVX1-NEXT:    testb $1, %al
   5741 ; AVX1-NEXT:    je LBB54_12
   5742 ; AVX1-NEXT:  ## BB#11: ## %cond.load13
   5743 ; AVX1-NEXT:    vpinsrw $5, 10(%rdi), %xmm1, %xmm2
   5744 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   5745 ; AVX1-NEXT:  LBB54_12: ## %else14
   5746 ; AVX1-NEXT:    vpextrb $6, %xmm0, %eax
   5747 ; AVX1-NEXT:    testb $1, %al
   5748 ; AVX1-NEXT:    je LBB54_14
   5749 ; AVX1-NEXT:  ## BB#13: ## %cond.load16
   5750 ; AVX1-NEXT:    vpinsrw $6, 12(%rdi), %xmm1, %xmm2
   5751 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   5752 ; AVX1-NEXT:  LBB54_14: ## %else17
   5753 ; AVX1-NEXT:    vpextrb $7, %xmm0, %eax
   5754 ; AVX1-NEXT:    testb $1, %al
   5755 ; AVX1-NEXT:    je LBB54_16
   5756 ; AVX1-NEXT:  ## BB#15: ## %cond.load19
   5757 ; AVX1-NEXT:    vpinsrw $7, 14(%rdi), %xmm1, %xmm2
   5758 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   5759 ; AVX1-NEXT:  LBB54_16: ## %else20
   5760 ; AVX1-NEXT:    vpextrb $8, %xmm0, %eax
   5761 ; AVX1-NEXT:    testb $1, %al
   5762 ; AVX1-NEXT:    je LBB54_18
   5763 ; AVX1-NEXT:  ## BB#17: ## %cond.load22
   5764 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   5765 ; AVX1-NEXT:    vpinsrw $0, 16(%rdi), %xmm2, %xmm2
   5766 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm1
   5767 ; AVX1-NEXT:  LBB54_18: ## %else23
   5768 ; AVX1-NEXT:    vpextrb $9, %xmm0, %eax
   5769 ; AVX1-NEXT:    testb $1, %al
   5770 ; AVX1-NEXT:    je LBB54_20
   5771 ; AVX1-NEXT:  ## BB#19: ## %cond.load25
   5772 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   5773 ; AVX1-NEXT:    vpinsrw $1, 18(%rdi), %xmm2, %xmm2
   5774 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm1
   5775 ; AVX1-NEXT:  LBB54_20: ## %else26
   5776 ; AVX1-NEXT:    vpextrb $10, %xmm0, %eax
   5777 ; AVX1-NEXT:    testb $1, %al
   5778 ; AVX1-NEXT:    je LBB54_22
   5779 ; AVX1-NEXT:  ## BB#21: ## %cond.load28
   5780 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   5781 ; AVX1-NEXT:    vpinsrw $2, 20(%rdi), %xmm2, %xmm2
   5782 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm1
   5783 ; AVX1-NEXT:  LBB54_22: ## %else29
   5784 ; AVX1-NEXT:    vpextrb $11, %xmm0, %eax
   5785 ; AVX1-NEXT:    testb $1, %al
   5786 ; AVX1-NEXT:    je LBB54_24
   5787 ; AVX1-NEXT:  ## BB#23: ## %cond.load31
   5788 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   5789 ; AVX1-NEXT:    vpinsrw $3, 22(%rdi), %xmm2, %xmm2
   5790 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm1
   5791 ; AVX1-NEXT:  LBB54_24: ## %else32
   5792 ; AVX1-NEXT:    vpextrb $12, %xmm0, %eax
   5793 ; AVX1-NEXT:    testb $1, %al
   5794 ; AVX1-NEXT:    je LBB54_26
   5795 ; AVX1-NEXT:  ## BB#25: ## %cond.load34
   5796 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   5797 ; AVX1-NEXT:    vpinsrw $4, 24(%rdi), %xmm2, %xmm2
   5798 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm1
   5799 ; AVX1-NEXT:  LBB54_26: ## %else35
   5800 ; AVX1-NEXT:    vpextrb $13, %xmm0, %eax
   5801 ; AVX1-NEXT:    testb $1, %al
   5802 ; AVX1-NEXT:    je LBB54_28
   5803 ; AVX1-NEXT:  ## BB#27: ## %cond.load37
   5804 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   5805 ; AVX1-NEXT:    vpinsrw $5, 26(%rdi), %xmm2, %xmm2
   5806 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm1
   5807 ; AVX1-NEXT:  LBB54_28: ## %else38
   5808 ; AVX1-NEXT:    vpextrb $14, %xmm0, %eax
   5809 ; AVX1-NEXT:    testb $1, %al
   5810 ; AVX1-NEXT:    je LBB54_30
   5811 ; AVX1-NEXT:  ## BB#29: ## %cond.load40
   5812 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   5813 ; AVX1-NEXT:    vpinsrw $6, 28(%rdi), %xmm2, %xmm2
   5814 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm1
   5815 ; AVX1-NEXT:  LBB54_30: ## %else41
   5816 ; AVX1-NEXT:    vpextrb $15, %xmm0, %eax
   5817 ; AVX1-NEXT:    testb $1, %al
   5818 ; AVX1-NEXT:    je LBB54_32
   5819 ; AVX1-NEXT:  ## BB#31: ## %cond.load43
   5820 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   5821 ; AVX1-NEXT:    vpinsrw $7, 30(%rdi), %xmm2, %xmm2
   5822 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm1
   5823 ; AVX1-NEXT:  LBB54_32: ## %else44
   5824 ; AVX1-NEXT:    vpmovzxbw {{.*#+}} xmm2 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
   5825 ; AVX1-NEXT:    vpsllw $15, %xmm2, %xmm2
   5826 ; AVX1-NEXT:    vpsraw $15, %xmm2, %xmm2
   5827 ; AVX1-NEXT:    vpunpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
   5828 ; AVX1-NEXT:    vpsllw $15, %xmm0, %xmm0
   5829 ; AVX1-NEXT:    vpsraw $15, %xmm0, %xmm0
   5830 ; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm2, %ymm0
   5831 ; AVX1-NEXT:    vandps %ymm1, %ymm0, %ymm0
   5832 ; AVX1-NEXT:    retq
   5833 ;
   5834 ; AVX2-LABEL: test_mask_load_16xi16:
   5835 ; AVX2:       ## BB#0:
   5836 ; AVX2-NEXT:    vpextrb $0, %xmm0, %eax
   5837 ; AVX2-NEXT:    ## implicit-def: %YMM1
   5838 ; AVX2-NEXT:    testb $1, %al
   5839 ; AVX2-NEXT:    je LBB54_2
   5840 ; AVX2-NEXT:  ## BB#1: ## %cond.load
   5841 ; AVX2-NEXT:    movzwl (%rdi), %eax
   5842 ; AVX2-NEXT:    vmovd %eax, %xmm1
   5843 ; AVX2-NEXT:  LBB54_2: ## %else
   5844 ; AVX2-NEXT:    vpextrb $1, %xmm0, %eax
   5845 ; AVX2-NEXT:    testb $1, %al
   5846 ; AVX2-NEXT:    je LBB54_4
   5847 ; AVX2-NEXT:  ## BB#3: ## %cond.load1
   5848 ; AVX2-NEXT:    vpinsrw $1, 2(%rdi), %xmm1, %xmm2
   5849 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   5850 ; AVX2-NEXT:  LBB54_4: ## %else2
   5851 ; AVX2-NEXT:    vpextrb $2, %xmm0, %eax
   5852 ; AVX2-NEXT:    testb $1, %al
   5853 ; AVX2-NEXT:    je LBB54_6
   5854 ; AVX2-NEXT:  ## BB#5: ## %cond.load4
   5855 ; AVX2-NEXT:    vpinsrw $2, 4(%rdi), %xmm1, %xmm2
   5856 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   5857 ; AVX2-NEXT:  LBB54_6: ## %else5
   5858 ; AVX2-NEXT:    vpextrb $3, %xmm0, %eax
   5859 ; AVX2-NEXT:    testb $1, %al
   5860 ; AVX2-NEXT:    je LBB54_8
   5861 ; AVX2-NEXT:  ## BB#7: ## %cond.load7
   5862 ; AVX2-NEXT:    vpinsrw $3, 6(%rdi), %xmm1, %xmm2
   5863 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   5864 ; AVX2-NEXT:  LBB54_8: ## %else8
   5865 ; AVX2-NEXT:    vpextrb $4, %xmm0, %eax
   5866 ; AVX2-NEXT:    testb $1, %al
   5867 ; AVX2-NEXT:    je LBB54_10
   5868 ; AVX2-NEXT:  ## BB#9: ## %cond.load10
   5869 ; AVX2-NEXT:    vpinsrw $4, 8(%rdi), %xmm1, %xmm2
   5870 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   5871 ; AVX2-NEXT:  LBB54_10: ## %else11
   5872 ; AVX2-NEXT:    vpextrb $5, %xmm0, %eax
   5873 ; AVX2-NEXT:    testb $1, %al
   5874 ; AVX2-NEXT:    je LBB54_12
   5875 ; AVX2-NEXT:  ## BB#11: ## %cond.load13
   5876 ; AVX2-NEXT:    vpinsrw $5, 10(%rdi), %xmm1, %xmm2
   5877 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   5878 ; AVX2-NEXT:  LBB54_12: ## %else14
   5879 ; AVX2-NEXT:    vpextrb $6, %xmm0, %eax
   5880 ; AVX2-NEXT:    testb $1, %al
   5881 ; AVX2-NEXT:    je LBB54_14
   5882 ; AVX2-NEXT:  ## BB#13: ## %cond.load16
   5883 ; AVX2-NEXT:    vpinsrw $6, 12(%rdi), %xmm1, %xmm2
   5884 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   5885 ; AVX2-NEXT:  LBB54_14: ## %else17
   5886 ; AVX2-NEXT:    vpextrb $7, %xmm0, %eax
   5887 ; AVX2-NEXT:    testb $1, %al
   5888 ; AVX2-NEXT:    je LBB54_16
   5889 ; AVX2-NEXT:  ## BB#15: ## %cond.load19
   5890 ; AVX2-NEXT:    vpinsrw $7, 14(%rdi), %xmm1, %xmm2
   5891 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
   5892 ; AVX2-NEXT:  LBB54_16: ## %else20
   5893 ; AVX2-NEXT:    vpextrb $8, %xmm0, %eax
   5894 ; AVX2-NEXT:    testb $1, %al
   5895 ; AVX2-NEXT:    je LBB54_18
   5896 ; AVX2-NEXT:  ## BB#17: ## %cond.load22
   5897 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   5898 ; AVX2-NEXT:    vpinsrw $0, 16(%rdi), %xmm2, %xmm2
   5899 ; AVX2-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   5900 ; AVX2-NEXT:  LBB54_18: ## %else23
   5901 ; AVX2-NEXT:    vpextrb $9, %xmm0, %eax
   5902 ; AVX2-NEXT:    testb $1, %al
   5903 ; AVX2-NEXT:    je LBB54_20
   5904 ; AVX2-NEXT:  ## BB#19: ## %cond.load25
   5905 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   5906 ; AVX2-NEXT:    vpinsrw $1, 18(%rdi), %xmm2, %xmm2
   5907 ; AVX2-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   5908 ; AVX2-NEXT:  LBB54_20: ## %else26
   5909 ; AVX2-NEXT:    vpextrb $10, %xmm0, %eax
   5910 ; AVX2-NEXT:    testb $1, %al
   5911 ; AVX2-NEXT:    je LBB54_22
   5912 ; AVX2-NEXT:  ## BB#21: ## %cond.load28
   5913 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   5914 ; AVX2-NEXT:    vpinsrw $2, 20(%rdi), %xmm2, %xmm2
   5915 ; AVX2-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   5916 ; AVX2-NEXT:  LBB54_22: ## %else29
   5917 ; AVX2-NEXT:    vpextrb $11, %xmm0, %eax
   5918 ; AVX2-NEXT:    testb $1, %al
   5919 ; AVX2-NEXT:    je LBB54_24
   5920 ; AVX2-NEXT:  ## BB#23: ## %cond.load31
   5921 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   5922 ; AVX2-NEXT:    vpinsrw $3, 22(%rdi), %xmm2, %xmm2
   5923 ; AVX2-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   5924 ; AVX2-NEXT:  LBB54_24: ## %else32
   5925 ; AVX2-NEXT:    vpextrb $12, %xmm0, %eax
   5926 ; AVX2-NEXT:    testb $1, %al
   5927 ; AVX2-NEXT:    je LBB54_26
   5928 ; AVX2-NEXT:  ## BB#25: ## %cond.load34
   5929 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   5930 ; AVX2-NEXT:    vpinsrw $4, 24(%rdi), %xmm2, %xmm2
   5931 ; AVX2-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   5932 ; AVX2-NEXT:  LBB54_26: ## %else35
   5933 ; AVX2-NEXT:    vpextrb $13, %xmm0, %eax
   5934 ; AVX2-NEXT:    testb $1, %al
   5935 ; AVX2-NEXT:    je LBB54_28
   5936 ; AVX2-NEXT:  ## BB#27: ## %cond.load37
   5937 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   5938 ; AVX2-NEXT:    vpinsrw $5, 26(%rdi), %xmm2, %xmm2
   5939 ; AVX2-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   5940 ; AVX2-NEXT:  LBB54_28: ## %else38
   5941 ; AVX2-NEXT:    vpextrb $14, %xmm0, %eax
   5942 ; AVX2-NEXT:    testb $1, %al
   5943 ; AVX2-NEXT:    je LBB54_30
   5944 ; AVX2-NEXT:  ## BB#29: ## %cond.load40
   5945 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   5946 ; AVX2-NEXT:    vpinsrw $6, 28(%rdi), %xmm2, %xmm2
   5947 ; AVX2-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   5948 ; AVX2-NEXT:  LBB54_30: ## %else41
   5949 ; AVX2-NEXT:    vpextrb $15, %xmm0, %eax
   5950 ; AVX2-NEXT:    testb $1, %al
   5951 ; AVX2-NEXT:    je LBB54_32
   5952 ; AVX2-NEXT:  ## BB#31: ## %cond.load43
   5953 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   5954 ; AVX2-NEXT:    vpinsrw $7, 30(%rdi), %xmm2, %xmm2
   5955 ; AVX2-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
   5956 ; AVX2-NEXT:  LBB54_32: ## %else44
   5957 ; AVX2-NEXT:    vpmovzxbw {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero
   5958 ; AVX2-NEXT:    vpsllw $15, %ymm0, %ymm0
   5959 ; AVX2-NEXT:    vpsraw $15, %ymm0, %ymm0
   5960 ; AVX2-NEXT:    vpand %ymm1, %ymm0, %ymm0
   5961 ; AVX2-NEXT:    retq
   5962 ;
   5963 ; AVX512F-LABEL: test_mask_load_16xi16:
   5964 ; AVX512F:       ## BB#0:
   5965 ; AVX512F-NEXT:    vpmovsxbd %xmm0, %zmm0
   5966 ; AVX512F-NEXT:    vpslld $31, %zmm0, %zmm0
   5967 ; AVX512F-NEXT:    vptestmd %zmm0, %zmm0, %k1
   5968 ; AVX512F-NEXT:    kshiftlw $15, %k1, %k0
   5969 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   5970 ; AVX512F-NEXT:    kmovw %k0, %eax
   5971 ; AVX512F-NEXT:    ## implicit-def: %YMM0
   5972 ; AVX512F-NEXT:    testb %al, %al
   5973 ; AVX512F-NEXT:    je LBB54_2
   5974 ; AVX512F-NEXT:  ## BB#1: ## %cond.load
   5975 ; AVX512F-NEXT:    movzwl (%rdi), %eax
   5976 ; AVX512F-NEXT:    vmovd %eax, %xmm0
   5977 ; AVX512F-NEXT:  LBB54_2: ## %else
   5978 ; AVX512F-NEXT:    kshiftlw $14, %k1, %k0
   5979 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   5980 ; AVX512F-NEXT:    kmovw %k0, %eax
   5981 ; AVX512F-NEXT:    testb %al, %al
   5982 ; AVX512F-NEXT:    je LBB54_4
   5983 ; AVX512F-NEXT:  ## BB#3: ## %cond.load1
   5984 ; AVX512F-NEXT:    vpinsrw $1, 2(%rdi), %xmm0, %xmm1
   5985 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
   5986 ; AVX512F-NEXT:  LBB54_4: ## %else2
   5987 ; AVX512F-NEXT:    kshiftlw $13, %k1, %k0
   5988 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   5989 ; AVX512F-NEXT:    kmovw %k0, %eax
   5990 ; AVX512F-NEXT:    testb %al, %al
   5991 ; AVX512F-NEXT:    je LBB54_6
   5992 ; AVX512F-NEXT:  ## BB#5: ## %cond.load4
   5993 ; AVX512F-NEXT:    vpinsrw $2, 4(%rdi), %xmm0, %xmm1
   5994 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
   5995 ; AVX512F-NEXT:  LBB54_6: ## %else5
   5996 ; AVX512F-NEXT:    kshiftlw $12, %k1, %k0
   5997 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   5998 ; AVX512F-NEXT:    kmovw %k0, %eax
   5999 ; AVX512F-NEXT:    testb %al, %al
   6000 ; AVX512F-NEXT:    je LBB54_8
   6001 ; AVX512F-NEXT:  ## BB#7: ## %cond.load7
   6002 ; AVX512F-NEXT:    vpinsrw $3, 6(%rdi), %xmm0, %xmm1
   6003 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
   6004 ; AVX512F-NEXT:  LBB54_8: ## %else8
   6005 ; AVX512F-NEXT:    kshiftlw $11, %k1, %k0
   6006 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   6007 ; AVX512F-NEXT:    kmovw %k0, %eax
   6008 ; AVX512F-NEXT:    testb %al, %al
   6009 ; AVX512F-NEXT:    je LBB54_10
   6010 ; AVX512F-NEXT:  ## BB#9: ## %cond.load10
   6011 ; AVX512F-NEXT:    vpinsrw $4, 8(%rdi), %xmm0, %xmm1
   6012 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
   6013 ; AVX512F-NEXT:  LBB54_10: ## %else11
   6014 ; AVX512F-NEXT:    kshiftlw $10, %k1, %k0
   6015 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   6016 ; AVX512F-NEXT:    kmovw %k0, %eax
   6017 ; AVX512F-NEXT:    testb %al, %al
   6018 ; AVX512F-NEXT:    je LBB54_12
   6019 ; AVX512F-NEXT:  ## BB#11: ## %cond.load13
   6020 ; AVX512F-NEXT:    vpinsrw $5, 10(%rdi), %xmm0, %xmm1
   6021 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
   6022 ; AVX512F-NEXT:  LBB54_12: ## %else14
   6023 ; AVX512F-NEXT:    kshiftlw $9, %k1, %k0
   6024 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   6025 ; AVX512F-NEXT:    kmovw %k0, %eax
   6026 ; AVX512F-NEXT:    testb %al, %al
   6027 ; AVX512F-NEXT:    je LBB54_14
   6028 ; AVX512F-NEXT:  ## BB#13: ## %cond.load16
   6029 ; AVX512F-NEXT:    vpinsrw $6, 12(%rdi), %xmm0, %xmm1
   6030 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
   6031 ; AVX512F-NEXT:  LBB54_14: ## %else17
   6032 ; AVX512F-NEXT:    kshiftlw $8, %k1, %k0
   6033 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   6034 ; AVX512F-NEXT:    kmovw %k0, %eax
   6035 ; AVX512F-NEXT:    testb %al, %al
   6036 ; AVX512F-NEXT:    je LBB54_16
   6037 ; AVX512F-NEXT:  ## BB#15: ## %cond.load19
   6038 ; AVX512F-NEXT:    vpinsrw $7, 14(%rdi), %xmm0, %xmm1
   6039 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
   6040 ; AVX512F-NEXT:  LBB54_16: ## %else20
   6041 ; AVX512F-NEXT:    kshiftlw $7, %k1, %k0
   6042 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   6043 ; AVX512F-NEXT:    kmovw %k0, %eax
   6044 ; AVX512F-NEXT:    testb %al, %al
   6045 ; AVX512F-NEXT:    je LBB54_18
   6046 ; AVX512F-NEXT:  ## BB#17: ## %cond.load22
   6047 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
   6048 ; AVX512F-NEXT:    vpinsrw $0, 16(%rdi), %xmm1, %xmm1
   6049 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   6050 ; AVX512F-NEXT:  LBB54_18: ## %else23
   6051 ; AVX512F-NEXT:    kshiftlw $6, %k1, %k0
   6052 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   6053 ; AVX512F-NEXT:    kmovw %k0, %eax
   6054 ; AVX512F-NEXT:    testb %al, %al
   6055 ; AVX512F-NEXT:    je LBB54_20
   6056 ; AVX512F-NEXT:  ## BB#19: ## %cond.load25
   6057 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
   6058 ; AVX512F-NEXT:    vpinsrw $1, 18(%rdi), %xmm1, %xmm1
   6059 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   6060 ; AVX512F-NEXT:  LBB54_20: ## %else26
   6061 ; AVX512F-NEXT:    kshiftlw $5, %k1, %k0
   6062 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   6063 ; AVX512F-NEXT:    kmovw %k0, %eax
   6064 ; AVX512F-NEXT:    testb %al, %al
   6065 ; AVX512F-NEXT:    je LBB54_22
   6066 ; AVX512F-NEXT:  ## BB#21: ## %cond.load28
   6067 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
   6068 ; AVX512F-NEXT:    vpinsrw $2, 20(%rdi), %xmm1, %xmm1
   6069 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   6070 ; AVX512F-NEXT:  LBB54_22: ## %else29
   6071 ; AVX512F-NEXT:    kshiftlw $4, %k1, %k0
   6072 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   6073 ; AVX512F-NEXT:    kmovw %k0, %eax
   6074 ; AVX512F-NEXT:    testb %al, %al
   6075 ; AVX512F-NEXT:    je LBB54_24
   6076 ; AVX512F-NEXT:  ## BB#23: ## %cond.load31
   6077 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
   6078 ; AVX512F-NEXT:    vpinsrw $3, 22(%rdi), %xmm1, %xmm1
   6079 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   6080 ; AVX512F-NEXT:  LBB54_24: ## %else32
   6081 ; AVX512F-NEXT:    kshiftlw $3, %k1, %k0
   6082 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   6083 ; AVX512F-NEXT:    kmovw %k0, %eax
   6084 ; AVX512F-NEXT:    testb %al, %al
   6085 ; AVX512F-NEXT:    je LBB54_26
   6086 ; AVX512F-NEXT:  ## BB#25: ## %cond.load34
   6087 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
   6088 ; AVX512F-NEXT:    vpinsrw $4, 24(%rdi), %xmm1, %xmm1
   6089 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   6090 ; AVX512F-NEXT:  LBB54_26: ## %else35
   6091 ; AVX512F-NEXT:    kshiftlw $2, %k1, %k0
   6092 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   6093 ; AVX512F-NEXT:    kmovw %k0, %eax
   6094 ; AVX512F-NEXT:    testb %al, %al
   6095 ; AVX512F-NEXT:    je LBB54_28
   6096 ; AVX512F-NEXT:  ## BB#27: ## %cond.load37
   6097 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
   6098 ; AVX512F-NEXT:    vpinsrw $5, 26(%rdi), %xmm1, %xmm1
   6099 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   6100 ; AVX512F-NEXT:  LBB54_28: ## %else38
   6101 ; AVX512F-NEXT:    kshiftlw $1, %k1, %k0
   6102 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   6103 ; AVX512F-NEXT:    kmovw %k0, %eax
   6104 ; AVX512F-NEXT:    testb %al, %al
   6105 ; AVX512F-NEXT:    je LBB54_30
   6106 ; AVX512F-NEXT:  ## BB#29: ## %cond.load40
   6107 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
   6108 ; AVX512F-NEXT:    vpinsrw $6, 28(%rdi), %xmm1, %xmm1
   6109 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   6110 ; AVX512F-NEXT:  LBB54_30: ## %else41
   6111 ; AVX512F-NEXT:    kshiftlw $0, %k1, %k0
   6112 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   6113 ; AVX512F-NEXT:    kmovw %k0, %eax
   6114 ; AVX512F-NEXT:    testb %al, %al
   6115 ; AVX512F-NEXT:    je LBB54_32
   6116 ; AVX512F-NEXT:  ## BB#31: ## %cond.load43
   6117 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
   6118 ; AVX512F-NEXT:    vpinsrw $7, 30(%rdi), %xmm1, %xmm1
   6119 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   6120 ; AVX512F-NEXT:  LBB54_32: ## %else44
   6121 ; AVX512F-NEXT:    vpternlogd $255, %zmm1, %zmm1, %zmm1
   6122 ; AVX512F-NEXT:    vmovdqa32 %zmm1, %zmm1 {%k1} {z}
   6123 ; AVX512F-NEXT:    vpmovdw %zmm1, %ymm1
   6124 ; AVX512F-NEXT:    vpand %ymm0, %ymm1, %ymm0
   6125 ; AVX512F-NEXT:    retq
   6126 ;
   6127 ; SKX-LABEL: test_mask_load_16xi16:
   6128 ; SKX:       ## BB#0:
   6129 ; SKX-NEXT:    vpsllw $7, %xmm0, %xmm0
   6130 ; SKX-NEXT:    vpmovb2m %xmm0, %k1
   6131 ; SKX-NEXT:    vmovdqu16 (%rdi), %ymm0 {%k1} {z}
   6132 ; SKX-NEXT:    retq
   6133   %res = call <16 x i16> @llvm.masked.load.v16i16.p0v16i16(<16 x i16>* %addr, i32 4, <16 x i1>%mask, <16 x i16> zeroinitializer)
   6134   ret <16 x i16> %res
   6135 }
   6136 declare <16 x i16> @llvm.masked.load.v16i16.p0v16i16(<16 x i16>*, i32, <16 x i1>, <16 x i16>)
   6137 
   6138 define <32 x i16> @test_mask_load_32xi16(<32 x i1> %mask, <32 x i16>* %addr, <32 x i16> %val) {
   6139 ; AVX1-LABEL: test_mask_load_32xi16:
   6140 ; AVX1:       ## BB#0:
   6141 ; AVX1-NEXT:    vpextrb $0, %xmm0, %eax
   6142 ; AVX1-NEXT:    testb $1, %al
   6143 ; AVX1-NEXT:    je LBB55_2
   6144 ; AVX1-NEXT:  ## BB#1: ## %cond.load
   6145 ; AVX1-NEXT:    movzwl (%rdi), %eax
   6146 ; AVX1-NEXT:    vmovd %eax, %xmm3
   6147 ; AVX1-NEXT:  LBB55_2: ## %else
   6148 ; AVX1-NEXT:    vpextrb $1, %xmm0, %eax
   6149 ; AVX1-NEXT:    testb $1, %al
   6150 ; AVX1-NEXT:    je LBB55_4
   6151 ; AVX1-NEXT:  ## BB#3: ## %cond.load1
   6152 ; AVX1-NEXT:    vpinsrw $1, 2(%rdi), %xmm3, %xmm4
   6153 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   6154 ; AVX1-NEXT:  LBB55_4: ## %else2
   6155 ; AVX1-NEXT:    vpextrb $2, %xmm0, %eax
   6156 ; AVX1-NEXT:    testb $1, %al
   6157 ; AVX1-NEXT:    je LBB55_6
   6158 ; AVX1-NEXT:  ## BB#5: ## %cond.load4
   6159 ; AVX1-NEXT:    vpinsrw $2, 4(%rdi), %xmm3, %xmm4
   6160 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   6161 ; AVX1-NEXT:  LBB55_6: ## %else5
   6162 ; AVX1-NEXT:    vpextrb $3, %xmm0, %eax
   6163 ; AVX1-NEXT:    testb $1, %al
   6164 ; AVX1-NEXT:    je LBB55_8
   6165 ; AVX1-NEXT:  ## BB#7: ## %cond.load7
   6166 ; AVX1-NEXT:    vpinsrw $3, 6(%rdi), %xmm3, %xmm4
   6167 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   6168 ; AVX1-NEXT:  LBB55_8: ## %else8
   6169 ; AVX1-NEXT:    vpextrb $4, %xmm0, %eax
   6170 ; AVX1-NEXT:    testb $1, %al
   6171 ; AVX1-NEXT:    je LBB55_10
   6172 ; AVX1-NEXT:  ## BB#9: ## %cond.load10
   6173 ; AVX1-NEXT:    vpinsrw $4, 8(%rdi), %xmm3, %xmm4
   6174 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   6175 ; AVX1-NEXT:  LBB55_10: ## %else11
   6176 ; AVX1-NEXT:    vpextrb $5, %xmm0, %eax
   6177 ; AVX1-NEXT:    testb $1, %al
   6178 ; AVX1-NEXT:    je LBB55_12
   6179 ; AVX1-NEXT:  ## BB#11: ## %cond.load13
   6180 ; AVX1-NEXT:    vpinsrw $5, 10(%rdi), %xmm3, %xmm4
   6181 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   6182 ; AVX1-NEXT:  LBB55_12: ## %else14
   6183 ; AVX1-NEXT:    vpextrb $6, %xmm0, %eax
   6184 ; AVX1-NEXT:    testb $1, %al
   6185 ; AVX1-NEXT:    je LBB55_14
   6186 ; AVX1-NEXT:  ## BB#13: ## %cond.load16
   6187 ; AVX1-NEXT:    vpinsrw $6, 12(%rdi), %xmm3, %xmm4
   6188 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   6189 ; AVX1-NEXT:  LBB55_14: ## %else17
   6190 ; AVX1-NEXT:    vpextrb $7, %xmm0, %eax
   6191 ; AVX1-NEXT:    testb $1, %al
   6192 ; AVX1-NEXT:    je LBB55_16
   6193 ; AVX1-NEXT:  ## BB#15: ## %cond.load19
   6194 ; AVX1-NEXT:    vpinsrw $7, 14(%rdi), %xmm3, %xmm4
   6195 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   6196 ; AVX1-NEXT:  LBB55_16: ## %else20
   6197 ; AVX1-NEXT:    vpextrb $8, %xmm0, %eax
   6198 ; AVX1-NEXT:    testb $1, %al
   6199 ; AVX1-NEXT:    je LBB55_18
   6200 ; AVX1-NEXT:  ## BB#17: ## %cond.load22
   6201 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   6202 ; AVX1-NEXT:    vpinsrw $0, 16(%rdi), %xmm4, %xmm4
   6203 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   6204 ; AVX1-NEXT:  LBB55_18: ## %else23
   6205 ; AVX1-NEXT:    vpextrb $9, %xmm0, %eax
   6206 ; AVX1-NEXT:    testb $1, %al
   6207 ; AVX1-NEXT:    je LBB55_20
   6208 ; AVX1-NEXT:  ## BB#19: ## %cond.load25
   6209 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   6210 ; AVX1-NEXT:    vpinsrw $1, 18(%rdi), %xmm4, %xmm4
   6211 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   6212 ; AVX1-NEXT:  LBB55_20: ## %else26
   6213 ; AVX1-NEXT:    vpextrb $10, %xmm0, %eax
   6214 ; AVX1-NEXT:    testb $1, %al
   6215 ; AVX1-NEXT:    je LBB55_22
   6216 ; AVX1-NEXT:  ## BB#21: ## %cond.load28
   6217 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   6218 ; AVX1-NEXT:    vpinsrw $2, 20(%rdi), %xmm4, %xmm4
   6219 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   6220 ; AVX1-NEXT:  LBB55_22: ## %else29
   6221 ; AVX1-NEXT:    vpextrb $11, %xmm0, %eax
   6222 ; AVX1-NEXT:    testb $1, %al
   6223 ; AVX1-NEXT:    je LBB55_24
   6224 ; AVX1-NEXT:  ## BB#23: ## %cond.load31
   6225 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   6226 ; AVX1-NEXT:    vpinsrw $3, 22(%rdi), %xmm4, %xmm4
   6227 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   6228 ; AVX1-NEXT:  LBB55_24: ## %else32
   6229 ; AVX1-NEXT:    vpextrb $12, %xmm0, %eax
   6230 ; AVX1-NEXT:    testb $1, %al
   6231 ; AVX1-NEXT:    je LBB55_26
   6232 ; AVX1-NEXT:  ## BB#25: ## %cond.load34
   6233 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   6234 ; AVX1-NEXT:    vpinsrw $4, 24(%rdi), %xmm4, %xmm4
   6235 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   6236 ; AVX1-NEXT:  LBB55_26: ## %else35
   6237 ; AVX1-NEXT:    vpextrb $13, %xmm0, %eax
   6238 ; AVX1-NEXT:    testb $1, %al
   6239 ; AVX1-NEXT:    je LBB55_28
   6240 ; AVX1-NEXT:  ## BB#27: ## %cond.load37
   6241 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   6242 ; AVX1-NEXT:    vpinsrw $5, 26(%rdi), %xmm4, %xmm4
   6243 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   6244 ; AVX1-NEXT:  LBB55_28: ## %else38
   6245 ; AVX1-NEXT:    vpextrb $14, %xmm0, %eax
   6246 ; AVX1-NEXT:    testb $1, %al
   6247 ; AVX1-NEXT:    je LBB55_30
   6248 ; AVX1-NEXT:  ## BB#29: ## %cond.load40
   6249 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   6250 ; AVX1-NEXT:    vpinsrw $6, 28(%rdi), %xmm4, %xmm4
   6251 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   6252 ; AVX1-NEXT:  LBB55_30: ## %else41
   6253 ; AVX1-NEXT:    vpextrb $15, %xmm0, %eax
   6254 ; AVX1-NEXT:    testb $1, %al
   6255 ; AVX1-NEXT:    je LBB55_32
   6256 ; AVX1-NEXT:  ## BB#31: ## %cond.load43
   6257 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   6258 ; AVX1-NEXT:    vpinsrw $7, 30(%rdi), %xmm4, %xmm4
   6259 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
   6260 ; AVX1-NEXT:  LBB55_32: ## %else44
   6261 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm4
   6262 ; AVX1-NEXT:    vpextrb $0, %xmm4, %eax
   6263 ; AVX1-NEXT:    testb $1, %al
   6264 ; AVX1-NEXT:    je LBB55_34
   6265 ; AVX1-NEXT:  ## BB#33: ## %cond.load46
   6266 ; AVX1-NEXT:    vpinsrw $0, 32(%rdi), %xmm0, %xmm5
   6267 ; AVX1-NEXT:    vblendps {{.*#+}} ymm5 = ymm5[0,1,2,3],ymm0[4,5,6,7]
   6268 ; AVX1-NEXT:  LBB55_34: ## %else47
   6269 ; AVX1-NEXT:    vpextrb $1, %xmm4, %eax
   6270 ; AVX1-NEXT:    testb $1, %al
   6271 ; AVX1-NEXT:    je LBB55_36
   6272 ; AVX1-NEXT:  ## BB#35: ## %cond.load49
   6273 ; AVX1-NEXT:    vpinsrw $1, 34(%rdi), %xmm5, %xmm6
   6274 ; AVX1-NEXT:    vblendps {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
   6275 ; AVX1-NEXT:  LBB55_36: ## %else50
   6276 ; AVX1-NEXT:    vpextrb $2, %xmm4, %eax
   6277 ; AVX1-NEXT:    testb $1, %al
   6278 ; AVX1-NEXT:    je LBB55_38
   6279 ; AVX1-NEXT:  ## BB#37: ## %cond.load52
   6280 ; AVX1-NEXT:    vpinsrw $2, 36(%rdi), %xmm5, %xmm6
   6281 ; AVX1-NEXT:    vblendps {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
   6282 ; AVX1-NEXT:  LBB55_38: ## %else53
   6283 ; AVX1-NEXT:    vpextrb $3, %xmm4, %eax
   6284 ; AVX1-NEXT:    testb $1, %al
   6285 ; AVX1-NEXT:    je LBB55_40
   6286 ; AVX1-NEXT:  ## BB#39: ## %cond.load55
   6287 ; AVX1-NEXT:    vpinsrw $3, 38(%rdi), %xmm5, %xmm6
   6288 ; AVX1-NEXT:    vblendps {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
   6289 ; AVX1-NEXT:  LBB55_40: ## %else56
   6290 ; AVX1-NEXT:    vpextrb $4, %xmm4, %eax
   6291 ; AVX1-NEXT:    testb $1, %al
   6292 ; AVX1-NEXT:    je LBB55_42
   6293 ; AVX1-NEXT:  ## BB#41: ## %cond.load58
   6294 ; AVX1-NEXT:    vpinsrw $4, 40(%rdi), %xmm5, %xmm6
   6295 ; AVX1-NEXT:    vblendps {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
   6296 ; AVX1-NEXT:  LBB55_42: ## %else59
   6297 ; AVX1-NEXT:    vpextrb $5, %xmm4, %eax
   6298 ; AVX1-NEXT:    testb $1, %al
   6299 ; AVX1-NEXT:    je LBB55_44
   6300 ; AVX1-NEXT:  ## BB#43: ## %cond.load61
   6301 ; AVX1-NEXT:    vpinsrw $5, 42(%rdi), %xmm5, %xmm6
   6302 ; AVX1-NEXT:    vblendps {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
   6303 ; AVX1-NEXT:  LBB55_44: ## %else62
   6304 ; AVX1-NEXT:    vpextrb $6, %xmm4, %eax
   6305 ; AVX1-NEXT:    testb $1, %al
   6306 ; AVX1-NEXT:    je LBB55_46
   6307 ; AVX1-NEXT:  ## BB#45: ## %cond.load64
   6308 ; AVX1-NEXT:    vpinsrw $6, 44(%rdi), %xmm5, %xmm6
   6309 ; AVX1-NEXT:    vblendps {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
   6310 ; AVX1-NEXT:  LBB55_46: ## %else65
   6311 ; AVX1-NEXT:    vpextrb $7, %xmm4, %eax
   6312 ; AVX1-NEXT:    testb $1, %al
   6313 ; AVX1-NEXT:    je LBB55_48
   6314 ; AVX1-NEXT:  ## BB#47: ## %cond.load67
   6315 ; AVX1-NEXT:    vpinsrw $7, 46(%rdi), %xmm5, %xmm6
   6316 ; AVX1-NEXT:    vblendps {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
   6317 ; AVX1-NEXT:  LBB55_48: ## %else68
   6318 ; AVX1-NEXT:    vpextrb $8, %xmm4, %eax
   6319 ; AVX1-NEXT:    testb $1, %al
   6320 ; AVX1-NEXT:    je LBB55_50
   6321 ; AVX1-NEXT:  ## BB#49: ## %cond.load70
   6322 ; AVX1-NEXT:    vextractf128 $1, %ymm5, %xmm6
   6323 ; AVX1-NEXT:    vpinsrw $0, 48(%rdi), %xmm6, %xmm6
   6324 ; AVX1-NEXT:    vinsertf128 $1, %xmm6, %ymm5, %ymm5
   6325 ; AVX1-NEXT:  LBB55_50: ## %else71
   6326 ; AVX1-NEXT:    vpextrb $9, %xmm4, %eax
   6327 ; AVX1-NEXT:    testb $1, %al
   6328 ; AVX1-NEXT:    je LBB55_52
   6329 ; AVX1-NEXT:  ## BB#51: ## %cond.load73
   6330 ; AVX1-NEXT:    vextractf128 $1, %ymm5, %xmm6
   6331 ; AVX1-NEXT:    vpinsrw $1, 50(%rdi), %xmm6, %xmm6
   6332 ; AVX1-NEXT:    vinsertf128 $1, %xmm6, %ymm5, %ymm5
   6333 ; AVX1-NEXT:  LBB55_52: ## %else74
   6334 ; AVX1-NEXT:    vpextrb $10, %xmm4, %eax
   6335 ; AVX1-NEXT:    testb $1, %al
   6336 ; AVX1-NEXT:    je LBB55_54
   6337 ; AVX1-NEXT:  ## BB#53: ## %cond.load76
   6338 ; AVX1-NEXT:    vextractf128 $1, %ymm5, %xmm6
   6339 ; AVX1-NEXT:    vpinsrw $2, 52(%rdi), %xmm6, %xmm6
   6340 ; AVX1-NEXT:    vinsertf128 $1, %xmm6, %ymm5, %ymm5
   6341 ; AVX1-NEXT:  LBB55_54: ## %else77
   6342 ; AVX1-NEXT:    vpextrb $11, %xmm4, %eax
   6343 ; AVX1-NEXT:    testb $1, %al
   6344 ; AVX1-NEXT:    je LBB55_56
   6345 ; AVX1-NEXT:  ## BB#55: ## %cond.load79
   6346 ; AVX1-NEXT:    vextractf128 $1, %ymm5, %xmm6
   6347 ; AVX1-NEXT:    vpinsrw $3, 54(%rdi), %xmm6, %xmm6
   6348 ; AVX1-NEXT:    vinsertf128 $1, %xmm6, %ymm5, %ymm5
   6349 ; AVX1-NEXT:  LBB55_56: ## %else80
   6350 ; AVX1-NEXT:    vpextrb $12, %xmm4, %eax
   6351 ; AVX1-NEXT:    testb $1, %al
   6352 ; AVX1-NEXT:    je LBB55_58
   6353 ; AVX1-NEXT:  ## BB#57: ## %cond.load82
   6354 ; AVX1-NEXT:    vextractf128 $1, %ymm5, %xmm6
   6355 ; AVX1-NEXT:    vpinsrw $4, 56(%rdi), %xmm6, %xmm6
   6356 ; AVX1-NEXT:    vinsertf128 $1, %xmm6, %ymm5, %ymm5
   6357 ; AVX1-NEXT:  LBB55_58: ## %else83
   6358 ; AVX1-NEXT:    vpextrb $13, %xmm4, %eax
   6359 ; AVX1-NEXT:    testb $1, %al
   6360 ; AVX1-NEXT:    je LBB55_60
   6361 ; AVX1-NEXT:  ## BB#59: ## %cond.load85
   6362 ; AVX1-NEXT:    vextractf128 $1, %ymm5, %xmm6
   6363 ; AVX1-NEXT:    vpinsrw $5, 58(%rdi), %xmm6, %xmm6
   6364 ; AVX1-NEXT:    vinsertf128 $1, %xmm6, %ymm5, %ymm5
   6365 ; AVX1-NEXT:  LBB55_60: ## %else86
   6366 ; AVX1-NEXT:    vpextrb $14, %xmm4, %eax
   6367 ; AVX1-NEXT:    testb $1, %al
   6368 ; AVX1-NEXT:    je LBB55_62
   6369 ; AVX1-NEXT:  ## BB#61: ## %cond.load88
   6370 ; AVX1-NEXT:    vextractf128 $1, %ymm5, %xmm6
   6371 ; AVX1-NEXT:    vpinsrw $6, 60(%rdi), %xmm6, %xmm6
   6372 ; AVX1-NEXT:    vinsertf128 $1, %xmm6, %ymm5, %ymm5
   6373 ; AVX1-NEXT:  LBB55_62: ## %else89
   6374 ; AVX1-NEXT:    vpextrb $15, %xmm4, %eax
   6375 ; AVX1-NEXT:    testb $1, %al
   6376 ; AVX1-NEXT:    je LBB55_64
   6377 ; AVX1-NEXT:  ## BB#63: ## %cond.load91
   6378 ; AVX1-NEXT:    vextractf128 $1, %ymm5, %xmm6
   6379 ; AVX1-NEXT:    vpinsrw $7, 62(%rdi), %xmm6, %xmm6
   6380 ; AVX1-NEXT:    vinsertf128 $1, %xmm6, %ymm5, %ymm5
   6381 ; AVX1-NEXT:  LBB55_64: ## %else92
   6382 ; AVX1-NEXT:    vpmovzxbw {{.*#+}} xmm6 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
   6383 ; AVX1-NEXT:    vpsllw $15, %xmm6, %xmm6
   6384 ; AVX1-NEXT:    vpsraw $15, %xmm6, %xmm6
   6385 ; AVX1-NEXT:    vpunpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
   6386 ; AVX1-NEXT:    vpsllw $15, %xmm0, %xmm0
   6387 ; AVX1-NEXT:    vpsraw $15, %xmm0, %xmm0
   6388 ; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm6, %ymm0
   6389 ; AVX1-NEXT:    vandnps %ymm1, %ymm0, %ymm1
   6390 ; AVX1-NEXT:    vandps %ymm0, %ymm3, %ymm0
   6391 ; AVX1-NEXT:    vorps %ymm1, %ymm0, %ymm0
   6392 ; AVX1-NEXT:    vpmovzxbw {{.*#+}} xmm1 = xmm4[0],zero,xmm4[1],zero,xmm4[2],zero,xmm4[3],zero,xmm4[4],zero,xmm4[5],zero,xmm4[6],zero,xmm4[7],zero
   6393 ; AVX1-NEXT:    vpsllw $15, %xmm1, %xmm1
   6394 ; AVX1-NEXT:    vpsraw $15, %xmm1, %xmm1
   6395 ; AVX1-NEXT:    vpunpckhbw {{.*#+}} xmm3 = xmm4[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
   6396 ; AVX1-NEXT:    vpsllw $15, %xmm3, %xmm3
   6397 ; AVX1-NEXT:    vpsraw $15, %xmm3, %xmm3
   6398 ; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm1, %ymm1
   6399 ; AVX1-NEXT:    vandnps %ymm2, %ymm1, %ymm2
   6400 ; AVX1-NEXT:    vandps %ymm1, %ymm5, %ymm1
   6401 ; AVX1-NEXT:    vorps %ymm2, %ymm1, %ymm1
   6402 ; AVX1-NEXT:    retq
   6403 ;
   6404 ; AVX2-LABEL: test_mask_load_32xi16:
   6405 ; AVX2:       ## BB#0:
   6406 ; AVX2-NEXT:    vpextrb $0, %xmm0, %eax
   6407 ; AVX2-NEXT:    testb $1, %al
   6408 ; AVX2-NEXT:    je LBB55_2
   6409 ; AVX2-NEXT:  ## BB#1: ## %cond.load
   6410 ; AVX2-NEXT:    movzwl (%rdi), %eax
   6411 ; AVX2-NEXT:    vmovd %eax, %xmm3
   6412 ; AVX2-NEXT:  LBB55_2: ## %else
   6413 ; AVX2-NEXT:    vpextrb $1, %xmm0, %eax
   6414 ; AVX2-NEXT:    testb $1, %al
   6415 ; AVX2-NEXT:    je LBB55_4
   6416 ; AVX2-NEXT:  ## BB#3: ## %cond.load1
   6417 ; AVX2-NEXT:    vpinsrw $1, 2(%rdi), %xmm3, %xmm4
   6418 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   6419 ; AVX2-NEXT:  LBB55_4: ## %else2
   6420 ; AVX2-NEXT:    vpextrb $2, %xmm0, %eax
   6421 ; AVX2-NEXT:    testb $1, %al
   6422 ; AVX2-NEXT:    je LBB55_6
   6423 ; AVX2-NEXT:  ## BB#5: ## %cond.load4
   6424 ; AVX2-NEXT:    vpinsrw $2, 4(%rdi), %xmm3, %xmm4
   6425 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   6426 ; AVX2-NEXT:  LBB55_6: ## %else5
   6427 ; AVX2-NEXT:    vpextrb $3, %xmm0, %eax
   6428 ; AVX2-NEXT:    testb $1, %al
   6429 ; AVX2-NEXT:    je LBB55_8
   6430 ; AVX2-NEXT:  ## BB#7: ## %cond.load7
   6431 ; AVX2-NEXT:    vpinsrw $3, 6(%rdi), %xmm3, %xmm4
   6432 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   6433 ; AVX2-NEXT:  LBB55_8: ## %else8
   6434 ; AVX2-NEXT:    vpextrb $4, %xmm0, %eax
   6435 ; AVX2-NEXT:    testb $1, %al
   6436 ; AVX2-NEXT:    je LBB55_10
   6437 ; AVX2-NEXT:  ## BB#9: ## %cond.load10
   6438 ; AVX2-NEXT:    vpinsrw $4, 8(%rdi), %xmm3, %xmm4
   6439 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   6440 ; AVX2-NEXT:  LBB55_10: ## %else11
   6441 ; AVX2-NEXT:    vpextrb $5, %xmm0, %eax
   6442 ; AVX2-NEXT:    testb $1, %al
   6443 ; AVX2-NEXT:    je LBB55_12
   6444 ; AVX2-NEXT:  ## BB#11: ## %cond.load13
   6445 ; AVX2-NEXT:    vpinsrw $5, 10(%rdi), %xmm3, %xmm4
   6446 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   6447 ; AVX2-NEXT:  LBB55_12: ## %else14
   6448 ; AVX2-NEXT:    vpextrb $6, %xmm0, %eax
   6449 ; AVX2-NEXT:    testb $1, %al
   6450 ; AVX2-NEXT:    je LBB55_14
   6451 ; AVX2-NEXT:  ## BB#13: ## %cond.load16
   6452 ; AVX2-NEXT:    vpinsrw $6, 12(%rdi), %xmm3, %xmm4
   6453 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   6454 ; AVX2-NEXT:  LBB55_14: ## %else17
   6455 ; AVX2-NEXT:    vpextrb $7, %xmm0, %eax
   6456 ; AVX2-NEXT:    testb $1, %al
   6457 ; AVX2-NEXT:    je LBB55_16
   6458 ; AVX2-NEXT:  ## BB#15: ## %cond.load19
   6459 ; AVX2-NEXT:    vpinsrw $7, 14(%rdi), %xmm3, %xmm4
   6460 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   6461 ; AVX2-NEXT:  LBB55_16: ## %else20
   6462 ; AVX2-NEXT:    vpextrb $8, %xmm0, %eax
   6463 ; AVX2-NEXT:    testb $1, %al
   6464 ; AVX2-NEXT:    je LBB55_18
   6465 ; AVX2-NEXT:  ## BB#17: ## %cond.load22
   6466 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   6467 ; AVX2-NEXT:    vpinsrw $0, 16(%rdi), %xmm4, %xmm4
   6468 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   6469 ; AVX2-NEXT:  LBB55_18: ## %else23
   6470 ; AVX2-NEXT:    vpextrb $9, %xmm0, %eax
   6471 ; AVX2-NEXT:    testb $1, %al
   6472 ; AVX2-NEXT:    je LBB55_20
   6473 ; AVX2-NEXT:  ## BB#19: ## %cond.load25
   6474 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   6475 ; AVX2-NEXT:    vpinsrw $1, 18(%rdi), %xmm4, %xmm4
   6476 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   6477 ; AVX2-NEXT:  LBB55_20: ## %else26
   6478 ; AVX2-NEXT:    vpextrb $10, %xmm0, %eax
   6479 ; AVX2-NEXT:    testb $1, %al
   6480 ; AVX2-NEXT:    je LBB55_22
   6481 ; AVX2-NEXT:  ## BB#21: ## %cond.load28
   6482 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   6483 ; AVX2-NEXT:    vpinsrw $2, 20(%rdi), %xmm4, %xmm4
   6484 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   6485 ; AVX2-NEXT:  LBB55_22: ## %else29
   6486 ; AVX2-NEXT:    vpextrb $11, %xmm0, %eax
   6487 ; AVX2-NEXT:    testb $1, %al
   6488 ; AVX2-NEXT:    je LBB55_24
   6489 ; AVX2-NEXT:  ## BB#23: ## %cond.load31
   6490 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   6491 ; AVX2-NEXT:    vpinsrw $3, 22(%rdi), %xmm4, %xmm4
   6492 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   6493 ; AVX2-NEXT:  LBB55_24: ## %else32
   6494 ; AVX2-NEXT:    vpextrb $12, %xmm0, %eax
   6495 ; AVX2-NEXT:    testb $1, %al
   6496 ; AVX2-NEXT:    je LBB55_26
   6497 ; AVX2-NEXT:  ## BB#25: ## %cond.load34
   6498 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   6499 ; AVX2-NEXT:    vpinsrw $4, 24(%rdi), %xmm4, %xmm4
   6500 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   6501 ; AVX2-NEXT:  LBB55_26: ## %else35
   6502 ; AVX2-NEXT:    vpextrb $13, %xmm0, %eax
   6503 ; AVX2-NEXT:    testb $1, %al
   6504 ; AVX2-NEXT:    je LBB55_28
   6505 ; AVX2-NEXT:  ## BB#27: ## %cond.load37
   6506 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   6507 ; AVX2-NEXT:    vpinsrw $5, 26(%rdi), %xmm4, %xmm4
   6508 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   6509 ; AVX2-NEXT:  LBB55_28: ## %else38
   6510 ; AVX2-NEXT:    vpextrb $14, %xmm0, %eax
   6511 ; AVX2-NEXT:    testb $1, %al
   6512 ; AVX2-NEXT:    je LBB55_30
   6513 ; AVX2-NEXT:  ## BB#29: ## %cond.load40
   6514 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   6515 ; AVX2-NEXT:    vpinsrw $6, 28(%rdi), %xmm4, %xmm4
   6516 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   6517 ; AVX2-NEXT:  LBB55_30: ## %else41
   6518 ; AVX2-NEXT:    vpextrb $15, %xmm0, %eax
   6519 ; AVX2-NEXT:    testb $1, %al
   6520 ; AVX2-NEXT:    je LBB55_32
   6521 ; AVX2-NEXT:  ## BB#31: ## %cond.load43
   6522 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   6523 ; AVX2-NEXT:    vpinsrw $7, 30(%rdi), %xmm4, %xmm4
   6524 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   6525 ; AVX2-NEXT:  LBB55_32: ## %else44
   6526 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm4
   6527 ; AVX2-NEXT:    vpextrb $0, %xmm4, %eax
   6528 ; AVX2-NEXT:    testb $1, %al
   6529 ; AVX2-NEXT:    je LBB55_34
   6530 ; AVX2-NEXT:  ## BB#33: ## %cond.load46
   6531 ; AVX2-NEXT:    vpinsrw $0, 32(%rdi), %xmm0, %xmm5
   6532 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm5 = ymm5[0,1,2,3],ymm0[4,5,6,7]
   6533 ; AVX2-NEXT:  LBB55_34: ## %else47
   6534 ; AVX2-NEXT:    vpextrb $1, %xmm4, %eax
   6535 ; AVX2-NEXT:    testb $1, %al
   6536 ; AVX2-NEXT:    je LBB55_36
   6537 ; AVX2-NEXT:  ## BB#35: ## %cond.load49
   6538 ; AVX2-NEXT:    vpinsrw $1, 34(%rdi), %xmm5, %xmm6
   6539 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
   6540 ; AVX2-NEXT:  LBB55_36: ## %else50
   6541 ; AVX2-NEXT:    vpextrb $2, %xmm4, %eax
   6542 ; AVX2-NEXT:    testb $1, %al
   6543 ; AVX2-NEXT:    je LBB55_38
   6544 ; AVX2-NEXT:  ## BB#37: ## %cond.load52
   6545 ; AVX2-NEXT:    vpinsrw $2, 36(%rdi), %xmm5, %xmm6
   6546 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
   6547 ; AVX2-NEXT:  LBB55_38: ## %else53
   6548 ; AVX2-NEXT:    vpextrb $3, %xmm4, %eax
   6549 ; AVX2-NEXT:    testb $1, %al
   6550 ; AVX2-NEXT:    je LBB55_40
   6551 ; AVX2-NEXT:  ## BB#39: ## %cond.load55
   6552 ; AVX2-NEXT:    vpinsrw $3, 38(%rdi), %xmm5, %xmm6
   6553 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
   6554 ; AVX2-NEXT:  LBB55_40: ## %else56
   6555 ; AVX2-NEXT:    vpextrb $4, %xmm4, %eax
   6556 ; AVX2-NEXT:    testb $1, %al
   6557 ; AVX2-NEXT:    je LBB55_42
   6558 ; AVX2-NEXT:  ## BB#41: ## %cond.load58
   6559 ; AVX2-NEXT:    vpinsrw $4, 40(%rdi), %xmm5, %xmm6
   6560 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
   6561 ; AVX2-NEXT:  LBB55_42: ## %else59
   6562 ; AVX2-NEXT:    vpextrb $5, %xmm4, %eax
   6563 ; AVX2-NEXT:    testb $1, %al
   6564 ; AVX2-NEXT:    je LBB55_44
   6565 ; AVX2-NEXT:  ## BB#43: ## %cond.load61
   6566 ; AVX2-NEXT:    vpinsrw $5, 42(%rdi), %xmm5, %xmm6
   6567 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
   6568 ; AVX2-NEXT:  LBB55_44: ## %else62
   6569 ; AVX2-NEXT:    vpextrb $6, %xmm4, %eax
   6570 ; AVX2-NEXT:    testb $1, %al
   6571 ; AVX2-NEXT:    je LBB55_46
   6572 ; AVX2-NEXT:  ## BB#45: ## %cond.load64
   6573 ; AVX2-NEXT:    vpinsrw $6, 44(%rdi), %xmm5, %xmm6
   6574 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
   6575 ; AVX2-NEXT:  LBB55_46: ## %else65
   6576 ; AVX2-NEXT:    vpextrb $7, %xmm4, %eax
   6577 ; AVX2-NEXT:    testb $1, %al
   6578 ; AVX2-NEXT:    je LBB55_48
   6579 ; AVX2-NEXT:  ## BB#47: ## %cond.load67
   6580 ; AVX2-NEXT:    vpinsrw $7, 46(%rdi), %xmm5, %xmm6
   6581 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
   6582 ; AVX2-NEXT:  LBB55_48: ## %else68
   6583 ; AVX2-NEXT:    vpextrb $8, %xmm4, %eax
   6584 ; AVX2-NEXT:    testb $1, %al
   6585 ; AVX2-NEXT:    je LBB55_50
   6586 ; AVX2-NEXT:  ## BB#49: ## %cond.load70
   6587 ; AVX2-NEXT:    vextracti128 $1, %ymm5, %xmm6
   6588 ; AVX2-NEXT:    vpinsrw $0, 48(%rdi), %xmm6, %xmm6
   6589 ; AVX2-NEXT:    vinserti128 $1, %xmm6, %ymm5, %ymm5
   6590 ; AVX2-NEXT:  LBB55_50: ## %else71
   6591 ; AVX2-NEXT:    vpextrb $9, %xmm4, %eax
   6592 ; AVX2-NEXT:    testb $1, %al
   6593 ; AVX2-NEXT:    je LBB55_52
   6594 ; AVX2-NEXT:  ## BB#51: ## %cond.load73
   6595 ; AVX2-NEXT:    vextracti128 $1, %ymm5, %xmm6
   6596 ; AVX2-NEXT:    vpinsrw $1, 50(%rdi), %xmm6, %xmm6
   6597 ; AVX2-NEXT:    vinserti128 $1, %xmm6, %ymm5, %ymm5
   6598 ; AVX2-NEXT:  LBB55_52: ## %else74
   6599 ; AVX2-NEXT:    vpextrb $10, %xmm4, %eax
   6600 ; AVX2-NEXT:    testb $1, %al
   6601 ; AVX2-NEXT:    je LBB55_54
   6602 ; AVX2-NEXT:  ## BB#53: ## %cond.load76
   6603 ; AVX2-NEXT:    vextracti128 $1, %ymm5, %xmm6
   6604 ; AVX2-NEXT:    vpinsrw $2, 52(%rdi), %xmm6, %xmm6
   6605 ; AVX2-NEXT:    vinserti128 $1, %xmm6, %ymm5, %ymm5
   6606 ; AVX2-NEXT:  LBB55_54: ## %else77
   6607 ; AVX2-NEXT:    vpextrb $11, %xmm4, %eax
   6608 ; AVX2-NEXT:    testb $1, %al
   6609 ; AVX2-NEXT:    je LBB55_56
   6610 ; AVX2-NEXT:  ## BB#55: ## %cond.load79
   6611 ; AVX2-NEXT:    vextracti128 $1, %ymm5, %xmm6
   6612 ; AVX2-NEXT:    vpinsrw $3, 54(%rdi), %xmm6, %xmm6
   6613 ; AVX2-NEXT:    vinserti128 $1, %xmm6, %ymm5, %ymm5
   6614 ; AVX2-NEXT:  LBB55_56: ## %else80
   6615 ; AVX2-NEXT:    vpextrb $12, %xmm4, %eax
   6616 ; AVX2-NEXT:    testb $1, %al
   6617 ; AVX2-NEXT:    je LBB55_58
   6618 ; AVX2-NEXT:  ## BB#57: ## %cond.load82
   6619 ; AVX2-NEXT:    vextracti128 $1, %ymm5, %xmm6
   6620 ; AVX2-NEXT:    vpinsrw $4, 56(%rdi), %xmm6, %xmm6
   6621 ; AVX2-NEXT:    vinserti128 $1, %xmm6, %ymm5, %ymm5
   6622 ; AVX2-NEXT:  LBB55_58: ## %else83
   6623 ; AVX2-NEXT:    vpextrb $13, %xmm4, %eax
   6624 ; AVX2-NEXT:    testb $1, %al
   6625 ; AVX2-NEXT:    je LBB55_60
   6626 ; AVX2-NEXT:  ## BB#59: ## %cond.load85
   6627 ; AVX2-NEXT:    vextracti128 $1, %ymm5, %xmm6
   6628 ; AVX2-NEXT:    vpinsrw $5, 58(%rdi), %xmm6, %xmm6
   6629 ; AVX2-NEXT:    vinserti128 $1, %xmm6, %ymm5, %ymm5
   6630 ; AVX2-NEXT:  LBB55_60: ## %else86
   6631 ; AVX2-NEXT:    vpextrb $14, %xmm4, %eax
   6632 ; AVX2-NEXT:    testb $1, %al
   6633 ; AVX2-NEXT:    je LBB55_62
   6634 ; AVX2-NEXT:  ## BB#61: ## %cond.load88
   6635 ; AVX2-NEXT:    vextracti128 $1, %ymm5, %xmm6
   6636 ; AVX2-NEXT:    vpinsrw $6, 60(%rdi), %xmm6, %xmm6
   6637 ; AVX2-NEXT:    vinserti128 $1, %xmm6, %ymm5, %ymm5
   6638 ; AVX2-NEXT:  LBB55_62: ## %else89
   6639 ; AVX2-NEXT:    vpextrb $15, %xmm4, %eax
   6640 ; AVX2-NEXT:    testb $1, %al
   6641 ; AVX2-NEXT:    je LBB55_64
   6642 ; AVX2-NEXT:  ## BB#63: ## %cond.load91
   6643 ; AVX2-NEXT:    vextracti128 $1, %ymm5, %xmm6
   6644 ; AVX2-NEXT:    vpinsrw $7, 62(%rdi), %xmm6, %xmm6
   6645 ; AVX2-NEXT:    vinserti128 $1, %xmm6, %ymm5, %ymm5
   6646 ; AVX2-NEXT:  LBB55_64: ## %else92
   6647 ; AVX2-NEXT:    vpmovzxbw {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero
   6648 ; AVX2-NEXT:    vpsllw $15, %ymm0, %ymm0
   6649 ; AVX2-NEXT:    vpsraw $15, %ymm0, %ymm0
   6650 ; AVX2-NEXT:    vpblendvb %ymm0, %ymm3, %ymm1, %ymm0
   6651 ; AVX2-NEXT:    vpmovzxbw {{.*#+}} ymm1 = xmm4[0],zero,xmm4[1],zero,xmm4[2],zero,xmm4[3],zero,xmm4[4],zero,xmm4[5],zero,xmm4[6],zero,xmm4[7],zero,xmm4[8],zero,xmm4[9],zero,xmm4[10],zero,xmm4[11],zero,xmm4[12],zero,xmm4[13],zero,xmm4[14],zero,xmm4[15],zero
   6652 ; AVX2-NEXT:    vpsllw $15, %ymm1, %ymm1
   6653 ; AVX2-NEXT:    vpsraw $15, %ymm1, %ymm1
   6654 ; AVX2-NEXT:    vpblendvb %ymm1, %ymm5, %ymm2, %ymm1
   6655 ; AVX2-NEXT:    retq
   6656 ;
   6657 ; AVX512F-LABEL: test_mask_load_32xi16:
   6658 ; AVX512F:       ## BB#0:
   6659 ; AVX512F-NEXT:    vpextrb $0, %xmm0, %eax
   6660 ; AVX512F-NEXT:    testb $1, %al
   6661 ; AVX512F-NEXT:    je LBB55_2
   6662 ; AVX512F-NEXT:  ## BB#1: ## %cond.load
   6663 ; AVX512F-NEXT:    movzwl (%rdi), %eax
   6664 ; AVX512F-NEXT:    vmovd %eax, %xmm3
   6665 ; AVX512F-NEXT:  LBB55_2: ## %else
   6666 ; AVX512F-NEXT:    vpextrb $1, %xmm0, %eax
   6667 ; AVX512F-NEXT:    testb $1, %al
   6668 ; AVX512F-NEXT:    je LBB55_4
   6669 ; AVX512F-NEXT:  ## BB#3: ## %cond.load1
   6670 ; AVX512F-NEXT:    vpinsrw $1, 2(%rdi), %xmm3, %xmm4
   6671 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   6672 ; AVX512F-NEXT:  LBB55_4: ## %else2
   6673 ; AVX512F-NEXT:    vpextrb $2, %xmm0, %eax
   6674 ; AVX512F-NEXT:    testb $1, %al
   6675 ; AVX512F-NEXT:    je LBB55_6
   6676 ; AVX512F-NEXT:  ## BB#5: ## %cond.load4
   6677 ; AVX512F-NEXT:    vpinsrw $2, 4(%rdi), %xmm3, %xmm4
   6678 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   6679 ; AVX512F-NEXT:  LBB55_6: ## %else5
   6680 ; AVX512F-NEXT:    vpextrb $3, %xmm0, %eax
   6681 ; AVX512F-NEXT:    testb $1, %al
   6682 ; AVX512F-NEXT:    je LBB55_8
   6683 ; AVX512F-NEXT:  ## BB#7: ## %cond.load7
   6684 ; AVX512F-NEXT:    vpinsrw $3, 6(%rdi), %xmm3, %xmm4
   6685 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   6686 ; AVX512F-NEXT:  LBB55_8: ## %else8
   6687 ; AVX512F-NEXT:    vpextrb $4, %xmm0, %eax
   6688 ; AVX512F-NEXT:    testb $1, %al
   6689 ; AVX512F-NEXT:    je LBB55_10
   6690 ; AVX512F-NEXT:  ## BB#9: ## %cond.load10
   6691 ; AVX512F-NEXT:    vpinsrw $4, 8(%rdi), %xmm3, %xmm4
   6692 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   6693 ; AVX512F-NEXT:  LBB55_10: ## %else11
   6694 ; AVX512F-NEXT:    vpextrb $5, %xmm0, %eax
   6695 ; AVX512F-NEXT:    testb $1, %al
   6696 ; AVX512F-NEXT:    je LBB55_12
   6697 ; AVX512F-NEXT:  ## BB#11: ## %cond.load13
   6698 ; AVX512F-NEXT:    vpinsrw $5, 10(%rdi), %xmm3, %xmm4
   6699 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   6700 ; AVX512F-NEXT:  LBB55_12: ## %else14
   6701 ; AVX512F-NEXT:    vpextrb $6, %xmm0, %eax
   6702 ; AVX512F-NEXT:    testb $1, %al
   6703 ; AVX512F-NEXT:    je LBB55_14
   6704 ; AVX512F-NEXT:  ## BB#13: ## %cond.load16
   6705 ; AVX512F-NEXT:    vpinsrw $6, 12(%rdi), %xmm3, %xmm4
   6706 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   6707 ; AVX512F-NEXT:  LBB55_14: ## %else17
   6708 ; AVX512F-NEXT:    vpextrb $7, %xmm0, %eax
   6709 ; AVX512F-NEXT:    testb $1, %al
   6710 ; AVX512F-NEXT:    je LBB55_16
   6711 ; AVX512F-NEXT:  ## BB#15: ## %cond.load19
   6712 ; AVX512F-NEXT:    vpinsrw $7, 14(%rdi), %xmm3, %xmm4
   6713 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
   6714 ; AVX512F-NEXT:  LBB55_16: ## %else20
   6715 ; AVX512F-NEXT:    vpextrb $8, %xmm0, %eax
   6716 ; AVX512F-NEXT:    testb $1, %al
   6717 ; AVX512F-NEXT:    je LBB55_18
   6718 ; AVX512F-NEXT:  ## BB#17: ## %cond.load22
   6719 ; AVX512F-NEXT:    vextracti128 $1, %ymm3, %xmm4
   6720 ; AVX512F-NEXT:    vpinsrw $0, 16(%rdi), %xmm4, %xmm4
   6721 ; AVX512F-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   6722 ; AVX512F-NEXT:  LBB55_18: ## %else23
   6723 ; AVX512F-NEXT:    vpextrb $9, %xmm0, %eax
   6724 ; AVX512F-NEXT:    testb $1, %al
   6725 ; AVX512F-NEXT:    je LBB55_20
   6726 ; AVX512F-NEXT:  ## BB#19: ## %cond.load25
   6727 ; AVX512F-NEXT:    vextracti128 $1, %ymm3, %xmm4
   6728 ; AVX512F-NEXT:    vpinsrw $1, 18(%rdi), %xmm4, %xmm4
   6729 ; AVX512F-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   6730 ; AVX512F-NEXT:  LBB55_20: ## %else26
   6731 ; AVX512F-NEXT:    vpextrb $10, %xmm0, %eax
   6732 ; AVX512F-NEXT:    testb $1, %al
   6733 ; AVX512F-NEXT:    je LBB55_22
   6734 ; AVX512F-NEXT:  ## BB#21: ## %cond.load28
   6735 ; AVX512F-NEXT:    vextracti128 $1, %ymm3, %xmm4
   6736 ; AVX512F-NEXT:    vpinsrw $2, 20(%rdi), %xmm4, %xmm4
   6737 ; AVX512F-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   6738 ; AVX512F-NEXT:  LBB55_22: ## %else29
   6739 ; AVX512F-NEXT:    vpextrb $11, %xmm0, %eax
   6740 ; AVX512F-NEXT:    testb $1, %al
   6741 ; AVX512F-NEXT:    je LBB55_24
   6742 ; AVX512F-NEXT:  ## BB#23: ## %cond.load31
   6743 ; AVX512F-NEXT:    vextracti128 $1, %ymm3, %xmm4
   6744 ; AVX512F-NEXT:    vpinsrw $3, 22(%rdi), %xmm4, %xmm4
   6745 ; AVX512F-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   6746 ; AVX512F-NEXT:  LBB55_24: ## %else32
   6747 ; AVX512F-NEXT:    vpextrb $12, %xmm0, %eax
   6748 ; AVX512F-NEXT:    testb $1, %al
   6749 ; AVX512F-NEXT:    je LBB55_26
   6750 ; AVX512F-NEXT:  ## BB#25: ## %cond.load34
   6751 ; AVX512F-NEXT:    vextracti128 $1, %ymm3, %xmm4
   6752 ; AVX512F-NEXT:    vpinsrw $4, 24(%rdi), %xmm4, %xmm4
   6753 ; AVX512F-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   6754 ; AVX512F-NEXT:  LBB55_26: ## %else35
   6755 ; AVX512F-NEXT:    vpextrb $13, %xmm0, %eax
   6756 ; AVX512F-NEXT:    testb $1, %al
   6757 ; AVX512F-NEXT:    je LBB55_28
   6758 ; AVX512F-NEXT:  ## BB#27: ## %cond.load37
   6759 ; AVX512F-NEXT:    vextracti128 $1, %ymm3, %xmm4
   6760 ; AVX512F-NEXT:    vpinsrw $5, 26(%rdi), %xmm4, %xmm4
   6761 ; AVX512F-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   6762 ; AVX512F-NEXT:  LBB55_28: ## %else38
   6763 ; AVX512F-NEXT:    vpextrb $14, %xmm0, %eax
   6764 ; AVX512F-NEXT:    testb $1, %al
   6765 ; AVX512F-NEXT:    je LBB55_30
   6766 ; AVX512F-NEXT:  ## BB#29: ## %cond.load40
   6767 ; AVX512F-NEXT:    vextracti128 $1, %ymm3, %xmm4
   6768 ; AVX512F-NEXT:    vpinsrw $6, 28(%rdi), %xmm4, %xmm4
   6769 ; AVX512F-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   6770 ; AVX512F-NEXT:  LBB55_30: ## %else41
   6771 ; AVX512F-NEXT:    vpextrb $15, %xmm0, %eax
   6772 ; AVX512F-NEXT:    testb $1, %al
   6773 ; AVX512F-NEXT:    je LBB55_32
   6774 ; AVX512F-NEXT:  ## BB#31: ## %cond.load43
   6775 ; AVX512F-NEXT:    vextracti128 $1, %ymm3, %xmm4
   6776 ; AVX512F-NEXT:    vpinsrw $7, 30(%rdi), %xmm4, %xmm4
   6777 ; AVX512F-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
   6778 ; AVX512F-NEXT:  LBB55_32: ## %else44
   6779 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm4
   6780 ; AVX512F-NEXT:    vpextrb $0, %xmm4, %eax
   6781 ; AVX512F-NEXT:    testb $1, %al
   6782 ; AVX512F-NEXT:    je LBB55_34
   6783 ; AVX512F-NEXT:  ## BB#33: ## %cond.load46
   6784 ; AVX512F-NEXT:    vpinsrw $0, 32(%rdi), %xmm0, %xmm5
   6785 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm5 = ymm5[0,1,2,3],ymm0[4,5,6,7]
   6786 ; AVX512F-NEXT:  LBB55_34: ## %else47
   6787 ; AVX512F-NEXT:    vpextrb $1, %xmm4, %eax
   6788 ; AVX512F-NEXT:    testb $1, %al
   6789 ; AVX512F-NEXT:    je LBB55_36
   6790 ; AVX512F-NEXT:  ## BB#35: ## %cond.load49
   6791 ; AVX512F-NEXT:    vpinsrw $1, 34(%rdi), %xmm5, %xmm6
   6792 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
   6793 ; AVX512F-NEXT:  LBB55_36: ## %else50
   6794 ; AVX512F-NEXT:    vpextrb $2, %xmm4, %eax
   6795 ; AVX512F-NEXT:    testb $1, %al
   6796 ; AVX512F-NEXT:    je LBB55_38
   6797 ; AVX512F-NEXT:  ## BB#37: ## %cond.load52
   6798 ; AVX512F-NEXT:    vpinsrw $2, 36(%rdi), %xmm5, %xmm6
   6799 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
   6800 ; AVX512F-NEXT:  LBB55_38: ## %else53
   6801 ; AVX512F-NEXT:    vpextrb $3, %xmm4, %eax
   6802 ; AVX512F-NEXT:    testb $1, %al
   6803 ; AVX512F-NEXT:    je LBB55_40
   6804 ; AVX512F-NEXT:  ## BB#39: ## %cond.load55
   6805 ; AVX512F-NEXT:    vpinsrw $3, 38(%rdi), %xmm5, %xmm6
   6806 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
   6807 ; AVX512F-NEXT:  LBB55_40: ## %else56
   6808 ; AVX512F-NEXT:    vpextrb $4, %xmm4, %eax
   6809 ; AVX512F-NEXT:    testb $1, %al
   6810 ; AVX512F-NEXT:    je LBB55_42
   6811 ; AVX512F-NEXT:  ## BB#41: ## %cond.load58
   6812 ; AVX512F-NEXT:    vpinsrw $4, 40(%rdi), %xmm5, %xmm6
   6813 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
   6814 ; AVX512F-NEXT:  LBB55_42: ## %else59
   6815 ; AVX512F-NEXT:    vpextrb $5, %xmm4, %eax
   6816 ; AVX512F-NEXT:    testb $1, %al
   6817 ; AVX512F-NEXT:    je LBB55_44
   6818 ; AVX512F-NEXT:  ## BB#43: ## %cond.load61
   6819 ; AVX512F-NEXT:    vpinsrw $5, 42(%rdi), %xmm5, %xmm6
   6820 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
   6821 ; AVX512F-NEXT:  LBB55_44: ## %else62
   6822 ; AVX512F-NEXT:    vpextrb $6, %xmm4, %eax
   6823 ; AVX512F-NEXT:    testb $1, %al
   6824 ; AVX512F-NEXT:    je LBB55_46
   6825 ; AVX512F-NEXT:  ## BB#45: ## %cond.load64
   6826 ; AVX512F-NEXT:    vpinsrw $6, 44(%rdi), %xmm5, %xmm6
   6827 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
   6828 ; AVX512F-NEXT:  LBB55_46: ## %else65
   6829 ; AVX512F-NEXT:    vpextrb $7, %xmm4, %eax
   6830 ; AVX512F-NEXT:    testb $1, %al
   6831 ; AVX512F-NEXT:    je LBB55_48
   6832 ; AVX512F-NEXT:  ## BB#47: ## %cond.load67
   6833 ; AVX512F-NEXT:    vpinsrw $7, 46(%rdi), %xmm5, %xmm6
   6834 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
   6835 ; AVX512F-NEXT:  LBB55_48: ## %else68
   6836 ; AVX512F-NEXT:    vpextrb $8, %xmm4, %eax
   6837 ; AVX512F-NEXT:    testb $1, %al
   6838 ; AVX512F-NEXT:    je LBB55_50
   6839 ; AVX512F-NEXT:  ## BB#49: ## %cond.load70
   6840 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm6
   6841 ; AVX512F-NEXT:    vpinsrw $0, 48(%rdi), %xmm6, %xmm6
   6842 ; AVX512F-NEXT:    vinserti128 $1, %xmm6, %ymm5, %ymm5
   6843 ; AVX512F-NEXT:  LBB55_50: ## %else71
   6844 ; AVX512F-NEXT:    vpextrb $9, %xmm4, %eax
   6845 ; AVX512F-NEXT:    testb $1, %al
   6846 ; AVX512F-NEXT:    je LBB55_52
   6847 ; AVX512F-NEXT:  ## BB#51: ## %cond.load73
   6848 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm6
   6849 ; AVX512F-NEXT:    vpinsrw $1, 50(%rdi), %xmm6, %xmm6
   6850 ; AVX512F-NEXT:    vinserti128 $1, %xmm6, %ymm5, %ymm5
   6851 ; AVX512F-NEXT:  LBB55_52: ## %else74
   6852 ; AVX512F-NEXT:    vpextrb $10, %xmm4, %eax
   6853 ; AVX512F-NEXT:    testb $1, %al
   6854 ; AVX512F-NEXT:    je LBB55_54
   6855 ; AVX512F-NEXT:  ## BB#53: ## %cond.load76
   6856 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm6
   6857 ; AVX512F-NEXT:    vpinsrw $2, 52(%rdi), %xmm6, %xmm6
   6858 ; AVX512F-NEXT:    vinserti128 $1, %xmm6, %ymm5, %ymm5
   6859 ; AVX512F-NEXT:  LBB55_54: ## %else77
   6860 ; AVX512F-NEXT:    vpextrb $11, %xmm4, %eax
   6861 ; AVX512F-NEXT:    testb $1, %al
   6862 ; AVX512F-NEXT:    je LBB55_56
   6863 ; AVX512F-NEXT:  ## BB#55: ## %cond.load79
   6864 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm6
   6865 ; AVX512F-NEXT:    vpinsrw $3, 54(%rdi), %xmm6, %xmm6
   6866 ; AVX512F-NEXT:    vinserti128 $1, %xmm6, %ymm5, %ymm5
   6867 ; AVX512F-NEXT:  LBB55_56: ## %else80
   6868 ; AVX512F-NEXT:    vpextrb $12, %xmm4, %eax
   6869 ; AVX512F-NEXT:    testb $1, %al
   6870 ; AVX512F-NEXT:    je LBB55_58
   6871 ; AVX512F-NEXT:  ## BB#57: ## %cond.load82
   6872 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm6
   6873 ; AVX512F-NEXT:    vpinsrw $4, 56(%rdi), %xmm6, %xmm6
   6874 ; AVX512F-NEXT:    vinserti128 $1, %xmm6, %ymm5, %ymm5
   6875 ; AVX512F-NEXT:  LBB55_58: ## %else83
   6876 ; AVX512F-NEXT:    vpextrb $13, %xmm4, %eax
   6877 ; AVX512F-NEXT:    testb $1, %al
   6878 ; AVX512F-NEXT:    je LBB55_60
   6879 ; AVX512F-NEXT:  ## BB#59: ## %cond.load85
   6880 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm6
   6881 ; AVX512F-NEXT:    vpinsrw $5, 58(%rdi), %xmm6, %xmm6
   6882 ; AVX512F-NEXT:    vinserti128 $1, %xmm6, %ymm5, %ymm5
   6883 ; AVX512F-NEXT:  LBB55_60: ## %else86
   6884 ; AVX512F-NEXT:    vpextrb $14, %xmm4, %eax
   6885 ; AVX512F-NEXT:    testb $1, %al
   6886 ; AVX512F-NEXT:    je LBB55_62
   6887 ; AVX512F-NEXT:  ## BB#61: ## %cond.load88
   6888 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm6
   6889 ; AVX512F-NEXT:    vpinsrw $6, 60(%rdi), %xmm6, %xmm6
   6890 ; AVX512F-NEXT:    vinserti128 $1, %xmm6, %ymm5, %ymm5
   6891 ; AVX512F-NEXT:  LBB55_62: ## %else89
   6892 ; AVX512F-NEXT:    vpextrb $15, %xmm4, %eax
   6893 ; AVX512F-NEXT:    testb $1, %al
   6894 ; AVX512F-NEXT:    je LBB55_64
   6895 ; AVX512F-NEXT:  ## BB#63: ## %cond.load91
   6896 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm6
   6897 ; AVX512F-NEXT:    vpinsrw $7, 62(%rdi), %xmm6, %xmm6
   6898 ; AVX512F-NEXT:    vinserti128 $1, %xmm6, %ymm5, %ymm5
   6899 ; AVX512F-NEXT:  LBB55_64: ## %else92
   6900 ; AVX512F-NEXT:    vpmovzxbw {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero
   6901 ; AVX512F-NEXT:    vpsllw $15, %ymm0, %ymm0
   6902 ; AVX512F-NEXT:    vpsraw $15, %ymm0, %ymm0
   6903 ; AVX512F-NEXT:    vpblendvb %ymm0, %ymm3, %ymm1, %ymm0
   6904 ; AVX512F-NEXT:    vpmovzxbw {{.*#+}} ymm1 = xmm4[0],zero,xmm4[1],zero,xmm4[2],zero,xmm4[3],zero,xmm4[4],zero,xmm4[5],zero,xmm4[6],zero,xmm4[7],zero,xmm4[8],zero,xmm4[9],zero,xmm4[10],zero,xmm4[11],zero,xmm4[12],zero,xmm4[13],zero,xmm4[14],zero,xmm4[15],zero
   6905 ; AVX512F-NEXT:    vpsllw $15, %ymm1, %ymm1
   6906 ; AVX512F-NEXT:    vpsraw $15, %ymm1, %ymm1
   6907 ; AVX512F-NEXT:    vpblendvb %ymm1, %ymm5, %ymm2, %ymm1
   6908 ; AVX512F-NEXT:    retq
   6909 ;
   6910 ; SKX-LABEL: test_mask_load_32xi16:
   6911 ; SKX:       ## BB#0:
   6912 ; SKX-NEXT:    vpsllw $7, %ymm0, %ymm0
   6913 ; SKX-NEXT:    vpmovb2m %ymm0, %k1
   6914 ; SKX-NEXT:    vmovdqu16 (%rdi), %zmm1 {%k1}
   6915 ; SKX-NEXT:    vmovaps %zmm1, %zmm0
   6916 ; SKX-NEXT:    retq
   6917   %res = call <32 x i16> @llvm.masked.load.v32i16.p0v32i16(<32 x i16>* %addr, i32 4, <32 x i1>%mask, <32 x i16> %val)
   6918   ret <32 x i16> %res
   6919 }
   6920 declare <32 x i16> @llvm.masked.load.v32i16.p0v32i16(<32 x i16>*, i32, <32 x i1>, <32 x i16>)
   6921 
   6922 define void @test_mask_store_16xi8(<16 x i1> %mask, <16 x i8>* %addr, <16 x i8> %val) {
   6923 ; AVX-LABEL: test_mask_store_16xi8:
   6924 ; AVX:       ## BB#0:
   6925 ; AVX-NEXT:    vpextrb $0, %xmm0, %eax
   6926 ; AVX-NEXT:    testb $1, %al
   6927 ; AVX-NEXT:    je LBB56_2
   6928 ; AVX-NEXT:  ## BB#1: ## %cond.store
   6929 ; AVX-NEXT:    vpextrb $0, %xmm1, (%rdi)
   6930 ; AVX-NEXT:  LBB56_2: ## %else
   6931 ; AVX-NEXT:    vpextrb $1, %xmm0, %eax
   6932 ; AVX-NEXT:    testb $1, %al
   6933 ; AVX-NEXT:    je LBB56_4
   6934 ; AVX-NEXT:  ## BB#3: ## %cond.store1
   6935 ; AVX-NEXT:    vpextrb $1, %xmm1, 1(%rdi)
   6936 ; AVX-NEXT:  LBB56_4: ## %else2
   6937 ; AVX-NEXT:    vpextrb $2, %xmm0, %eax
   6938 ; AVX-NEXT:    testb $1, %al
   6939 ; AVX-NEXT:    je LBB56_6
   6940 ; AVX-NEXT:  ## BB#5: ## %cond.store3
   6941 ; AVX-NEXT:    vpextrb $2, %xmm1, 2(%rdi)
   6942 ; AVX-NEXT:  LBB56_6: ## %else4
   6943 ; AVX-NEXT:    vpextrb $3, %xmm0, %eax
   6944 ; AVX-NEXT:    testb $1, %al
   6945 ; AVX-NEXT:    je LBB56_8
   6946 ; AVX-NEXT:  ## BB#7: ## %cond.store5
   6947 ; AVX-NEXT:    vpextrb $3, %xmm1, 3(%rdi)
   6948 ; AVX-NEXT:  LBB56_8: ## %else6
   6949 ; AVX-NEXT:    vpextrb $4, %xmm0, %eax
   6950 ; AVX-NEXT:    testb $1, %al
   6951 ; AVX-NEXT:    je LBB56_10
   6952 ; AVX-NEXT:  ## BB#9: ## %cond.store7
   6953 ; AVX-NEXT:    vpextrb $4, %xmm1, 4(%rdi)
   6954 ; AVX-NEXT:  LBB56_10: ## %else8
   6955 ; AVX-NEXT:    vpextrb $5, %xmm0, %eax
   6956 ; AVX-NEXT:    testb $1, %al
   6957 ; AVX-NEXT:    je LBB56_12
   6958 ; AVX-NEXT:  ## BB#11: ## %cond.store9
   6959 ; AVX-NEXT:    vpextrb $5, %xmm1, 5(%rdi)
   6960 ; AVX-NEXT:  LBB56_12: ## %else10
   6961 ; AVX-NEXT:    vpextrb $6, %xmm0, %eax
   6962 ; AVX-NEXT:    testb $1, %al
   6963 ; AVX-NEXT:    je LBB56_14
   6964 ; AVX-NEXT:  ## BB#13: ## %cond.store11
   6965 ; AVX-NEXT:    vpextrb $6, %xmm1, 6(%rdi)
   6966 ; AVX-NEXT:  LBB56_14: ## %else12
   6967 ; AVX-NEXT:    vpextrb $7, %xmm0, %eax
   6968 ; AVX-NEXT:    testb $1, %al
   6969 ; AVX-NEXT:    je LBB56_16
   6970 ; AVX-NEXT:  ## BB#15: ## %cond.store13
   6971 ; AVX-NEXT:    vpextrb $7, %xmm1, 7(%rdi)
   6972 ; AVX-NEXT:  LBB56_16: ## %else14
   6973 ; AVX-NEXT:    vpextrb $8, %xmm0, %eax
   6974 ; AVX-NEXT:    testb $1, %al
   6975 ; AVX-NEXT:    je LBB56_18
   6976 ; AVX-NEXT:  ## BB#17: ## %cond.store15
   6977 ; AVX-NEXT:    vpextrb $8, %xmm1, 8(%rdi)
   6978 ; AVX-NEXT:  LBB56_18: ## %else16
   6979 ; AVX-NEXT:    vpextrb $9, %xmm0, %eax
   6980 ; AVX-NEXT:    testb $1, %al
   6981 ; AVX-NEXT:    je LBB56_20
   6982 ; AVX-NEXT:  ## BB#19: ## %cond.store17
   6983 ; AVX-NEXT:    vpextrb $9, %xmm1, 9(%rdi)
   6984 ; AVX-NEXT:  LBB56_20: ## %else18
   6985 ; AVX-NEXT:    vpextrb $10, %xmm0, %eax
   6986 ; AVX-NEXT:    testb $1, %al
   6987 ; AVX-NEXT:    je LBB56_22
   6988 ; AVX-NEXT:  ## BB#21: ## %cond.store19
   6989 ; AVX-NEXT:    vpextrb $10, %xmm1, 10(%rdi)
   6990 ; AVX-NEXT:  LBB56_22: ## %else20
   6991 ; AVX-NEXT:    vpextrb $11, %xmm0, %eax
   6992 ; AVX-NEXT:    testb $1, %al
   6993 ; AVX-NEXT:    je LBB56_24
   6994 ; AVX-NEXT:  ## BB#23: ## %cond.store21
   6995 ; AVX-NEXT:    vpextrb $11, %xmm1, 11(%rdi)
   6996 ; AVX-NEXT:  LBB56_24: ## %else22
   6997 ; AVX-NEXT:    vpextrb $12, %xmm0, %eax
   6998 ; AVX-NEXT:    testb $1, %al
   6999 ; AVX-NEXT:    je LBB56_26
   7000 ; AVX-NEXT:  ## BB#25: ## %cond.store23
   7001 ; AVX-NEXT:    vpextrb $12, %xmm1, 12(%rdi)
   7002 ; AVX-NEXT:  LBB56_26: ## %else24
   7003 ; AVX-NEXT:    vpextrb $13, %xmm0, %eax
   7004 ; AVX-NEXT:    testb $1, %al
   7005 ; AVX-NEXT:    je LBB56_28
   7006 ; AVX-NEXT:  ## BB#27: ## %cond.store25
   7007 ; AVX-NEXT:    vpextrb $13, %xmm1, 13(%rdi)
   7008 ; AVX-NEXT:  LBB56_28: ## %else26
   7009 ; AVX-NEXT:    vpextrb $14, %xmm0, %eax
   7010 ; AVX-NEXT:    testb $1, %al
   7011 ; AVX-NEXT:    je LBB56_30
   7012 ; AVX-NEXT:  ## BB#29: ## %cond.store27
   7013 ; AVX-NEXT:    vpextrb $14, %xmm1, 14(%rdi)
   7014 ; AVX-NEXT:  LBB56_30: ## %else28
   7015 ; AVX-NEXT:    vpextrb $15, %xmm0, %eax
   7016 ; AVX-NEXT:    testb $1, %al
   7017 ; AVX-NEXT:    je LBB56_32
   7018 ; AVX-NEXT:  ## BB#31: ## %cond.store29
   7019 ; AVX-NEXT:    vpextrb $15, %xmm1, 15(%rdi)
   7020 ; AVX-NEXT:  LBB56_32: ## %else30
   7021 ; AVX-NEXT:    retq
   7022 ;
   7023 ; AVX512F-LABEL: test_mask_store_16xi8:
   7024 ; AVX512F:       ## BB#0:
   7025 ; AVX512F-NEXT:    vpmovsxbd %xmm0, %zmm0
   7026 ; AVX512F-NEXT:    vpslld $31, %zmm0, %zmm0
   7027 ; AVX512F-NEXT:    vptestmd %zmm0, %zmm0, %k0
   7028 ; AVX512F-NEXT:    kshiftlw $15, %k0, %k1
   7029 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   7030 ; AVX512F-NEXT:    kmovw %k1, %eax
   7031 ; AVX512F-NEXT:    testb %al, %al
   7032 ; AVX512F-NEXT:    je LBB56_2
   7033 ; AVX512F-NEXT:  ## BB#1: ## %cond.store
   7034 ; AVX512F-NEXT:    vpextrb $0, %xmm1, (%rdi)
   7035 ; AVX512F-NEXT:  LBB56_2: ## %else
   7036 ; AVX512F-NEXT:    kshiftlw $14, %k0, %k1
   7037 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   7038 ; AVX512F-NEXT:    kmovw %k1, %eax
   7039 ; AVX512F-NEXT:    testb %al, %al
   7040 ; AVX512F-NEXT:    je LBB56_4
   7041 ; AVX512F-NEXT:  ## BB#3: ## %cond.store1
   7042 ; AVX512F-NEXT:    vpextrb $1, %xmm1, 1(%rdi)
   7043 ; AVX512F-NEXT:  LBB56_4: ## %else2
   7044 ; AVX512F-NEXT:    kshiftlw $13, %k0, %k1
   7045 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   7046 ; AVX512F-NEXT:    kmovw %k1, %eax
   7047 ; AVX512F-NEXT:    testb %al, %al
   7048 ; AVX512F-NEXT:    je LBB56_6
   7049 ; AVX512F-NEXT:  ## BB#5: ## %cond.store3
   7050 ; AVX512F-NEXT:    vpextrb $2, %xmm1, 2(%rdi)
   7051 ; AVX512F-NEXT:  LBB56_6: ## %else4
   7052 ; AVX512F-NEXT:    kshiftlw $12, %k0, %k1
   7053 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   7054 ; AVX512F-NEXT:    kmovw %k1, %eax
   7055 ; AVX512F-NEXT:    testb %al, %al
   7056 ; AVX512F-NEXT:    je LBB56_8
   7057 ; AVX512F-NEXT:  ## BB#7: ## %cond.store5
   7058 ; AVX512F-NEXT:    vpextrb $3, %xmm1, 3(%rdi)
   7059 ; AVX512F-NEXT:  LBB56_8: ## %else6
   7060 ; AVX512F-NEXT:    kshiftlw $11, %k0, %k1
   7061 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   7062 ; AVX512F-NEXT:    kmovw %k1, %eax
   7063 ; AVX512F-NEXT:    testb %al, %al
   7064 ; AVX512F-NEXT:    je LBB56_10
   7065 ; AVX512F-NEXT:  ## BB#9: ## %cond.store7
   7066 ; AVX512F-NEXT:    vpextrb $4, %xmm1, 4(%rdi)
   7067 ; AVX512F-NEXT:  LBB56_10: ## %else8
   7068 ; AVX512F-NEXT:    kshiftlw $10, %k0, %k1
   7069 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   7070 ; AVX512F-NEXT:    kmovw %k1, %eax
   7071 ; AVX512F-NEXT:    testb %al, %al
   7072 ; AVX512F-NEXT:    je LBB56_12
   7073 ; AVX512F-NEXT:  ## BB#11: ## %cond.store9
   7074 ; AVX512F-NEXT:    vpextrb $5, %xmm1, 5(%rdi)
   7075 ; AVX512F-NEXT:  LBB56_12: ## %else10
   7076 ; AVX512F-NEXT:    kshiftlw $9, %k0, %k1
   7077 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   7078 ; AVX512F-NEXT:    kmovw %k1, %eax
   7079 ; AVX512F-NEXT:    testb %al, %al
   7080 ; AVX512F-NEXT:    je LBB56_14
   7081 ; AVX512F-NEXT:  ## BB#13: ## %cond.store11
   7082 ; AVX512F-NEXT:    vpextrb $6, %xmm1, 6(%rdi)
   7083 ; AVX512F-NEXT:  LBB56_14: ## %else12
   7084 ; AVX512F-NEXT:    kshiftlw $8, %k0, %k1
   7085 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   7086 ; AVX512F-NEXT:    kmovw %k1, %eax
   7087 ; AVX512F-NEXT:    testb %al, %al
   7088 ; AVX512F-NEXT:    je LBB56_16
   7089 ; AVX512F-NEXT:  ## BB#15: ## %cond.store13
   7090 ; AVX512F-NEXT:    vpextrb $7, %xmm1, 7(%rdi)
   7091 ; AVX512F-NEXT:  LBB56_16: ## %else14
   7092 ; AVX512F-NEXT:    kshiftlw $7, %k0, %k1
   7093 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   7094 ; AVX512F-NEXT:    kmovw %k1, %eax
   7095 ; AVX512F-NEXT:    testb %al, %al
   7096 ; AVX512F-NEXT:    je LBB56_18
   7097 ; AVX512F-NEXT:  ## BB#17: ## %cond.store15
   7098 ; AVX512F-NEXT:    vpextrb $8, %xmm1, 8(%rdi)
   7099 ; AVX512F-NEXT:  LBB56_18: ## %else16
   7100 ; AVX512F-NEXT:    kshiftlw $6, %k0, %k1
   7101 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   7102 ; AVX512F-NEXT:    kmovw %k1, %eax
   7103 ; AVX512F-NEXT:    testb %al, %al
   7104 ; AVX512F-NEXT:    je LBB56_20
   7105 ; AVX512F-NEXT:  ## BB#19: ## %cond.store17
   7106 ; AVX512F-NEXT:    vpextrb $9, %xmm1, 9(%rdi)
   7107 ; AVX512F-NEXT:  LBB56_20: ## %else18
   7108 ; AVX512F-NEXT:    kshiftlw $5, %k0, %k1
   7109 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   7110 ; AVX512F-NEXT:    kmovw %k1, %eax
   7111 ; AVX512F-NEXT:    testb %al, %al
   7112 ; AVX512F-NEXT:    je LBB56_22
   7113 ; AVX512F-NEXT:  ## BB#21: ## %cond.store19
   7114 ; AVX512F-NEXT:    vpextrb $10, %xmm1, 10(%rdi)
   7115 ; AVX512F-NEXT:  LBB56_22: ## %else20
   7116 ; AVX512F-NEXT:    kshiftlw $4, %k0, %k1
   7117 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   7118 ; AVX512F-NEXT:    kmovw %k1, %eax
   7119 ; AVX512F-NEXT:    testb %al, %al
   7120 ; AVX512F-NEXT:    je LBB56_24
   7121 ; AVX512F-NEXT:  ## BB#23: ## %cond.store21
   7122 ; AVX512F-NEXT:    vpextrb $11, %xmm1, 11(%rdi)
   7123 ; AVX512F-NEXT:  LBB56_24: ## %else22
   7124 ; AVX512F-NEXT:    kshiftlw $3, %k0, %k1
   7125 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   7126 ; AVX512F-NEXT:    kmovw %k1, %eax
   7127 ; AVX512F-NEXT:    testb %al, %al
   7128 ; AVX512F-NEXT:    je LBB56_26
   7129 ; AVX512F-NEXT:  ## BB#25: ## %cond.store23
   7130 ; AVX512F-NEXT:    vpextrb $12, %xmm1, 12(%rdi)
   7131 ; AVX512F-NEXT:  LBB56_26: ## %else24
   7132 ; AVX512F-NEXT:    kshiftlw $2, %k0, %k1
   7133 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   7134 ; AVX512F-NEXT:    kmovw %k1, %eax
   7135 ; AVX512F-NEXT:    testb %al, %al
   7136 ; AVX512F-NEXT:    je LBB56_28
   7137 ; AVX512F-NEXT:  ## BB#27: ## %cond.store25
   7138 ; AVX512F-NEXT:    vpextrb $13, %xmm1, 13(%rdi)
   7139 ; AVX512F-NEXT:  LBB56_28: ## %else26
   7140 ; AVX512F-NEXT:    kshiftlw $1, %k0, %k1
   7141 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   7142 ; AVX512F-NEXT:    kmovw %k1, %eax
   7143 ; AVX512F-NEXT:    testb %al, %al
   7144 ; AVX512F-NEXT:    je LBB56_30
   7145 ; AVX512F-NEXT:  ## BB#29: ## %cond.store27
   7146 ; AVX512F-NEXT:    vpextrb $14, %xmm1, 14(%rdi)
   7147 ; AVX512F-NEXT:  LBB56_30: ## %else28
   7148 ; AVX512F-NEXT:    kshiftlw $0, %k0, %k0
   7149 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   7150 ; AVX512F-NEXT:    kmovw %k0, %eax
   7151 ; AVX512F-NEXT:    testb %al, %al
   7152 ; AVX512F-NEXT:    je LBB56_32
   7153 ; AVX512F-NEXT:  ## BB#31: ## %cond.store29
   7154 ; AVX512F-NEXT:    vpextrb $15, %xmm1, 15(%rdi)
   7155 ; AVX512F-NEXT:  LBB56_32: ## %else30
   7156 ; AVX512F-NEXT:    retq
   7157 ;
   7158 ; SKX-LABEL: test_mask_store_16xi8:
   7159 ; SKX:       ## BB#0:
   7160 ; SKX-NEXT:    vpsllw $7, %xmm0, %xmm0
   7161 ; SKX-NEXT:    vpmovb2m %xmm0, %k1
   7162 ; SKX-NEXT:    vmovdqu8 %xmm1, (%rdi) {%k1}
   7163 ; SKX-NEXT:    retq
   7164   call void @llvm.masked.store.v16i8.p0v16i8(<16 x i8> %val, <16 x i8>* %addr, i32 4, <16 x i1>%mask)
   7165   ret void
   7166 }
   7167 declare void @llvm.masked.store.v16i8.p0v16i8(<16 x i8>, <16 x i8>*, i32, <16 x i1>)
   7168 
   7169 define void @test_mask_store_32xi8(<32 x i1> %mask, <32 x i8>* %addr, <32 x i8> %val) {
   7170 ; AVX1-LABEL: test_mask_store_32xi8:
   7171 ; AVX1:       ## BB#0:
   7172 ; AVX1-NEXT:    vpextrb $0, %xmm0, %eax
   7173 ; AVX1-NEXT:    testb $1, %al
   7174 ; AVX1-NEXT:    je LBB57_2
   7175 ; AVX1-NEXT:  ## BB#1: ## %cond.store
   7176 ; AVX1-NEXT:    vpextrb $0, %xmm1, (%rdi)
   7177 ; AVX1-NEXT:  LBB57_2: ## %else
   7178 ; AVX1-NEXT:    vpextrb $1, %xmm0, %eax
   7179 ; AVX1-NEXT:    testb $1, %al
   7180 ; AVX1-NEXT:    je LBB57_4
   7181 ; AVX1-NEXT:  ## BB#3: ## %cond.store1
   7182 ; AVX1-NEXT:    vpextrb $1, %xmm1, 1(%rdi)
   7183 ; AVX1-NEXT:  LBB57_4: ## %else2
   7184 ; AVX1-NEXT:    vpextrb $2, %xmm0, %eax
   7185 ; AVX1-NEXT:    testb $1, %al
   7186 ; AVX1-NEXT:    je LBB57_6
   7187 ; AVX1-NEXT:  ## BB#5: ## %cond.store3
   7188 ; AVX1-NEXT:    vpextrb $2, %xmm1, 2(%rdi)
   7189 ; AVX1-NEXT:  LBB57_6: ## %else4
   7190 ; AVX1-NEXT:    vpextrb $3, %xmm0, %eax
   7191 ; AVX1-NEXT:    testb $1, %al
   7192 ; AVX1-NEXT:    je LBB57_8
   7193 ; AVX1-NEXT:  ## BB#7: ## %cond.store5
   7194 ; AVX1-NEXT:    vpextrb $3, %xmm1, 3(%rdi)
   7195 ; AVX1-NEXT:  LBB57_8: ## %else6
   7196 ; AVX1-NEXT:    vpextrb $4, %xmm0, %eax
   7197 ; AVX1-NEXT:    testb $1, %al
   7198 ; AVX1-NEXT:    je LBB57_10
   7199 ; AVX1-NEXT:  ## BB#9: ## %cond.store7
   7200 ; AVX1-NEXT:    vpextrb $4, %xmm1, 4(%rdi)
   7201 ; AVX1-NEXT:  LBB57_10: ## %else8
   7202 ; AVX1-NEXT:    vpextrb $5, %xmm0, %eax
   7203 ; AVX1-NEXT:    testb $1, %al
   7204 ; AVX1-NEXT:    je LBB57_12
   7205 ; AVX1-NEXT:  ## BB#11: ## %cond.store9
   7206 ; AVX1-NEXT:    vpextrb $5, %xmm1, 5(%rdi)
   7207 ; AVX1-NEXT:  LBB57_12: ## %else10
   7208 ; AVX1-NEXT:    vpextrb $6, %xmm0, %eax
   7209 ; AVX1-NEXT:    testb $1, %al
   7210 ; AVX1-NEXT:    je LBB57_14
   7211 ; AVX1-NEXT:  ## BB#13: ## %cond.store11
   7212 ; AVX1-NEXT:    vpextrb $6, %xmm1, 6(%rdi)
   7213 ; AVX1-NEXT:  LBB57_14: ## %else12
   7214 ; AVX1-NEXT:    vpextrb $7, %xmm0, %eax
   7215 ; AVX1-NEXT:    testb $1, %al
   7216 ; AVX1-NEXT:    je LBB57_16
   7217 ; AVX1-NEXT:  ## BB#15: ## %cond.store13
   7218 ; AVX1-NEXT:    vpextrb $7, %xmm1, 7(%rdi)
   7219 ; AVX1-NEXT:  LBB57_16: ## %else14
   7220 ; AVX1-NEXT:    vpextrb $8, %xmm0, %eax
   7221 ; AVX1-NEXT:    testb $1, %al
   7222 ; AVX1-NEXT:    je LBB57_18
   7223 ; AVX1-NEXT:  ## BB#17: ## %cond.store15
   7224 ; AVX1-NEXT:    vpextrb $8, %xmm1, 8(%rdi)
   7225 ; AVX1-NEXT:  LBB57_18: ## %else16
   7226 ; AVX1-NEXT:    vpextrb $9, %xmm0, %eax
   7227 ; AVX1-NEXT:    testb $1, %al
   7228 ; AVX1-NEXT:    je LBB57_20
   7229 ; AVX1-NEXT:  ## BB#19: ## %cond.store17
   7230 ; AVX1-NEXT:    vpextrb $9, %xmm1, 9(%rdi)
   7231 ; AVX1-NEXT:  LBB57_20: ## %else18
   7232 ; AVX1-NEXT:    vpextrb $10, %xmm0, %eax
   7233 ; AVX1-NEXT:    testb $1, %al
   7234 ; AVX1-NEXT:    je LBB57_22
   7235 ; AVX1-NEXT:  ## BB#21: ## %cond.store19
   7236 ; AVX1-NEXT:    vpextrb $10, %xmm1, 10(%rdi)
   7237 ; AVX1-NEXT:  LBB57_22: ## %else20
   7238 ; AVX1-NEXT:    vpextrb $11, %xmm0, %eax
   7239 ; AVX1-NEXT:    testb $1, %al
   7240 ; AVX1-NEXT:    je LBB57_24
   7241 ; AVX1-NEXT:  ## BB#23: ## %cond.store21
   7242 ; AVX1-NEXT:    vpextrb $11, %xmm1, 11(%rdi)
   7243 ; AVX1-NEXT:  LBB57_24: ## %else22
   7244 ; AVX1-NEXT:    vpextrb $12, %xmm0, %eax
   7245 ; AVX1-NEXT:    testb $1, %al
   7246 ; AVX1-NEXT:    je LBB57_26
   7247 ; AVX1-NEXT:  ## BB#25: ## %cond.store23
   7248 ; AVX1-NEXT:    vpextrb $12, %xmm1, 12(%rdi)
   7249 ; AVX1-NEXT:  LBB57_26: ## %else24
   7250 ; AVX1-NEXT:    vpextrb $13, %xmm0, %eax
   7251 ; AVX1-NEXT:    testb $1, %al
   7252 ; AVX1-NEXT:    je LBB57_28
   7253 ; AVX1-NEXT:  ## BB#27: ## %cond.store25
   7254 ; AVX1-NEXT:    vpextrb $13, %xmm1, 13(%rdi)
   7255 ; AVX1-NEXT:  LBB57_28: ## %else26
   7256 ; AVX1-NEXT:    vpextrb $14, %xmm0, %eax
   7257 ; AVX1-NEXT:    testb $1, %al
   7258 ; AVX1-NEXT:    je LBB57_30
   7259 ; AVX1-NEXT:  ## BB#29: ## %cond.store27
   7260 ; AVX1-NEXT:    vpextrb $14, %xmm1, 14(%rdi)
   7261 ; AVX1-NEXT:  LBB57_30: ## %else28
   7262 ; AVX1-NEXT:    vpextrb $15, %xmm0, %eax
   7263 ; AVX1-NEXT:    testb $1, %al
   7264 ; AVX1-NEXT:    je LBB57_32
   7265 ; AVX1-NEXT:  ## BB#31: ## %cond.store29
   7266 ; AVX1-NEXT:    vpextrb $15, %xmm1, 15(%rdi)
   7267 ; AVX1-NEXT:  LBB57_32: ## %else30
   7268 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
   7269 ; AVX1-NEXT:    vpextrb $0, %xmm0, %eax
   7270 ; AVX1-NEXT:    testb $1, %al
   7271 ; AVX1-NEXT:    je LBB57_34
   7272 ; AVX1-NEXT:  ## BB#33: ## %cond.store31
   7273 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   7274 ; AVX1-NEXT:    vpextrb $0, %xmm2, 16(%rdi)
   7275 ; AVX1-NEXT:  LBB57_34: ## %else32
   7276 ; AVX1-NEXT:    vpextrb $1, %xmm0, %eax
   7277 ; AVX1-NEXT:    testb $1, %al
   7278 ; AVX1-NEXT:    je LBB57_36
   7279 ; AVX1-NEXT:  ## BB#35: ## %cond.store33
   7280 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   7281 ; AVX1-NEXT:    vpextrb $1, %xmm2, 17(%rdi)
   7282 ; AVX1-NEXT:  LBB57_36: ## %else34
   7283 ; AVX1-NEXT:    vpextrb $2, %xmm0, %eax
   7284 ; AVX1-NEXT:    testb $1, %al
   7285 ; AVX1-NEXT:    je LBB57_38
   7286 ; AVX1-NEXT:  ## BB#37: ## %cond.store35
   7287 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   7288 ; AVX1-NEXT:    vpextrb $2, %xmm2, 18(%rdi)
   7289 ; AVX1-NEXT:  LBB57_38: ## %else36
   7290 ; AVX1-NEXT:    vpextrb $3, %xmm0, %eax
   7291 ; AVX1-NEXT:    testb $1, %al
   7292 ; AVX1-NEXT:    je LBB57_40
   7293 ; AVX1-NEXT:  ## BB#39: ## %cond.store37
   7294 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   7295 ; AVX1-NEXT:    vpextrb $3, %xmm2, 19(%rdi)
   7296 ; AVX1-NEXT:  LBB57_40: ## %else38
   7297 ; AVX1-NEXT:    vpextrb $4, %xmm0, %eax
   7298 ; AVX1-NEXT:    testb $1, %al
   7299 ; AVX1-NEXT:    je LBB57_42
   7300 ; AVX1-NEXT:  ## BB#41: ## %cond.store39
   7301 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   7302 ; AVX1-NEXT:    vpextrb $4, %xmm2, 20(%rdi)
   7303 ; AVX1-NEXT:  LBB57_42: ## %else40
   7304 ; AVX1-NEXT:    vpextrb $5, %xmm0, %eax
   7305 ; AVX1-NEXT:    testb $1, %al
   7306 ; AVX1-NEXT:    je LBB57_44
   7307 ; AVX1-NEXT:  ## BB#43: ## %cond.store41
   7308 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   7309 ; AVX1-NEXT:    vpextrb $5, %xmm2, 21(%rdi)
   7310 ; AVX1-NEXT:  LBB57_44: ## %else42
   7311 ; AVX1-NEXT:    vpextrb $6, %xmm0, %eax
   7312 ; AVX1-NEXT:    testb $1, %al
   7313 ; AVX1-NEXT:    je LBB57_46
   7314 ; AVX1-NEXT:  ## BB#45: ## %cond.store43
   7315 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   7316 ; AVX1-NEXT:    vpextrb $6, %xmm2, 22(%rdi)
   7317 ; AVX1-NEXT:  LBB57_46: ## %else44
   7318 ; AVX1-NEXT:    vpextrb $7, %xmm0, %eax
   7319 ; AVX1-NEXT:    testb $1, %al
   7320 ; AVX1-NEXT:    je LBB57_48
   7321 ; AVX1-NEXT:  ## BB#47: ## %cond.store45
   7322 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   7323 ; AVX1-NEXT:    vpextrb $7, %xmm2, 23(%rdi)
   7324 ; AVX1-NEXT:  LBB57_48: ## %else46
   7325 ; AVX1-NEXT:    vpextrb $8, %xmm0, %eax
   7326 ; AVX1-NEXT:    testb $1, %al
   7327 ; AVX1-NEXT:    je LBB57_50
   7328 ; AVX1-NEXT:  ## BB#49: ## %cond.store47
   7329 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   7330 ; AVX1-NEXT:    vpextrb $8, %xmm2, 24(%rdi)
   7331 ; AVX1-NEXT:  LBB57_50: ## %else48
   7332 ; AVX1-NEXT:    vpextrb $9, %xmm0, %eax
   7333 ; AVX1-NEXT:    testb $1, %al
   7334 ; AVX1-NEXT:    je LBB57_52
   7335 ; AVX1-NEXT:  ## BB#51: ## %cond.store49
   7336 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   7337 ; AVX1-NEXT:    vpextrb $9, %xmm2, 25(%rdi)
   7338 ; AVX1-NEXT:  LBB57_52: ## %else50
   7339 ; AVX1-NEXT:    vpextrb $10, %xmm0, %eax
   7340 ; AVX1-NEXT:    testb $1, %al
   7341 ; AVX1-NEXT:    je LBB57_54
   7342 ; AVX1-NEXT:  ## BB#53: ## %cond.store51
   7343 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   7344 ; AVX1-NEXT:    vpextrb $10, %xmm2, 26(%rdi)
   7345 ; AVX1-NEXT:  LBB57_54: ## %else52
   7346 ; AVX1-NEXT:    vpextrb $11, %xmm0, %eax
   7347 ; AVX1-NEXT:    testb $1, %al
   7348 ; AVX1-NEXT:    je LBB57_56
   7349 ; AVX1-NEXT:  ## BB#55: ## %cond.store53
   7350 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   7351 ; AVX1-NEXT:    vpextrb $11, %xmm2, 27(%rdi)
   7352 ; AVX1-NEXT:  LBB57_56: ## %else54
   7353 ; AVX1-NEXT:    vpextrb $12, %xmm0, %eax
   7354 ; AVX1-NEXT:    testb $1, %al
   7355 ; AVX1-NEXT:    je LBB57_58
   7356 ; AVX1-NEXT:  ## BB#57: ## %cond.store55
   7357 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   7358 ; AVX1-NEXT:    vpextrb $12, %xmm2, 28(%rdi)
   7359 ; AVX1-NEXT:  LBB57_58: ## %else56
   7360 ; AVX1-NEXT:    vpextrb $13, %xmm0, %eax
   7361 ; AVX1-NEXT:    testb $1, %al
   7362 ; AVX1-NEXT:    je LBB57_60
   7363 ; AVX1-NEXT:  ## BB#59: ## %cond.store57
   7364 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   7365 ; AVX1-NEXT:    vpextrb $13, %xmm2, 29(%rdi)
   7366 ; AVX1-NEXT:  LBB57_60: ## %else58
   7367 ; AVX1-NEXT:    vpextrb $14, %xmm0, %eax
   7368 ; AVX1-NEXT:    testb $1, %al
   7369 ; AVX1-NEXT:    je LBB57_62
   7370 ; AVX1-NEXT:  ## BB#61: ## %cond.store59
   7371 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   7372 ; AVX1-NEXT:    vpextrb $14, %xmm2, 30(%rdi)
   7373 ; AVX1-NEXT:  LBB57_62: ## %else60
   7374 ; AVX1-NEXT:    vpextrb $15, %xmm0, %eax
   7375 ; AVX1-NEXT:    testb $1, %al
   7376 ; AVX1-NEXT:    je LBB57_64
   7377 ; AVX1-NEXT:  ## BB#63: ## %cond.store61
   7378 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm0
   7379 ; AVX1-NEXT:    vpextrb $15, %xmm0, 31(%rdi)
   7380 ; AVX1-NEXT:  LBB57_64: ## %else62
   7381 ; AVX1-NEXT:    vzeroupper
   7382 ; AVX1-NEXT:    retq
   7383 ;
   7384 ; AVX2-LABEL: test_mask_store_32xi8:
   7385 ; AVX2:       ## BB#0:
   7386 ; AVX2-NEXT:    vpextrb $0, %xmm0, %eax
   7387 ; AVX2-NEXT:    testb $1, %al
   7388 ; AVX2-NEXT:    je LBB57_2
   7389 ; AVX2-NEXT:  ## BB#1: ## %cond.store
   7390 ; AVX2-NEXT:    vpextrb $0, %xmm1, (%rdi)
   7391 ; AVX2-NEXT:  LBB57_2: ## %else
   7392 ; AVX2-NEXT:    vpextrb $1, %xmm0, %eax
   7393 ; AVX2-NEXT:    testb $1, %al
   7394 ; AVX2-NEXT:    je LBB57_4
   7395 ; AVX2-NEXT:  ## BB#3: ## %cond.store1
   7396 ; AVX2-NEXT:    vpextrb $1, %xmm1, 1(%rdi)
   7397 ; AVX2-NEXT:  LBB57_4: ## %else2
   7398 ; AVX2-NEXT:    vpextrb $2, %xmm0, %eax
   7399 ; AVX2-NEXT:    testb $1, %al
   7400 ; AVX2-NEXT:    je LBB57_6
   7401 ; AVX2-NEXT:  ## BB#5: ## %cond.store3
   7402 ; AVX2-NEXT:    vpextrb $2, %xmm1, 2(%rdi)
   7403 ; AVX2-NEXT:  LBB57_6: ## %else4
   7404 ; AVX2-NEXT:    vpextrb $3, %xmm0, %eax
   7405 ; AVX2-NEXT:    testb $1, %al
   7406 ; AVX2-NEXT:    je LBB57_8
   7407 ; AVX2-NEXT:  ## BB#7: ## %cond.store5
   7408 ; AVX2-NEXT:    vpextrb $3, %xmm1, 3(%rdi)
   7409 ; AVX2-NEXT:  LBB57_8: ## %else6
   7410 ; AVX2-NEXT:    vpextrb $4, %xmm0, %eax
   7411 ; AVX2-NEXT:    testb $1, %al
   7412 ; AVX2-NEXT:    je LBB57_10
   7413 ; AVX2-NEXT:  ## BB#9: ## %cond.store7
   7414 ; AVX2-NEXT:    vpextrb $4, %xmm1, 4(%rdi)
   7415 ; AVX2-NEXT:  LBB57_10: ## %else8
   7416 ; AVX2-NEXT:    vpextrb $5, %xmm0, %eax
   7417 ; AVX2-NEXT:    testb $1, %al
   7418 ; AVX2-NEXT:    je LBB57_12
   7419 ; AVX2-NEXT:  ## BB#11: ## %cond.store9
   7420 ; AVX2-NEXT:    vpextrb $5, %xmm1, 5(%rdi)
   7421 ; AVX2-NEXT:  LBB57_12: ## %else10
   7422 ; AVX2-NEXT:    vpextrb $6, %xmm0, %eax
   7423 ; AVX2-NEXT:    testb $1, %al
   7424 ; AVX2-NEXT:    je LBB57_14
   7425 ; AVX2-NEXT:  ## BB#13: ## %cond.store11
   7426 ; AVX2-NEXT:    vpextrb $6, %xmm1, 6(%rdi)
   7427 ; AVX2-NEXT:  LBB57_14: ## %else12
   7428 ; AVX2-NEXT:    vpextrb $7, %xmm0, %eax
   7429 ; AVX2-NEXT:    testb $1, %al
   7430 ; AVX2-NEXT:    je LBB57_16
   7431 ; AVX2-NEXT:  ## BB#15: ## %cond.store13
   7432 ; AVX2-NEXT:    vpextrb $7, %xmm1, 7(%rdi)
   7433 ; AVX2-NEXT:  LBB57_16: ## %else14
   7434 ; AVX2-NEXT:    vpextrb $8, %xmm0, %eax
   7435 ; AVX2-NEXT:    testb $1, %al
   7436 ; AVX2-NEXT:    je LBB57_18
   7437 ; AVX2-NEXT:  ## BB#17: ## %cond.store15
   7438 ; AVX2-NEXT:    vpextrb $8, %xmm1, 8(%rdi)
   7439 ; AVX2-NEXT:  LBB57_18: ## %else16
   7440 ; AVX2-NEXT:    vpextrb $9, %xmm0, %eax
   7441 ; AVX2-NEXT:    testb $1, %al
   7442 ; AVX2-NEXT:    je LBB57_20
   7443 ; AVX2-NEXT:  ## BB#19: ## %cond.store17
   7444 ; AVX2-NEXT:    vpextrb $9, %xmm1, 9(%rdi)
   7445 ; AVX2-NEXT:  LBB57_20: ## %else18
   7446 ; AVX2-NEXT:    vpextrb $10, %xmm0, %eax
   7447 ; AVX2-NEXT:    testb $1, %al
   7448 ; AVX2-NEXT:    je LBB57_22
   7449 ; AVX2-NEXT:  ## BB#21: ## %cond.store19
   7450 ; AVX2-NEXT:    vpextrb $10, %xmm1, 10(%rdi)
   7451 ; AVX2-NEXT:  LBB57_22: ## %else20
   7452 ; AVX2-NEXT:    vpextrb $11, %xmm0, %eax
   7453 ; AVX2-NEXT:    testb $1, %al
   7454 ; AVX2-NEXT:    je LBB57_24
   7455 ; AVX2-NEXT:  ## BB#23: ## %cond.store21
   7456 ; AVX2-NEXT:    vpextrb $11, %xmm1, 11(%rdi)
   7457 ; AVX2-NEXT:  LBB57_24: ## %else22
   7458 ; AVX2-NEXT:    vpextrb $12, %xmm0, %eax
   7459 ; AVX2-NEXT:    testb $1, %al
   7460 ; AVX2-NEXT:    je LBB57_26
   7461 ; AVX2-NEXT:  ## BB#25: ## %cond.store23
   7462 ; AVX2-NEXT:    vpextrb $12, %xmm1, 12(%rdi)
   7463 ; AVX2-NEXT:  LBB57_26: ## %else24
   7464 ; AVX2-NEXT:    vpextrb $13, %xmm0, %eax
   7465 ; AVX2-NEXT:    testb $1, %al
   7466 ; AVX2-NEXT:    je LBB57_28
   7467 ; AVX2-NEXT:  ## BB#27: ## %cond.store25
   7468 ; AVX2-NEXT:    vpextrb $13, %xmm1, 13(%rdi)
   7469 ; AVX2-NEXT:  LBB57_28: ## %else26
   7470 ; AVX2-NEXT:    vpextrb $14, %xmm0, %eax
   7471 ; AVX2-NEXT:    testb $1, %al
   7472 ; AVX2-NEXT:    je LBB57_30
   7473 ; AVX2-NEXT:  ## BB#29: ## %cond.store27
   7474 ; AVX2-NEXT:    vpextrb $14, %xmm1, 14(%rdi)
   7475 ; AVX2-NEXT:  LBB57_30: ## %else28
   7476 ; AVX2-NEXT:    vpextrb $15, %xmm0, %eax
   7477 ; AVX2-NEXT:    testb $1, %al
   7478 ; AVX2-NEXT:    je LBB57_32
   7479 ; AVX2-NEXT:  ## BB#31: ## %cond.store29
   7480 ; AVX2-NEXT:    vpextrb $15, %xmm1, 15(%rdi)
   7481 ; AVX2-NEXT:  LBB57_32: ## %else30
   7482 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm0
   7483 ; AVX2-NEXT:    vpextrb $0, %xmm0, %eax
   7484 ; AVX2-NEXT:    testb $1, %al
   7485 ; AVX2-NEXT:    je LBB57_34
   7486 ; AVX2-NEXT:  ## BB#33: ## %cond.store31
   7487 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7488 ; AVX2-NEXT:    vpextrb $0, %xmm2, 16(%rdi)
   7489 ; AVX2-NEXT:  LBB57_34: ## %else32
   7490 ; AVX2-NEXT:    vpextrb $1, %xmm0, %eax
   7491 ; AVX2-NEXT:    testb $1, %al
   7492 ; AVX2-NEXT:    je LBB57_36
   7493 ; AVX2-NEXT:  ## BB#35: ## %cond.store33
   7494 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7495 ; AVX2-NEXT:    vpextrb $1, %xmm2, 17(%rdi)
   7496 ; AVX2-NEXT:  LBB57_36: ## %else34
   7497 ; AVX2-NEXT:    vpextrb $2, %xmm0, %eax
   7498 ; AVX2-NEXT:    testb $1, %al
   7499 ; AVX2-NEXT:    je LBB57_38
   7500 ; AVX2-NEXT:  ## BB#37: ## %cond.store35
   7501 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7502 ; AVX2-NEXT:    vpextrb $2, %xmm2, 18(%rdi)
   7503 ; AVX2-NEXT:  LBB57_38: ## %else36
   7504 ; AVX2-NEXT:    vpextrb $3, %xmm0, %eax
   7505 ; AVX2-NEXT:    testb $1, %al
   7506 ; AVX2-NEXT:    je LBB57_40
   7507 ; AVX2-NEXT:  ## BB#39: ## %cond.store37
   7508 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7509 ; AVX2-NEXT:    vpextrb $3, %xmm2, 19(%rdi)
   7510 ; AVX2-NEXT:  LBB57_40: ## %else38
   7511 ; AVX2-NEXT:    vpextrb $4, %xmm0, %eax
   7512 ; AVX2-NEXT:    testb $1, %al
   7513 ; AVX2-NEXT:    je LBB57_42
   7514 ; AVX2-NEXT:  ## BB#41: ## %cond.store39
   7515 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7516 ; AVX2-NEXT:    vpextrb $4, %xmm2, 20(%rdi)
   7517 ; AVX2-NEXT:  LBB57_42: ## %else40
   7518 ; AVX2-NEXT:    vpextrb $5, %xmm0, %eax
   7519 ; AVX2-NEXT:    testb $1, %al
   7520 ; AVX2-NEXT:    je LBB57_44
   7521 ; AVX2-NEXT:  ## BB#43: ## %cond.store41
   7522 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7523 ; AVX2-NEXT:    vpextrb $5, %xmm2, 21(%rdi)
   7524 ; AVX2-NEXT:  LBB57_44: ## %else42
   7525 ; AVX2-NEXT:    vpextrb $6, %xmm0, %eax
   7526 ; AVX2-NEXT:    testb $1, %al
   7527 ; AVX2-NEXT:    je LBB57_46
   7528 ; AVX2-NEXT:  ## BB#45: ## %cond.store43
   7529 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7530 ; AVX2-NEXT:    vpextrb $6, %xmm2, 22(%rdi)
   7531 ; AVX2-NEXT:  LBB57_46: ## %else44
   7532 ; AVX2-NEXT:    vpextrb $7, %xmm0, %eax
   7533 ; AVX2-NEXT:    testb $1, %al
   7534 ; AVX2-NEXT:    je LBB57_48
   7535 ; AVX2-NEXT:  ## BB#47: ## %cond.store45
   7536 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7537 ; AVX2-NEXT:    vpextrb $7, %xmm2, 23(%rdi)
   7538 ; AVX2-NEXT:  LBB57_48: ## %else46
   7539 ; AVX2-NEXT:    vpextrb $8, %xmm0, %eax
   7540 ; AVX2-NEXT:    testb $1, %al
   7541 ; AVX2-NEXT:    je LBB57_50
   7542 ; AVX2-NEXT:  ## BB#49: ## %cond.store47
   7543 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7544 ; AVX2-NEXT:    vpextrb $8, %xmm2, 24(%rdi)
   7545 ; AVX2-NEXT:  LBB57_50: ## %else48
   7546 ; AVX2-NEXT:    vpextrb $9, %xmm0, %eax
   7547 ; AVX2-NEXT:    testb $1, %al
   7548 ; AVX2-NEXT:    je LBB57_52
   7549 ; AVX2-NEXT:  ## BB#51: ## %cond.store49
   7550 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7551 ; AVX2-NEXT:    vpextrb $9, %xmm2, 25(%rdi)
   7552 ; AVX2-NEXT:  LBB57_52: ## %else50
   7553 ; AVX2-NEXT:    vpextrb $10, %xmm0, %eax
   7554 ; AVX2-NEXT:    testb $1, %al
   7555 ; AVX2-NEXT:    je LBB57_54
   7556 ; AVX2-NEXT:  ## BB#53: ## %cond.store51
   7557 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7558 ; AVX2-NEXT:    vpextrb $10, %xmm2, 26(%rdi)
   7559 ; AVX2-NEXT:  LBB57_54: ## %else52
   7560 ; AVX2-NEXT:    vpextrb $11, %xmm0, %eax
   7561 ; AVX2-NEXT:    testb $1, %al
   7562 ; AVX2-NEXT:    je LBB57_56
   7563 ; AVX2-NEXT:  ## BB#55: ## %cond.store53
   7564 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7565 ; AVX2-NEXT:    vpextrb $11, %xmm2, 27(%rdi)
   7566 ; AVX2-NEXT:  LBB57_56: ## %else54
   7567 ; AVX2-NEXT:    vpextrb $12, %xmm0, %eax
   7568 ; AVX2-NEXT:    testb $1, %al
   7569 ; AVX2-NEXT:    je LBB57_58
   7570 ; AVX2-NEXT:  ## BB#57: ## %cond.store55
   7571 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7572 ; AVX2-NEXT:    vpextrb $12, %xmm2, 28(%rdi)
   7573 ; AVX2-NEXT:  LBB57_58: ## %else56
   7574 ; AVX2-NEXT:    vpextrb $13, %xmm0, %eax
   7575 ; AVX2-NEXT:    testb $1, %al
   7576 ; AVX2-NEXT:    je LBB57_60
   7577 ; AVX2-NEXT:  ## BB#59: ## %cond.store57
   7578 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7579 ; AVX2-NEXT:    vpextrb $13, %xmm2, 29(%rdi)
   7580 ; AVX2-NEXT:  LBB57_60: ## %else58
   7581 ; AVX2-NEXT:    vpextrb $14, %xmm0, %eax
   7582 ; AVX2-NEXT:    testb $1, %al
   7583 ; AVX2-NEXT:    je LBB57_62
   7584 ; AVX2-NEXT:  ## BB#61: ## %cond.store59
   7585 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7586 ; AVX2-NEXT:    vpextrb $14, %xmm2, 30(%rdi)
   7587 ; AVX2-NEXT:  LBB57_62: ## %else60
   7588 ; AVX2-NEXT:    vpextrb $15, %xmm0, %eax
   7589 ; AVX2-NEXT:    testb $1, %al
   7590 ; AVX2-NEXT:    je LBB57_64
   7591 ; AVX2-NEXT:  ## BB#63: ## %cond.store61
   7592 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm0
   7593 ; AVX2-NEXT:    vpextrb $15, %xmm0, 31(%rdi)
   7594 ; AVX2-NEXT:  LBB57_64: ## %else62
   7595 ; AVX2-NEXT:    vzeroupper
   7596 ; AVX2-NEXT:    retq
   7597 ;
   7598 ; AVX512F-LABEL: test_mask_store_32xi8:
   7599 ; AVX512F:       ## BB#0:
   7600 ; AVX512F-NEXT:    vpextrb $0, %xmm0, %eax
   7601 ; AVX512F-NEXT:    testb $1, %al
   7602 ; AVX512F-NEXT:    je LBB57_2
   7603 ; AVX512F-NEXT:  ## BB#1: ## %cond.store
   7604 ; AVX512F-NEXT:    vpextrb $0, %xmm1, (%rdi)
   7605 ; AVX512F-NEXT:  LBB57_2: ## %else
   7606 ; AVX512F-NEXT:    vpextrb $1, %xmm0, %eax
   7607 ; AVX512F-NEXT:    testb $1, %al
   7608 ; AVX512F-NEXT:    je LBB57_4
   7609 ; AVX512F-NEXT:  ## BB#3: ## %cond.store1
   7610 ; AVX512F-NEXT:    vpextrb $1, %xmm1, 1(%rdi)
   7611 ; AVX512F-NEXT:  LBB57_4: ## %else2
   7612 ; AVX512F-NEXT:    vpextrb $2, %xmm0, %eax
   7613 ; AVX512F-NEXT:    testb $1, %al
   7614 ; AVX512F-NEXT:    je LBB57_6
   7615 ; AVX512F-NEXT:  ## BB#5: ## %cond.store3
   7616 ; AVX512F-NEXT:    vpextrb $2, %xmm1, 2(%rdi)
   7617 ; AVX512F-NEXT:  LBB57_6: ## %else4
   7618 ; AVX512F-NEXT:    vpextrb $3, %xmm0, %eax
   7619 ; AVX512F-NEXT:    testb $1, %al
   7620 ; AVX512F-NEXT:    je LBB57_8
   7621 ; AVX512F-NEXT:  ## BB#7: ## %cond.store5
   7622 ; AVX512F-NEXT:    vpextrb $3, %xmm1, 3(%rdi)
   7623 ; AVX512F-NEXT:  LBB57_8: ## %else6
   7624 ; AVX512F-NEXT:    vpextrb $4, %xmm0, %eax
   7625 ; AVX512F-NEXT:    testb $1, %al
   7626 ; AVX512F-NEXT:    je LBB57_10
   7627 ; AVX512F-NEXT:  ## BB#9: ## %cond.store7
   7628 ; AVX512F-NEXT:    vpextrb $4, %xmm1, 4(%rdi)
   7629 ; AVX512F-NEXT:  LBB57_10: ## %else8
   7630 ; AVX512F-NEXT:    vpextrb $5, %xmm0, %eax
   7631 ; AVX512F-NEXT:    testb $1, %al
   7632 ; AVX512F-NEXT:    je LBB57_12
   7633 ; AVX512F-NEXT:  ## BB#11: ## %cond.store9
   7634 ; AVX512F-NEXT:    vpextrb $5, %xmm1, 5(%rdi)
   7635 ; AVX512F-NEXT:  LBB57_12: ## %else10
   7636 ; AVX512F-NEXT:    vpextrb $6, %xmm0, %eax
   7637 ; AVX512F-NEXT:    testb $1, %al
   7638 ; AVX512F-NEXT:    je LBB57_14
   7639 ; AVX512F-NEXT:  ## BB#13: ## %cond.store11
   7640 ; AVX512F-NEXT:    vpextrb $6, %xmm1, 6(%rdi)
   7641 ; AVX512F-NEXT:  LBB57_14: ## %else12
   7642 ; AVX512F-NEXT:    vpextrb $7, %xmm0, %eax
   7643 ; AVX512F-NEXT:    testb $1, %al
   7644 ; AVX512F-NEXT:    je LBB57_16
   7645 ; AVX512F-NEXT:  ## BB#15: ## %cond.store13
   7646 ; AVX512F-NEXT:    vpextrb $7, %xmm1, 7(%rdi)
   7647 ; AVX512F-NEXT:  LBB57_16: ## %else14
   7648 ; AVX512F-NEXT:    vpextrb $8, %xmm0, %eax
   7649 ; AVX512F-NEXT:    testb $1, %al
   7650 ; AVX512F-NEXT:    je LBB57_18
   7651 ; AVX512F-NEXT:  ## BB#17: ## %cond.store15
   7652 ; AVX512F-NEXT:    vpextrb $8, %xmm1, 8(%rdi)
   7653 ; AVX512F-NEXT:  LBB57_18: ## %else16
   7654 ; AVX512F-NEXT:    vpextrb $9, %xmm0, %eax
   7655 ; AVX512F-NEXT:    testb $1, %al
   7656 ; AVX512F-NEXT:    je LBB57_20
   7657 ; AVX512F-NEXT:  ## BB#19: ## %cond.store17
   7658 ; AVX512F-NEXT:    vpextrb $9, %xmm1, 9(%rdi)
   7659 ; AVX512F-NEXT:  LBB57_20: ## %else18
   7660 ; AVX512F-NEXT:    vpextrb $10, %xmm0, %eax
   7661 ; AVX512F-NEXT:    testb $1, %al
   7662 ; AVX512F-NEXT:    je LBB57_22
   7663 ; AVX512F-NEXT:  ## BB#21: ## %cond.store19
   7664 ; AVX512F-NEXT:    vpextrb $10, %xmm1, 10(%rdi)
   7665 ; AVX512F-NEXT:  LBB57_22: ## %else20
   7666 ; AVX512F-NEXT:    vpextrb $11, %xmm0, %eax
   7667 ; AVX512F-NEXT:    testb $1, %al
   7668 ; AVX512F-NEXT:    je LBB57_24
   7669 ; AVX512F-NEXT:  ## BB#23: ## %cond.store21
   7670 ; AVX512F-NEXT:    vpextrb $11, %xmm1, 11(%rdi)
   7671 ; AVX512F-NEXT:  LBB57_24: ## %else22
   7672 ; AVX512F-NEXT:    vpextrb $12, %xmm0, %eax
   7673 ; AVX512F-NEXT:    testb $1, %al
   7674 ; AVX512F-NEXT:    je LBB57_26
   7675 ; AVX512F-NEXT:  ## BB#25: ## %cond.store23
   7676 ; AVX512F-NEXT:    vpextrb $12, %xmm1, 12(%rdi)
   7677 ; AVX512F-NEXT:  LBB57_26: ## %else24
   7678 ; AVX512F-NEXT:    vpextrb $13, %xmm0, %eax
   7679 ; AVX512F-NEXT:    testb $1, %al
   7680 ; AVX512F-NEXT:    je LBB57_28
   7681 ; AVX512F-NEXT:  ## BB#27: ## %cond.store25
   7682 ; AVX512F-NEXT:    vpextrb $13, %xmm1, 13(%rdi)
   7683 ; AVX512F-NEXT:  LBB57_28: ## %else26
   7684 ; AVX512F-NEXT:    vpextrb $14, %xmm0, %eax
   7685 ; AVX512F-NEXT:    testb $1, %al
   7686 ; AVX512F-NEXT:    je LBB57_30
   7687 ; AVX512F-NEXT:  ## BB#29: ## %cond.store27
   7688 ; AVX512F-NEXT:    vpextrb $14, %xmm1, 14(%rdi)
   7689 ; AVX512F-NEXT:  LBB57_30: ## %else28
   7690 ; AVX512F-NEXT:    vpextrb $15, %xmm0, %eax
   7691 ; AVX512F-NEXT:    testb $1, %al
   7692 ; AVX512F-NEXT:    je LBB57_32
   7693 ; AVX512F-NEXT:  ## BB#31: ## %cond.store29
   7694 ; AVX512F-NEXT:    vpextrb $15, %xmm1, 15(%rdi)
   7695 ; AVX512F-NEXT:  LBB57_32: ## %else30
   7696 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm0
   7697 ; AVX512F-NEXT:    vpextrb $0, %xmm0, %eax
   7698 ; AVX512F-NEXT:    testb $1, %al
   7699 ; AVX512F-NEXT:    je LBB57_34
   7700 ; AVX512F-NEXT:  ## BB#33: ## %cond.store31
   7701 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7702 ; AVX512F-NEXT:    vpextrb $0, %xmm2, 16(%rdi)
   7703 ; AVX512F-NEXT:  LBB57_34: ## %else32
   7704 ; AVX512F-NEXT:    vpextrb $1, %xmm0, %eax
   7705 ; AVX512F-NEXT:    testb $1, %al
   7706 ; AVX512F-NEXT:    je LBB57_36
   7707 ; AVX512F-NEXT:  ## BB#35: ## %cond.store33
   7708 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7709 ; AVX512F-NEXT:    vpextrb $1, %xmm2, 17(%rdi)
   7710 ; AVX512F-NEXT:  LBB57_36: ## %else34
   7711 ; AVX512F-NEXT:    vpextrb $2, %xmm0, %eax
   7712 ; AVX512F-NEXT:    testb $1, %al
   7713 ; AVX512F-NEXT:    je LBB57_38
   7714 ; AVX512F-NEXT:  ## BB#37: ## %cond.store35
   7715 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7716 ; AVX512F-NEXT:    vpextrb $2, %xmm2, 18(%rdi)
   7717 ; AVX512F-NEXT:  LBB57_38: ## %else36
   7718 ; AVX512F-NEXT:    vpextrb $3, %xmm0, %eax
   7719 ; AVX512F-NEXT:    testb $1, %al
   7720 ; AVX512F-NEXT:    je LBB57_40
   7721 ; AVX512F-NEXT:  ## BB#39: ## %cond.store37
   7722 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7723 ; AVX512F-NEXT:    vpextrb $3, %xmm2, 19(%rdi)
   7724 ; AVX512F-NEXT:  LBB57_40: ## %else38
   7725 ; AVX512F-NEXT:    vpextrb $4, %xmm0, %eax
   7726 ; AVX512F-NEXT:    testb $1, %al
   7727 ; AVX512F-NEXT:    je LBB57_42
   7728 ; AVX512F-NEXT:  ## BB#41: ## %cond.store39
   7729 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7730 ; AVX512F-NEXT:    vpextrb $4, %xmm2, 20(%rdi)
   7731 ; AVX512F-NEXT:  LBB57_42: ## %else40
   7732 ; AVX512F-NEXT:    vpextrb $5, %xmm0, %eax
   7733 ; AVX512F-NEXT:    testb $1, %al
   7734 ; AVX512F-NEXT:    je LBB57_44
   7735 ; AVX512F-NEXT:  ## BB#43: ## %cond.store41
   7736 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7737 ; AVX512F-NEXT:    vpextrb $5, %xmm2, 21(%rdi)
   7738 ; AVX512F-NEXT:  LBB57_44: ## %else42
   7739 ; AVX512F-NEXT:    vpextrb $6, %xmm0, %eax
   7740 ; AVX512F-NEXT:    testb $1, %al
   7741 ; AVX512F-NEXT:    je LBB57_46
   7742 ; AVX512F-NEXT:  ## BB#45: ## %cond.store43
   7743 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7744 ; AVX512F-NEXT:    vpextrb $6, %xmm2, 22(%rdi)
   7745 ; AVX512F-NEXT:  LBB57_46: ## %else44
   7746 ; AVX512F-NEXT:    vpextrb $7, %xmm0, %eax
   7747 ; AVX512F-NEXT:    testb $1, %al
   7748 ; AVX512F-NEXT:    je LBB57_48
   7749 ; AVX512F-NEXT:  ## BB#47: ## %cond.store45
   7750 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7751 ; AVX512F-NEXT:    vpextrb $7, %xmm2, 23(%rdi)
   7752 ; AVX512F-NEXT:  LBB57_48: ## %else46
   7753 ; AVX512F-NEXT:    vpextrb $8, %xmm0, %eax
   7754 ; AVX512F-NEXT:    testb $1, %al
   7755 ; AVX512F-NEXT:    je LBB57_50
   7756 ; AVX512F-NEXT:  ## BB#49: ## %cond.store47
   7757 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7758 ; AVX512F-NEXT:    vpextrb $8, %xmm2, 24(%rdi)
   7759 ; AVX512F-NEXT:  LBB57_50: ## %else48
   7760 ; AVX512F-NEXT:    vpextrb $9, %xmm0, %eax
   7761 ; AVX512F-NEXT:    testb $1, %al
   7762 ; AVX512F-NEXT:    je LBB57_52
   7763 ; AVX512F-NEXT:  ## BB#51: ## %cond.store49
   7764 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7765 ; AVX512F-NEXT:    vpextrb $9, %xmm2, 25(%rdi)
   7766 ; AVX512F-NEXT:  LBB57_52: ## %else50
   7767 ; AVX512F-NEXT:    vpextrb $10, %xmm0, %eax
   7768 ; AVX512F-NEXT:    testb $1, %al
   7769 ; AVX512F-NEXT:    je LBB57_54
   7770 ; AVX512F-NEXT:  ## BB#53: ## %cond.store51
   7771 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7772 ; AVX512F-NEXT:    vpextrb $10, %xmm2, 26(%rdi)
   7773 ; AVX512F-NEXT:  LBB57_54: ## %else52
   7774 ; AVX512F-NEXT:    vpextrb $11, %xmm0, %eax
   7775 ; AVX512F-NEXT:    testb $1, %al
   7776 ; AVX512F-NEXT:    je LBB57_56
   7777 ; AVX512F-NEXT:  ## BB#55: ## %cond.store53
   7778 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7779 ; AVX512F-NEXT:    vpextrb $11, %xmm2, 27(%rdi)
   7780 ; AVX512F-NEXT:  LBB57_56: ## %else54
   7781 ; AVX512F-NEXT:    vpextrb $12, %xmm0, %eax
   7782 ; AVX512F-NEXT:    testb $1, %al
   7783 ; AVX512F-NEXT:    je LBB57_58
   7784 ; AVX512F-NEXT:  ## BB#57: ## %cond.store55
   7785 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7786 ; AVX512F-NEXT:    vpextrb $12, %xmm2, 28(%rdi)
   7787 ; AVX512F-NEXT:  LBB57_58: ## %else56
   7788 ; AVX512F-NEXT:    vpextrb $13, %xmm0, %eax
   7789 ; AVX512F-NEXT:    testb $1, %al
   7790 ; AVX512F-NEXT:    je LBB57_60
   7791 ; AVX512F-NEXT:  ## BB#59: ## %cond.store57
   7792 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7793 ; AVX512F-NEXT:    vpextrb $13, %xmm2, 29(%rdi)
   7794 ; AVX512F-NEXT:  LBB57_60: ## %else58
   7795 ; AVX512F-NEXT:    vpextrb $14, %xmm0, %eax
   7796 ; AVX512F-NEXT:    testb $1, %al
   7797 ; AVX512F-NEXT:    je LBB57_62
   7798 ; AVX512F-NEXT:  ## BB#61: ## %cond.store59
   7799 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm2
   7800 ; AVX512F-NEXT:    vpextrb $14, %xmm2, 30(%rdi)
   7801 ; AVX512F-NEXT:  LBB57_62: ## %else60
   7802 ; AVX512F-NEXT:    vpextrb $15, %xmm0, %eax
   7803 ; AVX512F-NEXT:    testb $1, %al
   7804 ; AVX512F-NEXT:    je LBB57_64
   7805 ; AVX512F-NEXT:  ## BB#63: ## %cond.store61
   7806 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm0
   7807 ; AVX512F-NEXT:    vpextrb $15, %xmm0, 31(%rdi)
   7808 ; AVX512F-NEXT:  LBB57_64: ## %else62
   7809 ; AVX512F-NEXT:    retq
   7810 ;
   7811 ; SKX-LABEL: test_mask_store_32xi8:
   7812 ; SKX:       ## BB#0:
   7813 ; SKX-NEXT:    vpsllw $7, %ymm0, %ymm0
   7814 ; SKX-NEXT:    vpmovb2m %ymm0, %k1
   7815 ; SKX-NEXT:    vmovdqu8 %ymm1, (%rdi) {%k1}
   7816 ; SKX-NEXT:    retq
   7817   call void @llvm.masked.store.v32i8.p0v32i8(<32 x i8> %val, <32 x i8>* %addr, i32 4, <32 x i1>%mask)
   7818   ret void
   7819 }
   7820 declare void @llvm.masked.store.v32i8.p0v32i8(<32 x i8>, <32 x i8>*, i32, <32 x i1>)
   7821 
   7822 define void @test_mask_store_64xi8(<64 x i1> %mask, <64 x i8>* %addr, <64 x i8> %val) {
   7823 ; AVX1-LABEL: test_mask_store_64xi8:
   7824 ; AVX1:       ## BB#0:
   7825 ; AVX1-NEXT:    movq {{[0-9]+}}(%rsp), %rax
   7826 ; AVX1-NEXT:    testb $1, %dil
   7827 ; AVX1-NEXT:    je LBB58_2
   7828 ; AVX1-NEXT:  ## BB#1: ## %cond.store
   7829 ; AVX1-NEXT:    vpextrb $0, %xmm0, (%rax)
   7830 ; AVX1-NEXT:  LBB58_2: ## %else
   7831 ; AVX1-NEXT:    testb $1, %sil
   7832 ; AVX1-NEXT:    je LBB58_4
   7833 ; AVX1-NEXT:  ## BB#3: ## %cond.store1
   7834 ; AVX1-NEXT:    vpextrb $1, %xmm0, 1(%rax)
   7835 ; AVX1-NEXT:  LBB58_4: ## %else2
   7836 ; AVX1-NEXT:    testb $1, %dl
   7837 ; AVX1-NEXT:    je LBB58_6
   7838 ; AVX1-NEXT:  ## BB#5: ## %cond.store3
   7839 ; AVX1-NEXT:    vpextrb $2, %xmm0, 2(%rax)
   7840 ; AVX1-NEXT:  LBB58_6: ## %else4
   7841 ; AVX1-NEXT:    testb $1, %cl
   7842 ; AVX1-NEXT:    je LBB58_8
   7843 ; AVX1-NEXT:  ## BB#7: ## %cond.store5
   7844 ; AVX1-NEXT:    vpextrb $3, %xmm0, 3(%rax)
   7845 ; AVX1-NEXT:  LBB58_8: ## %else6
   7846 ; AVX1-NEXT:    testb $1, %r8b
   7847 ; AVX1-NEXT:    je LBB58_10
   7848 ; AVX1-NEXT:  ## BB#9: ## %cond.store7
   7849 ; AVX1-NEXT:    vpextrb $4, %xmm0, 4(%rax)
   7850 ; AVX1-NEXT:  LBB58_10: ## %else8
   7851 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   7852 ; AVX1-NEXT:    testb $1, %r9b
   7853 ; AVX1-NEXT:    je LBB58_12
   7854 ; AVX1-NEXT:  ## BB#11: ## %cond.store9
   7855 ; AVX1-NEXT:    vpextrb $5, %xmm0, 5(%rax)
   7856 ; AVX1-NEXT:  LBB58_12: ## %else10
   7857 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   7858 ; AVX1-NEXT:    testb $1, %cl
   7859 ; AVX1-NEXT:    je LBB58_14
   7860 ; AVX1-NEXT:  ## BB#13: ## %cond.store11
   7861 ; AVX1-NEXT:    vpextrb $6, %xmm0, 6(%rax)
   7862 ; AVX1-NEXT:  LBB58_14: ## %else12
   7863 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   7864 ; AVX1-NEXT:    testb $1, %dl
   7865 ; AVX1-NEXT:    je LBB58_16
   7866 ; AVX1-NEXT:  ## BB#15: ## %cond.store13
   7867 ; AVX1-NEXT:    vpextrb $7, %xmm0, 7(%rax)
   7868 ; AVX1-NEXT:  LBB58_16: ## %else14
   7869 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   7870 ; AVX1-NEXT:    testb $1, %cl
   7871 ; AVX1-NEXT:    je LBB58_18
   7872 ; AVX1-NEXT:  ## BB#17: ## %cond.store15
   7873 ; AVX1-NEXT:    vpextrb $8, %xmm0, 8(%rax)
   7874 ; AVX1-NEXT:  LBB58_18: ## %else16
   7875 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   7876 ; AVX1-NEXT:    testb $1, %dl
   7877 ; AVX1-NEXT:    je LBB58_20
   7878 ; AVX1-NEXT:  ## BB#19: ## %cond.store17
   7879 ; AVX1-NEXT:    vpextrb $9, %xmm0, 9(%rax)
   7880 ; AVX1-NEXT:  LBB58_20: ## %else18
   7881 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   7882 ; AVX1-NEXT:    testb $1, %cl
   7883 ; AVX1-NEXT:    je LBB58_22
   7884 ; AVX1-NEXT:  ## BB#21: ## %cond.store19
   7885 ; AVX1-NEXT:    vpextrb $10, %xmm0, 10(%rax)
   7886 ; AVX1-NEXT:  LBB58_22: ## %else20
   7887 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   7888 ; AVX1-NEXT:    testb $1, %dl
   7889 ; AVX1-NEXT:    je LBB58_24
   7890 ; AVX1-NEXT:  ## BB#23: ## %cond.store21
   7891 ; AVX1-NEXT:    vpextrb $11, %xmm0, 11(%rax)
   7892 ; AVX1-NEXT:  LBB58_24: ## %else22
   7893 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   7894 ; AVX1-NEXT:    testb $1, %cl
   7895 ; AVX1-NEXT:    je LBB58_26
   7896 ; AVX1-NEXT:  ## BB#25: ## %cond.store23
   7897 ; AVX1-NEXT:    vpextrb $12, %xmm0, 12(%rax)
   7898 ; AVX1-NEXT:  LBB58_26: ## %else24
   7899 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   7900 ; AVX1-NEXT:    testb $1, %dl
   7901 ; AVX1-NEXT:    je LBB58_28
   7902 ; AVX1-NEXT:  ## BB#27: ## %cond.store25
   7903 ; AVX1-NEXT:    vpextrb $13, %xmm0, 13(%rax)
   7904 ; AVX1-NEXT:  LBB58_28: ## %else26
   7905 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   7906 ; AVX1-NEXT:    testb $1, %cl
   7907 ; AVX1-NEXT:    je LBB58_30
   7908 ; AVX1-NEXT:  ## BB#29: ## %cond.store27
   7909 ; AVX1-NEXT:    vpextrb $14, %xmm0, 14(%rax)
   7910 ; AVX1-NEXT:  LBB58_30: ## %else28
   7911 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   7912 ; AVX1-NEXT:    testb $1, %dl
   7913 ; AVX1-NEXT:    je LBB58_32
   7914 ; AVX1-NEXT:  ## BB#31: ## %cond.store29
   7915 ; AVX1-NEXT:    vpextrb $15, %xmm0, 15(%rax)
   7916 ; AVX1-NEXT:  LBB58_32: ## %else30
   7917 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   7918 ; AVX1-NEXT:    testb $1, %cl
   7919 ; AVX1-NEXT:    je LBB58_34
   7920 ; AVX1-NEXT:  ## BB#33: ## %cond.store31
   7921 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
   7922 ; AVX1-NEXT:    vpextrb $0, %xmm2, 16(%rax)
   7923 ; AVX1-NEXT:  LBB58_34: ## %else32
   7924 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   7925 ; AVX1-NEXT:    testb $1, %dl
   7926 ; AVX1-NEXT:    je LBB58_36
   7927 ; AVX1-NEXT:  ## BB#35: ## %cond.store33
   7928 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
   7929 ; AVX1-NEXT:    vpextrb $1, %xmm2, 17(%rax)
   7930 ; AVX1-NEXT:  LBB58_36: ## %else34
   7931 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   7932 ; AVX1-NEXT:    testb $1, %cl
   7933 ; AVX1-NEXT:    je LBB58_38
   7934 ; AVX1-NEXT:  ## BB#37: ## %cond.store35
   7935 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
   7936 ; AVX1-NEXT:    vpextrb $2, %xmm2, 18(%rax)
   7937 ; AVX1-NEXT:  LBB58_38: ## %else36
   7938 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   7939 ; AVX1-NEXT:    testb $1, %dl
   7940 ; AVX1-NEXT:    je LBB58_40
   7941 ; AVX1-NEXT:  ## BB#39: ## %cond.store37
   7942 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
   7943 ; AVX1-NEXT:    vpextrb $3, %xmm2, 19(%rax)
   7944 ; AVX1-NEXT:  LBB58_40: ## %else38
   7945 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   7946 ; AVX1-NEXT:    testb $1, %cl
   7947 ; AVX1-NEXT:    je LBB58_42
   7948 ; AVX1-NEXT:  ## BB#41: ## %cond.store39
   7949 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
   7950 ; AVX1-NEXT:    vpextrb $4, %xmm2, 20(%rax)
   7951 ; AVX1-NEXT:  LBB58_42: ## %else40
   7952 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   7953 ; AVX1-NEXT:    testb $1, %dl
   7954 ; AVX1-NEXT:    je LBB58_44
   7955 ; AVX1-NEXT:  ## BB#43: ## %cond.store41
   7956 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
   7957 ; AVX1-NEXT:    vpextrb $5, %xmm2, 21(%rax)
   7958 ; AVX1-NEXT:  LBB58_44: ## %else42
   7959 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   7960 ; AVX1-NEXT:    testb $1, %cl
   7961 ; AVX1-NEXT:    je LBB58_46
   7962 ; AVX1-NEXT:  ## BB#45: ## %cond.store43
   7963 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
   7964 ; AVX1-NEXT:    vpextrb $6, %xmm2, 22(%rax)
   7965 ; AVX1-NEXT:  LBB58_46: ## %else44
   7966 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   7967 ; AVX1-NEXT:    testb $1, %dl
   7968 ; AVX1-NEXT:    je LBB58_48
   7969 ; AVX1-NEXT:  ## BB#47: ## %cond.store45
   7970 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
   7971 ; AVX1-NEXT:    vpextrb $7, %xmm2, 23(%rax)
   7972 ; AVX1-NEXT:  LBB58_48: ## %else46
   7973 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   7974 ; AVX1-NEXT:    testb $1, %cl
   7975 ; AVX1-NEXT:    je LBB58_50
   7976 ; AVX1-NEXT:  ## BB#49: ## %cond.store47
   7977 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
   7978 ; AVX1-NEXT:    vpextrb $8, %xmm2, 24(%rax)
   7979 ; AVX1-NEXT:  LBB58_50: ## %else48
   7980 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   7981 ; AVX1-NEXT:    testb $1, %dl
   7982 ; AVX1-NEXT:    je LBB58_52
   7983 ; AVX1-NEXT:  ## BB#51: ## %cond.store49
   7984 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
   7985 ; AVX1-NEXT:    vpextrb $9, %xmm2, 25(%rax)
   7986 ; AVX1-NEXT:  LBB58_52: ## %else50
   7987 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   7988 ; AVX1-NEXT:    testb $1, %cl
   7989 ; AVX1-NEXT:    je LBB58_54
   7990 ; AVX1-NEXT:  ## BB#53: ## %cond.store51
   7991 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
   7992 ; AVX1-NEXT:    vpextrb $10, %xmm2, 26(%rax)
   7993 ; AVX1-NEXT:  LBB58_54: ## %else52
   7994 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   7995 ; AVX1-NEXT:    testb $1, %dl
   7996 ; AVX1-NEXT:    je LBB58_56
   7997 ; AVX1-NEXT:  ## BB#55: ## %cond.store53
   7998 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
   7999 ; AVX1-NEXT:    vpextrb $11, %xmm2, 27(%rax)
   8000 ; AVX1-NEXT:  LBB58_56: ## %else54
   8001 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8002 ; AVX1-NEXT:    testb $1, %cl
   8003 ; AVX1-NEXT:    je LBB58_58
   8004 ; AVX1-NEXT:  ## BB#57: ## %cond.store55
   8005 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
   8006 ; AVX1-NEXT:    vpextrb $12, %xmm2, 28(%rax)
   8007 ; AVX1-NEXT:  LBB58_58: ## %else56
   8008 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8009 ; AVX1-NEXT:    testb $1, %dl
   8010 ; AVX1-NEXT:    je LBB58_60
   8011 ; AVX1-NEXT:  ## BB#59: ## %cond.store57
   8012 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
   8013 ; AVX1-NEXT:    vpextrb $13, %xmm2, 29(%rax)
   8014 ; AVX1-NEXT:  LBB58_60: ## %else58
   8015 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8016 ; AVX1-NEXT:    testb $1, %cl
   8017 ; AVX1-NEXT:    je LBB58_62
   8018 ; AVX1-NEXT:  ## BB#61: ## %cond.store59
   8019 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
   8020 ; AVX1-NEXT:    vpextrb $14, %xmm2, 30(%rax)
   8021 ; AVX1-NEXT:  LBB58_62: ## %else60
   8022 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8023 ; AVX1-NEXT:    testb $1, %dl
   8024 ; AVX1-NEXT:    je LBB58_64
   8025 ; AVX1-NEXT:  ## BB#63: ## %cond.store61
   8026 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
   8027 ; AVX1-NEXT:    vpextrb $15, %xmm0, 31(%rax)
   8028 ; AVX1-NEXT:  LBB58_64: ## %else62
   8029 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8030 ; AVX1-NEXT:    testb $1, %cl
   8031 ; AVX1-NEXT:    je LBB58_66
   8032 ; AVX1-NEXT:  ## BB#65: ## %cond.store63
   8033 ; AVX1-NEXT:    vpextrb $0, %xmm1, 32(%rax)
   8034 ; AVX1-NEXT:  LBB58_66: ## %else64
   8035 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8036 ; AVX1-NEXT:    testb $1, %dl
   8037 ; AVX1-NEXT:    je LBB58_68
   8038 ; AVX1-NEXT:  ## BB#67: ## %cond.store65
   8039 ; AVX1-NEXT:    vpextrb $1, %xmm1, 33(%rax)
   8040 ; AVX1-NEXT:  LBB58_68: ## %else66
   8041 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8042 ; AVX1-NEXT:    testb $1, %cl
   8043 ; AVX1-NEXT:    je LBB58_70
   8044 ; AVX1-NEXT:  ## BB#69: ## %cond.store67
   8045 ; AVX1-NEXT:    vpextrb $2, %xmm1, 34(%rax)
   8046 ; AVX1-NEXT:  LBB58_70: ## %else68
   8047 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8048 ; AVX1-NEXT:    testb $1, %dl
   8049 ; AVX1-NEXT:    je LBB58_72
   8050 ; AVX1-NEXT:  ## BB#71: ## %cond.store69
   8051 ; AVX1-NEXT:    vpextrb $3, %xmm1, 35(%rax)
   8052 ; AVX1-NEXT:  LBB58_72: ## %else70
   8053 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8054 ; AVX1-NEXT:    testb $1, %cl
   8055 ; AVX1-NEXT:    je LBB58_74
   8056 ; AVX1-NEXT:  ## BB#73: ## %cond.store71
   8057 ; AVX1-NEXT:    vpextrb $4, %xmm1, 36(%rax)
   8058 ; AVX1-NEXT:  LBB58_74: ## %else72
   8059 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8060 ; AVX1-NEXT:    testb $1, %dl
   8061 ; AVX1-NEXT:    je LBB58_76
   8062 ; AVX1-NEXT:  ## BB#75: ## %cond.store73
   8063 ; AVX1-NEXT:    vpextrb $5, %xmm1, 37(%rax)
   8064 ; AVX1-NEXT:  LBB58_76: ## %else74
   8065 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8066 ; AVX1-NEXT:    testb $1, %cl
   8067 ; AVX1-NEXT:    je LBB58_78
   8068 ; AVX1-NEXT:  ## BB#77: ## %cond.store75
   8069 ; AVX1-NEXT:    vpextrb $6, %xmm1, 38(%rax)
   8070 ; AVX1-NEXT:  LBB58_78: ## %else76
   8071 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8072 ; AVX1-NEXT:    testb $1, %dl
   8073 ; AVX1-NEXT:    je LBB58_80
   8074 ; AVX1-NEXT:  ## BB#79: ## %cond.store77
   8075 ; AVX1-NEXT:    vpextrb $7, %xmm1, 39(%rax)
   8076 ; AVX1-NEXT:  LBB58_80: ## %else78
   8077 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8078 ; AVX1-NEXT:    testb $1, %cl
   8079 ; AVX1-NEXT:    je LBB58_82
   8080 ; AVX1-NEXT:  ## BB#81: ## %cond.store79
   8081 ; AVX1-NEXT:    vpextrb $8, %xmm1, 40(%rax)
   8082 ; AVX1-NEXT:  LBB58_82: ## %else80
   8083 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8084 ; AVX1-NEXT:    testb $1, %dl
   8085 ; AVX1-NEXT:    je LBB58_84
   8086 ; AVX1-NEXT:  ## BB#83: ## %cond.store81
   8087 ; AVX1-NEXT:    vpextrb $9, %xmm1, 41(%rax)
   8088 ; AVX1-NEXT:  LBB58_84: ## %else82
   8089 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8090 ; AVX1-NEXT:    testb $1, %cl
   8091 ; AVX1-NEXT:    je LBB58_86
   8092 ; AVX1-NEXT:  ## BB#85: ## %cond.store83
   8093 ; AVX1-NEXT:    vpextrb $10, %xmm1, 42(%rax)
   8094 ; AVX1-NEXT:  LBB58_86: ## %else84
   8095 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8096 ; AVX1-NEXT:    testb $1, %dl
   8097 ; AVX1-NEXT:    je LBB58_88
   8098 ; AVX1-NEXT:  ## BB#87: ## %cond.store85
   8099 ; AVX1-NEXT:    vpextrb $11, %xmm1, 43(%rax)
   8100 ; AVX1-NEXT:  LBB58_88: ## %else86
   8101 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8102 ; AVX1-NEXT:    testb $1, %cl
   8103 ; AVX1-NEXT:    je LBB58_90
   8104 ; AVX1-NEXT:  ## BB#89: ## %cond.store87
   8105 ; AVX1-NEXT:    vpextrb $12, %xmm1, 44(%rax)
   8106 ; AVX1-NEXT:  LBB58_90: ## %else88
   8107 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8108 ; AVX1-NEXT:    testb $1, %dl
   8109 ; AVX1-NEXT:    je LBB58_92
   8110 ; AVX1-NEXT:  ## BB#91: ## %cond.store89
   8111 ; AVX1-NEXT:    vpextrb $13, %xmm1, 45(%rax)
   8112 ; AVX1-NEXT:  LBB58_92: ## %else90
   8113 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8114 ; AVX1-NEXT:    testb $1, %cl
   8115 ; AVX1-NEXT:    je LBB58_94
   8116 ; AVX1-NEXT:  ## BB#93: ## %cond.store91
   8117 ; AVX1-NEXT:    vpextrb $14, %xmm1, 46(%rax)
   8118 ; AVX1-NEXT:  LBB58_94: ## %else92
   8119 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8120 ; AVX1-NEXT:    testb $1, %dl
   8121 ; AVX1-NEXT:    je LBB58_96
   8122 ; AVX1-NEXT:  ## BB#95: ## %cond.store93
   8123 ; AVX1-NEXT:    vpextrb $15, %xmm1, 47(%rax)
   8124 ; AVX1-NEXT:  LBB58_96: ## %else94
   8125 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8126 ; AVX1-NEXT:    testb $1, %cl
   8127 ; AVX1-NEXT:    je LBB58_98
   8128 ; AVX1-NEXT:  ## BB#97: ## %cond.store95
   8129 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm0
   8130 ; AVX1-NEXT:    vpextrb $0, %xmm0, 48(%rax)
   8131 ; AVX1-NEXT:  LBB58_98: ## %else96
   8132 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8133 ; AVX1-NEXT:    testb $1, %dl
   8134 ; AVX1-NEXT:    je LBB58_100
   8135 ; AVX1-NEXT:  ## BB#99: ## %cond.store97
   8136 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm0
   8137 ; AVX1-NEXT:    vpextrb $1, %xmm0, 49(%rax)
   8138 ; AVX1-NEXT:  LBB58_100: ## %else98
   8139 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8140 ; AVX1-NEXT:    testb $1, %cl
   8141 ; AVX1-NEXT:    je LBB58_102
   8142 ; AVX1-NEXT:  ## BB#101: ## %cond.store99
   8143 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm0
   8144 ; AVX1-NEXT:    vpextrb $2, %xmm0, 50(%rax)
   8145 ; AVX1-NEXT:  LBB58_102: ## %else100
   8146 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8147 ; AVX1-NEXT:    testb $1, %dl
   8148 ; AVX1-NEXT:    je LBB58_104
   8149 ; AVX1-NEXT:  ## BB#103: ## %cond.store101
   8150 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm0
   8151 ; AVX1-NEXT:    vpextrb $3, %xmm0, 51(%rax)
   8152 ; AVX1-NEXT:  LBB58_104: ## %else102
   8153 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8154 ; AVX1-NEXT:    testb $1, %cl
   8155 ; AVX1-NEXT:    je LBB58_106
   8156 ; AVX1-NEXT:  ## BB#105: ## %cond.store103
   8157 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm0
   8158 ; AVX1-NEXT:    vpextrb $4, %xmm0, 52(%rax)
   8159 ; AVX1-NEXT:  LBB58_106: ## %else104
   8160 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8161 ; AVX1-NEXT:    testb $1, %dl
   8162 ; AVX1-NEXT:    je LBB58_108
   8163 ; AVX1-NEXT:  ## BB#107: ## %cond.store105
   8164 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm0
   8165 ; AVX1-NEXT:    vpextrb $5, %xmm0, 53(%rax)
   8166 ; AVX1-NEXT:  LBB58_108: ## %else106
   8167 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8168 ; AVX1-NEXT:    testb $1, %cl
   8169 ; AVX1-NEXT:    je LBB58_110
   8170 ; AVX1-NEXT:  ## BB#109: ## %cond.store107
   8171 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm0
   8172 ; AVX1-NEXT:    vpextrb $6, %xmm0, 54(%rax)
   8173 ; AVX1-NEXT:  LBB58_110: ## %else108
   8174 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8175 ; AVX1-NEXT:    testb $1, %dl
   8176 ; AVX1-NEXT:    je LBB58_112
   8177 ; AVX1-NEXT:  ## BB#111: ## %cond.store109
   8178 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm0
   8179 ; AVX1-NEXT:    vpextrb $7, %xmm0, 55(%rax)
   8180 ; AVX1-NEXT:  LBB58_112: ## %else110
   8181 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8182 ; AVX1-NEXT:    testb $1, %cl
   8183 ; AVX1-NEXT:    je LBB58_114
   8184 ; AVX1-NEXT:  ## BB#113: ## %cond.store111
   8185 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm0
   8186 ; AVX1-NEXT:    vpextrb $8, %xmm0, 56(%rax)
   8187 ; AVX1-NEXT:  LBB58_114: ## %else112
   8188 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8189 ; AVX1-NEXT:    testb $1, %dl
   8190 ; AVX1-NEXT:    je LBB58_116
   8191 ; AVX1-NEXT:  ## BB#115: ## %cond.store113
   8192 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm0
   8193 ; AVX1-NEXT:    vpextrb $9, %xmm0, 57(%rax)
   8194 ; AVX1-NEXT:  LBB58_116: ## %else114
   8195 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8196 ; AVX1-NEXT:    testb $1, %cl
   8197 ; AVX1-NEXT:    je LBB58_118
   8198 ; AVX1-NEXT:  ## BB#117: ## %cond.store115
   8199 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm0
   8200 ; AVX1-NEXT:    vpextrb $10, %xmm0, 58(%rax)
   8201 ; AVX1-NEXT:  LBB58_118: ## %else116
   8202 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8203 ; AVX1-NEXT:    testb $1, %dl
   8204 ; AVX1-NEXT:    je LBB58_120
   8205 ; AVX1-NEXT:  ## BB#119: ## %cond.store117
   8206 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm0
   8207 ; AVX1-NEXT:    vpextrb $11, %xmm0, 59(%rax)
   8208 ; AVX1-NEXT:  LBB58_120: ## %else118
   8209 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8210 ; AVX1-NEXT:    testb $1, %cl
   8211 ; AVX1-NEXT:    je LBB58_122
   8212 ; AVX1-NEXT:  ## BB#121: ## %cond.store119
   8213 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm0
   8214 ; AVX1-NEXT:    vpextrb $12, %xmm0, 60(%rax)
   8215 ; AVX1-NEXT:  LBB58_122: ## %else120
   8216 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8217 ; AVX1-NEXT:    testb $1, %dl
   8218 ; AVX1-NEXT:    je LBB58_124
   8219 ; AVX1-NEXT:  ## BB#123: ## %cond.store121
   8220 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm0
   8221 ; AVX1-NEXT:    vpextrb $13, %xmm0, 61(%rax)
   8222 ; AVX1-NEXT:  LBB58_124: ## %else122
   8223 ; AVX1-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8224 ; AVX1-NEXT:    testb $1, %cl
   8225 ; AVX1-NEXT:    je LBB58_126
   8226 ; AVX1-NEXT:  ## BB#125: ## %cond.store123
   8227 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm0
   8228 ; AVX1-NEXT:    vpextrb $14, %xmm0, 62(%rax)
   8229 ; AVX1-NEXT:  LBB58_126: ## %else124
   8230 ; AVX1-NEXT:    testb $1, %dl
   8231 ; AVX1-NEXT:    je LBB58_128
   8232 ; AVX1-NEXT:  ## BB#127: ## %cond.store125
   8233 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm0
   8234 ; AVX1-NEXT:    vpextrb $15, %xmm0, 63(%rax)
   8235 ; AVX1-NEXT:  LBB58_128: ## %else126
   8236 ; AVX1-NEXT:    vzeroupper
   8237 ; AVX1-NEXT:    retq
   8238 ;
   8239 ; AVX2-LABEL: test_mask_store_64xi8:
   8240 ; AVX2:       ## BB#0:
   8241 ; AVX2-NEXT:    movq {{[0-9]+}}(%rsp), %rax
   8242 ; AVX2-NEXT:    testb $1, %dil
   8243 ; AVX2-NEXT:    je LBB58_2
   8244 ; AVX2-NEXT:  ## BB#1: ## %cond.store
   8245 ; AVX2-NEXT:    vpextrb $0, %xmm0, (%rax)
   8246 ; AVX2-NEXT:  LBB58_2: ## %else
   8247 ; AVX2-NEXT:    testb $1, %sil
   8248 ; AVX2-NEXT:    je LBB58_4
   8249 ; AVX2-NEXT:  ## BB#3: ## %cond.store1
   8250 ; AVX2-NEXT:    vpextrb $1, %xmm0, 1(%rax)
   8251 ; AVX2-NEXT:  LBB58_4: ## %else2
   8252 ; AVX2-NEXT:    testb $1, %dl
   8253 ; AVX2-NEXT:    je LBB58_6
   8254 ; AVX2-NEXT:  ## BB#5: ## %cond.store3
   8255 ; AVX2-NEXT:    vpextrb $2, %xmm0, 2(%rax)
   8256 ; AVX2-NEXT:  LBB58_6: ## %else4
   8257 ; AVX2-NEXT:    testb $1, %cl
   8258 ; AVX2-NEXT:    je LBB58_8
   8259 ; AVX2-NEXT:  ## BB#7: ## %cond.store5
   8260 ; AVX2-NEXT:    vpextrb $3, %xmm0, 3(%rax)
   8261 ; AVX2-NEXT:  LBB58_8: ## %else6
   8262 ; AVX2-NEXT:    testb $1, %r8b
   8263 ; AVX2-NEXT:    je LBB58_10
   8264 ; AVX2-NEXT:  ## BB#9: ## %cond.store7
   8265 ; AVX2-NEXT:    vpextrb $4, %xmm0, 4(%rax)
   8266 ; AVX2-NEXT:  LBB58_10: ## %else8
   8267 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8268 ; AVX2-NEXT:    testb $1, %r9b
   8269 ; AVX2-NEXT:    je LBB58_12
   8270 ; AVX2-NEXT:  ## BB#11: ## %cond.store9
   8271 ; AVX2-NEXT:    vpextrb $5, %xmm0, 5(%rax)
   8272 ; AVX2-NEXT:  LBB58_12: ## %else10
   8273 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8274 ; AVX2-NEXT:    testb $1, %cl
   8275 ; AVX2-NEXT:    je LBB58_14
   8276 ; AVX2-NEXT:  ## BB#13: ## %cond.store11
   8277 ; AVX2-NEXT:    vpextrb $6, %xmm0, 6(%rax)
   8278 ; AVX2-NEXT:  LBB58_14: ## %else12
   8279 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8280 ; AVX2-NEXT:    testb $1, %dl
   8281 ; AVX2-NEXT:    je LBB58_16
   8282 ; AVX2-NEXT:  ## BB#15: ## %cond.store13
   8283 ; AVX2-NEXT:    vpextrb $7, %xmm0, 7(%rax)
   8284 ; AVX2-NEXT:  LBB58_16: ## %else14
   8285 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8286 ; AVX2-NEXT:    testb $1, %cl
   8287 ; AVX2-NEXT:    je LBB58_18
   8288 ; AVX2-NEXT:  ## BB#17: ## %cond.store15
   8289 ; AVX2-NEXT:    vpextrb $8, %xmm0, 8(%rax)
   8290 ; AVX2-NEXT:  LBB58_18: ## %else16
   8291 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8292 ; AVX2-NEXT:    testb $1, %dl
   8293 ; AVX2-NEXT:    je LBB58_20
   8294 ; AVX2-NEXT:  ## BB#19: ## %cond.store17
   8295 ; AVX2-NEXT:    vpextrb $9, %xmm0, 9(%rax)
   8296 ; AVX2-NEXT:  LBB58_20: ## %else18
   8297 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8298 ; AVX2-NEXT:    testb $1, %cl
   8299 ; AVX2-NEXT:    je LBB58_22
   8300 ; AVX2-NEXT:  ## BB#21: ## %cond.store19
   8301 ; AVX2-NEXT:    vpextrb $10, %xmm0, 10(%rax)
   8302 ; AVX2-NEXT:  LBB58_22: ## %else20
   8303 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8304 ; AVX2-NEXT:    testb $1, %dl
   8305 ; AVX2-NEXT:    je LBB58_24
   8306 ; AVX2-NEXT:  ## BB#23: ## %cond.store21
   8307 ; AVX2-NEXT:    vpextrb $11, %xmm0, 11(%rax)
   8308 ; AVX2-NEXT:  LBB58_24: ## %else22
   8309 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8310 ; AVX2-NEXT:    testb $1, %cl
   8311 ; AVX2-NEXT:    je LBB58_26
   8312 ; AVX2-NEXT:  ## BB#25: ## %cond.store23
   8313 ; AVX2-NEXT:    vpextrb $12, %xmm0, 12(%rax)
   8314 ; AVX2-NEXT:  LBB58_26: ## %else24
   8315 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8316 ; AVX2-NEXT:    testb $1, %dl
   8317 ; AVX2-NEXT:    je LBB58_28
   8318 ; AVX2-NEXT:  ## BB#27: ## %cond.store25
   8319 ; AVX2-NEXT:    vpextrb $13, %xmm0, 13(%rax)
   8320 ; AVX2-NEXT:  LBB58_28: ## %else26
   8321 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8322 ; AVX2-NEXT:    testb $1, %cl
   8323 ; AVX2-NEXT:    je LBB58_30
   8324 ; AVX2-NEXT:  ## BB#29: ## %cond.store27
   8325 ; AVX2-NEXT:    vpextrb $14, %xmm0, 14(%rax)
   8326 ; AVX2-NEXT:  LBB58_30: ## %else28
   8327 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8328 ; AVX2-NEXT:    testb $1, %dl
   8329 ; AVX2-NEXT:    je LBB58_32
   8330 ; AVX2-NEXT:  ## BB#31: ## %cond.store29
   8331 ; AVX2-NEXT:    vpextrb $15, %xmm0, 15(%rax)
   8332 ; AVX2-NEXT:  LBB58_32: ## %else30
   8333 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8334 ; AVX2-NEXT:    testb $1, %cl
   8335 ; AVX2-NEXT:    je LBB58_34
   8336 ; AVX2-NEXT:  ## BB#33: ## %cond.store31
   8337 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm2
   8338 ; AVX2-NEXT:    vpextrb $0, %xmm2, 16(%rax)
   8339 ; AVX2-NEXT:  LBB58_34: ## %else32
   8340 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8341 ; AVX2-NEXT:    testb $1, %dl
   8342 ; AVX2-NEXT:    je LBB58_36
   8343 ; AVX2-NEXT:  ## BB#35: ## %cond.store33
   8344 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm2
   8345 ; AVX2-NEXT:    vpextrb $1, %xmm2, 17(%rax)
   8346 ; AVX2-NEXT:  LBB58_36: ## %else34
   8347 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8348 ; AVX2-NEXT:    testb $1, %cl
   8349 ; AVX2-NEXT:    je LBB58_38
   8350 ; AVX2-NEXT:  ## BB#37: ## %cond.store35
   8351 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm2
   8352 ; AVX2-NEXT:    vpextrb $2, %xmm2, 18(%rax)
   8353 ; AVX2-NEXT:  LBB58_38: ## %else36
   8354 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8355 ; AVX2-NEXT:    testb $1, %dl
   8356 ; AVX2-NEXT:    je LBB58_40
   8357 ; AVX2-NEXT:  ## BB#39: ## %cond.store37
   8358 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm2
   8359 ; AVX2-NEXT:    vpextrb $3, %xmm2, 19(%rax)
   8360 ; AVX2-NEXT:  LBB58_40: ## %else38
   8361 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8362 ; AVX2-NEXT:    testb $1, %cl
   8363 ; AVX2-NEXT:    je LBB58_42
   8364 ; AVX2-NEXT:  ## BB#41: ## %cond.store39
   8365 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm2
   8366 ; AVX2-NEXT:    vpextrb $4, %xmm2, 20(%rax)
   8367 ; AVX2-NEXT:  LBB58_42: ## %else40
   8368 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8369 ; AVX2-NEXT:    testb $1, %dl
   8370 ; AVX2-NEXT:    je LBB58_44
   8371 ; AVX2-NEXT:  ## BB#43: ## %cond.store41
   8372 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm2
   8373 ; AVX2-NEXT:    vpextrb $5, %xmm2, 21(%rax)
   8374 ; AVX2-NEXT:  LBB58_44: ## %else42
   8375 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8376 ; AVX2-NEXT:    testb $1, %cl
   8377 ; AVX2-NEXT:    je LBB58_46
   8378 ; AVX2-NEXT:  ## BB#45: ## %cond.store43
   8379 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm2
   8380 ; AVX2-NEXT:    vpextrb $6, %xmm2, 22(%rax)
   8381 ; AVX2-NEXT:  LBB58_46: ## %else44
   8382 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8383 ; AVX2-NEXT:    testb $1, %dl
   8384 ; AVX2-NEXT:    je LBB58_48
   8385 ; AVX2-NEXT:  ## BB#47: ## %cond.store45
   8386 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm2
   8387 ; AVX2-NEXT:    vpextrb $7, %xmm2, 23(%rax)
   8388 ; AVX2-NEXT:  LBB58_48: ## %else46
   8389 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8390 ; AVX2-NEXT:    testb $1, %cl
   8391 ; AVX2-NEXT:    je LBB58_50
   8392 ; AVX2-NEXT:  ## BB#49: ## %cond.store47
   8393 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm2
   8394 ; AVX2-NEXT:    vpextrb $8, %xmm2, 24(%rax)
   8395 ; AVX2-NEXT:  LBB58_50: ## %else48
   8396 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8397 ; AVX2-NEXT:    testb $1, %dl
   8398 ; AVX2-NEXT:    je LBB58_52
   8399 ; AVX2-NEXT:  ## BB#51: ## %cond.store49
   8400 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm2
   8401 ; AVX2-NEXT:    vpextrb $9, %xmm2, 25(%rax)
   8402 ; AVX2-NEXT:  LBB58_52: ## %else50
   8403 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8404 ; AVX2-NEXT:    testb $1, %cl
   8405 ; AVX2-NEXT:    je LBB58_54
   8406 ; AVX2-NEXT:  ## BB#53: ## %cond.store51
   8407 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm2
   8408 ; AVX2-NEXT:    vpextrb $10, %xmm2, 26(%rax)
   8409 ; AVX2-NEXT:  LBB58_54: ## %else52
   8410 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8411 ; AVX2-NEXT:    testb $1, %dl
   8412 ; AVX2-NEXT:    je LBB58_56
   8413 ; AVX2-NEXT:  ## BB#55: ## %cond.store53
   8414 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm2
   8415 ; AVX2-NEXT:    vpextrb $11, %xmm2, 27(%rax)
   8416 ; AVX2-NEXT:  LBB58_56: ## %else54
   8417 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8418 ; AVX2-NEXT:    testb $1, %cl
   8419 ; AVX2-NEXT:    je LBB58_58
   8420 ; AVX2-NEXT:  ## BB#57: ## %cond.store55
   8421 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm2
   8422 ; AVX2-NEXT:    vpextrb $12, %xmm2, 28(%rax)
   8423 ; AVX2-NEXT:  LBB58_58: ## %else56
   8424 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8425 ; AVX2-NEXT:    testb $1, %dl
   8426 ; AVX2-NEXT:    je LBB58_60
   8427 ; AVX2-NEXT:  ## BB#59: ## %cond.store57
   8428 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm2
   8429 ; AVX2-NEXT:    vpextrb $13, %xmm2, 29(%rax)
   8430 ; AVX2-NEXT:  LBB58_60: ## %else58
   8431 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8432 ; AVX2-NEXT:    testb $1, %cl
   8433 ; AVX2-NEXT:    je LBB58_62
   8434 ; AVX2-NEXT:  ## BB#61: ## %cond.store59
   8435 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm2
   8436 ; AVX2-NEXT:    vpextrb $14, %xmm2, 30(%rax)
   8437 ; AVX2-NEXT:  LBB58_62: ## %else60
   8438 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8439 ; AVX2-NEXT:    testb $1, %dl
   8440 ; AVX2-NEXT:    je LBB58_64
   8441 ; AVX2-NEXT:  ## BB#63: ## %cond.store61
   8442 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm0
   8443 ; AVX2-NEXT:    vpextrb $15, %xmm0, 31(%rax)
   8444 ; AVX2-NEXT:  LBB58_64: ## %else62
   8445 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8446 ; AVX2-NEXT:    testb $1, %cl
   8447 ; AVX2-NEXT:    je LBB58_66
   8448 ; AVX2-NEXT:  ## BB#65: ## %cond.store63
   8449 ; AVX2-NEXT:    vpextrb $0, %xmm1, 32(%rax)
   8450 ; AVX2-NEXT:  LBB58_66: ## %else64
   8451 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8452 ; AVX2-NEXT:    testb $1, %dl
   8453 ; AVX2-NEXT:    je LBB58_68
   8454 ; AVX2-NEXT:  ## BB#67: ## %cond.store65
   8455 ; AVX2-NEXT:    vpextrb $1, %xmm1, 33(%rax)
   8456 ; AVX2-NEXT:  LBB58_68: ## %else66
   8457 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8458 ; AVX2-NEXT:    testb $1, %cl
   8459 ; AVX2-NEXT:    je LBB58_70
   8460 ; AVX2-NEXT:  ## BB#69: ## %cond.store67
   8461 ; AVX2-NEXT:    vpextrb $2, %xmm1, 34(%rax)
   8462 ; AVX2-NEXT:  LBB58_70: ## %else68
   8463 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8464 ; AVX2-NEXT:    testb $1, %dl
   8465 ; AVX2-NEXT:    je LBB58_72
   8466 ; AVX2-NEXT:  ## BB#71: ## %cond.store69
   8467 ; AVX2-NEXT:    vpextrb $3, %xmm1, 35(%rax)
   8468 ; AVX2-NEXT:  LBB58_72: ## %else70
   8469 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8470 ; AVX2-NEXT:    testb $1, %cl
   8471 ; AVX2-NEXT:    je LBB58_74
   8472 ; AVX2-NEXT:  ## BB#73: ## %cond.store71
   8473 ; AVX2-NEXT:    vpextrb $4, %xmm1, 36(%rax)
   8474 ; AVX2-NEXT:  LBB58_74: ## %else72
   8475 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8476 ; AVX2-NEXT:    testb $1, %dl
   8477 ; AVX2-NEXT:    je LBB58_76
   8478 ; AVX2-NEXT:  ## BB#75: ## %cond.store73
   8479 ; AVX2-NEXT:    vpextrb $5, %xmm1, 37(%rax)
   8480 ; AVX2-NEXT:  LBB58_76: ## %else74
   8481 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8482 ; AVX2-NEXT:    testb $1, %cl
   8483 ; AVX2-NEXT:    je LBB58_78
   8484 ; AVX2-NEXT:  ## BB#77: ## %cond.store75
   8485 ; AVX2-NEXT:    vpextrb $6, %xmm1, 38(%rax)
   8486 ; AVX2-NEXT:  LBB58_78: ## %else76
   8487 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8488 ; AVX2-NEXT:    testb $1, %dl
   8489 ; AVX2-NEXT:    je LBB58_80
   8490 ; AVX2-NEXT:  ## BB#79: ## %cond.store77
   8491 ; AVX2-NEXT:    vpextrb $7, %xmm1, 39(%rax)
   8492 ; AVX2-NEXT:  LBB58_80: ## %else78
   8493 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8494 ; AVX2-NEXT:    testb $1, %cl
   8495 ; AVX2-NEXT:    je LBB58_82
   8496 ; AVX2-NEXT:  ## BB#81: ## %cond.store79
   8497 ; AVX2-NEXT:    vpextrb $8, %xmm1, 40(%rax)
   8498 ; AVX2-NEXT:  LBB58_82: ## %else80
   8499 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8500 ; AVX2-NEXT:    testb $1, %dl
   8501 ; AVX2-NEXT:    je LBB58_84
   8502 ; AVX2-NEXT:  ## BB#83: ## %cond.store81
   8503 ; AVX2-NEXT:    vpextrb $9, %xmm1, 41(%rax)
   8504 ; AVX2-NEXT:  LBB58_84: ## %else82
   8505 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8506 ; AVX2-NEXT:    testb $1, %cl
   8507 ; AVX2-NEXT:    je LBB58_86
   8508 ; AVX2-NEXT:  ## BB#85: ## %cond.store83
   8509 ; AVX2-NEXT:    vpextrb $10, %xmm1, 42(%rax)
   8510 ; AVX2-NEXT:  LBB58_86: ## %else84
   8511 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8512 ; AVX2-NEXT:    testb $1, %dl
   8513 ; AVX2-NEXT:    je LBB58_88
   8514 ; AVX2-NEXT:  ## BB#87: ## %cond.store85
   8515 ; AVX2-NEXT:    vpextrb $11, %xmm1, 43(%rax)
   8516 ; AVX2-NEXT:  LBB58_88: ## %else86
   8517 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8518 ; AVX2-NEXT:    testb $1, %cl
   8519 ; AVX2-NEXT:    je LBB58_90
   8520 ; AVX2-NEXT:  ## BB#89: ## %cond.store87
   8521 ; AVX2-NEXT:    vpextrb $12, %xmm1, 44(%rax)
   8522 ; AVX2-NEXT:  LBB58_90: ## %else88
   8523 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8524 ; AVX2-NEXT:    testb $1, %dl
   8525 ; AVX2-NEXT:    je LBB58_92
   8526 ; AVX2-NEXT:  ## BB#91: ## %cond.store89
   8527 ; AVX2-NEXT:    vpextrb $13, %xmm1, 45(%rax)
   8528 ; AVX2-NEXT:  LBB58_92: ## %else90
   8529 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8530 ; AVX2-NEXT:    testb $1, %cl
   8531 ; AVX2-NEXT:    je LBB58_94
   8532 ; AVX2-NEXT:  ## BB#93: ## %cond.store91
   8533 ; AVX2-NEXT:    vpextrb $14, %xmm1, 46(%rax)
   8534 ; AVX2-NEXT:  LBB58_94: ## %else92
   8535 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8536 ; AVX2-NEXT:    testb $1, %dl
   8537 ; AVX2-NEXT:    je LBB58_96
   8538 ; AVX2-NEXT:  ## BB#95: ## %cond.store93
   8539 ; AVX2-NEXT:    vpextrb $15, %xmm1, 47(%rax)
   8540 ; AVX2-NEXT:  LBB58_96: ## %else94
   8541 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8542 ; AVX2-NEXT:    testb $1, %cl
   8543 ; AVX2-NEXT:    je LBB58_98
   8544 ; AVX2-NEXT:  ## BB#97: ## %cond.store95
   8545 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm0
   8546 ; AVX2-NEXT:    vpextrb $0, %xmm0, 48(%rax)
   8547 ; AVX2-NEXT:  LBB58_98: ## %else96
   8548 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8549 ; AVX2-NEXT:    testb $1, %dl
   8550 ; AVX2-NEXT:    je LBB58_100
   8551 ; AVX2-NEXT:  ## BB#99: ## %cond.store97
   8552 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm0
   8553 ; AVX2-NEXT:    vpextrb $1, %xmm0, 49(%rax)
   8554 ; AVX2-NEXT:  LBB58_100: ## %else98
   8555 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8556 ; AVX2-NEXT:    testb $1, %cl
   8557 ; AVX2-NEXT:    je LBB58_102
   8558 ; AVX2-NEXT:  ## BB#101: ## %cond.store99
   8559 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm0
   8560 ; AVX2-NEXT:    vpextrb $2, %xmm0, 50(%rax)
   8561 ; AVX2-NEXT:  LBB58_102: ## %else100
   8562 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8563 ; AVX2-NEXT:    testb $1, %dl
   8564 ; AVX2-NEXT:    je LBB58_104
   8565 ; AVX2-NEXT:  ## BB#103: ## %cond.store101
   8566 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm0
   8567 ; AVX2-NEXT:    vpextrb $3, %xmm0, 51(%rax)
   8568 ; AVX2-NEXT:  LBB58_104: ## %else102
   8569 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8570 ; AVX2-NEXT:    testb $1, %cl
   8571 ; AVX2-NEXT:    je LBB58_106
   8572 ; AVX2-NEXT:  ## BB#105: ## %cond.store103
   8573 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm0
   8574 ; AVX2-NEXT:    vpextrb $4, %xmm0, 52(%rax)
   8575 ; AVX2-NEXT:  LBB58_106: ## %else104
   8576 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8577 ; AVX2-NEXT:    testb $1, %dl
   8578 ; AVX2-NEXT:    je LBB58_108
   8579 ; AVX2-NEXT:  ## BB#107: ## %cond.store105
   8580 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm0
   8581 ; AVX2-NEXT:    vpextrb $5, %xmm0, 53(%rax)
   8582 ; AVX2-NEXT:  LBB58_108: ## %else106
   8583 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8584 ; AVX2-NEXT:    testb $1, %cl
   8585 ; AVX2-NEXT:    je LBB58_110
   8586 ; AVX2-NEXT:  ## BB#109: ## %cond.store107
   8587 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm0
   8588 ; AVX2-NEXT:    vpextrb $6, %xmm0, 54(%rax)
   8589 ; AVX2-NEXT:  LBB58_110: ## %else108
   8590 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8591 ; AVX2-NEXT:    testb $1, %dl
   8592 ; AVX2-NEXT:    je LBB58_112
   8593 ; AVX2-NEXT:  ## BB#111: ## %cond.store109
   8594 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm0
   8595 ; AVX2-NEXT:    vpextrb $7, %xmm0, 55(%rax)
   8596 ; AVX2-NEXT:  LBB58_112: ## %else110
   8597 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8598 ; AVX2-NEXT:    testb $1, %cl
   8599 ; AVX2-NEXT:    je LBB58_114
   8600 ; AVX2-NEXT:  ## BB#113: ## %cond.store111
   8601 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm0
   8602 ; AVX2-NEXT:    vpextrb $8, %xmm0, 56(%rax)
   8603 ; AVX2-NEXT:  LBB58_114: ## %else112
   8604 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8605 ; AVX2-NEXT:    testb $1, %dl
   8606 ; AVX2-NEXT:    je LBB58_116
   8607 ; AVX2-NEXT:  ## BB#115: ## %cond.store113
   8608 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm0
   8609 ; AVX2-NEXT:    vpextrb $9, %xmm0, 57(%rax)
   8610 ; AVX2-NEXT:  LBB58_116: ## %else114
   8611 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8612 ; AVX2-NEXT:    testb $1, %cl
   8613 ; AVX2-NEXT:    je LBB58_118
   8614 ; AVX2-NEXT:  ## BB#117: ## %cond.store115
   8615 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm0
   8616 ; AVX2-NEXT:    vpextrb $10, %xmm0, 58(%rax)
   8617 ; AVX2-NEXT:  LBB58_118: ## %else116
   8618 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8619 ; AVX2-NEXT:    testb $1, %dl
   8620 ; AVX2-NEXT:    je LBB58_120
   8621 ; AVX2-NEXT:  ## BB#119: ## %cond.store117
   8622 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm0
   8623 ; AVX2-NEXT:    vpextrb $11, %xmm0, 59(%rax)
   8624 ; AVX2-NEXT:  LBB58_120: ## %else118
   8625 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8626 ; AVX2-NEXT:    testb $1, %cl
   8627 ; AVX2-NEXT:    je LBB58_122
   8628 ; AVX2-NEXT:  ## BB#121: ## %cond.store119
   8629 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm0
   8630 ; AVX2-NEXT:    vpextrb $12, %xmm0, 60(%rax)
   8631 ; AVX2-NEXT:  LBB58_122: ## %else120
   8632 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %cl
   8633 ; AVX2-NEXT:    testb $1, %dl
   8634 ; AVX2-NEXT:    je LBB58_124
   8635 ; AVX2-NEXT:  ## BB#123: ## %cond.store121
   8636 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm0
   8637 ; AVX2-NEXT:    vpextrb $13, %xmm0, 61(%rax)
   8638 ; AVX2-NEXT:  LBB58_124: ## %else122
   8639 ; AVX2-NEXT:    movb {{[0-9]+}}(%rsp), %dl
   8640 ; AVX2-NEXT:    testb $1, %cl
   8641 ; AVX2-NEXT:    je LBB58_126
   8642 ; AVX2-NEXT:  ## BB#125: ## %cond.store123
   8643 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm0
   8644 ; AVX2-NEXT:    vpextrb $14, %xmm0, 62(%rax)
   8645 ; AVX2-NEXT:  LBB58_126: ## %else124
   8646 ; AVX2-NEXT:    testb $1, %dl
   8647 ; AVX2-NEXT:    je LBB58_128
   8648 ; AVX2-NEXT:  ## BB#127: ## %cond.store125
   8649 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm0
   8650 ; AVX2-NEXT:    vpextrb $15, %xmm0, 63(%rax)
   8651 ; AVX2-NEXT:  LBB58_128: ## %else126
   8652 ; AVX2-NEXT:    vzeroupper
   8653 ; AVX2-NEXT:    retq
   8654 ;
   8655 ; AVX512F-LABEL: test_mask_store_64xi8:
   8656 ; AVX512F:       ## BB#0:
   8657 ; AVX512F-NEXT:    vpmovsxbd %xmm0, %zmm0
   8658 ; AVX512F-NEXT:    vpslld $31, %zmm0, %zmm0
   8659 ; AVX512F-NEXT:    vptestmd %zmm0, %zmm0, %k0
   8660 ; AVX512F-NEXT:    kshiftlw $15, %k0, %k1
   8661 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   8662 ; AVX512F-NEXT:    kmovw %k1, %eax
   8663 ; AVX512F-NEXT:    testb %al, %al
   8664 ; AVX512F-NEXT:    je LBB58_2
   8665 ; AVX512F-NEXT:  ## BB#1: ## %cond.store
   8666 ; AVX512F-NEXT:    vpextrb $0, %xmm4, (%rdi)
   8667 ; AVX512F-NEXT:  LBB58_2: ## %else
   8668 ; AVX512F-NEXT:    kshiftlw $14, %k0, %k1
   8669 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   8670 ; AVX512F-NEXT:    kmovw %k1, %eax
   8671 ; AVX512F-NEXT:    testb %al, %al
   8672 ; AVX512F-NEXT:    je LBB58_4
   8673 ; AVX512F-NEXT:  ## BB#3: ## %cond.store1
   8674 ; AVX512F-NEXT:    vpextrb $1, %xmm4, 1(%rdi)
   8675 ; AVX512F-NEXT:  LBB58_4: ## %else2
   8676 ; AVX512F-NEXT:    kshiftlw $13, %k0, %k1
   8677 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   8678 ; AVX512F-NEXT:    kmovw %k1, %eax
   8679 ; AVX512F-NEXT:    testb %al, %al
   8680 ; AVX512F-NEXT:    je LBB58_6
   8681 ; AVX512F-NEXT:  ## BB#5: ## %cond.store3
   8682 ; AVX512F-NEXT:    vpextrb $2, %xmm4, 2(%rdi)
   8683 ; AVX512F-NEXT:  LBB58_6: ## %else4
   8684 ; AVX512F-NEXT:    kshiftlw $12, %k0, %k1
   8685 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   8686 ; AVX512F-NEXT:    kmovw %k1, %eax
   8687 ; AVX512F-NEXT:    testb %al, %al
   8688 ; AVX512F-NEXT:    je LBB58_8
   8689 ; AVX512F-NEXT:  ## BB#7: ## %cond.store5
   8690 ; AVX512F-NEXT:    vpextrb $3, %xmm4, 3(%rdi)
   8691 ; AVX512F-NEXT:  LBB58_8: ## %else6
   8692 ; AVX512F-NEXT:    kshiftlw $11, %k0, %k1
   8693 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   8694 ; AVX512F-NEXT:    kmovw %k1, %eax
   8695 ; AVX512F-NEXT:    testb %al, %al
   8696 ; AVX512F-NEXT:    je LBB58_10
   8697 ; AVX512F-NEXT:  ## BB#9: ## %cond.store7
   8698 ; AVX512F-NEXT:    vpextrb $4, %xmm4, 4(%rdi)
   8699 ; AVX512F-NEXT:  LBB58_10: ## %else8
   8700 ; AVX512F-NEXT:    kshiftlw $10, %k0, %k1
   8701 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   8702 ; AVX512F-NEXT:    kmovw %k1, %eax
   8703 ; AVX512F-NEXT:    testb %al, %al
   8704 ; AVX512F-NEXT:    je LBB58_12
   8705 ; AVX512F-NEXT:  ## BB#11: ## %cond.store9
   8706 ; AVX512F-NEXT:    vpextrb $5, %xmm4, 5(%rdi)
   8707 ; AVX512F-NEXT:  LBB58_12: ## %else10
   8708 ; AVX512F-NEXT:    kshiftlw $9, %k0, %k1
   8709 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   8710 ; AVX512F-NEXT:    kmovw %k1, %eax
   8711 ; AVX512F-NEXT:    testb %al, %al
   8712 ; AVX512F-NEXT:    je LBB58_14
   8713 ; AVX512F-NEXT:  ## BB#13: ## %cond.store11
   8714 ; AVX512F-NEXT:    vpextrb $6, %xmm4, 6(%rdi)
   8715 ; AVX512F-NEXT:  LBB58_14: ## %else12
   8716 ; AVX512F-NEXT:    kshiftlw $8, %k0, %k1
   8717 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   8718 ; AVX512F-NEXT:    kmovw %k1, %eax
   8719 ; AVX512F-NEXT:    testb %al, %al
   8720 ; AVX512F-NEXT:    je LBB58_16
   8721 ; AVX512F-NEXT:  ## BB#15: ## %cond.store13
   8722 ; AVX512F-NEXT:    vpextrb $7, %xmm4, 7(%rdi)
   8723 ; AVX512F-NEXT:  LBB58_16: ## %else14
   8724 ; AVX512F-NEXT:    kshiftlw $7, %k0, %k1
   8725 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   8726 ; AVX512F-NEXT:    kmovw %k1, %eax
   8727 ; AVX512F-NEXT:    testb %al, %al
   8728 ; AVX512F-NEXT:    je LBB58_18
   8729 ; AVX512F-NEXT:  ## BB#17: ## %cond.store15
   8730 ; AVX512F-NEXT:    vpextrb $8, %xmm4, 8(%rdi)
   8731 ; AVX512F-NEXT:  LBB58_18: ## %else16
   8732 ; AVX512F-NEXT:    kshiftlw $6, %k0, %k1
   8733 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   8734 ; AVX512F-NEXT:    kmovw %k1, %eax
   8735 ; AVX512F-NEXT:    testb %al, %al
   8736 ; AVX512F-NEXT:    je LBB58_20
   8737 ; AVX512F-NEXT:  ## BB#19: ## %cond.store17
   8738 ; AVX512F-NEXT:    vpextrb $9, %xmm4, 9(%rdi)
   8739 ; AVX512F-NEXT:  LBB58_20: ## %else18
   8740 ; AVX512F-NEXT:    kshiftlw $5, %k0, %k1
   8741 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   8742 ; AVX512F-NEXT:    kmovw %k1, %eax
   8743 ; AVX512F-NEXT:    testb %al, %al
   8744 ; AVX512F-NEXT:    je LBB58_22
   8745 ; AVX512F-NEXT:  ## BB#21: ## %cond.store19
   8746 ; AVX512F-NEXT:    vpextrb $10, %xmm4, 10(%rdi)
   8747 ; AVX512F-NEXT:  LBB58_22: ## %else20
   8748 ; AVX512F-NEXT:    kshiftlw $4, %k0, %k1
   8749 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   8750 ; AVX512F-NEXT:    kmovw %k1, %eax
   8751 ; AVX512F-NEXT:    testb %al, %al
   8752 ; AVX512F-NEXT:    je LBB58_24
   8753 ; AVX512F-NEXT:  ## BB#23: ## %cond.store21
   8754 ; AVX512F-NEXT:    vpextrb $11, %xmm4, 11(%rdi)
   8755 ; AVX512F-NEXT:  LBB58_24: ## %else22
   8756 ; AVX512F-NEXT:    kshiftlw $3, %k0, %k1
   8757 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   8758 ; AVX512F-NEXT:    kmovw %k1, %eax
   8759 ; AVX512F-NEXT:    testb %al, %al
   8760 ; AVX512F-NEXT:    je LBB58_26
   8761 ; AVX512F-NEXT:  ## BB#25: ## %cond.store23
   8762 ; AVX512F-NEXT:    vpextrb $12, %xmm4, 12(%rdi)
   8763 ; AVX512F-NEXT:  LBB58_26: ## %else24
   8764 ; AVX512F-NEXT:    vpmovsxbd %xmm1, %zmm0
   8765 ; AVX512F-NEXT:    kshiftlw $2, %k0, %k1
   8766 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   8767 ; AVX512F-NEXT:    kmovw %k1, %eax
   8768 ; AVX512F-NEXT:    testb %al, %al
   8769 ; AVX512F-NEXT:    je LBB58_28
   8770 ; AVX512F-NEXT:  ## BB#27: ## %cond.store25
   8771 ; AVX512F-NEXT:    vpextrb $13, %xmm4, 13(%rdi)
   8772 ; AVX512F-NEXT:  LBB58_28: ## %else26
   8773 ; AVX512F-NEXT:    vpslld $31, %zmm0, %zmm0
   8774 ; AVX512F-NEXT:    kshiftlw $1, %k0, %k1
   8775 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   8776 ; AVX512F-NEXT:    kmovw %k1, %eax
   8777 ; AVX512F-NEXT:    testb %al, %al
   8778 ; AVX512F-NEXT:    je LBB58_30
   8779 ; AVX512F-NEXT:  ## BB#29: ## %cond.store27
   8780 ; AVX512F-NEXT:    vpextrb $14, %xmm4, 14(%rdi)
   8781 ; AVX512F-NEXT:  LBB58_30: ## %else28
   8782 ; AVX512F-NEXT:    vptestmd %zmm0, %zmm0, %k1
   8783 ; AVX512F-NEXT:    kshiftlw $0, %k0, %k0
   8784 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   8785 ; AVX512F-NEXT:    kmovw %k0, %eax
   8786 ; AVX512F-NEXT:    testb %al, %al
   8787 ; AVX512F-NEXT:    je LBB58_32
   8788 ; AVX512F-NEXT:  ## BB#31: ## %cond.store29
   8789 ; AVX512F-NEXT:    vpextrb $15, %xmm4, 15(%rdi)
   8790 ; AVX512F-NEXT:  LBB58_32: ## %else30
   8791 ; AVX512F-NEXT:    kshiftlw $15, %k1, %k0
   8792 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   8793 ; AVX512F-NEXT:    kmovw %k0, %eax
   8794 ; AVX512F-NEXT:    testb %al, %al
   8795 ; AVX512F-NEXT:    je LBB58_34
   8796 ; AVX512F-NEXT:  ## BB#33: ## %cond.store31
   8797 ; AVX512F-NEXT:    vextracti128 $1, %ymm4, %xmm0
   8798 ; AVX512F-NEXT:    vpextrb $0, %xmm0, 16(%rdi)
   8799 ; AVX512F-NEXT:  LBB58_34: ## %else32
   8800 ; AVX512F-NEXT:    kshiftlw $14, %k1, %k0
   8801 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   8802 ; AVX512F-NEXT:    kmovw %k0, %eax
   8803 ; AVX512F-NEXT:    testb %al, %al
   8804 ; AVX512F-NEXT:    je LBB58_36
   8805 ; AVX512F-NEXT:  ## BB#35: ## %cond.store33
   8806 ; AVX512F-NEXT:    vextracti128 $1, %ymm4, %xmm0
   8807 ; AVX512F-NEXT:    vpextrb $1, %xmm0, 17(%rdi)
   8808 ; AVX512F-NEXT:  LBB58_36: ## %else34
   8809 ; AVX512F-NEXT:    kshiftlw $13, %k1, %k0
   8810 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   8811 ; AVX512F-NEXT:    kmovw %k0, %eax
   8812 ; AVX512F-NEXT:    testb %al, %al
   8813 ; AVX512F-NEXT:    je LBB58_38
   8814 ; AVX512F-NEXT:  ## BB#37: ## %cond.store35
   8815 ; AVX512F-NEXT:    vextracti128 $1, %ymm4, %xmm0
   8816 ; AVX512F-NEXT:    vpextrb $2, %xmm0, 18(%rdi)
   8817 ; AVX512F-NEXT:  LBB58_38: ## %else36
   8818 ; AVX512F-NEXT:    kshiftlw $12, %k1, %k0
   8819 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   8820 ; AVX512F-NEXT:    kmovw %k0, %eax
   8821 ; AVX512F-NEXT:    testb %al, %al
   8822 ; AVX512F-NEXT:    je LBB58_40
   8823 ; AVX512F-NEXT:  ## BB#39: ## %cond.store37
   8824 ; AVX512F-NEXT:    vextracti128 $1, %ymm4, %xmm0
   8825 ; AVX512F-NEXT:    vpextrb $3, %xmm0, 19(%rdi)
   8826 ; AVX512F-NEXT:  LBB58_40: ## %else38
   8827 ; AVX512F-NEXT:    kshiftlw $11, %k1, %k0
   8828 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   8829 ; AVX512F-NEXT:    kmovw %k0, %eax
   8830 ; AVX512F-NEXT:    testb %al, %al
   8831 ; AVX512F-NEXT:    je LBB58_42
   8832 ; AVX512F-NEXT:  ## BB#41: ## %cond.store39
   8833 ; AVX512F-NEXT:    vextracti128 $1, %ymm4, %xmm0
   8834 ; AVX512F-NEXT:    vpextrb $4, %xmm0, 20(%rdi)
   8835 ; AVX512F-NEXT:  LBB58_42: ## %else40
   8836 ; AVX512F-NEXT:    kshiftlw $10, %k1, %k0
   8837 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   8838 ; AVX512F-NEXT:    kmovw %k0, %eax
   8839 ; AVX512F-NEXT:    testb %al, %al
   8840 ; AVX512F-NEXT:    je LBB58_44
   8841 ; AVX512F-NEXT:  ## BB#43: ## %cond.store41
   8842 ; AVX512F-NEXT:    vextracti128 $1, %ymm4, %xmm0
   8843 ; AVX512F-NEXT:    vpextrb $5, %xmm0, 21(%rdi)
   8844 ; AVX512F-NEXT:  LBB58_44: ## %else42
   8845 ; AVX512F-NEXT:    kshiftlw $9, %k1, %k0
   8846 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   8847 ; AVX512F-NEXT:    kmovw %k0, %eax
   8848 ; AVX512F-NEXT:    testb %al, %al
   8849 ; AVX512F-NEXT:    je LBB58_46
   8850 ; AVX512F-NEXT:  ## BB#45: ## %cond.store43
   8851 ; AVX512F-NEXT:    vextracti128 $1, %ymm4, %xmm0
   8852 ; AVX512F-NEXT:    vpextrb $6, %xmm0, 22(%rdi)
   8853 ; AVX512F-NEXT:  LBB58_46: ## %else44
   8854 ; AVX512F-NEXT:    kshiftlw $8, %k1, %k0
   8855 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   8856 ; AVX512F-NEXT:    kmovw %k0, %eax
   8857 ; AVX512F-NEXT:    testb %al, %al
   8858 ; AVX512F-NEXT:    je LBB58_48
   8859 ; AVX512F-NEXT:  ## BB#47: ## %cond.store45
   8860 ; AVX512F-NEXT:    vextracti128 $1, %ymm4, %xmm0
   8861 ; AVX512F-NEXT:    vpextrb $7, %xmm0, 23(%rdi)
   8862 ; AVX512F-NEXT:  LBB58_48: ## %else46
   8863 ; AVX512F-NEXT:    kshiftlw $7, %k1, %k0
   8864 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   8865 ; AVX512F-NEXT:    kmovw %k0, %eax
   8866 ; AVX512F-NEXT:    testb %al, %al
   8867 ; AVX512F-NEXT:    je LBB58_50
   8868 ; AVX512F-NEXT:  ## BB#49: ## %cond.store47
   8869 ; AVX512F-NEXT:    vextracti128 $1, %ymm4, %xmm0
   8870 ; AVX512F-NEXT:    vpextrb $8, %xmm0, 24(%rdi)
   8871 ; AVX512F-NEXT:  LBB58_50: ## %else48
   8872 ; AVX512F-NEXT:    kshiftlw $6, %k1, %k0
   8873 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   8874 ; AVX512F-NEXT:    kmovw %k0, %eax
   8875 ; AVX512F-NEXT:    testb %al, %al
   8876 ; AVX512F-NEXT:    je LBB58_52
   8877 ; AVX512F-NEXT:  ## BB#51: ## %cond.store49
   8878 ; AVX512F-NEXT:    vextracti128 $1, %ymm4, %xmm0
   8879 ; AVX512F-NEXT:    vpextrb $9, %xmm0, 25(%rdi)
   8880 ; AVX512F-NEXT:  LBB58_52: ## %else50
   8881 ; AVX512F-NEXT:    kshiftlw $5, %k1, %k0
   8882 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   8883 ; AVX512F-NEXT:    kmovw %k0, %eax
   8884 ; AVX512F-NEXT:    testb %al, %al
   8885 ; AVX512F-NEXT:    je LBB58_54
   8886 ; AVX512F-NEXT:  ## BB#53: ## %cond.store51
   8887 ; AVX512F-NEXT:    vextracti128 $1, %ymm4, %xmm0
   8888 ; AVX512F-NEXT:    vpextrb $10, %xmm0, 26(%rdi)
   8889 ; AVX512F-NEXT:  LBB58_54: ## %else52
   8890 ; AVX512F-NEXT:    kshiftlw $4, %k1, %k0
   8891 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   8892 ; AVX512F-NEXT:    kmovw %k0, %eax
   8893 ; AVX512F-NEXT:    testb %al, %al
   8894 ; AVX512F-NEXT:    je LBB58_56
   8895 ; AVX512F-NEXT:  ## BB#55: ## %cond.store53
   8896 ; AVX512F-NEXT:    vextracti128 $1, %ymm4, %xmm0
   8897 ; AVX512F-NEXT:    vpextrb $11, %xmm0, 27(%rdi)
   8898 ; AVX512F-NEXT:  LBB58_56: ## %else54
   8899 ; AVX512F-NEXT:    kshiftlw $3, %k1, %k0
   8900 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   8901 ; AVX512F-NEXT:    kmovw %k0, %eax
   8902 ; AVX512F-NEXT:    testb %al, %al
   8903 ; AVX512F-NEXT:    je LBB58_58
   8904 ; AVX512F-NEXT:  ## BB#57: ## %cond.store55
   8905 ; AVX512F-NEXT:    vextracti128 $1, %ymm4, %xmm0
   8906 ; AVX512F-NEXT:    vpextrb $12, %xmm0, 28(%rdi)
   8907 ; AVX512F-NEXT:  LBB58_58: ## %else56
   8908 ; AVX512F-NEXT:    vpmovsxbd %xmm2, %zmm0
   8909 ; AVX512F-NEXT:    kshiftlw $2, %k1, %k0
   8910 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   8911 ; AVX512F-NEXT:    kmovw %k0, %eax
   8912 ; AVX512F-NEXT:    testb %al, %al
   8913 ; AVX512F-NEXT:    je LBB58_60
   8914 ; AVX512F-NEXT:  ## BB#59: ## %cond.store57
   8915 ; AVX512F-NEXT:    vextracti128 $1, %ymm4, %xmm1
   8916 ; AVX512F-NEXT:    vpextrb $13, %xmm1, 29(%rdi)
   8917 ; AVX512F-NEXT:  LBB58_60: ## %else58
   8918 ; AVX512F-NEXT:    vpslld $31, %zmm0, %zmm0
   8919 ; AVX512F-NEXT:    kshiftlw $1, %k1, %k0
   8920 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   8921 ; AVX512F-NEXT:    kmovw %k0, %eax
   8922 ; AVX512F-NEXT:    testb %al, %al
   8923 ; AVX512F-NEXT:    je LBB58_62
   8924 ; AVX512F-NEXT:  ## BB#61: ## %cond.store59
   8925 ; AVX512F-NEXT:    vextracti128 $1, %ymm4, %xmm1
   8926 ; AVX512F-NEXT:    vpextrb $14, %xmm1, 30(%rdi)
   8927 ; AVX512F-NEXT:  LBB58_62: ## %else60
   8928 ; AVX512F-NEXT:    vptestmd %zmm0, %zmm0, %k0
   8929 ; AVX512F-NEXT:    kshiftlw $0, %k1, %k1
   8930 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   8931 ; AVX512F-NEXT:    kmovw %k1, %eax
   8932 ; AVX512F-NEXT:    testb %al, %al
   8933 ; AVX512F-NEXT:    je LBB58_64
   8934 ; AVX512F-NEXT:  ## BB#63: ## %cond.store61
   8935 ; AVX512F-NEXT:    vextracti128 $1, %ymm4, %xmm0
   8936 ; AVX512F-NEXT:    vpextrb $15, %xmm0, 31(%rdi)
   8937 ; AVX512F-NEXT:  LBB58_64: ## %else62
   8938 ; AVX512F-NEXT:    kshiftlw $15, %k0, %k1
   8939 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   8940 ; AVX512F-NEXT:    kmovw %k1, %eax
   8941 ; AVX512F-NEXT:    testb %al, %al
   8942 ; AVX512F-NEXT:    je LBB58_66
   8943 ; AVX512F-NEXT:  ## BB#65: ## %cond.store63
   8944 ; AVX512F-NEXT:    vpextrb $0, %xmm5, 32(%rdi)
   8945 ; AVX512F-NEXT:  LBB58_66: ## %else64
   8946 ; AVX512F-NEXT:    kshiftlw $14, %k0, %k1
   8947 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   8948 ; AVX512F-NEXT:    kmovw %k1, %eax
   8949 ; AVX512F-NEXT:    testb %al, %al
   8950 ; AVX512F-NEXT:    je LBB58_68
   8951 ; AVX512F-NEXT:  ## BB#67: ## %cond.store65
   8952 ; AVX512F-NEXT:    vpextrb $1, %xmm5, 33(%rdi)
   8953 ; AVX512F-NEXT:  LBB58_68: ## %else66
   8954 ; AVX512F-NEXT:    kshiftlw $13, %k0, %k1
   8955 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   8956 ; AVX512F-NEXT:    kmovw %k1, %eax
   8957 ; AVX512F-NEXT:    testb %al, %al
   8958 ; AVX512F-NEXT:    je LBB58_70
   8959 ; AVX512F-NEXT:  ## BB#69: ## %cond.store67
   8960 ; AVX512F-NEXT:    vpextrb $2, %xmm5, 34(%rdi)
   8961 ; AVX512F-NEXT:  LBB58_70: ## %else68
   8962 ; AVX512F-NEXT:    kshiftlw $12, %k0, %k1
   8963 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   8964 ; AVX512F-NEXT:    kmovw %k1, %eax
   8965 ; AVX512F-NEXT:    testb %al, %al
   8966 ; AVX512F-NEXT:    je LBB58_72
   8967 ; AVX512F-NEXT:  ## BB#71: ## %cond.store69
   8968 ; AVX512F-NEXT:    vpextrb $3, %xmm5, 35(%rdi)
   8969 ; AVX512F-NEXT:  LBB58_72: ## %else70
   8970 ; AVX512F-NEXT:    kshiftlw $11, %k0, %k1
   8971 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   8972 ; AVX512F-NEXT:    kmovw %k1, %eax
   8973 ; AVX512F-NEXT:    testb %al, %al
   8974 ; AVX512F-NEXT:    je LBB58_74
   8975 ; AVX512F-NEXT:  ## BB#73: ## %cond.store71
   8976 ; AVX512F-NEXT:    vpextrb $4, %xmm5, 36(%rdi)
   8977 ; AVX512F-NEXT:  LBB58_74: ## %else72
   8978 ; AVX512F-NEXT:    kshiftlw $10, %k0, %k1
   8979 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   8980 ; AVX512F-NEXT:    kmovw %k1, %eax
   8981 ; AVX512F-NEXT:    testb %al, %al
   8982 ; AVX512F-NEXT:    je LBB58_76
   8983 ; AVX512F-NEXT:  ## BB#75: ## %cond.store73
   8984 ; AVX512F-NEXT:    vpextrb $5, %xmm5, 37(%rdi)
   8985 ; AVX512F-NEXT:  LBB58_76: ## %else74
   8986 ; AVX512F-NEXT:    kshiftlw $9, %k0, %k1
   8987 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   8988 ; AVX512F-NEXT:    kmovw %k1, %eax
   8989 ; AVX512F-NEXT:    testb %al, %al
   8990 ; AVX512F-NEXT:    je LBB58_78
   8991 ; AVX512F-NEXT:  ## BB#77: ## %cond.store75
   8992 ; AVX512F-NEXT:    vpextrb $6, %xmm5, 38(%rdi)
   8993 ; AVX512F-NEXT:  LBB58_78: ## %else76
   8994 ; AVX512F-NEXT:    kshiftlw $8, %k0, %k1
   8995 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   8996 ; AVX512F-NEXT:    kmovw %k1, %eax
   8997 ; AVX512F-NEXT:    testb %al, %al
   8998 ; AVX512F-NEXT:    je LBB58_80
   8999 ; AVX512F-NEXT:  ## BB#79: ## %cond.store77
   9000 ; AVX512F-NEXT:    vpextrb $7, %xmm5, 39(%rdi)
   9001 ; AVX512F-NEXT:  LBB58_80: ## %else78
   9002 ; AVX512F-NEXT:    kshiftlw $7, %k0, %k1
   9003 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9004 ; AVX512F-NEXT:    kmovw %k1, %eax
   9005 ; AVX512F-NEXT:    testb %al, %al
   9006 ; AVX512F-NEXT:    je LBB58_82
   9007 ; AVX512F-NEXT:  ## BB#81: ## %cond.store79
   9008 ; AVX512F-NEXT:    vpextrb $8, %xmm5, 40(%rdi)
   9009 ; AVX512F-NEXT:  LBB58_82: ## %else80
   9010 ; AVX512F-NEXT:    kshiftlw $6, %k0, %k1
   9011 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9012 ; AVX512F-NEXT:    kmovw %k1, %eax
   9013 ; AVX512F-NEXT:    testb %al, %al
   9014 ; AVX512F-NEXT:    je LBB58_84
   9015 ; AVX512F-NEXT:  ## BB#83: ## %cond.store81
   9016 ; AVX512F-NEXT:    vpextrb $9, %xmm5, 41(%rdi)
   9017 ; AVX512F-NEXT:  LBB58_84: ## %else82
   9018 ; AVX512F-NEXT:    kshiftlw $5, %k0, %k1
   9019 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9020 ; AVX512F-NEXT:    kmovw %k1, %eax
   9021 ; AVX512F-NEXT:    testb %al, %al
   9022 ; AVX512F-NEXT:    je LBB58_86
   9023 ; AVX512F-NEXT:  ## BB#85: ## %cond.store83
   9024 ; AVX512F-NEXT:    vpextrb $10, %xmm5, 42(%rdi)
   9025 ; AVX512F-NEXT:  LBB58_86: ## %else84
   9026 ; AVX512F-NEXT:    kshiftlw $4, %k0, %k1
   9027 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9028 ; AVX512F-NEXT:    kmovw %k1, %eax
   9029 ; AVX512F-NEXT:    testb %al, %al
   9030 ; AVX512F-NEXT:    je LBB58_88
   9031 ; AVX512F-NEXT:  ## BB#87: ## %cond.store85
   9032 ; AVX512F-NEXT:    vpextrb $11, %xmm5, 43(%rdi)
   9033 ; AVX512F-NEXT:  LBB58_88: ## %else86
   9034 ; AVX512F-NEXT:    kshiftlw $3, %k0, %k1
   9035 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9036 ; AVX512F-NEXT:    kmovw %k1, %eax
   9037 ; AVX512F-NEXT:    testb %al, %al
   9038 ; AVX512F-NEXT:    je LBB58_90
   9039 ; AVX512F-NEXT:  ## BB#89: ## %cond.store87
   9040 ; AVX512F-NEXT:    vpextrb $12, %xmm5, 44(%rdi)
   9041 ; AVX512F-NEXT:  LBB58_90: ## %else88
   9042 ; AVX512F-NEXT:    vpmovsxbd %xmm3, %zmm0
   9043 ; AVX512F-NEXT:    kshiftlw $2, %k0, %k1
   9044 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9045 ; AVX512F-NEXT:    kmovw %k1, %eax
   9046 ; AVX512F-NEXT:    testb %al, %al
   9047 ; AVX512F-NEXT:    je LBB58_92
   9048 ; AVX512F-NEXT:  ## BB#91: ## %cond.store89
   9049 ; AVX512F-NEXT:    vpextrb $13, %xmm5, 45(%rdi)
   9050 ; AVX512F-NEXT:  LBB58_92: ## %else90
   9051 ; AVX512F-NEXT:    vpslld $31, %zmm0, %zmm0
   9052 ; AVX512F-NEXT:    kshiftlw $1, %k0, %k1
   9053 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9054 ; AVX512F-NEXT:    kmovw %k1, %eax
   9055 ; AVX512F-NEXT:    testb %al, %al
   9056 ; AVX512F-NEXT:    je LBB58_94
   9057 ; AVX512F-NEXT:  ## BB#93: ## %cond.store91
   9058 ; AVX512F-NEXT:    vpextrb $14, %xmm5, 46(%rdi)
   9059 ; AVX512F-NEXT:  LBB58_94: ## %else92
   9060 ; AVX512F-NEXT:    vptestmd %zmm0, %zmm0, %k1
   9061 ; AVX512F-NEXT:    kshiftlw $0, %k0, %k0
   9062 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   9063 ; AVX512F-NEXT:    kmovw %k0, %eax
   9064 ; AVX512F-NEXT:    testb %al, %al
   9065 ; AVX512F-NEXT:    je LBB58_96
   9066 ; AVX512F-NEXT:  ## BB#95: ## %cond.store93
   9067 ; AVX512F-NEXT:    vpextrb $15, %xmm5, 47(%rdi)
   9068 ; AVX512F-NEXT:  LBB58_96: ## %else94
   9069 ; AVX512F-NEXT:    kshiftlw $15, %k1, %k0
   9070 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   9071 ; AVX512F-NEXT:    kmovw %k0, %eax
   9072 ; AVX512F-NEXT:    testb %al, %al
   9073 ; AVX512F-NEXT:    je LBB58_98
   9074 ; AVX512F-NEXT:  ## BB#97: ## %cond.store95
   9075 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm0
   9076 ; AVX512F-NEXT:    vpextrb $0, %xmm0, 48(%rdi)
   9077 ; AVX512F-NEXT:  LBB58_98: ## %else96
   9078 ; AVX512F-NEXT:    kshiftlw $14, %k1, %k0
   9079 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   9080 ; AVX512F-NEXT:    kmovw %k0, %eax
   9081 ; AVX512F-NEXT:    testb %al, %al
   9082 ; AVX512F-NEXT:    je LBB58_100
   9083 ; AVX512F-NEXT:  ## BB#99: ## %cond.store97
   9084 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm0
   9085 ; AVX512F-NEXT:    vpextrb $1, %xmm0, 49(%rdi)
   9086 ; AVX512F-NEXT:  LBB58_100: ## %else98
   9087 ; AVX512F-NEXT:    kshiftlw $13, %k1, %k0
   9088 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   9089 ; AVX512F-NEXT:    kmovw %k0, %eax
   9090 ; AVX512F-NEXT:    testb %al, %al
   9091 ; AVX512F-NEXT:    je LBB58_102
   9092 ; AVX512F-NEXT:  ## BB#101: ## %cond.store99
   9093 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm0
   9094 ; AVX512F-NEXT:    vpextrb $2, %xmm0, 50(%rdi)
   9095 ; AVX512F-NEXT:  LBB58_102: ## %else100
   9096 ; AVX512F-NEXT:    kshiftlw $12, %k1, %k0
   9097 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   9098 ; AVX512F-NEXT:    kmovw %k0, %eax
   9099 ; AVX512F-NEXT:    testb %al, %al
   9100 ; AVX512F-NEXT:    je LBB58_104
   9101 ; AVX512F-NEXT:  ## BB#103: ## %cond.store101
   9102 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm0
   9103 ; AVX512F-NEXT:    vpextrb $3, %xmm0, 51(%rdi)
   9104 ; AVX512F-NEXT:  LBB58_104: ## %else102
   9105 ; AVX512F-NEXT:    kshiftlw $11, %k1, %k0
   9106 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   9107 ; AVX512F-NEXT:    kmovw %k0, %eax
   9108 ; AVX512F-NEXT:    testb %al, %al
   9109 ; AVX512F-NEXT:    je LBB58_106
   9110 ; AVX512F-NEXT:  ## BB#105: ## %cond.store103
   9111 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm0
   9112 ; AVX512F-NEXT:    vpextrb $4, %xmm0, 52(%rdi)
   9113 ; AVX512F-NEXT:  LBB58_106: ## %else104
   9114 ; AVX512F-NEXT:    kshiftlw $10, %k1, %k0
   9115 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   9116 ; AVX512F-NEXT:    kmovw %k0, %eax
   9117 ; AVX512F-NEXT:    testb %al, %al
   9118 ; AVX512F-NEXT:    je LBB58_108
   9119 ; AVX512F-NEXT:  ## BB#107: ## %cond.store105
   9120 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm0
   9121 ; AVX512F-NEXT:    vpextrb $5, %xmm0, 53(%rdi)
   9122 ; AVX512F-NEXT:  LBB58_108: ## %else106
   9123 ; AVX512F-NEXT:    kshiftlw $9, %k1, %k0
   9124 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   9125 ; AVX512F-NEXT:    kmovw %k0, %eax
   9126 ; AVX512F-NEXT:    testb %al, %al
   9127 ; AVX512F-NEXT:    je LBB58_110
   9128 ; AVX512F-NEXT:  ## BB#109: ## %cond.store107
   9129 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm0
   9130 ; AVX512F-NEXT:    vpextrb $6, %xmm0, 54(%rdi)
   9131 ; AVX512F-NEXT:  LBB58_110: ## %else108
   9132 ; AVX512F-NEXT:    kshiftlw $8, %k1, %k0
   9133 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   9134 ; AVX512F-NEXT:    kmovw %k0, %eax
   9135 ; AVX512F-NEXT:    testb %al, %al
   9136 ; AVX512F-NEXT:    je LBB58_112
   9137 ; AVX512F-NEXT:  ## BB#111: ## %cond.store109
   9138 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm0
   9139 ; AVX512F-NEXT:    vpextrb $7, %xmm0, 55(%rdi)
   9140 ; AVX512F-NEXT:  LBB58_112: ## %else110
   9141 ; AVX512F-NEXT:    kshiftlw $7, %k1, %k0
   9142 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   9143 ; AVX512F-NEXT:    kmovw %k0, %eax
   9144 ; AVX512F-NEXT:    testb %al, %al
   9145 ; AVX512F-NEXT:    je LBB58_114
   9146 ; AVX512F-NEXT:  ## BB#113: ## %cond.store111
   9147 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm0
   9148 ; AVX512F-NEXT:    vpextrb $8, %xmm0, 56(%rdi)
   9149 ; AVX512F-NEXT:  LBB58_114: ## %else112
   9150 ; AVX512F-NEXT:    kshiftlw $6, %k1, %k0
   9151 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   9152 ; AVX512F-NEXT:    kmovw %k0, %eax
   9153 ; AVX512F-NEXT:    testb %al, %al
   9154 ; AVX512F-NEXT:    je LBB58_116
   9155 ; AVX512F-NEXT:  ## BB#115: ## %cond.store113
   9156 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm0
   9157 ; AVX512F-NEXT:    vpextrb $9, %xmm0, 57(%rdi)
   9158 ; AVX512F-NEXT:  LBB58_116: ## %else114
   9159 ; AVX512F-NEXT:    kshiftlw $5, %k1, %k0
   9160 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   9161 ; AVX512F-NEXT:    kmovw %k0, %eax
   9162 ; AVX512F-NEXT:    testb %al, %al
   9163 ; AVX512F-NEXT:    je LBB58_118
   9164 ; AVX512F-NEXT:  ## BB#117: ## %cond.store115
   9165 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm0
   9166 ; AVX512F-NEXT:    vpextrb $10, %xmm0, 58(%rdi)
   9167 ; AVX512F-NEXT:  LBB58_118: ## %else116
   9168 ; AVX512F-NEXT:    kshiftlw $4, %k1, %k0
   9169 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   9170 ; AVX512F-NEXT:    kmovw %k0, %eax
   9171 ; AVX512F-NEXT:    testb %al, %al
   9172 ; AVX512F-NEXT:    je LBB58_120
   9173 ; AVX512F-NEXT:  ## BB#119: ## %cond.store117
   9174 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm0
   9175 ; AVX512F-NEXT:    vpextrb $11, %xmm0, 59(%rdi)
   9176 ; AVX512F-NEXT:  LBB58_120: ## %else118
   9177 ; AVX512F-NEXT:    kshiftlw $3, %k1, %k0
   9178 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   9179 ; AVX512F-NEXT:    kmovw %k0, %eax
   9180 ; AVX512F-NEXT:    testb %al, %al
   9181 ; AVX512F-NEXT:    je LBB58_122
   9182 ; AVX512F-NEXT:  ## BB#121: ## %cond.store119
   9183 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm0
   9184 ; AVX512F-NEXT:    vpextrb $12, %xmm0, 60(%rdi)
   9185 ; AVX512F-NEXT:  LBB58_122: ## %else120
   9186 ; AVX512F-NEXT:    kshiftlw $2, %k1, %k0
   9187 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   9188 ; AVX512F-NEXT:    kmovw %k0, %eax
   9189 ; AVX512F-NEXT:    testb %al, %al
   9190 ; AVX512F-NEXT:    je LBB58_124
   9191 ; AVX512F-NEXT:  ## BB#123: ## %cond.store121
   9192 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm0
   9193 ; AVX512F-NEXT:    vpextrb $13, %xmm0, 61(%rdi)
   9194 ; AVX512F-NEXT:  LBB58_124: ## %else122
   9195 ; AVX512F-NEXT:    kshiftlw $1, %k1, %k0
   9196 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   9197 ; AVX512F-NEXT:    kmovw %k0, %eax
   9198 ; AVX512F-NEXT:    testb %al, %al
   9199 ; AVX512F-NEXT:    je LBB58_126
   9200 ; AVX512F-NEXT:  ## BB#125: ## %cond.store123
   9201 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm0
   9202 ; AVX512F-NEXT:    vpextrb $14, %xmm0, 62(%rdi)
   9203 ; AVX512F-NEXT:  LBB58_126: ## %else124
   9204 ; AVX512F-NEXT:    kshiftlw $0, %k1, %k0
   9205 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   9206 ; AVX512F-NEXT:    kmovw %k0, %eax
   9207 ; AVX512F-NEXT:    testb %al, %al
   9208 ; AVX512F-NEXT:    je LBB58_128
   9209 ; AVX512F-NEXT:  ## BB#127: ## %cond.store125
   9210 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm0
   9211 ; AVX512F-NEXT:    vpextrb $15, %xmm0, 63(%rdi)
   9212 ; AVX512F-NEXT:  LBB58_128: ## %else126
   9213 ; AVX512F-NEXT:    retq
   9214 ;
   9215 ; SKX-LABEL: test_mask_store_64xi8:
   9216 ; SKX:       ## BB#0:
   9217 ; SKX-NEXT:    vpsllw $7, %zmm0, %zmm0
   9218 ; SKX-NEXT:    vpmovb2m %zmm0, %k1
   9219 ; SKX-NEXT:    vmovdqu8 %zmm1, (%rdi) {%k1}
   9220 ; SKX-NEXT:    retq
   9221   call void @llvm.masked.store.v64i8.p0v64i8(<64 x i8> %val, <64 x i8>* %addr, i32 4, <64 x i1>%mask)
   9222   ret void
   9223 }
   9224 declare void @llvm.masked.store.v64i8.p0v64i8(<64 x i8>, <64 x i8>*, i32, <64 x i1>)
   9225 
   9226 define void @test_mask_store_8xi16(<8 x i1> %mask, <8 x i16>* %addr, <8 x i16> %val) {
   9227 ; AVX-LABEL: test_mask_store_8xi16:
   9228 ; AVX:       ## BB#0:
   9229 ; AVX-NEXT:    vpextrb $0, %xmm0, %eax
   9230 ; AVX-NEXT:    testb $1, %al
   9231 ; AVX-NEXT:    je LBB59_2
   9232 ; AVX-NEXT:  ## BB#1: ## %cond.store
   9233 ; AVX-NEXT:    vmovd %xmm1, %eax
   9234 ; AVX-NEXT:    movw %ax, (%rdi)
   9235 ; AVX-NEXT:  LBB59_2: ## %else
   9236 ; AVX-NEXT:    vpextrb $2, %xmm0, %eax
   9237 ; AVX-NEXT:    testb $1, %al
   9238 ; AVX-NEXT:    je LBB59_4
   9239 ; AVX-NEXT:  ## BB#3: ## %cond.store1
   9240 ; AVX-NEXT:    vpextrw $1, %xmm1, 2(%rdi)
   9241 ; AVX-NEXT:  LBB59_4: ## %else2
   9242 ; AVX-NEXT:    vpextrb $4, %xmm0, %eax
   9243 ; AVX-NEXT:    testb $1, %al
   9244 ; AVX-NEXT:    je LBB59_6
   9245 ; AVX-NEXT:  ## BB#5: ## %cond.store3
   9246 ; AVX-NEXT:    vpextrw $2, %xmm1, 4(%rdi)
   9247 ; AVX-NEXT:  LBB59_6: ## %else4
   9248 ; AVX-NEXT:    vpextrb $6, %xmm0, %eax
   9249 ; AVX-NEXT:    testb $1, %al
   9250 ; AVX-NEXT:    je LBB59_8
   9251 ; AVX-NEXT:  ## BB#7: ## %cond.store5
   9252 ; AVX-NEXT:    vpextrw $3, %xmm1, 6(%rdi)
   9253 ; AVX-NEXT:  LBB59_8: ## %else6
   9254 ; AVX-NEXT:    vpextrb $8, %xmm0, %eax
   9255 ; AVX-NEXT:    testb $1, %al
   9256 ; AVX-NEXT:    je LBB59_10
   9257 ; AVX-NEXT:  ## BB#9: ## %cond.store7
   9258 ; AVX-NEXT:    vpextrw $4, %xmm1, 8(%rdi)
   9259 ; AVX-NEXT:  LBB59_10: ## %else8
   9260 ; AVX-NEXT:    vpextrb $10, %xmm0, %eax
   9261 ; AVX-NEXT:    testb $1, %al
   9262 ; AVX-NEXT:    je LBB59_12
   9263 ; AVX-NEXT:  ## BB#11: ## %cond.store9
   9264 ; AVX-NEXT:    vpextrw $5, %xmm1, 10(%rdi)
   9265 ; AVX-NEXT:  LBB59_12: ## %else10
   9266 ; AVX-NEXT:    vpextrb $12, %xmm0, %eax
   9267 ; AVX-NEXT:    testb $1, %al
   9268 ; AVX-NEXT:    je LBB59_14
   9269 ; AVX-NEXT:  ## BB#13: ## %cond.store11
   9270 ; AVX-NEXT:    vpextrw $6, %xmm1, 12(%rdi)
   9271 ; AVX-NEXT:  LBB59_14: ## %else12
   9272 ; AVX-NEXT:    vpextrb $14, %xmm0, %eax
   9273 ; AVX-NEXT:    testb $1, %al
   9274 ; AVX-NEXT:    je LBB59_16
   9275 ; AVX-NEXT:  ## BB#15: ## %cond.store13
   9276 ; AVX-NEXT:    vpextrw $7, %xmm1, 14(%rdi)
   9277 ; AVX-NEXT:  LBB59_16: ## %else14
   9278 ; AVX-NEXT:    retq
   9279 ;
   9280 ; AVX512F-LABEL: test_mask_store_8xi16:
   9281 ; AVX512F:       ## BB#0:
   9282 ; AVX512F-NEXT:    vpmovsxwq %xmm0, %zmm0
   9283 ; AVX512F-NEXT:    vpsllq $63, %zmm0, %zmm0
   9284 ; AVX512F-NEXT:    vptestmq %zmm0, %zmm0, %k0
   9285 ; AVX512F-NEXT:    kshiftlw $15, %k0, %k1
   9286 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9287 ; AVX512F-NEXT:    kmovw %k1, %eax
   9288 ; AVX512F-NEXT:    testb %al, %al
   9289 ; AVX512F-NEXT:    je LBB59_2
   9290 ; AVX512F-NEXT:  ## BB#1: ## %cond.store
   9291 ; AVX512F-NEXT:    vmovd %xmm1, %eax
   9292 ; AVX512F-NEXT:    movw %ax, (%rdi)
   9293 ; AVX512F-NEXT:  LBB59_2: ## %else
   9294 ; AVX512F-NEXT:    kshiftlw $14, %k0, %k1
   9295 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9296 ; AVX512F-NEXT:    kmovw %k1, %eax
   9297 ; AVX512F-NEXT:    testb %al, %al
   9298 ; AVX512F-NEXT:    je LBB59_4
   9299 ; AVX512F-NEXT:  ## BB#3: ## %cond.store1
   9300 ; AVX512F-NEXT:    vpextrw $1, %xmm1, 2(%rdi)
   9301 ; AVX512F-NEXT:  LBB59_4: ## %else2
   9302 ; AVX512F-NEXT:    kshiftlw $13, %k0, %k1
   9303 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9304 ; AVX512F-NEXT:    kmovw %k1, %eax
   9305 ; AVX512F-NEXT:    testb %al, %al
   9306 ; AVX512F-NEXT:    je LBB59_6
   9307 ; AVX512F-NEXT:  ## BB#5: ## %cond.store3
   9308 ; AVX512F-NEXT:    vpextrw $2, %xmm1, 4(%rdi)
   9309 ; AVX512F-NEXT:  LBB59_6: ## %else4
   9310 ; AVX512F-NEXT:    kshiftlw $12, %k0, %k1
   9311 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9312 ; AVX512F-NEXT:    kmovw %k1, %eax
   9313 ; AVX512F-NEXT:    testb %al, %al
   9314 ; AVX512F-NEXT:    je LBB59_8
   9315 ; AVX512F-NEXT:  ## BB#7: ## %cond.store5
   9316 ; AVX512F-NEXT:    vpextrw $3, %xmm1, 6(%rdi)
   9317 ; AVX512F-NEXT:  LBB59_8: ## %else6
   9318 ; AVX512F-NEXT:    kshiftlw $11, %k0, %k1
   9319 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9320 ; AVX512F-NEXT:    kmovw %k1, %eax
   9321 ; AVX512F-NEXT:    testb %al, %al
   9322 ; AVX512F-NEXT:    je LBB59_10
   9323 ; AVX512F-NEXT:  ## BB#9: ## %cond.store7
   9324 ; AVX512F-NEXT:    vpextrw $4, %xmm1, 8(%rdi)
   9325 ; AVX512F-NEXT:  LBB59_10: ## %else8
   9326 ; AVX512F-NEXT:    kshiftlw $10, %k0, %k1
   9327 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9328 ; AVX512F-NEXT:    kmovw %k1, %eax
   9329 ; AVX512F-NEXT:    testb %al, %al
   9330 ; AVX512F-NEXT:    je LBB59_12
   9331 ; AVX512F-NEXT:  ## BB#11: ## %cond.store9
   9332 ; AVX512F-NEXT:    vpextrw $5, %xmm1, 10(%rdi)
   9333 ; AVX512F-NEXT:  LBB59_12: ## %else10
   9334 ; AVX512F-NEXT:    kshiftlw $9, %k0, %k1
   9335 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9336 ; AVX512F-NEXT:    kmovw %k1, %eax
   9337 ; AVX512F-NEXT:    testb %al, %al
   9338 ; AVX512F-NEXT:    je LBB59_14
   9339 ; AVX512F-NEXT:  ## BB#13: ## %cond.store11
   9340 ; AVX512F-NEXT:    vpextrw $6, %xmm1, 12(%rdi)
   9341 ; AVX512F-NEXT:  LBB59_14: ## %else12
   9342 ; AVX512F-NEXT:    kshiftlw $8, %k0, %k0
   9343 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   9344 ; AVX512F-NEXT:    kmovw %k0, %eax
   9345 ; AVX512F-NEXT:    testb %al, %al
   9346 ; AVX512F-NEXT:    je LBB59_16
   9347 ; AVX512F-NEXT:  ## BB#15: ## %cond.store13
   9348 ; AVX512F-NEXT:    vpextrw $7, %xmm1, 14(%rdi)
   9349 ; AVX512F-NEXT:  LBB59_16: ## %else14
   9350 ; AVX512F-NEXT:    retq
   9351 ;
   9352 ; SKX-LABEL: test_mask_store_8xi16:
   9353 ; SKX:       ## BB#0:
   9354 ; SKX-NEXT:    vpsllw $15, %xmm0, %xmm0
   9355 ; SKX-NEXT:    vpmovw2m %xmm0, %k1
   9356 ; SKX-NEXT:    vmovdqu16 %xmm1, (%rdi) {%k1}
   9357 ; SKX-NEXT:    retq
   9358   call void @llvm.masked.store.v8i16.p0v8i16(<8 x i16> %val, <8 x i16>* %addr, i32 4, <8 x i1>%mask)
   9359   ret void
   9360 }
   9361 declare void @llvm.masked.store.v8i16.p0v8i16(<8 x i16>, <8 x i16>*, i32, <8 x i1>)
   9362 
   9363 define void @test_mask_store_16xi16(<16 x i1> %mask, <16 x i16>* %addr, <16 x i16> %val) {
   9364 ; AVX1-LABEL: test_mask_store_16xi16:
   9365 ; AVX1:       ## BB#0:
   9366 ; AVX1-NEXT:    vpextrb $0, %xmm0, %eax
   9367 ; AVX1-NEXT:    testb $1, %al
   9368 ; AVX1-NEXT:    je LBB60_2
   9369 ; AVX1-NEXT:  ## BB#1: ## %cond.store
   9370 ; AVX1-NEXT:    vmovd %xmm1, %eax
   9371 ; AVX1-NEXT:    movw %ax, (%rdi)
   9372 ; AVX1-NEXT:  LBB60_2: ## %else
   9373 ; AVX1-NEXT:    vpextrb $1, %xmm0, %eax
   9374 ; AVX1-NEXT:    testb $1, %al
   9375 ; AVX1-NEXT:    je LBB60_4
   9376 ; AVX1-NEXT:  ## BB#3: ## %cond.store1
   9377 ; AVX1-NEXT:    vpextrw $1, %xmm1, 2(%rdi)
   9378 ; AVX1-NEXT:  LBB60_4: ## %else2
   9379 ; AVX1-NEXT:    vpextrb $2, %xmm0, %eax
   9380 ; AVX1-NEXT:    testb $1, %al
   9381 ; AVX1-NEXT:    je LBB60_6
   9382 ; AVX1-NEXT:  ## BB#5: ## %cond.store3
   9383 ; AVX1-NEXT:    vpextrw $2, %xmm1, 4(%rdi)
   9384 ; AVX1-NEXT:  LBB60_6: ## %else4
   9385 ; AVX1-NEXT:    vpextrb $3, %xmm0, %eax
   9386 ; AVX1-NEXT:    testb $1, %al
   9387 ; AVX1-NEXT:    je LBB60_8
   9388 ; AVX1-NEXT:  ## BB#7: ## %cond.store5
   9389 ; AVX1-NEXT:    vpextrw $3, %xmm1, 6(%rdi)
   9390 ; AVX1-NEXT:  LBB60_8: ## %else6
   9391 ; AVX1-NEXT:    vpextrb $4, %xmm0, %eax
   9392 ; AVX1-NEXT:    testb $1, %al
   9393 ; AVX1-NEXT:    je LBB60_10
   9394 ; AVX1-NEXT:  ## BB#9: ## %cond.store7
   9395 ; AVX1-NEXT:    vpextrw $4, %xmm1, 8(%rdi)
   9396 ; AVX1-NEXT:  LBB60_10: ## %else8
   9397 ; AVX1-NEXT:    vpextrb $5, %xmm0, %eax
   9398 ; AVX1-NEXT:    testb $1, %al
   9399 ; AVX1-NEXT:    je LBB60_12
   9400 ; AVX1-NEXT:  ## BB#11: ## %cond.store9
   9401 ; AVX1-NEXT:    vpextrw $5, %xmm1, 10(%rdi)
   9402 ; AVX1-NEXT:  LBB60_12: ## %else10
   9403 ; AVX1-NEXT:    vpextrb $6, %xmm0, %eax
   9404 ; AVX1-NEXT:    testb $1, %al
   9405 ; AVX1-NEXT:    je LBB60_14
   9406 ; AVX1-NEXT:  ## BB#13: ## %cond.store11
   9407 ; AVX1-NEXT:    vpextrw $6, %xmm1, 12(%rdi)
   9408 ; AVX1-NEXT:  LBB60_14: ## %else12
   9409 ; AVX1-NEXT:    vpextrb $7, %xmm0, %eax
   9410 ; AVX1-NEXT:    testb $1, %al
   9411 ; AVX1-NEXT:    je LBB60_16
   9412 ; AVX1-NEXT:  ## BB#15: ## %cond.store13
   9413 ; AVX1-NEXT:    vpextrw $7, %xmm1, 14(%rdi)
   9414 ; AVX1-NEXT:  LBB60_16: ## %else14
   9415 ; AVX1-NEXT:    vpextrb $8, %xmm0, %eax
   9416 ; AVX1-NEXT:    testb $1, %al
   9417 ; AVX1-NEXT:    je LBB60_18
   9418 ; AVX1-NEXT:  ## BB#17: ## %cond.store15
   9419 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   9420 ; AVX1-NEXT:    vmovd %xmm2, %eax
   9421 ; AVX1-NEXT:    movw %ax, 16(%rdi)
   9422 ; AVX1-NEXT:  LBB60_18: ## %else16
   9423 ; AVX1-NEXT:    vpextrb $9, %xmm0, %eax
   9424 ; AVX1-NEXT:    testb $1, %al
   9425 ; AVX1-NEXT:    je LBB60_20
   9426 ; AVX1-NEXT:  ## BB#19: ## %cond.store17
   9427 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   9428 ; AVX1-NEXT:    vpextrw $1, %xmm2, 18(%rdi)
   9429 ; AVX1-NEXT:  LBB60_20: ## %else18
   9430 ; AVX1-NEXT:    vpextrb $10, %xmm0, %eax
   9431 ; AVX1-NEXT:    testb $1, %al
   9432 ; AVX1-NEXT:    je LBB60_22
   9433 ; AVX1-NEXT:  ## BB#21: ## %cond.store19
   9434 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   9435 ; AVX1-NEXT:    vpextrw $2, %xmm2, 20(%rdi)
   9436 ; AVX1-NEXT:  LBB60_22: ## %else20
   9437 ; AVX1-NEXT:    vpextrb $11, %xmm0, %eax
   9438 ; AVX1-NEXT:    testb $1, %al
   9439 ; AVX1-NEXT:    je LBB60_24
   9440 ; AVX1-NEXT:  ## BB#23: ## %cond.store21
   9441 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   9442 ; AVX1-NEXT:    vpextrw $3, %xmm2, 22(%rdi)
   9443 ; AVX1-NEXT:  LBB60_24: ## %else22
   9444 ; AVX1-NEXT:    vpextrb $12, %xmm0, %eax
   9445 ; AVX1-NEXT:    testb $1, %al
   9446 ; AVX1-NEXT:    je LBB60_26
   9447 ; AVX1-NEXT:  ## BB#25: ## %cond.store23
   9448 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   9449 ; AVX1-NEXT:    vpextrw $4, %xmm2, 24(%rdi)
   9450 ; AVX1-NEXT:  LBB60_26: ## %else24
   9451 ; AVX1-NEXT:    vpextrb $13, %xmm0, %eax
   9452 ; AVX1-NEXT:    testb $1, %al
   9453 ; AVX1-NEXT:    je LBB60_28
   9454 ; AVX1-NEXT:  ## BB#27: ## %cond.store25
   9455 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   9456 ; AVX1-NEXT:    vpextrw $5, %xmm2, 26(%rdi)
   9457 ; AVX1-NEXT:  LBB60_28: ## %else26
   9458 ; AVX1-NEXT:    vpextrb $14, %xmm0, %eax
   9459 ; AVX1-NEXT:    testb $1, %al
   9460 ; AVX1-NEXT:    je LBB60_30
   9461 ; AVX1-NEXT:  ## BB#29: ## %cond.store27
   9462 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
   9463 ; AVX1-NEXT:    vpextrw $6, %xmm2, 28(%rdi)
   9464 ; AVX1-NEXT:  LBB60_30: ## %else28
   9465 ; AVX1-NEXT:    vpextrb $15, %xmm0, %eax
   9466 ; AVX1-NEXT:    testb $1, %al
   9467 ; AVX1-NEXT:    je LBB60_32
   9468 ; AVX1-NEXT:  ## BB#31: ## %cond.store29
   9469 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm0
   9470 ; AVX1-NEXT:    vpextrw $7, %xmm0, 30(%rdi)
   9471 ; AVX1-NEXT:  LBB60_32: ## %else30
   9472 ; AVX1-NEXT:    vzeroupper
   9473 ; AVX1-NEXT:    retq
   9474 ;
   9475 ; AVX2-LABEL: test_mask_store_16xi16:
   9476 ; AVX2:       ## BB#0:
   9477 ; AVX2-NEXT:    vpextrb $0, %xmm0, %eax
   9478 ; AVX2-NEXT:    testb $1, %al
   9479 ; AVX2-NEXT:    je LBB60_2
   9480 ; AVX2-NEXT:  ## BB#1: ## %cond.store
   9481 ; AVX2-NEXT:    vmovd %xmm1, %eax
   9482 ; AVX2-NEXT:    movw %ax, (%rdi)
   9483 ; AVX2-NEXT:  LBB60_2: ## %else
   9484 ; AVX2-NEXT:    vpextrb $1, %xmm0, %eax
   9485 ; AVX2-NEXT:    testb $1, %al
   9486 ; AVX2-NEXT:    je LBB60_4
   9487 ; AVX2-NEXT:  ## BB#3: ## %cond.store1
   9488 ; AVX2-NEXT:    vpextrw $1, %xmm1, 2(%rdi)
   9489 ; AVX2-NEXT:  LBB60_4: ## %else2
   9490 ; AVX2-NEXT:    vpextrb $2, %xmm0, %eax
   9491 ; AVX2-NEXT:    testb $1, %al
   9492 ; AVX2-NEXT:    je LBB60_6
   9493 ; AVX2-NEXT:  ## BB#5: ## %cond.store3
   9494 ; AVX2-NEXT:    vpextrw $2, %xmm1, 4(%rdi)
   9495 ; AVX2-NEXT:  LBB60_6: ## %else4
   9496 ; AVX2-NEXT:    vpextrb $3, %xmm0, %eax
   9497 ; AVX2-NEXT:    testb $1, %al
   9498 ; AVX2-NEXT:    je LBB60_8
   9499 ; AVX2-NEXT:  ## BB#7: ## %cond.store5
   9500 ; AVX2-NEXT:    vpextrw $3, %xmm1, 6(%rdi)
   9501 ; AVX2-NEXT:  LBB60_8: ## %else6
   9502 ; AVX2-NEXT:    vpextrb $4, %xmm0, %eax
   9503 ; AVX2-NEXT:    testb $1, %al
   9504 ; AVX2-NEXT:    je LBB60_10
   9505 ; AVX2-NEXT:  ## BB#9: ## %cond.store7
   9506 ; AVX2-NEXT:    vpextrw $4, %xmm1, 8(%rdi)
   9507 ; AVX2-NEXT:  LBB60_10: ## %else8
   9508 ; AVX2-NEXT:    vpextrb $5, %xmm0, %eax
   9509 ; AVX2-NEXT:    testb $1, %al
   9510 ; AVX2-NEXT:    je LBB60_12
   9511 ; AVX2-NEXT:  ## BB#11: ## %cond.store9
   9512 ; AVX2-NEXT:    vpextrw $5, %xmm1, 10(%rdi)
   9513 ; AVX2-NEXT:  LBB60_12: ## %else10
   9514 ; AVX2-NEXT:    vpextrb $6, %xmm0, %eax
   9515 ; AVX2-NEXT:    testb $1, %al
   9516 ; AVX2-NEXT:    je LBB60_14
   9517 ; AVX2-NEXT:  ## BB#13: ## %cond.store11
   9518 ; AVX2-NEXT:    vpextrw $6, %xmm1, 12(%rdi)
   9519 ; AVX2-NEXT:  LBB60_14: ## %else12
   9520 ; AVX2-NEXT:    vpextrb $7, %xmm0, %eax
   9521 ; AVX2-NEXT:    testb $1, %al
   9522 ; AVX2-NEXT:    je LBB60_16
   9523 ; AVX2-NEXT:  ## BB#15: ## %cond.store13
   9524 ; AVX2-NEXT:    vpextrw $7, %xmm1, 14(%rdi)
   9525 ; AVX2-NEXT:  LBB60_16: ## %else14
   9526 ; AVX2-NEXT:    vpextrb $8, %xmm0, %eax
   9527 ; AVX2-NEXT:    testb $1, %al
   9528 ; AVX2-NEXT:    je LBB60_18
   9529 ; AVX2-NEXT:  ## BB#17: ## %cond.store15
   9530 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   9531 ; AVX2-NEXT:    vmovd %xmm2, %eax
   9532 ; AVX2-NEXT:    movw %ax, 16(%rdi)
   9533 ; AVX2-NEXT:  LBB60_18: ## %else16
   9534 ; AVX2-NEXT:    vpextrb $9, %xmm0, %eax
   9535 ; AVX2-NEXT:    testb $1, %al
   9536 ; AVX2-NEXT:    je LBB60_20
   9537 ; AVX2-NEXT:  ## BB#19: ## %cond.store17
   9538 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   9539 ; AVX2-NEXT:    vpextrw $1, %xmm2, 18(%rdi)
   9540 ; AVX2-NEXT:  LBB60_20: ## %else18
   9541 ; AVX2-NEXT:    vpextrb $10, %xmm0, %eax
   9542 ; AVX2-NEXT:    testb $1, %al
   9543 ; AVX2-NEXT:    je LBB60_22
   9544 ; AVX2-NEXT:  ## BB#21: ## %cond.store19
   9545 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   9546 ; AVX2-NEXT:    vpextrw $2, %xmm2, 20(%rdi)
   9547 ; AVX2-NEXT:  LBB60_22: ## %else20
   9548 ; AVX2-NEXT:    vpextrb $11, %xmm0, %eax
   9549 ; AVX2-NEXT:    testb $1, %al
   9550 ; AVX2-NEXT:    je LBB60_24
   9551 ; AVX2-NEXT:  ## BB#23: ## %cond.store21
   9552 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   9553 ; AVX2-NEXT:    vpextrw $3, %xmm2, 22(%rdi)
   9554 ; AVX2-NEXT:  LBB60_24: ## %else22
   9555 ; AVX2-NEXT:    vpextrb $12, %xmm0, %eax
   9556 ; AVX2-NEXT:    testb $1, %al
   9557 ; AVX2-NEXT:    je LBB60_26
   9558 ; AVX2-NEXT:  ## BB#25: ## %cond.store23
   9559 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   9560 ; AVX2-NEXT:    vpextrw $4, %xmm2, 24(%rdi)
   9561 ; AVX2-NEXT:  LBB60_26: ## %else24
   9562 ; AVX2-NEXT:    vpextrb $13, %xmm0, %eax
   9563 ; AVX2-NEXT:    testb $1, %al
   9564 ; AVX2-NEXT:    je LBB60_28
   9565 ; AVX2-NEXT:  ## BB#27: ## %cond.store25
   9566 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   9567 ; AVX2-NEXT:    vpextrw $5, %xmm2, 26(%rdi)
   9568 ; AVX2-NEXT:  LBB60_28: ## %else26
   9569 ; AVX2-NEXT:    vpextrb $14, %xmm0, %eax
   9570 ; AVX2-NEXT:    testb $1, %al
   9571 ; AVX2-NEXT:    je LBB60_30
   9572 ; AVX2-NEXT:  ## BB#29: ## %cond.store27
   9573 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   9574 ; AVX2-NEXT:    vpextrw $6, %xmm2, 28(%rdi)
   9575 ; AVX2-NEXT:  LBB60_30: ## %else28
   9576 ; AVX2-NEXT:    vpextrb $15, %xmm0, %eax
   9577 ; AVX2-NEXT:    testb $1, %al
   9578 ; AVX2-NEXT:    je LBB60_32
   9579 ; AVX2-NEXT:  ## BB#31: ## %cond.store29
   9580 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm0
   9581 ; AVX2-NEXT:    vpextrw $7, %xmm0, 30(%rdi)
   9582 ; AVX2-NEXT:  LBB60_32: ## %else30
   9583 ; AVX2-NEXT:    vzeroupper
   9584 ; AVX2-NEXT:    retq
   9585 ;
   9586 ; AVX512F-LABEL: test_mask_store_16xi16:
   9587 ; AVX512F:       ## BB#0:
   9588 ; AVX512F-NEXT:    vpmovsxbd %xmm0, %zmm0
   9589 ; AVX512F-NEXT:    vpslld $31, %zmm0, %zmm0
   9590 ; AVX512F-NEXT:    vptestmd %zmm0, %zmm0, %k0
   9591 ; AVX512F-NEXT:    kshiftlw $15, %k0, %k1
   9592 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9593 ; AVX512F-NEXT:    kmovw %k1, %eax
   9594 ; AVX512F-NEXT:    testb %al, %al
   9595 ; AVX512F-NEXT:    je LBB60_2
   9596 ; AVX512F-NEXT:  ## BB#1: ## %cond.store
   9597 ; AVX512F-NEXT:    vmovd %xmm1, %eax
   9598 ; AVX512F-NEXT:    movw %ax, (%rdi)
   9599 ; AVX512F-NEXT:  LBB60_2: ## %else
   9600 ; AVX512F-NEXT:    kshiftlw $14, %k0, %k1
   9601 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9602 ; AVX512F-NEXT:    kmovw %k1, %eax
   9603 ; AVX512F-NEXT:    testb %al, %al
   9604 ; AVX512F-NEXT:    je LBB60_4
   9605 ; AVX512F-NEXT:  ## BB#3: ## %cond.store1
   9606 ; AVX512F-NEXT:    vpextrw $1, %xmm1, 2(%rdi)
   9607 ; AVX512F-NEXT:  LBB60_4: ## %else2
   9608 ; AVX512F-NEXT:    kshiftlw $13, %k0, %k1
   9609 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9610 ; AVX512F-NEXT:    kmovw %k1, %eax
   9611 ; AVX512F-NEXT:    testb %al, %al
   9612 ; AVX512F-NEXT:    je LBB60_6
   9613 ; AVX512F-NEXT:  ## BB#5: ## %cond.store3
   9614 ; AVX512F-NEXT:    vpextrw $2, %xmm1, 4(%rdi)
   9615 ; AVX512F-NEXT:  LBB60_6: ## %else4
   9616 ; AVX512F-NEXT:    kshiftlw $12, %k0, %k1
   9617 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9618 ; AVX512F-NEXT:    kmovw %k1, %eax
   9619 ; AVX512F-NEXT:    testb %al, %al
   9620 ; AVX512F-NEXT:    je LBB60_8
   9621 ; AVX512F-NEXT:  ## BB#7: ## %cond.store5
   9622 ; AVX512F-NEXT:    vpextrw $3, %xmm1, 6(%rdi)
   9623 ; AVX512F-NEXT:  LBB60_8: ## %else6
   9624 ; AVX512F-NEXT:    kshiftlw $11, %k0, %k1
   9625 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9626 ; AVX512F-NEXT:    kmovw %k1, %eax
   9627 ; AVX512F-NEXT:    testb %al, %al
   9628 ; AVX512F-NEXT:    je LBB60_10
   9629 ; AVX512F-NEXT:  ## BB#9: ## %cond.store7
   9630 ; AVX512F-NEXT:    vpextrw $4, %xmm1, 8(%rdi)
   9631 ; AVX512F-NEXT:  LBB60_10: ## %else8
   9632 ; AVX512F-NEXT:    kshiftlw $10, %k0, %k1
   9633 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9634 ; AVX512F-NEXT:    kmovw %k1, %eax
   9635 ; AVX512F-NEXT:    testb %al, %al
   9636 ; AVX512F-NEXT:    je LBB60_12
   9637 ; AVX512F-NEXT:  ## BB#11: ## %cond.store9
   9638 ; AVX512F-NEXT:    vpextrw $5, %xmm1, 10(%rdi)
   9639 ; AVX512F-NEXT:  LBB60_12: ## %else10
   9640 ; AVX512F-NEXT:    kshiftlw $9, %k0, %k1
   9641 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9642 ; AVX512F-NEXT:    kmovw %k1, %eax
   9643 ; AVX512F-NEXT:    testb %al, %al
   9644 ; AVX512F-NEXT:    je LBB60_14
   9645 ; AVX512F-NEXT:  ## BB#13: ## %cond.store11
   9646 ; AVX512F-NEXT:    vpextrw $6, %xmm1, 12(%rdi)
   9647 ; AVX512F-NEXT:  LBB60_14: ## %else12
   9648 ; AVX512F-NEXT:    kshiftlw $8, %k0, %k1
   9649 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9650 ; AVX512F-NEXT:    kmovw %k1, %eax
   9651 ; AVX512F-NEXT:    testb %al, %al
   9652 ; AVX512F-NEXT:    je LBB60_16
   9653 ; AVX512F-NEXT:  ## BB#15: ## %cond.store13
   9654 ; AVX512F-NEXT:    vpextrw $7, %xmm1, 14(%rdi)
   9655 ; AVX512F-NEXT:  LBB60_16: ## %else14
   9656 ; AVX512F-NEXT:    kshiftlw $7, %k0, %k1
   9657 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9658 ; AVX512F-NEXT:    kmovw %k1, %eax
   9659 ; AVX512F-NEXT:    testb %al, %al
   9660 ; AVX512F-NEXT:    je LBB60_18
   9661 ; AVX512F-NEXT:  ## BB#17: ## %cond.store15
   9662 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm0
   9663 ; AVX512F-NEXT:    vmovd %xmm0, %eax
   9664 ; AVX512F-NEXT:    movw %ax, 16(%rdi)
   9665 ; AVX512F-NEXT:  LBB60_18: ## %else16
   9666 ; AVX512F-NEXT:    kshiftlw $6, %k0, %k1
   9667 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9668 ; AVX512F-NEXT:    kmovw %k1, %eax
   9669 ; AVX512F-NEXT:    testb %al, %al
   9670 ; AVX512F-NEXT:    je LBB60_20
   9671 ; AVX512F-NEXT:  ## BB#19: ## %cond.store17
   9672 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm0
   9673 ; AVX512F-NEXT:    vpextrw $1, %xmm0, 18(%rdi)
   9674 ; AVX512F-NEXT:  LBB60_20: ## %else18
   9675 ; AVX512F-NEXT:    kshiftlw $5, %k0, %k1
   9676 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9677 ; AVX512F-NEXT:    kmovw %k1, %eax
   9678 ; AVX512F-NEXT:    testb %al, %al
   9679 ; AVX512F-NEXT:    je LBB60_22
   9680 ; AVX512F-NEXT:  ## BB#21: ## %cond.store19
   9681 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm0
   9682 ; AVX512F-NEXT:    vpextrw $2, %xmm0, 20(%rdi)
   9683 ; AVX512F-NEXT:  LBB60_22: ## %else20
   9684 ; AVX512F-NEXT:    kshiftlw $4, %k0, %k1
   9685 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9686 ; AVX512F-NEXT:    kmovw %k1, %eax
   9687 ; AVX512F-NEXT:    testb %al, %al
   9688 ; AVX512F-NEXT:    je LBB60_24
   9689 ; AVX512F-NEXT:  ## BB#23: ## %cond.store21
   9690 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm0
   9691 ; AVX512F-NEXT:    vpextrw $3, %xmm0, 22(%rdi)
   9692 ; AVX512F-NEXT:  LBB60_24: ## %else22
   9693 ; AVX512F-NEXT:    kshiftlw $3, %k0, %k1
   9694 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9695 ; AVX512F-NEXT:    kmovw %k1, %eax
   9696 ; AVX512F-NEXT:    testb %al, %al
   9697 ; AVX512F-NEXT:    je LBB60_26
   9698 ; AVX512F-NEXT:  ## BB#25: ## %cond.store23
   9699 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm0
   9700 ; AVX512F-NEXT:    vpextrw $4, %xmm0, 24(%rdi)
   9701 ; AVX512F-NEXT:  LBB60_26: ## %else24
   9702 ; AVX512F-NEXT:    kshiftlw $2, %k0, %k1
   9703 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9704 ; AVX512F-NEXT:    kmovw %k1, %eax
   9705 ; AVX512F-NEXT:    testb %al, %al
   9706 ; AVX512F-NEXT:    je LBB60_28
   9707 ; AVX512F-NEXT:  ## BB#27: ## %cond.store25
   9708 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm0
   9709 ; AVX512F-NEXT:    vpextrw $5, %xmm0, 26(%rdi)
   9710 ; AVX512F-NEXT:  LBB60_28: ## %else26
   9711 ; AVX512F-NEXT:    kshiftlw $1, %k0, %k1
   9712 ; AVX512F-NEXT:    kshiftrw $15, %k1, %k1
   9713 ; AVX512F-NEXT:    kmovw %k1, %eax
   9714 ; AVX512F-NEXT:    testb %al, %al
   9715 ; AVX512F-NEXT:    je LBB60_30
   9716 ; AVX512F-NEXT:  ## BB#29: ## %cond.store27
   9717 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm0
   9718 ; AVX512F-NEXT:    vpextrw $6, %xmm0, 28(%rdi)
   9719 ; AVX512F-NEXT:  LBB60_30: ## %else28
   9720 ; AVX512F-NEXT:    kshiftlw $0, %k0, %k0
   9721 ; AVX512F-NEXT:    kshiftrw $15, %k0, %k0
   9722 ; AVX512F-NEXT:    kmovw %k0, %eax
   9723 ; AVX512F-NEXT:    testb %al, %al
   9724 ; AVX512F-NEXT:    je LBB60_32
   9725 ; AVX512F-NEXT:  ## BB#31: ## %cond.store29
   9726 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm0
   9727 ; AVX512F-NEXT:    vpextrw $7, %xmm0, 30(%rdi)
   9728 ; AVX512F-NEXT:  LBB60_32: ## %else30
   9729 ; AVX512F-NEXT:    retq
   9730 ;
   9731 ; SKX-LABEL: test_mask_store_16xi16:
   9732 ; SKX:       ## BB#0:
   9733 ; SKX-NEXT:    vpsllw $7, %xmm0, %xmm0
   9734 ; SKX-NEXT:    vpmovb2m %xmm0, %k1
   9735 ; SKX-NEXT:    vmovdqu16 %ymm1, (%rdi) {%k1}
   9736 ; SKX-NEXT:    retq
   9737   call void @llvm.masked.store.v16i16.p0v16i16(<16 x i16> %val, <16 x i16>* %addr, i32 4, <16 x i1>%mask)
   9738   ret void
   9739 }
   9740 declare void @llvm.masked.store.v16i16.p0v16i16(<16 x i16>, <16 x i16>*, i32, <16 x i1>)
   9741 
   9742 define void @test_mask_store_32xi16(<32 x i1> %mask, <32 x i16>* %addr, <32 x i16> %val) {
   9743 ; AVX1-LABEL: test_mask_store_32xi16:
   9744 ; AVX1:       ## BB#0:
   9745 ; AVX1-NEXT:    vpextrb $0, %xmm0, %eax
   9746 ; AVX1-NEXT:    testb $1, %al
   9747 ; AVX1-NEXT:    je LBB61_2
   9748 ; AVX1-NEXT:  ## BB#1: ## %cond.store
   9749 ; AVX1-NEXT:    vmovd %xmm1, %eax
   9750 ; AVX1-NEXT:    movw %ax, (%rdi)
   9751 ; AVX1-NEXT:  LBB61_2: ## %else
   9752 ; AVX1-NEXT:    vpextrb $1, %xmm0, %eax
   9753 ; AVX1-NEXT:    testb $1, %al
   9754 ; AVX1-NEXT:    je LBB61_4
   9755 ; AVX1-NEXT:  ## BB#3: ## %cond.store1
   9756 ; AVX1-NEXT:    vpextrw $1, %xmm1, 2(%rdi)
   9757 ; AVX1-NEXT:  LBB61_4: ## %else2
   9758 ; AVX1-NEXT:    vpextrb $2, %xmm0, %eax
   9759 ; AVX1-NEXT:    testb $1, %al
   9760 ; AVX1-NEXT:    je LBB61_6
   9761 ; AVX1-NEXT:  ## BB#5: ## %cond.store3
   9762 ; AVX1-NEXT:    vpextrw $2, %xmm1, 4(%rdi)
   9763 ; AVX1-NEXT:  LBB61_6: ## %else4
   9764 ; AVX1-NEXT:    vpextrb $3, %xmm0, %eax
   9765 ; AVX1-NEXT:    testb $1, %al
   9766 ; AVX1-NEXT:    je LBB61_8
   9767 ; AVX1-NEXT:  ## BB#7: ## %cond.store5
   9768 ; AVX1-NEXT:    vpextrw $3, %xmm1, 6(%rdi)
   9769 ; AVX1-NEXT:  LBB61_8: ## %else6
   9770 ; AVX1-NEXT:    vpextrb $4, %xmm0, %eax
   9771 ; AVX1-NEXT:    testb $1, %al
   9772 ; AVX1-NEXT:    je LBB61_10
   9773 ; AVX1-NEXT:  ## BB#9: ## %cond.store7
   9774 ; AVX1-NEXT:    vpextrw $4, %xmm1, 8(%rdi)
   9775 ; AVX1-NEXT:  LBB61_10: ## %else8
   9776 ; AVX1-NEXT:    vpextrb $5, %xmm0, %eax
   9777 ; AVX1-NEXT:    testb $1, %al
   9778 ; AVX1-NEXT:    je LBB61_12
   9779 ; AVX1-NEXT:  ## BB#11: ## %cond.store9
   9780 ; AVX1-NEXT:    vpextrw $5, %xmm1, 10(%rdi)
   9781 ; AVX1-NEXT:  LBB61_12: ## %else10
   9782 ; AVX1-NEXT:    vpextrb $6, %xmm0, %eax
   9783 ; AVX1-NEXT:    testb $1, %al
   9784 ; AVX1-NEXT:    je LBB61_14
   9785 ; AVX1-NEXT:  ## BB#13: ## %cond.store11
   9786 ; AVX1-NEXT:    vpextrw $6, %xmm1, 12(%rdi)
   9787 ; AVX1-NEXT:  LBB61_14: ## %else12
   9788 ; AVX1-NEXT:    vpextrb $7, %xmm0, %eax
   9789 ; AVX1-NEXT:    testb $1, %al
   9790 ; AVX1-NEXT:    je LBB61_16
   9791 ; AVX1-NEXT:  ## BB#15: ## %cond.store13
   9792 ; AVX1-NEXT:    vpextrw $7, %xmm1, 14(%rdi)
   9793 ; AVX1-NEXT:  LBB61_16: ## %else14
   9794 ; AVX1-NEXT:    vpextrb $8, %xmm0, %eax
   9795 ; AVX1-NEXT:    testb $1, %al
   9796 ; AVX1-NEXT:    je LBB61_18
   9797 ; AVX1-NEXT:  ## BB#17: ## %cond.store15
   9798 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   9799 ; AVX1-NEXT:    vmovd %xmm3, %eax
   9800 ; AVX1-NEXT:    movw %ax, 16(%rdi)
   9801 ; AVX1-NEXT:  LBB61_18: ## %else16
   9802 ; AVX1-NEXT:    vpextrb $9, %xmm0, %eax
   9803 ; AVX1-NEXT:    testb $1, %al
   9804 ; AVX1-NEXT:    je LBB61_20
   9805 ; AVX1-NEXT:  ## BB#19: ## %cond.store17
   9806 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   9807 ; AVX1-NEXT:    vpextrw $1, %xmm3, 18(%rdi)
   9808 ; AVX1-NEXT:  LBB61_20: ## %else18
   9809 ; AVX1-NEXT:    vpextrb $10, %xmm0, %eax
   9810 ; AVX1-NEXT:    testb $1, %al
   9811 ; AVX1-NEXT:    je LBB61_22
   9812 ; AVX1-NEXT:  ## BB#21: ## %cond.store19
   9813 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   9814 ; AVX1-NEXT:    vpextrw $2, %xmm3, 20(%rdi)
   9815 ; AVX1-NEXT:  LBB61_22: ## %else20
   9816 ; AVX1-NEXT:    vpextrb $11, %xmm0, %eax
   9817 ; AVX1-NEXT:    testb $1, %al
   9818 ; AVX1-NEXT:    je LBB61_24
   9819 ; AVX1-NEXT:  ## BB#23: ## %cond.store21
   9820 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   9821 ; AVX1-NEXT:    vpextrw $3, %xmm3, 22(%rdi)
   9822 ; AVX1-NEXT:  LBB61_24: ## %else22
   9823 ; AVX1-NEXT:    vpextrb $12, %xmm0, %eax
   9824 ; AVX1-NEXT:    testb $1, %al
   9825 ; AVX1-NEXT:    je LBB61_26
   9826 ; AVX1-NEXT:  ## BB#25: ## %cond.store23
   9827 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   9828 ; AVX1-NEXT:    vpextrw $4, %xmm3, 24(%rdi)
   9829 ; AVX1-NEXT:  LBB61_26: ## %else24
   9830 ; AVX1-NEXT:    vpextrb $13, %xmm0, %eax
   9831 ; AVX1-NEXT:    testb $1, %al
   9832 ; AVX1-NEXT:    je LBB61_28
   9833 ; AVX1-NEXT:  ## BB#27: ## %cond.store25
   9834 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   9835 ; AVX1-NEXT:    vpextrw $5, %xmm3, 26(%rdi)
   9836 ; AVX1-NEXT:  LBB61_28: ## %else26
   9837 ; AVX1-NEXT:    vpextrb $14, %xmm0, %eax
   9838 ; AVX1-NEXT:    testb $1, %al
   9839 ; AVX1-NEXT:    je LBB61_30
   9840 ; AVX1-NEXT:  ## BB#29: ## %cond.store27
   9841 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   9842 ; AVX1-NEXT:    vpextrw $6, %xmm3, 28(%rdi)
   9843 ; AVX1-NEXT:  LBB61_30: ## %else28
   9844 ; AVX1-NEXT:    vpextrb $15, %xmm0, %eax
   9845 ; AVX1-NEXT:    testb $1, %al
   9846 ; AVX1-NEXT:    je LBB61_32
   9847 ; AVX1-NEXT:  ## BB#31: ## %cond.store29
   9848 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm1
   9849 ; AVX1-NEXT:    vpextrw $7, %xmm1, 30(%rdi)
   9850 ; AVX1-NEXT:  LBB61_32: ## %else30
   9851 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
   9852 ; AVX1-NEXT:    vpextrb $0, %xmm0, %eax
   9853 ; AVX1-NEXT:    testb $1, %al
   9854 ; AVX1-NEXT:    je LBB61_34
   9855 ; AVX1-NEXT:  ## BB#33: ## %cond.store31
   9856 ; AVX1-NEXT:    vmovd %xmm2, %eax
   9857 ; AVX1-NEXT:    movw %ax, 32(%rdi)
   9858 ; AVX1-NEXT:  LBB61_34: ## %else32
   9859 ; AVX1-NEXT:    vpextrb $1, %xmm0, %eax
   9860 ; AVX1-NEXT:    testb $1, %al
   9861 ; AVX1-NEXT:    je LBB61_36
   9862 ; AVX1-NEXT:  ## BB#35: ## %cond.store33
   9863 ; AVX1-NEXT:    vpextrw $1, %xmm2, 34(%rdi)
   9864 ; AVX1-NEXT:  LBB61_36: ## %else34
   9865 ; AVX1-NEXT:    vpextrb $2, %xmm0, %eax
   9866 ; AVX1-NEXT:    testb $1, %al
   9867 ; AVX1-NEXT:    je LBB61_38
   9868 ; AVX1-NEXT:  ## BB#37: ## %cond.store35
   9869 ; AVX1-NEXT:    vpextrw $2, %xmm2, 36(%rdi)
   9870 ; AVX1-NEXT:  LBB61_38: ## %else36
   9871 ; AVX1-NEXT:    vpextrb $3, %xmm0, %eax
   9872 ; AVX1-NEXT:    testb $1, %al
   9873 ; AVX1-NEXT:    je LBB61_40
   9874 ; AVX1-NEXT:  ## BB#39: ## %cond.store37
   9875 ; AVX1-NEXT:    vpextrw $3, %xmm2, 38(%rdi)
   9876 ; AVX1-NEXT:  LBB61_40: ## %else38
   9877 ; AVX1-NEXT:    vpextrb $4, %xmm0, %eax
   9878 ; AVX1-NEXT:    testb $1, %al
   9879 ; AVX1-NEXT:    je LBB61_42
   9880 ; AVX1-NEXT:  ## BB#41: ## %cond.store39
   9881 ; AVX1-NEXT:    vpextrw $4, %xmm2, 40(%rdi)
   9882 ; AVX1-NEXT:  LBB61_42: ## %else40
   9883 ; AVX1-NEXT:    vpextrb $5, %xmm0, %eax
   9884 ; AVX1-NEXT:    testb $1, %al
   9885 ; AVX1-NEXT:    je LBB61_44
   9886 ; AVX1-NEXT:  ## BB#43: ## %cond.store41
   9887 ; AVX1-NEXT:    vpextrw $5, %xmm2, 42(%rdi)
   9888 ; AVX1-NEXT:  LBB61_44: ## %else42
   9889 ; AVX1-NEXT:    vpextrb $6, %xmm0, %eax
   9890 ; AVX1-NEXT:    testb $1, %al
   9891 ; AVX1-NEXT:    je LBB61_46
   9892 ; AVX1-NEXT:  ## BB#45: ## %cond.store43
   9893 ; AVX1-NEXT:    vpextrw $6, %xmm2, 44(%rdi)
   9894 ; AVX1-NEXT:  LBB61_46: ## %else44
   9895 ; AVX1-NEXT:    vpextrb $7, %xmm0, %eax
   9896 ; AVX1-NEXT:    testb $1, %al
   9897 ; AVX1-NEXT:    je LBB61_48
   9898 ; AVX1-NEXT:  ## BB#47: ## %cond.store45
   9899 ; AVX1-NEXT:    vpextrw $7, %xmm2, 46(%rdi)
   9900 ; AVX1-NEXT:  LBB61_48: ## %else46
   9901 ; AVX1-NEXT:    vpextrb $8, %xmm0, %eax
   9902 ; AVX1-NEXT:    testb $1, %al
   9903 ; AVX1-NEXT:    je LBB61_50
   9904 ; AVX1-NEXT:  ## BB#49: ## %cond.store47
   9905 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm1
   9906 ; AVX1-NEXT:    vmovd %xmm1, %eax
   9907 ; AVX1-NEXT:    movw %ax, 48(%rdi)
   9908 ; AVX1-NEXT:  LBB61_50: ## %else48
   9909 ; AVX1-NEXT:    vpextrb $9, %xmm0, %eax
   9910 ; AVX1-NEXT:    testb $1, %al
   9911 ; AVX1-NEXT:    je LBB61_52
   9912 ; AVX1-NEXT:  ## BB#51: ## %cond.store49
   9913 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm1
   9914 ; AVX1-NEXT:    vpextrw $1, %xmm1, 50(%rdi)
   9915 ; AVX1-NEXT:  LBB61_52: ## %else50
   9916 ; AVX1-NEXT:    vpextrb $10, %xmm0, %eax
   9917 ; AVX1-NEXT:    testb $1, %al
   9918 ; AVX1-NEXT:    je LBB61_54
   9919 ; AVX1-NEXT:  ## BB#53: ## %cond.store51
   9920 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm1
   9921 ; AVX1-NEXT:    vpextrw $2, %xmm1, 52(%rdi)
   9922 ; AVX1-NEXT:  LBB61_54: ## %else52
   9923 ; AVX1-NEXT:    vpextrb $11, %xmm0, %eax
   9924 ; AVX1-NEXT:    testb $1, %al
   9925 ; AVX1-NEXT:    je LBB61_56
   9926 ; AVX1-NEXT:  ## BB#55: ## %cond.store53
   9927 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm1
   9928 ; AVX1-NEXT:    vpextrw $3, %xmm1, 54(%rdi)
   9929 ; AVX1-NEXT:  LBB61_56: ## %else54
   9930 ; AVX1-NEXT:    vpextrb $12, %xmm0, %eax
   9931 ; AVX1-NEXT:    testb $1, %al
   9932 ; AVX1-NEXT:    je LBB61_58
   9933 ; AVX1-NEXT:  ## BB#57: ## %cond.store55
   9934 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm1
   9935 ; AVX1-NEXT:    vpextrw $4, %xmm1, 56(%rdi)
   9936 ; AVX1-NEXT:  LBB61_58: ## %else56
   9937 ; AVX1-NEXT:    vpextrb $13, %xmm0, %eax
   9938 ; AVX1-NEXT:    testb $1, %al
   9939 ; AVX1-NEXT:    je LBB61_60
   9940 ; AVX1-NEXT:  ## BB#59: ## %cond.store57
   9941 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm1
   9942 ; AVX1-NEXT:    vpextrw $5, %xmm1, 58(%rdi)
   9943 ; AVX1-NEXT:  LBB61_60: ## %else58
   9944 ; AVX1-NEXT:    vpextrb $14, %xmm0, %eax
   9945 ; AVX1-NEXT:    testb $1, %al
   9946 ; AVX1-NEXT:    je LBB61_62
   9947 ; AVX1-NEXT:  ## BB#61: ## %cond.store59
   9948 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm1
   9949 ; AVX1-NEXT:    vpextrw $6, %xmm1, 60(%rdi)
   9950 ; AVX1-NEXT:  LBB61_62: ## %else60
   9951 ; AVX1-NEXT:    vpextrb $15, %xmm0, %eax
   9952 ; AVX1-NEXT:    testb $1, %al
   9953 ; AVX1-NEXT:    je LBB61_64
   9954 ; AVX1-NEXT:  ## BB#63: ## %cond.store61
   9955 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm0
   9956 ; AVX1-NEXT:    vpextrw $7, %xmm0, 62(%rdi)
   9957 ; AVX1-NEXT:  LBB61_64: ## %else62
   9958 ; AVX1-NEXT:    vzeroupper
   9959 ; AVX1-NEXT:    retq
   9960 ;
   9961 ; AVX2-LABEL: test_mask_store_32xi16:
   9962 ; AVX2:       ## BB#0:
   9963 ; AVX2-NEXT:    vpextrb $0, %xmm0, %eax
   9964 ; AVX2-NEXT:    testb $1, %al
   9965 ; AVX2-NEXT:    je LBB61_2
   9966 ; AVX2-NEXT:  ## BB#1: ## %cond.store
   9967 ; AVX2-NEXT:    vmovd %xmm1, %eax
   9968 ; AVX2-NEXT:    movw %ax, (%rdi)
   9969 ; AVX2-NEXT:  LBB61_2: ## %else
   9970 ; AVX2-NEXT:    vpextrb $1, %xmm0, %eax
   9971 ; AVX2-NEXT:    testb $1, %al
   9972 ; AVX2-NEXT:    je LBB61_4
   9973 ; AVX2-NEXT:  ## BB#3: ## %cond.store1
   9974 ; AVX2-NEXT:    vpextrw $1, %xmm1, 2(%rdi)
   9975 ; AVX2-NEXT:  LBB61_4: ## %else2
   9976 ; AVX2-NEXT:    vpextrb $2, %xmm0, %eax
   9977 ; AVX2-NEXT:    testb $1, %al
   9978 ; AVX2-NEXT:    je LBB61_6
   9979 ; AVX2-NEXT:  ## BB#5: ## %cond.store3
   9980 ; AVX2-NEXT:    vpextrw $2, %xmm1, 4(%rdi)
   9981 ; AVX2-NEXT:  LBB61_6: ## %else4
   9982 ; AVX2-NEXT:    vpextrb $3, %xmm0, %eax
   9983 ; AVX2-NEXT:    testb $1, %al
   9984 ; AVX2-NEXT:    je LBB61_8
   9985 ; AVX2-NEXT:  ## BB#7: ## %cond.store5
   9986 ; AVX2-NEXT:    vpextrw $3, %xmm1, 6(%rdi)
   9987 ; AVX2-NEXT:  LBB61_8: ## %else6
   9988 ; AVX2-NEXT:    vpextrb $4, %xmm0, %eax
   9989 ; AVX2-NEXT:    testb $1, %al
   9990 ; AVX2-NEXT:    je LBB61_10
   9991 ; AVX2-NEXT:  ## BB#9: ## %cond.store7
   9992 ; AVX2-NEXT:    vpextrw $4, %xmm1, 8(%rdi)
   9993 ; AVX2-NEXT:  LBB61_10: ## %else8
   9994 ; AVX2-NEXT:    vpextrb $5, %xmm0, %eax
   9995 ; AVX2-NEXT:    testb $1, %al
   9996 ; AVX2-NEXT:    je LBB61_12
   9997 ; AVX2-NEXT:  ## BB#11: ## %cond.store9
   9998 ; AVX2-NEXT:    vpextrw $5, %xmm1, 10(%rdi)
   9999 ; AVX2-NEXT:  LBB61_12: ## %else10
   10000 ; AVX2-NEXT:    vpextrb $6, %xmm0, %eax
   10001 ; AVX2-NEXT:    testb $1, %al
   10002 ; AVX2-NEXT:    je LBB61_14
   10003 ; AVX2-NEXT:  ## BB#13: ## %cond.store11
   10004 ; AVX2-NEXT:    vpextrw $6, %xmm1, 12(%rdi)
   10005 ; AVX2-NEXT:  LBB61_14: ## %else12
   10006 ; AVX2-NEXT:    vpextrb $7, %xmm0, %eax
   10007 ; AVX2-NEXT:    testb $1, %al
   10008 ; AVX2-NEXT:    je LBB61_16
   10009 ; AVX2-NEXT:  ## BB#15: ## %cond.store13
   10010 ; AVX2-NEXT:    vpextrw $7, %xmm1, 14(%rdi)
   10011 ; AVX2-NEXT:  LBB61_16: ## %else14
   10012 ; AVX2-NEXT:    vpextrb $8, %xmm0, %eax
   10013 ; AVX2-NEXT:    testb $1, %al
   10014 ; AVX2-NEXT:    je LBB61_18
   10015 ; AVX2-NEXT:  ## BB#17: ## %cond.store15
   10016 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm3
   10017 ; AVX2-NEXT:    vmovd %xmm3, %eax
   10018 ; AVX2-NEXT:    movw %ax, 16(%rdi)
   10019 ; AVX2-NEXT:  LBB61_18: ## %else16
   10020 ; AVX2-NEXT:    vpextrb $9, %xmm0, %eax
   10021 ; AVX2-NEXT:    testb $1, %al
   10022 ; AVX2-NEXT:    je LBB61_20
   10023 ; AVX2-NEXT:  ## BB#19: ## %cond.store17
   10024 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm3
   10025 ; AVX2-NEXT:    vpextrw $1, %xmm3, 18(%rdi)
   10026 ; AVX2-NEXT:  LBB61_20: ## %else18
   10027 ; AVX2-NEXT:    vpextrb $10, %xmm0, %eax
   10028 ; AVX2-NEXT:    testb $1, %al
   10029 ; AVX2-NEXT:    je LBB61_22
   10030 ; AVX2-NEXT:  ## BB#21: ## %cond.store19
   10031 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm3
   10032 ; AVX2-NEXT:    vpextrw $2, %xmm3, 20(%rdi)
   10033 ; AVX2-NEXT:  LBB61_22: ## %else20
   10034 ; AVX2-NEXT:    vpextrb $11, %xmm0, %eax
   10035 ; AVX2-NEXT:    testb $1, %al
   10036 ; AVX2-NEXT:    je LBB61_24
   10037 ; AVX2-NEXT:  ## BB#23: ## %cond.store21
   10038 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm3
   10039 ; AVX2-NEXT:    vpextrw $3, %xmm3, 22(%rdi)
   10040 ; AVX2-NEXT:  LBB61_24: ## %else22
   10041 ; AVX2-NEXT:    vpextrb $12, %xmm0, %eax
   10042 ; AVX2-NEXT:    testb $1, %al
   10043 ; AVX2-NEXT:    je LBB61_26
   10044 ; AVX2-NEXT:  ## BB#25: ## %cond.store23
   10045 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm3
   10046 ; AVX2-NEXT:    vpextrw $4, %xmm3, 24(%rdi)
   10047 ; AVX2-NEXT:  LBB61_26: ## %else24
   10048 ; AVX2-NEXT:    vpextrb $13, %xmm0, %eax
   10049 ; AVX2-NEXT:    testb $1, %al
   10050 ; AVX2-NEXT:    je LBB61_28
   10051 ; AVX2-NEXT:  ## BB#27: ## %cond.store25
   10052 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm3
   10053 ; AVX2-NEXT:    vpextrw $5, %xmm3, 26(%rdi)
   10054 ; AVX2-NEXT:  LBB61_28: ## %else26
   10055 ; AVX2-NEXT:    vpextrb $14, %xmm0, %eax
   10056 ; AVX2-NEXT:    testb $1, %al
   10057 ; AVX2-NEXT:    je LBB61_30
   10058 ; AVX2-NEXT:  ## BB#29: ## %cond.store27
   10059 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm3
   10060 ; AVX2-NEXT:    vpextrw $6, %xmm3, 28(%rdi)
   10061 ; AVX2-NEXT:  LBB61_30: ## %else28
   10062 ; AVX2-NEXT:    vpextrb $15, %xmm0, %eax
   10063 ; AVX2-NEXT:    testb $1, %al
   10064 ; AVX2-NEXT:    je LBB61_32
   10065 ; AVX2-NEXT:  ## BB#31: ## %cond.store29
   10066 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm1
   10067 ; AVX2-NEXT:    vpextrw $7, %xmm1, 30(%rdi)
   10068 ; AVX2-NEXT:  LBB61_32: ## %else30
   10069 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm0
   10070 ; AVX2-NEXT:    vpextrb $0, %xmm0, %eax
   10071 ; AVX2-NEXT:    testb $1, %al
   10072 ; AVX2-NEXT:    je LBB61_34
   10073 ; AVX2-NEXT:  ## BB#33: ## %cond.store31
   10074 ; AVX2-NEXT:    vmovd %xmm2, %eax
   10075 ; AVX2-NEXT:    movw %ax, 32(%rdi)
   10076 ; AVX2-NEXT:  LBB61_34: ## %else32
   10077 ; AVX2-NEXT:    vpextrb $1, %xmm0, %eax
   10078 ; AVX2-NEXT:    testb $1, %al
   10079 ; AVX2-NEXT:    je LBB61_36
   10080 ; AVX2-NEXT:  ## BB#35: ## %cond.store33
   10081 ; AVX2-NEXT:    vpextrw $1, %xmm2, 34(%rdi)
   10082 ; AVX2-NEXT:  LBB61_36: ## %else34
   10083 ; AVX2-NEXT:    vpextrb $2, %xmm0, %eax
   10084 ; AVX2-NEXT:    testb $1, %al
   10085 ; AVX2-NEXT:    je LBB61_38
   10086 ; AVX2-NEXT:  ## BB#37: ## %cond.store35
   10087 ; AVX2-NEXT:    vpextrw $2, %xmm2, 36(%rdi)
   10088 ; AVX2-NEXT:  LBB61_38: ## %else36
   10089 ; AVX2-NEXT:    vpextrb $3, %xmm0, %eax
   10090 ; AVX2-NEXT:    testb $1, %al
   10091 ; AVX2-NEXT:    je LBB61_40
   10092 ; AVX2-NEXT:  ## BB#39: ## %cond.store37
   10093 ; AVX2-NEXT:    vpextrw $3, %xmm2, 38(%rdi)
   10094 ; AVX2-NEXT:  LBB61_40: ## %else38
   10095 ; AVX2-NEXT:    vpextrb $4, %xmm0, %eax
   10096 ; AVX2-NEXT:    testb $1, %al
   10097 ; AVX2-NEXT:    je LBB61_42
   10098 ; AVX2-NEXT:  ## BB#41: ## %cond.store39
   10099 ; AVX2-NEXT:    vpextrw $4, %xmm2, 40(%rdi)
   10100 ; AVX2-NEXT:  LBB61_42: ## %else40
   10101 ; AVX2-NEXT:    vpextrb $5, %xmm0, %eax
   10102 ; AVX2-NEXT:    testb $1, %al
   10103 ; AVX2-NEXT:    je LBB61_44
   10104 ; AVX2-NEXT:  ## BB#43: ## %cond.store41
   10105 ; AVX2-NEXT:    vpextrw $5, %xmm2, 42(%rdi)
   10106 ; AVX2-NEXT:  LBB61_44: ## %else42
   10107 ; AVX2-NEXT:    vpextrb $6, %xmm0, %eax
   10108 ; AVX2-NEXT:    testb $1, %al
   10109 ; AVX2-NEXT:    je LBB61_46
   10110 ; AVX2-NEXT:  ## BB#45: ## %cond.store43
   10111 ; AVX2-NEXT:    vpextrw $6, %xmm2, 44(%rdi)
   10112 ; AVX2-NEXT:  LBB61_46: ## %else44
   10113 ; AVX2-NEXT:    vpextrb $7, %xmm0, %eax
   10114 ; AVX2-NEXT:    testb $1, %al
   10115 ; AVX2-NEXT:    je LBB61_48
   10116 ; AVX2-NEXT:  ## BB#47: ## %cond.store45
   10117 ; AVX2-NEXT:    vpextrw $7, %xmm2, 46(%rdi)
   10118 ; AVX2-NEXT:  LBB61_48: ## %else46
   10119 ; AVX2-NEXT:    vpextrb $8, %xmm0, %eax
   10120 ; AVX2-NEXT:    testb $1, %al
   10121 ; AVX2-NEXT:    je LBB61_50
   10122 ; AVX2-NEXT:  ## BB#49: ## %cond.store47
   10123 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm1
   10124 ; AVX2-NEXT:    vmovd %xmm1, %eax
   10125 ; AVX2-NEXT:    movw %ax, 48(%rdi)
   10126 ; AVX2-NEXT:  LBB61_50: ## %else48
   10127 ; AVX2-NEXT:    vpextrb $9, %xmm0, %eax
   10128 ; AVX2-NEXT:    testb $1, %al
   10129 ; AVX2-NEXT:    je LBB61_52
   10130 ; AVX2-NEXT:  ## BB#51: ## %cond.store49
   10131 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm1
   10132 ; AVX2-NEXT:    vpextrw $1, %xmm1, 50(%rdi)
   10133 ; AVX2-NEXT:  LBB61_52: ## %else50
   10134 ; AVX2-NEXT:    vpextrb $10, %xmm0, %eax
   10135 ; AVX2-NEXT:    testb $1, %al
   10136 ; AVX2-NEXT:    je LBB61_54
   10137 ; AVX2-NEXT:  ## BB#53: ## %cond.store51
   10138 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm1
   10139 ; AVX2-NEXT:    vpextrw $2, %xmm1, 52(%rdi)
   10140 ; AVX2-NEXT:  LBB61_54: ## %else52
   10141 ; AVX2-NEXT:    vpextrb $11, %xmm0, %eax
   10142 ; AVX2-NEXT:    testb $1, %al
   10143 ; AVX2-NEXT:    je LBB61_56
   10144 ; AVX2-NEXT:  ## BB#55: ## %cond.store53
   10145 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm1
   10146 ; AVX2-NEXT:    vpextrw $3, %xmm1, 54(%rdi)
   10147 ; AVX2-NEXT:  LBB61_56: ## %else54
   10148 ; AVX2-NEXT:    vpextrb $12, %xmm0, %eax
   10149 ; AVX2-NEXT:    testb $1, %al
   10150 ; AVX2-NEXT:    je LBB61_58
   10151 ; AVX2-NEXT:  ## BB#57: ## %cond.store55
   10152 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm1
   10153 ; AVX2-NEXT:    vpextrw $4, %xmm1, 56(%rdi)
   10154 ; AVX2-NEXT:  LBB61_58: ## %else56
   10155 ; AVX2-NEXT:    vpextrb $13, %xmm0, %eax
   10156 ; AVX2-NEXT:    testb $1, %al
   10157 ; AVX2-NEXT:    je LBB61_60
   10158 ; AVX2-NEXT:  ## BB#59: ## %cond.store57
   10159 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm1
   10160 ; AVX2-NEXT:    vpextrw $5, %xmm1, 58(%rdi)
   10161 ; AVX2-NEXT:  LBB61_60: ## %else58
   10162 ; AVX2-NEXT:    vpextrb $14, %xmm0, %eax
   10163 ; AVX2-NEXT:    testb $1, %al
   10164 ; AVX2-NEXT:    je LBB61_62
   10165 ; AVX2-NEXT:  ## BB#61: ## %cond.store59
   10166 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm1
   10167 ; AVX2-NEXT:    vpextrw $6, %xmm1, 60(%rdi)
   10168 ; AVX2-NEXT:  LBB61_62: ## %else60
   10169 ; AVX2-NEXT:    vpextrb $15, %xmm0, %eax
   10170 ; AVX2-NEXT:    testb $1, %al
   10171 ; AVX2-NEXT:    je LBB61_64
   10172 ; AVX2-NEXT:  ## BB#63: ## %cond.store61
   10173 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm0
   10174 ; AVX2-NEXT:    vpextrw $7, %xmm0, 62(%rdi)
   10175 ; AVX2-NEXT:  LBB61_64: ## %else62
   10176 ; AVX2-NEXT:    vzeroupper
   10177 ; AVX2-NEXT:    retq
   10178 ;
   10179 ; AVX512F-LABEL: test_mask_store_32xi16:
   10180 ; AVX512F:       ## BB#0:
   10181 ; AVX512F-NEXT:    vpextrb $0, %xmm0, %eax
   10182 ; AVX512F-NEXT:    testb $1, %al
   10183 ; AVX512F-NEXT:    je LBB61_2
   10184 ; AVX512F-NEXT:  ## BB#1: ## %cond.store
   10185 ; AVX512F-NEXT:    vmovd %xmm1, %eax
   10186 ; AVX512F-NEXT:    movw %ax, (%rdi)
   10187 ; AVX512F-NEXT:  LBB61_2: ## %else
   10188 ; AVX512F-NEXT:    vpextrb $1, %xmm0, %eax
   10189 ; AVX512F-NEXT:    testb $1, %al
   10190 ; AVX512F-NEXT:    je LBB61_4
   10191 ; AVX512F-NEXT:  ## BB#3: ## %cond.store1
   10192 ; AVX512F-NEXT:    vpextrw $1, %xmm1, 2(%rdi)
   10193 ; AVX512F-NEXT:  LBB61_4: ## %else2
   10194 ; AVX512F-NEXT:    vpextrb $2, %xmm0, %eax
   10195 ; AVX512F-NEXT:    testb $1, %al
   10196 ; AVX512F-NEXT:    je LBB61_6
   10197 ; AVX512F-NEXT:  ## BB#5: ## %cond.store3
   10198 ; AVX512F-NEXT:    vpextrw $2, %xmm1, 4(%rdi)
   10199 ; AVX512F-NEXT:  LBB61_6: ## %else4
   10200 ; AVX512F-NEXT:    vpextrb $3, %xmm0, %eax
   10201 ; AVX512F-NEXT:    testb $1, %al
   10202 ; AVX512F-NEXT:    je LBB61_8
   10203 ; AVX512F-NEXT:  ## BB#7: ## %cond.store5
   10204 ; AVX512F-NEXT:    vpextrw $3, %xmm1, 6(%rdi)
   10205 ; AVX512F-NEXT:  LBB61_8: ## %else6
   10206 ; AVX512F-NEXT:    vpextrb $4, %xmm0, %eax
   10207 ; AVX512F-NEXT:    testb $1, %al
   10208 ; AVX512F-NEXT:    je LBB61_10
   10209 ; AVX512F-NEXT:  ## BB#9: ## %cond.store7
   10210 ; AVX512F-NEXT:    vpextrw $4, %xmm1, 8(%rdi)
   10211 ; AVX512F-NEXT:  LBB61_10: ## %else8
   10212 ; AVX512F-NEXT:    vpextrb $5, %xmm0, %eax
   10213 ; AVX512F-NEXT:    testb $1, %al
   10214 ; AVX512F-NEXT:    je LBB61_12
   10215 ; AVX512F-NEXT:  ## BB#11: ## %cond.store9
   10216 ; AVX512F-NEXT:    vpextrw $5, %xmm1, 10(%rdi)
   10217 ; AVX512F-NEXT:  LBB61_12: ## %else10
   10218 ; AVX512F-NEXT:    vpextrb $6, %xmm0, %eax
   10219 ; AVX512F-NEXT:    testb $1, %al
   10220 ; AVX512F-NEXT:    je LBB61_14
   10221 ; AVX512F-NEXT:  ## BB#13: ## %cond.store11
   10222 ; AVX512F-NEXT:    vpextrw $6, %xmm1, 12(%rdi)
   10223 ; AVX512F-NEXT:  LBB61_14: ## %else12
   10224 ; AVX512F-NEXT:    vpextrb $7, %xmm0, %eax
   10225 ; AVX512F-NEXT:    testb $1, %al
   10226 ; AVX512F-NEXT:    je LBB61_16
   10227 ; AVX512F-NEXT:  ## BB#15: ## %cond.store13
   10228 ; AVX512F-NEXT:    vpextrw $7, %xmm1, 14(%rdi)
   10229 ; AVX512F-NEXT:  LBB61_16: ## %else14
   10230 ; AVX512F-NEXT:    vpextrb $8, %xmm0, %eax
   10231 ; AVX512F-NEXT:    testb $1, %al
   10232 ; AVX512F-NEXT:    je LBB61_18
   10233 ; AVX512F-NEXT:  ## BB#17: ## %cond.store15
   10234 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm3
   10235 ; AVX512F-NEXT:    vmovd %xmm3, %eax
   10236 ; AVX512F-NEXT:    movw %ax, 16(%rdi)
   10237 ; AVX512F-NEXT:  LBB61_18: ## %else16
   10238 ; AVX512F-NEXT:    vpextrb $9, %xmm0, %eax
   10239 ; AVX512F-NEXT:    testb $1, %al
   10240 ; AVX512F-NEXT:    je LBB61_20
   10241 ; AVX512F-NEXT:  ## BB#19: ## %cond.store17
   10242 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm3
   10243 ; AVX512F-NEXT:    vpextrw $1, %xmm3, 18(%rdi)
   10244 ; AVX512F-NEXT:  LBB61_20: ## %else18
   10245 ; AVX512F-NEXT:    vpextrb $10, %xmm0, %eax
   10246 ; AVX512F-NEXT:    testb $1, %al
   10247 ; AVX512F-NEXT:    je LBB61_22
   10248 ; AVX512F-NEXT:  ## BB#21: ## %cond.store19
   10249 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm3
   10250 ; AVX512F-NEXT:    vpextrw $2, %xmm3, 20(%rdi)
   10251 ; AVX512F-NEXT:  LBB61_22: ## %else20
   10252 ; AVX512F-NEXT:    vpextrb $11, %xmm0, %eax
   10253 ; AVX512F-NEXT:    testb $1, %al
   10254 ; AVX512F-NEXT:    je LBB61_24
   10255 ; AVX512F-NEXT:  ## BB#23: ## %cond.store21
   10256 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm3
   10257 ; AVX512F-NEXT:    vpextrw $3, %xmm3, 22(%rdi)
   10258 ; AVX512F-NEXT:  LBB61_24: ## %else22
   10259 ; AVX512F-NEXT:    vpextrb $12, %xmm0, %eax
   10260 ; AVX512F-NEXT:    testb $1, %al
   10261 ; AVX512F-NEXT:    je LBB61_26
   10262 ; AVX512F-NEXT:  ## BB#25: ## %cond.store23
   10263 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm3
   10264 ; AVX512F-NEXT:    vpextrw $4, %xmm3, 24(%rdi)
   10265 ; AVX512F-NEXT:  LBB61_26: ## %else24
   10266 ; AVX512F-NEXT:    vpextrb $13, %xmm0, %eax
   10267 ; AVX512F-NEXT:    testb $1, %al
   10268 ; AVX512F-NEXT:    je LBB61_28
   10269 ; AVX512F-NEXT:  ## BB#27: ## %cond.store25
   10270 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm3
   10271 ; AVX512F-NEXT:    vpextrw $5, %xmm3, 26(%rdi)
   10272 ; AVX512F-NEXT:  LBB61_28: ## %else26
   10273 ; AVX512F-NEXT:    vpextrb $14, %xmm0, %eax
   10274 ; AVX512F-NEXT:    testb $1, %al
   10275 ; AVX512F-NEXT:    je LBB61_30
   10276 ; AVX512F-NEXT:  ## BB#29: ## %cond.store27
   10277 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm3
   10278 ; AVX512F-NEXT:    vpextrw $6, %xmm3, 28(%rdi)
   10279 ; AVX512F-NEXT:  LBB61_30: ## %else28
   10280 ; AVX512F-NEXT:    vpextrb $15, %xmm0, %eax
   10281 ; AVX512F-NEXT:    testb $1, %al
   10282 ; AVX512F-NEXT:    je LBB61_32
   10283 ; AVX512F-NEXT:  ## BB#31: ## %cond.store29
   10284 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm1
   10285 ; AVX512F-NEXT:    vpextrw $7, %xmm1, 30(%rdi)
   10286 ; AVX512F-NEXT:  LBB61_32: ## %else30
   10287 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm0
   10288 ; AVX512F-NEXT:    vpextrb $0, %xmm0, %eax
   10289 ; AVX512F-NEXT:    testb $1, %al
   10290 ; AVX512F-NEXT:    je LBB61_34
   10291 ; AVX512F-NEXT:  ## BB#33: ## %cond.store31
   10292 ; AVX512F-NEXT:    vmovd %xmm2, %eax
   10293 ; AVX512F-NEXT:    movw %ax, 32(%rdi)
   10294 ; AVX512F-NEXT:  LBB61_34: ## %else32
   10295 ; AVX512F-NEXT:    vpextrb $1, %xmm0, %eax
   10296 ; AVX512F-NEXT:    testb $1, %al
   10297 ; AVX512F-NEXT:    je LBB61_36
   10298 ; AVX512F-NEXT:  ## BB#35: ## %cond.store33
   10299 ; AVX512F-NEXT:    vpextrw $1, %xmm2, 34(%rdi)
   10300 ; AVX512F-NEXT:  LBB61_36: ## %else34
   10301 ; AVX512F-NEXT:    vpextrb $2, %xmm0, %eax
   10302 ; AVX512F-NEXT:    testb $1, %al
   10303 ; AVX512F-NEXT:    je LBB61_38
   10304 ; AVX512F-NEXT:  ## BB#37: ## %cond.store35
   10305 ; AVX512F-NEXT:    vpextrw $2, %xmm2, 36(%rdi)
   10306 ; AVX512F-NEXT:  LBB61_38: ## %else36
   10307 ; AVX512F-NEXT:    vpextrb $3, %xmm0, %eax
   10308 ; AVX512F-NEXT:    testb $1, %al
   10309 ; AVX512F-NEXT:    je LBB61_40
   10310 ; AVX512F-NEXT:  ## BB#39: ## %cond.store37
   10311 ; AVX512F-NEXT:    vpextrw $3, %xmm2, 38(%rdi)
   10312 ; AVX512F-NEXT:  LBB61_40: ## %else38
   10313 ; AVX512F-NEXT:    vpextrb $4, %xmm0, %eax
   10314 ; AVX512F-NEXT:    testb $1, %al
   10315 ; AVX512F-NEXT:    je LBB61_42
   10316 ; AVX512F-NEXT:  ## BB#41: ## %cond.store39
   10317 ; AVX512F-NEXT:    vpextrw $4, %xmm2, 40(%rdi)
   10318 ; AVX512F-NEXT:  LBB61_42: ## %else40
   10319 ; AVX512F-NEXT:    vpextrb $5, %xmm0, %eax
   10320 ; AVX512F-NEXT:    testb $1, %al
   10321 ; AVX512F-NEXT:    je LBB61_44
   10322 ; AVX512F-NEXT:  ## BB#43: ## %cond.store41
   10323 ; AVX512F-NEXT:    vpextrw $5, %xmm2, 42(%rdi)
   10324 ; AVX512F-NEXT:  LBB61_44: ## %else42
   10325 ; AVX512F-NEXT:    vpextrb $6, %xmm0, %eax
   10326 ; AVX512F-NEXT:    testb $1, %al
   10327 ; AVX512F-NEXT:    je LBB61_46
   10328 ; AVX512F-NEXT:  ## BB#45: ## %cond.store43
   10329 ; AVX512F-NEXT:    vpextrw $6, %xmm2, 44(%rdi)
   10330 ; AVX512F-NEXT:  LBB61_46: ## %else44
   10331 ; AVX512F-NEXT:    vpextrb $7, %xmm0, %eax
   10332 ; AVX512F-NEXT:    testb $1, %al
   10333 ; AVX512F-NEXT:    je LBB61_48
   10334 ; AVX512F-NEXT:  ## BB#47: ## %cond.store45
   10335 ; AVX512F-NEXT:    vpextrw $7, %xmm2, 46(%rdi)
   10336 ; AVX512F-NEXT:  LBB61_48: ## %else46
   10337 ; AVX512F-NEXT:    vpextrb $8, %xmm0, %eax
   10338 ; AVX512F-NEXT:    testb $1, %al
   10339 ; AVX512F-NEXT:    je LBB61_50
   10340 ; AVX512F-NEXT:  ## BB#49: ## %cond.store47
   10341 ; AVX512F-NEXT:    vextracti128 $1, %ymm2, %xmm1
   10342 ; AVX512F-NEXT:    vmovd %xmm1, %eax
   10343 ; AVX512F-NEXT:    movw %ax, 48(%rdi)
   10344 ; AVX512F-NEXT:  LBB61_50: ## %else48
   10345 ; AVX512F-NEXT:    vpextrb $9, %xmm0, %eax
   10346 ; AVX512F-NEXT:    testb $1, %al
   10347 ; AVX512F-NEXT:    je LBB61_52
   10348 ; AVX512F-NEXT:  ## BB#51: ## %cond.store49
   10349 ; AVX512F-NEXT:    vextracti128 $1, %ymm2, %xmm1
   10350 ; AVX512F-NEXT:    vpextrw $1, %xmm1, 50(%rdi)
   10351 ; AVX512F-NEXT:  LBB61_52: ## %else50
   10352 ; AVX512F-NEXT:    vpextrb $10, %xmm0, %eax
   10353 ; AVX512F-NEXT:    testb $1, %al
   10354 ; AVX512F-NEXT:    je LBB61_54
   10355 ; AVX512F-NEXT:  ## BB#53: ## %cond.store51
   10356 ; AVX512F-NEXT:    vextracti128 $1, %ymm2, %xmm1
   10357 ; AVX512F-NEXT:    vpextrw $2, %xmm1, 52(%rdi)
   10358 ; AVX512F-NEXT:  LBB61_54: ## %else52
   10359 ; AVX512F-NEXT:    vpextrb $11, %xmm0, %eax
   10360 ; AVX512F-NEXT:    testb $1, %al
   10361 ; AVX512F-NEXT:    je LBB61_56
   10362 ; AVX512F-NEXT:  ## BB#55: ## %cond.store53
   10363 ; AVX512F-NEXT:    vextracti128 $1, %ymm2, %xmm1
   10364 ; AVX512F-NEXT:    vpextrw $3, %xmm1, 54(%rdi)
   10365 ; AVX512F-NEXT:  LBB61_56: ## %else54
   10366 ; AVX512F-NEXT:    vpextrb $12, %xmm0, %eax
   10367 ; AVX512F-NEXT:    testb $1, %al
   10368 ; AVX512F-NEXT:    je LBB61_58
   10369 ; AVX512F-NEXT:  ## BB#57: ## %cond.store55
   10370 ; AVX512F-NEXT:    vextracti128 $1, %ymm2, %xmm1
   10371 ; AVX512F-NEXT:    vpextrw $4, %xmm1, 56(%rdi)
   10372 ; AVX512F-NEXT:  LBB61_58: ## %else56
   10373 ; AVX512F-NEXT:    vpextrb $13, %xmm0, %eax
   10374 ; AVX512F-NEXT:    testb $1, %al
   10375 ; AVX512F-NEXT:    je LBB61_60
   10376 ; AVX512F-NEXT:  ## BB#59: ## %cond.store57
   10377 ; AVX512F-NEXT:    vextracti128 $1, %ymm2, %xmm1
   10378 ; AVX512F-NEXT:    vpextrw $5, %xmm1, 58(%rdi)
   10379 ; AVX512F-NEXT:  LBB61_60: ## %else58
   10380 ; AVX512F-NEXT:    vpextrb $14, %xmm0, %eax
   10381 ; AVX512F-NEXT:    testb $1, %al
   10382 ; AVX512F-NEXT:    je LBB61_62
   10383 ; AVX512F-NEXT:  ## BB#61: ## %cond.store59
   10384 ; AVX512F-NEXT:    vextracti128 $1, %ymm2, %xmm1
   10385 ; AVX512F-NEXT:    vpextrw $6, %xmm1, 60(%rdi)
   10386 ; AVX512F-NEXT:  LBB61_62: ## %else60
   10387 ; AVX512F-NEXT:    vpextrb $15, %xmm0, %eax
   10388 ; AVX512F-NEXT:    testb $1, %al
   10389 ; AVX512F-NEXT:    je LBB61_64
   10390 ; AVX512F-NEXT:  ## BB#63: ## %cond.store61
   10391 ; AVX512F-NEXT:    vextracti128 $1, %ymm2, %xmm0
   10392 ; AVX512F-NEXT:    vpextrw $7, %xmm0, 62(%rdi)
   10393 ; AVX512F-NEXT:  LBB61_64: ## %else62
   10394 ; AVX512F-NEXT:    retq
   10395 ;
   10396 ; SKX-LABEL: test_mask_store_32xi16:
   10397 ; SKX:       ## BB#0:
   10398 ; SKX-NEXT:    vpsllw $7, %ymm0, %ymm0
   10399 ; SKX-NEXT:    vpmovb2m %ymm0, %k1
   10400 ; SKX-NEXT:    vmovdqu16 %zmm1, (%rdi) {%k1}
   10401 ; SKX-NEXT:    retq
   10402   call void @llvm.masked.store.v32i16.p0v32i16(<32 x i16> %val, <32 x i16>* %addr, i32 4, <32 x i1>%mask)
   10403   ret void
   10404 }
   10405 
   10406 declare void @llvm.masked.store.v32i16.p0v32i16(<32 x i16>, <32 x i16>*, i32, <32 x i1>)
   10407