Home | History | Annotate | Download | only in X86
      1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
      2 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefix=SSE --check-prefix=SSE2
      3 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse4.2 | FileCheck %s --check-prefix=SSE --check-prefix=SSE42
      4 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefix=AVX --check-prefix=AVX1
      5 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefix=AVX --check-prefix=AVX2
      6 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefix=AVX --check-prefix=AVX512 --check-prefix=AVX512F
      7 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512dq | FileCheck %s --check-prefix=AVX --check-prefix=AVX512 --check-prefix=AVX512DQ
      8 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw | FileCheck %s --check-prefix=AVX --check-prefix=AVX512 --check-prefix=AVX512BW
      9 
     10 ;
     11 ; 128-bit vector comparisons
     12 ;
     13 
     14 define <2 x i1> @test_cmp_v2f64(<2 x double> %a0, <2 x double> %a1) nounwind {
     15 ; SSE-LABEL: test_cmp_v2f64:
     16 ; SSE:       # %bb.0:
     17 ; SSE-NEXT:    cmpltpd %xmm0, %xmm1
     18 ; SSE-NEXT:    movapd %xmm1, %xmm0
     19 ; SSE-NEXT:    retq
     20 ;
     21 ; AVX-LABEL: test_cmp_v2f64:
     22 ; AVX:       # %bb.0:
     23 ; AVX-NEXT:    vcmpltpd %xmm0, %xmm1, %xmm0
     24 ; AVX-NEXT:    retq
     25   %1 = fcmp ogt <2 x double> %a0, %a1
     26   ret <2 x i1> %1
     27 }
     28 
     29 define <4 x i1> @test_cmp_v4f32(<4 x float> %a0, <4 x float> %a1) nounwind {
     30 ; SSE-LABEL: test_cmp_v4f32:
     31 ; SSE:       # %bb.0:
     32 ; SSE-NEXT:    cmpltps %xmm0, %xmm1
     33 ; SSE-NEXT:    movaps %xmm1, %xmm0
     34 ; SSE-NEXT:    retq
     35 ;
     36 ; AVX-LABEL: test_cmp_v4f32:
     37 ; AVX:       # %bb.0:
     38 ; AVX-NEXT:    vcmpltps %xmm0, %xmm1, %xmm0
     39 ; AVX-NEXT:    retq
     40   %1 = fcmp ogt <4 x float> %a0, %a1
     41   ret <4 x i1> %1
     42 }
     43 
     44 define <2 x i1> @test_cmp_v2i64(<2 x i64> %a0, <2 x i64> %a1) nounwind {
     45 ; SSE2-LABEL: test_cmp_v2i64:
     46 ; SSE2:       # %bb.0:
     47 ; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [2147483648,0,2147483648,0]
     48 ; SSE2-NEXT:    pxor %xmm2, %xmm1
     49 ; SSE2-NEXT:    pxor %xmm2, %xmm0
     50 ; SSE2-NEXT:    movdqa %xmm0, %xmm2
     51 ; SSE2-NEXT:    pcmpgtd %xmm1, %xmm2
     52 ; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm2[0,0,2,2]
     53 ; SSE2-NEXT:    pcmpeqd %xmm1, %xmm0
     54 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[1,1,3,3]
     55 ; SSE2-NEXT:    pand %xmm3, %xmm1
     56 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[1,1,3,3]
     57 ; SSE2-NEXT:    por %xmm1, %xmm0
     58 ; SSE2-NEXT:    retq
     59 ;
     60 ; SSE42-LABEL: test_cmp_v2i64:
     61 ; SSE42:       # %bb.0:
     62 ; SSE42-NEXT:    pcmpgtq %xmm1, %xmm0
     63 ; SSE42-NEXT:    retq
     64 ;
     65 ; AVX-LABEL: test_cmp_v2i64:
     66 ; AVX:       # %bb.0:
     67 ; AVX-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm0
     68 ; AVX-NEXT:    retq
     69   %1 = icmp sgt <2 x i64> %a0, %a1
     70   ret <2 x i1> %1
     71 }
     72 
     73 define <4 x i1> @test_cmp_v4i32(<4 x i32> %a0, <4 x i32> %a1) nounwind {
     74 ; SSE-LABEL: test_cmp_v4i32:
     75 ; SSE:       # %bb.0:
     76 ; SSE-NEXT:    pcmpgtd %xmm1, %xmm0
     77 ; SSE-NEXT:    retq
     78 ;
     79 ; AVX-LABEL: test_cmp_v4i32:
     80 ; AVX:       # %bb.0:
     81 ; AVX-NEXT:    vpcmpgtd %xmm1, %xmm0, %xmm0
     82 ; AVX-NEXT:    retq
     83   %1 = icmp sgt <4 x i32> %a0, %a1
     84   ret <4 x i1> %1
     85 }
     86 
     87 define <8 x i1> @test_cmp_v8i16(<8 x i16> %a0, <8 x i16> %a1) nounwind {
     88 ; SSE-LABEL: test_cmp_v8i16:
     89 ; SSE:       # %bb.0:
     90 ; SSE-NEXT:    pcmpgtw %xmm1, %xmm0
     91 ; SSE-NEXT:    retq
     92 ;
     93 ; AVX-LABEL: test_cmp_v8i16:
     94 ; AVX:       # %bb.0:
     95 ; AVX-NEXT:    vpcmpgtw %xmm1, %xmm0, %xmm0
     96 ; AVX-NEXT:    retq
     97   %1 = icmp sgt <8 x i16> %a0, %a1
     98   ret <8 x i1> %1
     99 }
    100 
    101 define <16 x i1> @test_cmp_v16i8(<16 x i8> %a0, <16 x i8> %a1) nounwind {
    102 ; SSE-LABEL: test_cmp_v16i8:
    103 ; SSE:       # %bb.0:
    104 ; SSE-NEXT:    pcmpgtb %xmm1, %xmm0
    105 ; SSE-NEXT:    retq
    106 ;
    107 ; AVX-LABEL: test_cmp_v16i8:
    108 ; AVX:       # %bb.0:
    109 ; AVX-NEXT:    vpcmpgtb %xmm1, %xmm0, %xmm0
    110 ; AVX-NEXT:    retq
    111   %1 = icmp sgt <16 x i8> %a0, %a1
    112   ret <16 x i1> %1
    113 }
    114 
    115 ;
    116 ; 256-bit vector comparisons
    117 ;
    118 
    119 define <4 x i1> @test_cmp_v4f64(<4 x double> %a0, <4 x double> %a1) nounwind {
    120 ; SSE-LABEL: test_cmp_v4f64:
    121 ; SSE:       # %bb.0:
    122 ; SSE-NEXT:    cmpltpd %xmm1, %xmm3
    123 ; SSE-NEXT:    cmpltpd %xmm0, %xmm2
    124 ; SSE-NEXT:    packssdw %xmm3, %xmm2
    125 ; SSE-NEXT:    movdqa %xmm2, %xmm0
    126 ; SSE-NEXT:    retq
    127 ;
    128 ; AVX1-LABEL: test_cmp_v4f64:
    129 ; AVX1:       # %bb.0:
    130 ; AVX1-NEXT:    vcmpltpd %ymm0, %ymm1, %ymm0
    131 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
    132 ; AVX1-NEXT:    vpackssdw %xmm1, %xmm0, %xmm0
    133 ; AVX1-NEXT:    vzeroupper
    134 ; AVX1-NEXT:    retq
    135 ;
    136 ; AVX2-LABEL: test_cmp_v4f64:
    137 ; AVX2:       # %bb.0:
    138 ; AVX2-NEXT:    vcmpltpd %ymm0, %ymm1, %ymm0
    139 ; AVX2-NEXT:    vextractf128 $1, %ymm0, %xmm1
    140 ; AVX2-NEXT:    vpackssdw %xmm1, %xmm0, %xmm0
    141 ; AVX2-NEXT:    vzeroupper
    142 ; AVX2-NEXT:    retq
    143 ;
    144 ; AVX512-LABEL: test_cmp_v4f64:
    145 ; AVX512:       # %bb.0:
    146 ; AVX512-NEXT:    vcmpltpd %ymm0, %ymm1, %ymm0
    147 ; AVX512-NEXT:    vpmovqd %zmm0, %ymm0
    148 ; AVX512-NEXT:    # kill: def $xmm0 killed $xmm0 killed $ymm0
    149 ; AVX512-NEXT:    vzeroupper
    150 ; AVX512-NEXT:    retq
    151   %1 = fcmp ogt <4 x double> %a0, %a1
    152   ret <4 x i1> %1
    153 }
    154 
    155 define <8 x i1> @test_cmp_v8f32(<8 x float> %a0, <8 x float> %a1) nounwind {
    156 ; SSE-LABEL: test_cmp_v8f32:
    157 ; SSE:       # %bb.0:
    158 ; SSE-NEXT:    cmpltps %xmm1, %xmm3
    159 ; SSE-NEXT:    cmpltps %xmm0, %xmm2
    160 ; SSE-NEXT:    packssdw %xmm3, %xmm2
    161 ; SSE-NEXT:    movdqa %xmm2, %xmm0
    162 ; SSE-NEXT:    retq
    163 ;
    164 ; AVX1-LABEL: test_cmp_v8f32:
    165 ; AVX1:       # %bb.0:
    166 ; AVX1-NEXT:    vcmpltps %ymm0, %ymm1, %ymm0
    167 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
    168 ; AVX1-NEXT:    vpackssdw %xmm1, %xmm0, %xmm0
    169 ; AVX1-NEXT:    vzeroupper
    170 ; AVX1-NEXT:    retq
    171 ;
    172 ; AVX2-LABEL: test_cmp_v8f32:
    173 ; AVX2:       # %bb.0:
    174 ; AVX2-NEXT:    vcmpltps %ymm0, %ymm1, %ymm0
    175 ; AVX2-NEXT:    vextractf128 $1, %ymm0, %xmm1
    176 ; AVX2-NEXT:    vpackssdw %xmm1, %xmm0, %xmm0
    177 ; AVX2-NEXT:    vzeroupper
    178 ; AVX2-NEXT:    retq
    179 ;
    180 ; AVX512-LABEL: test_cmp_v8f32:
    181 ; AVX512:       # %bb.0:
    182 ; AVX512-NEXT:    vcmpltps %ymm0, %ymm1, %ymm0
    183 ; AVX512-NEXT:    vpmovdw %zmm0, %ymm0
    184 ; AVX512-NEXT:    # kill: def $xmm0 killed $xmm0 killed $ymm0
    185 ; AVX512-NEXT:    vzeroupper
    186 ; AVX512-NEXT:    retq
    187   %1 = fcmp ogt <8 x float> %a0, %a1
    188   ret <8 x i1> %1
    189 }
    190 
    191 define <4 x i1> @test_cmp_v4i64(<4 x i64> %a0, <4 x i64> %a1) nounwind {
    192 ; SSE2-LABEL: test_cmp_v4i64:
    193 ; SSE2:       # %bb.0:
    194 ; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,0,2147483648,0]
    195 ; SSE2-NEXT:    pxor %xmm4, %xmm3
    196 ; SSE2-NEXT:    pxor %xmm4, %xmm1
    197 ; SSE2-NEXT:    movdqa %xmm1, %xmm5
    198 ; SSE2-NEXT:    pcmpgtd %xmm3, %xmm5
    199 ; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]
    200 ; SSE2-NEXT:    pcmpeqd %xmm3, %xmm1
    201 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
    202 ; SSE2-NEXT:    pand %xmm6, %xmm1
    203 ; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm5[1,1,3,3]
    204 ; SSE2-NEXT:    por %xmm1, %xmm3
    205 ; SSE2-NEXT:    pxor %xmm4, %xmm2
    206 ; SSE2-NEXT:    pxor %xmm4, %xmm0
    207 ; SSE2-NEXT:    movdqa %xmm0, %xmm1
    208 ; SSE2-NEXT:    pcmpgtd %xmm2, %xmm1
    209 ; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm1[0,0,2,2]
    210 ; SSE2-NEXT:    pcmpeqd %xmm2, %xmm0
    211 ; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm0[1,1,3,3]
    212 ; SSE2-NEXT:    pand %xmm4, %xmm2
    213 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3]
    214 ; SSE2-NEXT:    por %xmm2, %xmm0
    215 ; SSE2-NEXT:    packssdw %xmm3, %xmm0
    216 ; SSE2-NEXT:    retq
    217 ;
    218 ; SSE42-LABEL: test_cmp_v4i64:
    219 ; SSE42:       # %bb.0:
    220 ; SSE42-NEXT:    pcmpgtq %xmm3, %xmm1
    221 ; SSE42-NEXT:    pcmpgtq %xmm2, %xmm0
    222 ; SSE42-NEXT:    packssdw %xmm1, %xmm0
    223 ; SSE42-NEXT:    retq
    224 ;
    225 ; AVX1-LABEL: test_cmp_v4i64:
    226 ; AVX1:       # %bb.0:
    227 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
    228 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
    229 ; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm3, %xmm2
    230 ; AVX1-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm0
    231 ; AVX1-NEXT:    vpackssdw %xmm2, %xmm0, %xmm0
    232 ; AVX1-NEXT:    vzeroupper
    233 ; AVX1-NEXT:    retq
    234 ;
    235 ; AVX2-LABEL: test_cmp_v4i64:
    236 ; AVX2:       # %bb.0:
    237 ; AVX2-NEXT:    vpcmpgtq %ymm1, %ymm0, %ymm0
    238 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
    239 ; AVX2-NEXT:    vpackssdw %xmm1, %xmm0, %xmm0
    240 ; AVX2-NEXT:    vzeroupper
    241 ; AVX2-NEXT:    retq
    242 ;
    243 ; AVX512-LABEL: test_cmp_v4i64:
    244 ; AVX512:       # %bb.0:
    245 ; AVX512-NEXT:    vpcmpgtq %ymm1, %ymm0, %ymm0
    246 ; AVX512-NEXT:    vpmovqd %zmm0, %ymm0
    247 ; AVX512-NEXT:    # kill: def $xmm0 killed $xmm0 killed $ymm0
    248 ; AVX512-NEXT:    vzeroupper
    249 ; AVX512-NEXT:    retq
    250   %1 = icmp sgt <4 x i64> %a0, %a1
    251   ret <4 x i1> %1
    252 }
    253 
    254 define <8 x i1> @test_cmp_v8i32(<8 x i32> %a0, <8 x i32> %a1) nounwind {
    255 ; SSE-LABEL: test_cmp_v8i32:
    256 ; SSE:       # %bb.0:
    257 ; SSE-NEXT:    pcmpgtd %xmm3, %xmm1
    258 ; SSE-NEXT:    pcmpgtd %xmm2, %xmm0
    259 ; SSE-NEXT:    packssdw %xmm1, %xmm0
    260 ; SSE-NEXT:    retq
    261 ;
    262 ; AVX1-LABEL: test_cmp_v8i32:
    263 ; AVX1:       # %bb.0:
    264 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
    265 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
    266 ; AVX1-NEXT:    vpcmpgtd %xmm2, %xmm3, %xmm2
    267 ; AVX1-NEXT:    vpcmpgtd %xmm1, %xmm0, %xmm0
    268 ; AVX1-NEXT:    vpackssdw %xmm2, %xmm0, %xmm0
    269 ; AVX1-NEXT:    vzeroupper
    270 ; AVX1-NEXT:    retq
    271 ;
    272 ; AVX2-LABEL: test_cmp_v8i32:
    273 ; AVX2:       # %bb.0:
    274 ; AVX2-NEXT:    vpcmpgtd %ymm1, %ymm0, %ymm0
    275 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
    276 ; AVX2-NEXT:    vpackssdw %xmm1, %xmm0, %xmm0
    277 ; AVX2-NEXT:    vzeroupper
    278 ; AVX2-NEXT:    retq
    279 ;
    280 ; AVX512-LABEL: test_cmp_v8i32:
    281 ; AVX512:       # %bb.0:
    282 ; AVX512-NEXT:    vpcmpgtd %ymm1, %ymm0, %ymm0
    283 ; AVX512-NEXT:    vpmovdw %zmm0, %ymm0
    284 ; AVX512-NEXT:    # kill: def $xmm0 killed $xmm0 killed $ymm0
    285 ; AVX512-NEXT:    vzeroupper
    286 ; AVX512-NEXT:    retq
    287   %1 = icmp sgt <8 x i32> %a0, %a1
    288   ret <8 x i1> %1
    289 }
    290 
    291 define <16 x i1> @test_cmp_v16i16(<16 x i16> %a0, <16 x i16> %a1) nounwind {
    292 ; SSE-LABEL: test_cmp_v16i16:
    293 ; SSE:       # %bb.0:
    294 ; SSE-NEXT:    pcmpgtw %xmm3, %xmm1
    295 ; SSE-NEXT:    pcmpgtw %xmm2, %xmm0
    296 ; SSE-NEXT:    packsswb %xmm1, %xmm0
    297 ; SSE-NEXT:    retq
    298 ;
    299 ; AVX1-LABEL: test_cmp_v16i16:
    300 ; AVX1:       # %bb.0:
    301 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
    302 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
    303 ; AVX1-NEXT:    vpcmpgtw %xmm2, %xmm3, %xmm2
    304 ; AVX1-NEXT:    vpcmpgtw %xmm1, %xmm0, %xmm0
    305 ; AVX1-NEXT:    vpacksswb %xmm2, %xmm0, %xmm0
    306 ; AVX1-NEXT:    vzeroupper
    307 ; AVX1-NEXT:    retq
    308 ;
    309 ; AVX2-LABEL: test_cmp_v16i16:
    310 ; AVX2:       # %bb.0:
    311 ; AVX2-NEXT:    vpcmpgtw %ymm1, %ymm0, %ymm0
    312 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
    313 ; AVX2-NEXT:    vpacksswb %xmm1, %xmm0, %xmm0
    314 ; AVX2-NEXT:    vzeroupper
    315 ; AVX2-NEXT:    retq
    316 ;
    317 ; AVX512F-LABEL: test_cmp_v16i16:
    318 ; AVX512F:       # %bb.0:
    319 ; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm0, %ymm0
    320 ; AVX512F-NEXT:    vpmovsxwd %ymm0, %zmm0
    321 ; AVX512F-NEXT:    vpmovdb %zmm0, %xmm0
    322 ; AVX512F-NEXT:    vzeroupper
    323 ; AVX512F-NEXT:    retq
    324 ;
    325 ; AVX512DQ-LABEL: test_cmp_v16i16:
    326 ; AVX512DQ:       # %bb.0:
    327 ; AVX512DQ-NEXT:    vpcmpgtw %ymm1, %ymm0, %ymm0
    328 ; AVX512DQ-NEXT:    vpmovsxwd %ymm0, %zmm0
    329 ; AVX512DQ-NEXT:    vpmovdb %zmm0, %xmm0
    330 ; AVX512DQ-NEXT:    vzeroupper
    331 ; AVX512DQ-NEXT:    retq
    332 ;
    333 ; AVX512BW-LABEL: test_cmp_v16i16:
    334 ; AVX512BW:       # %bb.0:
    335 ; AVX512BW-NEXT:    vpcmpgtw %ymm1, %ymm0, %ymm0
    336 ; AVX512BW-NEXT:    vpmovwb %zmm0, %ymm0
    337 ; AVX512BW-NEXT:    # kill: def $xmm0 killed $xmm0 killed $ymm0
    338 ; AVX512BW-NEXT:    vzeroupper
    339 ; AVX512BW-NEXT:    retq
    340   %1 = icmp sgt <16 x i16> %a0, %a1
    341   ret <16 x i1> %1
    342 }
    343 
    344 define <32 x i1> @test_cmp_v32i8(<32 x i8> %a0, <32 x i8> %a1) nounwind {
    345 ; SSE2-LABEL: test_cmp_v32i8:
    346 ; SSE2:       # %bb.0:
    347 ; SSE2-NEXT:    pcmpgtb %xmm2, %xmm0
    348 ; SSE2-NEXT:    pcmpgtb %xmm3, %xmm1
    349 ; SSE2-NEXT:    movdqa %xmm1, -{{[0-9]+}}(%rsp)
    350 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
    351 ; SSE2-NEXT:    andl $1, %eax
    352 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    353 ; SSE2-NEXT:    andl $1, %ecx
    354 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
    355 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    356 ; SSE2-NEXT:    andl $1, %ecx
    357 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
    358 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    359 ; SSE2-NEXT:    andl $1, %ecx
    360 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
    361 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    362 ; SSE2-NEXT:    andl $1, %ecx
    363 ; SSE2-NEXT:    shll $4, %ecx
    364 ; SSE2-NEXT:    orl %eax, %ecx
    365 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
    366 ; SSE2-NEXT:    andl $1, %eax
    367 ; SSE2-NEXT:    shll $5, %eax
    368 ; SSE2-NEXT:    orl %ecx, %eax
    369 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    370 ; SSE2-NEXT:    andl $1, %ecx
    371 ; SSE2-NEXT:    shll $6, %ecx
    372 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
    373 ; SSE2-NEXT:    andl $1, %edx
    374 ; SSE2-NEXT:    shll $7, %edx
    375 ; SSE2-NEXT:    orl %ecx, %edx
    376 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    377 ; SSE2-NEXT:    andl $1, %ecx
    378 ; SSE2-NEXT:    shll $8, %ecx
    379 ; SSE2-NEXT:    orl %edx, %ecx
    380 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
    381 ; SSE2-NEXT:    andl $1, %edx
    382 ; SSE2-NEXT:    shll $9, %edx
    383 ; SSE2-NEXT:    orl %ecx, %edx
    384 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    385 ; SSE2-NEXT:    andl $1, %ecx
    386 ; SSE2-NEXT:    shll $10, %ecx
    387 ; SSE2-NEXT:    orl %edx, %ecx
    388 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
    389 ; SSE2-NEXT:    andl $1, %edx
    390 ; SSE2-NEXT:    shll $11, %edx
    391 ; SSE2-NEXT:    orl %ecx, %edx
    392 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    393 ; SSE2-NEXT:    andl $1, %ecx
    394 ; SSE2-NEXT:    shll $12, %ecx
    395 ; SSE2-NEXT:    orl %edx, %ecx
    396 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
    397 ; SSE2-NEXT:    andl $1, %edx
    398 ; SSE2-NEXT:    shll $13, %edx
    399 ; SSE2-NEXT:    orl %ecx, %edx
    400 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    401 ; SSE2-NEXT:    andl $1, %ecx
    402 ; SSE2-NEXT:    shll $14, %ecx
    403 ; SSE2-NEXT:    orl %edx, %ecx
    404 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
    405 ; SSE2-NEXT:    shll $15, %edx
    406 ; SSE2-NEXT:    orl %ecx, %edx
    407 ; SSE2-NEXT:    orl %eax, %edx
    408 ; SSE2-NEXT:    movw %dx, 2(%rdi)
    409 ; SSE2-NEXT:    movdqa %xmm0, -{{[0-9]+}}(%rsp)
    410 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
    411 ; SSE2-NEXT:    andl $1, %eax
    412 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    413 ; SSE2-NEXT:    andl $1, %ecx
    414 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
    415 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    416 ; SSE2-NEXT:    andl $1, %ecx
    417 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
    418 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    419 ; SSE2-NEXT:    andl $1, %ecx
    420 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
    421 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    422 ; SSE2-NEXT:    andl $1, %ecx
    423 ; SSE2-NEXT:    shll $4, %ecx
    424 ; SSE2-NEXT:    orl %eax, %ecx
    425 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
    426 ; SSE2-NEXT:    andl $1, %eax
    427 ; SSE2-NEXT:    shll $5, %eax
    428 ; SSE2-NEXT:    orl %ecx, %eax
    429 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    430 ; SSE2-NEXT:    andl $1, %ecx
    431 ; SSE2-NEXT:    shll $6, %ecx
    432 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
    433 ; SSE2-NEXT:    andl $1, %edx
    434 ; SSE2-NEXT:    shll $7, %edx
    435 ; SSE2-NEXT:    orl %ecx, %edx
    436 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    437 ; SSE2-NEXT:    andl $1, %ecx
    438 ; SSE2-NEXT:    shll $8, %ecx
    439 ; SSE2-NEXT:    orl %edx, %ecx
    440 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
    441 ; SSE2-NEXT:    andl $1, %edx
    442 ; SSE2-NEXT:    shll $9, %edx
    443 ; SSE2-NEXT:    orl %ecx, %edx
    444 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    445 ; SSE2-NEXT:    andl $1, %ecx
    446 ; SSE2-NEXT:    shll $10, %ecx
    447 ; SSE2-NEXT:    orl %edx, %ecx
    448 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
    449 ; SSE2-NEXT:    andl $1, %edx
    450 ; SSE2-NEXT:    shll $11, %edx
    451 ; SSE2-NEXT:    orl %ecx, %edx
    452 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    453 ; SSE2-NEXT:    andl $1, %ecx
    454 ; SSE2-NEXT:    shll $12, %ecx
    455 ; SSE2-NEXT:    orl %edx, %ecx
    456 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
    457 ; SSE2-NEXT:    andl $1, %edx
    458 ; SSE2-NEXT:    shll $13, %edx
    459 ; SSE2-NEXT:    orl %ecx, %edx
    460 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    461 ; SSE2-NEXT:    andl $1, %ecx
    462 ; SSE2-NEXT:    shll $14, %ecx
    463 ; SSE2-NEXT:    orl %edx, %ecx
    464 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
    465 ; SSE2-NEXT:    shll $15, %edx
    466 ; SSE2-NEXT:    orl %ecx, %edx
    467 ; SSE2-NEXT:    orl %eax, %edx
    468 ; SSE2-NEXT:    movw %dx, (%rdi)
    469 ; SSE2-NEXT:    movq %rdi, %rax
    470 ; SSE2-NEXT:    retq
    471 ;
    472 ; SSE42-LABEL: test_cmp_v32i8:
    473 ; SSE42:       # %bb.0:
    474 ; SSE42-NEXT:    pcmpgtb %xmm2, %xmm0
    475 ; SSE42-NEXT:    pcmpgtb %xmm3, %xmm1
    476 ; SSE42-NEXT:    pextrb $1, %xmm1, %eax
    477 ; SSE42-NEXT:    andl $1, %eax
    478 ; SSE42-NEXT:    pextrb $0, %xmm1, %ecx
    479 ; SSE42-NEXT:    andl $1, %ecx
    480 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
    481 ; SSE42-NEXT:    pextrb $2, %xmm1, %ecx
    482 ; SSE42-NEXT:    andl $1, %ecx
    483 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
    484 ; SSE42-NEXT:    pextrb $3, %xmm1, %ecx
    485 ; SSE42-NEXT:    andl $1, %ecx
    486 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
    487 ; SSE42-NEXT:    pextrb $4, %xmm1, %ecx
    488 ; SSE42-NEXT:    andl $1, %ecx
    489 ; SSE42-NEXT:    shll $4, %ecx
    490 ; SSE42-NEXT:    orl %eax, %ecx
    491 ; SSE42-NEXT:    pextrb $5, %xmm1, %eax
    492 ; SSE42-NEXT:    andl $1, %eax
    493 ; SSE42-NEXT:    shll $5, %eax
    494 ; SSE42-NEXT:    orl %ecx, %eax
    495 ; SSE42-NEXT:    pextrb $6, %xmm1, %ecx
    496 ; SSE42-NEXT:    andl $1, %ecx
    497 ; SSE42-NEXT:    shll $6, %ecx
    498 ; SSE42-NEXT:    pextrb $7, %xmm1, %edx
    499 ; SSE42-NEXT:    andl $1, %edx
    500 ; SSE42-NEXT:    shll $7, %edx
    501 ; SSE42-NEXT:    orl %ecx, %edx
    502 ; SSE42-NEXT:    pextrb $8, %xmm1, %ecx
    503 ; SSE42-NEXT:    andl $1, %ecx
    504 ; SSE42-NEXT:    shll $8, %ecx
    505 ; SSE42-NEXT:    orl %edx, %ecx
    506 ; SSE42-NEXT:    pextrb $9, %xmm1, %edx
    507 ; SSE42-NEXT:    andl $1, %edx
    508 ; SSE42-NEXT:    shll $9, %edx
    509 ; SSE42-NEXT:    orl %ecx, %edx
    510 ; SSE42-NEXT:    pextrb $10, %xmm1, %ecx
    511 ; SSE42-NEXT:    andl $1, %ecx
    512 ; SSE42-NEXT:    shll $10, %ecx
    513 ; SSE42-NEXT:    orl %edx, %ecx
    514 ; SSE42-NEXT:    pextrb $11, %xmm1, %edx
    515 ; SSE42-NEXT:    andl $1, %edx
    516 ; SSE42-NEXT:    shll $11, %edx
    517 ; SSE42-NEXT:    orl %ecx, %edx
    518 ; SSE42-NEXT:    pextrb $12, %xmm1, %ecx
    519 ; SSE42-NEXT:    andl $1, %ecx
    520 ; SSE42-NEXT:    shll $12, %ecx
    521 ; SSE42-NEXT:    orl %edx, %ecx
    522 ; SSE42-NEXT:    pextrb $13, %xmm1, %edx
    523 ; SSE42-NEXT:    andl $1, %edx
    524 ; SSE42-NEXT:    shll $13, %edx
    525 ; SSE42-NEXT:    orl %ecx, %edx
    526 ; SSE42-NEXT:    pextrb $14, %xmm1, %ecx
    527 ; SSE42-NEXT:    andl $1, %ecx
    528 ; SSE42-NEXT:    shll $14, %ecx
    529 ; SSE42-NEXT:    orl %edx, %ecx
    530 ; SSE42-NEXT:    pextrb $15, %xmm1, %edx
    531 ; SSE42-NEXT:    shll $15, %edx
    532 ; SSE42-NEXT:    orl %ecx, %edx
    533 ; SSE42-NEXT:    orl %eax, %edx
    534 ; SSE42-NEXT:    movw %dx, 2(%rdi)
    535 ; SSE42-NEXT:    pextrb $1, %xmm0, %eax
    536 ; SSE42-NEXT:    andl $1, %eax
    537 ; SSE42-NEXT:    pextrb $0, %xmm0, %ecx
    538 ; SSE42-NEXT:    andl $1, %ecx
    539 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
    540 ; SSE42-NEXT:    pextrb $2, %xmm0, %ecx
    541 ; SSE42-NEXT:    andl $1, %ecx
    542 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
    543 ; SSE42-NEXT:    pextrb $3, %xmm0, %ecx
    544 ; SSE42-NEXT:    andl $1, %ecx
    545 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
    546 ; SSE42-NEXT:    pextrb $4, %xmm0, %ecx
    547 ; SSE42-NEXT:    andl $1, %ecx
    548 ; SSE42-NEXT:    shll $4, %ecx
    549 ; SSE42-NEXT:    orl %eax, %ecx
    550 ; SSE42-NEXT:    pextrb $5, %xmm0, %eax
    551 ; SSE42-NEXT:    andl $1, %eax
    552 ; SSE42-NEXT:    shll $5, %eax
    553 ; SSE42-NEXT:    orl %ecx, %eax
    554 ; SSE42-NEXT:    pextrb $6, %xmm0, %ecx
    555 ; SSE42-NEXT:    andl $1, %ecx
    556 ; SSE42-NEXT:    shll $6, %ecx
    557 ; SSE42-NEXT:    pextrb $7, %xmm0, %edx
    558 ; SSE42-NEXT:    andl $1, %edx
    559 ; SSE42-NEXT:    shll $7, %edx
    560 ; SSE42-NEXT:    orl %ecx, %edx
    561 ; SSE42-NEXT:    pextrb $8, %xmm0, %ecx
    562 ; SSE42-NEXT:    andl $1, %ecx
    563 ; SSE42-NEXT:    shll $8, %ecx
    564 ; SSE42-NEXT:    orl %edx, %ecx
    565 ; SSE42-NEXT:    pextrb $9, %xmm0, %edx
    566 ; SSE42-NEXT:    andl $1, %edx
    567 ; SSE42-NEXT:    shll $9, %edx
    568 ; SSE42-NEXT:    orl %ecx, %edx
    569 ; SSE42-NEXT:    pextrb $10, %xmm0, %ecx
    570 ; SSE42-NEXT:    andl $1, %ecx
    571 ; SSE42-NEXT:    shll $10, %ecx
    572 ; SSE42-NEXT:    orl %edx, %ecx
    573 ; SSE42-NEXT:    pextrb $11, %xmm0, %edx
    574 ; SSE42-NEXT:    andl $1, %edx
    575 ; SSE42-NEXT:    shll $11, %edx
    576 ; SSE42-NEXT:    orl %ecx, %edx
    577 ; SSE42-NEXT:    pextrb $12, %xmm0, %ecx
    578 ; SSE42-NEXT:    andl $1, %ecx
    579 ; SSE42-NEXT:    shll $12, %ecx
    580 ; SSE42-NEXT:    orl %edx, %ecx
    581 ; SSE42-NEXT:    pextrb $13, %xmm0, %edx
    582 ; SSE42-NEXT:    andl $1, %edx
    583 ; SSE42-NEXT:    shll $13, %edx
    584 ; SSE42-NEXT:    orl %ecx, %edx
    585 ; SSE42-NEXT:    pextrb $14, %xmm0, %ecx
    586 ; SSE42-NEXT:    andl $1, %ecx
    587 ; SSE42-NEXT:    shll $14, %ecx
    588 ; SSE42-NEXT:    orl %edx, %ecx
    589 ; SSE42-NEXT:    pextrb $15, %xmm0, %edx
    590 ; SSE42-NEXT:    shll $15, %edx
    591 ; SSE42-NEXT:    orl %ecx, %edx
    592 ; SSE42-NEXT:    orl %eax, %edx
    593 ; SSE42-NEXT:    movw %dx, (%rdi)
    594 ; SSE42-NEXT:    movq %rdi, %rax
    595 ; SSE42-NEXT:    retq
    596 ;
    597 ; AVX1-LABEL: test_cmp_v32i8:
    598 ; AVX1:       # %bb.0:
    599 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
    600 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
    601 ; AVX1-NEXT:    vpcmpgtb %xmm2, %xmm3, %xmm2
    602 ; AVX1-NEXT:    vpcmpgtb %xmm1, %xmm0, %xmm0
    603 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
    604 ; AVX1-NEXT:    retq
    605 ;
    606 ; AVX2-LABEL: test_cmp_v32i8:
    607 ; AVX2:       # %bb.0:
    608 ; AVX2-NEXT:    vpcmpgtb %ymm1, %ymm0, %ymm0
    609 ; AVX2-NEXT:    retq
    610 ;
    611 ; AVX512-LABEL: test_cmp_v32i8:
    612 ; AVX512:       # %bb.0:
    613 ; AVX512-NEXT:    vpcmpgtb %ymm1, %ymm0, %ymm0
    614 ; AVX512-NEXT:    retq
    615   %1 = icmp sgt <32 x i8> %a0, %a1
    616   ret <32 x i1> %1
    617 }
    618 
    619 ;
    620 ; 512-bit vector comparisons
    621 ;
    622 
    623 define <8 x i1> @test_cmp_v8f64(<8 x double> %a0, <8 x double> %a1) nounwind {
    624 ; SSE-LABEL: test_cmp_v8f64:
    625 ; SSE:       # %bb.0:
    626 ; SSE-NEXT:    cmpltpd %xmm3, %xmm7
    627 ; SSE-NEXT:    cmpltpd %xmm2, %xmm6
    628 ; SSE-NEXT:    packssdw %xmm7, %xmm6
    629 ; SSE-NEXT:    cmpltpd %xmm1, %xmm5
    630 ; SSE-NEXT:    cmpltpd %xmm0, %xmm4
    631 ; SSE-NEXT:    packssdw %xmm5, %xmm4
    632 ; SSE-NEXT:    packssdw %xmm6, %xmm4
    633 ; SSE-NEXT:    movdqa %xmm4, %xmm0
    634 ; SSE-NEXT:    retq
    635 ;
    636 ; AVX1-LABEL: test_cmp_v8f64:
    637 ; AVX1:       # %bb.0:
    638 ; AVX1-NEXT:    vcmpltpd %ymm1, %ymm3, %ymm1
    639 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
    640 ; AVX1-NEXT:    vpackssdw %xmm3, %xmm1, %xmm1
    641 ; AVX1-NEXT:    vcmpltpd %ymm0, %ymm2, %ymm0
    642 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
    643 ; AVX1-NEXT:    vpackssdw %xmm2, %xmm0, %xmm0
    644 ; AVX1-NEXT:    vpackssdw %xmm1, %xmm0, %xmm0
    645 ; AVX1-NEXT:    vzeroupper
    646 ; AVX1-NEXT:    retq
    647 ;
    648 ; AVX2-LABEL: test_cmp_v8f64:
    649 ; AVX2:       # %bb.0:
    650 ; AVX2-NEXT:    vcmpltpd %ymm1, %ymm3, %ymm1
    651 ; AVX2-NEXT:    vcmpltpd %ymm0, %ymm2, %ymm0
    652 ; AVX2-NEXT:    vpackssdw %ymm1, %ymm0, %ymm0
    653 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]
    654 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
    655 ; AVX2-NEXT:    vpackssdw %xmm1, %xmm0, %xmm0
    656 ; AVX2-NEXT:    vzeroupper
    657 ; AVX2-NEXT:    retq
    658 ;
    659 ; AVX512F-LABEL: test_cmp_v8f64:
    660 ; AVX512F:       # %bb.0:
    661 ; AVX512F-NEXT:    vcmpltpd %zmm0, %zmm1, %k1
    662 ; AVX512F-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
    663 ; AVX512F-NEXT:    vpmovdw %zmm0, %ymm0
    664 ; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 killed $ymm0
    665 ; AVX512F-NEXT:    vzeroupper
    666 ; AVX512F-NEXT:    retq
    667 ;
    668 ; AVX512DQ-LABEL: test_cmp_v8f64:
    669 ; AVX512DQ:       # %bb.0:
    670 ; AVX512DQ-NEXT:    vcmpltpd %zmm0, %zmm1, %k0
    671 ; AVX512DQ-NEXT:    vpmovm2d %k0, %zmm0
    672 ; AVX512DQ-NEXT:    vpmovdw %zmm0, %ymm0
    673 ; AVX512DQ-NEXT:    # kill: def $xmm0 killed $xmm0 killed $ymm0
    674 ; AVX512DQ-NEXT:    vzeroupper
    675 ; AVX512DQ-NEXT:    retq
    676 ;
    677 ; AVX512BW-LABEL: test_cmp_v8f64:
    678 ; AVX512BW:       # %bb.0:
    679 ; AVX512BW-NEXT:    vcmpltpd %zmm0, %zmm1, %k0
    680 ; AVX512BW-NEXT:    vpmovm2w %k0, %zmm0
    681 ; AVX512BW-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
    682 ; AVX512BW-NEXT:    vzeroupper
    683 ; AVX512BW-NEXT:    retq
    684   %1 = fcmp ogt <8 x double> %a0, %a1
    685   ret <8 x i1> %1
    686 }
    687 
    688 define <16 x i1> @test_cmp_v16f32(<16 x float> %a0, <16 x float> %a1) nounwind {
    689 ; SSE-LABEL: test_cmp_v16f32:
    690 ; SSE:       # %bb.0:
    691 ; SSE-NEXT:    cmpltps %xmm3, %xmm7
    692 ; SSE-NEXT:    cmpltps %xmm2, %xmm6
    693 ; SSE-NEXT:    packssdw %xmm7, %xmm6
    694 ; SSE-NEXT:    cmpltps %xmm1, %xmm5
    695 ; SSE-NEXT:    cmpltps %xmm0, %xmm4
    696 ; SSE-NEXT:    packssdw %xmm5, %xmm4
    697 ; SSE-NEXT:    packsswb %xmm6, %xmm4
    698 ; SSE-NEXT:    movdqa %xmm4, %xmm0
    699 ; SSE-NEXT:    retq
    700 ;
    701 ; AVX1-LABEL: test_cmp_v16f32:
    702 ; AVX1:       # %bb.0:
    703 ; AVX1-NEXT:    vcmpltps %ymm1, %ymm3, %ymm1
    704 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
    705 ; AVX1-NEXT:    vpackssdw %xmm3, %xmm1, %xmm1
    706 ; AVX1-NEXT:    vcmpltps %ymm0, %ymm2, %ymm0
    707 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
    708 ; AVX1-NEXT:    vpackssdw %xmm2, %xmm0, %xmm0
    709 ; AVX1-NEXT:    vpacksswb %xmm1, %xmm0, %xmm0
    710 ; AVX1-NEXT:    vzeroupper
    711 ; AVX1-NEXT:    retq
    712 ;
    713 ; AVX2-LABEL: test_cmp_v16f32:
    714 ; AVX2:       # %bb.0:
    715 ; AVX2-NEXT:    vcmpltps %ymm1, %ymm3, %ymm1
    716 ; AVX2-NEXT:    vcmpltps %ymm0, %ymm2, %ymm0
    717 ; AVX2-NEXT:    vpackssdw %ymm1, %ymm0, %ymm0
    718 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]
    719 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
    720 ; AVX2-NEXT:    vpacksswb %xmm1, %xmm0, %xmm0
    721 ; AVX2-NEXT:    vzeroupper
    722 ; AVX2-NEXT:    retq
    723 ;
    724 ; AVX512F-LABEL: test_cmp_v16f32:
    725 ; AVX512F:       # %bb.0:
    726 ; AVX512F-NEXT:    vcmpltps %zmm0, %zmm1, %k1
    727 ; AVX512F-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
    728 ; AVX512F-NEXT:    vpmovdb %zmm0, %xmm0
    729 ; AVX512F-NEXT:    vzeroupper
    730 ; AVX512F-NEXT:    retq
    731 ;
    732 ; AVX512DQ-LABEL: test_cmp_v16f32:
    733 ; AVX512DQ:       # %bb.0:
    734 ; AVX512DQ-NEXT:    vcmpltps %zmm0, %zmm1, %k0
    735 ; AVX512DQ-NEXT:    vpmovm2d %k0, %zmm0
    736 ; AVX512DQ-NEXT:    vpmovdb %zmm0, %xmm0
    737 ; AVX512DQ-NEXT:    vzeroupper
    738 ; AVX512DQ-NEXT:    retq
    739 ;
    740 ; AVX512BW-LABEL: test_cmp_v16f32:
    741 ; AVX512BW:       # %bb.0:
    742 ; AVX512BW-NEXT:    vcmpltps %zmm0, %zmm1, %k0
    743 ; AVX512BW-NEXT:    vpmovm2b %k0, %zmm0
    744 ; AVX512BW-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
    745 ; AVX512BW-NEXT:    vzeroupper
    746 ; AVX512BW-NEXT:    retq
    747   %1 = fcmp ogt <16 x float> %a0, %a1
    748   ret <16 x i1> %1
    749 }
    750 
    751 define <8 x i1> @test_cmp_v8i64(<8 x i64> %a0, <8 x i64> %a1) nounwind {
    752 ; SSE2-LABEL: test_cmp_v8i64:
    753 ; SSE2:       # %bb.0:
    754 ; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [2147483648,0,2147483648,0]
    755 ; SSE2-NEXT:    pxor %xmm8, %xmm7
    756 ; SSE2-NEXT:    pxor %xmm8, %xmm3
    757 ; SSE2-NEXT:    movdqa %xmm3, %xmm9
    758 ; SSE2-NEXT:    pcmpgtd %xmm7, %xmm9
    759 ; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm9[0,0,2,2]
    760 ; SSE2-NEXT:    pcmpeqd %xmm7, %xmm3
    761 ; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
    762 ; SSE2-NEXT:    pand %xmm10, %xmm3
    763 ; SSE2-NEXT:    pshufd {{.*#+}} xmm7 = xmm9[1,1,3,3]
    764 ; SSE2-NEXT:    por %xmm3, %xmm7
    765 ; SSE2-NEXT:    pxor %xmm8, %xmm6
    766 ; SSE2-NEXT:    pxor %xmm8, %xmm2
    767 ; SSE2-NEXT:    movdqa %xmm2, %xmm3
    768 ; SSE2-NEXT:    pcmpgtd %xmm6, %xmm3
    769 ; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm3[0,0,2,2]
    770 ; SSE2-NEXT:    pcmpeqd %xmm6, %xmm2
    771 ; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm2[1,1,3,3]
    772 ; SSE2-NEXT:    pand %xmm9, %xmm6
    773 ; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm3[1,1,3,3]
    774 ; SSE2-NEXT:    por %xmm6, %xmm2
    775 ; SSE2-NEXT:    packssdw %xmm7, %xmm2
    776 ; SSE2-NEXT:    pxor %xmm8, %xmm5
    777 ; SSE2-NEXT:    pxor %xmm8, %xmm1
    778 ; SSE2-NEXT:    movdqa %xmm1, %xmm3
    779 ; SSE2-NEXT:    pcmpgtd %xmm5, %xmm3
    780 ; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm3[0,0,2,2]
    781 ; SSE2-NEXT:    pcmpeqd %xmm5, %xmm1
    782 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
    783 ; SSE2-NEXT:    pand %xmm6, %xmm1
    784 ; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
    785 ; SSE2-NEXT:    por %xmm1, %xmm3
    786 ; SSE2-NEXT:    pxor %xmm8, %xmm4
    787 ; SSE2-NEXT:    pxor %xmm8, %xmm0
    788 ; SSE2-NEXT:    movdqa %xmm0, %xmm1
    789 ; SSE2-NEXT:    pcmpgtd %xmm4, %xmm1
    790 ; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm1[0,0,2,2]
    791 ; SSE2-NEXT:    pcmpeqd %xmm4, %xmm0
    792 ; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm0[1,1,3,3]
    793 ; SSE2-NEXT:    pand %xmm5, %xmm4
    794 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3]
    795 ; SSE2-NEXT:    por %xmm4, %xmm0
    796 ; SSE2-NEXT:    packssdw %xmm3, %xmm0
    797 ; SSE2-NEXT:    packssdw %xmm2, %xmm0
    798 ; SSE2-NEXT:    retq
    799 ;
    800 ; SSE42-LABEL: test_cmp_v8i64:
    801 ; SSE42:       # %bb.0:
    802 ; SSE42-NEXT:    pcmpgtq %xmm7, %xmm3
    803 ; SSE42-NEXT:    pcmpgtq %xmm6, %xmm2
    804 ; SSE42-NEXT:    packssdw %xmm3, %xmm2
    805 ; SSE42-NEXT:    pcmpgtq %xmm5, %xmm1
    806 ; SSE42-NEXT:    pcmpgtq %xmm4, %xmm0
    807 ; SSE42-NEXT:    packssdw %xmm1, %xmm0
    808 ; SSE42-NEXT:    packssdw %xmm2, %xmm0
    809 ; SSE42-NEXT:    retq
    810 ;
    811 ; AVX1-LABEL: test_cmp_v8i64:
    812 ; AVX1:       # %bb.0:
    813 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
    814 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm5
    815 ; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm5, %xmm4
    816 ; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm1, %xmm1
    817 ; AVX1-NEXT:    vpackssdw %xmm4, %xmm1, %xmm1
    818 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm3
    819 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm4
    820 ; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm4, %xmm3
    821 ; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm0, %xmm0
    822 ; AVX1-NEXT:    vpackssdw %xmm3, %xmm0, %xmm0
    823 ; AVX1-NEXT:    vpackssdw %xmm1, %xmm0, %xmm0
    824 ; AVX1-NEXT:    vzeroupper
    825 ; AVX1-NEXT:    retq
    826 ;
    827 ; AVX2-LABEL: test_cmp_v8i64:
    828 ; AVX2:       # %bb.0:
    829 ; AVX2-NEXT:    vpcmpgtq %ymm3, %ymm1, %ymm1
    830 ; AVX2-NEXT:    vpcmpgtq %ymm2, %ymm0, %ymm0
    831 ; AVX2-NEXT:    vpackssdw %ymm1, %ymm0, %ymm0
    832 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]
    833 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
    834 ; AVX2-NEXT:    vpackssdw %xmm1, %xmm0, %xmm0
    835 ; AVX2-NEXT:    vzeroupper
    836 ; AVX2-NEXT:    retq
    837 ;
    838 ; AVX512F-LABEL: test_cmp_v8i64:
    839 ; AVX512F:       # %bb.0:
    840 ; AVX512F-NEXT:    vpcmpgtq %zmm1, %zmm0, %k1
    841 ; AVX512F-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
    842 ; AVX512F-NEXT:    vpmovdw %zmm0, %ymm0
    843 ; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 killed $ymm0
    844 ; AVX512F-NEXT:    vzeroupper
    845 ; AVX512F-NEXT:    retq
    846 ;
    847 ; AVX512DQ-LABEL: test_cmp_v8i64:
    848 ; AVX512DQ:       # %bb.0:
    849 ; AVX512DQ-NEXT:    vpcmpgtq %zmm1, %zmm0, %k0
    850 ; AVX512DQ-NEXT:    vpmovm2d %k0, %zmm0
    851 ; AVX512DQ-NEXT:    vpmovdw %zmm0, %ymm0
    852 ; AVX512DQ-NEXT:    # kill: def $xmm0 killed $xmm0 killed $ymm0
    853 ; AVX512DQ-NEXT:    vzeroupper
    854 ; AVX512DQ-NEXT:    retq
    855 ;
    856 ; AVX512BW-LABEL: test_cmp_v8i64:
    857 ; AVX512BW:       # %bb.0:
    858 ; AVX512BW-NEXT:    vpcmpgtq %zmm1, %zmm0, %k0
    859 ; AVX512BW-NEXT:    vpmovm2w %k0, %zmm0
    860 ; AVX512BW-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
    861 ; AVX512BW-NEXT:    vzeroupper
    862 ; AVX512BW-NEXT:    retq
    863   %1 = icmp sgt <8 x i64> %a0, %a1
    864   ret <8 x i1> %1
    865 }
    866 
    867 define <16 x i1> @test_cmp_v16i32(<16 x i32> %a0, <16 x i32> %a1) nounwind {
    868 ; SSE-LABEL: test_cmp_v16i32:
    869 ; SSE:       # %bb.0:
    870 ; SSE-NEXT:    pcmpgtd %xmm7, %xmm3
    871 ; SSE-NEXT:    pcmpgtd %xmm6, %xmm2
    872 ; SSE-NEXT:    packssdw %xmm3, %xmm2
    873 ; SSE-NEXT:    pcmpgtd %xmm5, %xmm1
    874 ; SSE-NEXT:    pcmpgtd %xmm4, %xmm0
    875 ; SSE-NEXT:    packssdw %xmm1, %xmm0
    876 ; SSE-NEXT:    packsswb %xmm2, %xmm0
    877 ; SSE-NEXT:    retq
    878 ;
    879 ; AVX1-LABEL: test_cmp_v16i32:
    880 ; AVX1:       # %bb.0:
    881 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
    882 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm5
    883 ; AVX1-NEXT:    vpcmpgtd %xmm4, %xmm5, %xmm4
    884 ; AVX1-NEXT:    vpcmpgtd %xmm3, %xmm1, %xmm1
    885 ; AVX1-NEXT:    vpackssdw %xmm4, %xmm1, %xmm1
    886 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm3
    887 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm4
    888 ; AVX1-NEXT:    vpcmpgtd %xmm3, %xmm4, %xmm3
    889 ; AVX1-NEXT:    vpcmpgtd %xmm2, %xmm0, %xmm0
    890 ; AVX1-NEXT:    vpackssdw %xmm3, %xmm0, %xmm0
    891 ; AVX1-NEXT:    vpacksswb %xmm1, %xmm0, %xmm0
    892 ; AVX1-NEXT:    vzeroupper
    893 ; AVX1-NEXT:    retq
    894 ;
    895 ; AVX2-LABEL: test_cmp_v16i32:
    896 ; AVX2:       # %bb.0:
    897 ; AVX2-NEXT:    vpcmpgtd %ymm3, %ymm1, %ymm1
    898 ; AVX2-NEXT:    vpcmpgtd %ymm2, %ymm0, %ymm0
    899 ; AVX2-NEXT:    vpackssdw %ymm1, %ymm0, %ymm0
    900 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]
    901 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
    902 ; AVX2-NEXT:    vpacksswb %xmm1, %xmm0, %xmm0
    903 ; AVX2-NEXT:    vzeroupper
    904 ; AVX2-NEXT:    retq
    905 ;
    906 ; AVX512F-LABEL: test_cmp_v16i32:
    907 ; AVX512F:       # %bb.0:
    908 ; AVX512F-NEXT:    vpcmpgtd %zmm1, %zmm0, %k1
    909 ; AVX512F-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
    910 ; AVX512F-NEXT:    vpmovdb %zmm0, %xmm0
    911 ; AVX512F-NEXT:    vzeroupper
    912 ; AVX512F-NEXT:    retq
    913 ;
    914 ; AVX512DQ-LABEL: test_cmp_v16i32:
    915 ; AVX512DQ:       # %bb.0:
    916 ; AVX512DQ-NEXT:    vpcmpgtd %zmm1, %zmm0, %k0
    917 ; AVX512DQ-NEXT:    vpmovm2d %k0, %zmm0
    918 ; AVX512DQ-NEXT:    vpmovdb %zmm0, %xmm0
    919 ; AVX512DQ-NEXT:    vzeroupper
    920 ; AVX512DQ-NEXT:    retq
    921 ;
    922 ; AVX512BW-LABEL: test_cmp_v16i32:
    923 ; AVX512BW:       # %bb.0:
    924 ; AVX512BW-NEXT:    vpcmpgtd %zmm1, %zmm0, %k0
    925 ; AVX512BW-NEXT:    vpmovm2b %k0, %zmm0
    926 ; AVX512BW-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
    927 ; AVX512BW-NEXT:    vzeroupper
    928 ; AVX512BW-NEXT:    retq
    929   %1 = icmp sgt <16 x i32> %a0, %a1
    930   ret <16 x i1> %1
    931 }
    932 
    933 define <32 x i1> @test_cmp_v32i16(<32 x i16> %a0, <32 x i16> %a1) nounwind {
    934 ; SSE2-LABEL: test_cmp_v32i16:
    935 ; SSE2:       # %bb.0:
    936 ; SSE2-NEXT:    pcmpgtw %xmm5, %xmm1
    937 ; SSE2-NEXT:    pcmpgtw %xmm4, %xmm0
    938 ; SSE2-NEXT:    packsswb %xmm1, %xmm0
    939 ; SSE2-NEXT:    pcmpgtw %xmm7, %xmm3
    940 ; SSE2-NEXT:    pcmpgtw %xmm6, %xmm2
    941 ; SSE2-NEXT:    packsswb %xmm3, %xmm2
    942 ; SSE2-NEXT:    movdqa %xmm2, -{{[0-9]+}}(%rsp)
    943 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
    944 ; SSE2-NEXT:    andl $1, %eax
    945 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    946 ; SSE2-NEXT:    andl $1, %ecx
    947 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
    948 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    949 ; SSE2-NEXT:    andl $1, %ecx
    950 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
    951 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    952 ; SSE2-NEXT:    andl $1, %ecx
    953 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
    954 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    955 ; SSE2-NEXT:    andl $1, %ecx
    956 ; SSE2-NEXT:    shll $4, %ecx
    957 ; SSE2-NEXT:    orl %eax, %ecx
    958 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
    959 ; SSE2-NEXT:    andl $1, %eax
    960 ; SSE2-NEXT:    shll $5, %eax
    961 ; SSE2-NEXT:    orl %ecx, %eax
    962 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    963 ; SSE2-NEXT:    andl $1, %ecx
    964 ; SSE2-NEXT:    shll $6, %ecx
    965 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
    966 ; SSE2-NEXT:    andl $1, %edx
    967 ; SSE2-NEXT:    shll $7, %edx
    968 ; SSE2-NEXT:    orl %ecx, %edx
    969 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    970 ; SSE2-NEXT:    andl $1, %ecx
    971 ; SSE2-NEXT:    shll $8, %ecx
    972 ; SSE2-NEXT:    orl %edx, %ecx
    973 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
    974 ; SSE2-NEXT:    andl $1, %edx
    975 ; SSE2-NEXT:    shll $9, %edx
    976 ; SSE2-NEXT:    orl %ecx, %edx
    977 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    978 ; SSE2-NEXT:    andl $1, %ecx
    979 ; SSE2-NEXT:    shll $10, %ecx
    980 ; SSE2-NEXT:    orl %edx, %ecx
    981 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
    982 ; SSE2-NEXT:    andl $1, %edx
    983 ; SSE2-NEXT:    shll $11, %edx
    984 ; SSE2-NEXT:    orl %ecx, %edx
    985 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    986 ; SSE2-NEXT:    andl $1, %ecx
    987 ; SSE2-NEXT:    shll $12, %ecx
    988 ; SSE2-NEXT:    orl %edx, %ecx
    989 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
    990 ; SSE2-NEXT:    andl $1, %edx
    991 ; SSE2-NEXT:    shll $13, %edx
    992 ; SSE2-NEXT:    orl %ecx, %edx
    993 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
    994 ; SSE2-NEXT:    andl $1, %ecx
    995 ; SSE2-NEXT:    shll $14, %ecx
    996 ; SSE2-NEXT:    orl %edx, %ecx
    997 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
    998 ; SSE2-NEXT:    shll $15, %edx
    999 ; SSE2-NEXT:    orl %ecx, %edx
   1000 ; SSE2-NEXT:    orl %eax, %edx
   1001 ; SSE2-NEXT:    movw %dx, 2(%rdi)
   1002 ; SSE2-NEXT:    movdqa %xmm0, -{{[0-9]+}}(%rsp)
   1003 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   1004 ; SSE2-NEXT:    andl $1, %eax
   1005 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1006 ; SSE2-NEXT:    andl $1, %ecx
   1007 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   1008 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1009 ; SSE2-NEXT:    andl $1, %ecx
   1010 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   1011 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1012 ; SSE2-NEXT:    andl $1, %ecx
   1013 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   1014 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1015 ; SSE2-NEXT:    andl $1, %ecx
   1016 ; SSE2-NEXT:    shll $4, %ecx
   1017 ; SSE2-NEXT:    orl %eax, %ecx
   1018 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   1019 ; SSE2-NEXT:    andl $1, %eax
   1020 ; SSE2-NEXT:    shll $5, %eax
   1021 ; SSE2-NEXT:    orl %ecx, %eax
   1022 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1023 ; SSE2-NEXT:    andl $1, %ecx
   1024 ; SSE2-NEXT:    shll $6, %ecx
   1025 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1026 ; SSE2-NEXT:    andl $1, %edx
   1027 ; SSE2-NEXT:    shll $7, %edx
   1028 ; SSE2-NEXT:    orl %ecx, %edx
   1029 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1030 ; SSE2-NEXT:    andl $1, %ecx
   1031 ; SSE2-NEXT:    shll $8, %ecx
   1032 ; SSE2-NEXT:    orl %edx, %ecx
   1033 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1034 ; SSE2-NEXT:    andl $1, %edx
   1035 ; SSE2-NEXT:    shll $9, %edx
   1036 ; SSE2-NEXT:    orl %ecx, %edx
   1037 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1038 ; SSE2-NEXT:    andl $1, %ecx
   1039 ; SSE2-NEXT:    shll $10, %ecx
   1040 ; SSE2-NEXT:    orl %edx, %ecx
   1041 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1042 ; SSE2-NEXT:    andl $1, %edx
   1043 ; SSE2-NEXT:    shll $11, %edx
   1044 ; SSE2-NEXT:    orl %ecx, %edx
   1045 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1046 ; SSE2-NEXT:    andl $1, %ecx
   1047 ; SSE2-NEXT:    shll $12, %ecx
   1048 ; SSE2-NEXT:    orl %edx, %ecx
   1049 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1050 ; SSE2-NEXT:    andl $1, %edx
   1051 ; SSE2-NEXT:    shll $13, %edx
   1052 ; SSE2-NEXT:    orl %ecx, %edx
   1053 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1054 ; SSE2-NEXT:    andl $1, %ecx
   1055 ; SSE2-NEXT:    shll $14, %ecx
   1056 ; SSE2-NEXT:    orl %edx, %ecx
   1057 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1058 ; SSE2-NEXT:    shll $15, %edx
   1059 ; SSE2-NEXT:    orl %ecx, %edx
   1060 ; SSE2-NEXT:    orl %eax, %edx
   1061 ; SSE2-NEXT:    movw %dx, (%rdi)
   1062 ; SSE2-NEXT:    movq %rdi, %rax
   1063 ; SSE2-NEXT:    retq
   1064 ;
   1065 ; SSE42-LABEL: test_cmp_v32i16:
   1066 ; SSE42:       # %bb.0:
   1067 ; SSE42-NEXT:    pcmpgtw %xmm5, %xmm1
   1068 ; SSE42-NEXT:    pcmpgtw %xmm4, %xmm0
   1069 ; SSE42-NEXT:    pcmpgtw %xmm7, %xmm3
   1070 ; SSE42-NEXT:    pcmpgtw %xmm6, %xmm2
   1071 ; SSE42-NEXT:    pextrb $2, %xmm2, %eax
   1072 ; SSE42-NEXT:    andl $1, %eax
   1073 ; SSE42-NEXT:    pextrb $0, %xmm2, %ecx
   1074 ; SSE42-NEXT:    andl $1, %ecx
   1075 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
   1076 ; SSE42-NEXT:    pextrb $4, %xmm2, %ecx
   1077 ; SSE42-NEXT:    andl $1, %ecx
   1078 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
   1079 ; SSE42-NEXT:    pextrb $6, %xmm2, %ecx
   1080 ; SSE42-NEXT:    andl $1, %ecx
   1081 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
   1082 ; SSE42-NEXT:    pextrb $8, %xmm2, %ecx
   1083 ; SSE42-NEXT:    andl $1, %ecx
   1084 ; SSE42-NEXT:    shll $4, %ecx
   1085 ; SSE42-NEXT:    orl %eax, %ecx
   1086 ; SSE42-NEXT:    pextrb $10, %xmm2, %eax
   1087 ; SSE42-NEXT:    andl $1, %eax
   1088 ; SSE42-NEXT:    shll $5, %eax
   1089 ; SSE42-NEXT:    orl %ecx, %eax
   1090 ; SSE42-NEXT:    pextrb $12, %xmm2, %ecx
   1091 ; SSE42-NEXT:    andl $1, %ecx
   1092 ; SSE42-NEXT:    shll $6, %ecx
   1093 ; SSE42-NEXT:    pextrb $14, %xmm2, %edx
   1094 ; SSE42-NEXT:    andl $1, %edx
   1095 ; SSE42-NEXT:    shll $7, %edx
   1096 ; SSE42-NEXT:    orl %ecx, %edx
   1097 ; SSE42-NEXT:    pextrb $0, %xmm3, %ecx
   1098 ; SSE42-NEXT:    andl $1, %ecx
   1099 ; SSE42-NEXT:    shll $8, %ecx
   1100 ; SSE42-NEXT:    orl %edx, %ecx
   1101 ; SSE42-NEXT:    pextrb $2, %xmm3, %edx
   1102 ; SSE42-NEXT:    andl $1, %edx
   1103 ; SSE42-NEXT:    shll $9, %edx
   1104 ; SSE42-NEXT:    orl %ecx, %edx
   1105 ; SSE42-NEXT:    pextrb $4, %xmm3, %ecx
   1106 ; SSE42-NEXT:    andl $1, %ecx
   1107 ; SSE42-NEXT:    shll $10, %ecx
   1108 ; SSE42-NEXT:    orl %edx, %ecx
   1109 ; SSE42-NEXT:    pextrb $6, %xmm3, %edx
   1110 ; SSE42-NEXT:    andl $1, %edx
   1111 ; SSE42-NEXT:    shll $11, %edx
   1112 ; SSE42-NEXT:    orl %ecx, %edx
   1113 ; SSE42-NEXT:    pextrb $8, %xmm3, %ecx
   1114 ; SSE42-NEXT:    andl $1, %ecx
   1115 ; SSE42-NEXT:    shll $12, %ecx
   1116 ; SSE42-NEXT:    orl %edx, %ecx
   1117 ; SSE42-NEXT:    pextrb $10, %xmm3, %edx
   1118 ; SSE42-NEXT:    andl $1, %edx
   1119 ; SSE42-NEXT:    shll $13, %edx
   1120 ; SSE42-NEXT:    orl %ecx, %edx
   1121 ; SSE42-NEXT:    pextrb $12, %xmm3, %ecx
   1122 ; SSE42-NEXT:    andl $1, %ecx
   1123 ; SSE42-NEXT:    shll $14, %ecx
   1124 ; SSE42-NEXT:    orl %edx, %ecx
   1125 ; SSE42-NEXT:    pextrb $14, %xmm3, %edx
   1126 ; SSE42-NEXT:    shll $15, %edx
   1127 ; SSE42-NEXT:    orl %ecx, %edx
   1128 ; SSE42-NEXT:    orl %eax, %edx
   1129 ; SSE42-NEXT:    movw %dx, 2(%rdi)
   1130 ; SSE42-NEXT:    pextrb $2, %xmm0, %eax
   1131 ; SSE42-NEXT:    andl $1, %eax
   1132 ; SSE42-NEXT:    pextrb $0, %xmm0, %ecx
   1133 ; SSE42-NEXT:    andl $1, %ecx
   1134 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
   1135 ; SSE42-NEXT:    pextrb $4, %xmm0, %ecx
   1136 ; SSE42-NEXT:    andl $1, %ecx
   1137 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
   1138 ; SSE42-NEXT:    pextrb $6, %xmm0, %ecx
   1139 ; SSE42-NEXT:    andl $1, %ecx
   1140 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
   1141 ; SSE42-NEXT:    pextrb $8, %xmm0, %ecx
   1142 ; SSE42-NEXT:    andl $1, %ecx
   1143 ; SSE42-NEXT:    shll $4, %ecx
   1144 ; SSE42-NEXT:    orl %eax, %ecx
   1145 ; SSE42-NEXT:    pextrb $10, %xmm0, %eax
   1146 ; SSE42-NEXT:    andl $1, %eax
   1147 ; SSE42-NEXT:    shll $5, %eax
   1148 ; SSE42-NEXT:    orl %ecx, %eax
   1149 ; SSE42-NEXT:    pextrb $12, %xmm0, %ecx
   1150 ; SSE42-NEXT:    andl $1, %ecx
   1151 ; SSE42-NEXT:    shll $6, %ecx
   1152 ; SSE42-NEXT:    pextrb $14, %xmm0, %edx
   1153 ; SSE42-NEXT:    andl $1, %edx
   1154 ; SSE42-NEXT:    shll $7, %edx
   1155 ; SSE42-NEXT:    orl %ecx, %edx
   1156 ; SSE42-NEXT:    pextrb $0, %xmm1, %ecx
   1157 ; SSE42-NEXT:    andl $1, %ecx
   1158 ; SSE42-NEXT:    shll $8, %ecx
   1159 ; SSE42-NEXT:    orl %edx, %ecx
   1160 ; SSE42-NEXT:    pextrb $2, %xmm1, %edx
   1161 ; SSE42-NEXT:    andl $1, %edx
   1162 ; SSE42-NEXT:    shll $9, %edx
   1163 ; SSE42-NEXT:    orl %ecx, %edx
   1164 ; SSE42-NEXT:    pextrb $4, %xmm1, %ecx
   1165 ; SSE42-NEXT:    andl $1, %ecx
   1166 ; SSE42-NEXT:    shll $10, %ecx
   1167 ; SSE42-NEXT:    orl %edx, %ecx
   1168 ; SSE42-NEXT:    pextrb $6, %xmm1, %edx
   1169 ; SSE42-NEXT:    andl $1, %edx
   1170 ; SSE42-NEXT:    shll $11, %edx
   1171 ; SSE42-NEXT:    orl %ecx, %edx
   1172 ; SSE42-NEXT:    pextrb $8, %xmm1, %ecx
   1173 ; SSE42-NEXT:    andl $1, %ecx
   1174 ; SSE42-NEXT:    shll $12, %ecx
   1175 ; SSE42-NEXT:    orl %edx, %ecx
   1176 ; SSE42-NEXT:    pextrb $10, %xmm1, %edx
   1177 ; SSE42-NEXT:    andl $1, %edx
   1178 ; SSE42-NEXT:    shll $13, %edx
   1179 ; SSE42-NEXT:    orl %ecx, %edx
   1180 ; SSE42-NEXT:    pextrb $12, %xmm1, %ecx
   1181 ; SSE42-NEXT:    andl $1, %ecx
   1182 ; SSE42-NEXT:    shll $14, %ecx
   1183 ; SSE42-NEXT:    orl %edx, %ecx
   1184 ; SSE42-NEXT:    pextrb $14, %xmm1, %edx
   1185 ; SSE42-NEXT:    shll $15, %edx
   1186 ; SSE42-NEXT:    orl %ecx, %edx
   1187 ; SSE42-NEXT:    orl %eax, %edx
   1188 ; SSE42-NEXT:    movw %dx, (%rdi)
   1189 ; SSE42-NEXT:    movq %rdi, %rax
   1190 ; SSE42-NEXT:    retq
   1191 ;
   1192 ; AVX1-LABEL: test_cmp_v32i16:
   1193 ; AVX1:       # %bb.0:
   1194 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   1195 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm5
   1196 ; AVX1-NEXT:    vpcmpgtw %xmm4, %xmm5, %xmm4
   1197 ; AVX1-NEXT:    vpcmpgtw %xmm3, %xmm1, %xmm1
   1198 ; AVX1-NEXT:    vpacksswb %xmm4, %xmm1, %xmm1
   1199 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm3
   1200 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm4
   1201 ; AVX1-NEXT:    vpcmpgtw %xmm3, %xmm4, %xmm3
   1202 ; AVX1-NEXT:    vpcmpgtw %xmm2, %xmm0, %xmm0
   1203 ; AVX1-NEXT:    vpacksswb %xmm3, %xmm0, %xmm0
   1204 ; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
   1205 ; AVX1-NEXT:    retq
   1206 ;
   1207 ; AVX2-LABEL: test_cmp_v32i16:
   1208 ; AVX2:       # %bb.0:
   1209 ; AVX2-NEXT:    vpcmpgtw %ymm3, %ymm1, %ymm1
   1210 ; AVX2-NEXT:    vpcmpgtw %ymm2, %ymm0, %ymm0
   1211 ; AVX2-NEXT:    vpacksswb %ymm1, %ymm0, %ymm0
   1212 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]
   1213 ; AVX2-NEXT:    retq
   1214 ;
   1215 ; AVX512F-LABEL: test_cmp_v32i16:
   1216 ; AVX512F:       # %bb.0:
   1217 ; AVX512F-NEXT:    vpcmpgtw %ymm2, %ymm0, %ymm0
   1218 ; AVX512F-NEXT:    vpmovsxwd %ymm0, %zmm0
   1219 ; AVX512F-NEXT:    vpmovdb %zmm0, %xmm0
   1220 ; AVX512F-NEXT:    vpcmpgtw %ymm3, %ymm1, %ymm1
   1221 ; AVX512F-NEXT:    vpmovsxwd %ymm1, %zmm1
   1222 ; AVX512F-NEXT:    vpmovdb %zmm1, %xmm1
   1223 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   1224 ; AVX512F-NEXT:    retq
   1225 ;
   1226 ; AVX512DQ-LABEL: test_cmp_v32i16:
   1227 ; AVX512DQ:       # %bb.0:
   1228 ; AVX512DQ-NEXT:    vpcmpgtw %ymm2, %ymm0, %ymm0
   1229 ; AVX512DQ-NEXT:    vpmovsxwd %ymm0, %zmm0
   1230 ; AVX512DQ-NEXT:    vpmovdb %zmm0, %xmm0
   1231 ; AVX512DQ-NEXT:    vpcmpgtw %ymm3, %ymm1, %ymm1
   1232 ; AVX512DQ-NEXT:    vpmovsxwd %ymm1, %zmm1
   1233 ; AVX512DQ-NEXT:    vpmovdb %zmm1, %xmm1
   1234 ; AVX512DQ-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   1235 ; AVX512DQ-NEXT:    retq
   1236 ;
   1237 ; AVX512BW-LABEL: test_cmp_v32i16:
   1238 ; AVX512BW:       # %bb.0:
   1239 ; AVX512BW-NEXT:    vpcmpgtw %zmm1, %zmm0, %k0
   1240 ; AVX512BW-NEXT:    vpmovm2b %k0, %zmm0
   1241 ; AVX512BW-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
   1242 ; AVX512BW-NEXT:    retq
   1243   %1 = icmp sgt <32 x i16> %a0, %a1
   1244   ret <32 x i1> %1
   1245 }
   1246 
   1247 define <64 x i1> @test_cmp_v64i8(<64 x i8> %a0, <64 x i8> %a1) nounwind {
   1248 ; SSE2-LABEL: test_cmp_v64i8:
   1249 ; SSE2:       # %bb.0:
   1250 ; SSE2-NEXT:    pcmpgtb %xmm4, %xmm0
   1251 ; SSE2-NEXT:    pcmpgtb %xmm5, %xmm1
   1252 ; SSE2-NEXT:    pcmpgtb %xmm6, %xmm2
   1253 ; SSE2-NEXT:    pcmpgtb %xmm7, %xmm3
   1254 ; SSE2-NEXT:    movdqa %xmm3, -{{[0-9]+}}(%rsp)
   1255 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   1256 ; SSE2-NEXT:    andl $1, %eax
   1257 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1258 ; SSE2-NEXT:    andl $1, %ecx
   1259 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   1260 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1261 ; SSE2-NEXT:    andl $1, %ecx
   1262 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   1263 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1264 ; SSE2-NEXT:    andl $1, %ecx
   1265 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   1266 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1267 ; SSE2-NEXT:    andl $1, %ecx
   1268 ; SSE2-NEXT:    shll $4, %ecx
   1269 ; SSE2-NEXT:    orl %eax, %ecx
   1270 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   1271 ; SSE2-NEXT:    andl $1, %eax
   1272 ; SSE2-NEXT:    shll $5, %eax
   1273 ; SSE2-NEXT:    orl %ecx, %eax
   1274 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1275 ; SSE2-NEXT:    andl $1, %ecx
   1276 ; SSE2-NEXT:    shll $6, %ecx
   1277 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1278 ; SSE2-NEXT:    andl $1, %edx
   1279 ; SSE2-NEXT:    shll $7, %edx
   1280 ; SSE2-NEXT:    orl %ecx, %edx
   1281 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1282 ; SSE2-NEXT:    andl $1, %ecx
   1283 ; SSE2-NEXT:    shll $8, %ecx
   1284 ; SSE2-NEXT:    orl %edx, %ecx
   1285 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1286 ; SSE2-NEXT:    andl $1, %edx
   1287 ; SSE2-NEXT:    shll $9, %edx
   1288 ; SSE2-NEXT:    orl %ecx, %edx
   1289 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1290 ; SSE2-NEXT:    andl $1, %ecx
   1291 ; SSE2-NEXT:    shll $10, %ecx
   1292 ; SSE2-NEXT:    orl %edx, %ecx
   1293 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1294 ; SSE2-NEXT:    andl $1, %edx
   1295 ; SSE2-NEXT:    shll $11, %edx
   1296 ; SSE2-NEXT:    orl %ecx, %edx
   1297 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1298 ; SSE2-NEXT:    andl $1, %ecx
   1299 ; SSE2-NEXT:    shll $12, %ecx
   1300 ; SSE2-NEXT:    orl %edx, %ecx
   1301 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1302 ; SSE2-NEXT:    andl $1, %edx
   1303 ; SSE2-NEXT:    shll $13, %edx
   1304 ; SSE2-NEXT:    orl %ecx, %edx
   1305 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1306 ; SSE2-NEXT:    andl $1, %ecx
   1307 ; SSE2-NEXT:    shll $14, %ecx
   1308 ; SSE2-NEXT:    orl %edx, %ecx
   1309 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1310 ; SSE2-NEXT:    shll $15, %edx
   1311 ; SSE2-NEXT:    orl %ecx, %edx
   1312 ; SSE2-NEXT:    orl %eax, %edx
   1313 ; SSE2-NEXT:    movw %dx, 6(%rdi)
   1314 ; SSE2-NEXT:    movdqa %xmm2, -{{[0-9]+}}(%rsp)
   1315 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   1316 ; SSE2-NEXT:    andl $1, %eax
   1317 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1318 ; SSE2-NEXT:    andl $1, %ecx
   1319 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   1320 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1321 ; SSE2-NEXT:    andl $1, %ecx
   1322 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   1323 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1324 ; SSE2-NEXT:    andl $1, %ecx
   1325 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   1326 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1327 ; SSE2-NEXT:    andl $1, %ecx
   1328 ; SSE2-NEXT:    shll $4, %ecx
   1329 ; SSE2-NEXT:    orl %eax, %ecx
   1330 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   1331 ; SSE2-NEXT:    andl $1, %eax
   1332 ; SSE2-NEXT:    shll $5, %eax
   1333 ; SSE2-NEXT:    orl %ecx, %eax
   1334 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1335 ; SSE2-NEXT:    andl $1, %ecx
   1336 ; SSE2-NEXT:    shll $6, %ecx
   1337 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1338 ; SSE2-NEXT:    andl $1, %edx
   1339 ; SSE2-NEXT:    shll $7, %edx
   1340 ; SSE2-NEXT:    orl %ecx, %edx
   1341 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1342 ; SSE2-NEXT:    andl $1, %ecx
   1343 ; SSE2-NEXT:    shll $8, %ecx
   1344 ; SSE2-NEXT:    orl %edx, %ecx
   1345 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1346 ; SSE2-NEXT:    andl $1, %edx
   1347 ; SSE2-NEXT:    shll $9, %edx
   1348 ; SSE2-NEXT:    orl %ecx, %edx
   1349 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1350 ; SSE2-NEXT:    andl $1, %ecx
   1351 ; SSE2-NEXT:    shll $10, %ecx
   1352 ; SSE2-NEXT:    orl %edx, %ecx
   1353 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1354 ; SSE2-NEXT:    andl $1, %edx
   1355 ; SSE2-NEXT:    shll $11, %edx
   1356 ; SSE2-NEXT:    orl %ecx, %edx
   1357 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1358 ; SSE2-NEXT:    andl $1, %ecx
   1359 ; SSE2-NEXT:    shll $12, %ecx
   1360 ; SSE2-NEXT:    orl %edx, %ecx
   1361 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1362 ; SSE2-NEXT:    andl $1, %edx
   1363 ; SSE2-NEXT:    shll $13, %edx
   1364 ; SSE2-NEXT:    orl %ecx, %edx
   1365 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1366 ; SSE2-NEXT:    andl $1, %ecx
   1367 ; SSE2-NEXT:    shll $14, %ecx
   1368 ; SSE2-NEXT:    orl %edx, %ecx
   1369 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1370 ; SSE2-NEXT:    shll $15, %edx
   1371 ; SSE2-NEXT:    orl %ecx, %edx
   1372 ; SSE2-NEXT:    orl %eax, %edx
   1373 ; SSE2-NEXT:    movw %dx, 4(%rdi)
   1374 ; SSE2-NEXT:    movdqa %xmm1, -{{[0-9]+}}(%rsp)
   1375 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   1376 ; SSE2-NEXT:    andl $1, %eax
   1377 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1378 ; SSE2-NEXT:    andl $1, %ecx
   1379 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   1380 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1381 ; SSE2-NEXT:    andl $1, %ecx
   1382 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   1383 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1384 ; SSE2-NEXT:    andl $1, %ecx
   1385 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   1386 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1387 ; SSE2-NEXT:    andl $1, %ecx
   1388 ; SSE2-NEXT:    shll $4, %ecx
   1389 ; SSE2-NEXT:    orl %eax, %ecx
   1390 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   1391 ; SSE2-NEXT:    andl $1, %eax
   1392 ; SSE2-NEXT:    shll $5, %eax
   1393 ; SSE2-NEXT:    orl %ecx, %eax
   1394 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1395 ; SSE2-NEXT:    andl $1, %ecx
   1396 ; SSE2-NEXT:    shll $6, %ecx
   1397 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1398 ; SSE2-NEXT:    andl $1, %edx
   1399 ; SSE2-NEXT:    shll $7, %edx
   1400 ; SSE2-NEXT:    orl %ecx, %edx
   1401 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1402 ; SSE2-NEXT:    andl $1, %ecx
   1403 ; SSE2-NEXT:    shll $8, %ecx
   1404 ; SSE2-NEXT:    orl %edx, %ecx
   1405 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1406 ; SSE2-NEXT:    andl $1, %edx
   1407 ; SSE2-NEXT:    shll $9, %edx
   1408 ; SSE2-NEXT:    orl %ecx, %edx
   1409 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1410 ; SSE2-NEXT:    andl $1, %ecx
   1411 ; SSE2-NEXT:    shll $10, %ecx
   1412 ; SSE2-NEXT:    orl %edx, %ecx
   1413 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1414 ; SSE2-NEXT:    andl $1, %edx
   1415 ; SSE2-NEXT:    shll $11, %edx
   1416 ; SSE2-NEXT:    orl %ecx, %edx
   1417 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1418 ; SSE2-NEXT:    andl $1, %ecx
   1419 ; SSE2-NEXT:    shll $12, %ecx
   1420 ; SSE2-NEXT:    orl %edx, %ecx
   1421 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1422 ; SSE2-NEXT:    andl $1, %edx
   1423 ; SSE2-NEXT:    shll $13, %edx
   1424 ; SSE2-NEXT:    orl %ecx, %edx
   1425 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1426 ; SSE2-NEXT:    andl $1, %ecx
   1427 ; SSE2-NEXT:    shll $14, %ecx
   1428 ; SSE2-NEXT:    orl %edx, %ecx
   1429 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1430 ; SSE2-NEXT:    shll $15, %edx
   1431 ; SSE2-NEXT:    orl %ecx, %edx
   1432 ; SSE2-NEXT:    orl %eax, %edx
   1433 ; SSE2-NEXT:    movw %dx, 2(%rdi)
   1434 ; SSE2-NEXT:    movdqa %xmm0, -{{[0-9]+}}(%rsp)
   1435 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   1436 ; SSE2-NEXT:    andl $1, %eax
   1437 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1438 ; SSE2-NEXT:    andl $1, %ecx
   1439 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   1440 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1441 ; SSE2-NEXT:    andl $1, %ecx
   1442 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   1443 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1444 ; SSE2-NEXT:    andl $1, %ecx
   1445 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   1446 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1447 ; SSE2-NEXT:    andl $1, %ecx
   1448 ; SSE2-NEXT:    shll $4, %ecx
   1449 ; SSE2-NEXT:    orl %eax, %ecx
   1450 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   1451 ; SSE2-NEXT:    andl $1, %eax
   1452 ; SSE2-NEXT:    shll $5, %eax
   1453 ; SSE2-NEXT:    orl %ecx, %eax
   1454 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1455 ; SSE2-NEXT:    andl $1, %ecx
   1456 ; SSE2-NEXT:    shll $6, %ecx
   1457 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1458 ; SSE2-NEXT:    andl $1, %edx
   1459 ; SSE2-NEXT:    shll $7, %edx
   1460 ; SSE2-NEXT:    orl %ecx, %edx
   1461 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1462 ; SSE2-NEXT:    andl $1, %ecx
   1463 ; SSE2-NEXT:    shll $8, %ecx
   1464 ; SSE2-NEXT:    orl %edx, %ecx
   1465 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1466 ; SSE2-NEXT:    andl $1, %edx
   1467 ; SSE2-NEXT:    shll $9, %edx
   1468 ; SSE2-NEXT:    orl %ecx, %edx
   1469 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1470 ; SSE2-NEXT:    andl $1, %ecx
   1471 ; SSE2-NEXT:    shll $10, %ecx
   1472 ; SSE2-NEXT:    orl %edx, %ecx
   1473 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1474 ; SSE2-NEXT:    andl $1, %edx
   1475 ; SSE2-NEXT:    shll $11, %edx
   1476 ; SSE2-NEXT:    orl %ecx, %edx
   1477 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1478 ; SSE2-NEXT:    andl $1, %ecx
   1479 ; SSE2-NEXT:    shll $12, %ecx
   1480 ; SSE2-NEXT:    orl %edx, %ecx
   1481 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1482 ; SSE2-NEXT:    andl $1, %edx
   1483 ; SSE2-NEXT:    shll $13, %edx
   1484 ; SSE2-NEXT:    orl %ecx, %edx
   1485 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   1486 ; SSE2-NEXT:    andl $1, %ecx
   1487 ; SSE2-NEXT:    shll $14, %ecx
   1488 ; SSE2-NEXT:    orl %edx, %ecx
   1489 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   1490 ; SSE2-NEXT:    shll $15, %edx
   1491 ; SSE2-NEXT:    orl %ecx, %edx
   1492 ; SSE2-NEXT:    orl %eax, %edx
   1493 ; SSE2-NEXT:    movw %dx, (%rdi)
   1494 ; SSE2-NEXT:    movq %rdi, %rax
   1495 ; SSE2-NEXT:    retq
   1496 ;
   1497 ; SSE42-LABEL: test_cmp_v64i8:
   1498 ; SSE42:       # %bb.0:
   1499 ; SSE42-NEXT:    pcmpgtb %xmm4, %xmm0
   1500 ; SSE42-NEXT:    pcmpgtb %xmm5, %xmm1
   1501 ; SSE42-NEXT:    pcmpgtb %xmm6, %xmm2
   1502 ; SSE42-NEXT:    pcmpgtb %xmm7, %xmm3
   1503 ; SSE42-NEXT:    pextrb $1, %xmm3, %eax
   1504 ; SSE42-NEXT:    andl $1, %eax
   1505 ; SSE42-NEXT:    pextrb $0, %xmm3, %ecx
   1506 ; SSE42-NEXT:    andl $1, %ecx
   1507 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
   1508 ; SSE42-NEXT:    pextrb $2, %xmm3, %ecx
   1509 ; SSE42-NEXT:    andl $1, %ecx
   1510 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
   1511 ; SSE42-NEXT:    pextrb $3, %xmm3, %ecx
   1512 ; SSE42-NEXT:    andl $1, %ecx
   1513 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
   1514 ; SSE42-NEXT:    pextrb $4, %xmm3, %ecx
   1515 ; SSE42-NEXT:    andl $1, %ecx
   1516 ; SSE42-NEXT:    shll $4, %ecx
   1517 ; SSE42-NEXT:    orl %eax, %ecx
   1518 ; SSE42-NEXT:    pextrb $5, %xmm3, %eax
   1519 ; SSE42-NEXT:    andl $1, %eax
   1520 ; SSE42-NEXT:    shll $5, %eax
   1521 ; SSE42-NEXT:    orl %ecx, %eax
   1522 ; SSE42-NEXT:    pextrb $6, %xmm3, %ecx
   1523 ; SSE42-NEXT:    andl $1, %ecx
   1524 ; SSE42-NEXT:    shll $6, %ecx
   1525 ; SSE42-NEXT:    pextrb $7, %xmm3, %edx
   1526 ; SSE42-NEXT:    andl $1, %edx
   1527 ; SSE42-NEXT:    shll $7, %edx
   1528 ; SSE42-NEXT:    orl %ecx, %edx
   1529 ; SSE42-NEXT:    pextrb $8, %xmm3, %ecx
   1530 ; SSE42-NEXT:    andl $1, %ecx
   1531 ; SSE42-NEXT:    shll $8, %ecx
   1532 ; SSE42-NEXT:    orl %edx, %ecx
   1533 ; SSE42-NEXT:    pextrb $9, %xmm3, %edx
   1534 ; SSE42-NEXT:    andl $1, %edx
   1535 ; SSE42-NEXT:    shll $9, %edx
   1536 ; SSE42-NEXT:    orl %ecx, %edx
   1537 ; SSE42-NEXT:    pextrb $10, %xmm3, %ecx
   1538 ; SSE42-NEXT:    andl $1, %ecx
   1539 ; SSE42-NEXT:    shll $10, %ecx
   1540 ; SSE42-NEXT:    orl %edx, %ecx
   1541 ; SSE42-NEXT:    pextrb $11, %xmm3, %edx
   1542 ; SSE42-NEXT:    andl $1, %edx
   1543 ; SSE42-NEXT:    shll $11, %edx
   1544 ; SSE42-NEXT:    orl %ecx, %edx
   1545 ; SSE42-NEXT:    pextrb $12, %xmm3, %ecx
   1546 ; SSE42-NEXT:    andl $1, %ecx
   1547 ; SSE42-NEXT:    shll $12, %ecx
   1548 ; SSE42-NEXT:    orl %edx, %ecx
   1549 ; SSE42-NEXT:    pextrb $13, %xmm3, %edx
   1550 ; SSE42-NEXT:    andl $1, %edx
   1551 ; SSE42-NEXT:    shll $13, %edx
   1552 ; SSE42-NEXT:    orl %ecx, %edx
   1553 ; SSE42-NEXT:    pextrb $14, %xmm3, %ecx
   1554 ; SSE42-NEXT:    andl $1, %ecx
   1555 ; SSE42-NEXT:    shll $14, %ecx
   1556 ; SSE42-NEXT:    orl %edx, %ecx
   1557 ; SSE42-NEXT:    pextrb $15, %xmm3, %edx
   1558 ; SSE42-NEXT:    shll $15, %edx
   1559 ; SSE42-NEXT:    orl %ecx, %edx
   1560 ; SSE42-NEXT:    orl %eax, %edx
   1561 ; SSE42-NEXT:    movw %dx, 6(%rdi)
   1562 ; SSE42-NEXT:    pextrb $1, %xmm2, %eax
   1563 ; SSE42-NEXT:    andl $1, %eax
   1564 ; SSE42-NEXT:    pextrb $0, %xmm2, %ecx
   1565 ; SSE42-NEXT:    andl $1, %ecx
   1566 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
   1567 ; SSE42-NEXT:    pextrb $2, %xmm2, %ecx
   1568 ; SSE42-NEXT:    andl $1, %ecx
   1569 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
   1570 ; SSE42-NEXT:    pextrb $3, %xmm2, %ecx
   1571 ; SSE42-NEXT:    andl $1, %ecx
   1572 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
   1573 ; SSE42-NEXT:    pextrb $4, %xmm2, %ecx
   1574 ; SSE42-NEXT:    andl $1, %ecx
   1575 ; SSE42-NEXT:    shll $4, %ecx
   1576 ; SSE42-NEXT:    orl %eax, %ecx
   1577 ; SSE42-NEXT:    pextrb $5, %xmm2, %eax
   1578 ; SSE42-NEXT:    andl $1, %eax
   1579 ; SSE42-NEXT:    shll $5, %eax
   1580 ; SSE42-NEXT:    orl %ecx, %eax
   1581 ; SSE42-NEXT:    pextrb $6, %xmm2, %ecx
   1582 ; SSE42-NEXT:    andl $1, %ecx
   1583 ; SSE42-NEXT:    shll $6, %ecx
   1584 ; SSE42-NEXT:    pextrb $7, %xmm2, %edx
   1585 ; SSE42-NEXT:    andl $1, %edx
   1586 ; SSE42-NEXT:    shll $7, %edx
   1587 ; SSE42-NEXT:    orl %ecx, %edx
   1588 ; SSE42-NEXT:    pextrb $8, %xmm2, %ecx
   1589 ; SSE42-NEXT:    andl $1, %ecx
   1590 ; SSE42-NEXT:    shll $8, %ecx
   1591 ; SSE42-NEXT:    orl %edx, %ecx
   1592 ; SSE42-NEXT:    pextrb $9, %xmm2, %edx
   1593 ; SSE42-NEXT:    andl $1, %edx
   1594 ; SSE42-NEXT:    shll $9, %edx
   1595 ; SSE42-NEXT:    orl %ecx, %edx
   1596 ; SSE42-NEXT:    pextrb $10, %xmm2, %ecx
   1597 ; SSE42-NEXT:    andl $1, %ecx
   1598 ; SSE42-NEXT:    shll $10, %ecx
   1599 ; SSE42-NEXT:    orl %edx, %ecx
   1600 ; SSE42-NEXT:    pextrb $11, %xmm2, %edx
   1601 ; SSE42-NEXT:    andl $1, %edx
   1602 ; SSE42-NEXT:    shll $11, %edx
   1603 ; SSE42-NEXT:    orl %ecx, %edx
   1604 ; SSE42-NEXT:    pextrb $12, %xmm2, %ecx
   1605 ; SSE42-NEXT:    andl $1, %ecx
   1606 ; SSE42-NEXT:    shll $12, %ecx
   1607 ; SSE42-NEXT:    orl %edx, %ecx
   1608 ; SSE42-NEXT:    pextrb $13, %xmm2, %edx
   1609 ; SSE42-NEXT:    andl $1, %edx
   1610 ; SSE42-NEXT:    shll $13, %edx
   1611 ; SSE42-NEXT:    orl %ecx, %edx
   1612 ; SSE42-NEXT:    pextrb $14, %xmm2, %ecx
   1613 ; SSE42-NEXT:    andl $1, %ecx
   1614 ; SSE42-NEXT:    shll $14, %ecx
   1615 ; SSE42-NEXT:    orl %edx, %ecx
   1616 ; SSE42-NEXT:    pextrb $15, %xmm2, %edx
   1617 ; SSE42-NEXT:    shll $15, %edx
   1618 ; SSE42-NEXT:    orl %ecx, %edx
   1619 ; SSE42-NEXT:    orl %eax, %edx
   1620 ; SSE42-NEXT:    movw %dx, 4(%rdi)
   1621 ; SSE42-NEXT:    pextrb $1, %xmm1, %eax
   1622 ; SSE42-NEXT:    andl $1, %eax
   1623 ; SSE42-NEXT:    pextrb $0, %xmm1, %ecx
   1624 ; SSE42-NEXT:    andl $1, %ecx
   1625 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
   1626 ; SSE42-NEXT:    pextrb $2, %xmm1, %ecx
   1627 ; SSE42-NEXT:    andl $1, %ecx
   1628 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
   1629 ; SSE42-NEXT:    pextrb $3, %xmm1, %ecx
   1630 ; SSE42-NEXT:    andl $1, %ecx
   1631 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
   1632 ; SSE42-NEXT:    pextrb $4, %xmm1, %ecx
   1633 ; SSE42-NEXT:    andl $1, %ecx
   1634 ; SSE42-NEXT:    shll $4, %ecx
   1635 ; SSE42-NEXT:    orl %eax, %ecx
   1636 ; SSE42-NEXT:    pextrb $5, %xmm1, %eax
   1637 ; SSE42-NEXT:    andl $1, %eax
   1638 ; SSE42-NEXT:    shll $5, %eax
   1639 ; SSE42-NEXT:    orl %ecx, %eax
   1640 ; SSE42-NEXT:    pextrb $6, %xmm1, %ecx
   1641 ; SSE42-NEXT:    andl $1, %ecx
   1642 ; SSE42-NEXT:    shll $6, %ecx
   1643 ; SSE42-NEXT:    pextrb $7, %xmm1, %edx
   1644 ; SSE42-NEXT:    andl $1, %edx
   1645 ; SSE42-NEXT:    shll $7, %edx
   1646 ; SSE42-NEXT:    orl %ecx, %edx
   1647 ; SSE42-NEXT:    pextrb $8, %xmm1, %ecx
   1648 ; SSE42-NEXT:    andl $1, %ecx
   1649 ; SSE42-NEXT:    shll $8, %ecx
   1650 ; SSE42-NEXT:    orl %edx, %ecx
   1651 ; SSE42-NEXT:    pextrb $9, %xmm1, %edx
   1652 ; SSE42-NEXT:    andl $1, %edx
   1653 ; SSE42-NEXT:    shll $9, %edx
   1654 ; SSE42-NEXT:    orl %ecx, %edx
   1655 ; SSE42-NEXT:    pextrb $10, %xmm1, %ecx
   1656 ; SSE42-NEXT:    andl $1, %ecx
   1657 ; SSE42-NEXT:    shll $10, %ecx
   1658 ; SSE42-NEXT:    orl %edx, %ecx
   1659 ; SSE42-NEXT:    pextrb $11, %xmm1, %edx
   1660 ; SSE42-NEXT:    andl $1, %edx
   1661 ; SSE42-NEXT:    shll $11, %edx
   1662 ; SSE42-NEXT:    orl %ecx, %edx
   1663 ; SSE42-NEXT:    pextrb $12, %xmm1, %ecx
   1664 ; SSE42-NEXT:    andl $1, %ecx
   1665 ; SSE42-NEXT:    shll $12, %ecx
   1666 ; SSE42-NEXT:    orl %edx, %ecx
   1667 ; SSE42-NEXT:    pextrb $13, %xmm1, %edx
   1668 ; SSE42-NEXT:    andl $1, %edx
   1669 ; SSE42-NEXT:    shll $13, %edx
   1670 ; SSE42-NEXT:    orl %ecx, %edx
   1671 ; SSE42-NEXT:    pextrb $14, %xmm1, %ecx
   1672 ; SSE42-NEXT:    andl $1, %ecx
   1673 ; SSE42-NEXT:    shll $14, %ecx
   1674 ; SSE42-NEXT:    orl %edx, %ecx
   1675 ; SSE42-NEXT:    pextrb $15, %xmm1, %edx
   1676 ; SSE42-NEXT:    shll $15, %edx
   1677 ; SSE42-NEXT:    orl %ecx, %edx
   1678 ; SSE42-NEXT:    orl %eax, %edx
   1679 ; SSE42-NEXT:    movw %dx, 2(%rdi)
   1680 ; SSE42-NEXT:    pextrb $1, %xmm0, %eax
   1681 ; SSE42-NEXT:    andl $1, %eax
   1682 ; SSE42-NEXT:    pextrb $0, %xmm0, %ecx
   1683 ; SSE42-NEXT:    andl $1, %ecx
   1684 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
   1685 ; SSE42-NEXT:    pextrb $2, %xmm0, %ecx
   1686 ; SSE42-NEXT:    andl $1, %ecx
   1687 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
   1688 ; SSE42-NEXT:    pextrb $3, %xmm0, %ecx
   1689 ; SSE42-NEXT:    andl $1, %ecx
   1690 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
   1691 ; SSE42-NEXT:    pextrb $4, %xmm0, %ecx
   1692 ; SSE42-NEXT:    andl $1, %ecx
   1693 ; SSE42-NEXT:    shll $4, %ecx
   1694 ; SSE42-NEXT:    orl %eax, %ecx
   1695 ; SSE42-NEXT:    pextrb $5, %xmm0, %eax
   1696 ; SSE42-NEXT:    andl $1, %eax
   1697 ; SSE42-NEXT:    shll $5, %eax
   1698 ; SSE42-NEXT:    orl %ecx, %eax
   1699 ; SSE42-NEXT:    pextrb $6, %xmm0, %ecx
   1700 ; SSE42-NEXT:    andl $1, %ecx
   1701 ; SSE42-NEXT:    shll $6, %ecx
   1702 ; SSE42-NEXT:    pextrb $7, %xmm0, %edx
   1703 ; SSE42-NEXT:    andl $1, %edx
   1704 ; SSE42-NEXT:    shll $7, %edx
   1705 ; SSE42-NEXT:    orl %ecx, %edx
   1706 ; SSE42-NEXT:    pextrb $8, %xmm0, %ecx
   1707 ; SSE42-NEXT:    andl $1, %ecx
   1708 ; SSE42-NEXT:    shll $8, %ecx
   1709 ; SSE42-NEXT:    orl %edx, %ecx
   1710 ; SSE42-NEXT:    pextrb $9, %xmm0, %edx
   1711 ; SSE42-NEXT:    andl $1, %edx
   1712 ; SSE42-NEXT:    shll $9, %edx
   1713 ; SSE42-NEXT:    orl %ecx, %edx
   1714 ; SSE42-NEXT:    pextrb $10, %xmm0, %ecx
   1715 ; SSE42-NEXT:    andl $1, %ecx
   1716 ; SSE42-NEXT:    shll $10, %ecx
   1717 ; SSE42-NEXT:    orl %edx, %ecx
   1718 ; SSE42-NEXT:    pextrb $11, %xmm0, %edx
   1719 ; SSE42-NEXT:    andl $1, %edx
   1720 ; SSE42-NEXT:    shll $11, %edx
   1721 ; SSE42-NEXT:    orl %ecx, %edx
   1722 ; SSE42-NEXT:    pextrb $12, %xmm0, %ecx
   1723 ; SSE42-NEXT:    andl $1, %ecx
   1724 ; SSE42-NEXT:    shll $12, %ecx
   1725 ; SSE42-NEXT:    orl %edx, %ecx
   1726 ; SSE42-NEXT:    pextrb $13, %xmm0, %edx
   1727 ; SSE42-NEXT:    andl $1, %edx
   1728 ; SSE42-NEXT:    shll $13, %edx
   1729 ; SSE42-NEXT:    orl %ecx, %edx
   1730 ; SSE42-NEXT:    pextrb $14, %xmm0, %ecx
   1731 ; SSE42-NEXT:    andl $1, %ecx
   1732 ; SSE42-NEXT:    shll $14, %ecx
   1733 ; SSE42-NEXT:    orl %edx, %ecx
   1734 ; SSE42-NEXT:    pextrb $15, %xmm0, %edx
   1735 ; SSE42-NEXT:    shll $15, %edx
   1736 ; SSE42-NEXT:    orl %ecx, %edx
   1737 ; SSE42-NEXT:    orl %eax, %edx
   1738 ; SSE42-NEXT:    movw %dx, (%rdi)
   1739 ; SSE42-NEXT:    movq %rdi, %rax
   1740 ; SSE42-NEXT:    retq
   1741 ;
   1742 ; AVX1-LABEL: test_cmp_v64i8:
   1743 ; AVX1:       # %bb.0:
   1744 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm4
   1745 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm5
   1746 ; AVX1-NEXT:    vpcmpgtb %xmm4, %xmm5, %xmm4
   1747 ; AVX1-NEXT:    vpcmpgtb %xmm2, %xmm0, %xmm0
   1748 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm2
   1749 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm5
   1750 ; AVX1-NEXT:    vpcmpgtb %xmm2, %xmm5, %xmm2
   1751 ; AVX1-NEXT:    vpcmpgtb %xmm3, %xmm1, %xmm1
   1752 ; AVX1-NEXT:    vpextrb $1, %xmm1, %eax
   1753 ; AVX1-NEXT:    andl $1, %eax
   1754 ; AVX1-NEXT:    vpextrb $0, %xmm1, %ecx
   1755 ; AVX1-NEXT:    andl $1, %ecx
   1756 ; AVX1-NEXT:    leal (%rcx,%rax,2), %eax
   1757 ; AVX1-NEXT:    vpextrb $2, %xmm1, %ecx
   1758 ; AVX1-NEXT:    andl $1, %ecx
   1759 ; AVX1-NEXT:    leal (%rax,%rcx,4), %eax
   1760 ; AVX1-NEXT:    vpextrb $3, %xmm1, %ecx
   1761 ; AVX1-NEXT:    andl $1, %ecx
   1762 ; AVX1-NEXT:    leal (%rax,%rcx,8), %eax
   1763 ; AVX1-NEXT:    vpextrb $4, %xmm1, %ecx
   1764 ; AVX1-NEXT:    andl $1, %ecx
   1765 ; AVX1-NEXT:    shll $4, %ecx
   1766 ; AVX1-NEXT:    orl %eax, %ecx
   1767 ; AVX1-NEXT:    vpextrb $5, %xmm1, %eax
   1768 ; AVX1-NEXT:    andl $1, %eax
   1769 ; AVX1-NEXT:    shll $5, %eax
   1770 ; AVX1-NEXT:    orl %ecx, %eax
   1771 ; AVX1-NEXT:    vpextrb $6, %xmm1, %ecx
   1772 ; AVX1-NEXT:    andl $1, %ecx
   1773 ; AVX1-NEXT:    shll $6, %ecx
   1774 ; AVX1-NEXT:    vpextrb $7, %xmm1, %edx
   1775 ; AVX1-NEXT:    andl $1, %edx
   1776 ; AVX1-NEXT:    shll $7, %edx
   1777 ; AVX1-NEXT:    orl %ecx, %edx
   1778 ; AVX1-NEXT:    vpextrb $8, %xmm1, %ecx
   1779 ; AVX1-NEXT:    andl $1, %ecx
   1780 ; AVX1-NEXT:    shll $8, %ecx
   1781 ; AVX1-NEXT:    orl %edx, %ecx
   1782 ; AVX1-NEXT:    vpextrb $9, %xmm1, %edx
   1783 ; AVX1-NEXT:    andl $1, %edx
   1784 ; AVX1-NEXT:    shll $9, %edx
   1785 ; AVX1-NEXT:    orl %ecx, %edx
   1786 ; AVX1-NEXT:    vpextrb $10, %xmm1, %ecx
   1787 ; AVX1-NEXT:    andl $1, %ecx
   1788 ; AVX1-NEXT:    shll $10, %ecx
   1789 ; AVX1-NEXT:    orl %edx, %ecx
   1790 ; AVX1-NEXT:    vpextrb $11, %xmm1, %edx
   1791 ; AVX1-NEXT:    andl $1, %edx
   1792 ; AVX1-NEXT:    shll $11, %edx
   1793 ; AVX1-NEXT:    orl %ecx, %edx
   1794 ; AVX1-NEXT:    vpextrb $12, %xmm1, %ecx
   1795 ; AVX1-NEXT:    andl $1, %ecx
   1796 ; AVX1-NEXT:    shll $12, %ecx
   1797 ; AVX1-NEXT:    orl %edx, %ecx
   1798 ; AVX1-NEXT:    vpextrb $13, %xmm1, %edx
   1799 ; AVX1-NEXT:    andl $1, %edx
   1800 ; AVX1-NEXT:    shll $13, %edx
   1801 ; AVX1-NEXT:    orl %ecx, %edx
   1802 ; AVX1-NEXT:    vpextrb $14, %xmm1, %ecx
   1803 ; AVX1-NEXT:    andl $1, %ecx
   1804 ; AVX1-NEXT:    shll $14, %ecx
   1805 ; AVX1-NEXT:    orl %edx, %ecx
   1806 ; AVX1-NEXT:    vpextrb $15, %xmm1, %edx
   1807 ; AVX1-NEXT:    andl $1, %edx
   1808 ; AVX1-NEXT:    shll $15, %edx
   1809 ; AVX1-NEXT:    orl %ecx, %edx
   1810 ; AVX1-NEXT:    vpextrb $0, %xmm2, %ecx
   1811 ; AVX1-NEXT:    andl $1, %ecx
   1812 ; AVX1-NEXT:    shll $16, %ecx
   1813 ; AVX1-NEXT:    orl %edx, %ecx
   1814 ; AVX1-NEXT:    vpextrb $1, %xmm2, %edx
   1815 ; AVX1-NEXT:    andl $1, %edx
   1816 ; AVX1-NEXT:    shll $17, %edx
   1817 ; AVX1-NEXT:    orl %ecx, %edx
   1818 ; AVX1-NEXT:    vpextrb $2, %xmm2, %ecx
   1819 ; AVX1-NEXT:    andl $1, %ecx
   1820 ; AVX1-NEXT:    shll $18, %ecx
   1821 ; AVX1-NEXT:    orl %edx, %ecx
   1822 ; AVX1-NEXT:    vpextrb $3, %xmm2, %edx
   1823 ; AVX1-NEXT:    andl $1, %edx
   1824 ; AVX1-NEXT:    shll $19, %edx
   1825 ; AVX1-NEXT:    orl %ecx, %edx
   1826 ; AVX1-NEXT:    vpextrb $4, %xmm2, %ecx
   1827 ; AVX1-NEXT:    andl $1, %ecx
   1828 ; AVX1-NEXT:    shll $20, %ecx
   1829 ; AVX1-NEXT:    orl %edx, %ecx
   1830 ; AVX1-NEXT:    vpextrb $5, %xmm2, %edx
   1831 ; AVX1-NEXT:    andl $1, %edx
   1832 ; AVX1-NEXT:    shll $21, %edx
   1833 ; AVX1-NEXT:    orl %ecx, %edx
   1834 ; AVX1-NEXT:    vpextrb $6, %xmm2, %ecx
   1835 ; AVX1-NEXT:    andl $1, %ecx
   1836 ; AVX1-NEXT:    shll $22, %ecx
   1837 ; AVX1-NEXT:    orl %edx, %ecx
   1838 ; AVX1-NEXT:    vpextrb $7, %xmm2, %edx
   1839 ; AVX1-NEXT:    andl $1, %edx
   1840 ; AVX1-NEXT:    shll $23, %edx
   1841 ; AVX1-NEXT:    orl %ecx, %edx
   1842 ; AVX1-NEXT:    vpextrb $8, %xmm2, %ecx
   1843 ; AVX1-NEXT:    andl $1, %ecx
   1844 ; AVX1-NEXT:    shll $24, %ecx
   1845 ; AVX1-NEXT:    orl %edx, %ecx
   1846 ; AVX1-NEXT:    vpextrb $9, %xmm2, %edx
   1847 ; AVX1-NEXT:    andl $1, %edx
   1848 ; AVX1-NEXT:    shll $25, %edx
   1849 ; AVX1-NEXT:    orl %ecx, %edx
   1850 ; AVX1-NEXT:    vpextrb $10, %xmm2, %ecx
   1851 ; AVX1-NEXT:    andl $1, %ecx
   1852 ; AVX1-NEXT:    shll $26, %ecx
   1853 ; AVX1-NEXT:    orl %edx, %ecx
   1854 ; AVX1-NEXT:    vpextrb $11, %xmm2, %edx
   1855 ; AVX1-NEXT:    andl $1, %edx
   1856 ; AVX1-NEXT:    shll $27, %edx
   1857 ; AVX1-NEXT:    orl %ecx, %edx
   1858 ; AVX1-NEXT:    vpextrb $12, %xmm2, %ecx
   1859 ; AVX1-NEXT:    andl $1, %ecx
   1860 ; AVX1-NEXT:    shll $28, %ecx
   1861 ; AVX1-NEXT:    orl %edx, %ecx
   1862 ; AVX1-NEXT:    vpextrb $13, %xmm2, %edx
   1863 ; AVX1-NEXT:    andl $1, %edx
   1864 ; AVX1-NEXT:    shll $29, %edx
   1865 ; AVX1-NEXT:    orl %ecx, %edx
   1866 ; AVX1-NEXT:    vpextrb $14, %xmm2, %ecx
   1867 ; AVX1-NEXT:    andl $1, %ecx
   1868 ; AVX1-NEXT:    shll $30, %ecx
   1869 ; AVX1-NEXT:    orl %edx, %ecx
   1870 ; AVX1-NEXT:    vpextrb $15, %xmm2, %edx
   1871 ; AVX1-NEXT:    shll $31, %edx
   1872 ; AVX1-NEXT:    orl %ecx, %edx
   1873 ; AVX1-NEXT:    orl %eax, %edx
   1874 ; AVX1-NEXT:    movl %edx, 4(%rdi)
   1875 ; AVX1-NEXT:    vpextrb $1, %xmm0, %eax
   1876 ; AVX1-NEXT:    andl $1, %eax
   1877 ; AVX1-NEXT:    vpextrb $0, %xmm0, %ecx
   1878 ; AVX1-NEXT:    andl $1, %ecx
   1879 ; AVX1-NEXT:    leal (%rcx,%rax,2), %eax
   1880 ; AVX1-NEXT:    vpextrb $2, %xmm0, %ecx
   1881 ; AVX1-NEXT:    andl $1, %ecx
   1882 ; AVX1-NEXT:    leal (%rax,%rcx,4), %eax
   1883 ; AVX1-NEXT:    vpextrb $3, %xmm0, %ecx
   1884 ; AVX1-NEXT:    andl $1, %ecx
   1885 ; AVX1-NEXT:    leal (%rax,%rcx,8), %eax
   1886 ; AVX1-NEXT:    vpextrb $4, %xmm0, %ecx
   1887 ; AVX1-NEXT:    andl $1, %ecx
   1888 ; AVX1-NEXT:    shll $4, %ecx
   1889 ; AVX1-NEXT:    orl %eax, %ecx
   1890 ; AVX1-NEXT:    vpextrb $5, %xmm0, %eax
   1891 ; AVX1-NEXT:    andl $1, %eax
   1892 ; AVX1-NEXT:    shll $5, %eax
   1893 ; AVX1-NEXT:    orl %ecx, %eax
   1894 ; AVX1-NEXT:    vpextrb $6, %xmm0, %ecx
   1895 ; AVX1-NEXT:    andl $1, %ecx
   1896 ; AVX1-NEXT:    shll $6, %ecx
   1897 ; AVX1-NEXT:    vpextrb $7, %xmm0, %edx
   1898 ; AVX1-NEXT:    andl $1, %edx
   1899 ; AVX1-NEXT:    shll $7, %edx
   1900 ; AVX1-NEXT:    orl %ecx, %edx
   1901 ; AVX1-NEXT:    vpextrb $8, %xmm0, %ecx
   1902 ; AVX1-NEXT:    andl $1, %ecx
   1903 ; AVX1-NEXT:    shll $8, %ecx
   1904 ; AVX1-NEXT:    orl %edx, %ecx
   1905 ; AVX1-NEXT:    vpextrb $9, %xmm0, %edx
   1906 ; AVX1-NEXT:    andl $1, %edx
   1907 ; AVX1-NEXT:    shll $9, %edx
   1908 ; AVX1-NEXT:    orl %ecx, %edx
   1909 ; AVX1-NEXT:    vpextrb $10, %xmm0, %ecx
   1910 ; AVX1-NEXT:    andl $1, %ecx
   1911 ; AVX1-NEXT:    shll $10, %ecx
   1912 ; AVX1-NEXT:    orl %edx, %ecx
   1913 ; AVX1-NEXT:    vpextrb $11, %xmm0, %edx
   1914 ; AVX1-NEXT:    andl $1, %edx
   1915 ; AVX1-NEXT:    shll $11, %edx
   1916 ; AVX1-NEXT:    orl %ecx, %edx
   1917 ; AVX1-NEXT:    vpextrb $12, %xmm0, %ecx
   1918 ; AVX1-NEXT:    andl $1, %ecx
   1919 ; AVX1-NEXT:    shll $12, %ecx
   1920 ; AVX1-NEXT:    orl %edx, %ecx
   1921 ; AVX1-NEXT:    vpextrb $13, %xmm0, %edx
   1922 ; AVX1-NEXT:    andl $1, %edx
   1923 ; AVX1-NEXT:    shll $13, %edx
   1924 ; AVX1-NEXT:    orl %ecx, %edx
   1925 ; AVX1-NEXT:    vpextrb $14, %xmm0, %ecx
   1926 ; AVX1-NEXT:    andl $1, %ecx
   1927 ; AVX1-NEXT:    shll $14, %ecx
   1928 ; AVX1-NEXT:    orl %edx, %ecx
   1929 ; AVX1-NEXT:    vpextrb $15, %xmm0, %edx
   1930 ; AVX1-NEXT:    andl $1, %edx
   1931 ; AVX1-NEXT:    shll $15, %edx
   1932 ; AVX1-NEXT:    orl %ecx, %edx
   1933 ; AVX1-NEXT:    vpextrb $0, %xmm4, %ecx
   1934 ; AVX1-NEXT:    andl $1, %ecx
   1935 ; AVX1-NEXT:    shll $16, %ecx
   1936 ; AVX1-NEXT:    orl %edx, %ecx
   1937 ; AVX1-NEXT:    vpextrb $1, %xmm4, %edx
   1938 ; AVX1-NEXT:    andl $1, %edx
   1939 ; AVX1-NEXT:    shll $17, %edx
   1940 ; AVX1-NEXT:    orl %ecx, %edx
   1941 ; AVX1-NEXT:    vpextrb $2, %xmm4, %ecx
   1942 ; AVX1-NEXT:    andl $1, %ecx
   1943 ; AVX1-NEXT:    shll $18, %ecx
   1944 ; AVX1-NEXT:    orl %edx, %ecx
   1945 ; AVX1-NEXT:    vpextrb $3, %xmm4, %edx
   1946 ; AVX1-NEXT:    andl $1, %edx
   1947 ; AVX1-NEXT:    shll $19, %edx
   1948 ; AVX1-NEXT:    orl %ecx, %edx
   1949 ; AVX1-NEXT:    vpextrb $4, %xmm4, %ecx
   1950 ; AVX1-NEXT:    andl $1, %ecx
   1951 ; AVX1-NEXT:    shll $20, %ecx
   1952 ; AVX1-NEXT:    orl %edx, %ecx
   1953 ; AVX1-NEXT:    vpextrb $5, %xmm4, %edx
   1954 ; AVX1-NEXT:    andl $1, %edx
   1955 ; AVX1-NEXT:    shll $21, %edx
   1956 ; AVX1-NEXT:    orl %ecx, %edx
   1957 ; AVX1-NEXT:    vpextrb $6, %xmm4, %ecx
   1958 ; AVX1-NEXT:    andl $1, %ecx
   1959 ; AVX1-NEXT:    shll $22, %ecx
   1960 ; AVX1-NEXT:    orl %edx, %ecx
   1961 ; AVX1-NEXT:    vpextrb $7, %xmm4, %edx
   1962 ; AVX1-NEXT:    andl $1, %edx
   1963 ; AVX1-NEXT:    shll $23, %edx
   1964 ; AVX1-NEXT:    orl %ecx, %edx
   1965 ; AVX1-NEXT:    vpextrb $8, %xmm4, %ecx
   1966 ; AVX1-NEXT:    andl $1, %ecx
   1967 ; AVX1-NEXT:    shll $24, %ecx
   1968 ; AVX1-NEXT:    orl %edx, %ecx
   1969 ; AVX1-NEXT:    vpextrb $9, %xmm4, %edx
   1970 ; AVX1-NEXT:    andl $1, %edx
   1971 ; AVX1-NEXT:    shll $25, %edx
   1972 ; AVX1-NEXT:    orl %ecx, %edx
   1973 ; AVX1-NEXT:    vpextrb $10, %xmm4, %ecx
   1974 ; AVX1-NEXT:    andl $1, %ecx
   1975 ; AVX1-NEXT:    shll $26, %ecx
   1976 ; AVX1-NEXT:    orl %edx, %ecx
   1977 ; AVX1-NEXT:    vpextrb $11, %xmm4, %edx
   1978 ; AVX1-NEXT:    andl $1, %edx
   1979 ; AVX1-NEXT:    shll $27, %edx
   1980 ; AVX1-NEXT:    orl %ecx, %edx
   1981 ; AVX1-NEXT:    vpextrb $12, %xmm4, %ecx
   1982 ; AVX1-NEXT:    andl $1, %ecx
   1983 ; AVX1-NEXT:    shll $28, %ecx
   1984 ; AVX1-NEXT:    orl %edx, %ecx
   1985 ; AVX1-NEXT:    vpextrb $13, %xmm4, %edx
   1986 ; AVX1-NEXT:    andl $1, %edx
   1987 ; AVX1-NEXT:    shll $29, %edx
   1988 ; AVX1-NEXT:    orl %ecx, %edx
   1989 ; AVX1-NEXT:    vpextrb $14, %xmm4, %ecx
   1990 ; AVX1-NEXT:    andl $1, %ecx
   1991 ; AVX1-NEXT:    shll $30, %ecx
   1992 ; AVX1-NEXT:    orl %edx, %ecx
   1993 ; AVX1-NEXT:    vpextrb $15, %xmm4, %edx
   1994 ; AVX1-NEXT:    shll $31, %edx
   1995 ; AVX1-NEXT:    orl %ecx, %edx
   1996 ; AVX1-NEXT:    orl %eax, %edx
   1997 ; AVX1-NEXT:    movl %edx, (%rdi)
   1998 ; AVX1-NEXT:    movq %rdi, %rax
   1999 ; AVX1-NEXT:    vzeroupper
   2000 ; AVX1-NEXT:    retq
   2001 ;
   2002 ; AVX2-LABEL: test_cmp_v64i8:
   2003 ; AVX2:       # %bb.0:
   2004 ; AVX2-NEXT:    vpcmpgtb %ymm2, %ymm0, %ymm0
   2005 ; AVX2-NEXT:    vpcmpgtb %ymm3, %ymm1, %ymm1
   2006 ; AVX2-NEXT:    vpextrb $1, %xmm1, %eax
   2007 ; AVX2-NEXT:    andl $1, %eax
   2008 ; AVX2-NEXT:    vpextrb $0, %xmm1, %ecx
   2009 ; AVX2-NEXT:    andl $1, %ecx
   2010 ; AVX2-NEXT:    leal (%rcx,%rax,2), %eax
   2011 ; AVX2-NEXT:    vpextrb $2, %xmm1, %ecx
   2012 ; AVX2-NEXT:    andl $1, %ecx
   2013 ; AVX2-NEXT:    leal (%rax,%rcx,4), %eax
   2014 ; AVX2-NEXT:    vpextrb $3, %xmm1, %ecx
   2015 ; AVX2-NEXT:    andl $1, %ecx
   2016 ; AVX2-NEXT:    leal (%rax,%rcx,8), %eax
   2017 ; AVX2-NEXT:    vpextrb $4, %xmm1, %ecx
   2018 ; AVX2-NEXT:    andl $1, %ecx
   2019 ; AVX2-NEXT:    shll $4, %ecx
   2020 ; AVX2-NEXT:    orl %eax, %ecx
   2021 ; AVX2-NEXT:    vpextrb $5, %xmm1, %eax
   2022 ; AVX2-NEXT:    andl $1, %eax
   2023 ; AVX2-NEXT:    shll $5, %eax
   2024 ; AVX2-NEXT:    orl %ecx, %eax
   2025 ; AVX2-NEXT:    vpextrb $6, %xmm1, %ecx
   2026 ; AVX2-NEXT:    andl $1, %ecx
   2027 ; AVX2-NEXT:    shll $6, %ecx
   2028 ; AVX2-NEXT:    vpextrb $7, %xmm1, %edx
   2029 ; AVX2-NEXT:    andl $1, %edx
   2030 ; AVX2-NEXT:    shll $7, %edx
   2031 ; AVX2-NEXT:    orl %ecx, %edx
   2032 ; AVX2-NEXT:    vpextrb $8, %xmm1, %ecx
   2033 ; AVX2-NEXT:    andl $1, %ecx
   2034 ; AVX2-NEXT:    shll $8, %ecx
   2035 ; AVX2-NEXT:    orl %edx, %ecx
   2036 ; AVX2-NEXT:    vpextrb $9, %xmm1, %edx
   2037 ; AVX2-NEXT:    andl $1, %edx
   2038 ; AVX2-NEXT:    shll $9, %edx
   2039 ; AVX2-NEXT:    orl %ecx, %edx
   2040 ; AVX2-NEXT:    vpextrb $10, %xmm1, %ecx
   2041 ; AVX2-NEXT:    andl $1, %ecx
   2042 ; AVX2-NEXT:    shll $10, %ecx
   2043 ; AVX2-NEXT:    orl %edx, %ecx
   2044 ; AVX2-NEXT:    vpextrb $11, %xmm1, %edx
   2045 ; AVX2-NEXT:    andl $1, %edx
   2046 ; AVX2-NEXT:    shll $11, %edx
   2047 ; AVX2-NEXT:    orl %ecx, %edx
   2048 ; AVX2-NEXT:    vpextrb $12, %xmm1, %ecx
   2049 ; AVX2-NEXT:    andl $1, %ecx
   2050 ; AVX2-NEXT:    shll $12, %ecx
   2051 ; AVX2-NEXT:    orl %edx, %ecx
   2052 ; AVX2-NEXT:    vpextrb $13, %xmm1, %edx
   2053 ; AVX2-NEXT:    andl $1, %edx
   2054 ; AVX2-NEXT:    shll $13, %edx
   2055 ; AVX2-NEXT:    orl %ecx, %edx
   2056 ; AVX2-NEXT:    vpextrb $14, %xmm1, %ecx
   2057 ; AVX2-NEXT:    andl $1, %ecx
   2058 ; AVX2-NEXT:    shll $14, %ecx
   2059 ; AVX2-NEXT:    orl %edx, %ecx
   2060 ; AVX2-NEXT:    vpextrb $15, %xmm1, %edx
   2061 ; AVX2-NEXT:    andl $1, %edx
   2062 ; AVX2-NEXT:    shll $15, %edx
   2063 ; AVX2-NEXT:    orl %ecx, %edx
   2064 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm1
   2065 ; AVX2-NEXT:    vpextrb $0, %xmm1, %ecx
   2066 ; AVX2-NEXT:    andl $1, %ecx
   2067 ; AVX2-NEXT:    shll $16, %ecx
   2068 ; AVX2-NEXT:    orl %edx, %ecx
   2069 ; AVX2-NEXT:    vpextrb $1, %xmm1, %edx
   2070 ; AVX2-NEXT:    andl $1, %edx
   2071 ; AVX2-NEXT:    shll $17, %edx
   2072 ; AVX2-NEXT:    orl %ecx, %edx
   2073 ; AVX2-NEXT:    vpextrb $2, %xmm1, %ecx
   2074 ; AVX2-NEXT:    andl $1, %ecx
   2075 ; AVX2-NEXT:    shll $18, %ecx
   2076 ; AVX2-NEXT:    orl %edx, %ecx
   2077 ; AVX2-NEXT:    vpextrb $3, %xmm1, %edx
   2078 ; AVX2-NEXT:    andl $1, %edx
   2079 ; AVX2-NEXT:    shll $19, %edx
   2080 ; AVX2-NEXT:    orl %ecx, %edx
   2081 ; AVX2-NEXT:    vpextrb $4, %xmm1, %ecx
   2082 ; AVX2-NEXT:    andl $1, %ecx
   2083 ; AVX2-NEXT:    shll $20, %ecx
   2084 ; AVX2-NEXT:    orl %edx, %ecx
   2085 ; AVX2-NEXT:    vpextrb $5, %xmm1, %edx
   2086 ; AVX2-NEXT:    andl $1, %edx
   2087 ; AVX2-NEXT:    shll $21, %edx
   2088 ; AVX2-NEXT:    orl %ecx, %edx
   2089 ; AVX2-NEXT:    vpextrb $6, %xmm1, %ecx
   2090 ; AVX2-NEXT:    andl $1, %ecx
   2091 ; AVX2-NEXT:    shll $22, %ecx
   2092 ; AVX2-NEXT:    orl %edx, %ecx
   2093 ; AVX2-NEXT:    vpextrb $7, %xmm1, %edx
   2094 ; AVX2-NEXT:    andl $1, %edx
   2095 ; AVX2-NEXT:    shll $23, %edx
   2096 ; AVX2-NEXT:    orl %ecx, %edx
   2097 ; AVX2-NEXT:    vpextrb $8, %xmm1, %ecx
   2098 ; AVX2-NEXT:    andl $1, %ecx
   2099 ; AVX2-NEXT:    shll $24, %ecx
   2100 ; AVX2-NEXT:    orl %edx, %ecx
   2101 ; AVX2-NEXT:    vpextrb $9, %xmm1, %edx
   2102 ; AVX2-NEXT:    andl $1, %edx
   2103 ; AVX2-NEXT:    shll $25, %edx
   2104 ; AVX2-NEXT:    orl %ecx, %edx
   2105 ; AVX2-NEXT:    vpextrb $10, %xmm1, %ecx
   2106 ; AVX2-NEXT:    andl $1, %ecx
   2107 ; AVX2-NEXT:    shll $26, %ecx
   2108 ; AVX2-NEXT:    orl %edx, %ecx
   2109 ; AVX2-NEXT:    vpextrb $11, %xmm1, %edx
   2110 ; AVX2-NEXT:    andl $1, %edx
   2111 ; AVX2-NEXT:    shll $27, %edx
   2112 ; AVX2-NEXT:    orl %ecx, %edx
   2113 ; AVX2-NEXT:    vpextrb $12, %xmm1, %ecx
   2114 ; AVX2-NEXT:    andl $1, %ecx
   2115 ; AVX2-NEXT:    shll $28, %ecx
   2116 ; AVX2-NEXT:    orl %edx, %ecx
   2117 ; AVX2-NEXT:    vpextrb $13, %xmm1, %edx
   2118 ; AVX2-NEXT:    andl $1, %edx
   2119 ; AVX2-NEXT:    shll $29, %edx
   2120 ; AVX2-NEXT:    orl %ecx, %edx
   2121 ; AVX2-NEXT:    vpextrb $14, %xmm1, %ecx
   2122 ; AVX2-NEXT:    andl $1, %ecx
   2123 ; AVX2-NEXT:    shll $30, %ecx
   2124 ; AVX2-NEXT:    orl %edx, %ecx
   2125 ; AVX2-NEXT:    vpextrb $15, %xmm1, %edx
   2126 ; AVX2-NEXT:    shll $31, %edx
   2127 ; AVX2-NEXT:    orl %ecx, %edx
   2128 ; AVX2-NEXT:    orl %eax, %edx
   2129 ; AVX2-NEXT:    movl %edx, 4(%rdi)
   2130 ; AVX2-NEXT:    vpextrb $1, %xmm0, %eax
   2131 ; AVX2-NEXT:    andl $1, %eax
   2132 ; AVX2-NEXT:    vpextrb $0, %xmm0, %ecx
   2133 ; AVX2-NEXT:    andl $1, %ecx
   2134 ; AVX2-NEXT:    leal (%rcx,%rax,2), %eax
   2135 ; AVX2-NEXT:    vpextrb $2, %xmm0, %ecx
   2136 ; AVX2-NEXT:    andl $1, %ecx
   2137 ; AVX2-NEXT:    leal (%rax,%rcx,4), %eax
   2138 ; AVX2-NEXT:    vpextrb $3, %xmm0, %ecx
   2139 ; AVX2-NEXT:    andl $1, %ecx
   2140 ; AVX2-NEXT:    leal (%rax,%rcx,8), %eax
   2141 ; AVX2-NEXT:    vpextrb $4, %xmm0, %ecx
   2142 ; AVX2-NEXT:    andl $1, %ecx
   2143 ; AVX2-NEXT:    shll $4, %ecx
   2144 ; AVX2-NEXT:    orl %eax, %ecx
   2145 ; AVX2-NEXT:    vpextrb $5, %xmm0, %eax
   2146 ; AVX2-NEXT:    andl $1, %eax
   2147 ; AVX2-NEXT:    shll $5, %eax
   2148 ; AVX2-NEXT:    orl %ecx, %eax
   2149 ; AVX2-NEXT:    vpextrb $6, %xmm0, %ecx
   2150 ; AVX2-NEXT:    andl $1, %ecx
   2151 ; AVX2-NEXT:    shll $6, %ecx
   2152 ; AVX2-NEXT:    vpextrb $7, %xmm0, %edx
   2153 ; AVX2-NEXT:    andl $1, %edx
   2154 ; AVX2-NEXT:    shll $7, %edx
   2155 ; AVX2-NEXT:    orl %ecx, %edx
   2156 ; AVX2-NEXT:    vpextrb $8, %xmm0, %ecx
   2157 ; AVX2-NEXT:    andl $1, %ecx
   2158 ; AVX2-NEXT:    shll $8, %ecx
   2159 ; AVX2-NEXT:    orl %edx, %ecx
   2160 ; AVX2-NEXT:    vpextrb $9, %xmm0, %edx
   2161 ; AVX2-NEXT:    andl $1, %edx
   2162 ; AVX2-NEXT:    shll $9, %edx
   2163 ; AVX2-NEXT:    orl %ecx, %edx
   2164 ; AVX2-NEXT:    vpextrb $10, %xmm0, %ecx
   2165 ; AVX2-NEXT:    andl $1, %ecx
   2166 ; AVX2-NEXT:    shll $10, %ecx
   2167 ; AVX2-NEXT:    orl %edx, %ecx
   2168 ; AVX2-NEXT:    vpextrb $11, %xmm0, %edx
   2169 ; AVX2-NEXT:    andl $1, %edx
   2170 ; AVX2-NEXT:    shll $11, %edx
   2171 ; AVX2-NEXT:    orl %ecx, %edx
   2172 ; AVX2-NEXT:    vpextrb $12, %xmm0, %ecx
   2173 ; AVX2-NEXT:    andl $1, %ecx
   2174 ; AVX2-NEXT:    shll $12, %ecx
   2175 ; AVX2-NEXT:    orl %edx, %ecx
   2176 ; AVX2-NEXT:    vpextrb $13, %xmm0, %edx
   2177 ; AVX2-NEXT:    andl $1, %edx
   2178 ; AVX2-NEXT:    shll $13, %edx
   2179 ; AVX2-NEXT:    orl %ecx, %edx
   2180 ; AVX2-NEXT:    vpextrb $14, %xmm0, %ecx
   2181 ; AVX2-NEXT:    andl $1, %ecx
   2182 ; AVX2-NEXT:    shll $14, %ecx
   2183 ; AVX2-NEXT:    orl %edx, %ecx
   2184 ; AVX2-NEXT:    vpextrb $15, %xmm0, %edx
   2185 ; AVX2-NEXT:    andl $1, %edx
   2186 ; AVX2-NEXT:    shll $15, %edx
   2187 ; AVX2-NEXT:    orl %ecx, %edx
   2188 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm0
   2189 ; AVX2-NEXT:    vpextrb $0, %xmm0, %ecx
   2190 ; AVX2-NEXT:    andl $1, %ecx
   2191 ; AVX2-NEXT:    shll $16, %ecx
   2192 ; AVX2-NEXT:    orl %edx, %ecx
   2193 ; AVX2-NEXT:    vpextrb $1, %xmm0, %edx
   2194 ; AVX2-NEXT:    andl $1, %edx
   2195 ; AVX2-NEXT:    shll $17, %edx
   2196 ; AVX2-NEXT:    orl %ecx, %edx
   2197 ; AVX2-NEXT:    vpextrb $2, %xmm0, %ecx
   2198 ; AVX2-NEXT:    andl $1, %ecx
   2199 ; AVX2-NEXT:    shll $18, %ecx
   2200 ; AVX2-NEXT:    orl %edx, %ecx
   2201 ; AVX2-NEXT:    vpextrb $3, %xmm0, %edx
   2202 ; AVX2-NEXT:    andl $1, %edx
   2203 ; AVX2-NEXT:    shll $19, %edx
   2204 ; AVX2-NEXT:    orl %ecx, %edx
   2205 ; AVX2-NEXT:    vpextrb $4, %xmm0, %ecx
   2206 ; AVX2-NEXT:    andl $1, %ecx
   2207 ; AVX2-NEXT:    shll $20, %ecx
   2208 ; AVX2-NEXT:    orl %edx, %ecx
   2209 ; AVX2-NEXT:    vpextrb $5, %xmm0, %edx
   2210 ; AVX2-NEXT:    andl $1, %edx
   2211 ; AVX2-NEXT:    shll $21, %edx
   2212 ; AVX2-NEXT:    orl %ecx, %edx
   2213 ; AVX2-NEXT:    vpextrb $6, %xmm0, %ecx
   2214 ; AVX2-NEXT:    andl $1, %ecx
   2215 ; AVX2-NEXT:    shll $22, %ecx
   2216 ; AVX2-NEXT:    orl %edx, %ecx
   2217 ; AVX2-NEXT:    vpextrb $7, %xmm0, %edx
   2218 ; AVX2-NEXT:    andl $1, %edx
   2219 ; AVX2-NEXT:    shll $23, %edx
   2220 ; AVX2-NEXT:    orl %ecx, %edx
   2221 ; AVX2-NEXT:    vpextrb $8, %xmm0, %ecx
   2222 ; AVX2-NEXT:    andl $1, %ecx
   2223 ; AVX2-NEXT:    shll $24, %ecx
   2224 ; AVX2-NEXT:    orl %edx, %ecx
   2225 ; AVX2-NEXT:    vpextrb $9, %xmm0, %edx
   2226 ; AVX2-NEXT:    andl $1, %edx
   2227 ; AVX2-NEXT:    shll $25, %edx
   2228 ; AVX2-NEXT:    orl %ecx, %edx
   2229 ; AVX2-NEXT:    vpextrb $10, %xmm0, %ecx
   2230 ; AVX2-NEXT:    andl $1, %ecx
   2231 ; AVX2-NEXT:    shll $26, %ecx
   2232 ; AVX2-NEXT:    orl %edx, %ecx
   2233 ; AVX2-NEXT:    vpextrb $11, %xmm0, %edx
   2234 ; AVX2-NEXT:    andl $1, %edx
   2235 ; AVX2-NEXT:    shll $27, %edx
   2236 ; AVX2-NEXT:    orl %ecx, %edx
   2237 ; AVX2-NEXT:    vpextrb $12, %xmm0, %ecx
   2238 ; AVX2-NEXT:    andl $1, %ecx
   2239 ; AVX2-NEXT:    shll $28, %ecx
   2240 ; AVX2-NEXT:    orl %edx, %ecx
   2241 ; AVX2-NEXT:    vpextrb $13, %xmm0, %edx
   2242 ; AVX2-NEXT:    andl $1, %edx
   2243 ; AVX2-NEXT:    shll $29, %edx
   2244 ; AVX2-NEXT:    orl %ecx, %edx
   2245 ; AVX2-NEXT:    vpextrb $14, %xmm0, %ecx
   2246 ; AVX2-NEXT:    andl $1, %ecx
   2247 ; AVX2-NEXT:    shll $30, %ecx
   2248 ; AVX2-NEXT:    orl %edx, %ecx
   2249 ; AVX2-NEXT:    vpextrb $15, %xmm0, %edx
   2250 ; AVX2-NEXT:    shll $31, %edx
   2251 ; AVX2-NEXT:    orl %ecx, %edx
   2252 ; AVX2-NEXT:    orl %eax, %edx
   2253 ; AVX2-NEXT:    movl %edx, (%rdi)
   2254 ; AVX2-NEXT:    movq %rdi, %rax
   2255 ; AVX2-NEXT:    vzeroupper
   2256 ; AVX2-NEXT:    retq
   2257 ;
   2258 ; AVX512F-LABEL: test_cmp_v64i8:
   2259 ; AVX512F:       # %bb.0:
   2260 ; AVX512F-NEXT:    vpcmpgtb %ymm2, %ymm0, %ymm0
   2261 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm4
   2262 ; AVX512F-NEXT:    vpcmpgtb %ymm3, %ymm1, %ymm2
   2263 ; AVX512F-NEXT:    vextracti128 $1, %ymm2, %xmm3
   2264 ; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 killed $ymm0
   2265 ; AVX512F-NEXT:    vmovdqa %xmm4, %xmm1
   2266 ; AVX512F-NEXT:    # kill: def $xmm2 killed $xmm2 killed $ymm2
   2267 ; AVX512F-NEXT:    vzeroupper
   2268 ; AVX512F-NEXT:    retq
   2269 ;
   2270 ; AVX512DQ-LABEL: test_cmp_v64i8:
   2271 ; AVX512DQ:       # %bb.0:
   2272 ; AVX512DQ-NEXT:    vpcmpgtb %ymm2, %ymm0, %ymm0
   2273 ; AVX512DQ-NEXT:    vextracti128 $1, %ymm0, %xmm4
   2274 ; AVX512DQ-NEXT:    vpcmpgtb %ymm3, %ymm1, %ymm2
   2275 ; AVX512DQ-NEXT:    vextracti128 $1, %ymm2, %xmm3
   2276 ; AVX512DQ-NEXT:    # kill: def $xmm0 killed $xmm0 killed $ymm0
   2277 ; AVX512DQ-NEXT:    vmovdqa %xmm4, %xmm1
   2278 ; AVX512DQ-NEXT:    # kill: def $xmm2 killed $xmm2 killed $ymm2
   2279 ; AVX512DQ-NEXT:    vzeroupper
   2280 ; AVX512DQ-NEXT:    retq
   2281 ;
   2282 ; AVX512BW-LABEL: test_cmp_v64i8:
   2283 ; AVX512BW:       # %bb.0:
   2284 ; AVX512BW-NEXT:    vpcmpgtb %zmm1, %zmm0, %k0
   2285 ; AVX512BW-NEXT:    vpmovm2b %k0, %zmm0
   2286 ; AVX512BW-NEXT:    retq
   2287   %1 = icmp sgt <64 x i8> %a0, %a1
   2288   ret <64 x i1> %1
   2289 }
   2290 
   2291 ;
   2292 ; 1024-bit vector comparisons
   2293 ;
   2294 
   2295 define <16 x i1> @test_cmp_v16f64(<16 x double> %a0, <16 x double> %a1) nounwind {
   2296 ; SSE-LABEL: test_cmp_v16f64:
   2297 ; SSE:       # %bb.0:
   2298 ; SSE-NEXT:    movapd %xmm0, %xmm8
   2299 ; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm0
   2300 ; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm11
   2301 ; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm10
   2302 ; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm12
   2303 ; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm9
   2304 ; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm13
   2305 ; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm14
   2306 ; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm15
   2307 ; SSE-NEXT:    cmpltpd %xmm7, %xmm15
   2308 ; SSE-NEXT:    cmpltpd %xmm6, %xmm14
   2309 ; SSE-NEXT:    packssdw %xmm15, %xmm14
   2310 ; SSE-NEXT:    cmpltpd %xmm5, %xmm13
   2311 ; SSE-NEXT:    cmpltpd %xmm4, %xmm9
   2312 ; SSE-NEXT:    packssdw %xmm13, %xmm9
   2313 ; SSE-NEXT:    packssdw %xmm14, %xmm9
   2314 ; SSE-NEXT:    cmpltpd %xmm3, %xmm12
   2315 ; SSE-NEXT:    cmpltpd %xmm2, %xmm10
   2316 ; SSE-NEXT:    packssdw %xmm12, %xmm10
   2317 ; SSE-NEXT:    cmpltpd %xmm1, %xmm11
   2318 ; SSE-NEXT:    cmpltpd %xmm8, %xmm0
   2319 ; SSE-NEXT:    packssdw %xmm11, %xmm0
   2320 ; SSE-NEXT:    packssdw %xmm10, %xmm0
   2321 ; SSE-NEXT:    packsswb %xmm9, %xmm0
   2322 ; SSE-NEXT:    retq
   2323 ;
   2324 ; AVX1-LABEL: test_cmp_v16f64:
   2325 ; AVX1:       # %bb.0:
   2326 ; AVX1-NEXT:    vcmpltpd %ymm3, %ymm7, %ymm3
   2327 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm7
   2328 ; AVX1-NEXT:    vpackssdw %xmm7, %xmm3, %xmm3
   2329 ; AVX1-NEXT:    vcmpltpd %ymm2, %ymm6, %ymm2
   2330 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm6
   2331 ; AVX1-NEXT:    vpackssdw %xmm6, %xmm2, %xmm2
   2332 ; AVX1-NEXT:    vpackssdw %xmm3, %xmm2, %xmm2
   2333 ; AVX1-NEXT:    vcmpltpd %ymm1, %ymm5, %ymm1
   2334 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   2335 ; AVX1-NEXT:    vpackssdw %xmm3, %xmm1, %xmm1
   2336 ; AVX1-NEXT:    vcmpltpd %ymm0, %ymm4, %ymm0
   2337 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
   2338 ; AVX1-NEXT:    vpackssdw %xmm3, %xmm0, %xmm0
   2339 ; AVX1-NEXT:    vpackssdw %xmm1, %xmm0, %xmm0
   2340 ; AVX1-NEXT:    vpacksswb %xmm2, %xmm0, %xmm0
   2341 ; AVX1-NEXT:    vzeroupper
   2342 ; AVX1-NEXT:    retq
   2343 ;
   2344 ; AVX2-LABEL: test_cmp_v16f64:
   2345 ; AVX2:       # %bb.0:
   2346 ; AVX2-NEXT:    vcmpltpd %ymm3, %ymm7, %ymm3
   2347 ; AVX2-NEXT:    vcmpltpd %ymm2, %ymm6, %ymm2
   2348 ; AVX2-NEXT:    vpackssdw %ymm3, %ymm2, %ymm2
   2349 ; AVX2-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,2,1,3]
   2350 ; AVX2-NEXT:    vcmpltpd %ymm1, %ymm5, %ymm1
   2351 ; AVX2-NEXT:    vcmpltpd %ymm0, %ymm4, %ymm0
   2352 ; AVX2-NEXT:    vpackssdw %ymm1, %ymm0, %ymm0
   2353 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]
   2354 ; AVX2-NEXT:    vpackssdw %ymm2, %ymm0, %ymm0
   2355 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]
   2356 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
   2357 ; AVX2-NEXT:    vpacksswb %xmm1, %xmm0, %xmm0
   2358 ; AVX2-NEXT:    vzeroupper
   2359 ; AVX2-NEXT:    retq
   2360 ;
   2361 ; AVX512F-LABEL: test_cmp_v16f64:
   2362 ; AVX512F:       # %bb.0:
   2363 ; AVX512F-NEXT:    vcmpltpd %zmm0, %zmm2, %k0
   2364 ; AVX512F-NEXT:    vcmpltpd %zmm1, %zmm3, %k1
   2365 ; AVX512F-NEXT:    kunpckbw %k0, %k1, %k1
   2366 ; AVX512F-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
   2367 ; AVX512F-NEXT:    vpmovdb %zmm0, %xmm0
   2368 ; AVX512F-NEXT:    vzeroupper
   2369 ; AVX512F-NEXT:    retq
   2370 ;
   2371 ; AVX512DQ-LABEL: test_cmp_v16f64:
   2372 ; AVX512DQ:       # %bb.0:
   2373 ; AVX512DQ-NEXT:    vcmpltpd %zmm0, %zmm2, %k0
   2374 ; AVX512DQ-NEXT:    vcmpltpd %zmm1, %zmm3, %k1
   2375 ; AVX512DQ-NEXT:    kunpckbw %k0, %k1, %k0
   2376 ; AVX512DQ-NEXT:    vpmovm2d %k0, %zmm0
   2377 ; AVX512DQ-NEXT:    vpmovdb %zmm0, %xmm0
   2378 ; AVX512DQ-NEXT:    vzeroupper
   2379 ; AVX512DQ-NEXT:    retq
   2380 ;
   2381 ; AVX512BW-LABEL: test_cmp_v16f64:
   2382 ; AVX512BW:       # %bb.0:
   2383 ; AVX512BW-NEXT:    vcmpltpd %zmm0, %zmm2, %k0
   2384 ; AVX512BW-NEXT:    vcmpltpd %zmm1, %zmm3, %k1
   2385 ; AVX512BW-NEXT:    kunpckbw %k0, %k1, %k0
   2386 ; AVX512BW-NEXT:    vpmovm2b %k0, %zmm0
   2387 ; AVX512BW-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
   2388 ; AVX512BW-NEXT:    vzeroupper
   2389 ; AVX512BW-NEXT:    retq
   2390   %1 = fcmp ogt <16 x double> %a0, %a1
   2391   ret <16 x i1> %1
   2392 }
   2393 
   2394 define <32 x i1> @test_cmp_v32f32(<32 x float> %a0, <32 x float> %a1) nounwind {
   2395 ; SSE2-LABEL: test_cmp_v32f32:
   2396 ; SSE2:       # %bb.0:
   2397 ; SSE2-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm9
   2398 ; SSE2-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm11
   2399 ; SSE2-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm10
   2400 ; SSE2-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm12
   2401 ; SSE2-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm8
   2402 ; SSE2-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm13
   2403 ; SSE2-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm14
   2404 ; SSE2-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm15
   2405 ; SSE2-NEXT:    cmpltps %xmm3, %xmm15
   2406 ; SSE2-NEXT:    movaps {{.*#+}} xmm3 = [255,255,255,255]
   2407 ; SSE2-NEXT:    andps %xmm3, %xmm15
   2408 ; SSE2-NEXT:    cmpltps %xmm2, %xmm14
   2409 ; SSE2-NEXT:    andps %xmm3, %xmm14
   2410 ; SSE2-NEXT:    packuswb %xmm15, %xmm14
   2411 ; SSE2-NEXT:    cmpltps %xmm1, %xmm13
   2412 ; SSE2-NEXT:    andps %xmm3, %xmm13
   2413 ; SSE2-NEXT:    cmpltps %xmm0, %xmm8
   2414 ; SSE2-NEXT:    andps %xmm3, %xmm8
   2415 ; SSE2-NEXT:    packuswb %xmm13, %xmm8
   2416 ; SSE2-NEXT:    packuswb %xmm14, %xmm8
   2417 ; SSE2-NEXT:    cmpltps %xmm7, %xmm12
   2418 ; SSE2-NEXT:    andps %xmm3, %xmm12
   2419 ; SSE2-NEXT:    cmpltps %xmm6, %xmm10
   2420 ; SSE2-NEXT:    andps %xmm3, %xmm10
   2421 ; SSE2-NEXT:    packuswb %xmm12, %xmm10
   2422 ; SSE2-NEXT:    cmpltps %xmm5, %xmm11
   2423 ; SSE2-NEXT:    andps %xmm3, %xmm11
   2424 ; SSE2-NEXT:    cmpltps %xmm4, %xmm9
   2425 ; SSE2-NEXT:    andps %xmm3, %xmm9
   2426 ; SSE2-NEXT:    packuswb %xmm11, %xmm9
   2427 ; SSE2-NEXT:    packuswb %xmm10, %xmm9
   2428 ; SSE2-NEXT:    movdqa %xmm9, -{{[0-9]+}}(%rsp)
   2429 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   2430 ; SSE2-NEXT:    andl $1, %eax
   2431 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   2432 ; SSE2-NEXT:    andl $1, %ecx
   2433 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   2434 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   2435 ; SSE2-NEXT:    andl $1, %ecx
   2436 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   2437 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   2438 ; SSE2-NEXT:    andl $1, %ecx
   2439 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   2440 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   2441 ; SSE2-NEXT:    andl $1, %ecx
   2442 ; SSE2-NEXT:    shll $4, %ecx
   2443 ; SSE2-NEXT:    orl %eax, %ecx
   2444 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   2445 ; SSE2-NEXT:    andl $1, %eax
   2446 ; SSE2-NEXT:    shll $5, %eax
   2447 ; SSE2-NEXT:    orl %ecx, %eax
   2448 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   2449 ; SSE2-NEXT:    andl $1, %ecx
   2450 ; SSE2-NEXT:    shll $6, %ecx
   2451 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   2452 ; SSE2-NEXT:    andl $1, %edx
   2453 ; SSE2-NEXT:    shll $7, %edx
   2454 ; SSE2-NEXT:    orl %ecx, %edx
   2455 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   2456 ; SSE2-NEXT:    andl $1, %ecx
   2457 ; SSE2-NEXT:    shll $8, %ecx
   2458 ; SSE2-NEXT:    orl %edx, %ecx
   2459 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   2460 ; SSE2-NEXT:    andl $1, %edx
   2461 ; SSE2-NEXT:    shll $9, %edx
   2462 ; SSE2-NEXT:    orl %ecx, %edx
   2463 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   2464 ; SSE2-NEXT:    andl $1, %ecx
   2465 ; SSE2-NEXT:    shll $10, %ecx
   2466 ; SSE2-NEXT:    orl %edx, %ecx
   2467 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   2468 ; SSE2-NEXT:    andl $1, %edx
   2469 ; SSE2-NEXT:    shll $11, %edx
   2470 ; SSE2-NEXT:    orl %ecx, %edx
   2471 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   2472 ; SSE2-NEXT:    andl $1, %ecx
   2473 ; SSE2-NEXT:    shll $12, %ecx
   2474 ; SSE2-NEXT:    orl %edx, %ecx
   2475 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   2476 ; SSE2-NEXT:    andl $1, %edx
   2477 ; SSE2-NEXT:    shll $13, %edx
   2478 ; SSE2-NEXT:    orl %ecx, %edx
   2479 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   2480 ; SSE2-NEXT:    andl $1, %ecx
   2481 ; SSE2-NEXT:    shll $14, %ecx
   2482 ; SSE2-NEXT:    orl %edx, %ecx
   2483 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   2484 ; SSE2-NEXT:    shll $15, %edx
   2485 ; SSE2-NEXT:    orl %ecx, %edx
   2486 ; SSE2-NEXT:    orl %eax, %edx
   2487 ; SSE2-NEXT:    movw %dx, 2(%rdi)
   2488 ; SSE2-NEXT:    movdqa %xmm8, -{{[0-9]+}}(%rsp)
   2489 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   2490 ; SSE2-NEXT:    andl $1, %eax
   2491 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   2492 ; SSE2-NEXT:    andl $1, %ecx
   2493 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   2494 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   2495 ; SSE2-NEXT:    andl $1, %ecx
   2496 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   2497 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   2498 ; SSE2-NEXT:    andl $1, %ecx
   2499 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   2500 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   2501 ; SSE2-NEXT:    andl $1, %ecx
   2502 ; SSE2-NEXT:    shll $4, %ecx
   2503 ; SSE2-NEXT:    orl %eax, %ecx
   2504 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   2505 ; SSE2-NEXT:    andl $1, %eax
   2506 ; SSE2-NEXT:    shll $5, %eax
   2507 ; SSE2-NEXT:    orl %ecx, %eax
   2508 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   2509 ; SSE2-NEXT:    andl $1, %ecx
   2510 ; SSE2-NEXT:    shll $6, %ecx
   2511 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   2512 ; SSE2-NEXT:    andl $1, %edx
   2513 ; SSE2-NEXT:    shll $7, %edx
   2514 ; SSE2-NEXT:    orl %ecx, %edx
   2515 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   2516 ; SSE2-NEXT:    andl $1, %ecx
   2517 ; SSE2-NEXT:    shll $8, %ecx
   2518 ; SSE2-NEXT:    orl %edx, %ecx
   2519 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   2520 ; SSE2-NEXT:    andl $1, %edx
   2521 ; SSE2-NEXT:    shll $9, %edx
   2522 ; SSE2-NEXT:    orl %ecx, %edx
   2523 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   2524 ; SSE2-NEXT:    andl $1, %ecx
   2525 ; SSE2-NEXT:    shll $10, %ecx
   2526 ; SSE2-NEXT:    orl %edx, %ecx
   2527 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   2528 ; SSE2-NEXT:    andl $1, %edx
   2529 ; SSE2-NEXT:    shll $11, %edx
   2530 ; SSE2-NEXT:    orl %ecx, %edx
   2531 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   2532 ; SSE2-NEXT:    andl $1, %ecx
   2533 ; SSE2-NEXT:    shll $12, %ecx
   2534 ; SSE2-NEXT:    orl %edx, %ecx
   2535 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   2536 ; SSE2-NEXT:    andl $1, %edx
   2537 ; SSE2-NEXT:    shll $13, %edx
   2538 ; SSE2-NEXT:    orl %ecx, %edx
   2539 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   2540 ; SSE2-NEXT:    andl $1, %ecx
   2541 ; SSE2-NEXT:    shll $14, %ecx
   2542 ; SSE2-NEXT:    orl %edx, %ecx
   2543 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   2544 ; SSE2-NEXT:    shll $15, %edx
   2545 ; SSE2-NEXT:    orl %ecx, %edx
   2546 ; SSE2-NEXT:    orl %eax, %edx
   2547 ; SSE2-NEXT:    movw %dx, (%rdi)
   2548 ; SSE2-NEXT:    movq %rdi, %rax
   2549 ; SSE2-NEXT:    retq
   2550 ;
   2551 ; SSE42-LABEL: test_cmp_v32f32:
   2552 ; SSE42:       # %bb.0:
   2553 ; SSE42-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm15
   2554 ; SSE42-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm14
   2555 ; SSE42-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm13
   2556 ; SSE42-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm12
   2557 ; SSE42-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm11
   2558 ; SSE42-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm10
   2559 ; SSE42-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm9
   2560 ; SSE42-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm8
   2561 ; SSE42-NEXT:    cmpltps %xmm3, %xmm8
   2562 ; SSE42-NEXT:    cmpltps %xmm2, %xmm9
   2563 ; SSE42-NEXT:    cmpltps %xmm1, %xmm10
   2564 ; SSE42-NEXT:    cmpltps %xmm0, %xmm11
   2565 ; SSE42-NEXT:    cmpltps %xmm7, %xmm12
   2566 ; SSE42-NEXT:    cmpltps %xmm6, %xmm13
   2567 ; SSE42-NEXT:    cmpltps %xmm5, %xmm14
   2568 ; SSE42-NEXT:    cmpltps %xmm4, %xmm15
   2569 ; SSE42-NEXT:    pextrb $4, %xmm15, %eax
   2570 ; SSE42-NEXT:    andl $1, %eax
   2571 ; SSE42-NEXT:    pextrb $0, %xmm15, %ecx
   2572 ; SSE42-NEXT:    andl $1, %ecx
   2573 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
   2574 ; SSE42-NEXT:    pextrb $8, %xmm15, %ecx
   2575 ; SSE42-NEXT:    andl $1, %ecx
   2576 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
   2577 ; SSE42-NEXT:    pextrb $12, %xmm15, %ecx
   2578 ; SSE42-NEXT:    andl $1, %ecx
   2579 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
   2580 ; SSE42-NEXT:    pextrb $0, %xmm14, %ecx
   2581 ; SSE42-NEXT:    andl $1, %ecx
   2582 ; SSE42-NEXT:    shll $4, %ecx
   2583 ; SSE42-NEXT:    orl %eax, %ecx
   2584 ; SSE42-NEXT:    pextrb $4, %xmm14, %eax
   2585 ; SSE42-NEXT:    andl $1, %eax
   2586 ; SSE42-NEXT:    shll $5, %eax
   2587 ; SSE42-NEXT:    orl %ecx, %eax
   2588 ; SSE42-NEXT:    pextrb $8, %xmm14, %ecx
   2589 ; SSE42-NEXT:    andl $1, %ecx
   2590 ; SSE42-NEXT:    shll $6, %ecx
   2591 ; SSE42-NEXT:    pextrb $12, %xmm14, %edx
   2592 ; SSE42-NEXT:    andl $1, %edx
   2593 ; SSE42-NEXT:    shll $7, %edx
   2594 ; SSE42-NEXT:    orl %ecx, %edx
   2595 ; SSE42-NEXT:    pextrb $0, %xmm13, %ecx
   2596 ; SSE42-NEXT:    andl $1, %ecx
   2597 ; SSE42-NEXT:    shll $8, %ecx
   2598 ; SSE42-NEXT:    orl %edx, %ecx
   2599 ; SSE42-NEXT:    pextrb $4, %xmm13, %edx
   2600 ; SSE42-NEXT:    andl $1, %edx
   2601 ; SSE42-NEXT:    shll $9, %edx
   2602 ; SSE42-NEXT:    orl %ecx, %edx
   2603 ; SSE42-NEXT:    pextrb $8, %xmm13, %ecx
   2604 ; SSE42-NEXT:    andl $1, %ecx
   2605 ; SSE42-NEXT:    shll $10, %ecx
   2606 ; SSE42-NEXT:    orl %edx, %ecx
   2607 ; SSE42-NEXT:    pextrb $12, %xmm13, %edx
   2608 ; SSE42-NEXT:    andl $1, %edx
   2609 ; SSE42-NEXT:    shll $11, %edx
   2610 ; SSE42-NEXT:    orl %ecx, %edx
   2611 ; SSE42-NEXT:    pextrb $0, %xmm12, %ecx
   2612 ; SSE42-NEXT:    andl $1, %ecx
   2613 ; SSE42-NEXT:    shll $12, %ecx
   2614 ; SSE42-NEXT:    orl %edx, %ecx
   2615 ; SSE42-NEXT:    pextrb $4, %xmm12, %edx
   2616 ; SSE42-NEXT:    andl $1, %edx
   2617 ; SSE42-NEXT:    shll $13, %edx
   2618 ; SSE42-NEXT:    orl %ecx, %edx
   2619 ; SSE42-NEXT:    pextrb $8, %xmm12, %ecx
   2620 ; SSE42-NEXT:    andl $1, %ecx
   2621 ; SSE42-NEXT:    shll $14, %ecx
   2622 ; SSE42-NEXT:    orl %edx, %ecx
   2623 ; SSE42-NEXT:    pextrb $12, %xmm12, %edx
   2624 ; SSE42-NEXT:    shll $15, %edx
   2625 ; SSE42-NEXT:    orl %ecx, %edx
   2626 ; SSE42-NEXT:    orl %eax, %edx
   2627 ; SSE42-NEXT:    movw %dx, 2(%rdi)
   2628 ; SSE42-NEXT:    pextrb $4, %xmm11, %eax
   2629 ; SSE42-NEXT:    andl $1, %eax
   2630 ; SSE42-NEXT:    pextrb $0, %xmm11, %ecx
   2631 ; SSE42-NEXT:    andl $1, %ecx
   2632 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
   2633 ; SSE42-NEXT:    pextrb $8, %xmm11, %ecx
   2634 ; SSE42-NEXT:    andl $1, %ecx
   2635 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
   2636 ; SSE42-NEXT:    pextrb $12, %xmm11, %ecx
   2637 ; SSE42-NEXT:    andl $1, %ecx
   2638 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
   2639 ; SSE42-NEXT:    pextrb $0, %xmm10, %ecx
   2640 ; SSE42-NEXT:    andl $1, %ecx
   2641 ; SSE42-NEXT:    shll $4, %ecx
   2642 ; SSE42-NEXT:    orl %eax, %ecx
   2643 ; SSE42-NEXT:    pextrb $4, %xmm10, %eax
   2644 ; SSE42-NEXT:    andl $1, %eax
   2645 ; SSE42-NEXT:    shll $5, %eax
   2646 ; SSE42-NEXT:    orl %ecx, %eax
   2647 ; SSE42-NEXT:    pextrb $8, %xmm10, %ecx
   2648 ; SSE42-NEXT:    andl $1, %ecx
   2649 ; SSE42-NEXT:    shll $6, %ecx
   2650 ; SSE42-NEXT:    pextrb $12, %xmm10, %edx
   2651 ; SSE42-NEXT:    andl $1, %edx
   2652 ; SSE42-NEXT:    shll $7, %edx
   2653 ; SSE42-NEXT:    orl %ecx, %edx
   2654 ; SSE42-NEXT:    pextrb $0, %xmm9, %ecx
   2655 ; SSE42-NEXT:    andl $1, %ecx
   2656 ; SSE42-NEXT:    shll $8, %ecx
   2657 ; SSE42-NEXT:    orl %edx, %ecx
   2658 ; SSE42-NEXT:    pextrb $4, %xmm9, %edx
   2659 ; SSE42-NEXT:    andl $1, %edx
   2660 ; SSE42-NEXT:    shll $9, %edx
   2661 ; SSE42-NEXT:    orl %ecx, %edx
   2662 ; SSE42-NEXT:    pextrb $8, %xmm9, %ecx
   2663 ; SSE42-NEXT:    andl $1, %ecx
   2664 ; SSE42-NEXT:    shll $10, %ecx
   2665 ; SSE42-NEXT:    orl %edx, %ecx
   2666 ; SSE42-NEXT:    pextrb $12, %xmm9, %edx
   2667 ; SSE42-NEXT:    andl $1, %edx
   2668 ; SSE42-NEXT:    shll $11, %edx
   2669 ; SSE42-NEXT:    orl %ecx, %edx
   2670 ; SSE42-NEXT:    pextrb $0, %xmm8, %ecx
   2671 ; SSE42-NEXT:    andl $1, %ecx
   2672 ; SSE42-NEXT:    shll $12, %ecx
   2673 ; SSE42-NEXT:    orl %edx, %ecx
   2674 ; SSE42-NEXT:    pextrb $4, %xmm8, %edx
   2675 ; SSE42-NEXT:    andl $1, %edx
   2676 ; SSE42-NEXT:    shll $13, %edx
   2677 ; SSE42-NEXT:    orl %ecx, %edx
   2678 ; SSE42-NEXT:    pextrb $8, %xmm8, %ecx
   2679 ; SSE42-NEXT:    andl $1, %ecx
   2680 ; SSE42-NEXT:    shll $14, %ecx
   2681 ; SSE42-NEXT:    orl %edx, %ecx
   2682 ; SSE42-NEXT:    pextrb $12, %xmm8, %edx
   2683 ; SSE42-NEXT:    shll $15, %edx
   2684 ; SSE42-NEXT:    orl %ecx, %edx
   2685 ; SSE42-NEXT:    orl %eax, %edx
   2686 ; SSE42-NEXT:    movw %dx, (%rdi)
   2687 ; SSE42-NEXT:    movq %rdi, %rax
   2688 ; SSE42-NEXT:    retq
   2689 ;
   2690 ; AVX1-LABEL: test_cmp_v32f32:
   2691 ; AVX1:       # %bb.0:
   2692 ; AVX1-NEXT:    vcmpltps %ymm3, %ymm7, %ymm3
   2693 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm7
   2694 ; AVX1-NEXT:    vpackssdw %xmm7, %xmm3, %xmm3
   2695 ; AVX1-NEXT:    vcmpltps %ymm2, %ymm6, %ymm2
   2696 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm6
   2697 ; AVX1-NEXT:    vpackssdw %xmm6, %xmm2, %xmm2
   2698 ; AVX1-NEXT:    vpacksswb %xmm3, %xmm2, %xmm2
   2699 ; AVX1-NEXT:    vcmpltps %ymm1, %ymm5, %ymm1
   2700 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   2701 ; AVX1-NEXT:    vpackssdw %xmm3, %xmm1, %xmm1
   2702 ; AVX1-NEXT:    vcmpltps %ymm0, %ymm4, %ymm0
   2703 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
   2704 ; AVX1-NEXT:    vpackssdw %xmm3, %xmm0, %xmm0
   2705 ; AVX1-NEXT:    vpacksswb %xmm1, %xmm0, %xmm0
   2706 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
   2707 ; AVX1-NEXT:    retq
   2708 ;
   2709 ; AVX2-LABEL: test_cmp_v32f32:
   2710 ; AVX2:       # %bb.0:
   2711 ; AVX2-NEXT:    vcmpltps %ymm3, %ymm7, %ymm3
   2712 ; AVX2-NEXT:    vcmpltps %ymm2, %ymm6, %ymm2
   2713 ; AVX2-NEXT:    vpackssdw %ymm3, %ymm2, %ymm2
   2714 ; AVX2-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,2,1,3]
   2715 ; AVX2-NEXT:    vcmpltps %ymm1, %ymm5, %ymm1
   2716 ; AVX2-NEXT:    vcmpltps %ymm0, %ymm4, %ymm0
   2717 ; AVX2-NEXT:    vpackssdw %ymm1, %ymm0, %ymm0
   2718 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]
   2719 ; AVX2-NEXT:    vpacksswb %ymm2, %ymm0, %ymm0
   2720 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]
   2721 ; AVX2-NEXT:    retq
   2722 ;
   2723 ; AVX512F-LABEL: test_cmp_v32f32:
   2724 ; AVX512F:       # %bb.0:
   2725 ; AVX512F-NEXT:    vcmpltps %zmm1, %zmm3, %k1
   2726 ; AVX512F-NEXT:    vcmpltps %zmm0, %zmm2, %k2
   2727 ; AVX512F-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k2} {z}
   2728 ; AVX512F-NEXT:    vpmovdb %zmm0, %xmm0
   2729 ; AVX512F-NEXT:    vpternlogd $255, %zmm1, %zmm1, %zmm1 {%k1} {z}
   2730 ; AVX512F-NEXT:    vpmovdb %zmm1, %xmm1
   2731 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   2732 ; AVX512F-NEXT:    retq
   2733 ;
   2734 ; AVX512DQ-LABEL: test_cmp_v32f32:
   2735 ; AVX512DQ:       # %bb.0:
   2736 ; AVX512DQ-NEXT:    vcmpltps %zmm1, %zmm3, %k0
   2737 ; AVX512DQ-NEXT:    vcmpltps %zmm0, %zmm2, %k1
   2738 ; AVX512DQ-NEXT:    vpmovm2d %k1, %zmm0
   2739 ; AVX512DQ-NEXT:    vpmovdb %zmm0, %xmm0
   2740 ; AVX512DQ-NEXT:    vpmovm2d %k0, %zmm1
   2741 ; AVX512DQ-NEXT:    vpmovdb %zmm1, %xmm1
   2742 ; AVX512DQ-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   2743 ; AVX512DQ-NEXT:    retq
   2744 ;
   2745 ; AVX512BW-LABEL: test_cmp_v32f32:
   2746 ; AVX512BW:       # %bb.0:
   2747 ; AVX512BW-NEXT:    vcmpltps %zmm0, %zmm2, %k0
   2748 ; AVX512BW-NEXT:    vcmpltps %zmm1, %zmm3, %k1
   2749 ; AVX512BW-NEXT:    kunpckwd %k0, %k1, %k0
   2750 ; AVX512BW-NEXT:    vpmovm2b %k0, %zmm0
   2751 ; AVX512BW-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
   2752 ; AVX512BW-NEXT:    retq
   2753   %1 = fcmp ogt <32 x float> %a0, %a1
   2754   ret <32 x i1> %1
   2755 }
   2756 
   2757 define <16 x i1> @test_cmp_v16i64(<16 x i64> %a0, <16 x i64> %a1) nounwind {
   2758 ; SSE2-LABEL: test_cmp_v16i64:
   2759 ; SSE2:       # %bb.0:
   2760 ; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [2147483648,0,2147483648,0]
   2761 ; SSE2-NEXT:    pxor %xmm8, %xmm7
   2762 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm9
   2763 ; SSE2-NEXT:    pxor %xmm8, %xmm9
   2764 ; SSE2-NEXT:    movdqa %xmm7, %xmm10
   2765 ; SSE2-NEXT:    pcmpgtd %xmm9, %xmm10
   2766 ; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2]
   2767 ; SSE2-NEXT:    pcmpeqd %xmm7, %xmm9
   2768 ; SSE2-NEXT:    pshufd {{.*#+}} xmm7 = xmm9[1,1,3,3]
   2769 ; SSE2-NEXT:    pand %xmm11, %xmm7
   2770 ; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]
   2771 ; SSE2-NEXT:    por %xmm7, %xmm9
   2772 ; SSE2-NEXT:    pxor %xmm8, %xmm6
   2773 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm7
   2774 ; SSE2-NEXT:    pxor %xmm8, %xmm7
   2775 ; SSE2-NEXT:    movdqa %xmm6, %xmm10
   2776 ; SSE2-NEXT:    pcmpgtd %xmm7, %xmm10
   2777 ; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2]
   2778 ; SSE2-NEXT:    pcmpeqd %xmm6, %xmm7
   2779 ; SSE2-NEXT:    pshufd {{.*#+}} xmm7 = xmm7[1,1,3,3]
   2780 ; SSE2-NEXT:    pand %xmm11, %xmm7
   2781 ; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm10[1,1,3,3]
   2782 ; SSE2-NEXT:    por %xmm7, %xmm10
   2783 ; SSE2-NEXT:    packssdw %xmm9, %xmm10
   2784 ; SSE2-NEXT:    pxor %xmm8, %xmm5
   2785 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm7
   2786 ; SSE2-NEXT:    pxor %xmm8, %xmm7
   2787 ; SSE2-NEXT:    movdqa %xmm5, %xmm6
   2788 ; SSE2-NEXT:    pcmpgtd %xmm7, %xmm6
   2789 ; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm6[0,0,2,2]
   2790 ; SSE2-NEXT:    pcmpeqd %xmm5, %xmm7
   2791 ; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3]
   2792 ; SSE2-NEXT:    pand %xmm9, %xmm5
   2793 ; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3]
   2794 ; SSE2-NEXT:    por %xmm5, %xmm6
   2795 ; SSE2-NEXT:    pxor %xmm8, %xmm4
   2796 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm5
   2797 ; SSE2-NEXT:    pxor %xmm8, %xmm5
   2798 ; SSE2-NEXT:    movdqa %xmm4, %xmm7
   2799 ; SSE2-NEXT:    pcmpgtd %xmm5, %xmm7
   2800 ; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm7[0,0,2,2]
   2801 ; SSE2-NEXT:    pcmpeqd %xmm4, %xmm5
   2802 ; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]
   2803 ; SSE2-NEXT:    pand %xmm9, %xmm5
   2804 ; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm7[1,1,3,3]
   2805 ; SSE2-NEXT:    por %xmm5, %xmm4
   2806 ; SSE2-NEXT:    packssdw %xmm6, %xmm4
   2807 ; SSE2-NEXT:    packssdw %xmm10, %xmm4
   2808 ; SSE2-NEXT:    pxor %xmm8, %xmm3
   2809 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm5
   2810 ; SSE2-NEXT:    pxor %xmm8, %xmm5
   2811 ; SSE2-NEXT:    movdqa %xmm3, %xmm6
   2812 ; SSE2-NEXT:    pcmpgtd %xmm5, %xmm6
   2813 ; SSE2-NEXT:    pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
   2814 ; SSE2-NEXT:    pcmpeqd %xmm3, %xmm5
   2815 ; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm5[1,1,3,3]
   2816 ; SSE2-NEXT:    pand %xmm7, %xmm3
   2817 ; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]
   2818 ; SSE2-NEXT:    por %xmm3, %xmm5
   2819 ; SSE2-NEXT:    pxor %xmm8, %xmm2
   2820 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm3
   2821 ; SSE2-NEXT:    pxor %xmm8, %xmm3
   2822 ; SSE2-NEXT:    movdqa %xmm2, %xmm6
   2823 ; SSE2-NEXT:    pcmpgtd %xmm3, %xmm6
   2824 ; SSE2-NEXT:    pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
   2825 ; SSE2-NEXT:    pcmpeqd %xmm2, %xmm3
   2826 ; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
   2827 ; SSE2-NEXT:    pand %xmm7, %xmm3
   2828 ; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm6[1,1,3,3]
   2829 ; SSE2-NEXT:    por %xmm3, %xmm2
   2830 ; SSE2-NEXT:    packssdw %xmm5, %xmm2
   2831 ; SSE2-NEXT:    pxor %xmm8, %xmm1
   2832 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm3
   2833 ; SSE2-NEXT:    pxor %xmm8, %xmm3
   2834 ; SSE2-NEXT:    movdqa %xmm1, %xmm5
   2835 ; SSE2-NEXT:    pcmpgtd %xmm3, %xmm5
   2836 ; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]
   2837 ; SSE2-NEXT:    pcmpeqd %xmm1, %xmm3
   2838 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm3[1,1,3,3]
   2839 ; SSE2-NEXT:    pand %xmm6, %xmm1
   2840 ; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm5[1,1,3,3]
   2841 ; SSE2-NEXT:    por %xmm1, %xmm3
   2842 ; SSE2-NEXT:    pxor %xmm8, %xmm0
   2843 ; SSE2-NEXT:    pxor {{[0-9]+}}(%rsp), %xmm8
   2844 ; SSE2-NEXT:    movdqa %xmm0, %xmm1
   2845 ; SSE2-NEXT:    pcmpgtd %xmm8, %xmm1
   2846 ; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm1[0,0,2,2]
   2847 ; SSE2-NEXT:    pcmpeqd %xmm0, %xmm8
   2848 ; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm8[1,1,3,3]
   2849 ; SSE2-NEXT:    pand %xmm5, %xmm6
   2850 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3]
   2851 ; SSE2-NEXT:    por %xmm6, %xmm0
   2852 ; SSE2-NEXT:    packssdw %xmm3, %xmm0
   2853 ; SSE2-NEXT:    packssdw %xmm2, %xmm0
   2854 ; SSE2-NEXT:    packsswb %xmm4, %xmm0
   2855 ; SSE2-NEXT:    retq
   2856 ;
   2857 ; SSE42-LABEL: test_cmp_v16i64:
   2858 ; SSE42:       # %bb.0:
   2859 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm7
   2860 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm6
   2861 ; SSE42-NEXT:    packssdw %xmm7, %xmm6
   2862 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm5
   2863 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm4
   2864 ; SSE42-NEXT:    packssdw %xmm5, %xmm4
   2865 ; SSE42-NEXT:    packssdw %xmm6, %xmm4
   2866 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm3
   2867 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm2
   2868 ; SSE42-NEXT:    packssdw %xmm3, %xmm2
   2869 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm1
   2870 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm0
   2871 ; SSE42-NEXT:    packssdw %xmm1, %xmm0
   2872 ; SSE42-NEXT:    packssdw %xmm2, %xmm0
   2873 ; SSE42-NEXT:    packsswb %xmm4, %xmm0
   2874 ; SSE42-NEXT:    retq
   2875 ;
   2876 ; AVX1-LABEL: test_cmp_v16i64:
   2877 ; AVX1:       # %bb.0:
   2878 ; AVX1-NEXT:    vextractf128 $1, %ymm7, %xmm8
   2879 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm9
   2880 ; AVX1-NEXT:    vpcmpgtq %xmm8, %xmm9, %xmm8
   2881 ; AVX1-NEXT:    vpcmpgtq %xmm7, %xmm3, %xmm3
   2882 ; AVX1-NEXT:    vpackssdw %xmm8, %xmm3, %xmm8
   2883 ; AVX1-NEXT:    vextractf128 $1, %ymm6, %xmm7
   2884 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm3
   2885 ; AVX1-NEXT:    vpcmpgtq %xmm7, %xmm3, %xmm3
   2886 ; AVX1-NEXT:    vpcmpgtq %xmm6, %xmm2, %xmm2
   2887 ; AVX1-NEXT:    vpackssdw %xmm3, %xmm2, %xmm2
   2888 ; AVX1-NEXT:    vpackssdw %xmm8, %xmm2, %xmm2
   2889 ; AVX1-NEXT:    vextractf128 $1, %ymm5, %xmm3
   2890 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm6
   2891 ; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm6, %xmm3
   2892 ; AVX1-NEXT:    vpcmpgtq %xmm5, %xmm1, %xmm1
   2893 ; AVX1-NEXT:    vpackssdw %xmm3, %xmm1, %xmm1
   2894 ; AVX1-NEXT:    vextractf128 $1, %ymm4, %xmm3
   2895 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm5
   2896 ; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm5, %xmm3
   2897 ; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm0, %xmm0
   2898 ; AVX1-NEXT:    vpackssdw %xmm3, %xmm0, %xmm0
   2899 ; AVX1-NEXT:    vpackssdw %xmm1, %xmm0, %xmm0
   2900 ; AVX1-NEXT:    vpacksswb %xmm2, %xmm0, %xmm0
   2901 ; AVX1-NEXT:    vzeroupper
   2902 ; AVX1-NEXT:    retq
   2903 ;
   2904 ; AVX2-LABEL: test_cmp_v16i64:
   2905 ; AVX2:       # %bb.0:
   2906 ; AVX2-NEXT:    vpcmpgtq %ymm7, %ymm3, %ymm3
   2907 ; AVX2-NEXT:    vpcmpgtq %ymm6, %ymm2, %ymm2
   2908 ; AVX2-NEXT:    vpackssdw %ymm3, %ymm2, %ymm2
   2909 ; AVX2-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,2,1,3]
   2910 ; AVX2-NEXT:    vpcmpgtq %ymm5, %ymm1, %ymm1
   2911 ; AVX2-NEXT:    vpcmpgtq %ymm4, %ymm0, %ymm0
   2912 ; AVX2-NEXT:    vpackssdw %ymm1, %ymm0, %ymm0
   2913 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]
   2914 ; AVX2-NEXT:    vpackssdw %ymm2, %ymm0, %ymm0
   2915 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]
   2916 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
   2917 ; AVX2-NEXT:    vpacksswb %xmm1, %xmm0, %xmm0
   2918 ; AVX2-NEXT:    vzeroupper
   2919 ; AVX2-NEXT:    retq
   2920 ;
   2921 ; AVX512F-LABEL: test_cmp_v16i64:
   2922 ; AVX512F:       # %bb.0:
   2923 ; AVX512F-NEXT:    vpcmpgtq %zmm2, %zmm0, %k0
   2924 ; AVX512F-NEXT:    vpcmpgtq %zmm3, %zmm1, %k1
   2925 ; AVX512F-NEXT:    kunpckbw %k0, %k1, %k1
   2926 ; AVX512F-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
   2927 ; AVX512F-NEXT:    vpmovdb %zmm0, %xmm0
   2928 ; AVX512F-NEXT:    vzeroupper
   2929 ; AVX512F-NEXT:    retq
   2930 ;
   2931 ; AVX512DQ-LABEL: test_cmp_v16i64:
   2932 ; AVX512DQ:       # %bb.0:
   2933 ; AVX512DQ-NEXT:    vpcmpgtq %zmm2, %zmm0, %k0
   2934 ; AVX512DQ-NEXT:    vpcmpgtq %zmm3, %zmm1, %k1
   2935 ; AVX512DQ-NEXT:    kunpckbw %k0, %k1, %k0
   2936 ; AVX512DQ-NEXT:    vpmovm2d %k0, %zmm0
   2937 ; AVX512DQ-NEXT:    vpmovdb %zmm0, %xmm0
   2938 ; AVX512DQ-NEXT:    vzeroupper
   2939 ; AVX512DQ-NEXT:    retq
   2940 ;
   2941 ; AVX512BW-LABEL: test_cmp_v16i64:
   2942 ; AVX512BW:       # %bb.0:
   2943 ; AVX512BW-NEXT:    vpcmpgtq %zmm2, %zmm0, %k0
   2944 ; AVX512BW-NEXT:    vpcmpgtq %zmm3, %zmm1, %k1
   2945 ; AVX512BW-NEXT:    kunpckbw %k0, %k1, %k0
   2946 ; AVX512BW-NEXT:    vpmovm2b %k0, %zmm0
   2947 ; AVX512BW-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
   2948 ; AVX512BW-NEXT:    vzeroupper
   2949 ; AVX512BW-NEXT:    retq
   2950   %1 = icmp sgt <16 x i64> %a0, %a1
   2951   ret <16 x i1> %1
   2952 }
   2953 
   2954 define <32 x i1> @test_cmp_v32i32(<32 x i32> %a0, <32 x i32> %a1) nounwind {
   2955 ; SSE2-LABEL: test_cmp_v32i32:
   2956 ; SSE2:       # %bb.0:
   2957 ; SSE2-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm3
   2958 ; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [255,255,255,255]
   2959 ; SSE2-NEXT:    pand %xmm8, %xmm3
   2960 ; SSE2-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm2
   2961 ; SSE2-NEXT:    pand %xmm8, %xmm2
   2962 ; SSE2-NEXT:    packuswb %xmm3, %xmm2
   2963 ; SSE2-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm1
   2964 ; SSE2-NEXT:    pand %xmm8, %xmm1
   2965 ; SSE2-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm0
   2966 ; SSE2-NEXT:    pand %xmm8, %xmm0
   2967 ; SSE2-NEXT:    packuswb %xmm1, %xmm0
   2968 ; SSE2-NEXT:    packuswb %xmm2, %xmm0
   2969 ; SSE2-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm7
   2970 ; SSE2-NEXT:    pand %xmm8, %xmm7
   2971 ; SSE2-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm6
   2972 ; SSE2-NEXT:    pand %xmm8, %xmm6
   2973 ; SSE2-NEXT:    packuswb %xmm7, %xmm6
   2974 ; SSE2-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm5
   2975 ; SSE2-NEXT:    pand %xmm8, %xmm5
   2976 ; SSE2-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm4
   2977 ; SSE2-NEXT:    pand %xmm8, %xmm4
   2978 ; SSE2-NEXT:    packuswb %xmm5, %xmm4
   2979 ; SSE2-NEXT:    packuswb %xmm6, %xmm4
   2980 ; SSE2-NEXT:    movdqa %xmm4, -{{[0-9]+}}(%rsp)
   2981 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   2982 ; SSE2-NEXT:    andl $1, %eax
   2983 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   2984 ; SSE2-NEXT:    andl $1, %ecx
   2985 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   2986 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   2987 ; SSE2-NEXT:    andl $1, %ecx
   2988 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   2989 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   2990 ; SSE2-NEXT:    andl $1, %ecx
   2991 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   2992 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   2993 ; SSE2-NEXT:    andl $1, %ecx
   2994 ; SSE2-NEXT:    shll $4, %ecx
   2995 ; SSE2-NEXT:    orl %eax, %ecx
   2996 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   2997 ; SSE2-NEXT:    andl $1, %eax
   2998 ; SSE2-NEXT:    shll $5, %eax
   2999 ; SSE2-NEXT:    orl %ecx, %eax
   3000 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3001 ; SSE2-NEXT:    andl $1, %ecx
   3002 ; SSE2-NEXT:    shll $6, %ecx
   3003 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3004 ; SSE2-NEXT:    andl $1, %edx
   3005 ; SSE2-NEXT:    shll $7, %edx
   3006 ; SSE2-NEXT:    orl %ecx, %edx
   3007 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3008 ; SSE2-NEXT:    andl $1, %ecx
   3009 ; SSE2-NEXT:    shll $8, %ecx
   3010 ; SSE2-NEXT:    orl %edx, %ecx
   3011 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3012 ; SSE2-NEXT:    andl $1, %edx
   3013 ; SSE2-NEXT:    shll $9, %edx
   3014 ; SSE2-NEXT:    orl %ecx, %edx
   3015 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3016 ; SSE2-NEXT:    andl $1, %ecx
   3017 ; SSE2-NEXT:    shll $10, %ecx
   3018 ; SSE2-NEXT:    orl %edx, %ecx
   3019 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3020 ; SSE2-NEXT:    andl $1, %edx
   3021 ; SSE2-NEXT:    shll $11, %edx
   3022 ; SSE2-NEXT:    orl %ecx, %edx
   3023 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3024 ; SSE2-NEXT:    andl $1, %ecx
   3025 ; SSE2-NEXT:    shll $12, %ecx
   3026 ; SSE2-NEXT:    orl %edx, %ecx
   3027 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3028 ; SSE2-NEXT:    andl $1, %edx
   3029 ; SSE2-NEXT:    shll $13, %edx
   3030 ; SSE2-NEXT:    orl %ecx, %edx
   3031 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3032 ; SSE2-NEXT:    andl $1, %ecx
   3033 ; SSE2-NEXT:    shll $14, %ecx
   3034 ; SSE2-NEXT:    orl %edx, %ecx
   3035 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3036 ; SSE2-NEXT:    shll $15, %edx
   3037 ; SSE2-NEXT:    orl %ecx, %edx
   3038 ; SSE2-NEXT:    orl %eax, %edx
   3039 ; SSE2-NEXT:    movw %dx, 2(%rdi)
   3040 ; SSE2-NEXT:    movdqa %xmm0, -{{[0-9]+}}(%rsp)
   3041 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   3042 ; SSE2-NEXT:    andl $1, %eax
   3043 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3044 ; SSE2-NEXT:    andl $1, %ecx
   3045 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   3046 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3047 ; SSE2-NEXT:    andl $1, %ecx
   3048 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   3049 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3050 ; SSE2-NEXT:    andl $1, %ecx
   3051 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   3052 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3053 ; SSE2-NEXT:    andl $1, %ecx
   3054 ; SSE2-NEXT:    shll $4, %ecx
   3055 ; SSE2-NEXT:    orl %eax, %ecx
   3056 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   3057 ; SSE2-NEXT:    andl $1, %eax
   3058 ; SSE2-NEXT:    shll $5, %eax
   3059 ; SSE2-NEXT:    orl %ecx, %eax
   3060 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3061 ; SSE2-NEXT:    andl $1, %ecx
   3062 ; SSE2-NEXT:    shll $6, %ecx
   3063 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3064 ; SSE2-NEXT:    andl $1, %edx
   3065 ; SSE2-NEXT:    shll $7, %edx
   3066 ; SSE2-NEXT:    orl %ecx, %edx
   3067 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3068 ; SSE2-NEXT:    andl $1, %ecx
   3069 ; SSE2-NEXT:    shll $8, %ecx
   3070 ; SSE2-NEXT:    orl %edx, %ecx
   3071 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3072 ; SSE2-NEXT:    andl $1, %edx
   3073 ; SSE2-NEXT:    shll $9, %edx
   3074 ; SSE2-NEXT:    orl %ecx, %edx
   3075 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3076 ; SSE2-NEXT:    andl $1, %ecx
   3077 ; SSE2-NEXT:    shll $10, %ecx
   3078 ; SSE2-NEXT:    orl %edx, %ecx
   3079 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3080 ; SSE2-NEXT:    andl $1, %edx
   3081 ; SSE2-NEXT:    shll $11, %edx
   3082 ; SSE2-NEXT:    orl %ecx, %edx
   3083 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3084 ; SSE2-NEXT:    andl $1, %ecx
   3085 ; SSE2-NEXT:    shll $12, %ecx
   3086 ; SSE2-NEXT:    orl %edx, %ecx
   3087 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3088 ; SSE2-NEXT:    andl $1, %edx
   3089 ; SSE2-NEXT:    shll $13, %edx
   3090 ; SSE2-NEXT:    orl %ecx, %edx
   3091 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3092 ; SSE2-NEXT:    andl $1, %ecx
   3093 ; SSE2-NEXT:    shll $14, %ecx
   3094 ; SSE2-NEXT:    orl %edx, %ecx
   3095 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3096 ; SSE2-NEXT:    shll $15, %edx
   3097 ; SSE2-NEXT:    orl %ecx, %edx
   3098 ; SSE2-NEXT:    orl %eax, %edx
   3099 ; SSE2-NEXT:    movw %dx, (%rdi)
   3100 ; SSE2-NEXT:    movq %rdi, %rax
   3101 ; SSE2-NEXT:    retq
   3102 ;
   3103 ; SSE42-LABEL: test_cmp_v32i32:
   3104 ; SSE42:       # %bb.0:
   3105 ; SSE42-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm3
   3106 ; SSE42-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm2
   3107 ; SSE42-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm1
   3108 ; SSE42-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm0
   3109 ; SSE42-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm7
   3110 ; SSE42-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm6
   3111 ; SSE42-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm5
   3112 ; SSE42-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm4
   3113 ; SSE42-NEXT:    pextrb $4, %xmm4, %eax
   3114 ; SSE42-NEXT:    andl $1, %eax
   3115 ; SSE42-NEXT:    pextrb $0, %xmm4, %ecx
   3116 ; SSE42-NEXT:    andl $1, %ecx
   3117 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
   3118 ; SSE42-NEXT:    pextrb $8, %xmm4, %ecx
   3119 ; SSE42-NEXT:    andl $1, %ecx
   3120 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
   3121 ; SSE42-NEXT:    pextrb $12, %xmm4, %ecx
   3122 ; SSE42-NEXT:    andl $1, %ecx
   3123 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
   3124 ; SSE42-NEXT:    pextrb $0, %xmm5, %ecx
   3125 ; SSE42-NEXT:    andl $1, %ecx
   3126 ; SSE42-NEXT:    shll $4, %ecx
   3127 ; SSE42-NEXT:    orl %eax, %ecx
   3128 ; SSE42-NEXT:    pextrb $4, %xmm5, %eax
   3129 ; SSE42-NEXT:    andl $1, %eax
   3130 ; SSE42-NEXT:    shll $5, %eax
   3131 ; SSE42-NEXT:    orl %ecx, %eax
   3132 ; SSE42-NEXT:    pextrb $8, %xmm5, %ecx
   3133 ; SSE42-NEXT:    andl $1, %ecx
   3134 ; SSE42-NEXT:    shll $6, %ecx
   3135 ; SSE42-NEXT:    pextrb $12, %xmm5, %edx
   3136 ; SSE42-NEXT:    andl $1, %edx
   3137 ; SSE42-NEXT:    shll $7, %edx
   3138 ; SSE42-NEXT:    orl %ecx, %edx
   3139 ; SSE42-NEXT:    pextrb $0, %xmm6, %ecx
   3140 ; SSE42-NEXT:    andl $1, %ecx
   3141 ; SSE42-NEXT:    shll $8, %ecx
   3142 ; SSE42-NEXT:    orl %edx, %ecx
   3143 ; SSE42-NEXT:    pextrb $4, %xmm6, %edx
   3144 ; SSE42-NEXT:    andl $1, %edx
   3145 ; SSE42-NEXT:    shll $9, %edx
   3146 ; SSE42-NEXT:    orl %ecx, %edx
   3147 ; SSE42-NEXT:    pextrb $8, %xmm6, %ecx
   3148 ; SSE42-NEXT:    andl $1, %ecx
   3149 ; SSE42-NEXT:    shll $10, %ecx
   3150 ; SSE42-NEXT:    orl %edx, %ecx
   3151 ; SSE42-NEXT:    pextrb $12, %xmm6, %edx
   3152 ; SSE42-NEXT:    andl $1, %edx
   3153 ; SSE42-NEXT:    shll $11, %edx
   3154 ; SSE42-NEXT:    orl %ecx, %edx
   3155 ; SSE42-NEXT:    pextrb $0, %xmm7, %ecx
   3156 ; SSE42-NEXT:    andl $1, %ecx
   3157 ; SSE42-NEXT:    shll $12, %ecx
   3158 ; SSE42-NEXT:    orl %edx, %ecx
   3159 ; SSE42-NEXT:    pextrb $4, %xmm7, %edx
   3160 ; SSE42-NEXT:    andl $1, %edx
   3161 ; SSE42-NEXT:    shll $13, %edx
   3162 ; SSE42-NEXT:    orl %ecx, %edx
   3163 ; SSE42-NEXT:    pextrb $8, %xmm7, %ecx
   3164 ; SSE42-NEXT:    andl $1, %ecx
   3165 ; SSE42-NEXT:    shll $14, %ecx
   3166 ; SSE42-NEXT:    orl %edx, %ecx
   3167 ; SSE42-NEXT:    pextrb $12, %xmm7, %edx
   3168 ; SSE42-NEXT:    shll $15, %edx
   3169 ; SSE42-NEXT:    orl %ecx, %edx
   3170 ; SSE42-NEXT:    orl %eax, %edx
   3171 ; SSE42-NEXT:    movw %dx, 2(%rdi)
   3172 ; SSE42-NEXT:    pextrb $4, %xmm0, %eax
   3173 ; SSE42-NEXT:    andl $1, %eax
   3174 ; SSE42-NEXT:    pextrb $0, %xmm0, %ecx
   3175 ; SSE42-NEXT:    andl $1, %ecx
   3176 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
   3177 ; SSE42-NEXT:    pextrb $8, %xmm0, %ecx
   3178 ; SSE42-NEXT:    andl $1, %ecx
   3179 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
   3180 ; SSE42-NEXT:    pextrb $12, %xmm0, %ecx
   3181 ; SSE42-NEXT:    andl $1, %ecx
   3182 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
   3183 ; SSE42-NEXT:    pextrb $0, %xmm1, %ecx
   3184 ; SSE42-NEXT:    andl $1, %ecx
   3185 ; SSE42-NEXT:    shll $4, %ecx
   3186 ; SSE42-NEXT:    orl %eax, %ecx
   3187 ; SSE42-NEXT:    pextrb $4, %xmm1, %eax
   3188 ; SSE42-NEXT:    andl $1, %eax
   3189 ; SSE42-NEXT:    shll $5, %eax
   3190 ; SSE42-NEXT:    orl %ecx, %eax
   3191 ; SSE42-NEXT:    pextrb $8, %xmm1, %ecx
   3192 ; SSE42-NEXT:    andl $1, %ecx
   3193 ; SSE42-NEXT:    shll $6, %ecx
   3194 ; SSE42-NEXT:    pextrb $12, %xmm1, %edx
   3195 ; SSE42-NEXT:    andl $1, %edx
   3196 ; SSE42-NEXT:    shll $7, %edx
   3197 ; SSE42-NEXT:    orl %ecx, %edx
   3198 ; SSE42-NEXT:    pextrb $0, %xmm2, %ecx
   3199 ; SSE42-NEXT:    andl $1, %ecx
   3200 ; SSE42-NEXT:    shll $8, %ecx
   3201 ; SSE42-NEXT:    orl %edx, %ecx
   3202 ; SSE42-NEXT:    pextrb $4, %xmm2, %edx
   3203 ; SSE42-NEXT:    andl $1, %edx
   3204 ; SSE42-NEXT:    shll $9, %edx
   3205 ; SSE42-NEXT:    orl %ecx, %edx
   3206 ; SSE42-NEXT:    pextrb $8, %xmm2, %ecx
   3207 ; SSE42-NEXT:    andl $1, %ecx
   3208 ; SSE42-NEXT:    shll $10, %ecx
   3209 ; SSE42-NEXT:    orl %edx, %ecx
   3210 ; SSE42-NEXT:    pextrb $12, %xmm2, %edx
   3211 ; SSE42-NEXT:    andl $1, %edx
   3212 ; SSE42-NEXT:    shll $11, %edx
   3213 ; SSE42-NEXT:    orl %ecx, %edx
   3214 ; SSE42-NEXT:    pextrb $0, %xmm3, %ecx
   3215 ; SSE42-NEXT:    andl $1, %ecx
   3216 ; SSE42-NEXT:    shll $12, %ecx
   3217 ; SSE42-NEXT:    orl %edx, %ecx
   3218 ; SSE42-NEXT:    pextrb $4, %xmm3, %edx
   3219 ; SSE42-NEXT:    andl $1, %edx
   3220 ; SSE42-NEXT:    shll $13, %edx
   3221 ; SSE42-NEXT:    orl %ecx, %edx
   3222 ; SSE42-NEXT:    pextrb $8, %xmm3, %ecx
   3223 ; SSE42-NEXT:    andl $1, %ecx
   3224 ; SSE42-NEXT:    shll $14, %ecx
   3225 ; SSE42-NEXT:    orl %edx, %ecx
   3226 ; SSE42-NEXT:    pextrb $12, %xmm3, %edx
   3227 ; SSE42-NEXT:    shll $15, %edx
   3228 ; SSE42-NEXT:    orl %ecx, %edx
   3229 ; SSE42-NEXT:    orl %eax, %edx
   3230 ; SSE42-NEXT:    movw %dx, (%rdi)
   3231 ; SSE42-NEXT:    movq %rdi, %rax
   3232 ; SSE42-NEXT:    retq
   3233 ;
   3234 ; AVX1-LABEL: test_cmp_v32i32:
   3235 ; AVX1:       # %bb.0:
   3236 ; AVX1-NEXT:    vextractf128 $1, %ymm7, %xmm8
   3237 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm9
   3238 ; AVX1-NEXT:    vpcmpgtd %xmm8, %xmm9, %xmm8
   3239 ; AVX1-NEXT:    vpcmpgtd %xmm7, %xmm3, %xmm3
   3240 ; AVX1-NEXT:    vpackssdw %xmm8, %xmm3, %xmm8
   3241 ; AVX1-NEXT:    vextractf128 $1, %ymm6, %xmm7
   3242 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm3
   3243 ; AVX1-NEXT:    vpcmpgtd %xmm7, %xmm3, %xmm3
   3244 ; AVX1-NEXT:    vpcmpgtd %xmm6, %xmm2, %xmm2
   3245 ; AVX1-NEXT:    vpackssdw %xmm3, %xmm2, %xmm2
   3246 ; AVX1-NEXT:    vpacksswb %xmm8, %xmm2, %xmm2
   3247 ; AVX1-NEXT:    vextractf128 $1, %ymm5, %xmm3
   3248 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm6
   3249 ; AVX1-NEXT:    vpcmpgtd %xmm3, %xmm6, %xmm3
   3250 ; AVX1-NEXT:    vpcmpgtd %xmm5, %xmm1, %xmm1
   3251 ; AVX1-NEXT:    vpackssdw %xmm3, %xmm1, %xmm1
   3252 ; AVX1-NEXT:    vextractf128 $1, %ymm4, %xmm3
   3253 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm5
   3254 ; AVX1-NEXT:    vpcmpgtd %xmm3, %xmm5, %xmm3
   3255 ; AVX1-NEXT:    vpcmpgtd %xmm4, %xmm0, %xmm0
   3256 ; AVX1-NEXT:    vpackssdw %xmm3, %xmm0, %xmm0
   3257 ; AVX1-NEXT:    vpacksswb %xmm1, %xmm0, %xmm0
   3258 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
   3259 ; AVX1-NEXT:    retq
   3260 ;
   3261 ; AVX2-LABEL: test_cmp_v32i32:
   3262 ; AVX2:       # %bb.0:
   3263 ; AVX2-NEXT:    vpcmpgtd %ymm7, %ymm3, %ymm3
   3264 ; AVX2-NEXT:    vpcmpgtd %ymm6, %ymm2, %ymm2
   3265 ; AVX2-NEXT:    vpackssdw %ymm3, %ymm2, %ymm2
   3266 ; AVX2-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,2,1,3]
   3267 ; AVX2-NEXT:    vpcmpgtd %ymm5, %ymm1, %ymm1
   3268 ; AVX2-NEXT:    vpcmpgtd %ymm4, %ymm0, %ymm0
   3269 ; AVX2-NEXT:    vpackssdw %ymm1, %ymm0, %ymm0
   3270 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]
   3271 ; AVX2-NEXT:    vpacksswb %ymm2, %ymm0, %ymm0
   3272 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]
   3273 ; AVX2-NEXT:    retq
   3274 ;
   3275 ; AVX512F-LABEL: test_cmp_v32i32:
   3276 ; AVX512F:       # %bb.0:
   3277 ; AVX512F-NEXT:    vpcmpgtd %zmm3, %zmm1, %k1
   3278 ; AVX512F-NEXT:    vpcmpgtd %zmm2, %zmm0, %k2
   3279 ; AVX512F-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k2} {z}
   3280 ; AVX512F-NEXT:    vpmovdb %zmm0, %xmm0
   3281 ; AVX512F-NEXT:    vpternlogd $255, %zmm1, %zmm1, %zmm1 {%k1} {z}
   3282 ; AVX512F-NEXT:    vpmovdb %zmm1, %xmm1
   3283 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   3284 ; AVX512F-NEXT:    retq
   3285 ;
   3286 ; AVX512DQ-LABEL: test_cmp_v32i32:
   3287 ; AVX512DQ:       # %bb.0:
   3288 ; AVX512DQ-NEXT:    vpcmpgtd %zmm3, %zmm1, %k0
   3289 ; AVX512DQ-NEXT:    vpcmpgtd %zmm2, %zmm0, %k1
   3290 ; AVX512DQ-NEXT:    vpmovm2d %k1, %zmm0
   3291 ; AVX512DQ-NEXT:    vpmovdb %zmm0, %xmm0
   3292 ; AVX512DQ-NEXT:    vpmovm2d %k0, %zmm1
   3293 ; AVX512DQ-NEXT:    vpmovdb %zmm1, %xmm1
   3294 ; AVX512DQ-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   3295 ; AVX512DQ-NEXT:    retq
   3296 ;
   3297 ; AVX512BW-LABEL: test_cmp_v32i32:
   3298 ; AVX512BW:       # %bb.0:
   3299 ; AVX512BW-NEXT:    vpcmpgtd %zmm2, %zmm0, %k0
   3300 ; AVX512BW-NEXT:    vpcmpgtd %zmm3, %zmm1, %k1
   3301 ; AVX512BW-NEXT:    kunpckwd %k0, %k1, %k0
   3302 ; AVX512BW-NEXT:    vpmovm2b %k0, %zmm0
   3303 ; AVX512BW-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
   3304 ; AVX512BW-NEXT:    retq
   3305   %1 = icmp sgt <32 x i32> %a0, %a1
   3306   ret <32 x i1> %1
   3307 }
   3308 
   3309 define <64 x i1> @test_cmp_v64i16(<64 x i16> %a0, <64 x i16> %a1) nounwind {
   3310 ; SSE2-LABEL: test_cmp_v64i16:
   3311 ; SSE2:       # %bb.0:
   3312 ; SSE2-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm1
   3313 ; SSE2-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm0
   3314 ; SSE2-NEXT:    packsswb %xmm1, %xmm0
   3315 ; SSE2-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm3
   3316 ; SSE2-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm2
   3317 ; SSE2-NEXT:    packsswb %xmm3, %xmm2
   3318 ; SSE2-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm5
   3319 ; SSE2-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm4
   3320 ; SSE2-NEXT:    packsswb %xmm5, %xmm4
   3321 ; SSE2-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm7
   3322 ; SSE2-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm6
   3323 ; SSE2-NEXT:    packsswb %xmm7, %xmm6
   3324 ; SSE2-NEXT:    movdqa %xmm6, -{{[0-9]+}}(%rsp)
   3325 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   3326 ; SSE2-NEXT:    andl $1, %eax
   3327 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3328 ; SSE2-NEXT:    andl $1, %ecx
   3329 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   3330 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3331 ; SSE2-NEXT:    andl $1, %ecx
   3332 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   3333 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3334 ; SSE2-NEXT:    andl $1, %ecx
   3335 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   3336 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3337 ; SSE2-NEXT:    andl $1, %ecx
   3338 ; SSE2-NEXT:    shll $4, %ecx
   3339 ; SSE2-NEXT:    orl %eax, %ecx
   3340 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   3341 ; SSE2-NEXT:    andl $1, %eax
   3342 ; SSE2-NEXT:    shll $5, %eax
   3343 ; SSE2-NEXT:    orl %ecx, %eax
   3344 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3345 ; SSE2-NEXT:    andl $1, %ecx
   3346 ; SSE2-NEXT:    shll $6, %ecx
   3347 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3348 ; SSE2-NEXT:    andl $1, %edx
   3349 ; SSE2-NEXT:    shll $7, %edx
   3350 ; SSE2-NEXT:    orl %ecx, %edx
   3351 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3352 ; SSE2-NEXT:    andl $1, %ecx
   3353 ; SSE2-NEXT:    shll $8, %ecx
   3354 ; SSE2-NEXT:    orl %edx, %ecx
   3355 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3356 ; SSE2-NEXT:    andl $1, %edx
   3357 ; SSE2-NEXT:    shll $9, %edx
   3358 ; SSE2-NEXT:    orl %ecx, %edx
   3359 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3360 ; SSE2-NEXT:    andl $1, %ecx
   3361 ; SSE2-NEXT:    shll $10, %ecx
   3362 ; SSE2-NEXT:    orl %edx, %ecx
   3363 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3364 ; SSE2-NEXT:    andl $1, %edx
   3365 ; SSE2-NEXT:    shll $11, %edx
   3366 ; SSE2-NEXT:    orl %ecx, %edx
   3367 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3368 ; SSE2-NEXT:    andl $1, %ecx
   3369 ; SSE2-NEXT:    shll $12, %ecx
   3370 ; SSE2-NEXT:    orl %edx, %ecx
   3371 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3372 ; SSE2-NEXT:    andl $1, %edx
   3373 ; SSE2-NEXT:    shll $13, %edx
   3374 ; SSE2-NEXT:    orl %ecx, %edx
   3375 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3376 ; SSE2-NEXT:    andl $1, %ecx
   3377 ; SSE2-NEXT:    shll $14, %ecx
   3378 ; SSE2-NEXT:    orl %edx, %ecx
   3379 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3380 ; SSE2-NEXT:    shll $15, %edx
   3381 ; SSE2-NEXT:    orl %ecx, %edx
   3382 ; SSE2-NEXT:    orl %eax, %edx
   3383 ; SSE2-NEXT:    movw %dx, 6(%rdi)
   3384 ; SSE2-NEXT:    movdqa %xmm4, -{{[0-9]+}}(%rsp)
   3385 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   3386 ; SSE2-NEXT:    andl $1, %eax
   3387 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3388 ; SSE2-NEXT:    andl $1, %ecx
   3389 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   3390 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3391 ; SSE2-NEXT:    andl $1, %ecx
   3392 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   3393 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3394 ; SSE2-NEXT:    andl $1, %ecx
   3395 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   3396 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3397 ; SSE2-NEXT:    andl $1, %ecx
   3398 ; SSE2-NEXT:    shll $4, %ecx
   3399 ; SSE2-NEXT:    orl %eax, %ecx
   3400 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   3401 ; SSE2-NEXT:    andl $1, %eax
   3402 ; SSE2-NEXT:    shll $5, %eax
   3403 ; SSE2-NEXT:    orl %ecx, %eax
   3404 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3405 ; SSE2-NEXT:    andl $1, %ecx
   3406 ; SSE2-NEXT:    shll $6, %ecx
   3407 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3408 ; SSE2-NEXT:    andl $1, %edx
   3409 ; SSE2-NEXT:    shll $7, %edx
   3410 ; SSE2-NEXT:    orl %ecx, %edx
   3411 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3412 ; SSE2-NEXT:    andl $1, %ecx
   3413 ; SSE2-NEXT:    shll $8, %ecx
   3414 ; SSE2-NEXT:    orl %edx, %ecx
   3415 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3416 ; SSE2-NEXT:    andl $1, %edx
   3417 ; SSE2-NEXT:    shll $9, %edx
   3418 ; SSE2-NEXT:    orl %ecx, %edx
   3419 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3420 ; SSE2-NEXT:    andl $1, %ecx
   3421 ; SSE2-NEXT:    shll $10, %ecx
   3422 ; SSE2-NEXT:    orl %edx, %ecx
   3423 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3424 ; SSE2-NEXT:    andl $1, %edx
   3425 ; SSE2-NEXT:    shll $11, %edx
   3426 ; SSE2-NEXT:    orl %ecx, %edx
   3427 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3428 ; SSE2-NEXT:    andl $1, %ecx
   3429 ; SSE2-NEXT:    shll $12, %ecx
   3430 ; SSE2-NEXT:    orl %edx, %ecx
   3431 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3432 ; SSE2-NEXT:    andl $1, %edx
   3433 ; SSE2-NEXT:    shll $13, %edx
   3434 ; SSE2-NEXT:    orl %ecx, %edx
   3435 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3436 ; SSE2-NEXT:    andl $1, %ecx
   3437 ; SSE2-NEXT:    shll $14, %ecx
   3438 ; SSE2-NEXT:    orl %edx, %ecx
   3439 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3440 ; SSE2-NEXT:    shll $15, %edx
   3441 ; SSE2-NEXT:    orl %ecx, %edx
   3442 ; SSE2-NEXT:    orl %eax, %edx
   3443 ; SSE2-NEXT:    movw %dx, 4(%rdi)
   3444 ; SSE2-NEXT:    movdqa %xmm2, -{{[0-9]+}}(%rsp)
   3445 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   3446 ; SSE2-NEXT:    andl $1, %eax
   3447 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3448 ; SSE2-NEXT:    andl $1, %ecx
   3449 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   3450 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3451 ; SSE2-NEXT:    andl $1, %ecx
   3452 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   3453 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3454 ; SSE2-NEXT:    andl $1, %ecx
   3455 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   3456 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3457 ; SSE2-NEXT:    andl $1, %ecx
   3458 ; SSE2-NEXT:    shll $4, %ecx
   3459 ; SSE2-NEXT:    orl %eax, %ecx
   3460 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   3461 ; SSE2-NEXT:    andl $1, %eax
   3462 ; SSE2-NEXT:    shll $5, %eax
   3463 ; SSE2-NEXT:    orl %ecx, %eax
   3464 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3465 ; SSE2-NEXT:    andl $1, %ecx
   3466 ; SSE2-NEXT:    shll $6, %ecx
   3467 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3468 ; SSE2-NEXT:    andl $1, %edx
   3469 ; SSE2-NEXT:    shll $7, %edx
   3470 ; SSE2-NEXT:    orl %ecx, %edx
   3471 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3472 ; SSE2-NEXT:    andl $1, %ecx
   3473 ; SSE2-NEXT:    shll $8, %ecx
   3474 ; SSE2-NEXT:    orl %edx, %ecx
   3475 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3476 ; SSE2-NEXT:    andl $1, %edx
   3477 ; SSE2-NEXT:    shll $9, %edx
   3478 ; SSE2-NEXT:    orl %ecx, %edx
   3479 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3480 ; SSE2-NEXT:    andl $1, %ecx
   3481 ; SSE2-NEXT:    shll $10, %ecx
   3482 ; SSE2-NEXT:    orl %edx, %ecx
   3483 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3484 ; SSE2-NEXT:    andl $1, %edx
   3485 ; SSE2-NEXT:    shll $11, %edx
   3486 ; SSE2-NEXT:    orl %ecx, %edx
   3487 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3488 ; SSE2-NEXT:    andl $1, %ecx
   3489 ; SSE2-NEXT:    shll $12, %ecx
   3490 ; SSE2-NEXT:    orl %edx, %ecx
   3491 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3492 ; SSE2-NEXT:    andl $1, %edx
   3493 ; SSE2-NEXT:    shll $13, %edx
   3494 ; SSE2-NEXT:    orl %ecx, %edx
   3495 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3496 ; SSE2-NEXT:    andl $1, %ecx
   3497 ; SSE2-NEXT:    shll $14, %ecx
   3498 ; SSE2-NEXT:    orl %edx, %ecx
   3499 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3500 ; SSE2-NEXT:    shll $15, %edx
   3501 ; SSE2-NEXT:    orl %ecx, %edx
   3502 ; SSE2-NEXT:    orl %eax, %edx
   3503 ; SSE2-NEXT:    movw %dx, 2(%rdi)
   3504 ; SSE2-NEXT:    movdqa %xmm0, -{{[0-9]+}}(%rsp)
   3505 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   3506 ; SSE2-NEXT:    andl $1, %eax
   3507 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3508 ; SSE2-NEXT:    andl $1, %ecx
   3509 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   3510 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3511 ; SSE2-NEXT:    andl $1, %ecx
   3512 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   3513 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3514 ; SSE2-NEXT:    andl $1, %ecx
   3515 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   3516 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3517 ; SSE2-NEXT:    andl $1, %ecx
   3518 ; SSE2-NEXT:    shll $4, %ecx
   3519 ; SSE2-NEXT:    orl %eax, %ecx
   3520 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   3521 ; SSE2-NEXT:    andl $1, %eax
   3522 ; SSE2-NEXT:    shll $5, %eax
   3523 ; SSE2-NEXT:    orl %ecx, %eax
   3524 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3525 ; SSE2-NEXT:    andl $1, %ecx
   3526 ; SSE2-NEXT:    shll $6, %ecx
   3527 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3528 ; SSE2-NEXT:    andl $1, %edx
   3529 ; SSE2-NEXT:    shll $7, %edx
   3530 ; SSE2-NEXT:    orl %ecx, %edx
   3531 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3532 ; SSE2-NEXT:    andl $1, %ecx
   3533 ; SSE2-NEXT:    shll $8, %ecx
   3534 ; SSE2-NEXT:    orl %edx, %ecx
   3535 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3536 ; SSE2-NEXT:    andl $1, %edx
   3537 ; SSE2-NEXT:    shll $9, %edx
   3538 ; SSE2-NEXT:    orl %ecx, %edx
   3539 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3540 ; SSE2-NEXT:    andl $1, %ecx
   3541 ; SSE2-NEXT:    shll $10, %ecx
   3542 ; SSE2-NEXT:    orl %edx, %ecx
   3543 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3544 ; SSE2-NEXT:    andl $1, %edx
   3545 ; SSE2-NEXT:    shll $11, %edx
   3546 ; SSE2-NEXT:    orl %ecx, %edx
   3547 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3548 ; SSE2-NEXT:    andl $1, %ecx
   3549 ; SSE2-NEXT:    shll $12, %ecx
   3550 ; SSE2-NEXT:    orl %edx, %ecx
   3551 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3552 ; SSE2-NEXT:    andl $1, %edx
   3553 ; SSE2-NEXT:    shll $13, %edx
   3554 ; SSE2-NEXT:    orl %ecx, %edx
   3555 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   3556 ; SSE2-NEXT:    andl $1, %ecx
   3557 ; SSE2-NEXT:    shll $14, %ecx
   3558 ; SSE2-NEXT:    orl %edx, %ecx
   3559 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   3560 ; SSE2-NEXT:    shll $15, %edx
   3561 ; SSE2-NEXT:    orl %ecx, %edx
   3562 ; SSE2-NEXT:    orl %eax, %edx
   3563 ; SSE2-NEXT:    movw %dx, (%rdi)
   3564 ; SSE2-NEXT:    movq %rdi, %rax
   3565 ; SSE2-NEXT:    retq
   3566 ;
   3567 ; SSE42-LABEL: test_cmp_v64i16:
   3568 ; SSE42:       # %bb.0:
   3569 ; SSE42-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm1
   3570 ; SSE42-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm0
   3571 ; SSE42-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm3
   3572 ; SSE42-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm2
   3573 ; SSE42-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm5
   3574 ; SSE42-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm4
   3575 ; SSE42-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm7
   3576 ; SSE42-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm6
   3577 ; SSE42-NEXT:    pextrb $2, %xmm6, %eax
   3578 ; SSE42-NEXT:    andl $1, %eax
   3579 ; SSE42-NEXT:    pextrb $0, %xmm6, %ecx
   3580 ; SSE42-NEXT:    andl $1, %ecx
   3581 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
   3582 ; SSE42-NEXT:    pextrb $4, %xmm6, %ecx
   3583 ; SSE42-NEXT:    andl $1, %ecx
   3584 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
   3585 ; SSE42-NEXT:    pextrb $6, %xmm6, %ecx
   3586 ; SSE42-NEXT:    andl $1, %ecx
   3587 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
   3588 ; SSE42-NEXT:    pextrb $8, %xmm6, %ecx
   3589 ; SSE42-NEXT:    andl $1, %ecx
   3590 ; SSE42-NEXT:    shll $4, %ecx
   3591 ; SSE42-NEXT:    orl %eax, %ecx
   3592 ; SSE42-NEXT:    pextrb $10, %xmm6, %eax
   3593 ; SSE42-NEXT:    andl $1, %eax
   3594 ; SSE42-NEXT:    shll $5, %eax
   3595 ; SSE42-NEXT:    orl %ecx, %eax
   3596 ; SSE42-NEXT:    pextrb $12, %xmm6, %ecx
   3597 ; SSE42-NEXT:    andl $1, %ecx
   3598 ; SSE42-NEXT:    shll $6, %ecx
   3599 ; SSE42-NEXT:    pextrb $14, %xmm6, %edx
   3600 ; SSE42-NEXT:    andl $1, %edx
   3601 ; SSE42-NEXT:    shll $7, %edx
   3602 ; SSE42-NEXT:    orl %ecx, %edx
   3603 ; SSE42-NEXT:    pextrb $0, %xmm7, %ecx
   3604 ; SSE42-NEXT:    andl $1, %ecx
   3605 ; SSE42-NEXT:    shll $8, %ecx
   3606 ; SSE42-NEXT:    orl %edx, %ecx
   3607 ; SSE42-NEXT:    pextrb $2, %xmm7, %edx
   3608 ; SSE42-NEXT:    andl $1, %edx
   3609 ; SSE42-NEXT:    shll $9, %edx
   3610 ; SSE42-NEXT:    orl %ecx, %edx
   3611 ; SSE42-NEXT:    pextrb $4, %xmm7, %ecx
   3612 ; SSE42-NEXT:    andl $1, %ecx
   3613 ; SSE42-NEXT:    shll $10, %ecx
   3614 ; SSE42-NEXT:    orl %edx, %ecx
   3615 ; SSE42-NEXT:    pextrb $6, %xmm7, %edx
   3616 ; SSE42-NEXT:    andl $1, %edx
   3617 ; SSE42-NEXT:    shll $11, %edx
   3618 ; SSE42-NEXT:    orl %ecx, %edx
   3619 ; SSE42-NEXT:    pextrb $8, %xmm7, %ecx
   3620 ; SSE42-NEXT:    andl $1, %ecx
   3621 ; SSE42-NEXT:    shll $12, %ecx
   3622 ; SSE42-NEXT:    orl %edx, %ecx
   3623 ; SSE42-NEXT:    pextrb $10, %xmm7, %edx
   3624 ; SSE42-NEXT:    andl $1, %edx
   3625 ; SSE42-NEXT:    shll $13, %edx
   3626 ; SSE42-NEXT:    orl %ecx, %edx
   3627 ; SSE42-NEXT:    pextrb $12, %xmm7, %ecx
   3628 ; SSE42-NEXT:    andl $1, %ecx
   3629 ; SSE42-NEXT:    shll $14, %ecx
   3630 ; SSE42-NEXT:    orl %edx, %ecx
   3631 ; SSE42-NEXT:    pextrb $14, %xmm7, %edx
   3632 ; SSE42-NEXT:    shll $15, %edx
   3633 ; SSE42-NEXT:    orl %ecx, %edx
   3634 ; SSE42-NEXT:    orl %eax, %edx
   3635 ; SSE42-NEXT:    movw %dx, 6(%rdi)
   3636 ; SSE42-NEXT:    pextrb $2, %xmm4, %eax
   3637 ; SSE42-NEXT:    andl $1, %eax
   3638 ; SSE42-NEXT:    pextrb $0, %xmm4, %ecx
   3639 ; SSE42-NEXT:    andl $1, %ecx
   3640 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
   3641 ; SSE42-NEXT:    pextrb $4, %xmm4, %ecx
   3642 ; SSE42-NEXT:    andl $1, %ecx
   3643 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
   3644 ; SSE42-NEXT:    pextrb $6, %xmm4, %ecx
   3645 ; SSE42-NEXT:    andl $1, %ecx
   3646 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
   3647 ; SSE42-NEXT:    pextrb $8, %xmm4, %ecx
   3648 ; SSE42-NEXT:    andl $1, %ecx
   3649 ; SSE42-NEXT:    shll $4, %ecx
   3650 ; SSE42-NEXT:    orl %eax, %ecx
   3651 ; SSE42-NEXT:    pextrb $10, %xmm4, %eax
   3652 ; SSE42-NEXT:    andl $1, %eax
   3653 ; SSE42-NEXT:    shll $5, %eax
   3654 ; SSE42-NEXT:    orl %ecx, %eax
   3655 ; SSE42-NEXT:    pextrb $12, %xmm4, %ecx
   3656 ; SSE42-NEXT:    andl $1, %ecx
   3657 ; SSE42-NEXT:    shll $6, %ecx
   3658 ; SSE42-NEXT:    pextrb $14, %xmm4, %edx
   3659 ; SSE42-NEXT:    andl $1, %edx
   3660 ; SSE42-NEXT:    shll $7, %edx
   3661 ; SSE42-NEXT:    orl %ecx, %edx
   3662 ; SSE42-NEXT:    pextrb $0, %xmm5, %ecx
   3663 ; SSE42-NEXT:    andl $1, %ecx
   3664 ; SSE42-NEXT:    shll $8, %ecx
   3665 ; SSE42-NEXT:    orl %edx, %ecx
   3666 ; SSE42-NEXT:    pextrb $2, %xmm5, %edx
   3667 ; SSE42-NEXT:    andl $1, %edx
   3668 ; SSE42-NEXT:    shll $9, %edx
   3669 ; SSE42-NEXT:    orl %ecx, %edx
   3670 ; SSE42-NEXT:    pextrb $4, %xmm5, %ecx
   3671 ; SSE42-NEXT:    andl $1, %ecx
   3672 ; SSE42-NEXT:    shll $10, %ecx
   3673 ; SSE42-NEXT:    orl %edx, %ecx
   3674 ; SSE42-NEXT:    pextrb $6, %xmm5, %edx
   3675 ; SSE42-NEXT:    andl $1, %edx
   3676 ; SSE42-NEXT:    shll $11, %edx
   3677 ; SSE42-NEXT:    orl %ecx, %edx
   3678 ; SSE42-NEXT:    pextrb $8, %xmm5, %ecx
   3679 ; SSE42-NEXT:    andl $1, %ecx
   3680 ; SSE42-NEXT:    shll $12, %ecx
   3681 ; SSE42-NEXT:    orl %edx, %ecx
   3682 ; SSE42-NEXT:    pextrb $10, %xmm5, %edx
   3683 ; SSE42-NEXT:    andl $1, %edx
   3684 ; SSE42-NEXT:    shll $13, %edx
   3685 ; SSE42-NEXT:    orl %ecx, %edx
   3686 ; SSE42-NEXT:    pextrb $12, %xmm5, %ecx
   3687 ; SSE42-NEXT:    andl $1, %ecx
   3688 ; SSE42-NEXT:    shll $14, %ecx
   3689 ; SSE42-NEXT:    orl %edx, %ecx
   3690 ; SSE42-NEXT:    pextrb $14, %xmm5, %edx
   3691 ; SSE42-NEXT:    shll $15, %edx
   3692 ; SSE42-NEXT:    orl %ecx, %edx
   3693 ; SSE42-NEXT:    orl %eax, %edx
   3694 ; SSE42-NEXT:    movw %dx, 4(%rdi)
   3695 ; SSE42-NEXT:    pextrb $2, %xmm2, %eax
   3696 ; SSE42-NEXT:    andl $1, %eax
   3697 ; SSE42-NEXT:    pextrb $0, %xmm2, %ecx
   3698 ; SSE42-NEXT:    andl $1, %ecx
   3699 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
   3700 ; SSE42-NEXT:    pextrb $4, %xmm2, %ecx
   3701 ; SSE42-NEXT:    andl $1, %ecx
   3702 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
   3703 ; SSE42-NEXT:    pextrb $6, %xmm2, %ecx
   3704 ; SSE42-NEXT:    andl $1, %ecx
   3705 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
   3706 ; SSE42-NEXT:    pextrb $8, %xmm2, %ecx
   3707 ; SSE42-NEXT:    andl $1, %ecx
   3708 ; SSE42-NEXT:    shll $4, %ecx
   3709 ; SSE42-NEXT:    orl %eax, %ecx
   3710 ; SSE42-NEXT:    pextrb $10, %xmm2, %eax
   3711 ; SSE42-NEXT:    andl $1, %eax
   3712 ; SSE42-NEXT:    shll $5, %eax
   3713 ; SSE42-NEXT:    orl %ecx, %eax
   3714 ; SSE42-NEXT:    pextrb $12, %xmm2, %ecx
   3715 ; SSE42-NEXT:    andl $1, %ecx
   3716 ; SSE42-NEXT:    shll $6, %ecx
   3717 ; SSE42-NEXT:    pextrb $14, %xmm2, %edx
   3718 ; SSE42-NEXT:    andl $1, %edx
   3719 ; SSE42-NEXT:    shll $7, %edx
   3720 ; SSE42-NEXT:    orl %ecx, %edx
   3721 ; SSE42-NEXT:    pextrb $0, %xmm3, %ecx
   3722 ; SSE42-NEXT:    andl $1, %ecx
   3723 ; SSE42-NEXT:    shll $8, %ecx
   3724 ; SSE42-NEXT:    orl %edx, %ecx
   3725 ; SSE42-NEXT:    pextrb $2, %xmm3, %edx
   3726 ; SSE42-NEXT:    andl $1, %edx
   3727 ; SSE42-NEXT:    shll $9, %edx
   3728 ; SSE42-NEXT:    orl %ecx, %edx
   3729 ; SSE42-NEXT:    pextrb $4, %xmm3, %ecx
   3730 ; SSE42-NEXT:    andl $1, %ecx
   3731 ; SSE42-NEXT:    shll $10, %ecx
   3732 ; SSE42-NEXT:    orl %edx, %ecx
   3733 ; SSE42-NEXT:    pextrb $6, %xmm3, %edx
   3734 ; SSE42-NEXT:    andl $1, %edx
   3735 ; SSE42-NEXT:    shll $11, %edx
   3736 ; SSE42-NEXT:    orl %ecx, %edx
   3737 ; SSE42-NEXT:    pextrb $8, %xmm3, %ecx
   3738 ; SSE42-NEXT:    andl $1, %ecx
   3739 ; SSE42-NEXT:    shll $12, %ecx
   3740 ; SSE42-NEXT:    orl %edx, %ecx
   3741 ; SSE42-NEXT:    pextrb $10, %xmm3, %edx
   3742 ; SSE42-NEXT:    andl $1, %edx
   3743 ; SSE42-NEXT:    shll $13, %edx
   3744 ; SSE42-NEXT:    orl %ecx, %edx
   3745 ; SSE42-NEXT:    pextrb $12, %xmm3, %ecx
   3746 ; SSE42-NEXT:    andl $1, %ecx
   3747 ; SSE42-NEXT:    shll $14, %ecx
   3748 ; SSE42-NEXT:    orl %edx, %ecx
   3749 ; SSE42-NEXT:    pextrb $14, %xmm3, %edx
   3750 ; SSE42-NEXT:    shll $15, %edx
   3751 ; SSE42-NEXT:    orl %ecx, %edx
   3752 ; SSE42-NEXT:    orl %eax, %edx
   3753 ; SSE42-NEXT:    movw %dx, 2(%rdi)
   3754 ; SSE42-NEXT:    pextrb $2, %xmm0, %eax
   3755 ; SSE42-NEXT:    andl $1, %eax
   3756 ; SSE42-NEXT:    pextrb $0, %xmm0, %ecx
   3757 ; SSE42-NEXT:    andl $1, %ecx
   3758 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
   3759 ; SSE42-NEXT:    pextrb $4, %xmm0, %ecx
   3760 ; SSE42-NEXT:    andl $1, %ecx
   3761 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
   3762 ; SSE42-NEXT:    pextrb $6, %xmm0, %ecx
   3763 ; SSE42-NEXT:    andl $1, %ecx
   3764 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
   3765 ; SSE42-NEXT:    pextrb $8, %xmm0, %ecx
   3766 ; SSE42-NEXT:    andl $1, %ecx
   3767 ; SSE42-NEXT:    shll $4, %ecx
   3768 ; SSE42-NEXT:    orl %eax, %ecx
   3769 ; SSE42-NEXT:    pextrb $10, %xmm0, %eax
   3770 ; SSE42-NEXT:    andl $1, %eax
   3771 ; SSE42-NEXT:    shll $5, %eax
   3772 ; SSE42-NEXT:    orl %ecx, %eax
   3773 ; SSE42-NEXT:    pextrb $12, %xmm0, %ecx
   3774 ; SSE42-NEXT:    andl $1, %ecx
   3775 ; SSE42-NEXT:    shll $6, %ecx
   3776 ; SSE42-NEXT:    pextrb $14, %xmm0, %edx
   3777 ; SSE42-NEXT:    andl $1, %edx
   3778 ; SSE42-NEXT:    shll $7, %edx
   3779 ; SSE42-NEXT:    orl %ecx, %edx
   3780 ; SSE42-NEXT:    pextrb $0, %xmm1, %ecx
   3781 ; SSE42-NEXT:    andl $1, %ecx
   3782 ; SSE42-NEXT:    shll $8, %ecx
   3783 ; SSE42-NEXT:    orl %edx, %ecx
   3784 ; SSE42-NEXT:    pextrb $2, %xmm1, %edx
   3785 ; SSE42-NEXT:    andl $1, %edx
   3786 ; SSE42-NEXT:    shll $9, %edx
   3787 ; SSE42-NEXT:    orl %ecx, %edx
   3788 ; SSE42-NEXT:    pextrb $4, %xmm1, %ecx
   3789 ; SSE42-NEXT:    andl $1, %ecx
   3790 ; SSE42-NEXT:    shll $10, %ecx
   3791 ; SSE42-NEXT:    orl %edx, %ecx
   3792 ; SSE42-NEXT:    pextrb $6, %xmm1, %edx
   3793 ; SSE42-NEXT:    andl $1, %edx
   3794 ; SSE42-NEXT:    shll $11, %edx
   3795 ; SSE42-NEXT:    orl %ecx, %edx
   3796 ; SSE42-NEXT:    pextrb $8, %xmm1, %ecx
   3797 ; SSE42-NEXT:    andl $1, %ecx
   3798 ; SSE42-NEXT:    shll $12, %ecx
   3799 ; SSE42-NEXT:    orl %edx, %ecx
   3800 ; SSE42-NEXT:    pextrb $10, %xmm1, %edx
   3801 ; SSE42-NEXT:    andl $1, %edx
   3802 ; SSE42-NEXT:    shll $13, %edx
   3803 ; SSE42-NEXT:    orl %ecx, %edx
   3804 ; SSE42-NEXT:    pextrb $12, %xmm1, %ecx
   3805 ; SSE42-NEXT:    andl $1, %ecx
   3806 ; SSE42-NEXT:    shll $14, %ecx
   3807 ; SSE42-NEXT:    orl %edx, %ecx
   3808 ; SSE42-NEXT:    pextrb $14, %xmm1, %edx
   3809 ; SSE42-NEXT:    shll $15, %edx
   3810 ; SSE42-NEXT:    orl %ecx, %edx
   3811 ; SSE42-NEXT:    orl %eax, %edx
   3812 ; SSE42-NEXT:    movw %dx, (%rdi)
   3813 ; SSE42-NEXT:    movq %rdi, %rax
   3814 ; SSE42-NEXT:    retq
   3815 ;
   3816 ; AVX1-LABEL: test_cmp_v64i16:
   3817 ; AVX1:       # %bb.0:
   3818 ; AVX1-NEXT:    vextractf128 $1, %ymm5, %xmm8
   3819 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm9
   3820 ; AVX1-NEXT:    vpcmpgtw %xmm8, %xmm9, %xmm8
   3821 ; AVX1-NEXT:    vpcmpgtw %xmm5, %xmm1, %xmm9
   3822 ; AVX1-NEXT:    vextractf128 $1, %ymm4, %xmm5
   3823 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
   3824 ; AVX1-NEXT:    vpcmpgtw %xmm5, %xmm1, %xmm5
   3825 ; AVX1-NEXT:    vpcmpgtw %xmm4, %xmm0, %xmm0
   3826 ; AVX1-NEXT:    vextractf128 $1, %ymm7, %xmm1
   3827 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   3828 ; AVX1-NEXT:    vpcmpgtw %xmm1, %xmm4, %xmm4
   3829 ; AVX1-NEXT:    vpcmpgtw %xmm7, %xmm3, %xmm3
   3830 ; AVX1-NEXT:    vextractf128 $1, %ymm6, %xmm1
   3831 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm7
   3832 ; AVX1-NEXT:    vpcmpgtw %xmm1, %xmm7, %xmm7
   3833 ; AVX1-NEXT:    vpcmpgtw %xmm6, %xmm2, %xmm2
   3834 ; AVX1-NEXT:    vpextrb $2, %xmm2, %eax
   3835 ; AVX1-NEXT:    andl $1, %eax
   3836 ; AVX1-NEXT:    vpextrb $0, %xmm2, %ecx
   3837 ; AVX1-NEXT:    andl $1, %ecx
   3838 ; AVX1-NEXT:    leal (%rcx,%rax,2), %eax
   3839 ; AVX1-NEXT:    vpextrb $4, %xmm2, %ecx
   3840 ; AVX1-NEXT:    andl $1, %ecx
   3841 ; AVX1-NEXT:    leal (%rax,%rcx,4), %eax
   3842 ; AVX1-NEXT:    vpextrb $6, %xmm2, %ecx
   3843 ; AVX1-NEXT:    andl $1, %ecx
   3844 ; AVX1-NEXT:    leal (%rax,%rcx,8), %eax
   3845 ; AVX1-NEXT:    vpextrb $8, %xmm2, %ecx
   3846 ; AVX1-NEXT:    andl $1, %ecx
   3847 ; AVX1-NEXT:    shll $4, %ecx
   3848 ; AVX1-NEXT:    orl %eax, %ecx
   3849 ; AVX1-NEXT:    vpextrb $10, %xmm2, %eax
   3850 ; AVX1-NEXT:    andl $1, %eax
   3851 ; AVX1-NEXT:    shll $5, %eax
   3852 ; AVX1-NEXT:    orl %ecx, %eax
   3853 ; AVX1-NEXT:    vpextrb $12, %xmm2, %ecx
   3854 ; AVX1-NEXT:    andl $1, %ecx
   3855 ; AVX1-NEXT:    shll $6, %ecx
   3856 ; AVX1-NEXT:    vpextrb $14, %xmm2, %edx
   3857 ; AVX1-NEXT:    andl $1, %edx
   3858 ; AVX1-NEXT:    shll $7, %edx
   3859 ; AVX1-NEXT:    orl %ecx, %edx
   3860 ; AVX1-NEXT:    vpextrb $0, %xmm7, %ecx
   3861 ; AVX1-NEXT:    andl $1, %ecx
   3862 ; AVX1-NEXT:    shll $8, %ecx
   3863 ; AVX1-NEXT:    orl %edx, %ecx
   3864 ; AVX1-NEXT:    vpextrb $2, %xmm7, %edx
   3865 ; AVX1-NEXT:    andl $1, %edx
   3866 ; AVX1-NEXT:    shll $9, %edx
   3867 ; AVX1-NEXT:    orl %ecx, %edx
   3868 ; AVX1-NEXT:    vpextrb $4, %xmm7, %ecx
   3869 ; AVX1-NEXT:    andl $1, %ecx
   3870 ; AVX1-NEXT:    shll $10, %ecx
   3871 ; AVX1-NEXT:    orl %edx, %ecx
   3872 ; AVX1-NEXT:    vpextrb $6, %xmm7, %edx
   3873 ; AVX1-NEXT:    andl $1, %edx
   3874 ; AVX1-NEXT:    shll $11, %edx
   3875 ; AVX1-NEXT:    orl %ecx, %edx
   3876 ; AVX1-NEXT:    vpextrb $8, %xmm7, %ecx
   3877 ; AVX1-NEXT:    andl $1, %ecx
   3878 ; AVX1-NEXT:    shll $12, %ecx
   3879 ; AVX1-NEXT:    orl %edx, %ecx
   3880 ; AVX1-NEXT:    vpextrb $10, %xmm7, %edx
   3881 ; AVX1-NEXT:    andl $1, %edx
   3882 ; AVX1-NEXT:    shll $13, %edx
   3883 ; AVX1-NEXT:    orl %ecx, %edx
   3884 ; AVX1-NEXT:    vpextrb $12, %xmm7, %ecx
   3885 ; AVX1-NEXT:    andl $1, %ecx
   3886 ; AVX1-NEXT:    shll $14, %ecx
   3887 ; AVX1-NEXT:    orl %edx, %ecx
   3888 ; AVX1-NEXT:    vpextrb $14, %xmm7, %edx
   3889 ; AVX1-NEXT:    andl $1, %edx
   3890 ; AVX1-NEXT:    shll $15, %edx
   3891 ; AVX1-NEXT:    orl %ecx, %edx
   3892 ; AVX1-NEXT:    vpextrb $0, %xmm3, %ecx
   3893 ; AVX1-NEXT:    andl $1, %ecx
   3894 ; AVX1-NEXT:    shll $16, %ecx
   3895 ; AVX1-NEXT:    orl %edx, %ecx
   3896 ; AVX1-NEXT:    vpextrb $2, %xmm3, %edx
   3897 ; AVX1-NEXT:    andl $1, %edx
   3898 ; AVX1-NEXT:    shll $17, %edx
   3899 ; AVX1-NEXT:    orl %ecx, %edx
   3900 ; AVX1-NEXT:    vpextrb $4, %xmm3, %ecx
   3901 ; AVX1-NEXT:    andl $1, %ecx
   3902 ; AVX1-NEXT:    shll $18, %ecx
   3903 ; AVX1-NEXT:    orl %edx, %ecx
   3904 ; AVX1-NEXT:    vpextrb $6, %xmm3, %edx
   3905 ; AVX1-NEXT:    andl $1, %edx
   3906 ; AVX1-NEXT:    shll $19, %edx
   3907 ; AVX1-NEXT:    orl %ecx, %edx
   3908 ; AVX1-NEXT:    vpextrb $8, %xmm3, %ecx
   3909 ; AVX1-NEXT:    andl $1, %ecx
   3910 ; AVX1-NEXT:    shll $20, %ecx
   3911 ; AVX1-NEXT:    orl %edx, %ecx
   3912 ; AVX1-NEXT:    vpextrb $10, %xmm3, %edx
   3913 ; AVX1-NEXT:    andl $1, %edx
   3914 ; AVX1-NEXT:    shll $21, %edx
   3915 ; AVX1-NEXT:    orl %ecx, %edx
   3916 ; AVX1-NEXT:    vpextrb $12, %xmm3, %ecx
   3917 ; AVX1-NEXT:    andl $1, %ecx
   3918 ; AVX1-NEXT:    shll $22, %ecx
   3919 ; AVX1-NEXT:    orl %edx, %ecx
   3920 ; AVX1-NEXT:    vpextrb $14, %xmm3, %edx
   3921 ; AVX1-NEXT:    andl $1, %edx
   3922 ; AVX1-NEXT:    shll $23, %edx
   3923 ; AVX1-NEXT:    orl %ecx, %edx
   3924 ; AVX1-NEXT:    vpextrb $0, %xmm4, %ecx
   3925 ; AVX1-NEXT:    andl $1, %ecx
   3926 ; AVX1-NEXT:    shll $24, %ecx
   3927 ; AVX1-NEXT:    orl %edx, %ecx
   3928 ; AVX1-NEXT:    vpextrb $2, %xmm4, %edx
   3929 ; AVX1-NEXT:    andl $1, %edx
   3930 ; AVX1-NEXT:    shll $25, %edx
   3931 ; AVX1-NEXT:    orl %ecx, %edx
   3932 ; AVX1-NEXT:    vpextrb $4, %xmm4, %ecx
   3933 ; AVX1-NEXT:    andl $1, %ecx
   3934 ; AVX1-NEXT:    shll $26, %ecx
   3935 ; AVX1-NEXT:    orl %edx, %ecx
   3936 ; AVX1-NEXT:    vpextrb $6, %xmm4, %edx
   3937 ; AVX1-NEXT:    andl $1, %edx
   3938 ; AVX1-NEXT:    shll $27, %edx
   3939 ; AVX1-NEXT:    orl %ecx, %edx
   3940 ; AVX1-NEXT:    vpextrb $8, %xmm4, %ecx
   3941 ; AVX1-NEXT:    andl $1, %ecx
   3942 ; AVX1-NEXT:    shll $28, %ecx
   3943 ; AVX1-NEXT:    orl %edx, %ecx
   3944 ; AVX1-NEXT:    vpextrb $10, %xmm4, %edx
   3945 ; AVX1-NEXT:    andl $1, %edx
   3946 ; AVX1-NEXT:    shll $29, %edx
   3947 ; AVX1-NEXT:    orl %ecx, %edx
   3948 ; AVX1-NEXT:    vpextrb $12, %xmm4, %ecx
   3949 ; AVX1-NEXT:    andl $1, %ecx
   3950 ; AVX1-NEXT:    shll $30, %ecx
   3951 ; AVX1-NEXT:    orl %edx, %ecx
   3952 ; AVX1-NEXT:    vpextrb $14, %xmm4, %edx
   3953 ; AVX1-NEXT:    shll $31, %edx
   3954 ; AVX1-NEXT:    orl %ecx, %edx
   3955 ; AVX1-NEXT:    orl %eax, %edx
   3956 ; AVX1-NEXT:    movl %edx, 4(%rdi)
   3957 ; AVX1-NEXT:    vpextrb $2, %xmm0, %eax
   3958 ; AVX1-NEXT:    andl $1, %eax
   3959 ; AVX1-NEXT:    vpextrb $0, %xmm0, %ecx
   3960 ; AVX1-NEXT:    andl $1, %ecx
   3961 ; AVX1-NEXT:    leal (%rcx,%rax,2), %eax
   3962 ; AVX1-NEXT:    vpextrb $4, %xmm0, %ecx
   3963 ; AVX1-NEXT:    andl $1, %ecx
   3964 ; AVX1-NEXT:    leal (%rax,%rcx,4), %eax
   3965 ; AVX1-NEXT:    vpextrb $6, %xmm0, %ecx
   3966 ; AVX1-NEXT:    andl $1, %ecx
   3967 ; AVX1-NEXT:    leal (%rax,%rcx,8), %eax
   3968 ; AVX1-NEXT:    vpextrb $8, %xmm0, %ecx
   3969 ; AVX1-NEXT:    andl $1, %ecx
   3970 ; AVX1-NEXT:    shll $4, %ecx
   3971 ; AVX1-NEXT:    orl %eax, %ecx
   3972 ; AVX1-NEXT:    vpextrb $10, %xmm0, %eax
   3973 ; AVX1-NEXT:    andl $1, %eax
   3974 ; AVX1-NEXT:    shll $5, %eax
   3975 ; AVX1-NEXT:    orl %ecx, %eax
   3976 ; AVX1-NEXT:    vpextrb $12, %xmm0, %ecx
   3977 ; AVX1-NEXT:    andl $1, %ecx
   3978 ; AVX1-NEXT:    shll $6, %ecx
   3979 ; AVX1-NEXT:    vpextrb $14, %xmm0, %edx
   3980 ; AVX1-NEXT:    andl $1, %edx
   3981 ; AVX1-NEXT:    shll $7, %edx
   3982 ; AVX1-NEXT:    orl %ecx, %edx
   3983 ; AVX1-NEXT:    vpextrb $0, %xmm5, %ecx
   3984 ; AVX1-NEXT:    andl $1, %ecx
   3985 ; AVX1-NEXT:    shll $8, %ecx
   3986 ; AVX1-NEXT:    orl %edx, %ecx
   3987 ; AVX1-NEXT:    vpextrb $2, %xmm5, %edx
   3988 ; AVX1-NEXT:    andl $1, %edx
   3989 ; AVX1-NEXT:    shll $9, %edx
   3990 ; AVX1-NEXT:    orl %ecx, %edx
   3991 ; AVX1-NEXT:    vpextrb $4, %xmm5, %ecx
   3992 ; AVX1-NEXT:    andl $1, %ecx
   3993 ; AVX1-NEXT:    shll $10, %ecx
   3994 ; AVX1-NEXT:    orl %edx, %ecx
   3995 ; AVX1-NEXT:    vpextrb $6, %xmm5, %edx
   3996 ; AVX1-NEXT:    andl $1, %edx
   3997 ; AVX1-NEXT:    shll $11, %edx
   3998 ; AVX1-NEXT:    orl %ecx, %edx
   3999 ; AVX1-NEXT:    vpextrb $8, %xmm5, %ecx
   4000 ; AVX1-NEXT:    andl $1, %ecx
   4001 ; AVX1-NEXT:    shll $12, %ecx
   4002 ; AVX1-NEXT:    orl %edx, %ecx
   4003 ; AVX1-NEXT:    vpextrb $10, %xmm5, %edx
   4004 ; AVX1-NEXT:    andl $1, %edx
   4005 ; AVX1-NEXT:    shll $13, %edx
   4006 ; AVX1-NEXT:    orl %ecx, %edx
   4007 ; AVX1-NEXT:    vpextrb $12, %xmm5, %ecx
   4008 ; AVX1-NEXT:    andl $1, %ecx
   4009 ; AVX1-NEXT:    shll $14, %ecx
   4010 ; AVX1-NEXT:    orl %edx, %ecx
   4011 ; AVX1-NEXT:    vpextrb $14, %xmm5, %edx
   4012 ; AVX1-NEXT:    andl $1, %edx
   4013 ; AVX1-NEXT:    shll $15, %edx
   4014 ; AVX1-NEXT:    orl %ecx, %edx
   4015 ; AVX1-NEXT:    vpextrb $0, %xmm9, %ecx
   4016 ; AVX1-NEXT:    andl $1, %ecx
   4017 ; AVX1-NEXT:    shll $16, %ecx
   4018 ; AVX1-NEXT:    orl %edx, %ecx
   4019 ; AVX1-NEXT:    vpextrb $2, %xmm9, %edx
   4020 ; AVX1-NEXT:    andl $1, %edx
   4021 ; AVX1-NEXT:    shll $17, %edx
   4022 ; AVX1-NEXT:    orl %ecx, %edx
   4023 ; AVX1-NEXT:    vpextrb $4, %xmm9, %ecx
   4024 ; AVX1-NEXT:    andl $1, %ecx
   4025 ; AVX1-NEXT:    shll $18, %ecx
   4026 ; AVX1-NEXT:    orl %edx, %ecx
   4027 ; AVX1-NEXT:    vpextrb $6, %xmm9, %edx
   4028 ; AVX1-NEXT:    andl $1, %edx
   4029 ; AVX1-NEXT:    shll $19, %edx
   4030 ; AVX1-NEXT:    orl %ecx, %edx
   4031 ; AVX1-NEXT:    vpextrb $8, %xmm9, %ecx
   4032 ; AVX1-NEXT:    andl $1, %ecx
   4033 ; AVX1-NEXT:    shll $20, %ecx
   4034 ; AVX1-NEXT:    orl %edx, %ecx
   4035 ; AVX1-NEXT:    vpextrb $10, %xmm9, %edx
   4036 ; AVX1-NEXT:    andl $1, %edx
   4037 ; AVX1-NEXT:    shll $21, %edx
   4038 ; AVX1-NEXT:    orl %ecx, %edx
   4039 ; AVX1-NEXT:    vpextrb $12, %xmm9, %ecx
   4040 ; AVX1-NEXT:    andl $1, %ecx
   4041 ; AVX1-NEXT:    shll $22, %ecx
   4042 ; AVX1-NEXT:    orl %edx, %ecx
   4043 ; AVX1-NEXT:    vpextrb $14, %xmm9, %edx
   4044 ; AVX1-NEXT:    andl $1, %edx
   4045 ; AVX1-NEXT:    shll $23, %edx
   4046 ; AVX1-NEXT:    orl %ecx, %edx
   4047 ; AVX1-NEXT:    vpextrb $0, %xmm8, %ecx
   4048 ; AVX1-NEXT:    andl $1, %ecx
   4049 ; AVX1-NEXT:    shll $24, %ecx
   4050 ; AVX1-NEXT:    orl %edx, %ecx
   4051 ; AVX1-NEXT:    vpextrb $2, %xmm8, %edx
   4052 ; AVX1-NEXT:    andl $1, %edx
   4053 ; AVX1-NEXT:    shll $25, %edx
   4054 ; AVX1-NEXT:    orl %ecx, %edx
   4055 ; AVX1-NEXT:    vpextrb $4, %xmm8, %ecx
   4056 ; AVX1-NEXT:    andl $1, %ecx
   4057 ; AVX1-NEXT:    shll $26, %ecx
   4058 ; AVX1-NEXT:    orl %edx, %ecx
   4059 ; AVX1-NEXT:    vpextrb $6, %xmm8, %edx
   4060 ; AVX1-NEXT:    andl $1, %edx
   4061 ; AVX1-NEXT:    shll $27, %edx
   4062 ; AVX1-NEXT:    orl %ecx, %edx
   4063 ; AVX1-NEXT:    vpextrb $8, %xmm8, %ecx
   4064 ; AVX1-NEXT:    andl $1, %ecx
   4065 ; AVX1-NEXT:    shll $28, %ecx
   4066 ; AVX1-NEXT:    orl %edx, %ecx
   4067 ; AVX1-NEXT:    vpextrb $10, %xmm8, %edx
   4068 ; AVX1-NEXT:    andl $1, %edx
   4069 ; AVX1-NEXT:    shll $29, %edx
   4070 ; AVX1-NEXT:    orl %ecx, %edx
   4071 ; AVX1-NEXT:    vpextrb $12, %xmm8, %ecx
   4072 ; AVX1-NEXT:    andl $1, %ecx
   4073 ; AVX1-NEXT:    shll $30, %ecx
   4074 ; AVX1-NEXT:    orl %edx, %ecx
   4075 ; AVX1-NEXT:    vpextrb $14, %xmm8, %edx
   4076 ; AVX1-NEXT:    shll $31, %edx
   4077 ; AVX1-NEXT:    orl %ecx, %edx
   4078 ; AVX1-NEXT:    orl %eax, %edx
   4079 ; AVX1-NEXT:    movl %edx, (%rdi)
   4080 ; AVX1-NEXT:    movq %rdi, %rax
   4081 ; AVX1-NEXT:    vzeroupper
   4082 ; AVX1-NEXT:    retq
   4083 ;
   4084 ; AVX2-LABEL: test_cmp_v64i16:
   4085 ; AVX2:       # %bb.0:
   4086 ; AVX2-NEXT:    vpcmpgtw %ymm5, %ymm1, %ymm5
   4087 ; AVX2-NEXT:    vextracti128 $1, %ymm5, %xmm1
   4088 ; AVX2-NEXT:    vpcmpgtw %ymm4, %ymm0, %ymm4
   4089 ; AVX2-NEXT:    vextracti128 $1, %ymm4, %xmm0
   4090 ; AVX2-NEXT:    vpcmpgtw %ymm7, %ymm3, %ymm7
   4091 ; AVX2-NEXT:    vextracti128 $1, %ymm7, %xmm3
   4092 ; AVX2-NEXT:    vpcmpgtw %ymm6, %ymm2, %ymm6
   4093 ; AVX2-NEXT:    vextracti128 $1, %ymm6, %xmm2
   4094 ; AVX2-NEXT:    vpextrb $2, %xmm6, %eax
   4095 ; AVX2-NEXT:    andl $1, %eax
   4096 ; AVX2-NEXT:    vpextrb $0, %xmm6, %ecx
   4097 ; AVX2-NEXT:    andl $1, %ecx
   4098 ; AVX2-NEXT:    leal (%rcx,%rax,2), %eax
   4099 ; AVX2-NEXT:    vpextrb $4, %xmm6, %ecx
   4100 ; AVX2-NEXT:    andl $1, %ecx
   4101 ; AVX2-NEXT:    leal (%rax,%rcx,4), %eax
   4102 ; AVX2-NEXT:    vpextrb $6, %xmm6, %ecx
   4103 ; AVX2-NEXT:    andl $1, %ecx
   4104 ; AVX2-NEXT:    leal (%rax,%rcx,8), %eax
   4105 ; AVX2-NEXT:    vpextrb $8, %xmm6, %ecx
   4106 ; AVX2-NEXT:    andl $1, %ecx
   4107 ; AVX2-NEXT:    shll $4, %ecx
   4108 ; AVX2-NEXT:    orl %eax, %ecx
   4109 ; AVX2-NEXT:    vpextrb $10, %xmm6, %eax
   4110 ; AVX2-NEXT:    andl $1, %eax
   4111 ; AVX2-NEXT:    shll $5, %eax
   4112 ; AVX2-NEXT:    orl %ecx, %eax
   4113 ; AVX2-NEXT:    vpextrb $12, %xmm6, %ecx
   4114 ; AVX2-NEXT:    andl $1, %ecx
   4115 ; AVX2-NEXT:    shll $6, %ecx
   4116 ; AVX2-NEXT:    vpextrb $14, %xmm6, %edx
   4117 ; AVX2-NEXT:    andl $1, %edx
   4118 ; AVX2-NEXT:    shll $7, %edx
   4119 ; AVX2-NEXT:    orl %ecx, %edx
   4120 ; AVX2-NEXT:    vpextrb $0, %xmm2, %ecx
   4121 ; AVX2-NEXT:    andl $1, %ecx
   4122 ; AVX2-NEXT:    shll $8, %ecx
   4123 ; AVX2-NEXT:    orl %edx, %ecx
   4124 ; AVX2-NEXT:    vpextrb $2, %xmm2, %edx
   4125 ; AVX2-NEXT:    andl $1, %edx
   4126 ; AVX2-NEXT:    shll $9, %edx
   4127 ; AVX2-NEXT:    orl %ecx, %edx
   4128 ; AVX2-NEXT:    vpextrb $4, %xmm2, %ecx
   4129 ; AVX2-NEXT:    andl $1, %ecx
   4130 ; AVX2-NEXT:    shll $10, %ecx
   4131 ; AVX2-NEXT:    orl %edx, %ecx
   4132 ; AVX2-NEXT:    vpextrb $6, %xmm2, %edx
   4133 ; AVX2-NEXT:    andl $1, %edx
   4134 ; AVX2-NEXT:    shll $11, %edx
   4135 ; AVX2-NEXT:    orl %ecx, %edx
   4136 ; AVX2-NEXT:    vpextrb $8, %xmm2, %ecx
   4137 ; AVX2-NEXT:    andl $1, %ecx
   4138 ; AVX2-NEXT:    shll $12, %ecx
   4139 ; AVX2-NEXT:    orl %edx, %ecx
   4140 ; AVX2-NEXT:    vpextrb $10, %xmm2, %edx
   4141 ; AVX2-NEXT:    andl $1, %edx
   4142 ; AVX2-NEXT:    shll $13, %edx
   4143 ; AVX2-NEXT:    orl %ecx, %edx
   4144 ; AVX2-NEXT:    vpextrb $12, %xmm2, %ecx
   4145 ; AVX2-NEXT:    andl $1, %ecx
   4146 ; AVX2-NEXT:    shll $14, %ecx
   4147 ; AVX2-NEXT:    orl %edx, %ecx
   4148 ; AVX2-NEXT:    vpextrb $14, %xmm2, %edx
   4149 ; AVX2-NEXT:    andl $1, %edx
   4150 ; AVX2-NEXT:    shll $15, %edx
   4151 ; AVX2-NEXT:    orl %ecx, %edx
   4152 ; AVX2-NEXT:    vpextrb $0, %xmm7, %ecx
   4153 ; AVX2-NEXT:    andl $1, %ecx
   4154 ; AVX2-NEXT:    shll $16, %ecx
   4155 ; AVX2-NEXT:    orl %edx, %ecx
   4156 ; AVX2-NEXT:    vpextrb $2, %xmm7, %edx
   4157 ; AVX2-NEXT:    andl $1, %edx
   4158 ; AVX2-NEXT:    shll $17, %edx
   4159 ; AVX2-NEXT:    orl %ecx, %edx
   4160 ; AVX2-NEXT:    vpextrb $4, %xmm7, %ecx
   4161 ; AVX2-NEXT:    andl $1, %ecx
   4162 ; AVX2-NEXT:    shll $18, %ecx
   4163 ; AVX2-NEXT:    orl %edx, %ecx
   4164 ; AVX2-NEXT:    vpextrb $6, %xmm7, %edx
   4165 ; AVX2-NEXT:    andl $1, %edx
   4166 ; AVX2-NEXT:    shll $19, %edx
   4167 ; AVX2-NEXT:    orl %ecx, %edx
   4168 ; AVX2-NEXT:    vpextrb $8, %xmm7, %ecx
   4169 ; AVX2-NEXT:    andl $1, %ecx
   4170 ; AVX2-NEXT:    shll $20, %ecx
   4171 ; AVX2-NEXT:    orl %edx, %ecx
   4172 ; AVX2-NEXT:    vpextrb $10, %xmm7, %edx
   4173 ; AVX2-NEXT:    andl $1, %edx
   4174 ; AVX2-NEXT:    shll $21, %edx
   4175 ; AVX2-NEXT:    orl %ecx, %edx
   4176 ; AVX2-NEXT:    vpextrb $12, %xmm7, %ecx
   4177 ; AVX2-NEXT:    andl $1, %ecx
   4178 ; AVX2-NEXT:    shll $22, %ecx
   4179 ; AVX2-NEXT:    orl %edx, %ecx
   4180 ; AVX2-NEXT:    vpextrb $14, %xmm7, %edx
   4181 ; AVX2-NEXT:    andl $1, %edx
   4182 ; AVX2-NEXT:    shll $23, %edx
   4183 ; AVX2-NEXT:    orl %ecx, %edx
   4184 ; AVX2-NEXT:    vpextrb $0, %xmm3, %ecx
   4185 ; AVX2-NEXT:    andl $1, %ecx
   4186 ; AVX2-NEXT:    shll $24, %ecx
   4187 ; AVX2-NEXT:    orl %edx, %ecx
   4188 ; AVX2-NEXT:    vpextrb $2, %xmm3, %edx
   4189 ; AVX2-NEXT:    andl $1, %edx
   4190 ; AVX2-NEXT:    shll $25, %edx
   4191 ; AVX2-NEXT:    orl %ecx, %edx
   4192 ; AVX2-NEXT:    vpextrb $4, %xmm3, %ecx
   4193 ; AVX2-NEXT:    andl $1, %ecx
   4194 ; AVX2-NEXT:    shll $26, %ecx
   4195 ; AVX2-NEXT:    orl %edx, %ecx
   4196 ; AVX2-NEXT:    vpextrb $6, %xmm3, %edx
   4197 ; AVX2-NEXT:    andl $1, %edx
   4198 ; AVX2-NEXT:    shll $27, %edx
   4199 ; AVX2-NEXT:    orl %ecx, %edx
   4200 ; AVX2-NEXT:    vpextrb $8, %xmm3, %ecx
   4201 ; AVX2-NEXT:    andl $1, %ecx
   4202 ; AVX2-NEXT:    shll $28, %ecx
   4203 ; AVX2-NEXT:    orl %edx, %ecx
   4204 ; AVX2-NEXT:    vpextrb $10, %xmm3, %edx
   4205 ; AVX2-NEXT:    andl $1, %edx
   4206 ; AVX2-NEXT:    shll $29, %edx
   4207 ; AVX2-NEXT:    orl %ecx, %edx
   4208 ; AVX2-NEXT:    vpextrb $12, %xmm3, %ecx
   4209 ; AVX2-NEXT:    andl $1, %ecx
   4210 ; AVX2-NEXT:    shll $30, %ecx
   4211 ; AVX2-NEXT:    orl %edx, %ecx
   4212 ; AVX2-NEXT:    vpextrb $14, %xmm3, %edx
   4213 ; AVX2-NEXT:    shll $31, %edx
   4214 ; AVX2-NEXT:    orl %ecx, %edx
   4215 ; AVX2-NEXT:    orl %eax, %edx
   4216 ; AVX2-NEXT:    movl %edx, 4(%rdi)
   4217 ; AVX2-NEXT:    vpextrb $2, %xmm4, %eax
   4218 ; AVX2-NEXT:    andl $1, %eax
   4219 ; AVX2-NEXT:    vpextrb $0, %xmm4, %ecx
   4220 ; AVX2-NEXT:    andl $1, %ecx
   4221 ; AVX2-NEXT:    leal (%rcx,%rax,2), %eax
   4222 ; AVX2-NEXT:    vpextrb $4, %xmm4, %ecx
   4223 ; AVX2-NEXT:    andl $1, %ecx
   4224 ; AVX2-NEXT:    leal (%rax,%rcx,4), %eax
   4225 ; AVX2-NEXT:    vpextrb $6, %xmm4, %ecx
   4226 ; AVX2-NEXT:    andl $1, %ecx
   4227 ; AVX2-NEXT:    leal (%rax,%rcx,8), %eax
   4228 ; AVX2-NEXT:    vpextrb $8, %xmm4, %ecx
   4229 ; AVX2-NEXT:    andl $1, %ecx
   4230 ; AVX2-NEXT:    shll $4, %ecx
   4231 ; AVX2-NEXT:    orl %eax, %ecx
   4232 ; AVX2-NEXT:    vpextrb $10, %xmm4, %eax
   4233 ; AVX2-NEXT:    andl $1, %eax
   4234 ; AVX2-NEXT:    shll $5, %eax
   4235 ; AVX2-NEXT:    orl %ecx, %eax
   4236 ; AVX2-NEXT:    vpextrb $12, %xmm4, %ecx
   4237 ; AVX2-NEXT:    andl $1, %ecx
   4238 ; AVX2-NEXT:    shll $6, %ecx
   4239 ; AVX2-NEXT:    vpextrb $14, %xmm4, %edx
   4240 ; AVX2-NEXT:    andl $1, %edx
   4241 ; AVX2-NEXT:    shll $7, %edx
   4242 ; AVX2-NEXT:    orl %ecx, %edx
   4243 ; AVX2-NEXT:    vpextrb $0, %xmm0, %ecx
   4244 ; AVX2-NEXT:    andl $1, %ecx
   4245 ; AVX2-NEXT:    shll $8, %ecx
   4246 ; AVX2-NEXT:    orl %edx, %ecx
   4247 ; AVX2-NEXT:    vpextrb $2, %xmm0, %edx
   4248 ; AVX2-NEXT:    andl $1, %edx
   4249 ; AVX2-NEXT:    shll $9, %edx
   4250 ; AVX2-NEXT:    orl %ecx, %edx
   4251 ; AVX2-NEXT:    vpextrb $4, %xmm0, %ecx
   4252 ; AVX2-NEXT:    andl $1, %ecx
   4253 ; AVX2-NEXT:    shll $10, %ecx
   4254 ; AVX2-NEXT:    orl %edx, %ecx
   4255 ; AVX2-NEXT:    vpextrb $6, %xmm0, %edx
   4256 ; AVX2-NEXT:    andl $1, %edx
   4257 ; AVX2-NEXT:    shll $11, %edx
   4258 ; AVX2-NEXT:    orl %ecx, %edx
   4259 ; AVX2-NEXT:    vpextrb $8, %xmm0, %ecx
   4260 ; AVX2-NEXT:    andl $1, %ecx
   4261 ; AVX2-NEXT:    shll $12, %ecx
   4262 ; AVX2-NEXT:    orl %edx, %ecx
   4263 ; AVX2-NEXT:    vpextrb $10, %xmm0, %edx
   4264 ; AVX2-NEXT:    andl $1, %edx
   4265 ; AVX2-NEXT:    shll $13, %edx
   4266 ; AVX2-NEXT:    orl %ecx, %edx
   4267 ; AVX2-NEXT:    vpextrb $12, %xmm0, %ecx
   4268 ; AVX2-NEXT:    andl $1, %ecx
   4269 ; AVX2-NEXT:    shll $14, %ecx
   4270 ; AVX2-NEXT:    orl %edx, %ecx
   4271 ; AVX2-NEXT:    vpextrb $14, %xmm0, %edx
   4272 ; AVX2-NEXT:    andl $1, %edx
   4273 ; AVX2-NEXT:    shll $15, %edx
   4274 ; AVX2-NEXT:    orl %ecx, %edx
   4275 ; AVX2-NEXT:    vpextrb $0, %xmm5, %ecx
   4276 ; AVX2-NEXT:    andl $1, %ecx
   4277 ; AVX2-NEXT:    shll $16, %ecx
   4278 ; AVX2-NEXT:    orl %edx, %ecx
   4279 ; AVX2-NEXT:    vpextrb $2, %xmm5, %edx
   4280 ; AVX2-NEXT:    andl $1, %edx
   4281 ; AVX2-NEXT:    shll $17, %edx
   4282 ; AVX2-NEXT:    orl %ecx, %edx
   4283 ; AVX2-NEXT:    vpextrb $4, %xmm5, %ecx
   4284 ; AVX2-NEXT:    andl $1, %ecx
   4285 ; AVX2-NEXT:    shll $18, %ecx
   4286 ; AVX2-NEXT:    orl %edx, %ecx
   4287 ; AVX2-NEXT:    vpextrb $6, %xmm5, %edx
   4288 ; AVX2-NEXT:    andl $1, %edx
   4289 ; AVX2-NEXT:    shll $19, %edx
   4290 ; AVX2-NEXT:    orl %ecx, %edx
   4291 ; AVX2-NEXT:    vpextrb $8, %xmm5, %ecx
   4292 ; AVX2-NEXT:    andl $1, %ecx
   4293 ; AVX2-NEXT:    shll $20, %ecx
   4294 ; AVX2-NEXT:    orl %edx, %ecx
   4295 ; AVX2-NEXT:    vpextrb $10, %xmm5, %edx
   4296 ; AVX2-NEXT:    andl $1, %edx
   4297 ; AVX2-NEXT:    shll $21, %edx
   4298 ; AVX2-NEXT:    orl %ecx, %edx
   4299 ; AVX2-NEXT:    vpextrb $12, %xmm5, %ecx
   4300 ; AVX2-NEXT:    andl $1, %ecx
   4301 ; AVX2-NEXT:    shll $22, %ecx
   4302 ; AVX2-NEXT:    orl %edx, %ecx
   4303 ; AVX2-NEXT:    vpextrb $14, %xmm5, %edx
   4304 ; AVX2-NEXT:    andl $1, %edx
   4305 ; AVX2-NEXT:    shll $23, %edx
   4306 ; AVX2-NEXT:    orl %ecx, %edx
   4307 ; AVX2-NEXT:    vpextrb $0, %xmm1, %ecx
   4308 ; AVX2-NEXT:    andl $1, %ecx
   4309 ; AVX2-NEXT:    shll $24, %ecx
   4310 ; AVX2-NEXT:    orl %edx, %ecx
   4311 ; AVX2-NEXT:    vpextrb $2, %xmm1, %edx
   4312 ; AVX2-NEXT:    andl $1, %edx
   4313 ; AVX2-NEXT:    shll $25, %edx
   4314 ; AVX2-NEXT:    orl %ecx, %edx
   4315 ; AVX2-NEXT:    vpextrb $4, %xmm1, %ecx
   4316 ; AVX2-NEXT:    andl $1, %ecx
   4317 ; AVX2-NEXT:    shll $26, %ecx
   4318 ; AVX2-NEXT:    orl %edx, %ecx
   4319 ; AVX2-NEXT:    vpextrb $6, %xmm1, %edx
   4320 ; AVX2-NEXT:    andl $1, %edx
   4321 ; AVX2-NEXT:    shll $27, %edx
   4322 ; AVX2-NEXT:    orl %ecx, %edx
   4323 ; AVX2-NEXT:    vpextrb $8, %xmm1, %ecx
   4324 ; AVX2-NEXT:    andl $1, %ecx
   4325 ; AVX2-NEXT:    shll $28, %ecx
   4326 ; AVX2-NEXT:    orl %edx, %ecx
   4327 ; AVX2-NEXT:    vpextrb $10, %xmm1, %edx
   4328 ; AVX2-NEXT:    andl $1, %edx
   4329 ; AVX2-NEXT:    shll $29, %edx
   4330 ; AVX2-NEXT:    orl %ecx, %edx
   4331 ; AVX2-NEXT:    vpextrb $12, %xmm1, %ecx
   4332 ; AVX2-NEXT:    andl $1, %ecx
   4333 ; AVX2-NEXT:    shll $30, %ecx
   4334 ; AVX2-NEXT:    orl %edx, %ecx
   4335 ; AVX2-NEXT:    vpextrb $14, %xmm1, %edx
   4336 ; AVX2-NEXT:    shll $31, %edx
   4337 ; AVX2-NEXT:    orl %ecx, %edx
   4338 ; AVX2-NEXT:    orl %eax, %edx
   4339 ; AVX2-NEXT:    movl %edx, (%rdi)
   4340 ; AVX2-NEXT:    movq %rdi, %rax
   4341 ; AVX2-NEXT:    vzeroupper
   4342 ; AVX2-NEXT:    retq
   4343 ;
   4344 ; AVX512F-LABEL: test_cmp_v64i16:
   4345 ; AVX512F:       # %bb.0:
   4346 ; AVX512F-NEXT:    vpcmpgtw %ymm7, %ymm3, %ymm3
   4347 ; AVX512F-NEXT:    vpcmpgtw %ymm6, %ymm2, %ymm2
   4348 ; AVX512F-NEXT:    vpcmpgtw %ymm5, %ymm1, %ymm1
   4349 ; AVX512F-NEXT:    vpcmpgtw %ymm4, %ymm0, %ymm0
   4350 ; AVX512F-NEXT:    vpmovsxwd %ymm0, %zmm0
   4351 ; AVX512F-NEXT:    vpmovdb %zmm0, %xmm0
   4352 ; AVX512F-NEXT:    vpmovsxwd %ymm1, %zmm1
   4353 ; AVX512F-NEXT:    vpmovdb %zmm1, %xmm1
   4354 ; AVX512F-NEXT:    vpmovsxwd %ymm2, %zmm2
   4355 ; AVX512F-NEXT:    vpmovdb %zmm2, %xmm2
   4356 ; AVX512F-NEXT:    vpmovsxwd %ymm3, %zmm3
   4357 ; AVX512F-NEXT:    vpmovdb %zmm3, %xmm3
   4358 ; AVX512F-NEXT:    vzeroupper
   4359 ; AVX512F-NEXT:    retq
   4360 ;
   4361 ; AVX512DQ-LABEL: test_cmp_v64i16:
   4362 ; AVX512DQ:       # %bb.0:
   4363 ; AVX512DQ-NEXT:    vpcmpgtw %ymm7, %ymm3, %ymm3
   4364 ; AVX512DQ-NEXT:    vpcmpgtw %ymm6, %ymm2, %ymm2
   4365 ; AVX512DQ-NEXT:    vpcmpgtw %ymm5, %ymm1, %ymm1
   4366 ; AVX512DQ-NEXT:    vpcmpgtw %ymm4, %ymm0, %ymm0
   4367 ; AVX512DQ-NEXT:    vpmovsxwd %ymm0, %zmm0
   4368 ; AVX512DQ-NEXT:    vpmovdb %zmm0, %xmm0
   4369 ; AVX512DQ-NEXT:    vpmovsxwd %ymm1, %zmm1
   4370 ; AVX512DQ-NEXT:    vpmovdb %zmm1, %xmm1
   4371 ; AVX512DQ-NEXT:    vpmovsxwd %ymm2, %zmm2
   4372 ; AVX512DQ-NEXT:    vpmovdb %zmm2, %xmm2
   4373 ; AVX512DQ-NEXT:    vpmovsxwd %ymm3, %zmm3
   4374 ; AVX512DQ-NEXT:    vpmovdb %zmm3, %xmm3
   4375 ; AVX512DQ-NEXT:    vzeroupper
   4376 ; AVX512DQ-NEXT:    retq
   4377 ;
   4378 ; AVX512BW-LABEL: test_cmp_v64i16:
   4379 ; AVX512BW:       # %bb.0:
   4380 ; AVX512BW-NEXT:    vpcmpgtw %zmm2, %zmm0, %k0
   4381 ; AVX512BW-NEXT:    vpcmpgtw %zmm3, %zmm1, %k1
   4382 ; AVX512BW-NEXT:    kunpckdq %k0, %k1, %k0
   4383 ; AVX512BW-NEXT:    vpmovm2b %k0, %zmm0
   4384 ; AVX512BW-NEXT:    retq
   4385   %1 = icmp sgt <64 x i16> %a0, %a1
   4386   ret <64 x i1> %1
   4387 }
   4388 
   4389 define <128 x i1> @test_cmp_v128i8(<128 x i8> %a0, <128 x i8> %a1) nounwind {
   4390 ; SSE2-LABEL: test_cmp_v128i8:
   4391 ; SSE2:       # %bb.0:
   4392 ; SSE2-NEXT:    pushq %rax
   4393 ; SSE2-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm0
   4394 ; SSE2-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm1
   4395 ; SSE2-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm2
   4396 ; SSE2-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm3
   4397 ; SSE2-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm4
   4398 ; SSE2-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm5
   4399 ; SSE2-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm6
   4400 ; SSE2-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm7
   4401 ; SSE2-NEXT:    movdqa %xmm7, -{{[0-9]+}}(%rsp)
   4402 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   4403 ; SSE2-NEXT:    andl $1, %eax
   4404 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4405 ; SSE2-NEXT:    andl $1, %ecx
   4406 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   4407 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4408 ; SSE2-NEXT:    andl $1, %ecx
   4409 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   4410 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4411 ; SSE2-NEXT:    andl $1, %ecx
   4412 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   4413 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4414 ; SSE2-NEXT:    andl $1, %ecx
   4415 ; SSE2-NEXT:    shll $4, %ecx
   4416 ; SSE2-NEXT:    orl %eax, %ecx
   4417 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   4418 ; SSE2-NEXT:    andl $1, %eax
   4419 ; SSE2-NEXT:    shll $5, %eax
   4420 ; SSE2-NEXT:    orl %ecx, %eax
   4421 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4422 ; SSE2-NEXT:    andl $1, %ecx
   4423 ; SSE2-NEXT:    shll $6, %ecx
   4424 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4425 ; SSE2-NEXT:    andl $1, %edx
   4426 ; SSE2-NEXT:    shll $7, %edx
   4427 ; SSE2-NEXT:    orl %ecx, %edx
   4428 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4429 ; SSE2-NEXT:    andl $1, %ecx
   4430 ; SSE2-NEXT:    shll $8, %ecx
   4431 ; SSE2-NEXT:    orl %edx, %ecx
   4432 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4433 ; SSE2-NEXT:    andl $1, %edx
   4434 ; SSE2-NEXT:    shll $9, %edx
   4435 ; SSE2-NEXT:    orl %ecx, %edx
   4436 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4437 ; SSE2-NEXT:    andl $1, %ecx
   4438 ; SSE2-NEXT:    shll $10, %ecx
   4439 ; SSE2-NEXT:    orl %edx, %ecx
   4440 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4441 ; SSE2-NEXT:    andl $1, %edx
   4442 ; SSE2-NEXT:    shll $11, %edx
   4443 ; SSE2-NEXT:    orl %ecx, %edx
   4444 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4445 ; SSE2-NEXT:    andl $1, %ecx
   4446 ; SSE2-NEXT:    shll $12, %ecx
   4447 ; SSE2-NEXT:    orl %edx, %ecx
   4448 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4449 ; SSE2-NEXT:    andl $1, %edx
   4450 ; SSE2-NEXT:    shll $13, %edx
   4451 ; SSE2-NEXT:    orl %ecx, %edx
   4452 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4453 ; SSE2-NEXT:    andl $1, %ecx
   4454 ; SSE2-NEXT:    shll $14, %ecx
   4455 ; SSE2-NEXT:    orl %edx, %ecx
   4456 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4457 ; SSE2-NEXT:    shll $15, %edx
   4458 ; SSE2-NEXT:    orl %ecx, %edx
   4459 ; SSE2-NEXT:    orl %eax, %edx
   4460 ; SSE2-NEXT:    movw %dx, 14(%rdi)
   4461 ; SSE2-NEXT:    movdqa %xmm6, -{{[0-9]+}}(%rsp)
   4462 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   4463 ; SSE2-NEXT:    andl $1, %eax
   4464 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4465 ; SSE2-NEXT:    andl $1, %ecx
   4466 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   4467 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4468 ; SSE2-NEXT:    andl $1, %ecx
   4469 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   4470 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4471 ; SSE2-NEXT:    andl $1, %ecx
   4472 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   4473 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4474 ; SSE2-NEXT:    andl $1, %ecx
   4475 ; SSE2-NEXT:    shll $4, %ecx
   4476 ; SSE2-NEXT:    orl %eax, %ecx
   4477 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   4478 ; SSE2-NEXT:    andl $1, %eax
   4479 ; SSE2-NEXT:    shll $5, %eax
   4480 ; SSE2-NEXT:    orl %ecx, %eax
   4481 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4482 ; SSE2-NEXT:    andl $1, %ecx
   4483 ; SSE2-NEXT:    shll $6, %ecx
   4484 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4485 ; SSE2-NEXT:    andl $1, %edx
   4486 ; SSE2-NEXT:    shll $7, %edx
   4487 ; SSE2-NEXT:    orl %ecx, %edx
   4488 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4489 ; SSE2-NEXT:    andl $1, %ecx
   4490 ; SSE2-NEXT:    shll $8, %ecx
   4491 ; SSE2-NEXT:    orl %edx, %ecx
   4492 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4493 ; SSE2-NEXT:    andl $1, %edx
   4494 ; SSE2-NEXT:    shll $9, %edx
   4495 ; SSE2-NEXT:    orl %ecx, %edx
   4496 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4497 ; SSE2-NEXT:    andl $1, %ecx
   4498 ; SSE2-NEXT:    shll $10, %ecx
   4499 ; SSE2-NEXT:    orl %edx, %ecx
   4500 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4501 ; SSE2-NEXT:    andl $1, %edx
   4502 ; SSE2-NEXT:    shll $11, %edx
   4503 ; SSE2-NEXT:    orl %ecx, %edx
   4504 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4505 ; SSE2-NEXT:    andl $1, %ecx
   4506 ; SSE2-NEXT:    shll $12, %ecx
   4507 ; SSE2-NEXT:    orl %edx, %ecx
   4508 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4509 ; SSE2-NEXT:    andl $1, %edx
   4510 ; SSE2-NEXT:    shll $13, %edx
   4511 ; SSE2-NEXT:    orl %ecx, %edx
   4512 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4513 ; SSE2-NEXT:    andl $1, %ecx
   4514 ; SSE2-NEXT:    shll $14, %ecx
   4515 ; SSE2-NEXT:    orl %edx, %ecx
   4516 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4517 ; SSE2-NEXT:    shll $15, %edx
   4518 ; SSE2-NEXT:    orl %ecx, %edx
   4519 ; SSE2-NEXT:    orl %eax, %edx
   4520 ; SSE2-NEXT:    movw %dx, 12(%rdi)
   4521 ; SSE2-NEXT:    movdqa %xmm5, -{{[0-9]+}}(%rsp)
   4522 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   4523 ; SSE2-NEXT:    andl $1, %eax
   4524 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4525 ; SSE2-NEXT:    andl $1, %ecx
   4526 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   4527 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4528 ; SSE2-NEXT:    andl $1, %ecx
   4529 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   4530 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4531 ; SSE2-NEXT:    andl $1, %ecx
   4532 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   4533 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4534 ; SSE2-NEXT:    andl $1, %ecx
   4535 ; SSE2-NEXT:    shll $4, %ecx
   4536 ; SSE2-NEXT:    orl %eax, %ecx
   4537 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   4538 ; SSE2-NEXT:    andl $1, %eax
   4539 ; SSE2-NEXT:    shll $5, %eax
   4540 ; SSE2-NEXT:    orl %ecx, %eax
   4541 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4542 ; SSE2-NEXT:    andl $1, %ecx
   4543 ; SSE2-NEXT:    shll $6, %ecx
   4544 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4545 ; SSE2-NEXT:    andl $1, %edx
   4546 ; SSE2-NEXT:    shll $7, %edx
   4547 ; SSE2-NEXT:    orl %ecx, %edx
   4548 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4549 ; SSE2-NEXT:    andl $1, %ecx
   4550 ; SSE2-NEXT:    shll $8, %ecx
   4551 ; SSE2-NEXT:    orl %edx, %ecx
   4552 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4553 ; SSE2-NEXT:    andl $1, %edx
   4554 ; SSE2-NEXT:    shll $9, %edx
   4555 ; SSE2-NEXT:    orl %ecx, %edx
   4556 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4557 ; SSE2-NEXT:    andl $1, %ecx
   4558 ; SSE2-NEXT:    shll $10, %ecx
   4559 ; SSE2-NEXT:    orl %edx, %ecx
   4560 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4561 ; SSE2-NEXT:    andl $1, %edx
   4562 ; SSE2-NEXT:    shll $11, %edx
   4563 ; SSE2-NEXT:    orl %ecx, %edx
   4564 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4565 ; SSE2-NEXT:    andl $1, %ecx
   4566 ; SSE2-NEXT:    shll $12, %ecx
   4567 ; SSE2-NEXT:    orl %edx, %ecx
   4568 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4569 ; SSE2-NEXT:    andl $1, %edx
   4570 ; SSE2-NEXT:    shll $13, %edx
   4571 ; SSE2-NEXT:    orl %ecx, %edx
   4572 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4573 ; SSE2-NEXT:    andl $1, %ecx
   4574 ; SSE2-NEXT:    shll $14, %ecx
   4575 ; SSE2-NEXT:    orl %edx, %ecx
   4576 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4577 ; SSE2-NEXT:    shll $15, %edx
   4578 ; SSE2-NEXT:    orl %ecx, %edx
   4579 ; SSE2-NEXT:    orl %eax, %edx
   4580 ; SSE2-NEXT:    movw %dx, 10(%rdi)
   4581 ; SSE2-NEXT:    movdqa %xmm4, -{{[0-9]+}}(%rsp)
   4582 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   4583 ; SSE2-NEXT:    andl $1, %eax
   4584 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4585 ; SSE2-NEXT:    andl $1, %ecx
   4586 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   4587 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4588 ; SSE2-NEXT:    andl $1, %ecx
   4589 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   4590 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4591 ; SSE2-NEXT:    andl $1, %ecx
   4592 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   4593 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4594 ; SSE2-NEXT:    andl $1, %ecx
   4595 ; SSE2-NEXT:    shll $4, %ecx
   4596 ; SSE2-NEXT:    orl %eax, %ecx
   4597 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   4598 ; SSE2-NEXT:    andl $1, %eax
   4599 ; SSE2-NEXT:    shll $5, %eax
   4600 ; SSE2-NEXT:    orl %ecx, %eax
   4601 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4602 ; SSE2-NEXT:    andl $1, %ecx
   4603 ; SSE2-NEXT:    shll $6, %ecx
   4604 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4605 ; SSE2-NEXT:    andl $1, %edx
   4606 ; SSE2-NEXT:    shll $7, %edx
   4607 ; SSE2-NEXT:    orl %ecx, %edx
   4608 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4609 ; SSE2-NEXT:    andl $1, %ecx
   4610 ; SSE2-NEXT:    shll $8, %ecx
   4611 ; SSE2-NEXT:    orl %edx, %ecx
   4612 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4613 ; SSE2-NEXT:    andl $1, %edx
   4614 ; SSE2-NEXT:    shll $9, %edx
   4615 ; SSE2-NEXT:    orl %ecx, %edx
   4616 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4617 ; SSE2-NEXT:    andl $1, %ecx
   4618 ; SSE2-NEXT:    shll $10, %ecx
   4619 ; SSE2-NEXT:    orl %edx, %ecx
   4620 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4621 ; SSE2-NEXT:    andl $1, %edx
   4622 ; SSE2-NEXT:    shll $11, %edx
   4623 ; SSE2-NEXT:    orl %ecx, %edx
   4624 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4625 ; SSE2-NEXT:    andl $1, %ecx
   4626 ; SSE2-NEXT:    shll $12, %ecx
   4627 ; SSE2-NEXT:    orl %edx, %ecx
   4628 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4629 ; SSE2-NEXT:    andl $1, %edx
   4630 ; SSE2-NEXT:    shll $13, %edx
   4631 ; SSE2-NEXT:    orl %ecx, %edx
   4632 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4633 ; SSE2-NEXT:    andl $1, %ecx
   4634 ; SSE2-NEXT:    shll $14, %ecx
   4635 ; SSE2-NEXT:    orl %edx, %ecx
   4636 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4637 ; SSE2-NEXT:    shll $15, %edx
   4638 ; SSE2-NEXT:    orl %ecx, %edx
   4639 ; SSE2-NEXT:    orl %eax, %edx
   4640 ; SSE2-NEXT:    movw %dx, 8(%rdi)
   4641 ; SSE2-NEXT:    movdqa %xmm3, -{{[0-9]+}}(%rsp)
   4642 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   4643 ; SSE2-NEXT:    andl $1, %eax
   4644 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4645 ; SSE2-NEXT:    andl $1, %ecx
   4646 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   4647 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4648 ; SSE2-NEXT:    andl $1, %ecx
   4649 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   4650 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4651 ; SSE2-NEXT:    andl $1, %ecx
   4652 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   4653 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4654 ; SSE2-NEXT:    andl $1, %ecx
   4655 ; SSE2-NEXT:    shll $4, %ecx
   4656 ; SSE2-NEXT:    orl %eax, %ecx
   4657 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   4658 ; SSE2-NEXT:    andl $1, %eax
   4659 ; SSE2-NEXT:    shll $5, %eax
   4660 ; SSE2-NEXT:    orl %ecx, %eax
   4661 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4662 ; SSE2-NEXT:    andl $1, %ecx
   4663 ; SSE2-NEXT:    shll $6, %ecx
   4664 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4665 ; SSE2-NEXT:    andl $1, %edx
   4666 ; SSE2-NEXT:    shll $7, %edx
   4667 ; SSE2-NEXT:    orl %ecx, %edx
   4668 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4669 ; SSE2-NEXT:    andl $1, %ecx
   4670 ; SSE2-NEXT:    shll $8, %ecx
   4671 ; SSE2-NEXT:    orl %edx, %ecx
   4672 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4673 ; SSE2-NEXT:    andl $1, %edx
   4674 ; SSE2-NEXT:    shll $9, %edx
   4675 ; SSE2-NEXT:    orl %ecx, %edx
   4676 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4677 ; SSE2-NEXT:    andl $1, %ecx
   4678 ; SSE2-NEXT:    shll $10, %ecx
   4679 ; SSE2-NEXT:    orl %edx, %ecx
   4680 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4681 ; SSE2-NEXT:    andl $1, %edx
   4682 ; SSE2-NEXT:    shll $11, %edx
   4683 ; SSE2-NEXT:    orl %ecx, %edx
   4684 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4685 ; SSE2-NEXT:    andl $1, %ecx
   4686 ; SSE2-NEXT:    shll $12, %ecx
   4687 ; SSE2-NEXT:    orl %edx, %ecx
   4688 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4689 ; SSE2-NEXT:    andl $1, %edx
   4690 ; SSE2-NEXT:    shll $13, %edx
   4691 ; SSE2-NEXT:    orl %ecx, %edx
   4692 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4693 ; SSE2-NEXT:    andl $1, %ecx
   4694 ; SSE2-NEXT:    shll $14, %ecx
   4695 ; SSE2-NEXT:    orl %edx, %ecx
   4696 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4697 ; SSE2-NEXT:    shll $15, %edx
   4698 ; SSE2-NEXT:    orl %ecx, %edx
   4699 ; SSE2-NEXT:    orl %eax, %edx
   4700 ; SSE2-NEXT:    movw %dx, 6(%rdi)
   4701 ; SSE2-NEXT:    movdqa %xmm2, -{{[0-9]+}}(%rsp)
   4702 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   4703 ; SSE2-NEXT:    andl $1, %eax
   4704 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4705 ; SSE2-NEXT:    andl $1, %ecx
   4706 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   4707 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4708 ; SSE2-NEXT:    andl $1, %ecx
   4709 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   4710 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4711 ; SSE2-NEXT:    andl $1, %ecx
   4712 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   4713 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4714 ; SSE2-NEXT:    andl $1, %ecx
   4715 ; SSE2-NEXT:    shll $4, %ecx
   4716 ; SSE2-NEXT:    orl %eax, %ecx
   4717 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   4718 ; SSE2-NEXT:    andl $1, %eax
   4719 ; SSE2-NEXT:    shll $5, %eax
   4720 ; SSE2-NEXT:    orl %ecx, %eax
   4721 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4722 ; SSE2-NEXT:    andl $1, %ecx
   4723 ; SSE2-NEXT:    shll $6, %ecx
   4724 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4725 ; SSE2-NEXT:    andl $1, %edx
   4726 ; SSE2-NEXT:    shll $7, %edx
   4727 ; SSE2-NEXT:    orl %ecx, %edx
   4728 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4729 ; SSE2-NEXT:    andl $1, %ecx
   4730 ; SSE2-NEXT:    shll $8, %ecx
   4731 ; SSE2-NEXT:    orl %edx, %ecx
   4732 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4733 ; SSE2-NEXT:    andl $1, %edx
   4734 ; SSE2-NEXT:    shll $9, %edx
   4735 ; SSE2-NEXT:    orl %ecx, %edx
   4736 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4737 ; SSE2-NEXT:    andl $1, %ecx
   4738 ; SSE2-NEXT:    shll $10, %ecx
   4739 ; SSE2-NEXT:    orl %edx, %ecx
   4740 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4741 ; SSE2-NEXT:    andl $1, %edx
   4742 ; SSE2-NEXT:    shll $11, %edx
   4743 ; SSE2-NEXT:    orl %ecx, %edx
   4744 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4745 ; SSE2-NEXT:    andl $1, %ecx
   4746 ; SSE2-NEXT:    shll $12, %ecx
   4747 ; SSE2-NEXT:    orl %edx, %ecx
   4748 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4749 ; SSE2-NEXT:    andl $1, %edx
   4750 ; SSE2-NEXT:    shll $13, %edx
   4751 ; SSE2-NEXT:    orl %ecx, %edx
   4752 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4753 ; SSE2-NEXT:    andl $1, %ecx
   4754 ; SSE2-NEXT:    shll $14, %ecx
   4755 ; SSE2-NEXT:    orl %edx, %ecx
   4756 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4757 ; SSE2-NEXT:    shll $15, %edx
   4758 ; SSE2-NEXT:    orl %ecx, %edx
   4759 ; SSE2-NEXT:    orl %eax, %edx
   4760 ; SSE2-NEXT:    movw %dx, 4(%rdi)
   4761 ; SSE2-NEXT:    movdqa %xmm1, -{{[0-9]+}}(%rsp)
   4762 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   4763 ; SSE2-NEXT:    andl $1, %eax
   4764 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4765 ; SSE2-NEXT:    andl $1, %ecx
   4766 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   4767 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4768 ; SSE2-NEXT:    andl $1, %ecx
   4769 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   4770 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4771 ; SSE2-NEXT:    andl $1, %ecx
   4772 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   4773 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4774 ; SSE2-NEXT:    andl $1, %ecx
   4775 ; SSE2-NEXT:    shll $4, %ecx
   4776 ; SSE2-NEXT:    orl %eax, %ecx
   4777 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   4778 ; SSE2-NEXT:    andl $1, %eax
   4779 ; SSE2-NEXT:    shll $5, %eax
   4780 ; SSE2-NEXT:    orl %ecx, %eax
   4781 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4782 ; SSE2-NEXT:    andl $1, %ecx
   4783 ; SSE2-NEXT:    shll $6, %ecx
   4784 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4785 ; SSE2-NEXT:    andl $1, %edx
   4786 ; SSE2-NEXT:    shll $7, %edx
   4787 ; SSE2-NEXT:    orl %ecx, %edx
   4788 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4789 ; SSE2-NEXT:    andl $1, %ecx
   4790 ; SSE2-NEXT:    shll $8, %ecx
   4791 ; SSE2-NEXT:    orl %edx, %ecx
   4792 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4793 ; SSE2-NEXT:    andl $1, %edx
   4794 ; SSE2-NEXT:    shll $9, %edx
   4795 ; SSE2-NEXT:    orl %ecx, %edx
   4796 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4797 ; SSE2-NEXT:    andl $1, %ecx
   4798 ; SSE2-NEXT:    shll $10, %ecx
   4799 ; SSE2-NEXT:    orl %edx, %ecx
   4800 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4801 ; SSE2-NEXT:    andl $1, %edx
   4802 ; SSE2-NEXT:    shll $11, %edx
   4803 ; SSE2-NEXT:    orl %ecx, %edx
   4804 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4805 ; SSE2-NEXT:    andl $1, %ecx
   4806 ; SSE2-NEXT:    shll $12, %ecx
   4807 ; SSE2-NEXT:    orl %edx, %ecx
   4808 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4809 ; SSE2-NEXT:    andl $1, %edx
   4810 ; SSE2-NEXT:    shll $13, %edx
   4811 ; SSE2-NEXT:    orl %ecx, %edx
   4812 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4813 ; SSE2-NEXT:    andl $1, %ecx
   4814 ; SSE2-NEXT:    shll $14, %ecx
   4815 ; SSE2-NEXT:    orl %edx, %ecx
   4816 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4817 ; SSE2-NEXT:    shll $15, %edx
   4818 ; SSE2-NEXT:    orl %ecx, %edx
   4819 ; SSE2-NEXT:    orl %eax, %edx
   4820 ; SSE2-NEXT:    movw %dx, 2(%rdi)
   4821 ; SSE2-NEXT:    movdqa %xmm0, -{{[0-9]+}}(%rsp)
   4822 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   4823 ; SSE2-NEXT:    andl $1, %eax
   4824 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4825 ; SSE2-NEXT:    andl $1, %ecx
   4826 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   4827 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4828 ; SSE2-NEXT:    andl $1, %ecx
   4829 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   4830 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4831 ; SSE2-NEXT:    andl $1, %ecx
   4832 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   4833 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4834 ; SSE2-NEXT:    andl $1, %ecx
   4835 ; SSE2-NEXT:    shll $4, %ecx
   4836 ; SSE2-NEXT:    orl %eax, %ecx
   4837 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   4838 ; SSE2-NEXT:    andl $1, %eax
   4839 ; SSE2-NEXT:    shll $5, %eax
   4840 ; SSE2-NEXT:    orl %ecx, %eax
   4841 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4842 ; SSE2-NEXT:    andl $1, %ecx
   4843 ; SSE2-NEXT:    shll $6, %ecx
   4844 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4845 ; SSE2-NEXT:    andl $1, %edx
   4846 ; SSE2-NEXT:    shll $7, %edx
   4847 ; SSE2-NEXT:    orl %ecx, %edx
   4848 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4849 ; SSE2-NEXT:    andl $1, %ecx
   4850 ; SSE2-NEXT:    shll $8, %ecx
   4851 ; SSE2-NEXT:    orl %edx, %ecx
   4852 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4853 ; SSE2-NEXT:    andl $1, %edx
   4854 ; SSE2-NEXT:    shll $9, %edx
   4855 ; SSE2-NEXT:    orl %ecx, %edx
   4856 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4857 ; SSE2-NEXT:    andl $1, %ecx
   4858 ; SSE2-NEXT:    shll $10, %ecx
   4859 ; SSE2-NEXT:    orl %edx, %ecx
   4860 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4861 ; SSE2-NEXT:    andl $1, %edx
   4862 ; SSE2-NEXT:    shll $11, %edx
   4863 ; SSE2-NEXT:    orl %ecx, %edx
   4864 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4865 ; SSE2-NEXT:    andl $1, %ecx
   4866 ; SSE2-NEXT:    shll $12, %ecx
   4867 ; SSE2-NEXT:    orl %edx, %ecx
   4868 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4869 ; SSE2-NEXT:    andl $1, %edx
   4870 ; SSE2-NEXT:    shll $13, %edx
   4871 ; SSE2-NEXT:    orl %ecx, %edx
   4872 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   4873 ; SSE2-NEXT:    andl $1, %ecx
   4874 ; SSE2-NEXT:    shll $14, %ecx
   4875 ; SSE2-NEXT:    orl %edx, %ecx
   4876 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   4877 ; SSE2-NEXT:    shll $15, %edx
   4878 ; SSE2-NEXT:    orl %ecx, %edx
   4879 ; SSE2-NEXT:    orl %eax, %edx
   4880 ; SSE2-NEXT:    movw %dx, (%rdi)
   4881 ; SSE2-NEXT:    movq %rdi, %rax
   4882 ; SSE2-NEXT:    popq %rcx
   4883 ; SSE2-NEXT:    retq
   4884 ;
   4885 ; SSE42-LABEL: test_cmp_v128i8:
   4886 ; SSE42:       # %bb.0:
   4887 ; SSE42-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm0
   4888 ; SSE42-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm1
   4889 ; SSE42-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm2
   4890 ; SSE42-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm3
   4891 ; SSE42-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm4
   4892 ; SSE42-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm5
   4893 ; SSE42-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm6
   4894 ; SSE42-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm7
   4895 ; SSE42-NEXT:    pextrb $1, %xmm7, %eax
   4896 ; SSE42-NEXT:    andl $1, %eax
   4897 ; SSE42-NEXT:    pextrb $0, %xmm7, %ecx
   4898 ; SSE42-NEXT:    andl $1, %ecx
   4899 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
   4900 ; SSE42-NEXT:    pextrb $2, %xmm7, %ecx
   4901 ; SSE42-NEXT:    andl $1, %ecx
   4902 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
   4903 ; SSE42-NEXT:    pextrb $3, %xmm7, %ecx
   4904 ; SSE42-NEXT:    andl $1, %ecx
   4905 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
   4906 ; SSE42-NEXT:    pextrb $4, %xmm7, %ecx
   4907 ; SSE42-NEXT:    andl $1, %ecx
   4908 ; SSE42-NEXT:    shll $4, %ecx
   4909 ; SSE42-NEXT:    orl %eax, %ecx
   4910 ; SSE42-NEXT:    pextrb $5, %xmm7, %eax
   4911 ; SSE42-NEXT:    andl $1, %eax
   4912 ; SSE42-NEXT:    shll $5, %eax
   4913 ; SSE42-NEXT:    orl %ecx, %eax
   4914 ; SSE42-NEXT:    pextrb $6, %xmm7, %ecx
   4915 ; SSE42-NEXT:    andl $1, %ecx
   4916 ; SSE42-NEXT:    shll $6, %ecx
   4917 ; SSE42-NEXT:    pextrb $7, %xmm7, %edx
   4918 ; SSE42-NEXT:    andl $1, %edx
   4919 ; SSE42-NEXT:    shll $7, %edx
   4920 ; SSE42-NEXT:    orl %ecx, %edx
   4921 ; SSE42-NEXT:    pextrb $8, %xmm7, %ecx
   4922 ; SSE42-NEXT:    andl $1, %ecx
   4923 ; SSE42-NEXT:    shll $8, %ecx
   4924 ; SSE42-NEXT:    orl %edx, %ecx
   4925 ; SSE42-NEXT:    pextrb $9, %xmm7, %edx
   4926 ; SSE42-NEXT:    andl $1, %edx
   4927 ; SSE42-NEXT:    shll $9, %edx
   4928 ; SSE42-NEXT:    orl %ecx, %edx
   4929 ; SSE42-NEXT:    pextrb $10, %xmm7, %ecx
   4930 ; SSE42-NEXT:    andl $1, %ecx
   4931 ; SSE42-NEXT:    shll $10, %ecx
   4932 ; SSE42-NEXT:    orl %edx, %ecx
   4933 ; SSE42-NEXT:    pextrb $11, %xmm7, %edx
   4934 ; SSE42-NEXT:    andl $1, %edx
   4935 ; SSE42-NEXT:    shll $11, %edx
   4936 ; SSE42-NEXT:    orl %ecx, %edx
   4937 ; SSE42-NEXT:    pextrb $12, %xmm7, %ecx
   4938 ; SSE42-NEXT:    andl $1, %ecx
   4939 ; SSE42-NEXT:    shll $12, %ecx
   4940 ; SSE42-NEXT:    orl %edx, %ecx
   4941 ; SSE42-NEXT:    pextrb $13, %xmm7, %edx
   4942 ; SSE42-NEXT:    andl $1, %edx
   4943 ; SSE42-NEXT:    shll $13, %edx
   4944 ; SSE42-NEXT:    orl %ecx, %edx
   4945 ; SSE42-NEXT:    pextrb $14, %xmm7, %ecx
   4946 ; SSE42-NEXT:    andl $1, %ecx
   4947 ; SSE42-NEXT:    shll $14, %ecx
   4948 ; SSE42-NEXT:    orl %edx, %ecx
   4949 ; SSE42-NEXT:    pextrb $15, %xmm7, %edx
   4950 ; SSE42-NEXT:    shll $15, %edx
   4951 ; SSE42-NEXT:    orl %ecx, %edx
   4952 ; SSE42-NEXT:    orl %eax, %edx
   4953 ; SSE42-NEXT:    movw %dx, 14(%rdi)
   4954 ; SSE42-NEXT:    pextrb $1, %xmm6, %eax
   4955 ; SSE42-NEXT:    andl $1, %eax
   4956 ; SSE42-NEXT:    pextrb $0, %xmm6, %ecx
   4957 ; SSE42-NEXT:    andl $1, %ecx
   4958 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
   4959 ; SSE42-NEXT:    pextrb $2, %xmm6, %ecx
   4960 ; SSE42-NEXT:    andl $1, %ecx
   4961 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
   4962 ; SSE42-NEXT:    pextrb $3, %xmm6, %ecx
   4963 ; SSE42-NEXT:    andl $1, %ecx
   4964 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
   4965 ; SSE42-NEXT:    pextrb $4, %xmm6, %ecx
   4966 ; SSE42-NEXT:    andl $1, %ecx
   4967 ; SSE42-NEXT:    shll $4, %ecx
   4968 ; SSE42-NEXT:    orl %eax, %ecx
   4969 ; SSE42-NEXT:    pextrb $5, %xmm6, %eax
   4970 ; SSE42-NEXT:    andl $1, %eax
   4971 ; SSE42-NEXT:    shll $5, %eax
   4972 ; SSE42-NEXT:    orl %ecx, %eax
   4973 ; SSE42-NEXT:    pextrb $6, %xmm6, %ecx
   4974 ; SSE42-NEXT:    andl $1, %ecx
   4975 ; SSE42-NEXT:    shll $6, %ecx
   4976 ; SSE42-NEXT:    pextrb $7, %xmm6, %edx
   4977 ; SSE42-NEXT:    andl $1, %edx
   4978 ; SSE42-NEXT:    shll $7, %edx
   4979 ; SSE42-NEXT:    orl %ecx, %edx
   4980 ; SSE42-NEXT:    pextrb $8, %xmm6, %ecx
   4981 ; SSE42-NEXT:    andl $1, %ecx
   4982 ; SSE42-NEXT:    shll $8, %ecx
   4983 ; SSE42-NEXT:    orl %edx, %ecx
   4984 ; SSE42-NEXT:    pextrb $9, %xmm6, %edx
   4985 ; SSE42-NEXT:    andl $1, %edx
   4986 ; SSE42-NEXT:    shll $9, %edx
   4987 ; SSE42-NEXT:    orl %ecx, %edx
   4988 ; SSE42-NEXT:    pextrb $10, %xmm6, %ecx
   4989 ; SSE42-NEXT:    andl $1, %ecx
   4990 ; SSE42-NEXT:    shll $10, %ecx
   4991 ; SSE42-NEXT:    orl %edx, %ecx
   4992 ; SSE42-NEXT:    pextrb $11, %xmm6, %edx
   4993 ; SSE42-NEXT:    andl $1, %edx
   4994 ; SSE42-NEXT:    shll $11, %edx
   4995 ; SSE42-NEXT:    orl %ecx, %edx
   4996 ; SSE42-NEXT:    pextrb $12, %xmm6, %ecx
   4997 ; SSE42-NEXT:    andl $1, %ecx
   4998 ; SSE42-NEXT:    shll $12, %ecx
   4999 ; SSE42-NEXT:    orl %edx, %ecx
   5000 ; SSE42-NEXT:    pextrb $13, %xmm6, %edx
   5001 ; SSE42-NEXT:    andl $1, %edx
   5002 ; SSE42-NEXT:    shll $13, %edx
   5003 ; SSE42-NEXT:    orl %ecx, %edx
   5004 ; SSE42-NEXT:    pextrb $14, %xmm6, %ecx
   5005 ; SSE42-NEXT:    andl $1, %ecx
   5006 ; SSE42-NEXT:    shll $14, %ecx
   5007 ; SSE42-NEXT:    orl %edx, %ecx
   5008 ; SSE42-NEXT:    pextrb $15, %xmm6, %edx
   5009 ; SSE42-NEXT:    shll $15, %edx
   5010 ; SSE42-NEXT:    orl %ecx, %edx
   5011 ; SSE42-NEXT:    orl %eax, %edx
   5012 ; SSE42-NEXT:    movw %dx, 12(%rdi)
   5013 ; SSE42-NEXT:    pextrb $1, %xmm5, %eax
   5014 ; SSE42-NEXT:    andl $1, %eax
   5015 ; SSE42-NEXT:    pextrb $0, %xmm5, %ecx
   5016 ; SSE42-NEXT:    andl $1, %ecx
   5017 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
   5018 ; SSE42-NEXT:    pextrb $2, %xmm5, %ecx
   5019 ; SSE42-NEXT:    andl $1, %ecx
   5020 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
   5021 ; SSE42-NEXT:    pextrb $3, %xmm5, %ecx
   5022 ; SSE42-NEXT:    andl $1, %ecx
   5023 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
   5024 ; SSE42-NEXT:    pextrb $4, %xmm5, %ecx
   5025 ; SSE42-NEXT:    andl $1, %ecx
   5026 ; SSE42-NEXT:    shll $4, %ecx
   5027 ; SSE42-NEXT:    orl %eax, %ecx
   5028 ; SSE42-NEXT:    pextrb $5, %xmm5, %eax
   5029 ; SSE42-NEXT:    andl $1, %eax
   5030 ; SSE42-NEXT:    shll $5, %eax
   5031 ; SSE42-NEXT:    orl %ecx, %eax
   5032 ; SSE42-NEXT:    pextrb $6, %xmm5, %ecx
   5033 ; SSE42-NEXT:    andl $1, %ecx
   5034 ; SSE42-NEXT:    shll $6, %ecx
   5035 ; SSE42-NEXT:    pextrb $7, %xmm5, %edx
   5036 ; SSE42-NEXT:    andl $1, %edx
   5037 ; SSE42-NEXT:    shll $7, %edx
   5038 ; SSE42-NEXT:    orl %ecx, %edx
   5039 ; SSE42-NEXT:    pextrb $8, %xmm5, %ecx
   5040 ; SSE42-NEXT:    andl $1, %ecx
   5041 ; SSE42-NEXT:    shll $8, %ecx
   5042 ; SSE42-NEXT:    orl %edx, %ecx
   5043 ; SSE42-NEXT:    pextrb $9, %xmm5, %edx
   5044 ; SSE42-NEXT:    andl $1, %edx
   5045 ; SSE42-NEXT:    shll $9, %edx
   5046 ; SSE42-NEXT:    orl %ecx, %edx
   5047 ; SSE42-NEXT:    pextrb $10, %xmm5, %ecx
   5048 ; SSE42-NEXT:    andl $1, %ecx
   5049 ; SSE42-NEXT:    shll $10, %ecx
   5050 ; SSE42-NEXT:    orl %edx, %ecx
   5051 ; SSE42-NEXT:    pextrb $11, %xmm5, %edx
   5052 ; SSE42-NEXT:    andl $1, %edx
   5053 ; SSE42-NEXT:    shll $11, %edx
   5054 ; SSE42-NEXT:    orl %ecx, %edx
   5055 ; SSE42-NEXT:    pextrb $12, %xmm5, %ecx
   5056 ; SSE42-NEXT:    andl $1, %ecx
   5057 ; SSE42-NEXT:    shll $12, %ecx
   5058 ; SSE42-NEXT:    orl %edx, %ecx
   5059 ; SSE42-NEXT:    pextrb $13, %xmm5, %edx
   5060 ; SSE42-NEXT:    andl $1, %edx
   5061 ; SSE42-NEXT:    shll $13, %edx
   5062 ; SSE42-NEXT:    orl %ecx, %edx
   5063 ; SSE42-NEXT:    pextrb $14, %xmm5, %ecx
   5064 ; SSE42-NEXT:    andl $1, %ecx
   5065 ; SSE42-NEXT:    shll $14, %ecx
   5066 ; SSE42-NEXT:    orl %edx, %ecx
   5067 ; SSE42-NEXT:    pextrb $15, %xmm5, %edx
   5068 ; SSE42-NEXT:    shll $15, %edx
   5069 ; SSE42-NEXT:    orl %ecx, %edx
   5070 ; SSE42-NEXT:    orl %eax, %edx
   5071 ; SSE42-NEXT:    movw %dx, 10(%rdi)
   5072 ; SSE42-NEXT:    pextrb $1, %xmm4, %eax
   5073 ; SSE42-NEXT:    andl $1, %eax
   5074 ; SSE42-NEXT:    pextrb $0, %xmm4, %ecx
   5075 ; SSE42-NEXT:    andl $1, %ecx
   5076 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
   5077 ; SSE42-NEXT:    pextrb $2, %xmm4, %ecx
   5078 ; SSE42-NEXT:    andl $1, %ecx
   5079 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
   5080 ; SSE42-NEXT:    pextrb $3, %xmm4, %ecx
   5081 ; SSE42-NEXT:    andl $1, %ecx
   5082 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
   5083 ; SSE42-NEXT:    pextrb $4, %xmm4, %ecx
   5084 ; SSE42-NEXT:    andl $1, %ecx
   5085 ; SSE42-NEXT:    shll $4, %ecx
   5086 ; SSE42-NEXT:    orl %eax, %ecx
   5087 ; SSE42-NEXT:    pextrb $5, %xmm4, %eax
   5088 ; SSE42-NEXT:    andl $1, %eax
   5089 ; SSE42-NEXT:    shll $5, %eax
   5090 ; SSE42-NEXT:    orl %ecx, %eax
   5091 ; SSE42-NEXT:    pextrb $6, %xmm4, %ecx
   5092 ; SSE42-NEXT:    andl $1, %ecx
   5093 ; SSE42-NEXT:    shll $6, %ecx
   5094 ; SSE42-NEXT:    pextrb $7, %xmm4, %edx
   5095 ; SSE42-NEXT:    andl $1, %edx
   5096 ; SSE42-NEXT:    shll $7, %edx
   5097 ; SSE42-NEXT:    orl %ecx, %edx
   5098 ; SSE42-NEXT:    pextrb $8, %xmm4, %ecx
   5099 ; SSE42-NEXT:    andl $1, %ecx
   5100 ; SSE42-NEXT:    shll $8, %ecx
   5101 ; SSE42-NEXT:    orl %edx, %ecx
   5102 ; SSE42-NEXT:    pextrb $9, %xmm4, %edx
   5103 ; SSE42-NEXT:    andl $1, %edx
   5104 ; SSE42-NEXT:    shll $9, %edx
   5105 ; SSE42-NEXT:    orl %ecx, %edx
   5106 ; SSE42-NEXT:    pextrb $10, %xmm4, %ecx
   5107 ; SSE42-NEXT:    andl $1, %ecx
   5108 ; SSE42-NEXT:    shll $10, %ecx
   5109 ; SSE42-NEXT:    orl %edx, %ecx
   5110 ; SSE42-NEXT:    pextrb $11, %xmm4, %edx
   5111 ; SSE42-NEXT:    andl $1, %edx
   5112 ; SSE42-NEXT:    shll $11, %edx
   5113 ; SSE42-NEXT:    orl %ecx, %edx
   5114 ; SSE42-NEXT:    pextrb $12, %xmm4, %ecx
   5115 ; SSE42-NEXT:    andl $1, %ecx
   5116 ; SSE42-NEXT:    shll $12, %ecx
   5117 ; SSE42-NEXT:    orl %edx, %ecx
   5118 ; SSE42-NEXT:    pextrb $13, %xmm4, %edx
   5119 ; SSE42-NEXT:    andl $1, %edx
   5120 ; SSE42-NEXT:    shll $13, %edx
   5121 ; SSE42-NEXT:    orl %ecx, %edx
   5122 ; SSE42-NEXT:    pextrb $14, %xmm4, %ecx
   5123 ; SSE42-NEXT:    andl $1, %ecx
   5124 ; SSE42-NEXT:    shll $14, %ecx
   5125 ; SSE42-NEXT:    orl %edx, %ecx
   5126 ; SSE42-NEXT:    pextrb $15, %xmm4, %edx
   5127 ; SSE42-NEXT:    shll $15, %edx
   5128 ; SSE42-NEXT:    orl %ecx, %edx
   5129 ; SSE42-NEXT:    orl %eax, %edx
   5130 ; SSE42-NEXT:    movw %dx, 8(%rdi)
   5131 ; SSE42-NEXT:    pextrb $1, %xmm3, %eax
   5132 ; SSE42-NEXT:    andl $1, %eax
   5133 ; SSE42-NEXT:    pextrb $0, %xmm3, %ecx
   5134 ; SSE42-NEXT:    andl $1, %ecx
   5135 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
   5136 ; SSE42-NEXT:    pextrb $2, %xmm3, %ecx
   5137 ; SSE42-NEXT:    andl $1, %ecx
   5138 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
   5139 ; SSE42-NEXT:    pextrb $3, %xmm3, %ecx
   5140 ; SSE42-NEXT:    andl $1, %ecx
   5141 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
   5142 ; SSE42-NEXT:    pextrb $4, %xmm3, %ecx
   5143 ; SSE42-NEXT:    andl $1, %ecx
   5144 ; SSE42-NEXT:    shll $4, %ecx
   5145 ; SSE42-NEXT:    orl %eax, %ecx
   5146 ; SSE42-NEXT:    pextrb $5, %xmm3, %eax
   5147 ; SSE42-NEXT:    andl $1, %eax
   5148 ; SSE42-NEXT:    shll $5, %eax
   5149 ; SSE42-NEXT:    orl %ecx, %eax
   5150 ; SSE42-NEXT:    pextrb $6, %xmm3, %ecx
   5151 ; SSE42-NEXT:    andl $1, %ecx
   5152 ; SSE42-NEXT:    shll $6, %ecx
   5153 ; SSE42-NEXT:    pextrb $7, %xmm3, %edx
   5154 ; SSE42-NEXT:    andl $1, %edx
   5155 ; SSE42-NEXT:    shll $7, %edx
   5156 ; SSE42-NEXT:    orl %ecx, %edx
   5157 ; SSE42-NEXT:    pextrb $8, %xmm3, %ecx
   5158 ; SSE42-NEXT:    andl $1, %ecx
   5159 ; SSE42-NEXT:    shll $8, %ecx
   5160 ; SSE42-NEXT:    orl %edx, %ecx
   5161 ; SSE42-NEXT:    pextrb $9, %xmm3, %edx
   5162 ; SSE42-NEXT:    andl $1, %edx
   5163 ; SSE42-NEXT:    shll $9, %edx
   5164 ; SSE42-NEXT:    orl %ecx, %edx
   5165 ; SSE42-NEXT:    pextrb $10, %xmm3, %ecx
   5166 ; SSE42-NEXT:    andl $1, %ecx
   5167 ; SSE42-NEXT:    shll $10, %ecx
   5168 ; SSE42-NEXT:    orl %edx, %ecx
   5169 ; SSE42-NEXT:    pextrb $11, %xmm3, %edx
   5170 ; SSE42-NEXT:    andl $1, %edx
   5171 ; SSE42-NEXT:    shll $11, %edx
   5172 ; SSE42-NEXT:    orl %ecx, %edx
   5173 ; SSE42-NEXT:    pextrb $12, %xmm3, %ecx
   5174 ; SSE42-NEXT:    andl $1, %ecx
   5175 ; SSE42-NEXT:    shll $12, %ecx
   5176 ; SSE42-NEXT:    orl %edx, %ecx
   5177 ; SSE42-NEXT:    pextrb $13, %xmm3, %edx
   5178 ; SSE42-NEXT:    andl $1, %edx
   5179 ; SSE42-NEXT:    shll $13, %edx
   5180 ; SSE42-NEXT:    orl %ecx, %edx
   5181 ; SSE42-NEXT:    pextrb $14, %xmm3, %ecx
   5182 ; SSE42-NEXT:    andl $1, %ecx
   5183 ; SSE42-NEXT:    shll $14, %ecx
   5184 ; SSE42-NEXT:    orl %edx, %ecx
   5185 ; SSE42-NEXT:    pextrb $15, %xmm3, %edx
   5186 ; SSE42-NEXT:    shll $15, %edx
   5187 ; SSE42-NEXT:    orl %ecx, %edx
   5188 ; SSE42-NEXT:    orl %eax, %edx
   5189 ; SSE42-NEXT:    movw %dx, 6(%rdi)
   5190 ; SSE42-NEXT:    pextrb $1, %xmm2, %eax
   5191 ; SSE42-NEXT:    andl $1, %eax
   5192 ; SSE42-NEXT:    pextrb $0, %xmm2, %ecx
   5193 ; SSE42-NEXT:    andl $1, %ecx
   5194 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
   5195 ; SSE42-NEXT:    pextrb $2, %xmm2, %ecx
   5196 ; SSE42-NEXT:    andl $1, %ecx
   5197 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
   5198 ; SSE42-NEXT:    pextrb $3, %xmm2, %ecx
   5199 ; SSE42-NEXT:    andl $1, %ecx
   5200 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
   5201 ; SSE42-NEXT:    pextrb $4, %xmm2, %ecx
   5202 ; SSE42-NEXT:    andl $1, %ecx
   5203 ; SSE42-NEXT:    shll $4, %ecx
   5204 ; SSE42-NEXT:    orl %eax, %ecx
   5205 ; SSE42-NEXT:    pextrb $5, %xmm2, %eax
   5206 ; SSE42-NEXT:    andl $1, %eax
   5207 ; SSE42-NEXT:    shll $5, %eax
   5208 ; SSE42-NEXT:    orl %ecx, %eax
   5209 ; SSE42-NEXT:    pextrb $6, %xmm2, %ecx
   5210 ; SSE42-NEXT:    andl $1, %ecx
   5211 ; SSE42-NEXT:    shll $6, %ecx
   5212 ; SSE42-NEXT:    pextrb $7, %xmm2, %edx
   5213 ; SSE42-NEXT:    andl $1, %edx
   5214 ; SSE42-NEXT:    shll $7, %edx
   5215 ; SSE42-NEXT:    orl %ecx, %edx
   5216 ; SSE42-NEXT:    pextrb $8, %xmm2, %ecx
   5217 ; SSE42-NEXT:    andl $1, %ecx
   5218 ; SSE42-NEXT:    shll $8, %ecx
   5219 ; SSE42-NEXT:    orl %edx, %ecx
   5220 ; SSE42-NEXT:    pextrb $9, %xmm2, %edx
   5221 ; SSE42-NEXT:    andl $1, %edx
   5222 ; SSE42-NEXT:    shll $9, %edx
   5223 ; SSE42-NEXT:    orl %ecx, %edx
   5224 ; SSE42-NEXT:    pextrb $10, %xmm2, %ecx
   5225 ; SSE42-NEXT:    andl $1, %ecx
   5226 ; SSE42-NEXT:    shll $10, %ecx
   5227 ; SSE42-NEXT:    orl %edx, %ecx
   5228 ; SSE42-NEXT:    pextrb $11, %xmm2, %edx
   5229 ; SSE42-NEXT:    andl $1, %edx
   5230 ; SSE42-NEXT:    shll $11, %edx
   5231 ; SSE42-NEXT:    orl %ecx, %edx
   5232 ; SSE42-NEXT:    pextrb $12, %xmm2, %ecx
   5233 ; SSE42-NEXT:    andl $1, %ecx
   5234 ; SSE42-NEXT:    shll $12, %ecx
   5235 ; SSE42-NEXT:    orl %edx, %ecx
   5236 ; SSE42-NEXT:    pextrb $13, %xmm2, %edx
   5237 ; SSE42-NEXT:    andl $1, %edx
   5238 ; SSE42-NEXT:    shll $13, %edx
   5239 ; SSE42-NEXT:    orl %ecx, %edx
   5240 ; SSE42-NEXT:    pextrb $14, %xmm2, %ecx
   5241 ; SSE42-NEXT:    andl $1, %ecx
   5242 ; SSE42-NEXT:    shll $14, %ecx
   5243 ; SSE42-NEXT:    orl %edx, %ecx
   5244 ; SSE42-NEXT:    pextrb $15, %xmm2, %edx
   5245 ; SSE42-NEXT:    shll $15, %edx
   5246 ; SSE42-NEXT:    orl %ecx, %edx
   5247 ; SSE42-NEXT:    orl %eax, %edx
   5248 ; SSE42-NEXT:    movw %dx, 4(%rdi)
   5249 ; SSE42-NEXT:    pextrb $1, %xmm1, %eax
   5250 ; SSE42-NEXT:    andl $1, %eax
   5251 ; SSE42-NEXT:    pextrb $0, %xmm1, %ecx
   5252 ; SSE42-NEXT:    andl $1, %ecx
   5253 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
   5254 ; SSE42-NEXT:    pextrb $2, %xmm1, %ecx
   5255 ; SSE42-NEXT:    andl $1, %ecx
   5256 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
   5257 ; SSE42-NEXT:    pextrb $3, %xmm1, %ecx
   5258 ; SSE42-NEXT:    andl $1, %ecx
   5259 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
   5260 ; SSE42-NEXT:    pextrb $4, %xmm1, %ecx
   5261 ; SSE42-NEXT:    andl $1, %ecx
   5262 ; SSE42-NEXT:    shll $4, %ecx
   5263 ; SSE42-NEXT:    orl %eax, %ecx
   5264 ; SSE42-NEXT:    pextrb $5, %xmm1, %eax
   5265 ; SSE42-NEXT:    andl $1, %eax
   5266 ; SSE42-NEXT:    shll $5, %eax
   5267 ; SSE42-NEXT:    orl %ecx, %eax
   5268 ; SSE42-NEXT:    pextrb $6, %xmm1, %ecx
   5269 ; SSE42-NEXT:    andl $1, %ecx
   5270 ; SSE42-NEXT:    shll $6, %ecx
   5271 ; SSE42-NEXT:    pextrb $7, %xmm1, %edx
   5272 ; SSE42-NEXT:    andl $1, %edx
   5273 ; SSE42-NEXT:    shll $7, %edx
   5274 ; SSE42-NEXT:    orl %ecx, %edx
   5275 ; SSE42-NEXT:    pextrb $8, %xmm1, %ecx
   5276 ; SSE42-NEXT:    andl $1, %ecx
   5277 ; SSE42-NEXT:    shll $8, %ecx
   5278 ; SSE42-NEXT:    orl %edx, %ecx
   5279 ; SSE42-NEXT:    pextrb $9, %xmm1, %edx
   5280 ; SSE42-NEXT:    andl $1, %edx
   5281 ; SSE42-NEXT:    shll $9, %edx
   5282 ; SSE42-NEXT:    orl %ecx, %edx
   5283 ; SSE42-NEXT:    pextrb $10, %xmm1, %ecx
   5284 ; SSE42-NEXT:    andl $1, %ecx
   5285 ; SSE42-NEXT:    shll $10, %ecx
   5286 ; SSE42-NEXT:    orl %edx, %ecx
   5287 ; SSE42-NEXT:    pextrb $11, %xmm1, %edx
   5288 ; SSE42-NEXT:    andl $1, %edx
   5289 ; SSE42-NEXT:    shll $11, %edx
   5290 ; SSE42-NEXT:    orl %ecx, %edx
   5291 ; SSE42-NEXT:    pextrb $12, %xmm1, %ecx
   5292 ; SSE42-NEXT:    andl $1, %ecx
   5293 ; SSE42-NEXT:    shll $12, %ecx
   5294 ; SSE42-NEXT:    orl %edx, %ecx
   5295 ; SSE42-NEXT:    pextrb $13, %xmm1, %edx
   5296 ; SSE42-NEXT:    andl $1, %edx
   5297 ; SSE42-NEXT:    shll $13, %edx
   5298 ; SSE42-NEXT:    orl %ecx, %edx
   5299 ; SSE42-NEXT:    pextrb $14, %xmm1, %ecx
   5300 ; SSE42-NEXT:    andl $1, %ecx
   5301 ; SSE42-NEXT:    shll $14, %ecx
   5302 ; SSE42-NEXT:    orl %edx, %ecx
   5303 ; SSE42-NEXT:    pextrb $15, %xmm1, %edx
   5304 ; SSE42-NEXT:    shll $15, %edx
   5305 ; SSE42-NEXT:    orl %ecx, %edx
   5306 ; SSE42-NEXT:    orl %eax, %edx
   5307 ; SSE42-NEXT:    movw %dx, 2(%rdi)
   5308 ; SSE42-NEXT:    pextrb $1, %xmm0, %eax
   5309 ; SSE42-NEXT:    andl $1, %eax
   5310 ; SSE42-NEXT:    pextrb $0, %xmm0, %ecx
   5311 ; SSE42-NEXT:    andl $1, %ecx
   5312 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
   5313 ; SSE42-NEXT:    pextrb $2, %xmm0, %ecx
   5314 ; SSE42-NEXT:    andl $1, %ecx
   5315 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
   5316 ; SSE42-NEXT:    pextrb $3, %xmm0, %ecx
   5317 ; SSE42-NEXT:    andl $1, %ecx
   5318 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
   5319 ; SSE42-NEXT:    pextrb $4, %xmm0, %ecx
   5320 ; SSE42-NEXT:    andl $1, %ecx
   5321 ; SSE42-NEXT:    shll $4, %ecx
   5322 ; SSE42-NEXT:    orl %eax, %ecx
   5323 ; SSE42-NEXT:    pextrb $5, %xmm0, %eax
   5324 ; SSE42-NEXT:    andl $1, %eax
   5325 ; SSE42-NEXT:    shll $5, %eax
   5326 ; SSE42-NEXT:    orl %ecx, %eax
   5327 ; SSE42-NEXT:    pextrb $6, %xmm0, %ecx
   5328 ; SSE42-NEXT:    andl $1, %ecx
   5329 ; SSE42-NEXT:    shll $6, %ecx
   5330 ; SSE42-NEXT:    pextrb $7, %xmm0, %edx
   5331 ; SSE42-NEXT:    andl $1, %edx
   5332 ; SSE42-NEXT:    shll $7, %edx
   5333 ; SSE42-NEXT:    orl %ecx, %edx
   5334 ; SSE42-NEXT:    pextrb $8, %xmm0, %ecx
   5335 ; SSE42-NEXT:    andl $1, %ecx
   5336 ; SSE42-NEXT:    shll $8, %ecx
   5337 ; SSE42-NEXT:    orl %edx, %ecx
   5338 ; SSE42-NEXT:    pextrb $9, %xmm0, %edx
   5339 ; SSE42-NEXT:    andl $1, %edx
   5340 ; SSE42-NEXT:    shll $9, %edx
   5341 ; SSE42-NEXT:    orl %ecx, %edx
   5342 ; SSE42-NEXT:    pextrb $10, %xmm0, %ecx
   5343 ; SSE42-NEXT:    andl $1, %ecx
   5344 ; SSE42-NEXT:    shll $10, %ecx
   5345 ; SSE42-NEXT:    orl %edx, %ecx
   5346 ; SSE42-NEXT:    pextrb $11, %xmm0, %edx
   5347 ; SSE42-NEXT:    andl $1, %edx
   5348 ; SSE42-NEXT:    shll $11, %edx
   5349 ; SSE42-NEXT:    orl %ecx, %edx
   5350 ; SSE42-NEXT:    pextrb $12, %xmm0, %ecx
   5351 ; SSE42-NEXT:    andl $1, %ecx
   5352 ; SSE42-NEXT:    shll $12, %ecx
   5353 ; SSE42-NEXT:    orl %edx, %ecx
   5354 ; SSE42-NEXT:    pextrb $13, %xmm0, %edx
   5355 ; SSE42-NEXT:    andl $1, %edx
   5356 ; SSE42-NEXT:    shll $13, %edx
   5357 ; SSE42-NEXT:    orl %ecx, %edx
   5358 ; SSE42-NEXT:    pextrb $14, %xmm0, %ecx
   5359 ; SSE42-NEXT:    andl $1, %ecx
   5360 ; SSE42-NEXT:    shll $14, %ecx
   5361 ; SSE42-NEXT:    orl %edx, %ecx
   5362 ; SSE42-NEXT:    pextrb $15, %xmm0, %edx
   5363 ; SSE42-NEXT:    shll $15, %edx
   5364 ; SSE42-NEXT:    orl %ecx, %edx
   5365 ; SSE42-NEXT:    orl %eax, %edx
   5366 ; SSE42-NEXT:    movw %dx, (%rdi)
   5367 ; SSE42-NEXT:    movq %rdi, %rax
   5368 ; SSE42-NEXT:    retq
   5369 ;
   5370 ; AVX1-LABEL: test_cmp_v128i8:
   5371 ; AVX1:       # %bb.0:
   5372 ; AVX1-NEXT:    vextractf128 $1, %ymm4, %xmm8
   5373 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm9
   5374 ; AVX1-NEXT:    vpcmpgtb %xmm8, %xmm9, %xmm8
   5375 ; AVX1-NEXT:    vpcmpgtb %xmm4, %xmm0, %xmm9
   5376 ; AVX1-NEXT:    vextractf128 $1, %ymm5, %xmm4
   5377 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm0
   5378 ; AVX1-NEXT:    vpcmpgtb %xmm4, %xmm0, %xmm4
   5379 ; AVX1-NEXT:    vpcmpgtb %xmm5, %xmm1, %xmm1
   5380 ; AVX1-NEXT:    vextractf128 $1, %ymm6, %xmm0
   5381 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm5
   5382 ; AVX1-NEXT:    vpcmpgtb %xmm0, %xmm5, %xmm5
   5383 ; AVX1-NEXT:    vpcmpgtb %xmm6, %xmm2, %xmm2
   5384 ; AVX1-NEXT:    vextractf128 $1, %ymm7, %xmm0
   5385 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm6
   5386 ; AVX1-NEXT:    vpcmpgtb %xmm0, %xmm6, %xmm6
   5387 ; AVX1-NEXT:    vpcmpgtb %xmm7, %xmm3, %xmm3
   5388 ; AVX1-NEXT:    vpextrb $1, %xmm3, %eax
   5389 ; AVX1-NEXT:    andl $1, %eax
   5390 ; AVX1-NEXT:    vpextrb $0, %xmm3, %ecx
   5391 ; AVX1-NEXT:    andl $1, %ecx
   5392 ; AVX1-NEXT:    leal (%rcx,%rax,2), %eax
   5393 ; AVX1-NEXT:    vpextrb $2, %xmm3, %ecx
   5394 ; AVX1-NEXT:    andl $1, %ecx
   5395 ; AVX1-NEXT:    leal (%rax,%rcx,4), %eax
   5396 ; AVX1-NEXT:    vpextrb $3, %xmm3, %ecx
   5397 ; AVX1-NEXT:    andl $1, %ecx
   5398 ; AVX1-NEXT:    leal (%rax,%rcx,8), %eax
   5399 ; AVX1-NEXT:    vpextrb $4, %xmm3, %ecx
   5400 ; AVX1-NEXT:    andl $1, %ecx
   5401 ; AVX1-NEXT:    shll $4, %ecx
   5402 ; AVX1-NEXT:    orl %eax, %ecx
   5403 ; AVX1-NEXT:    vpextrb $5, %xmm3, %eax
   5404 ; AVX1-NEXT:    andl $1, %eax
   5405 ; AVX1-NEXT:    shll $5, %eax
   5406 ; AVX1-NEXT:    orl %ecx, %eax
   5407 ; AVX1-NEXT:    vpextrb $6, %xmm3, %ecx
   5408 ; AVX1-NEXT:    andl $1, %ecx
   5409 ; AVX1-NEXT:    shll $6, %ecx
   5410 ; AVX1-NEXT:    vpextrb $7, %xmm3, %edx
   5411 ; AVX1-NEXT:    andl $1, %edx
   5412 ; AVX1-NEXT:    shll $7, %edx
   5413 ; AVX1-NEXT:    orl %ecx, %edx
   5414 ; AVX1-NEXT:    vpextrb $8, %xmm3, %ecx
   5415 ; AVX1-NEXT:    andl $1, %ecx
   5416 ; AVX1-NEXT:    shll $8, %ecx
   5417 ; AVX1-NEXT:    orl %edx, %ecx
   5418 ; AVX1-NEXT:    vpextrb $9, %xmm3, %edx
   5419 ; AVX1-NEXT:    andl $1, %edx
   5420 ; AVX1-NEXT:    shll $9, %edx
   5421 ; AVX1-NEXT:    orl %ecx, %edx
   5422 ; AVX1-NEXT:    vpextrb $10, %xmm3, %ecx
   5423 ; AVX1-NEXT:    andl $1, %ecx
   5424 ; AVX1-NEXT:    shll $10, %ecx
   5425 ; AVX1-NEXT:    orl %edx, %ecx
   5426 ; AVX1-NEXT:    vpextrb $11, %xmm3, %edx
   5427 ; AVX1-NEXT:    andl $1, %edx
   5428 ; AVX1-NEXT:    shll $11, %edx
   5429 ; AVX1-NEXT:    orl %ecx, %edx
   5430 ; AVX1-NEXT:    vpextrb $12, %xmm3, %ecx
   5431 ; AVX1-NEXT:    andl $1, %ecx
   5432 ; AVX1-NEXT:    shll $12, %ecx
   5433 ; AVX1-NEXT:    orl %edx, %ecx
   5434 ; AVX1-NEXT:    vpextrb $13, %xmm3, %edx
   5435 ; AVX1-NEXT:    andl $1, %edx
   5436 ; AVX1-NEXT:    shll $13, %edx
   5437 ; AVX1-NEXT:    orl %ecx, %edx
   5438 ; AVX1-NEXT:    vpextrb $14, %xmm3, %ecx
   5439 ; AVX1-NEXT:    andl $1, %ecx
   5440 ; AVX1-NEXT:    shll $14, %ecx
   5441 ; AVX1-NEXT:    orl %edx, %ecx
   5442 ; AVX1-NEXT:    vpextrb $15, %xmm3, %edx
   5443 ; AVX1-NEXT:    andl $1, %edx
   5444 ; AVX1-NEXT:    shll $15, %edx
   5445 ; AVX1-NEXT:    orl %ecx, %edx
   5446 ; AVX1-NEXT:    vpextrb $0, %xmm6, %ecx
   5447 ; AVX1-NEXT:    andl $1, %ecx
   5448 ; AVX1-NEXT:    shll $16, %ecx
   5449 ; AVX1-NEXT:    orl %edx, %ecx
   5450 ; AVX1-NEXT:    vpextrb $1, %xmm6, %edx
   5451 ; AVX1-NEXT:    andl $1, %edx
   5452 ; AVX1-NEXT:    shll $17, %edx
   5453 ; AVX1-NEXT:    orl %ecx, %edx
   5454 ; AVX1-NEXT:    vpextrb $2, %xmm6, %ecx
   5455 ; AVX1-NEXT:    andl $1, %ecx
   5456 ; AVX1-NEXT:    shll $18, %ecx
   5457 ; AVX1-NEXT:    orl %edx, %ecx
   5458 ; AVX1-NEXT:    vpextrb $3, %xmm6, %edx
   5459 ; AVX1-NEXT:    andl $1, %edx
   5460 ; AVX1-NEXT:    shll $19, %edx
   5461 ; AVX1-NEXT:    orl %ecx, %edx
   5462 ; AVX1-NEXT:    vpextrb $4, %xmm6, %ecx
   5463 ; AVX1-NEXT:    andl $1, %ecx
   5464 ; AVX1-NEXT:    shll $20, %ecx
   5465 ; AVX1-NEXT:    orl %edx, %ecx
   5466 ; AVX1-NEXT:    vpextrb $5, %xmm6, %edx
   5467 ; AVX1-NEXT:    andl $1, %edx
   5468 ; AVX1-NEXT:    shll $21, %edx
   5469 ; AVX1-NEXT:    orl %ecx, %edx
   5470 ; AVX1-NEXT:    vpextrb $6, %xmm6, %ecx
   5471 ; AVX1-NEXT:    andl $1, %ecx
   5472 ; AVX1-NEXT:    shll $22, %ecx
   5473 ; AVX1-NEXT:    orl %edx, %ecx
   5474 ; AVX1-NEXT:    vpextrb $7, %xmm6, %edx
   5475 ; AVX1-NEXT:    andl $1, %edx
   5476 ; AVX1-NEXT:    shll $23, %edx
   5477 ; AVX1-NEXT:    orl %ecx, %edx
   5478 ; AVX1-NEXT:    vpextrb $8, %xmm6, %ecx
   5479 ; AVX1-NEXT:    andl $1, %ecx
   5480 ; AVX1-NEXT:    shll $24, %ecx
   5481 ; AVX1-NEXT:    orl %edx, %ecx
   5482 ; AVX1-NEXT:    vpextrb $9, %xmm6, %edx
   5483 ; AVX1-NEXT:    andl $1, %edx
   5484 ; AVX1-NEXT:    shll $25, %edx
   5485 ; AVX1-NEXT:    orl %ecx, %edx
   5486 ; AVX1-NEXT:    vpextrb $10, %xmm6, %ecx
   5487 ; AVX1-NEXT:    andl $1, %ecx
   5488 ; AVX1-NEXT:    shll $26, %ecx
   5489 ; AVX1-NEXT:    orl %edx, %ecx
   5490 ; AVX1-NEXT:    vpextrb $11, %xmm6, %edx
   5491 ; AVX1-NEXT:    andl $1, %edx
   5492 ; AVX1-NEXT:    shll $27, %edx
   5493 ; AVX1-NEXT:    orl %ecx, %edx
   5494 ; AVX1-NEXT:    vpextrb $12, %xmm6, %ecx
   5495 ; AVX1-NEXT:    andl $1, %ecx
   5496 ; AVX1-NEXT:    shll $28, %ecx
   5497 ; AVX1-NEXT:    orl %edx, %ecx
   5498 ; AVX1-NEXT:    vpextrb $13, %xmm6, %edx
   5499 ; AVX1-NEXT:    andl $1, %edx
   5500 ; AVX1-NEXT:    shll $29, %edx
   5501 ; AVX1-NEXT:    orl %ecx, %edx
   5502 ; AVX1-NEXT:    vpextrb $14, %xmm6, %ecx
   5503 ; AVX1-NEXT:    andl $1, %ecx
   5504 ; AVX1-NEXT:    shll $30, %ecx
   5505 ; AVX1-NEXT:    orl %edx, %ecx
   5506 ; AVX1-NEXT:    vpextrb $15, %xmm6, %edx
   5507 ; AVX1-NEXT:    shll $31, %edx
   5508 ; AVX1-NEXT:    orl %ecx, %edx
   5509 ; AVX1-NEXT:    orl %eax, %edx
   5510 ; AVX1-NEXT:    movl %edx, 12(%rdi)
   5511 ; AVX1-NEXT:    vpextrb $1, %xmm2, %eax
   5512 ; AVX1-NEXT:    andl $1, %eax
   5513 ; AVX1-NEXT:    vpextrb $0, %xmm2, %ecx
   5514 ; AVX1-NEXT:    andl $1, %ecx
   5515 ; AVX1-NEXT:    leal (%rcx,%rax,2), %eax
   5516 ; AVX1-NEXT:    vpextrb $2, %xmm2, %ecx
   5517 ; AVX1-NEXT:    andl $1, %ecx
   5518 ; AVX1-NEXT:    leal (%rax,%rcx,4), %eax
   5519 ; AVX1-NEXT:    vpextrb $3, %xmm2, %ecx
   5520 ; AVX1-NEXT:    andl $1, %ecx
   5521 ; AVX1-NEXT:    leal (%rax,%rcx,8), %eax
   5522 ; AVX1-NEXT:    vpextrb $4, %xmm2, %ecx
   5523 ; AVX1-NEXT:    andl $1, %ecx
   5524 ; AVX1-NEXT:    shll $4, %ecx
   5525 ; AVX1-NEXT:    orl %eax, %ecx
   5526 ; AVX1-NEXT:    vpextrb $5, %xmm2, %eax
   5527 ; AVX1-NEXT:    andl $1, %eax
   5528 ; AVX1-NEXT:    shll $5, %eax
   5529 ; AVX1-NEXT:    orl %ecx, %eax
   5530 ; AVX1-NEXT:    vpextrb $6, %xmm2, %ecx
   5531 ; AVX1-NEXT:    andl $1, %ecx
   5532 ; AVX1-NEXT:    shll $6, %ecx
   5533 ; AVX1-NEXT:    vpextrb $7, %xmm2, %edx
   5534 ; AVX1-NEXT:    andl $1, %edx
   5535 ; AVX1-NEXT:    shll $7, %edx
   5536 ; AVX1-NEXT:    orl %ecx, %edx
   5537 ; AVX1-NEXT:    vpextrb $8, %xmm2, %ecx
   5538 ; AVX1-NEXT:    andl $1, %ecx
   5539 ; AVX1-NEXT:    shll $8, %ecx
   5540 ; AVX1-NEXT:    orl %edx, %ecx
   5541 ; AVX1-NEXT:    vpextrb $9, %xmm2, %edx
   5542 ; AVX1-NEXT:    andl $1, %edx
   5543 ; AVX1-NEXT:    shll $9, %edx
   5544 ; AVX1-NEXT:    orl %ecx, %edx
   5545 ; AVX1-NEXT:    vpextrb $10, %xmm2, %ecx
   5546 ; AVX1-NEXT:    andl $1, %ecx
   5547 ; AVX1-NEXT:    shll $10, %ecx
   5548 ; AVX1-NEXT:    orl %edx, %ecx
   5549 ; AVX1-NEXT:    vpextrb $11, %xmm2, %edx
   5550 ; AVX1-NEXT:    andl $1, %edx
   5551 ; AVX1-NEXT:    shll $11, %edx
   5552 ; AVX1-NEXT:    orl %ecx, %edx
   5553 ; AVX1-NEXT:    vpextrb $12, %xmm2, %ecx
   5554 ; AVX1-NEXT:    andl $1, %ecx
   5555 ; AVX1-NEXT:    shll $12, %ecx
   5556 ; AVX1-NEXT:    orl %edx, %ecx
   5557 ; AVX1-NEXT:    vpextrb $13, %xmm2, %edx
   5558 ; AVX1-NEXT:    andl $1, %edx
   5559 ; AVX1-NEXT:    shll $13, %edx
   5560 ; AVX1-NEXT:    orl %ecx, %edx
   5561 ; AVX1-NEXT:    vpextrb $14, %xmm2, %ecx
   5562 ; AVX1-NEXT:    andl $1, %ecx
   5563 ; AVX1-NEXT:    shll $14, %ecx
   5564 ; AVX1-NEXT:    orl %edx, %ecx
   5565 ; AVX1-NEXT:    vpextrb $15, %xmm2, %edx
   5566 ; AVX1-NEXT:    andl $1, %edx
   5567 ; AVX1-NEXT:    shll $15, %edx
   5568 ; AVX1-NEXT:    orl %ecx, %edx
   5569 ; AVX1-NEXT:    vpextrb $0, %xmm5, %ecx
   5570 ; AVX1-NEXT:    andl $1, %ecx
   5571 ; AVX1-NEXT:    shll $16, %ecx
   5572 ; AVX1-NEXT:    orl %edx, %ecx
   5573 ; AVX1-NEXT:    vpextrb $1, %xmm5, %edx
   5574 ; AVX1-NEXT:    andl $1, %edx
   5575 ; AVX1-NEXT:    shll $17, %edx
   5576 ; AVX1-NEXT:    orl %ecx, %edx
   5577 ; AVX1-NEXT:    vpextrb $2, %xmm5, %ecx
   5578 ; AVX1-NEXT:    andl $1, %ecx
   5579 ; AVX1-NEXT:    shll $18, %ecx
   5580 ; AVX1-NEXT:    orl %edx, %ecx
   5581 ; AVX1-NEXT:    vpextrb $3, %xmm5, %edx
   5582 ; AVX1-NEXT:    andl $1, %edx
   5583 ; AVX1-NEXT:    shll $19, %edx
   5584 ; AVX1-NEXT:    orl %ecx, %edx
   5585 ; AVX1-NEXT:    vpextrb $4, %xmm5, %ecx
   5586 ; AVX1-NEXT:    andl $1, %ecx
   5587 ; AVX1-NEXT:    shll $20, %ecx
   5588 ; AVX1-NEXT:    orl %edx, %ecx
   5589 ; AVX1-NEXT:    vpextrb $5, %xmm5, %edx
   5590 ; AVX1-NEXT:    andl $1, %edx
   5591 ; AVX1-NEXT:    shll $21, %edx
   5592 ; AVX1-NEXT:    orl %ecx, %edx
   5593 ; AVX1-NEXT:    vpextrb $6, %xmm5, %ecx
   5594 ; AVX1-NEXT:    andl $1, %ecx
   5595 ; AVX1-NEXT:    shll $22, %ecx
   5596 ; AVX1-NEXT:    orl %edx, %ecx
   5597 ; AVX1-NEXT:    vpextrb $7, %xmm5, %edx
   5598 ; AVX1-NEXT:    andl $1, %edx
   5599 ; AVX1-NEXT:    shll $23, %edx
   5600 ; AVX1-NEXT:    orl %ecx, %edx
   5601 ; AVX1-NEXT:    vpextrb $8, %xmm5, %ecx
   5602 ; AVX1-NEXT:    andl $1, %ecx
   5603 ; AVX1-NEXT:    shll $24, %ecx
   5604 ; AVX1-NEXT:    orl %edx, %ecx
   5605 ; AVX1-NEXT:    vpextrb $9, %xmm5, %edx
   5606 ; AVX1-NEXT:    andl $1, %edx
   5607 ; AVX1-NEXT:    shll $25, %edx
   5608 ; AVX1-NEXT:    orl %ecx, %edx
   5609 ; AVX1-NEXT:    vpextrb $10, %xmm5, %ecx
   5610 ; AVX1-NEXT:    andl $1, %ecx
   5611 ; AVX1-NEXT:    shll $26, %ecx
   5612 ; AVX1-NEXT:    orl %edx, %ecx
   5613 ; AVX1-NEXT:    vpextrb $11, %xmm5, %edx
   5614 ; AVX1-NEXT:    andl $1, %edx
   5615 ; AVX1-NEXT:    shll $27, %edx
   5616 ; AVX1-NEXT:    orl %ecx, %edx
   5617 ; AVX1-NEXT:    vpextrb $12, %xmm5, %ecx
   5618 ; AVX1-NEXT:    andl $1, %ecx
   5619 ; AVX1-NEXT:    shll $28, %ecx
   5620 ; AVX1-NEXT:    orl %edx, %ecx
   5621 ; AVX1-NEXT:    vpextrb $13, %xmm5, %edx
   5622 ; AVX1-NEXT:    andl $1, %edx
   5623 ; AVX1-NEXT:    shll $29, %edx
   5624 ; AVX1-NEXT:    orl %ecx, %edx
   5625 ; AVX1-NEXT:    vpextrb $14, %xmm5, %ecx
   5626 ; AVX1-NEXT:    andl $1, %ecx
   5627 ; AVX1-NEXT:    shll $30, %ecx
   5628 ; AVX1-NEXT:    orl %edx, %ecx
   5629 ; AVX1-NEXT:    vpextrb $15, %xmm5, %edx
   5630 ; AVX1-NEXT:    shll $31, %edx
   5631 ; AVX1-NEXT:    orl %ecx, %edx
   5632 ; AVX1-NEXT:    orl %eax, %edx
   5633 ; AVX1-NEXT:    movl %edx, 8(%rdi)
   5634 ; AVX1-NEXT:    vpextrb $1, %xmm1, %eax
   5635 ; AVX1-NEXT:    andl $1, %eax
   5636 ; AVX1-NEXT:    vpextrb $0, %xmm1, %ecx
   5637 ; AVX1-NEXT:    andl $1, %ecx
   5638 ; AVX1-NEXT:    leal (%rcx,%rax,2), %eax
   5639 ; AVX1-NEXT:    vpextrb $2, %xmm1, %ecx
   5640 ; AVX1-NEXT:    andl $1, %ecx
   5641 ; AVX1-NEXT:    leal (%rax,%rcx,4), %eax
   5642 ; AVX1-NEXT:    vpextrb $3, %xmm1, %ecx
   5643 ; AVX1-NEXT:    andl $1, %ecx
   5644 ; AVX1-NEXT:    leal (%rax,%rcx,8), %eax
   5645 ; AVX1-NEXT:    vpextrb $4, %xmm1, %ecx
   5646 ; AVX1-NEXT:    andl $1, %ecx
   5647 ; AVX1-NEXT:    shll $4, %ecx
   5648 ; AVX1-NEXT:    orl %eax, %ecx
   5649 ; AVX1-NEXT:    vpextrb $5, %xmm1, %eax
   5650 ; AVX1-NEXT:    andl $1, %eax
   5651 ; AVX1-NEXT:    shll $5, %eax
   5652 ; AVX1-NEXT:    orl %ecx, %eax
   5653 ; AVX1-NEXT:    vpextrb $6, %xmm1, %ecx
   5654 ; AVX1-NEXT:    andl $1, %ecx
   5655 ; AVX1-NEXT:    shll $6, %ecx
   5656 ; AVX1-NEXT:    vpextrb $7, %xmm1, %edx
   5657 ; AVX1-NEXT:    andl $1, %edx
   5658 ; AVX1-NEXT:    shll $7, %edx
   5659 ; AVX1-NEXT:    orl %ecx, %edx
   5660 ; AVX1-NEXT:    vpextrb $8, %xmm1, %ecx
   5661 ; AVX1-NEXT:    andl $1, %ecx
   5662 ; AVX1-NEXT:    shll $8, %ecx
   5663 ; AVX1-NEXT:    orl %edx, %ecx
   5664 ; AVX1-NEXT:    vpextrb $9, %xmm1, %edx
   5665 ; AVX1-NEXT:    andl $1, %edx
   5666 ; AVX1-NEXT:    shll $9, %edx
   5667 ; AVX1-NEXT:    orl %ecx, %edx
   5668 ; AVX1-NEXT:    vpextrb $10, %xmm1, %ecx
   5669 ; AVX1-NEXT:    andl $1, %ecx
   5670 ; AVX1-NEXT:    shll $10, %ecx
   5671 ; AVX1-NEXT:    orl %edx, %ecx
   5672 ; AVX1-NEXT:    vpextrb $11, %xmm1, %edx
   5673 ; AVX1-NEXT:    andl $1, %edx
   5674 ; AVX1-NEXT:    shll $11, %edx
   5675 ; AVX1-NEXT:    orl %ecx, %edx
   5676 ; AVX1-NEXT:    vpextrb $12, %xmm1, %ecx
   5677 ; AVX1-NEXT:    andl $1, %ecx
   5678 ; AVX1-NEXT:    shll $12, %ecx
   5679 ; AVX1-NEXT:    orl %edx, %ecx
   5680 ; AVX1-NEXT:    vpextrb $13, %xmm1, %edx
   5681 ; AVX1-NEXT:    andl $1, %edx
   5682 ; AVX1-NEXT:    shll $13, %edx
   5683 ; AVX1-NEXT:    orl %ecx, %edx
   5684 ; AVX1-NEXT:    vpextrb $14, %xmm1, %ecx
   5685 ; AVX1-NEXT:    andl $1, %ecx
   5686 ; AVX1-NEXT:    shll $14, %ecx
   5687 ; AVX1-NEXT:    orl %edx, %ecx
   5688 ; AVX1-NEXT:    vpextrb $15, %xmm1, %edx
   5689 ; AVX1-NEXT:    andl $1, %edx
   5690 ; AVX1-NEXT:    shll $15, %edx
   5691 ; AVX1-NEXT:    orl %ecx, %edx
   5692 ; AVX1-NEXT:    vpextrb $0, %xmm4, %ecx
   5693 ; AVX1-NEXT:    andl $1, %ecx
   5694 ; AVX1-NEXT:    shll $16, %ecx
   5695 ; AVX1-NEXT:    orl %edx, %ecx
   5696 ; AVX1-NEXT:    vpextrb $1, %xmm4, %edx
   5697 ; AVX1-NEXT:    andl $1, %edx
   5698 ; AVX1-NEXT:    shll $17, %edx
   5699 ; AVX1-NEXT:    orl %ecx, %edx
   5700 ; AVX1-NEXT:    vpextrb $2, %xmm4, %ecx
   5701 ; AVX1-NEXT:    andl $1, %ecx
   5702 ; AVX1-NEXT:    shll $18, %ecx
   5703 ; AVX1-NEXT:    orl %edx, %ecx
   5704 ; AVX1-NEXT:    vpextrb $3, %xmm4, %edx
   5705 ; AVX1-NEXT:    andl $1, %edx
   5706 ; AVX1-NEXT:    shll $19, %edx
   5707 ; AVX1-NEXT:    orl %ecx, %edx
   5708 ; AVX1-NEXT:    vpextrb $4, %xmm4, %ecx
   5709 ; AVX1-NEXT:    andl $1, %ecx
   5710 ; AVX1-NEXT:    shll $20, %ecx
   5711 ; AVX1-NEXT:    orl %edx, %ecx
   5712 ; AVX1-NEXT:    vpextrb $5, %xmm4, %edx
   5713 ; AVX1-NEXT:    andl $1, %edx
   5714 ; AVX1-NEXT:    shll $21, %edx
   5715 ; AVX1-NEXT:    orl %ecx, %edx
   5716 ; AVX1-NEXT:    vpextrb $6, %xmm4, %ecx
   5717 ; AVX1-NEXT:    andl $1, %ecx
   5718 ; AVX1-NEXT:    shll $22, %ecx
   5719 ; AVX1-NEXT:    orl %edx, %ecx
   5720 ; AVX1-NEXT:    vpextrb $7, %xmm4, %edx
   5721 ; AVX1-NEXT:    andl $1, %edx
   5722 ; AVX1-NEXT:    shll $23, %edx
   5723 ; AVX1-NEXT:    orl %ecx, %edx
   5724 ; AVX1-NEXT:    vpextrb $8, %xmm4, %ecx
   5725 ; AVX1-NEXT:    andl $1, %ecx
   5726 ; AVX1-NEXT:    shll $24, %ecx
   5727 ; AVX1-NEXT:    orl %edx, %ecx
   5728 ; AVX1-NEXT:    vpextrb $9, %xmm4, %edx
   5729 ; AVX1-NEXT:    andl $1, %edx
   5730 ; AVX1-NEXT:    shll $25, %edx
   5731 ; AVX1-NEXT:    orl %ecx, %edx
   5732 ; AVX1-NEXT:    vpextrb $10, %xmm4, %ecx
   5733 ; AVX1-NEXT:    andl $1, %ecx
   5734 ; AVX1-NEXT:    shll $26, %ecx
   5735 ; AVX1-NEXT:    orl %edx, %ecx
   5736 ; AVX1-NEXT:    vpextrb $11, %xmm4, %edx
   5737 ; AVX1-NEXT:    andl $1, %edx
   5738 ; AVX1-NEXT:    shll $27, %edx
   5739 ; AVX1-NEXT:    orl %ecx, %edx
   5740 ; AVX1-NEXT:    vpextrb $12, %xmm4, %ecx
   5741 ; AVX1-NEXT:    andl $1, %ecx
   5742 ; AVX1-NEXT:    shll $28, %ecx
   5743 ; AVX1-NEXT:    orl %edx, %ecx
   5744 ; AVX1-NEXT:    vpextrb $13, %xmm4, %edx
   5745 ; AVX1-NEXT:    andl $1, %edx
   5746 ; AVX1-NEXT:    shll $29, %edx
   5747 ; AVX1-NEXT:    orl %ecx, %edx
   5748 ; AVX1-NEXT:    vpextrb $14, %xmm4, %ecx
   5749 ; AVX1-NEXT:    andl $1, %ecx
   5750 ; AVX1-NEXT:    shll $30, %ecx
   5751 ; AVX1-NEXT:    orl %edx, %ecx
   5752 ; AVX1-NEXT:    vpextrb $15, %xmm4, %edx
   5753 ; AVX1-NEXT:    shll $31, %edx
   5754 ; AVX1-NEXT:    orl %ecx, %edx
   5755 ; AVX1-NEXT:    orl %eax, %edx
   5756 ; AVX1-NEXT:    movl %edx, 4(%rdi)
   5757 ; AVX1-NEXT:    vpextrb $1, %xmm9, %eax
   5758 ; AVX1-NEXT:    andl $1, %eax
   5759 ; AVX1-NEXT:    vpextrb $0, %xmm9, %ecx
   5760 ; AVX1-NEXT:    andl $1, %ecx
   5761 ; AVX1-NEXT:    leal (%rcx,%rax,2), %eax
   5762 ; AVX1-NEXT:    vpextrb $2, %xmm9, %ecx
   5763 ; AVX1-NEXT:    andl $1, %ecx
   5764 ; AVX1-NEXT:    leal (%rax,%rcx,4), %eax
   5765 ; AVX1-NEXT:    vpextrb $3, %xmm9, %ecx
   5766 ; AVX1-NEXT:    andl $1, %ecx
   5767 ; AVX1-NEXT:    leal (%rax,%rcx,8), %eax
   5768 ; AVX1-NEXT:    vpextrb $4, %xmm9, %ecx
   5769 ; AVX1-NEXT:    andl $1, %ecx
   5770 ; AVX1-NEXT:    shll $4, %ecx
   5771 ; AVX1-NEXT:    orl %eax, %ecx
   5772 ; AVX1-NEXT:    vpextrb $5, %xmm9, %eax
   5773 ; AVX1-NEXT:    andl $1, %eax
   5774 ; AVX1-NEXT:    shll $5, %eax
   5775 ; AVX1-NEXT:    orl %ecx, %eax
   5776 ; AVX1-NEXT:    vpextrb $6, %xmm9, %ecx
   5777 ; AVX1-NEXT:    andl $1, %ecx
   5778 ; AVX1-NEXT:    shll $6, %ecx
   5779 ; AVX1-NEXT:    vpextrb $7, %xmm9, %edx
   5780 ; AVX1-NEXT:    andl $1, %edx
   5781 ; AVX1-NEXT:    shll $7, %edx
   5782 ; AVX1-NEXT:    orl %ecx, %edx
   5783 ; AVX1-NEXT:    vpextrb $8, %xmm9, %ecx
   5784 ; AVX1-NEXT:    andl $1, %ecx
   5785 ; AVX1-NEXT:    shll $8, %ecx
   5786 ; AVX1-NEXT:    orl %edx, %ecx
   5787 ; AVX1-NEXT:    vpextrb $9, %xmm9, %edx
   5788 ; AVX1-NEXT:    andl $1, %edx
   5789 ; AVX1-NEXT:    shll $9, %edx
   5790 ; AVX1-NEXT:    orl %ecx, %edx
   5791 ; AVX1-NEXT:    vpextrb $10, %xmm9, %ecx
   5792 ; AVX1-NEXT:    andl $1, %ecx
   5793 ; AVX1-NEXT:    shll $10, %ecx
   5794 ; AVX1-NEXT:    orl %edx, %ecx
   5795 ; AVX1-NEXT:    vpextrb $11, %xmm9, %edx
   5796 ; AVX1-NEXT:    andl $1, %edx
   5797 ; AVX1-NEXT:    shll $11, %edx
   5798 ; AVX1-NEXT:    orl %ecx, %edx
   5799 ; AVX1-NEXT:    vpextrb $12, %xmm9, %ecx
   5800 ; AVX1-NEXT:    andl $1, %ecx
   5801 ; AVX1-NEXT:    shll $12, %ecx
   5802 ; AVX1-NEXT:    orl %edx, %ecx
   5803 ; AVX1-NEXT:    vpextrb $13, %xmm9, %edx
   5804 ; AVX1-NEXT:    andl $1, %edx
   5805 ; AVX1-NEXT:    shll $13, %edx
   5806 ; AVX1-NEXT:    orl %ecx, %edx
   5807 ; AVX1-NEXT:    vpextrb $14, %xmm9, %ecx
   5808 ; AVX1-NEXT:    andl $1, %ecx
   5809 ; AVX1-NEXT:    shll $14, %ecx
   5810 ; AVX1-NEXT:    orl %edx, %ecx
   5811 ; AVX1-NEXT:    vpextrb $15, %xmm9, %edx
   5812 ; AVX1-NEXT:    andl $1, %edx
   5813 ; AVX1-NEXT:    shll $15, %edx
   5814 ; AVX1-NEXT:    orl %ecx, %edx
   5815 ; AVX1-NEXT:    vpextrb $0, %xmm8, %ecx
   5816 ; AVX1-NEXT:    andl $1, %ecx
   5817 ; AVX1-NEXT:    shll $16, %ecx
   5818 ; AVX1-NEXT:    orl %edx, %ecx
   5819 ; AVX1-NEXT:    vpextrb $1, %xmm8, %edx
   5820 ; AVX1-NEXT:    andl $1, %edx
   5821 ; AVX1-NEXT:    shll $17, %edx
   5822 ; AVX1-NEXT:    orl %ecx, %edx
   5823 ; AVX1-NEXT:    vpextrb $2, %xmm8, %ecx
   5824 ; AVX1-NEXT:    andl $1, %ecx
   5825 ; AVX1-NEXT:    shll $18, %ecx
   5826 ; AVX1-NEXT:    orl %edx, %ecx
   5827 ; AVX1-NEXT:    vpextrb $3, %xmm8, %edx
   5828 ; AVX1-NEXT:    andl $1, %edx
   5829 ; AVX1-NEXT:    shll $19, %edx
   5830 ; AVX1-NEXT:    orl %ecx, %edx
   5831 ; AVX1-NEXT:    vpextrb $4, %xmm8, %ecx
   5832 ; AVX1-NEXT:    andl $1, %ecx
   5833 ; AVX1-NEXT:    shll $20, %ecx
   5834 ; AVX1-NEXT:    orl %edx, %ecx
   5835 ; AVX1-NEXT:    vpextrb $5, %xmm8, %edx
   5836 ; AVX1-NEXT:    andl $1, %edx
   5837 ; AVX1-NEXT:    shll $21, %edx
   5838 ; AVX1-NEXT:    orl %ecx, %edx
   5839 ; AVX1-NEXT:    vpextrb $6, %xmm8, %ecx
   5840 ; AVX1-NEXT:    andl $1, %ecx
   5841 ; AVX1-NEXT:    shll $22, %ecx
   5842 ; AVX1-NEXT:    orl %edx, %ecx
   5843 ; AVX1-NEXT:    vpextrb $7, %xmm8, %edx
   5844 ; AVX1-NEXT:    andl $1, %edx
   5845 ; AVX1-NEXT:    shll $23, %edx
   5846 ; AVX1-NEXT:    orl %ecx, %edx
   5847 ; AVX1-NEXT:    vpextrb $8, %xmm8, %ecx
   5848 ; AVX1-NEXT:    andl $1, %ecx
   5849 ; AVX1-NEXT:    shll $24, %ecx
   5850 ; AVX1-NEXT:    orl %edx, %ecx
   5851 ; AVX1-NEXT:    vpextrb $9, %xmm8, %edx
   5852 ; AVX1-NEXT:    andl $1, %edx
   5853 ; AVX1-NEXT:    shll $25, %edx
   5854 ; AVX1-NEXT:    orl %ecx, %edx
   5855 ; AVX1-NEXT:    vpextrb $10, %xmm8, %ecx
   5856 ; AVX1-NEXT:    andl $1, %ecx
   5857 ; AVX1-NEXT:    shll $26, %ecx
   5858 ; AVX1-NEXT:    orl %edx, %ecx
   5859 ; AVX1-NEXT:    vpextrb $11, %xmm8, %edx
   5860 ; AVX1-NEXT:    andl $1, %edx
   5861 ; AVX1-NEXT:    shll $27, %edx
   5862 ; AVX1-NEXT:    orl %ecx, %edx
   5863 ; AVX1-NEXT:    vpextrb $12, %xmm8, %ecx
   5864 ; AVX1-NEXT:    andl $1, %ecx
   5865 ; AVX1-NEXT:    shll $28, %ecx
   5866 ; AVX1-NEXT:    orl %edx, %ecx
   5867 ; AVX1-NEXT:    vpextrb $13, %xmm8, %edx
   5868 ; AVX1-NEXT:    andl $1, %edx
   5869 ; AVX1-NEXT:    shll $29, %edx
   5870 ; AVX1-NEXT:    orl %ecx, %edx
   5871 ; AVX1-NEXT:    vpextrb $14, %xmm8, %ecx
   5872 ; AVX1-NEXT:    andl $1, %ecx
   5873 ; AVX1-NEXT:    shll $30, %ecx
   5874 ; AVX1-NEXT:    orl %edx, %ecx
   5875 ; AVX1-NEXT:    vpextrb $15, %xmm8, %edx
   5876 ; AVX1-NEXT:    shll $31, %edx
   5877 ; AVX1-NEXT:    orl %ecx, %edx
   5878 ; AVX1-NEXT:    orl %eax, %edx
   5879 ; AVX1-NEXT:    movl %edx, (%rdi)
   5880 ; AVX1-NEXT:    movq %rdi, %rax
   5881 ; AVX1-NEXT:    vzeroupper
   5882 ; AVX1-NEXT:    retq
   5883 ;
   5884 ; AVX2-LABEL: test_cmp_v128i8:
   5885 ; AVX2:       # %bb.0:
   5886 ; AVX2-NEXT:    vpcmpgtb %ymm4, %ymm0, %ymm0
   5887 ; AVX2-NEXT:    vpcmpgtb %ymm5, %ymm1, %ymm1
   5888 ; AVX2-NEXT:    vpcmpgtb %ymm6, %ymm2, %ymm2
   5889 ; AVX2-NEXT:    vpcmpgtb %ymm7, %ymm3, %ymm3
   5890 ; AVX2-NEXT:    vpextrb $1, %xmm3, %eax
   5891 ; AVX2-NEXT:    andl $1, %eax
   5892 ; AVX2-NEXT:    vpextrb $0, %xmm3, %ecx
   5893 ; AVX2-NEXT:    andl $1, %ecx
   5894 ; AVX2-NEXT:    leal (%rcx,%rax,2), %eax
   5895 ; AVX2-NEXT:    vpextrb $2, %xmm3, %ecx
   5896 ; AVX2-NEXT:    andl $1, %ecx
   5897 ; AVX2-NEXT:    leal (%rax,%rcx,4), %eax
   5898 ; AVX2-NEXT:    vpextrb $3, %xmm3, %ecx
   5899 ; AVX2-NEXT:    andl $1, %ecx
   5900 ; AVX2-NEXT:    leal (%rax,%rcx,8), %eax
   5901 ; AVX2-NEXT:    vpextrb $4, %xmm3, %ecx
   5902 ; AVX2-NEXT:    andl $1, %ecx
   5903 ; AVX2-NEXT:    shll $4, %ecx
   5904 ; AVX2-NEXT:    orl %eax, %ecx
   5905 ; AVX2-NEXT:    vpextrb $5, %xmm3, %eax
   5906 ; AVX2-NEXT:    andl $1, %eax
   5907 ; AVX2-NEXT:    shll $5, %eax
   5908 ; AVX2-NEXT:    orl %ecx, %eax
   5909 ; AVX2-NEXT:    vpextrb $6, %xmm3, %ecx
   5910 ; AVX2-NEXT:    andl $1, %ecx
   5911 ; AVX2-NEXT:    shll $6, %ecx
   5912 ; AVX2-NEXT:    vpextrb $7, %xmm3, %edx
   5913 ; AVX2-NEXT:    andl $1, %edx
   5914 ; AVX2-NEXT:    shll $7, %edx
   5915 ; AVX2-NEXT:    orl %ecx, %edx
   5916 ; AVX2-NEXT:    vpextrb $8, %xmm3, %ecx
   5917 ; AVX2-NEXT:    andl $1, %ecx
   5918 ; AVX2-NEXT:    shll $8, %ecx
   5919 ; AVX2-NEXT:    orl %edx, %ecx
   5920 ; AVX2-NEXT:    vpextrb $9, %xmm3, %edx
   5921 ; AVX2-NEXT:    andl $1, %edx
   5922 ; AVX2-NEXT:    shll $9, %edx
   5923 ; AVX2-NEXT:    orl %ecx, %edx
   5924 ; AVX2-NEXT:    vpextrb $10, %xmm3, %ecx
   5925 ; AVX2-NEXT:    andl $1, %ecx
   5926 ; AVX2-NEXT:    shll $10, %ecx
   5927 ; AVX2-NEXT:    orl %edx, %ecx
   5928 ; AVX2-NEXT:    vpextrb $11, %xmm3, %edx
   5929 ; AVX2-NEXT:    andl $1, %edx
   5930 ; AVX2-NEXT:    shll $11, %edx
   5931 ; AVX2-NEXT:    orl %ecx, %edx
   5932 ; AVX2-NEXT:    vpextrb $12, %xmm3, %ecx
   5933 ; AVX2-NEXT:    andl $1, %ecx
   5934 ; AVX2-NEXT:    shll $12, %ecx
   5935 ; AVX2-NEXT:    orl %edx, %ecx
   5936 ; AVX2-NEXT:    vpextrb $13, %xmm3, %edx
   5937 ; AVX2-NEXT:    andl $1, %edx
   5938 ; AVX2-NEXT:    shll $13, %edx
   5939 ; AVX2-NEXT:    orl %ecx, %edx
   5940 ; AVX2-NEXT:    vpextrb $14, %xmm3, %ecx
   5941 ; AVX2-NEXT:    andl $1, %ecx
   5942 ; AVX2-NEXT:    shll $14, %ecx
   5943 ; AVX2-NEXT:    orl %edx, %ecx
   5944 ; AVX2-NEXT:    vpextrb $15, %xmm3, %edx
   5945 ; AVX2-NEXT:    andl $1, %edx
   5946 ; AVX2-NEXT:    shll $15, %edx
   5947 ; AVX2-NEXT:    orl %ecx, %edx
   5948 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm3
   5949 ; AVX2-NEXT:    vpextrb $0, %xmm3, %ecx
   5950 ; AVX2-NEXT:    andl $1, %ecx
   5951 ; AVX2-NEXT:    shll $16, %ecx
   5952 ; AVX2-NEXT:    orl %edx, %ecx
   5953 ; AVX2-NEXT:    vpextrb $1, %xmm3, %edx
   5954 ; AVX2-NEXT:    andl $1, %edx
   5955 ; AVX2-NEXT:    shll $17, %edx
   5956 ; AVX2-NEXT:    orl %ecx, %edx
   5957 ; AVX2-NEXT:    vpextrb $2, %xmm3, %ecx
   5958 ; AVX2-NEXT:    andl $1, %ecx
   5959 ; AVX2-NEXT:    shll $18, %ecx
   5960 ; AVX2-NEXT:    orl %edx, %ecx
   5961 ; AVX2-NEXT:    vpextrb $3, %xmm3, %edx
   5962 ; AVX2-NEXT:    andl $1, %edx
   5963 ; AVX2-NEXT:    shll $19, %edx
   5964 ; AVX2-NEXT:    orl %ecx, %edx
   5965 ; AVX2-NEXT:    vpextrb $4, %xmm3, %ecx
   5966 ; AVX2-NEXT:    andl $1, %ecx
   5967 ; AVX2-NEXT:    shll $20, %ecx
   5968 ; AVX2-NEXT:    orl %edx, %ecx
   5969 ; AVX2-NEXT:    vpextrb $5, %xmm3, %edx
   5970 ; AVX2-NEXT:    andl $1, %edx
   5971 ; AVX2-NEXT:    shll $21, %edx
   5972 ; AVX2-NEXT:    orl %ecx, %edx
   5973 ; AVX2-NEXT:    vpextrb $6, %xmm3, %ecx
   5974 ; AVX2-NEXT:    andl $1, %ecx
   5975 ; AVX2-NEXT:    shll $22, %ecx
   5976 ; AVX2-NEXT:    orl %edx, %ecx
   5977 ; AVX2-NEXT:    vpextrb $7, %xmm3, %edx
   5978 ; AVX2-NEXT:    andl $1, %edx
   5979 ; AVX2-NEXT:    shll $23, %edx
   5980 ; AVX2-NEXT:    orl %ecx, %edx
   5981 ; AVX2-NEXT:    vpextrb $8, %xmm3, %ecx
   5982 ; AVX2-NEXT:    andl $1, %ecx
   5983 ; AVX2-NEXT:    shll $24, %ecx
   5984 ; AVX2-NEXT:    orl %edx, %ecx
   5985 ; AVX2-NEXT:    vpextrb $9, %xmm3, %edx
   5986 ; AVX2-NEXT:    andl $1, %edx
   5987 ; AVX2-NEXT:    shll $25, %edx
   5988 ; AVX2-NEXT:    orl %ecx, %edx
   5989 ; AVX2-NEXT:    vpextrb $10, %xmm3, %ecx
   5990 ; AVX2-NEXT:    andl $1, %ecx
   5991 ; AVX2-NEXT:    shll $26, %ecx
   5992 ; AVX2-NEXT:    orl %edx, %ecx
   5993 ; AVX2-NEXT:    vpextrb $11, %xmm3, %edx
   5994 ; AVX2-NEXT:    andl $1, %edx
   5995 ; AVX2-NEXT:    shll $27, %edx
   5996 ; AVX2-NEXT:    orl %ecx, %edx
   5997 ; AVX2-NEXT:    vpextrb $12, %xmm3, %ecx
   5998 ; AVX2-NEXT:    andl $1, %ecx
   5999 ; AVX2-NEXT:    shll $28, %ecx
   6000 ; AVX2-NEXT:    orl %edx, %ecx
   6001 ; AVX2-NEXT:    vpextrb $13, %xmm3, %edx
   6002 ; AVX2-NEXT:    andl $1, %edx
   6003 ; AVX2-NEXT:    shll $29, %edx
   6004 ; AVX2-NEXT:    orl %ecx, %edx
   6005 ; AVX2-NEXT:    vpextrb $14, %xmm3, %ecx
   6006 ; AVX2-NEXT:    andl $1, %ecx
   6007 ; AVX2-NEXT:    shll $30, %ecx
   6008 ; AVX2-NEXT:    orl %edx, %ecx
   6009 ; AVX2-NEXT:    vpextrb $15, %xmm3, %edx
   6010 ; AVX2-NEXT:    shll $31, %edx
   6011 ; AVX2-NEXT:    orl %ecx, %edx
   6012 ; AVX2-NEXT:    orl %eax, %edx
   6013 ; AVX2-NEXT:    movl %edx, 12(%rdi)
   6014 ; AVX2-NEXT:    vpextrb $1, %xmm2, %eax
   6015 ; AVX2-NEXT:    andl $1, %eax
   6016 ; AVX2-NEXT:    vpextrb $0, %xmm2, %ecx
   6017 ; AVX2-NEXT:    andl $1, %ecx
   6018 ; AVX2-NEXT:    leal (%rcx,%rax,2), %eax
   6019 ; AVX2-NEXT:    vpextrb $2, %xmm2, %ecx
   6020 ; AVX2-NEXT:    andl $1, %ecx
   6021 ; AVX2-NEXT:    leal (%rax,%rcx,4), %eax
   6022 ; AVX2-NEXT:    vpextrb $3, %xmm2, %ecx
   6023 ; AVX2-NEXT:    andl $1, %ecx
   6024 ; AVX2-NEXT:    leal (%rax,%rcx,8), %eax
   6025 ; AVX2-NEXT:    vpextrb $4, %xmm2, %ecx
   6026 ; AVX2-NEXT:    andl $1, %ecx
   6027 ; AVX2-NEXT:    shll $4, %ecx
   6028 ; AVX2-NEXT:    orl %eax, %ecx
   6029 ; AVX2-NEXT:    vpextrb $5, %xmm2, %eax
   6030 ; AVX2-NEXT:    andl $1, %eax
   6031 ; AVX2-NEXT:    shll $5, %eax
   6032 ; AVX2-NEXT:    orl %ecx, %eax
   6033 ; AVX2-NEXT:    vpextrb $6, %xmm2, %ecx
   6034 ; AVX2-NEXT:    andl $1, %ecx
   6035 ; AVX2-NEXT:    shll $6, %ecx
   6036 ; AVX2-NEXT:    vpextrb $7, %xmm2, %edx
   6037 ; AVX2-NEXT:    andl $1, %edx
   6038 ; AVX2-NEXT:    shll $7, %edx
   6039 ; AVX2-NEXT:    orl %ecx, %edx
   6040 ; AVX2-NEXT:    vpextrb $8, %xmm2, %ecx
   6041 ; AVX2-NEXT:    andl $1, %ecx
   6042 ; AVX2-NEXT:    shll $8, %ecx
   6043 ; AVX2-NEXT:    orl %edx, %ecx
   6044 ; AVX2-NEXT:    vpextrb $9, %xmm2, %edx
   6045 ; AVX2-NEXT:    andl $1, %edx
   6046 ; AVX2-NEXT:    shll $9, %edx
   6047 ; AVX2-NEXT:    orl %ecx, %edx
   6048 ; AVX2-NEXT:    vpextrb $10, %xmm2, %ecx
   6049 ; AVX2-NEXT:    andl $1, %ecx
   6050 ; AVX2-NEXT:    shll $10, %ecx
   6051 ; AVX2-NEXT:    orl %edx, %ecx
   6052 ; AVX2-NEXT:    vpextrb $11, %xmm2, %edx
   6053 ; AVX2-NEXT:    andl $1, %edx
   6054 ; AVX2-NEXT:    shll $11, %edx
   6055 ; AVX2-NEXT:    orl %ecx, %edx
   6056 ; AVX2-NEXT:    vpextrb $12, %xmm2, %ecx
   6057 ; AVX2-NEXT:    andl $1, %ecx
   6058 ; AVX2-NEXT:    shll $12, %ecx
   6059 ; AVX2-NEXT:    orl %edx, %ecx
   6060 ; AVX2-NEXT:    vpextrb $13, %xmm2, %edx
   6061 ; AVX2-NEXT:    andl $1, %edx
   6062 ; AVX2-NEXT:    shll $13, %edx
   6063 ; AVX2-NEXT:    orl %ecx, %edx
   6064 ; AVX2-NEXT:    vpextrb $14, %xmm2, %ecx
   6065 ; AVX2-NEXT:    andl $1, %ecx
   6066 ; AVX2-NEXT:    shll $14, %ecx
   6067 ; AVX2-NEXT:    orl %edx, %ecx
   6068 ; AVX2-NEXT:    vpextrb $15, %xmm2, %edx
   6069 ; AVX2-NEXT:    andl $1, %edx
   6070 ; AVX2-NEXT:    shll $15, %edx
   6071 ; AVX2-NEXT:    orl %ecx, %edx
   6072 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm2
   6073 ; AVX2-NEXT:    vpextrb $0, %xmm2, %ecx
   6074 ; AVX2-NEXT:    andl $1, %ecx
   6075 ; AVX2-NEXT:    shll $16, %ecx
   6076 ; AVX2-NEXT:    orl %edx, %ecx
   6077 ; AVX2-NEXT:    vpextrb $1, %xmm2, %edx
   6078 ; AVX2-NEXT:    andl $1, %edx
   6079 ; AVX2-NEXT:    shll $17, %edx
   6080 ; AVX2-NEXT:    orl %ecx, %edx
   6081 ; AVX2-NEXT:    vpextrb $2, %xmm2, %ecx
   6082 ; AVX2-NEXT:    andl $1, %ecx
   6083 ; AVX2-NEXT:    shll $18, %ecx
   6084 ; AVX2-NEXT:    orl %edx, %ecx
   6085 ; AVX2-NEXT:    vpextrb $3, %xmm2, %edx
   6086 ; AVX2-NEXT:    andl $1, %edx
   6087 ; AVX2-NEXT:    shll $19, %edx
   6088 ; AVX2-NEXT:    orl %ecx, %edx
   6089 ; AVX2-NEXT:    vpextrb $4, %xmm2, %ecx
   6090 ; AVX2-NEXT:    andl $1, %ecx
   6091 ; AVX2-NEXT:    shll $20, %ecx
   6092 ; AVX2-NEXT:    orl %edx, %ecx
   6093 ; AVX2-NEXT:    vpextrb $5, %xmm2, %edx
   6094 ; AVX2-NEXT:    andl $1, %edx
   6095 ; AVX2-NEXT:    shll $21, %edx
   6096 ; AVX2-NEXT:    orl %ecx, %edx
   6097 ; AVX2-NEXT:    vpextrb $6, %xmm2, %ecx
   6098 ; AVX2-NEXT:    andl $1, %ecx
   6099 ; AVX2-NEXT:    shll $22, %ecx
   6100 ; AVX2-NEXT:    orl %edx, %ecx
   6101 ; AVX2-NEXT:    vpextrb $7, %xmm2, %edx
   6102 ; AVX2-NEXT:    andl $1, %edx
   6103 ; AVX2-NEXT:    shll $23, %edx
   6104 ; AVX2-NEXT:    orl %ecx, %edx
   6105 ; AVX2-NEXT:    vpextrb $8, %xmm2, %ecx
   6106 ; AVX2-NEXT:    andl $1, %ecx
   6107 ; AVX2-NEXT:    shll $24, %ecx
   6108 ; AVX2-NEXT:    orl %edx, %ecx
   6109 ; AVX2-NEXT:    vpextrb $9, %xmm2, %edx
   6110 ; AVX2-NEXT:    andl $1, %edx
   6111 ; AVX2-NEXT:    shll $25, %edx
   6112 ; AVX2-NEXT:    orl %ecx, %edx
   6113 ; AVX2-NEXT:    vpextrb $10, %xmm2, %ecx
   6114 ; AVX2-NEXT:    andl $1, %ecx
   6115 ; AVX2-NEXT:    shll $26, %ecx
   6116 ; AVX2-NEXT:    orl %edx, %ecx
   6117 ; AVX2-NEXT:    vpextrb $11, %xmm2, %edx
   6118 ; AVX2-NEXT:    andl $1, %edx
   6119 ; AVX2-NEXT:    shll $27, %edx
   6120 ; AVX2-NEXT:    orl %ecx, %edx
   6121 ; AVX2-NEXT:    vpextrb $12, %xmm2, %ecx
   6122 ; AVX2-NEXT:    andl $1, %ecx
   6123 ; AVX2-NEXT:    shll $28, %ecx
   6124 ; AVX2-NEXT:    orl %edx, %ecx
   6125 ; AVX2-NEXT:    vpextrb $13, %xmm2, %edx
   6126 ; AVX2-NEXT:    andl $1, %edx
   6127 ; AVX2-NEXT:    shll $29, %edx
   6128 ; AVX2-NEXT:    orl %ecx, %edx
   6129 ; AVX2-NEXT:    vpextrb $14, %xmm2, %ecx
   6130 ; AVX2-NEXT:    andl $1, %ecx
   6131 ; AVX2-NEXT:    shll $30, %ecx
   6132 ; AVX2-NEXT:    orl %edx, %ecx
   6133 ; AVX2-NEXT:    vpextrb $15, %xmm2, %edx
   6134 ; AVX2-NEXT:    shll $31, %edx
   6135 ; AVX2-NEXT:    orl %ecx, %edx
   6136 ; AVX2-NEXT:    orl %eax, %edx
   6137 ; AVX2-NEXT:    movl %edx, 8(%rdi)
   6138 ; AVX2-NEXT:    vpextrb $1, %xmm1, %eax
   6139 ; AVX2-NEXT:    andl $1, %eax
   6140 ; AVX2-NEXT:    vpextrb $0, %xmm1, %ecx
   6141 ; AVX2-NEXT:    andl $1, %ecx
   6142 ; AVX2-NEXT:    leal (%rcx,%rax,2), %eax
   6143 ; AVX2-NEXT:    vpextrb $2, %xmm1, %ecx
   6144 ; AVX2-NEXT:    andl $1, %ecx
   6145 ; AVX2-NEXT:    leal (%rax,%rcx,4), %eax
   6146 ; AVX2-NEXT:    vpextrb $3, %xmm1, %ecx
   6147 ; AVX2-NEXT:    andl $1, %ecx
   6148 ; AVX2-NEXT:    leal (%rax,%rcx,8), %eax
   6149 ; AVX2-NEXT:    vpextrb $4, %xmm1, %ecx
   6150 ; AVX2-NEXT:    andl $1, %ecx
   6151 ; AVX2-NEXT:    shll $4, %ecx
   6152 ; AVX2-NEXT:    orl %eax, %ecx
   6153 ; AVX2-NEXT:    vpextrb $5, %xmm1, %eax
   6154 ; AVX2-NEXT:    andl $1, %eax
   6155 ; AVX2-NEXT:    shll $5, %eax
   6156 ; AVX2-NEXT:    orl %ecx, %eax
   6157 ; AVX2-NEXT:    vpextrb $6, %xmm1, %ecx
   6158 ; AVX2-NEXT:    andl $1, %ecx
   6159 ; AVX2-NEXT:    shll $6, %ecx
   6160 ; AVX2-NEXT:    vpextrb $7, %xmm1, %edx
   6161 ; AVX2-NEXT:    andl $1, %edx
   6162 ; AVX2-NEXT:    shll $7, %edx
   6163 ; AVX2-NEXT:    orl %ecx, %edx
   6164 ; AVX2-NEXT:    vpextrb $8, %xmm1, %ecx
   6165 ; AVX2-NEXT:    andl $1, %ecx
   6166 ; AVX2-NEXT:    shll $8, %ecx
   6167 ; AVX2-NEXT:    orl %edx, %ecx
   6168 ; AVX2-NEXT:    vpextrb $9, %xmm1, %edx
   6169 ; AVX2-NEXT:    andl $1, %edx
   6170 ; AVX2-NEXT:    shll $9, %edx
   6171 ; AVX2-NEXT:    orl %ecx, %edx
   6172 ; AVX2-NEXT:    vpextrb $10, %xmm1, %ecx
   6173 ; AVX2-NEXT:    andl $1, %ecx
   6174 ; AVX2-NEXT:    shll $10, %ecx
   6175 ; AVX2-NEXT:    orl %edx, %ecx
   6176 ; AVX2-NEXT:    vpextrb $11, %xmm1, %edx
   6177 ; AVX2-NEXT:    andl $1, %edx
   6178 ; AVX2-NEXT:    shll $11, %edx
   6179 ; AVX2-NEXT:    orl %ecx, %edx
   6180 ; AVX2-NEXT:    vpextrb $12, %xmm1, %ecx
   6181 ; AVX2-NEXT:    andl $1, %ecx
   6182 ; AVX2-NEXT:    shll $12, %ecx
   6183 ; AVX2-NEXT:    orl %edx, %ecx
   6184 ; AVX2-NEXT:    vpextrb $13, %xmm1, %edx
   6185 ; AVX2-NEXT:    andl $1, %edx
   6186 ; AVX2-NEXT:    shll $13, %edx
   6187 ; AVX2-NEXT:    orl %ecx, %edx
   6188 ; AVX2-NEXT:    vpextrb $14, %xmm1, %ecx
   6189 ; AVX2-NEXT:    andl $1, %ecx
   6190 ; AVX2-NEXT:    shll $14, %ecx
   6191 ; AVX2-NEXT:    orl %edx, %ecx
   6192 ; AVX2-NEXT:    vpextrb $15, %xmm1, %edx
   6193 ; AVX2-NEXT:    andl $1, %edx
   6194 ; AVX2-NEXT:    shll $15, %edx
   6195 ; AVX2-NEXT:    orl %ecx, %edx
   6196 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm1
   6197 ; AVX2-NEXT:    vpextrb $0, %xmm1, %ecx
   6198 ; AVX2-NEXT:    andl $1, %ecx
   6199 ; AVX2-NEXT:    shll $16, %ecx
   6200 ; AVX2-NEXT:    orl %edx, %ecx
   6201 ; AVX2-NEXT:    vpextrb $1, %xmm1, %edx
   6202 ; AVX2-NEXT:    andl $1, %edx
   6203 ; AVX2-NEXT:    shll $17, %edx
   6204 ; AVX2-NEXT:    orl %ecx, %edx
   6205 ; AVX2-NEXT:    vpextrb $2, %xmm1, %ecx
   6206 ; AVX2-NEXT:    andl $1, %ecx
   6207 ; AVX2-NEXT:    shll $18, %ecx
   6208 ; AVX2-NEXT:    orl %edx, %ecx
   6209 ; AVX2-NEXT:    vpextrb $3, %xmm1, %edx
   6210 ; AVX2-NEXT:    andl $1, %edx
   6211 ; AVX2-NEXT:    shll $19, %edx
   6212 ; AVX2-NEXT:    orl %ecx, %edx
   6213 ; AVX2-NEXT:    vpextrb $4, %xmm1, %ecx
   6214 ; AVX2-NEXT:    andl $1, %ecx
   6215 ; AVX2-NEXT:    shll $20, %ecx
   6216 ; AVX2-NEXT:    orl %edx, %ecx
   6217 ; AVX2-NEXT:    vpextrb $5, %xmm1, %edx
   6218 ; AVX2-NEXT:    andl $1, %edx
   6219 ; AVX2-NEXT:    shll $21, %edx
   6220 ; AVX2-NEXT:    orl %ecx, %edx
   6221 ; AVX2-NEXT:    vpextrb $6, %xmm1, %ecx
   6222 ; AVX2-NEXT:    andl $1, %ecx
   6223 ; AVX2-NEXT:    shll $22, %ecx
   6224 ; AVX2-NEXT:    orl %edx, %ecx
   6225 ; AVX2-NEXT:    vpextrb $7, %xmm1, %edx
   6226 ; AVX2-NEXT:    andl $1, %edx
   6227 ; AVX2-NEXT:    shll $23, %edx
   6228 ; AVX2-NEXT:    orl %ecx, %edx
   6229 ; AVX2-NEXT:    vpextrb $8, %xmm1, %ecx
   6230 ; AVX2-NEXT:    andl $1, %ecx
   6231 ; AVX2-NEXT:    shll $24, %ecx
   6232 ; AVX2-NEXT:    orl %edx, %ecx
   6233 ; AVX2-NEXT:    vpextrb $9, %xmm1, %edx
   6234 ; AVX2-NEXT:    andl $1, %edx
   6235 ; AVX2-NEXT:    shll $25, %edx
   6236 ; AVX2-NEXT:    orl %ecx, %edx
   6237 ; AVX2-NEXT:    vpextrb $10, %xmm1, %ecx
   6238 ; AVX2-NEXT:    andl $1, %ecx
   6239 ; AVX2-NEXT:    shll $26, %ecx
   6240 ; AVX2-NEXT:    orl %edx, %ecx
   6241 ; AVX2-NEXT:    vpextrb $11, %xmm1, %edx
   6242 ; AVX2-NEXT:    andl $1, %edx
   6243 ; AVX2-NEXT:    shll $27, %edx
   6244 ; AVX2-NEXT:    orl %ecx, %edx
   6245 ; AVX2-NEXT:    vpextrb $12, %xmm1, %ecx
   6246 ; AVX2-NEXT:    andl $1, %ecx
   6247 ; AVX2-NEXT:    shll $28, %ecx
   6248 ; AVX2-NEXT:    orl %edx, %ecx
   6249 ; AVX2-NEXT:    vpextrb $13, %xmm1, %edx
   6250 ; AVX2-NEXT:    andl $1, %edx
   6251 ; AVX2-NEXT:    shll $29, %edx
   6252 ; AVX2-NEXT:    orl %ecx, %edx
   6253 ; AVX2-NEXT:    vpextrb $14, %xmm1, %ecx
   6254 ; AVX2-NEXT:    andl $1, %ecx
   6255 ; AVX2-NEXT:    shll $30, %ecx
   6256 ; AVX2-NEXT:    orl %edx, %ecx
   6257 ; AVX2-NEXT:    vpextrb $15, %xmm1, %edx
   6258 ; AVX2-NEXT:    shll $31, %edx
   6259 ; AVX2-NEXT:    orl %ecx, %edx
   6260 ; AVX2-NEXT:    orl %eax, %edx
   6261 ; AVX2-NEXT:    movl %edx, 4(%rdi)
   6262 ; AVX2-NEXT:    vpextrb $1, %xmm0, %eax
   6263 ; AVX2-NEXT:    andl $1, %eax
   6264 ; AVX2-NEXT:    vpextrb $0, %xmm0, %ecx
   6265 ; AVX2-NEXT:    andl $1, %ecx
   6266 ; AVX2-NEXT:    leal (%rcx,%rax,2), %eax
   6267 ; AVX2-NEXT:    vpextrb $2, %xmm0, %ecx
   6268 ; AVX2-NEXT:    andl $1, %ecx
   6269 ; AVX2-NEXT:    leal (%rax,%rcx,4), %eax
   6270 ; AVX2-NEXT:    vpextrb $3, %xmm0, %ecx
   6271 ; AVX2-NEXT:    andl $1, %ecx
   6272 ; AVX2-NEXT:    leal (%rax,%rcx,8), %eax
   6273 ; AVX2-NEXT:    vpextrb $4, %xmm0, %ecx
   6274 ; AVX2-NEXT:    andl $1, %ecx
   6275 ; AVX2-NEXT:    shll $4, %ecx
   6276 ; AVX2-NEXT:    orl %eax, %ecx
   6277 ; AVX2-NEXT:    vpextrb $5, %xmm0, %eax
   6278 ; AVX2-NEXT:    andl $1, %eax
   6279 ; AVX2-NEXT:    shll $5, %eax
   6280 ; AVX2-NEXT:    orl %ecx, %eax
   6281 ; AVX2-NEXT:    vpextrb $6, %xmm0, %ecx
   6282 ; AVX2-NEXT:    andl $1, %ecx
   6283 ; AVX2-NEXT:    shll $6, %ecx
   6284 ; AVX2-NEXT:    vpextrb $7, %xmm0, %edx
   6285 ; AVX2-NEXT:    andl $1, %edx
   6286 ; AVX2-NEXT:    shll $7, %edx
   6287 ; AVX2-NEXT:    orl %ecx, %edx
   6288 ; AVX2-NEXT:    vpextrb $8, %xmm0, %ecx
   6289 ; AVX2-NEXT:    andl $1, %ecx
   6290 ; AVX2-NEXT:    shll $8, %ecx
   6291 ; AVX2-NEXT:    orl %edx, %ecx
   6292 ; AVX2-NEXT:    vpextrb $9, %xmm0, %edx
   6293 ; AVX2-NEXT:    andl $1, %edx
   6294 ; AVX2-NEXT:    shll $9, %edx
   6295 ; AVX2-NEXT:    orl %ecx, %edx
   6296 ; AVX2-NEXT:    vpextrb $10, %xmm0, %ecx
   6297 ; AVX2-NEXT:    andl $1, %ecx
   6298 ; AVX2-NEXT:    shll $10, %ecx
   6299 ; AVX2-NEXT:    orl %edx, %ecx
   6300 ; AVX2-NEXT:    vpextrb $11, %xmm0, %edx
   6301 ; AVX2-NEXT:    andl $1, %edx
   6302 ; AVX2-NEXT:    shll $11, %edx
   6303 ; AVX2-NEXT:    orl %ecx, %edx
   6304 ; AVX2-NEXT:    vpextrb $12, %xmm0, %ecx
   6305 ; AVX2-NEXT:    andl $1, %ecx
   6306 ; AVX2-NEXT:    shll $12, %ecx
   6307 ; AVX2-NEXT:    orl %edx, %ecx
   6308 ; AVX2-NEXT:    vpextrb $13, %xmm0, %edx
   6309 ; AVX2-NEXT:    andl $1, %edx
   6310 ; AVX2-NEXT:    shll $13, %edx
   6311 ; AVX2-NEXT:    orl %ecx, %edx
   6312 ; AVX2-NEXT:    vpextrb $14, %xmm0, %ecx
   6313 ; AVX2-NEXT:    andl $1, %ecx
   6314 ; AVX2-NEXT:    shll $14, %ecx
   6315 ; AVX2-NEXT:    orl %edx, %ecx
   6316 ; AVX2-NEXT:    vpextrb $15, %xmm0, %edx
   6317 ; AVX2-NEXT:    andl $1, %edx
   6318 ; AVX2-NEXT:    shll $15, %edx
   6319 ; AVX2-NEXT:    orl %ecx, %edx
   6320 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm0
   6321 ; AVX2-NEXT:    vpextrb $0, %xmm0, %ecx
   6322 ; AVX2-NEXT:    andl $1, %ecx
   6323 ; AVX2-NEXT:    shll $16, %ecx
   6324 ; AVX2-NEXT:    orl %edx, %ecx
   6325 ; AVX2-NEXT:    vpextrb $1, %xmm0, %edx
   6326 ; AVX2-NEXT:    andl $1, %edx
   6327 ; AVX2-NEXT:    shll $17, %edx
   6328 ; AVX2-NEXT:    orl %ecx, %edx
   6329 ; AVX2-NEXT:    vpextrb $2, %xmm0, %ecx
   6330 ; AVX2-NEXT:    andl $1, %ecx
   6331 ; AVX2-NEXT:    shll $18, %ecx
   6332 ; AVX2-NEXT:    orl %edx, %ecx
   6333 ; AVX2-NEXT:    vpextrb $3, %xmm0, %edx
   6334 ; AVX2-NEXT:    andl $1, %edx
   6335 ; AVX2-NEXT:    shll $19, %edx
   6336 ; AVX2-NEXT:    orl %ecx, %edx
   6337 ; AVX2-NEXT:    vpextrb $4, %xmm0, %ecx
   6338 ; AVX2-NEXT:    andl $1, %ecx
   6339 ; AVX2-NEXT:    shll $20, %ecx
   6340 ; AVX2-NEXT:    orl %edx, %ecx
   6341 ; AVX2-NEXT:    vpextrb $5, %xmm0, %edx
   6342 ; AVX2-NEXT:    andl $1, %edx
   6343 ; AVX2-NEXT:    shll $21, %edx
   6344 ; AVX2-NEXT:    orl %ecx, %edx
   6345 ; AVX2-NEXT:    vpextrb $6, %xmm0, %ecx
   6346 ; AVX2-NEXT:    andl $1, %ecx
   6347 ; AVX2-NEXT:    shll $22, %ecx
   6348 ; AVX2-NEXT:    orl %edx, %ecx
   6349 ; AVX2-NEXT:    vpextrb $7, %xmm0, %edx
   6350 ; AVX2-NEXT:    andl $1, %edx
   6351 ; AVX2-NEXT:    shll $23, %edx
   6352 ; AVX2-NEXT:    orl %ecx, %edx
   6353 ; AVX2-NEXT:    vpextrb $8, %xmm0, %ecx
   6354 ; AVX2-NEXT:    andl $1, %ecx
   6355 ; AVX2-NEXT:    shll $24, %ecx
   6356 ; AVX2-NEXT:    orl %edx, %ecx
   6357 ; AVX2-NEXT:    vpextrb $9, %xmm0, %edx
   6358 ; AVX2-NEXT:    andl $1, %edx
   6359 ; AVX2-NEXT:    shll $25, %edx
   6360 ; AVX2-NEXT:    orl %ecx, %edx
   6361 ; AVX2-NEXT:    vpextrb $10, %xmm0, %ecx
   6362 ; AVX2-NEXT:    andl $1, %ecx
   6363 ; AVX2-NEXT:    shll $26, %ecx
   6364 ; AVX2-NEXT:    orl %edx, %ecx
   6365 ; AVX2-NEXT:    vpextrb $11, %xmm0, %edx
   6366 ; AVX2-NEXT:    andl $1, %edx
   6367 ; AVX2-NEXT:    shll $27, %edx
   6368 ; AVX2-NEXT:    orl %ecx, %edx
   6369 ; AVX2-NEXT:    vpextrb $12, %xmm0, %ecx
   6370 ; AVX2-NEXT:    andl $1, %ecx
   6371 ; AVX2-NEXT:    shll $28, %ecx
   6372 ; AVX2-NEXT:    orl %edx, %ecx
   6373 ; AVX2-NEXT:    vpextrb $13, %xmm0, %edx
   6374 ; AVX2-NEXT:    andl $1, %edx
   6375 ; AVX2-NEXT:    shll $29, %edx
   6376 ; AVX2-NEXT:    orl %ecx, %edx
   6377 ; AVX2-NEXT:    vpextrb $14, %xmm0, %ecx
   6378 ; AVX2-NEXT:    andl $1, %ecx
   6379 ; AVX2-NEXT:    shll $30, %ecx
   6380 ; AVX2-NEXT:    orl %edx, %ecx
   6381 ; AVX2-NEXT:    vpextrb $15, %xmm0, %edx
   6382 ; AVX2-NEXT:    shll $31, %edx
   6383 ; AVX2-NEXT:    orl %ecx, %edx
   6384 ; AVX2-NEXT:    orl %eax, %edx
   6385 ; AVX2-NEXT:    movl %edx, (%rdi)
   6386 ; AVX2-NEXT:    movq %rdi, %rax
   6387 ; AVX2-NEXT:    vzeroupper
   6388 ; AVX2-NEXT:    retq
   6389 ;
   6390 ; AVX512F-LABEL: test_cmp_v128i8:
   6391 ; AVX512F:       # %bb.0:
   6392 ; AVX512F-NEXT:    vpcmpgtb %ymm4, %ymm0, %ymm0
   6393 ; AVX512F-NEXT:    vpmovsxbd %xmm0, %zmm4
   6394 ; AVX512F-NEXT:    vptestmd %zmm4, %zmm4, %k0
   6395 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm0
   6396 ; AVX512F-NEXT:    vpmovsxbd %xmm0, %zmm0
   6397 ; AVX512F-NEXT:    vptestmd %zmm0, %zmm0, %k1
   6398 ; AVX512F-NEXT:    vpcmpgtb %ymm5, %ymm1, %ymm0
   6399 ; AVX512F-NEXT:    vpmovsxbd %xmm0, %zmm1
   6400 ; AVX512F-NEXT:    vptestmd %zmm1, %zmm1, %k2
   6401 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm0
   6402 ; AVX512F-NEXT:    vpmovsxbd %xmm0, %zmm0
   6403 ; AVX512F-NEXT:    vptestmd %zmm0, %zmm0, %k3
   6404 ; AVX512F-NEXT:    vpcmpgtb %ymm6, %ymm2, %ymm0
   6405 ; AVX512F-NEXT:    vpmovsxbd %xmm0, %zmm1
   6406 ; AVX512F-NEXT:    vptestmd %zmm1, %zmm1, %k4
   6407 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm0
   6408 ; AVX512F-NEXT:    vpmovsxbd %xmm0, %zmm0
   6409 ; AVX512F-NEXT:    vptestmd %zmm0, %zmm0, %k5
   6410 ; AVX512F-NEXT:    vpcmpgtb %ymm7, %ymm3, %ymm0
   6411 ; AVX512F-NEXT:    vpmovsxbd %xmm0, %zmm1
   6412 ; AVX512F-NEXT:    vptestmd %zmm1, %zmm1, %k6
   6413 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm0
   6414 ; AVX512F-NEXT:    vpmovsxbd %xmm0, %zmm0
   6415 ; AVX512F-NEXT:    vptestmd %zmm0, %zmm0, %k7
   6416 ; AVX512F-NEXT:    kmovw %k7, 14(%rdi)
   6417 ; AVX512F-NEXT:    kmovw %k6, 12(%rdi)
   6418 ; AVX512F-NEXT:    kmovw %k5, 10(%rdi)
   6419 ; AVX512F-NEXT:    kmovw %k4, 8(%rdi)
   6420 ; AVX512F-NEXT:    kmovw %k3, 6(%rdi)
   6421 ; AVX512F-NEXT:    kmovw %k2, 4(%rdi)
   6422 ; AVX512F-NEXT:    kmovw %k1, 2(%rdi)
   6423 ; AVX512F-NEXT:    kmovw %k0, (%rdi)
   6424 ; AVX512F-NEXT:    movq %rdi, %rax
   6425 ; AVX512F-NEXT:    vzeroupper
   6426 ; AVX512F-NEXT:    retq
   6427 ;
   6428 ; AVX512DQ-LABEL: test_cmp_v128i8:
   6429 ; AVX512DQ:       # %bb.0:
   6430 ; AVX512DQ-NEXT:    vpcmpgtb %ymm4, %ymm0, %ymm0
   6431 ; AVX512DQ-NEXT:    vpmovsxbd %xmm0, %zmm4
   6432 ; AVX512DQ-NEXT:    vpmovd2m %zmm4, %k0
   6433 ; AVX512DQ-NEXT:    vextracti128 $1, %ymm0, %xmm0
   6434 ; AVX512DQ-NEXT:    vpmovsxbd %xmm0, %zmm0
   6435 ; AVX512DQ-NEXT:    vpmovd2m %zmm0, %k1
   6436 ; AVX512DQ-NEXT:    vpcmpgtb %ymm5, %ymm1, %ymm0
   6437 ; AVX512DQ-NEXT:    vpmovsxbd %xmm0, %zmm1
   6438 ; AVX512DQ-NEXT:    vpmovd2m %zmm1, %k2
   6439 ; AVX512DQ-NEXT:    vextracti128 $1, %ymm0, %xmm0
   6440 ; AVX512DQ-NEXT:    vpmovsxbd %xmm0, %zmm0
   6441 ; AVX512DQ-NEXT:    vpmovd2m %zmm0, %k3
   6442 ; AVX512DQ-NEXT:    vpcmpgtb %ymm6, %ymm2, %ymm0
   6443 ; AVX512DQ-NEXT:    vpmovsxbd %xmm0, %zmm1
   6444 ; AVX512DQ-NEXT:    vpmovd2m %zmm1, %k4
   6445 ; AVX512DQ-NEXT:    vextracti128 $1, %ymm0, %xmm0
   6446 ; AVX512DQ-NEXT:    vpmovsxbd %xmm0, %zmm0
   6447 ; AVX512DQ-NEXT:    vpmovd2m %zmm0, %k5
   6448 ; AVX512DQ-NEXT:    vpcmpgtb %ymm7, %ymm3, %ymm0
   6449 ; AVX512DQ-NEXT:    vpmovsxbd %xmm0, %zmm1
   6450 ; AVX512DQ-NEXT:    vpmovd2m %zmm1, %k6
   6451 ; AVX512DQ-NEXT:    vextracti128 $1, %ymm0, %xmm0
   6452 ; AVX512DQ-NEXT:    vpmovsxbd %xmm0, %zmm0
   6453 ; AVX512DQ-NEXT:    vpmovd2m %zmm0, %k7
   6454 ; AVX512DQ-NEXT:    kmovw %k7, 14(%rdi)
   6455 ; AVX512DQ-NEXT:    kmovw %k6, 12(%rdi)
   6456 ; AVX512DQ-NEXT:    kmovw %k5, 10(%rdi)
   6457 ; AVX512DQ-NEXT:    kmovw %k4, 8(%rdi)
   6458 ; AVX512DQ-NEXT:    kmovw %k3, 6(%rdi)
   6459 ; AVX512DQ-NEXT:    kmovw %k2, 4(%rdi)
   6460 ; AVX512DQ-NEXT:    kmovw %k1, 2(%rdi)
   6461 ; AVX512DQ-NEXT:    kmovw %k0, (%rdi)
   6462 ; AVX512DQ-NEXT:    movq %rdi, %rax
   6463 ; AVX512DQ-NEXT:    vzeroupper
   6464 ; AVX512DQ-NEXT:    retq
   6465 ;
   6466 ; AVX512BW-LABEL: test_cmp_v128i8:
   6467 ; AVX512BW:       # %bb.0:
   6468 ; AVX512BW-NEXT:    vpcmpgtb %zmm3, %zmm1, %k0
   6469 ; AVX512BW-NEXT:    vpcmpgtb %zmm2, %zmm0, %k1
   6470 ; AVX512BW-NEXT:    vpmovm2b %k1, %zmm0
   6471 ; AVX512BW-NEXT:    vpmovm2b %k0, %zmm1
   6472 ; AVX512BW-NEXT:    retq
   6473   %1 = icmp sgt <128 x i8> %a0, %a1
   6474   ret <128 x i1> %1
   6475 }
   6476 
   6477 ;
   6478 ; 2048-bit vector comparisons
   6479 ;
   6480 
   6481 define <32 x i1> @test_cmp_v32f64(<32 x double> %a0, <32 x double> %a1) nounwind {
   6482 ; SSE2-LABEL: test_cmp_v32f64:
   6483 ; SSE2:       # %bb.0:
   6484 ; SSE2-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm8
   6485 ; SSE2-NEXT:    cmpltpd %xmm1, %xmm8
   6486 ; SSE2-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm1
   6487 ; SSE2-NEXT:    cmpltpd %xmm0, %xmm1
   6488 ; SSE2-NEXT:    movapd {{.*#+}} xmm9 = [255,255]
   6489 ; SSE2-NEXT:    andpd %xmm9, %xmm8
   6490 ; SSE2-NEXT:    andpd %xmm9, %xmm1
   6491 ; SSE2-NEXT:    packuswb %xmm8, %xmm1
   6492 ; SSE2-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm0
   6493 ; SSE2-NEXT:    cmpltpd %xmm3, %xmm0
   6494 ; SSE2-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm3
   6495 ; SSE2-NEXT:    cmpltpd %xmm2, %xmm3
   6496 ; SSE2-NEXT:    andpd %xmm9, %xmm0
   6497 ; SSE2-NEXT:    andpd %xmm9, %xmm3
   6498 ; SSE2-NEXT:    packuswb %xmm0, %xmm3
   6499 ; SSE2-NEXT:    packuswb %xmm1, %xmm1
   6500 ; SSE2-NEXT:    packuswb %xmm1, %xmm1
   6501 ; SSE2-NEXT:    packuswb %xmm3, %xmm3
   6502 ; SSE2-NEXT:    packuswb %xmm3, %xmm3
   6503 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm3[1,1,2,3]
   6504 ; SSE2-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
   6505 ; SSE2-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm0
   6506 ; SSE2-NEXT:    cmpltpd %xmm7, %xmm0
   6507 ; SSE2-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm3
   6508 ; SSE2-NEXT:    cmpltpd %xmm6, %xmm3
   6509 ; SSE2-NEXT:    andpd %xmm9, %xmm0
   6510 ; SSE2-NEXT:    andpd %xmm9, %xmm3
   6511 ; SSE2-NEXT:    packuswb %xmm0, %xmm3
   6512 ; SSE2-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm0
   6513 ; SSE2-NEXT:    cmpltpd %xmm5, %xmm0
   6514 ; SSE2-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm6
   6515 ; SSE2-NEXT:    cmpltpd %xmm4, %xmm6
   6516 ; SSE2-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm2
   6517 ; SSE2-NEXT:    andpd %xmm9, %xmm0
   6518 ; SSE2-NEXT:    andpd %xmm9, %xmm6
   6519 ; SSE2-NEXT:    packuswb %xmm0, %xmm6
   6520 ; SSE2-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm5
   6521 ; SSE2-NEXT:    packuswb %xmm3, %xmm3
   6522 ; SSE2-NEXT:    packuswb %xmm3, %xmm3
   6523 ; SSE2-NEXT:    packuswb %xmm6, %xmm6
   6524 ; SSE2-NEXT:    packuswb %xmm6, %xmm6
   6525 ; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm6[0,1,2,2]
   6526 ; SSE2-NEXT:    punpckhdq {{.*#+}} xmm4 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]
   6527 ; SSE2-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm3
   6528 ; SSE2-NEXT:    movsd {{.*#+}} xmm4 = xmm1[0],xmm4[1]
   6529 ; SSE2-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm0
   6530 ; SSE2-NEXT:    cmpltpd {{[0-9]+}}(%rsp), %xmm0
   6531 ; SSE2-NEXT:    andpd %xmm9, %xmm0
   6532 ; SSE2-NEXT:    cmpltpd {{[0-9]+}}(%rsp), %xmm3
   6533 ; SSE2-NEXT:    andpd %xmm9, %xmm3
   6534 ; SSE2-NEXT:    packuswb %xmm0, %xmm3
   6535 ; SSE2-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm0
   6536 ; SSE2-NEXT:    cmpltpd {{[0-9]+}}(%rsp), %xmm0
   6537 ; SSE2-NEXT:    andpd %xmm9, %xmm0
   6538 ; SSE2-NEXT:    cmpltpd {{[0-9]+}}(%rsp), %xmm5
   6539 ; SSE2-NEXT:    andpd %xmm9, %xmm5
   6540 ; SSE2-NEXT:    packuswb %xmm0, %xmm5
   6541 ; SSE2-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm1
   6542 ; SSE2-NEXT:    packuswb %xmm3, %xmm3
   6543 ; SSE2-NEXT:    packuswb %xmm3, %xmm3
   6544 ; SSE2-NEXT:    packuswb %xmm5, %xmm5
   6545 ; SSE2-NEXT:    packuswb %xmm5, %xmm5
   6546 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm5[1,1,2,3]
   6547 ; SSE2-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]
   6548 ; SSE2-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm0
   6549 ; SSE2-NEXT:    cmpltpd {{[0-9]+}}(%rsp), %xmm0
   6550 ; SSE2-NEXT:    andpd %xmm9, %xmm0
   6551 ; SSE2-NEXT:    cmpltpd {{[0-9]+}}(%rsp), %xmm1
   6552 ; SSE2-NEXT:    andpd %xmm9, %xmm1
   6553 ; SSE2-NEXT:    packuswb %xmm0, %xmm1
   6554 ; SSE2-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm0
   6555 ; SSE2-NEXT:    cmpltpd {{[0-9]+}}(%rsp), %xmm0
   6556 ; SSE2-NEXT:    andpd %xmm9, %xmm0
   6557 ; SSE2-NEXT:    cmpltpd {{[0-9]+}}(%rsp), %xmm2
   6558 ; SSE2-NEXT:    andpd %xmm9, %xmm2
   6559 ; SSE2-NEXT:    packuswb %xmm0, %xmm2
   6560 ; SSE2-NEXT:    packuswb %xmm1, %xmm1
   6561 ; SSE2-NEXT:    packuswb %xmm1, %xmm1
   6562 ; SSE2-NEXT:    packuswb %xmm2, %xmm2
   6563 ; SSE2-NEXT:    packuswb %xmm2, %xmm2
   6564 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[0,1,2,2]
   6565 ; SSE2-NEXT:    punpckhdq {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]
   6566 ; SSE2-NEXT:    movsd {{.*#+}} xmm0 = xmm3[0],xmm0[1]
   6567 ; SSE2-NEXT:    movapd %xmm0, -{{[0-9]+}}(%rsp)
   6568 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   6569 ; SSE2-NEXT:    andl $1, %eax
   6570 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   6571 ; SSE2-NEXT:    andl $1, %ecx
   6572 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   6573 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   6574 ; SSE2-NEXT:    andl $1, %ecx
   6575 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   6576 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   6577 ; SSE2-NEXT:    andl $1, %ecx
   6578 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   6579 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   6580 ; SSE2-NEXT:    andl $1, %ecx
   6581 ; SSE2-NEXT:    shll $4, %ecx
   6582 ; SSE2-NEXT:    orl %eax, %ecx
   6583 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   6584 ; SSE2-NEXT:    andl $1, %eax
   6585 ; SSE2-NEXT:    shll $5, %eax
   6586 ; SSE2-NEXT:    orl %ecx, %eax
   6587 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   6588 ; SSE2-NEXT:    andl $1, %ecx
   6589 ; SSE2-NEXT:    shll $6, %ecx
   6590 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   6591 ; SSE2-NEXT:    andl $1, %edx
   6592 ; SSE2-NEXT:    shll $7, %edx
   6593 ; SSE2-NEXT:    orl %ecx, %edx
   6594 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   6595 ; SSE2-NEXT:    andl $1, %ecx
   6596 ; SSE2-NEXT:    shll $8, %ecx
   6597 ; SSE2-NEXT:    orl %edx, %ecx
   6598 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   6599 ; SSE2-NEXT:    andl $1, %edx
   6600 ; SSE2-NEXT:    shll $9, %edx
   6601 ; SSE2-NEXT:    orl %ecx, %edx
   6602 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   6603 ; SSE2-NEXT:    andl $1, %ecx
   6604 ; SSE2-NEXT:    shll $10, %ecx
   6605 ; SSE2-NEXT:    orl %edx, %ecx
   6606 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   6607 ; SSE2-NEXT:    andl $1, %edx
   6608 ; SSE2-NEXT:    shll $11, %edx
   6609 ; SSE2-NEXT:    orl %ecx, %edx
   6610 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   6611 ; SSE2-NEXT:    andl $1, %ecx
   6612 ; SSE2-NEXT:    shll $12, %ecx
   6613 ; SSE2-NEXT:    orl %edx, %ecx
   6614 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   6615 ; SSE2-NEXT:    andl $1, %edx
   6616 ; SSE2-NEXT:    shll $13, %edx
   6617 ; SSE2-NEXT:    orl %ecx, %edx
   6618 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   6619 ; SSE2-NEXT:    andl $1, %ecx
   6620 ; SSE2-NEXT:    shll $14, %ecx
   6621 ; SSE2-NEXT:    orl %edx, %ecx
   6622 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   6623 ; SSE2-NEXT:    shll $15, %edx
   6624 ; SSE2-NEXT:    orl %ecx, %edx
   6625 ; SSE2-NEXT:    orl %eax, %edx
   6626 ; SSE2-NEXT:    movw %dx, 2(%rdi)
   6627 ; SSE2-NEXT:    movapd %xmm4, -{{[0-9]+}}(%rsp)
   6628 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   6629 ; SSE2-NEXT:    andl $1, %eax
   6630 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   6631 ; SSE2-NEXT:    andl $1, %ecx
   6632 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   6633 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   6634 ; SSE2-NEXT:    andl $1, %ecx
   6635 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   6636 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   6637 ; SSE2-NEXT:    andl $1, %ecx
   6638 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   6639 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   6640 ; SSE2-NEXT:    andl $1, %ecx
   6641 ; SSE2-NEXT:    shll $4, %ecx
   6642 ; SSE2-NEXT:    orl %eax, %ecx
   6643 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   6644 ; SSE2-NEXT:    andl $1, %eax
   6645 ; SSE2-NEXT:    shll $5, %eax
   6646 ; SSE2-NEXT:    orl %ecx, %eax
   6647 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   6648 ; SSE2-NEXT:    andl $1, %ecx
   6649 ; SSE2-NEXT:    shll $6, %ecx
   6650 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   6651 ; SSE2-NEXT:    andl $1, %edx
   6652 ; SSE2-NEXT:    shll $7, %edx
   6653 ; SSE2-NEXT:    orl %ecx, %edx
   6654 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   6655 ; SSE2-NEXT:    andl $1, %ecx
   6656 ; SSE2-NEXT:    shll $8, %ecx
   6657 ; SSE2-NEXT:    orl %edx, %ecx
   6658 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   6659 ; SSE2-NEXT:    andl $1, %edx
   6660 ; SSE2-NEXT:    shll $9, %edx
   6661 ; SSE2-NEXT:    orl %ecx, %edx
   6662 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   6663 ; SSE2-NEXT:    andl $1, %ecx
   6664 ; SSE2-NEXT:    shll $10, %ecx
   6665 ; SSE2-NEXT:    orl %edx, %ecx
   6666 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   6667 ; SSE2-NEXT:    andl $1, %edx
   6668 ; SSE2-NEXT:    shll $11, %edx
   6669 ; SSE2-NEXT:    orl %ecx, %edx
   6670 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   6671 ; SSE2-NEXT:    andl $1, %ecx
   6672 ; SSE2-NEXT:    shll $12, %ecx
   6673 ; SSE2-NEXT:    orl %edx, %ecx
   6674 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   6675 ; SSE2-NEXT:    andl $1, %edx
   6676 ; SSE2-NEXT:    shll $13, %edx
   6677 ; SSE2-NEXT:    orl %ecx, %edx
   6678 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   6679 ; SSE2-NEXT:    andl $1, %ecx
   6680 ; SSE2-NEXT:    shll $14, %ecx
   6681 ; SSE2-NEXT:    orl %edx, %ecx
   6682 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   6683 ; SSE2-NEXT:    shll $15, %edx
   6684 ; SSE2-NEXT:    orl %ecx, %edx
   6685 ; SSE2-NEXT:    orl %eax, %edx
   6686 ; SSE2-NEXT:    movw %dx, (%rdi)
   6687 ; SSE2-NEXT:    movq %rdi, %rax
   6688 ; SSE2-NEXT:    retq
   6689 ;
   6690 ; SSE42-LABEL: test_cmp_v32f64:
   6691 ; SSE42:       # %bb.0:
   6692 ; SSE42-NEXT:    pushq %rbp
   6693 ; SSE42-NEXT:    pushq %r15
   6694 ; SSE42-NEXT:    pushq %r14
   6695 ; SSE42-NEXT:    pushq %r13
   6696 ; SSE42-NEXT:    pushq %r12
   6697 ; SSE42-NEXT:    pushq %rbx
   6698 ; SSE42-NEXT:    movq %rdi, -{{[0-9]+}}(%rsp) # 8-byte Spill
   6699 ; SSE42-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm8
   6700 ; SSE42-NEXT:    cmpltpd %xmm7, %xmm8
   6701 ; SSE42-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm7
   6702 ; SSE42-NEXT:    cmpltpd %xmm6, %xmm7
   6703 ; SSE42-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm6
   6704 ; SSE42-NEXT:    cmpltpd %xmm5, %xmm6
   6705 ; SSE42-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm5
   6706 ; SSE42-NEXT:    cmpltpd %xmm4, %xmm5
   6707 ; SSE42-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm4
   6708 ; SSE42-NEXT:    cmpltpd %xmm3, %xmm4
   6709 ; SSE42-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm3
   6710 ; SSE42-NEXT:    cmpltpd %xmm2, %xmm3
   6711 ; SSE42-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm2
   6712 ; SSE42-NEXT:    cmpltpd %xmm1, %xmm2
   6713 ; SSE42-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm1
   6714 ; SSE42-NEXT:    cmpltpd %xmm0, %xmm1
   6715 ; SSE42-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm0
   6716 ; SSE42-NEXT:    cmpltpd {{[0-9]+}}(%rsp), %xmm0
   6717 ; SSE42-NEXT:    pextrb $8, %xmm0, %r8d
   6718 ; SSE42-NEXT:    pextrb $0, %xmm0, %r10d
   6719 ; SSE42-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm0
   6720 ; SSE42-NEXT:    cmpltpd {{[0-9]+}}(%rsp), %xmm0
   6721 ; SSE42-NEXT:    pextrb $0, %xmm0, %ebp
   6722 ; SSE42-NEXT:    pextrb $8, %xmm0, %edi
   6723 ; SSE42-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm0
   6724 ; SSE42-NEXT:    cmpltpd {{[0-9]+}}(%rsp), %xmm0
   6725 ; SSE42-NEXT:    pextrb $0, %xmm0, %r15d
   6726 ; SSE42-NEXT:    pextrb $8, %xmm0, %r11d
   6727 ; SSE42-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm0
   6728 ; SSE42-NEXT:    cmpltpd {{[0-9]+}}(%rsp), %xmm0
   6729 ; SSE42-NEXT:    pextrb $0, %xmm0, %r14d
   6730 ; SSE42-NEXT:    pextrb $8, %xmm0, %r9d
   6731 ; SSE42-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm0
   6732 ; SSE42-NEXT:    cmpltpd {{[0-9]+}}(%rsp), %xmm0
   6733 ; SSE42-NEXT:    pextrb $0, %xmm0, %esi
   6734 ; SSE42-NEXT:    pextrb $8, %xmm0, %r12d
   6735 ; SSE42-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm0
   6736 ; SSE42-NEXT:    cmpltpd {{[0-9]+}}(%rsp), %xmm0
   6737 ; SSE42-NEXT:    pextrb $0, %xmm0, %edx
   6738 ; SSE42-NEXT:    pextrb $8, %xmm0, %ebx
   6739 ; SSE42-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm0
   6740 ; SSE42-NEXT:    cmpltpd {{[0-9]+}}(%rsp), %xmm0
   6741 ; SSE42-NEXT:    pextrb $0, %xmm0, %eax
   6742 ; SSE42-NEXT:    pextrb $8, %xmm0, %r13d
   6743 ; SSE42-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm0
   6744 ; SSE42-NEXT:    cmpltpd {{[0-9]+}}(%rsp), %xmm0
   6745 ; SSE42-NEXT:    andl $1, %r8d
   6746 ; SSE42-NEXT:    andl $1, %r10d
   6747 ; SSE42-NEXT:    leal (%r10,%r8,2), %ecx
   6748 ; SSE42-NEXT:    andl $1, %ebp
   6749 ; SSE42-NEXT:    leal (%rcx,%rbp,4), %r8d
   6750 ; SSE42-NEXT:    pextrb $0, %xmm0, %ecx
   6751 ; SSE42-NEXT:    pextrb $8, %xmm0, %ebp
   6752 ; SSE42-NEXT:    andl $1, %edi
   6753 ; SSE42-NEXT:    leal (%r8,%rdi,8), %r8d
   6754 ; SSE42-NEXT:    andl $1, %r15d
   6755 ; SSE42-NEXT:    shll $4, %r15d
   6756 ; SSE42-NEXT:    orl %r8d, %r15d
   6757 ; SSE42-NEXT:    pextrb $8, %xmm1, %edi
   6758 ; SSE42-NEXT:    movq %rdi, -{{[0-9]+}}(%rsp) # 8-byte Spill
   6759 ; SSE42-NEXT:    pextrb $0, %xmm1, %r10d
   6760 ; SSE42-NEXT:    andl $1, %r11d
   6761 ; SSE42-NEXT:    shll $5, %r11d
   6762 ; SSE42-NEXT:    orl %r15d, %r11d
   6763 ; SSE42-NEXT:    andl $1, %r14d
   6764 ; SSE42-NEXT:    shll $6, %r14d
   6765 ; SSE42-NEXT:    andl $1, %r9d
   6766 ; SSE42-NEXT:    shll $7, %r9d
   6767 ; SSE42-NEXT:    orl %r14d, %r9d
   6768 ; SSE42-NEXT:    pextrb $0, %xmm2, %r14d
   6769 ; SSE42-NEXT:    pextrb $8, %xmm2, %edi
   6770 ; SSE42-NEXT:    movq %rdi, -{{[0-9]+}}(%rsp) # 8-byte Spill
   6771 ; SSE42-NEXT:    andl $1, %esi
   6772 ; SSE42-NEXT:    shll $8, %esi
   6773 ; SSE42-NEXT:    orl %r9d, %esi
   6774 ; SSE42-NEXT:    andl $1, %r12d
   6775 ; SSE42-NEXT:    shll $9, %r12d
   6776 ; SSE42-NEXT:    orl %esi, %r12d
   6777 ; SSE42-NEXT:    pextrb $0, %xmm3, %r8d
   6778 ; SSE42-NEXT:    pextrb $8, %xmm3, %r15d
   6779 ; SSE42-NEXT:    andl $1, %edx
   6780 ; SSE42-NEXT:    shll $10, %edx
   6781 ; SSE42-NEXT:    orl %r12d, %edx
   6782 ; SSE42-NEXT:    andl $1, %ebx
   6783 ; SSE42-NEXT:    shll $11, %ebx
   6784 ; SSE42-NEXT:    orl %edx, %ebx
   6785 ; SSE42-NEXT:    pextrb $0, %xmm4, %r12d
   6786 ; SSE42-NEXT:    pextrb $8, %xmm4, %edi
   6787 ; SSE42-NEXT:    andl $1, %eax
   6788 ; SSE42-NEXT:    shll $12, %eax
   6789 ; SSE42-NEXT:    orl %ebx, %eax
   6790 ; SSE42-NEXT:    andl $1, %r13d
   6791 ; SSE42-NEXT:    shll $13, %r13d
   6792 ; SSE42-NEXT:    orl %eax, %r13d
   6793 ; SSE42-NEXT:    pextrb $0, %xmm5, %eax
   6794 ; SSE42-NEXT:    pextrb $8, %xmm5, %ebx
   6795 ; SSE42-NEXT:    andl $1, %ecx
   6796 ; SSE42-NEXT:    shll $14, %ecx
   6797 ; SSE42-NEXT:    orl %r13d, %ecx
   6798 ; SSE42-NEXT:    shll $15, %ebp
   6799 ; SSE42-NEXT:    orl %ecx, %ebp
   6800 ; SSE42-NEXT:    pextrb $0, %xmm6, %r13d
   6801 ; SSE42-NEXT:    pextrb $8, %xmm6, %edx
   6802 ; SSE42-NEXT:    orl %r11d, %ebp
   6803 ; SSE42-NEXT:    movq -{{[0-9]+}}(%rsp), %r9 # 8-byte Reload
   6804 ; SSE42-NEXT:    movw %bp, 2(%r9)
   6805 ; SSE42-NEXT:    pextrb $0, %xmm7, %r11d
   6806 ; SSE42-NEXT:    pextrb $8, %xmm7, %ecx
   6807 ; SSE42-NEXT:    movq -{{[0-9]+}}(%rsp), %rsi # 8-byte Reload
   6808 ; SSE42-NEXT:    andl $1, %esi
   6809 ; SSE42-NEXT:    andl $1, %r10d
   6810 ; SSE42-NEXT:    leal (%r10,%rsi,2), %esi
   6811 ; SSE42-NEXT:    andl $1, %r14d
   6812 ; SSE42-NEXT:    leal (%rsi,%r14,4), %r14d
   6813 ; SSE42-NEXT:    pextrb $0, %xmm8, %r10d
   6814 ; SSE42-NEXT:    pextrb $8, %xmm8, %ebp
   6815 ; SSE42-NEXT:    movq -{{[0-9]+}}(%rsp), %rsi # 8-byte Reload
   6816 ; SSE42-NEXT:    andl $1, %esi
   6817 ; SSE42-NEXT:    leal (%r14,%rsi,8), %esi
   6818 ; SSE42-NEXT:    andl $1, %r8d
   6819 ; SSE42-NEXT:    shll $4, %r8d
   6820 ; SSE42-NEXT:    orl %esi, %r8d
   6821 ; SSE42-NEXT:    andl $1, %r15d
   6822 ; SSE42-NEXT:    shll $5, %r15d
   6823 ; SSE42-NEXT:    orl %r8d, %r15d
   6824 ; SSE42-NEXT:    andl $1, %r12d
   6825 ; SSE42-NEXT:    shll $6, %r12d
   6826 ; SSE42-NEXT:    andl $1, %edi
   6827 ; SSE42-NEXT:    shll $7, %edi
   6828 ; SSE42-NEXT:    orl %r12d, %edi
   6829 ; SSE42-NEXT:    andl $1, %eax
   6830 ; SSE42-NEXT:    shll $8, %eax
   6831 ; SSE42-NEXT:    orl %edi, %eax
   6832 ; SSE42-NEXT:    andl $1, %ebx
   6833 ; SSE42-NEXT:    shll $9, %ebx
   6834 ; SSE42-NEXT:    orl %eax, %ebx
   6835 ; SSE42-NEXT:    andl $1, %r13d
   6836 ; SSE42-NEXT:    shll $10, %r13d
   6837 ; SSE42-NEXT:    orl %ebx, %r13d
   6838 ; SSE42-NEXT:    andl $1, %edx
   6839 ; SSE42-NEXT:    shll $11, %edx
   6840 ; SSE42-NEXT:    orl %r13d, %edx
   6841 ; SSE42-NEXT:    andl $1, %r11d
   6842 ; SSE42-NEXT:    shll $12, %r11d
   6843 ; SSE42-NEXT:    orl %edx, %r11d
   6844 ; SSE42-NEXT:    andl $1, %ecx
   6845 ; SSE42-NEXT:    shll $13, %ecx
   6846 ; SSE42-NEXT:    orl %r11d, %ecx
   6847 ; SSE42-NEXT:    andl $1, %r10d
   6848 ; SSE42-NEXT:    shll $14, %r10d
   6849 ; SSE42-NEXT:    orl %ecx, %r10d
   6850 ; SSE42-NEXT:    shll $15, %ebp
   6851 ; SSE42-NEXT:    orl %r10d, %ebp
   6852 ; SSE42-NEXT:    orl %r15d, %ebp
   6853 ; SSE42-NEXT:    movw %bp, (%r9)
   6854 ; SSE42-NEXT:    movq %r9, %rax
   6855 ; SSE42-NEXT:    popq %rbx
   6856 ; SSE42-NEXT:    popq %r12
   6857 ; SSE42-NEXT:    popq %r13
   6858 ; SSE42-NEXT:    popq %r14
   6859 ; SSE42-NEXT:    popq %r15
   6860 ; SSE42-NEXT:    popq %rbp
   6861 ; SSE42-NEXT:    retq
   6862 ;
   6863 ; AVX1-LABEL: test_cmp_v32f64:
   6864 ; AVX1:       # %bb.0:
   6865 ; AVX1-NEXT:    pushq %rbp
   6866 ; AVX1-NEXT:    movq %rsp, %rbp
   6867 ; AVX1-NEXT:    andq $-32, %rsp
   6868 ; AVX1-NEXT:    subq $32, %rsp
   6869 ; AVX1-NEXT:    vmovapd 16(%rbp), %ymm8
   6870 ; AVX1-NEXT:    vmovapd 48(%rbp), %ymm9
   6871 ; AVX1-NEXT:    vmovapd 80(%rbp), %ymm10
   6872 ; AVX1-NEXT:    vmovapd 112(%rbp), %ymm11
   6873 ; AVX1-NEXT:    vmovapd 144(%rbp), %ymm12
   6874 ; AVX1-NEXT:    vmovapd 176(%rbp), %ymm13
   6875 ; AVX1-NEXT:    vmovapd 208(%rbp), %ymm14
   6876 ; AVX1-NEXT:    vmovapd 240(%rbp), %ymm15
   6877 ; AVX1-NEXT:    vcmpltpd %ymm7, %ymm15, %ymm15
   6878 ; AVX1-NEXT:    vextractf128 $1, %ymm15, %xmm7
   6879 ; AVX1-NEXT:    vpackssdw %xmm7, %xmm15, %xmm15
   6880 ; AVX1-NEXT:    vcmpltpd %ymm6, %ymm14, %ymm6
   6881 ; AVX1-NEXT:    vextractf128 $1, %ymm6, %xmm7
   6882 ; AVX1-NEXT:    vpackssdw %xmm7, %xmm6, %xmm6
   6883 ; AVX1-NEXT:    vpackssdw %xmm15, %xmm6, %xmm6
   6884 ; AVX1-NEXT:    vcmpltpd %ymm5, %ymm13, %ymm5
   6885 ; AVX1-NEXT:    vextractf128 $1, %ymm5, %xmm7
   6886 ; AVX1-NEXT:    vpackssdw %xmm7, %xmm5, %xmm5
   6887 ; AVX1-NEXT:    vcmpltpd %ymm4, %ymm12, %ymm4
   6888 ; AVX1-NEXT:    vextractf128 $1, %ymm4, %xmm7
   6889 ; AVX1-NEXT:    vpackssdw %xmm7, %xmm4, %xmm4
   6890 ; AVX1-NEXT:    vpackssdw %xmm5, %xmm4, %xmm4
   6891 ; AVX1-NEXT:    vpacksswb %xmm6, %xmm4, %xmm4
   6892 ; AVX1-NEXT:    vcmpltpd %ymm3, %ymm11, %ymm3
   6893 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm5
   6894 ; AVX1-NEXT:    vpackssdw %xmm5, %xmm3, %xmm3
   6895 ; AVX1-NEXT:    vcmpltpd %ymm2, %ymm10, %ymm2
   6896 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm5
   6897 ; AVX1-NEXT:    vpackssdw %xmm5, %xmm2, %xmm2
   6898 ; AVX1-NEXT:    vpackssdw %xmm3, %xmm2, %xmm2
   6899 ; AVX1-NEXT:    vcmpltpd %ymm1, %ymm9, %ymm1
   6900 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   6901 ; AVX1-NEXT:    vpackssdw %xmm3, %xmm1, %xmm1
   6902 ; AVX1-NEXT:    vcmpltpd %ymm0, %ymm8, %ymm0
   6903 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
   6904 ; AVX1-NEXT:    vpackssdw %xmm3, %xmm0, %xmm0
   6905 ; AVX1-NEXT:    vpackssdw %xmm1, %xmm0, %xmm0
   6906 ; AVX1-NEXT:    vpacksswb %xmm2, %xmm0, %xmm0
   6907 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm0
   6908 ; AVX1-NEXT:    movq %rbp, %rsp
   6909 ; AVX1-NEXT:    popq %rbp
   6910 ; AVX1-NEXT:    retq
   6911 ;
   6912 ; AVX2-LABEL: test_cmp_v32f64:
   6913 ; AVX2:       # %bb.0:
   6914 ; AVX2-NEXT:    pushq %rbp
   6915 ; AVX2-NEXT:    movq %rsp, %rbp
   6916 ; AVX2-NEXT:    andq $-32, %rsp
   6917 ; AVX2-NEXT:    subq $32, %rsp
   6918 ; AVX2-NEXT:    vmovapd 16(%rbp), %ymm8
   6919 ; AVX2-NEXT:    vmovapd 48(%rbp), %ymm9
   6920 ; AVX2-NEXT:    vmovapd 80(%rbp), %ymm10
   6921 ; AVX2-NEXT:    vmovapd 112(%rbp), %ymm11
   6922 ; AVX2-NEXT:    vmovapd 144(%rbp), %ymm12
   6923 ; AVX2-NEXT:    vmovapd 176(%rbp), %ymm13
   6924 ; AVX2-NEXT:    vmovapd 208(%rbp), %ymm14
   6925 ; AVX2-NEXT:    vmovapd 240(%rbp), %ymm15
   6926 ; AVX2-NEXT:    vcmpltpd %ymm7, %ymm15, %ymm7
   6927 ; AVX2-NEXT:    vcmpltpd %ymm6, %ymm14, %ymm6
   6928 ; AVX2-NEXT:    vpackssdw %ymm7, %ymm6, %ymm6
   6929 ; AVX2-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,2,1,3]
   6930 ; AVX2-NEXT:    vcmpltpd %ymm5, %ymm13, %ymm5
   6931 ; AVX2-NEXT:    vcmpltpd %ymm4, %ymm12, %ymm4
   6932 ; AVX2-NEXT:    vpackssdw %ymm5, %ymm4, %ymm4
   6933 ; AVX2-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,2,1,3]
   6934 ; AVX2-NEXT:    vpackssdw %ymm6, %ymm4, %ymm4
   6935 ; AVX2-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,2,1,3]
   6936 ; AVX2-NEXT:    vcmpltpd %ymm3, %ymm11, %ymm3
   6937 ; AVX2-NEXT:    vcmpltpd %ymm2, %ymm10, %ymm2
   6938 ; AVX2-NEXT:    vpackssdw %ymm3, %ymm2, %ymm2
   6939 ; AVX2-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,2,1,3]
   6940 ; AVX2-NEXT:    vcmpltpd %ymm1, %ymm9, %ymm1
   6941 ; AVX2-NEXT:    vcmpltpd %ymm0, %ymm8, %ymm0
   6942 ; AVX2-NEXT:    vpackssdw %ymm1, %ymm0, %ymm0
   6943 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]
   6944 ; AVX2-NEXT:    vpackssdw %ymm2, %ymm0, %ymm0
   6945 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]
   6946 ; AVX2-NEXT:    vpacksswb %ymm4, %ymm0, %ymm0
   6947 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]
   6948 ; AVX2-NEXT:    movq %rbp, %rsp
   6949 ; AVX2-NEXT:    popq %rbp
   6950 ; AVX2-NEXT:    retq
   6951 ;
   6952 ; AVX512F-LABEL: test_cmp_v32f64:
   6953 ; AVX512F:       # %bb.0:
   6954 ; AVX512F-NEXT:    vcmpltpd %zmm2, %zmm6, %k0
   6955 ; AVX512F-NEXT:    vcmpltpd %zmm3, %zmm7, %k1
   6956 ; AVX512F-NEXT:    kunpckbw %k0, %k1, %k1
   6957 ; AVX512F-NEXT:    vcmpltpd %zmm0, %zmm4, %k0
   6958 ; AVX512F-NEXT:    vcmpltpd %zmm1, %zmm5, %k2
   6959 ; AVX512F-NEXT:    kunpckbw %k0, %k2, %k2
   6960 ; AVX512F-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k2} {z}
   6961 ; AVX512F-NEXT:    vpmovdb %zmm0, %xmm0
   6962 ; AVX512F-NEXT:    vpternlogd $255, %zmm1, %zmm1, %zmm1 {%k1} {z}
   6963 ; AVX512F-NEXT:    vpmovdb %zmm1, %xmm1
   6964 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   6965 ; AVX512F-NEXT:    retq
   6966 ;
   6967 ; AVX512DQ-LABEL: test_cmp_v32f64:
   6968 ; AVX512DQ:       # %bb.0:
   6969 ; AVX512DQ-NEXT:    vcmpltpd %zmm2, %zmm6, %k0
   6970 ; AVX512DQ-NEXT:    vcmpltpd %zmm3, %zmm7, %k1
   6971 ; AVX512DQ-NEXT:    kunpckbw %k0, %k1, %k0
   6972 ; AVX512DQ-NEXT:    vcmpltpd %zmm0, %zmm4, %k1
   6973 ; AVX512DQ-NEXT:    vcmpltpd %zmm1, %zmm5, %k2
   6974 ; AVX512DQ-NEXT:    kunpckbw %k1, %k2, %k1
   6975 ; AVX512DQ-NEXT:    vpmovm2d %k1, %zmm0
   6976 ; AVX512DQ-NEXT:    vpmovdb %zmm0, %xmm0
   6977 ; AVX512DQ-NEXT:    vpmovm2d %k0, %zmm1
   6978 ; AVX512DQ-NEXT:    vpmovdb %zmm1, %xmm1
   6979 ; AVX512DQ-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   6980 ; AVX512DQ-NEXT:    retq
   6981 ;
   6982 ; AVX512BW-LABEL: test_cmp_v32f64:
   6983 ; AVX512BW:       # %bb.0:
   6984 ; AVX512BW-NEXT:    vcmpltpd %zmm0, %zmm4, %k0
   6985 ; AVX512BW-NEXT:    vcmpltpd %zmm1, %zmm5, %k1
   6986 ; AVX512BW-NEXT:    kunpckbw %k0, %k1, %k0
   6987 ; AVX512BW-NEXT:    vcmpltpd %zmm2, %zmm6, %k1
   6988 ; AVX512BW-NEXT:    vcmpltpd %zmm3, %zmm7, %k2
   6989 ; AVX512BW-NEXT:    kunpckbw %k1, %k2, %k1
   6990 ; AVX512BW-NEXT:    kunpckwd %k0, %k1, %k0
   6991 ; AVX512BW-NEXT:    vpmovm2b %k0, %zmm0
   6992 ; AVX512BW-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
   6993 ; AVX512BW-NEXT:    retq
   6994   %1 = fcmp ogt <32 x double> %a0, %a1
   6995   ret <32 x i1> %1
   6996 }
   6997 
   6998 define <32 x i1> @test_cmp_v32i64(<32 x i64> %a0, <32 x i64> %a1) nounwind {
   6999 ; SSE2-LABEL: test_cmp_v32i64:
   7000 ; SSE2:       # %bb.0:
   7001 ; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [2147483648,0,2147483648,0]
   7002 ; SSE2-NEXT:    pxor %xmm8, %xmm1
   7003 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm9
   7004 ; SSE2-NEXT:    pxor %xmm8, %xmm9
   7005 ; SSE2-NEXT:    movdqa %xmm1, %xmm10
   7006 ; SSE2-NEXT:    pcmpgtd %xmm9, %xmm10
   7007 ; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2]
   7008 ; SSE2-NEXT:    pcmpeqd %xmm1, %xmm9
   7009 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm9[1,1,3,3]
   7010 ; SSE2-NEXT:    pand %xmm11, %xmm1
   7011 ; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]
   7012 ; SSE2-NEXT:    por %xmm1, %xmm9
   7013 ; SSE2-NEXT:    movdqa {{.*#+}} xmm10 = [255,255]
   7014 ; SSE2-NEXT:    pand %xmm10, %xmm9
   7015 ; SSE2-NEXT:    pxor %xmm8, %xmm0
   7016 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm1
   7017 ; SSE2-NEXT:    pxor %xmm8, %xmm1
   7018 ; SSE2-NEXT:    movdqa %xmm0, %xmm11
   7019 ; SSE2-NEXT:    pcmpgtd %xmm1, %xmm11
   7020 ; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm11[0,0,2,2]
   7021 ; SSE2-NEXT:    pcmpeqd %xmm0, %xmm1
   7022 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
   7023 ; SSE2-NEXT:    pand %xmm12, %xmm1
   7024 ; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm11[1,1,3,3]
   7025 ; SSE2-NEXT:    por %xmm1, %xmm11
   7026 ; SSE2-NEXT:    pand %xmm10, %xmm11
   7027 ; SSE2-NEXT:    packuswb %xmm9, %xmm11
   7028 ; SSE2-NEXT:    packuswb %xmm11, %xmm11
   7029 ; SSE2-NEXT:    packuswb %xmm11, %xmm11
   7030 ; SSE2-NEXT:    pxor %xmm8, %xmm3
   7031 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm1
   7032 ; SSE2-NEXT:    pxor %xmm8, %xmm1
   7033 ; SSE2-NEXT:    movdqa %xmm3, %xmm0
   7034 ; SSE2-NEXT:    pcmpgtd %xmm1, %xmm0
   7035 ; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm0[0,0,2,2]
   7036 ; SSE2-NEXT:    pcmpeqd %xmm3, %xmm1
   7037 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
   7038 ; SSE2-NEXT:    pand %xmm9, %xmm1
   7039 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
   7040 ; SSE2-NEXT:    por %xmm1, %xmm0
   7041 ; SSE2-NEXT:    pand %xmm10, %xmm0
   7042 ; SSE2-NEXT:    pxor %xmm8, %xmm2
   7043 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm1
   7044 ; SSE2-NEXT:    pxor %xmm8, %xmm1
   7045 ; SSE2-NEXT:    movdqa %xmm2, %xmm3
   7046 ; SSE2-NEXT:    pcmpgtd %xmm1, %xmm3
   7047 ; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm3[0,0,2,2]
   7048 ; SSE2-NEXT:    pcmpeqd %xmm2, %xmm1
   7049 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
   7050 ; SSE2-NEXT:    pand %xmm9, %xmm1
   7051 ; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm3[1,1,3,3]
   7052 ; SSE2-NEXT:    por %xmm1, %xmm2
   7053 ; SSE2-NEXT:    pand %xmm10, %xmm2
   7054 ; SSE2-NEXT:    packuswb %xmm0, %xmm2
   7055 ; SSE2-NEXT:    packuswb %xmm2, %xmm2
   7056 ; SSE2-NEXT:    packuswb %xmm2, %xmm2
   7057 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[1,1,2,3]
   7058 ; SSE2-NEXT:    punpckldq {{.*#+}} xmm11 = xmm11[0],xmm0[0],xmm11[1],xmm0[1]
   7059 ; SSE2-NEXT:    pxor %xmm8, %xmm7
   7060 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm0
   7061 ; SSE2-NEXT:    pxor %xmm8, %xmm0
   7062 ; SSE2-NEXT:    movdqa %xmm7, %xmm1
   7063 ; SSE2-NEXT:    pcmpgtd %xmm0, %xmm1
   7064 ; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm1[0,0,2,2]
   7065 ; SSE2-NEXT:    pcmpeqd %xmm7, %xmm0
   7066 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
   7067 ; SSE2-NEXT:    pand %xmm2, %xmm0
   7068 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
   7069 ; SSE2-NEXT:    por %xmm0, %xmm1
   7070 ; SSE2-NEXT:    pand %xmm10, %xmm1
   7071 ; SSE2-NEXT:    pxor %xmm8, %xmm6
   7072 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm0
   7073 ; SSE2-NEXT:    pxor %xmm8, %xmm0
   7074 ; SSE2-NEXT:    movdqa %xmm6, %xmm2
   7075 ; SSE2-NEXT:    pcmpgtd %xmm0, %xmm2
   7076 ; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm2[0,0,2,2]
   7077 ; SSE2-NEXT:    pcmpeqd %xmm6, %xmm0
   7078 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
   7079 ; SSE2-NEXT:    pand %xmm3, %xmm0
   7080 ; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
   7081 ; SSE2-NEXT:    por %xmm0, %xmm2
   7082 ; SSE2-NEXT:    pand %xmm10, %xmm2
   7083 ; SSE2-NEXT:    packuswb %xmm1, %xmm2
   7084 ; SSE2-NEXT:    packuswb %xmm2, %xmm2
   7085 ; SSE2-NEXT:    packuswb %xmm2, %xmm2
   7086 ; SSE2-NEXT:    pxor %xmm8, %xmm5
   7087 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm0
   7088 ; SSE2-NEXT:    pxor %xmm8, %xmm0
   7089 ; SSE2-NEXT:    movdqa %xmm5, %xmm1
   7090 ; SSE2-NEXT:    pcmpgtd %xmm0, %xmm1
   7091 ; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm1[0,0,2,2]
   7092 ; SSE2-NEXT:    pcmpeqd %xmm5, %xmm0
   7093 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
   7094 ; SSE2-NEXT:    pand %xmm3, %xmm0
   7095 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
   7096 ; SSE2-NEXT:    por %xmm0, %xmm1
   7097 ; SSE2-NEXT:    pand %xmm10, %xmm1
   7098 ; SSE2-NEXT:    pxor %xmm8, %xmm4
   7099 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm0
   7100 ; SSE2-NEXT:    pxor %xmm8, %xmm0
   7101 ; SSE2-NEXT:    movdqa %xmm4, %xmm3
   7102 ; SSE2-NEXT:    pcmpgtd %xmm0, %xmm3
   7103 ; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm3[0,0,2,2]
   7104 ; SSE2-NEXT:    pcmpeqd %xmm4, %xmm0
   7105 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
   7106 ; SSE2-NEXT:    pand %xmm5, %xmm0
   7107 ; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
   7108 ; SSE2-NEXT:    por %xmm0, %xmm3
   7109 ; SSE2-NEXT:    pand %xmm10, %xmm3
   7110 ; SSE2-NEXT:    packuswb %xmm1, %xmm3
   7111 ; SSE2-NEXT:    packuswb %xmm3, %xmm3
   7112 ; SSE2-NEXT:    packuswb %xmm3, %xmm3
   7113 ; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,2,2]
   7114 ; SSE2-NEXT:    punpckhdq {{.*#+}} xmm3 = xmm3[2],xmm2[2],xmm3[3],xmm2[3]
   7115 ; SSE2-NEXT:    movsd {{.*#+}} xmm3 = xmm11[0],xmm3[1]
   7116 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm0
   7117 ; SSE2-NEXT:    pxor %xmm8, %xmm0
   7118 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm1
   7119 ; SSE2-NEXT:    pxor %xmm8, %xmm1
   7120 ; SSE2-NEXT:    movdqa %xmm1, %xmm2
   7121 ; SSE2-NEXT:    pcmpgtd %xmm0, %xmm2
   7122 ; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm2[0,0,2,2]
   7123 ; SSE2-NEXT:    pcmpeqd %xmm0, %xmm1
   7124 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3]
   7125 ; SSE2-NEXT:    pand %xmm4, %xmm0
   7126 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm2[1,1,3,3]
   7127 ; SSE2-NEXT:    por %xmm0, %xmm1
   7128 ; SSE2-NEXT:    pand %xmm10, %xmm1
   7129 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm0
   7130 ; SSE2-NEXT:    pxor %xmm8, %xmm0
   7131 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm2
   7132 ; SSE2-NEXT:    pxor %xmm8, %xmm2
   7133 ; SSE2-NEXT:    movdqa %xmm2, %xmm4
   7134 ; SSE2-NEXT:    pcmpgtd %xmm0, %xmm4
   7135 ; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
   7136 ; SSE2-NEXT:    pcmpeqd %xmm0, %xmm2
   7137 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[1,1,3,3]
   7138 ; SSE2-NEXT:    pand %xmm5, %xmm0
   7139 ; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]
   7140 ; SSE2-NEXT:    por %xmm0, %xmm2
   7141 ; SSE2-NEXT:    pand %xmm10, %xmm2
   7142 ; SSE2-NEXT:    packuswb %xmm1, %xmm2
   7143 ; SSE2-NEXT:    packuswb %xmm2, %xmm2
   7144 ; SSE2-NEXT:    packuswb %xmm2, %xmm2
   7145 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm0
   7146 ; SSE2-NEXT:    pxor %xmm8, %xmm0
   7147 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm1
   7148 ; SSE2-NEXT:    pxor %xmm8, %xmm1
   7149 ; SSE2-NEXT:    movdqa %xmm1, %xmm4
   7150 ; SSE2-NEXT:    pcmpgtd %xmm0, %xmm4
   7151 ; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
   7152 ; SSE2-NEXT:    pcmpeqd %xmm0, %xmm1
   7153 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3]
   7154 ; SSE2-NEXT:    pand %xmm5, %xmm0
   7155 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm4[1,1,3,3]
   7156 ; SSE2-NEXT:    por %xmm0, %xmm1
   7157 ; SSE2-NEXT:    pand %xmm10, %xmm1
   7158 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm0
   7159 ; SSE2-NEXT:    pxor %xmm8, %xmm0
   7160 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm4
   7161 ; SSE2-NEXT:    pxor %xmm8, %xmm4
   7162 ; SSE2-NEXT:    movdqa %xmm4, %xmm5
   7163 ; SSE2-NEXT:    pcmpgtd %xmm0, %xmm5
   7164 ; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]
   7165 ; SSE2-NEXT:    pcmpeqd %xmm0, %xmm4
   7166 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm4[1,1,3,3]
   7167 ; SSE2-NEXT:    pand %xmm6, %xmm0
   7168 ; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]
   7169 ; SSE2-NEXT:    por %xmm0, %xmm4
   7170 ; SSE2-NEXT:    pand %xmm10, %xmm4
   7171 ; SSE2-NEXT:    packuswb %xmm1, %xmm4
   7172 ; SSE2-NEXT:    packuswb %xmm4, %xmm4
   7173 ; SSE2-NEXT:    packuswb %xmm4, %xmm4
   7174 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm4[1,1,2,3]
   7175 ; SSE2-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]
   7176 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm0
   7177 ; SSE2-NEXT:    pxor %xmm8, %xmm0
   7178 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm1
   7179 ; SSE2-NEXT:    pxor %xmm8, %xmm1
   7180 ; SSE2-NEXT:    movdqa %xmm1, %xmm4
   7181 ; SSE2-NEXT:    pcmpgtd %xmm0, %xmm4
   7182 ; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
   7183 ; SSE2-NEXT:    pcmpeqd %xmm0, %xmm1
   7184 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3]
   7185 ; SSE2-NEXT:    pand %xmm5, %xmm0
   7186 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm4[1,1,3,3]
   7187 ; SSE2-NEXT:    por %xmm0, %xmm1
   7188 ; SSE2-NEXT:    pand %xmm10, %xmm1
   7189 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm0
   7190 ; SSE2-NEXT:    pxor %xmm8, %xmm0
   7191 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm4
   7192 ; SSE2-NEXT:    pxor %xmm8, %xmm4
   7193 ; SSE2-NEXT:    movdqa %xmm4, %xmm5
   7194 ; SSE2-NEXT:    pcmpgtd %xmm0, %xmm5
   7195 ; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]
   7196 ; SSE2-NEXT:    pcmpeqd %xmm0, %xmm4
   7197 ; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
   7198 ; SSE2-NEXT:    pand %xmm6, %xmm4
   7199 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm5[1,1,3,3]
   7200 ; SSE2-NEXT:    por %xmm4, %xmm0
   7201 ; SSE2-NEXT:    pand %xmm10, %xmm0
   7202 ; SSE2-NEXT:    packuswb %xmm1, %xmm0
   7203 ; SSE2-NEXT:    packuswb %xmm0, %xmm0
   7204 ; SSE2-NEXT:    packuswb %xmm0, %xmm0
   7205 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm1
   7206 ; SSE2-NEXT:    pxor %xmm8, %xmm1
   7207 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm4
   7208 ; SSE2-NEXT:    pxor %xmm8, %xmm4
   7209 ; SSE2-NEXT:    movdqa %xmm4, %xmm5
   7210 ; SSE2-NEXT:    pcmpgtd %xmm1, %xmm5
   7211 ; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]
   7212 ; SSE2-NEXT:    pcmpeqd %xmm1, %xmm4
   7213 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm4[1,1,3,3]
   7214 ; SSE2-NEXT:    pand %xmm6, %xmm1
   7215 ; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]
   7216 ; SSE2-NEXT:    por %xmm1, %xmm4
   7217 ; SSE2-NEXT:    pand %xmm10, %xmm4
   7218 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm1
   7219 ; SSE2-NEXT:    pxor %xmm8, %xmm1
   7220 ; SSE2-NEXT:    pxor {{[0-9]+}}(%rsp), %xmm8
   7221 ; SSE2-NEXT:    movdqa %xmm8, %xmm5
   7222 ; SSE2-NEXT:    pcmpgtd %xmm1, %xmm5
   7223 ; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]
   7224 ; SSE2-NEXT:    pcmpeqd %xmm1, %xmm8
   7225 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm8[1,1,3,3]
   7226 ; SSE2-NEXT:    pand %xmm6, %xmm1
   7227 ; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]
   7228 ; SSE2-NEXT:    por %xmm1, %xmm5
   7229 ; SSE2-NEXT:    pand %xmm10, %xmm5
   7230 ; SSE2-NEXT:    packuswb %xmm4, %xmm5
   7231 ; SSE2-NEXT:    packuswb %xmm5, %xmm5
   7232 ; SSE2-NEXT:    packuswb %xmm5, %xmm5
   7233 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm5[0,1,2,2]
   7234 ; SSE2-NEXT:    punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]
   7235 ; SSE2-NEXT:    movsd {{.*#+}} xmm1 = xmm2[0],xmm1[1]
   7236 ; SSE2-NEXT:    movapd %xmm1, -{{[0-9]+}}(%rsp)
   7237 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   7238 ; SSE2-NEXT:    andl $1, %eax
   7239 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   7240 ; SSE2-NEXT:    andl $1, %ecx
   7241 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   7242 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   7243 ; SSE2-NEXT:    andl $1, %ecx
   7244 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   7245 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   7246 ; SSE2-NEXT:    andl $1, %ecx
   7247 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   7248 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   7249 ; SSE2-NEXT:    andl $1, %ecx
   7250 ; SSE2-NEXT:    shll $4, %ecx
   7251 ; SSE2-NEXT:    orl %eax, %ecx
   7252 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   7253 ; SSE2-NEXT:    andl $1, %eax
   7254 ; SSE2-NEXT:    shll $5, %eax
   7255 ; SSE2-NEXT:    orl %ecx, %eax
   7256 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   7257 ; SSE2-NEXT:    andl $1, %ecx
   7258 ; SSE2-NEXT:    shll $6, %ecx
   7259 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   7260 ; SSE2-NEXT:    andl $1, %edx
   7261 ; SSE2-NEXT:    shll $7, %edx
   7262 ; SSE2-NEXT:    orl %ecx, %edx
   7263 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   7264 ; SSE2-NEXT:    andl $1, %ecx
   7265 ; SSE2-NEXT:    shll $8, %ecx
   7266 ; SSE2-NEXT:    orl %edx, %ecx
   7267 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   7268 ; SSE2-NEXT:    andl $1, %edx
   7269 ; SSE2-NEXT:    shll $9, %edx
   7270 ; SSE2-NEXT:    orl %ecx, %edx
   7271 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   7272 ; SSE2-NEXT:    andl $1, %ecx
   7273 ; SSE2-NEXT:    shll $10, %ecx
   7274 ; SSE2-NEXT:    orl %edx, %ecx
   7275 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   7276 ; SSE2-NEXT:    andl $1, %edx
   7277 ; SSE2-NEXT:    shll $11, %edx
   7278 ; SSE2-NEXT:    orl %ecx, %edx
   7279 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   7280 ; SSE2-NEXT:    andl $1, %ecx
   7281 ; SSE2-NEXT:    shll $12, %ecx
   7282 ; SSE2-NEXT:    orl %edx, %ecx
   7283 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   7284 ; SSE2-NEXT:    andl $1, %edx
   7285 ; SSE2-NEXT:    shll $13, %edx
   7286 ; SSE2-NEXT:    orl %ecx, %edx
   7287 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   7288 ; SSE2-NEXT:    andl $1, %ecx
   7289 ; SSE2-NEXT:    shll $14, %ecx
   7290 ; SSE2-NEXT:    orl %edx, %ecx
   7291 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   7292 ; SSE2-NEXT:    shll $15, %edx
   7293 ; SSE2-NEXT:    orl %ecx, %edx
   7294 ; SSE2-NEXT:    orl %eax, %edx
   7295 ; SSE2-NEXT:    movw %dx, 2(%rdi)
   7296 ; SSE2-NEXT:    movapd %xmm3, -{{[0-9]+}}(%rsp)
   7297 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   7298 ; SSE2-NEXT:    andl $1, %eax
   7299 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   7300 ; SSE2-NEXT:    andl $1, %ecx
   7301 ; SSE2-NEXT:    leal (%rcx,%rax,2), %eax
   7302 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   7303 ; SSE2-NEXT:    andl $1, %ecx
   7304 ; SSE2-NEXT:    leal (%rax,%rcx,4), %eax
   7305 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   7306 ; SSE2-NEXT:    andl $1, %ecx
   7307 ; SSE2-NEXT:    leal (%rax,%rcx,8), %eax
   7308 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   7309 ; SSE2-NEXT:    andl $1, %ecx
   7310 ; SSE2-NEXT:    shll $4, %ecx
   7311 ; SSE2-NEXT:    orl %eax, %ecx
   7312 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
   7313 ; SSE2-NEXT:    andl $1, %eax
   7314 ; SSE2-NEXT:    shll $5, %eax
   7315 ; SSE2-NEXT:    orl %ecx, %eax
   7316 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   7317 ; SSE2-NEXT:    andl $1, %ecx
   7318 ; SSE2-NEXT:    shll $6, %ecx
   7319 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   7320 ; SSE2-NEXT:    andl $1, %edx
   7321 ; SSE2-NEXT:    shll $7, %edx
   7322 ; SSE2-NEXT:    orl %ecx, %edx
   7323 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   7324 ; SSE2-NEXT:    andl $1, %ecx
   7325 ; SSE2-NEXT:    shll $8, %ecx
   7326 ; SSE2-NEXT:    orl %edx, %ecx
   7327 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   7328 ; SSE2-NEXT:    andl $1, %edx
   7329 ; SSE2-NEXT:    shll $9, %edx
   7330 ; SSE2-NEXT:    orl %ecx, %edx
   7331 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   7332 ; SSE2-NEXT:    andl $1, %ecx
   7333 ; SSE2-NEXT:    shll $10, %ecx
   7334 ; SSE2-NEXT:    orl %edx, %ecx
   7335 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   7336 ; SSE2-NEXT:    andl $1, %edx
   7337 ; SSE2-NEXT:    shll $11, %edx
   7338 ; SSE2-NEXT:    orl %ecx, %edx
   7339 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   7340 ; SSE2-NEXT:    andl $1, %ecx
   7341 ; SSE2-NEXT:    shll $12, %ecx
   7342 ; SSE2-NEXT:    orl %edx, %ecx
   7343 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   7344 ; SSE2-NEXT:    andl $1, %edx
   7345 ; SSE2-NEXT:    shll $13, %edx
   7346 ; SSE2-NEXT:    orl %ecx, %edx
   7347 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
   7348 ; SSE2-NEXT:    andl $1, %ecx
   7349 ; SSE2-NEXT:    shll $14, %ecx
   7350 ; SSE2-NEXT:    orl %edx, %ecx
   7351 ; SSE2-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
   7352 ; SSE2-NEXT:    shll $15, %edx
   7353 ; SSE2-NEXT:    orl %ecx, %edx
   7354 ; SSE2-NEXT:    orl %eax, %edx
   7355 ; SSE2-NEXT:    movw %dx, (%rdi)
   7356 ; SSE2-NEXT:    movq %rdi, %rax
   7357 ; SSE2-NEXT:    retq
   7358 ;
   7359 ; SSE42-LABEL: test_cmp_v32i64:
   7360 ; SSE42:       # %bb.0:
   7361 ; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm15
   7362 ; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm14
   7363 ; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm13
   7364 ; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm12
   7365 ; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm11
   7366 ; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm10
   7367 ; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm9
   7368 ; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm8
   7369 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm7
   7370 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm6
   7371 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm5
   7372 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm4
   7373 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm3
   7374 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm2
   7375 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm1
   7376 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm0
   7377 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm8
   7378 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm9
   7379 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm10
   7380 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm11
   7381 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm12
   7382 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm13
   7383 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm14
   7384 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm15
   7385 ; SSE42-NEXT:    pextrb $8, %xmm15, %eax
   7386 ; SSE42-NEXT:    andl $1, %eax
   7387 ; SSE42-NEXT:    pextrb $0, %xmm15, %ecx
   7388 ; SSE42-NEXT:    andl $1, %ecx
   7389 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
   7390 ; SSE42-NEXT:    pextrb $0, %xmm14, %ecx
   7391 ; SSE42-NEXT:    andl $1, %ecx
   7392 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
   7393 ; SSE42-NEXT:    pextrb $8, %xmm14, %ecx
   7394 ; SSE42-NEXT:    andl $1, %ecx
   7395 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
   7396 ; SSE42-NEXT:    pextrb $0, %xmm13, %ecx
   7397 ; SSE42-NEXT:    andl $1, %ecx
   7398 ; SSE42-NEXT:    shll $4, %ecx
   7399 ; SSE42-NEXT:    orl %eax, %ecx
   7400 ; SSE42-NEXT:    pextrb $8, %xmm13, %eax
   7401 ; SSE42-NEXT:    andl $1, %eax
   7402 ; SSE42-NEXT:    shll $5, %eax
   7403 ; SSE42-NEXT:    orl %ecx, %eax
   7404 ; SSE42-NEXT:    pextrb $0, %xmm12, %ecx
   7405 ; SSE42-NEXT:    andl $1, %ecx
   7406 ; SSE42-NEXT:    shll $6, %ecx
   7407 ; SSE42-NEXT:    pextrb $8, %xmm12, %edx
   7408 ; SSE42-NEXT:    andl $1, %edx
   7409 ; SSE42-NEXT:    shll $7, %edx
   7410 ; SSE42-NEXT:    orl %ecx, %edx
   7411 ; SSE42-NEXT:    pextrb $0, %xmm11, %ecx
   7412 ; SSE42-NEXT:    andl $1, %ecx
   7413 ; SSE42-NEXT:    shll $8, %ecx
   7414 ; SSE42-NEXT:    orl %edx, %ecx
   7415 ; SSE42-NEXT:    pextrb $8, %xmm11, %edx
   7416 ; SSE42-NEXT:    andl $1, %edx
   7417 ; SSE42-NEXT:    shll $9, %edx
   7418 ; SSE42-NEXT:    orl %ecx, %edx
   7419 ; SSE42-NEXT:    pextrb $0, %xmm10, %ecx
   7420 ; SSE42-NEXT:    andl $1, %ecx
   7421 ; SSE42-NEXT:    shll $10, %ecx
   7422 ; SSE42-NEXT:    orl %edx, %ecx
   7423 ; SSE42-NEXT:    pextrb $8, %xmm10, %edx
   7424 ; SSE42-NEXT:    andl $1, %edx
   7425 ; SSE42-NEXT:    shll $11, %edx
   7426 ; SSE42-NEXT:    orl %ecx, %edx
   7427 ; SSE42-NEXT:    pextrb $0, %xmm9, %ecx
   7428 ; SSE42-NEXT:    andl $1, %ecx
   7429 ; SSE42-NEXT:    shll $12, %ecx
   7430 ; SSE42-NEXT:    orl %edx, %ecx
   7431 ; SSE42-NEXT:    pextrb $8, %xmm9, %edx
   7432 ; SSE42-NEXT:    andl $1, %edx
   7433 ; SSE42-NEXT:    shll $13, %edx
   7434 ; SSE42-NEXT:    orl %ecx, %edx
   7435 ; SSE42-NEXT:    pextrb $0, %xmm8, %ecx
   7436 ; SSE42-NEXT:    andl $1, %ecx
   7437 ; SSE42-NEXT:    shll $14, %ecx
   7438 ; SSE42-NEXT:    orl %edx, %ecx
   7439 ; SSE42-NEXT:    pextrb $8, %xmm8, %edx
   7440 ; SSE42-NEXT:    shll $15, %edx
   7441 ; SSE42-NEXT:    orl %ecx, %edx
   7442 ; SSE42-NEXT:    orl %eax, %edx
   7443 ; SSE42-NEXT:    movw %dx, 2(%rdi)
   7444 ; SSE42-NEXT:    pextrb $8, %xmm0, %eax
   7445 ; SSE42-NEXT:    andl $1, %eax
   7446 ; SSE42-NEXT:    pextrb $0, %xmm0, %ecx
   7447 ; SSE42-NEXT:    andl $1, %ecx
   7448 ; SSE42-NEXT:    leal (%rcx,%rax,2), %eax
   7449 ; SSE42-NEXT:    pextrb $0, %xmm1, %ecx
   7450 ; SSE42-NEXT:    andl $1, %ecx
   7451 ; SSE42-NEXT:    leal (%rax,%rcx,4), %eax
   7452 ; SSE42-NEXT:    pextrb $8, %xmm1, %ecx
   7453 ; SSE42-NEXT:    andl $1, %ecx
   7454 ; SSE42-NEXT:    leal (%rax,%rcx,8), %eax
   7455 ; SSE42-NEXT:    pextrb $0, %xmm2, %ecx
   7456 ; SSE42-NEXT:    andl $1, %ecx
   7457 ; SSE42-NEXT:    shll $4, %ecx
   7458 ; SSE42-NEXT:    orl %eax, %ecx
   7459 ; SSE42-NEXT:    pextrb $8, %xmm2, %eax
   7460 ; SSE42-NEXT:    andl $1, %eax
   7461 ; SSE42-NEXT:    shll $5, %eax
   7462 ; SSE42-NEXT:    orl %ecx, %eax
   7463 ; SSE42-NEXT:    pextrb $0, %xmm3, %ecx
   7464 ; SSE42-NEXT:    andl $1, %ecx
   7465 ; SSE42-NEXT:    shll $6, %ecx
   7466 ; SSE42-NEXT:    pextrb $8, %xmm3, %edx
   7467 ; SSE42-NEXT:    andl $1, %edx
   7468 ; SSE42-NEXT:    shll $7, %edx
   7469 ; SSE42-NEXT:    orl %ecx, %edx
   7470 ; SSE42-NEXT:    pextrb $0, %xmm4, %ecx
   7471 ; SSE42-NEXT:    andl $1, %ecx
   7472 ; SSE42-NEXT:    shll $8, %ecx
   7473 ; SSE42-NEXT:    orl %edx, %ecx
   7474 ; SSE42-NEXT:    pextrb $8, %xmm4, %edx
   7475 ; SSE42-NEXT:    andl $1, %edx
   7476 ; SSE42-NEXT:    shll $9, %edx
   7477 ; SSE42-NEXT:    orl %ecx, %edx
   7478 ; SSE42-NEXT:    pextrb $0, %xmm5, %ecx
   7479 ; SSE42-NEXT:    andl $1, %ecx
   7480 ; SSE42-NEXT:    shll $10, %ecx
   7481 ; SSE42-NEXT:    orl %edx, %ecx
   7482 ; SSE42-NEXT:    pextrb $8, %xmm5, %edx
   7483 ; SSE42-NEXT:    andl $1, %edx
   7484 ; SSE42-NEXT:    shll $11, %edx
   7485 ; SSE42-NEXT:    orl %ecx, %edx
   7486 ; SSE42-NEXT:    pextrb $0, %xmm6, %ecx
   7487 ; SSE42-NEXT:    andl $1, %ecx
   7488 ; SSE42-NEXT:    shll $12, %ecx
   7489 ; SSE42-NEXT:    orl %edx, %ecx
   7490 ; SSE42-NEXT:    pextrb $8, %xmm6, %edx
   7491 ; SSE42-NEXT:    andl $1, %edx
   7492 ; SSE42-NEXT:    shll $13, %edx
   7493 ; SSE42-NEXT:    orl %ecx, %edx
   7494 ; SSE42-NEXT:    pextrb $0, %xmm7, %ecx
   7495 ; SSE42-NEXT:    andl $1, %ecx
   7496 ; SSE42-NEXT:    shll $14, %ecx
   7497 ; SSE42-NEXT:    orl %edx, %ecx
   7498 ; SSE42-NEXT:    pextrb $8, %xmm7, %edx
   7499 ; SSE42-NEXT:    shll $15, %edx
   7500 ; SSE42-NEXT:    orl %ecx, %edx
   7501 ; SSE42-NEXT:    orl %eax, %edx
   7502 ; SSE42-NEXT:    movw %dx, (%rdi)
   7503 ; SSE42-NEXT:    movq %rdi, %rax
   7504 ; SSE42-NEXT:    retq
   7505 ;
   7506 ; AVX1-LABEL: test_cmp_v32i64:
   7507 ; AVX1:       # %bb.0:
   7508 ; AVX1-NEXT:    pushq %rbp
   7509 ; AVX1-NEXT:    movq %rsp, %rbp
   7510 ; AVX1-NEXT:    andq $-32, %rsp
   7511 ; AVX1-NEXT:    subq $32, %rsp
   7512 ; AVX1-NEXT:    vmovdqa 240(%rbp), %ymm8
   7513 ; AVX1-NEXT:    vextractf128 $1, %ymm8, %xmm9
   7514 ; AVX1-NEXT:    vextractf128 $1, %ymm7, %xmm10
   7515 ; AVX1-NEXT:    vpcmpgtq %xmm9, %xmm10, %xmm9
   7516 ; AVX1-NEXT:    vmovdqa 208(%rbp), %ymm10
   7517 ; AVX1-NEXT:    vpcmpgtq %xmm8, %xmm7, %xmm7
   7518 ; AVX1-NEXT:    vpackssdw %xmm9, %xmm7, %xmm8
   7519 ; AVX1-NEXT:    vextractf128 $1, %ymm10, %xmm9
   7520 ; AVX1-NEXT:    vextractf128 $1, %ymm6, %xmm7
   7521 ; AVX1-NEXT:    vpcmpgtq %xmm9, %xmm7, %xmm7
   7522 ; AVX1-NEXT:    vpcmpgtq %xmm10, %xmm6, %xmm6
   7523 ; AVX1-NEXT:    vmovdqa 176(%rbp), %ymm9
   7524 ; AVX1-NEXT:    vpackssdw %xmm7, %xmm6, %xmm6
   7525 ; AVX1-NEXT:    vpackssdw %xmm8, %xmm6, %xmm8
   7526 ; AVX1-NEXT:    vextractf128 $1, %ymm9, %xmm7
   7527 ; AVX1-NEXT:    vextractf128 $1, %ymm5, %xmm6
   7528 ; AVX1-NEXT:    vpcmpgtq %xmm7, %xmm6, %xmm6
   7529 ; AVX1-NEXT:    vmovdqa 144(%rbp), %ymm10
   7530 ; AVX1-NEXT:    vpcmpgtq %xmm9, %xmm5, %xmm5
   7531 ; AVX1-NEXT:    vpackssdw %xmm6, %xmm5, %xmm5
   7532 ; AVX1-NEXT:    vextractf128 $1, %ymm10, %xmm6
   7533 ; AVX1-NEXT:    vextractf128 $1, %ymm4, %xmm7
   7534 ; AVX1-NEXT:    vpcmpgtq %xmm6, %xmm7, %xmm6
   7535 ; AVX1-NEXT:    vpcmpgtq %xmm10, %xmm4, %xmm4
   7536 ; AVX1-NEXT:    vpackssdw %xmm6, %xmm4, %xmm4
   7537 ; AVX1-NEXT:    vmovdqa 112(%rbp), %ymm6
   7538 ; AVX1-NEXT:    vpackssdw %xmm5, %xmm4, %xmm4
   7539 ; AVX1-NEXT:    vpacksswb %xmm8, %xmm4, %xmm4
   7540 ; AVX1-NEXT:    vextractf128 $1, %ymm6, %xmm5
   7541 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm7
   7542 ; AVX1-NEXT:    vpcmpgtq %xmm5, %xmm7, %xmm5
   7543 ; AVX1-NEXT:    vmovdqa 80(%rbp), %ymm7
   7544 ; AVX1-NEXT:    vpcmpgtq %xmm6, %xmm3, %xmm3
   7545 ; AVX1-NEXT:    vpackssdw %xmm5, %xmm3, %xmm3
   7546 ; AVX1-NEXT:    vextractf128 $1, %ymm7, %xmm5
   7547 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm6
   7548 ; AVX1-NEXT:    vpcmpgtq %xmm5, %xmm6, %xmm5
   7549 ; AVX1-NEXT:    vpcmpgtq %xmm7, %xmm2, %xmm2
   7550 ; AVX1-NEXT:    vmovdqa 48(%rbp), %ymm6
   7551 ; AVX1-NEXT:    vpackssdw %xmm5, %xmm2, %xmm2
   7552 ; AVX1-NEXT:    vpackssdw %xmm3, %xmm2, %xmm2
   7553 ; AVX1-NEXT:    vextractf128 $1, %ymm6, %xmm3
   7554 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm5
   7555 ; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm5, %xmm3
   7556 ; AVX1-NEXT:    vmovdqa 16(%rbp), %ymm5
   7557 ; AVX1-NEXT:    vpcmpgtq %xmm6, %xmm1, %xmm1
   7558 ; AVX1-NEXT:    vpackssdw %xmm3, %xmm1, %xmm1
   7559 ; AVX1-NEXT:    vextractf128 $1, %ymm5, %xmm3
   7560 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm6
   7561 ; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm6, %xmm3
   7562 ; AVX1-NEXT:    vpcmpgtq %xmm5, %xmm0, %xmm0
   7563 ; AVX1-NEXT:    vpackssdw %xmm3, %xmm0, %xmm0
   7564 ; AVX1-NEXT:    vpackssdw %xmm1, %xmm0, %xmm0
   7565 ; AVX1-NEXT:    vpacksswb %xmm2, %xmm0, %xmm0
   7566 ; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm0
   7567 ; AVX1-NEXT:    movq %rbp, %rsp
   7568 ; AVX1-NEXT:    popq %rbp
   7569 ; AVX1-NEXT:    retq
   7570 ;
   7571 ; AVX2-LABEL: test_cmp_v32i64:
   7572 ; AVX2:       # %bb.0:
   7573 ; AVX2-NEXT:    pushq %rbp
   7574 ; AVX2-NEXT:    movq %rsp, %rbp
   7575 ; AVX2-NEXT:    andq $-32, %rsp
   7576 ; AVX2-NEXT:    subq $32, %rsp
   7577 ; AVX2-NEXT:    vpcmpgtq 240(%rbp), %ymm7, %ymm7
   7578 ; AVX2-NEXT:    vpcmpgtq 208(%rbp), %ymm6, %ymm6
   7579 ; AVX2-NEXT:    vpackssdw %ymm7, %ymm6, %ymm6
   7580 ; AVX2-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,2,1,3]
   7581 ; AVX2-NEXT:    vpcmpgtq 176(%rbp), %ymm5, %ymm5
   7582 ; AVX2-NEXT:    vpcmpgtq 144(%rbp), %ymm4, %ymm4
   7583 ; AVX2-NEXT:    vpackssdw %ymm5, %ymm4, %ymm4
   7584 ; AVX2-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,2,1,3]
   7585 ; AVX2-NEXT:    vpackssdw %ymm6, %ymm4, %ymm4
   7586 ; AVX2-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,2,1,3]
   7587 ; AVX2-NEXT:    vpcmpgtq 112(%rbp), %ymm3, %ymm3
   7588 ; AVX2-NEXT:    vpcmpgtq 80(%rbp), %ymm2, %ymm2
   7589 ; AVX2-NEXT:    vpackssdw %ymm3, %ymm2, %ymm2
   7590 ; AVX2-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,2,1,3]
   7591 ; AVX2-NEXT:    vpcmpgtq 48(%rbp), %ymm1, %ymm1
   7592 ; AVX2-NEXT:    vpcmpgtq 16(%rbp), %ymm0, %ymm0
   7593 ; AVX2-NEXT:    vpackssdw %ymm1, %ymm0, %ymm0
   7594 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]
   7595 ; AVX2-NEXT:    vpackssdw %ymm2, %ymm0, %ymm0
   7596 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]
   7597 ; AVX2-NEXT:    vpacksswb %ymm4, %ymm0, %ymm0
   7598 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]
   7599 ; AVX2-NEXT:    movq %rbp, %rsp
   7600 ; AVX2-NEXT:    popq %rbp
   7601 ; AVX2-NEXT:    retq
   7602 ;
   7603 ; AVX512F-LABEL: test_cmp_v32i64:
   7604 ; AVX512F:       # %bb.0:
   7605 ; AVX512F-NEXT:    vpcmpgtq %zmm6, %zmm2, %k0
   7606 ; AVX512F-NEXT:    vpcmpgtq %zmm7, %zmm3, %k1
   7607 ; AVX512F-NEXT:    kunpckbw %k0, %k1, %k1
   7608 ; AVX512F-NEXT:    vpcmpgtq %zmm4, %zmm0, %k0
   7609 ; AVX512F-NEXT:    vpcmpgtq %zmm5, %zmm1, %k2
   7610 ; AVX512F-NEXT:    kunpckbw %k0, %k2, %k2
   7611 ; AVX512F-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k2} {z}
   7612 ; AVX512F-NEXT:    vpmovdb %zmm0, %xmm0
   7613 ; AVX512F-NEXT:    vpternlogd $255, %zmm1, %zmm1, %zmm1 {%k1} {z}
   7614 ; AVX512F-NEXT:    vpmovdb %zmm1, %xmm1
   7615 ; AVX512F-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   7616 ; AVX512F-NEXT:    retq
   7617 ;
   7618 ; AVX512DQ-LABEL: test_cmp_v32i64:
   7619 ; AVX512DQ:       # %bb.0:
   7620 ; AVX512DQ-NEXT:    vpcmpgtq %zmm6, %zmm2, %k0
   7621 ; AVX512DQ-NEXT:    vpcmpgtq %zmm7, %zmm3, %k1
   7622 ; AVX512DQ-NEXT:    kunpckbw %k0, %k1, %k0
   7623 ; AVX512DQ-NEXT:    vpcmpgtq %zmm4, %zmm0, %k1
   7624 ; AVX512DQ-NEXT:    vpcmpgtq %zmm5, %zmm1, %k2
   7625 ; AVX512DQ-NEXT:    kunpckbw %k1, %k2, %k1
   7626 ; AVX512DQ-NEXT:    vpmovm2d %k1, %zmm0
   7627 ; AVX512DQ-NEXT:    vpmovdb %zmm0, %xmm0
   7628 ; AVX512DQ-NEXT:    vpmovm2d %k0, %zmm1
   7629 ; AVX512DQ-NEXT:    vpmovdb %zmm1, %xmm1
   7630 ; AVX512DQ-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   7631 ; AVX512DQ-NEXT:    retq
   7632 ;
   7633 ; AVX512BW-LABEL: test_cmp_v32i64:
   7634 ; AVX512BW:       # %bb.0:
   7635 ; AVX512BW-NEXT:    vpcmpgtq %zmm4, %zmm0, %k0
   7636 ; AVX512BW-NEXT:    vpcmpgtq %zmm5, %zmm1, %k1
   7637 ; AVX512BW-NEXT:    kunpckbw %k0, %k1, %k0
   7638 ; AVX512BW-NEXT:    vpcmpgtq %zmm6, %zmm2, %k1
   7639 ; AVX512BW-NEXT:    vpcmpgtq %zmm7, %zmm3, %k2
   7640 ; AVX512BW-NEXT:    kunpckbw %k1, %k2, %k1
   7641 ; AVX512BW-NEXT:    kunpckwd %k0, %k1, %k0
   7642 ; AVX512BW-NEXT:    vpmovm2b %k0, %zmm0
   7643 ; AVX512BW-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
   7644 ; AVX512BW-NEXT:    retq
   7645   %1 = icmp sgt <32 x i64> %a0, %a1
   7646   ret <32 x i1> %1
   7647 }
   7648