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 
      8 ;
      9 ; 128-bit vector comparisons
     10 ;
     11 
     12 define <2 x i1> @test_cmp_v2f64(<2 x double> %a0, <2 x double> %a1) nounwind {
     13 ; SSE-LABEL: test_cmp_v2f64:
     14 ; SSE:       # BB#0:
     15 ; SSE-NEXT:    cmpltpd %xmm0, %xmm1
     16 ; SSE-NEXT:    movapd %xmm1, %xmm0
     17 ; SSE-NEXT:    retq
     18 ;
     19 ; AVX-LABEL: test_cmp_v2f64:
     20 ; AVX:       # BB#0:
     21 ; AVX-NEXT:    vcmpltpd %xmm0, %xmm1, %xmm0
     22 ; AVX-NEXT:    retq
     23   %1 = fcmp ogt <2 x double> %a0, %a1
     24   ret <2 x i1> %1
     25 }
     26 
     27 define <4 x i1> @test_cmp_v4f32(<4 x float> %a0, <4 x float> %a1) nounwind {
     28 ; SSE-LABEL: test_cmp_v4f32:
     29 ; SSE:       # BB#0:
     30 ; SSE-NEXT:    cmpltps %xmm0, %xmm1
     31 ; SSE-NEXT:    movaps %xmm1, %xmm0
     32 ; SSE-NEXT:    retq
     33 ;
     34 ; AVX-LABEL: test_cmp_v4f32:
     35 ; AVX:       # BB#0:
     36 ; AVX-NEXT:    vcmpltps %xmm0, %xmm1, %xmm0
     37 ; AVX-NEXT:    retq
     38   %1 = fcmp ogt <4 x float> %a0, %a1
     39   ret <4 x i1> %1
     40 }
     41 
     42 define <2 x i1> @test_cmp_v2i64(<2 x i64> %a0, <2 x i64> %a1) nounwind {
     43 ; SSE2-LABEL: test_cmp_v2i64:
     44 ; SSE2:       # BB#0:
     45 ; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [2147483648,0,2147483648,0]
     46 ; SSE2-NEXT:    pxor %xmm2, %xmm1
     47 ; SSE2-NEXT:    pxor %xmm2, %xmm0
     48 ; SSE2-NEXT:    movdqa %xmm0, %xmm2
     49 ; SSE2-NEXT:    pcmpgtd %xmm1, %xmm2
     50 ; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm2[0,0,2,2]
     51 ; SSE2-NEXT:    pcmpeqd %xmm1, %xmm0
     52 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[1,1,3,3]
     53 ; SSE2-NEXT:    pand %xmm3, %xmm1
     54 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[1,1,3,3]
     55 ; SSE2-NEXT:    por %xmm1, %xmm0
     56 ; SSE2-NEXT:    retq
     57 ;
     58 ; SSE42-LABEL: test_cmp_v2i64:
     59 ; SSE42:       # BB#0:
     60 ; SSE42-NEXT:    pcmpgtq %xmm1, %xmm0
     61 ; SSE42-NEXT:    retq
     62 ;
     63 ; AVX-LABEL: test_cmp_v2i64:
     64 ; AVX:       # BB#0:
     65 ; AVX-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm0
     66 ; AVX-NEXT:    retq
     67   %1 = icmp sgt <2 x i64> %a0, %a1
     68   ret <2 x i1> %1
     69 }
     70 
     71 define <4 x i1> @test_cmp_v4i32(<4 x i32> %a0, <4 x i32> %a1) nounwind {
     72 ; SSE-LABEL: test_cmp_v4i32:
     73 ; SSE:       # BB#0:
     74 ; SSE-NEXT:    pcmpgtd %xmm1, %xmm0
     75 ; SSE-NEXT:    retq
     76 ;
     77 ; AVX-LABEL: test_cmp_v4i32:
     78 ; AVX:       # BB#0:
     79 ; AVX-NEXT:    vpcmpgtd %xmm1, %xmm0, %xmm0
     80 ; AVX-NEXT:    retq
     81   %1 = icmp sgt <4 x i32> %a0, %a1
     82   ret <4 x i1> %1
     83 }
     84 
     85 define <8 x i1> @test_cmp_v8i16(<8 x i16> %a0, <8 x i16> %a1) nounwind {
     86 ; SSE-LABEL: test_cmp_v8i16:
     87 ; SSE:       # BB#0:
     88 ; SSE-NEXT:    pcmpgtw %xmm1, %xmm0
     89 ; SSE-NEXT:    retq
     90 ;
     91 ; AVX-LABEL: test_cmp_v8i16:
     92 ; AVX:       # BB#0:
     93 ; AVX-NEXT:    vpcmpgtw %xmm1, %xmm0, %xmm0
     94 ; AVX-NEXT:    retq
     95   %1 = icmp sgt <8 x i16> %a0, %a1
     96   ret <8 x i1> %1
     97 }
     98 
     99 define <16 x i1> @test_cmp_v16i8(<16 x i8> %a0, <16 x i8> %a1) nounwind {
    100 ; SSE-LABEL: test_cmp_v16i8:
    101 ; SSE:       # BB#0:
    102 ; SSE-NEXT:    pcmpgtb %xmm1, %xmm0
    103 ; SSE-NEXT:    retq
    104 ;
    105 ; AVX-LABEL: test_cmp_v16i8:
    106 ; AVX:       # BB#0:
    107 ; AVX-NEXT:    vpcmpgtb %xmm1, %xmm0, %xmm0
    108 ; AVX-NEXT:    retq
    109   %1 = icmp sgt <16 x i8> %a0, %a1
    110   ret <16 x i1> %1
    111 }
    112 
    113 ;
    114 ; 256-bit vector comparisons
    115 ;
    116 
    117 define <4 x i1> @test_cmp_v4f64(<4 x double> %a0, <4 x double> %a1) nounwind {
    118 ; SSE2-LABEL: test_cmp_v4f64:
    119 ; SSE2:       # BB#0:
    120 ; SSE2-NEXT:    cmpltpd %xmm1, %xmm3
    121 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm3[0,2,2,3]
    122 ; SSE2-NEXT:    cmpltpd %xmm0, %xmm2
    123 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[0,2,2,3]
    124 ; SSE2-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
    125 ; SSE2-NEXT:    retq
    126 ;
    127 ; SSE42-LABEL: test_cmp_v4f64:
    128 ; SSE42:       # BB#0:
    129 ; SSE42-NEXT:    cmpltpd %xmm1, %xmm3
    130 ; SSE42-NEXT:    pshufd {{.*#+}} xmm1 = xmm3[0,1,0,2]
    131 ; SSE42-NEXT:    cmpltpd %xmm0, %xmm2
    132 ; SSE42-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[0,2,2,3]
    133 ; SSE42-NEXT:    pblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5,6,7]
    134 ; SSE42-NEXT:    retq
    135 ;
    136 ; AVX1-LABEL: test_cmp_v4f64:
    137 ; AVX1:       # BB#0:
    138 ; AVX1-NEXT:    vcmpltpd %ymm0, %ymm1, %ymm0
    139 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
    140 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,1,0,2]
    141 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
    142 ; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5,6,7]
    143 ; AVX1-NEXT:    vzeroupper
    144 ; AVX1-NEXT:    retq
    145 ;
    146 ; AVX2-LABEL: test_cmp_v4f64:
    147 ; AVX2:       # BB#0:
    148 ; AVX2-NEXT:    vcmpltpd %ymm0, %ymm1, %ymm0
    149 ; AVX2-NEXT:    vpermilps {{.*#+}} ymm0 = ymm0[0,2,0,2,4,6,4,6]
    150 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,2,3]
    151 ; AVX2-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
    152 ; AVX2-NEXT:    vzeroupper
    153 ; AVX2-NEXT:    retq
    154 ;
    155 ; AVX512-LABEL: test_cmp_v4f64:
    156 ; AVX512:       # BB#0:
    157 ; AVX512-NEXT:    vcmpltpd %ymm0, %ymm1, %ymm0
    158 ; AVX512-NEXT:    vpmovqd %zmm0, %ymm0
    159 ; AVX512-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
    160 ; AVX512-NEXT:    retq
    161   %1 = fcmp ogt <4 x double> %a0, %a1
    162   ret <4 x i1> %1
    163 }
    164 
    165 define <8 x i1> @test_cmp_v8f32(<8 x float> %a0, <8 x float> %a1) nounwind {
    166 ; SSE2-LABEL: test_cmp_v8f32:
    167 ; SSE2:       # BB#0:
    168 ; SSE2-NEXT:    cmpltps %xmm1, %xmm3
    169 ; SSE2-NEXT:    pslld $16, %xmm3
    170 ; SSE2-NEXT:    psrad $16, %xmm3
    171 ; SSE2-NEXT:    cmpltps %xmm0, %xmm2
    172 ; SSE2-NEXT:    pslld $16, %xmm2
    173 ; SSE2-NEXT:    psrad $16, %xmm2
    174 ; SSE2-NEXT:    packssdw %xmm3, %xmm2
    175 ; SSE2-NEXT:    movdqa %xmm2, %xmm0
    176 ; SSE2-NEXT:    retq
    177 ;
    178 ; SSE42-LABEL: test_cmp_v8f32:
    179 ; SSE42:       # BB#0:
    180 ; SSE42-NEXT:    cmpltps %xmm1, %xmm3
    181 ; SSE42-NEXT:    movdqa {{.*#+}} xmm1 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]
    182 ; SSE42-NEXT:    pshufb %xmm1, %xmm3
    183 ; SSE42-NEXT:    cmpltps %xmm0, %xmm2
    184 ; SSE42-NEXT:    pshufb %xmm1, %xmm2
    185 ; SSE42-NEXT:    punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0]
    186 ; SSE42-NEXT:    movdqa %xmm2, %xmm0
    187 ; SSE42-NEXT:    retq
    188 ;
    189 ; AVX1-LABEL: test_cmp_v8f32:
    190 ; AVX1:       # BB#0:
    191 ; AVX1-NEXT:    vcmpltps %ymm0, %ymm1, %ymm0
    192 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
    193 ; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]
    194 ; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm1
    195 ; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
    196 ; AVX1-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
    197 ; AVX1-NEXT:    vzeroupper
    198 ; AVX1-NEXT:    retq
    199 ;
    200 ; AVX2-LABEL: test_cmp_v8f32:
    201 ; AVX2:       # BB#0:
    202 ; AVX2-NEXT:    vcmpltps %ymm0, %ymm1, %ymm0
    203 ; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,4,5,8,9,12,13],zero,zero,zero,zero,zero,zero,zero,zero,ymm0[16,17,20,21,24,25,28,29],zero,zero,zero,zero,zero,zero,zero,zero
    204 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,2,3]
    205 ; AVX2-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
    206 ; AVX2-NEXT:    vzeroupper
    207 ; AVX2-NEXT:    retq
    208 ;
    209 ; AVX512-LABEL: test_cmp_v8f32:
    210 ; AVX512:       # BB#0:
    211 ; AVX512-NEXT:    vcmpltps %ymm0, %ymm1, %ymm0
    212 ; AVX512-NEXT:    vpmovdw %zmm0, %ymm0
    213 ; AVX512-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
    214 ; AVX512-NEXT:    retq
    215   %1 = fcmp ogt <8 x float> %a0, %a1
    216   ret <8 x i1> %1
    217 }
    218 
    219 define <4 x i1> @test_cmp_v4i64(<4 x i64> %a0, <4 x i64> %a1) nounwind {
    220 ; SSE2-LABEL: test_cmp_v4i64:
    221 ; SSE2:       # BB#0:
    222 ; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,0,2147483648,0]
    223 ; SSE2-NEXT:    pxor %xmm4, %xmm3
    224 ; SSE2-NEXT:    pxor %xmm4, %xmm1
    225 ; SSE2-NEXT:    movdqa %xmm1, %xmm5
    226 ; SSE2-NEXT:    pcmpgtd %xmm3, %xmm5
    227 ; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]
    228 ; SSE2-NEXT:    pcmpeqd %xmm3, %xmm1
    229 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
    230 ; SSE2-NEXT:    pand %xmm6, %xmm1
    231 ; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm5[1,1,3,3]
    232 ; SSE2-NEXT:    por %xmm1, %xmm3
    233 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm3[0,2,2,3]
    234 ; SSE2-NEXT:    pxor %xmm4, %xmm2
    235 ; SSE2-NEXT:    pxor %xmm4, %xmm0
    236 ; SSE2-NEXT:    movdqa %xmm0, %xmm3
    237 ; SSE2-NEXT:    pcmpgtd %xmm2, %xmm3
    238 ; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm3[0,0,2,2]
    239 ; SSE2-NEXT:    pcmpeqd %xmm2, %xmm0
    240 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
    241 ; SSE2-NEXT:    pand %xmm4, %xmm0
    242 ; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm3[1,1,3,3]
    243 ; SSE2-NEXT:    por %xmm0, %xmm2
    244 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[0,2,2,3]
    245 ; SSE2-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
    246 ; SSE2-NEXT:    retq
    247 ;
    248 ; SSE42-LABEL: test_cmp_v4i64:
    249 ; SSE42:       # BB#0:
    250 ; SSE42-NEXT:    pcmpgtq %xmm3, %xmm1
    251 ; SSE42-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,0,2]
    252 ; SSE42-NEXT:    pcmpgtq %xmm2, %xmm0
    253 ; SSE42-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
    254 ; SSE42-NEXT:    pblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5,6,7]
    255 ; SSE42-NEXT:    retq
    256 ;
    257 ; AVX1-LABEL: test_cmp_v4i64:
    258 ; AVX1:       # BB#0:
    259 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
    260 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
    261 ; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm3, %xmm2
    262 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm2 = xmm2[0,1,0,2]
    263 ; AVX1-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm0
    264 ; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
    265 ; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm2[4,5,6,7]
    266 ; AVX1-NEXT:    vzeroupper
    267 ; AVX1-NEXT:    retq
    268 ;
    269 ; AVX2-LABEL: test_cmp_v4i64:
    270 ; AVX2:       # BB#0:
    271 ; AVX2-NEXT:    vpcmpgtq %ymm1, %ymm0, %ymm0
    272 ; AVX2-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[0,2,0,2,4,6,4,6]
    273 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,2,3]
    274 ; AVX2-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
    275 ; AVX2-NEXT:    vzeroupper
    276 ; AVX2-NEXT:    retq
    277 ;
    278 ; AVX512-LABEL: test_cmp_v4i64:
    279 ; AVX512:       # BB#0:
    280 ; AVX512-NEXT:    vpcmpgtq %ymm1, %ymm0, %ymm0
    281 ; AVX512-NEXT:    vpmovqd %zmm0, %ymm0
    282 ; AVX512-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
    283 ; AVX512-NEXT:    retq
    284   %1 = icmp sgt <4 x i64> %a0, %a1
    285   ret <4 x i1> %1
    286 }
    287 
    288 define <8 x i1> @test_cmp_v8i32(<8 x i32> %a0, <8 x i32> %a1) nounwind {
    289 ; SSE2-LABEL: test_cmp_v8i32:
    290 ; SSE2:       # BB#0:
    291 ; SSE2-NEXT:    pcmpgtd %xmm3, %xmm1
    292 ; SSE2-NEXT:    pslld $16, %xmm1
    293 ; SSE2-NEXT:    psrad $16, %xmm1
    294 ; SSE2-NEXT:    pcmpgtd %xmm2, %xmm0
    295 ; SSE2-NEXT:    pslld $16, %xmm0
    296 ; SSE2-NEXT:    psrad $16, %xmm0
    297 ; SSE2-NEXT:    packssdw %xmm1, %xmm0
    298 ; SSE2-NEXT:    retq
    299 ;
    300 ; SSE42-LABEL: test_cmp_v8i32:
    301 ; SSE42:       # BB#0:
    302 ; SSE42-NEXT:    pcmpgtd %xmm3, %xmm1
    303 ; SSE42-NEXT:    movdqa {{.*#+}} xmm3 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]
    304 ; SSE42-NEXT:    pshufb %xmm3, %xmm1
    305 ; SSE42-NEXT:    pcmpgtd %xmm2, %xmm0
    306 ; SSE42-NEXT:    pshufb %xmm3, %xmm0
    307 ; SSE42-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
    308 ; SSE42-NEXT:    retq
    309 ;
    310 ; AVX1-LABEL: test_cmp_v8i32:
    311 ; AVX1:       # BB#0:
    312 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
    313 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
    314 ; AVX1-NEXT:    vpcmpgtd %xmm2, %xmm3, %xmm2
    315 ; AVX1-NEXT:    vmovdqa {{.*#+}} xmm3 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]
    316 ; AVX1-NEXT:    vpshufb %xmm3, %xmm2, %xmm2
    317 ; AVX1-NEXT:    vpcmpgtd %xmm1, %xmm0, %xmm0
    318 ; AVX1-NEXT:    vpshufb %xmm3, %xmm0, %xmm0
    319 ; AVX1-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
    320 ; AVX1-NEXT:    vzeroupper
    321 ; AVX1-NEXT:    retq
    322 ;
    323 ; AVX2-LABEL: test_cmp_v8i32:
    324 ; AVX2:       # BB#0:
    325 ; AVX2-NEXT:    vpcmpgtd %ymm1, %ymm0, %ymm0
    326 ; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,4,5,8,9,12,13],zero,zero,zero,zero,zero,zero,zero,zero,ymm0[16,17,20,21,24,25,28,29],zero,zero,zero,zero,zero,zero,zero,zero
    327 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,2,3]
    328 ; AVX2-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
    329 ; AVX2-NEXT:    vzeroupper
    330 ; AVX2-NEXT:    retq
    331 ;
    332 ; AVX512-LABEL: test_cmp_v8i32:
    333 ; AVX512:       # BB#0:
    334 ; AVX512-NEXT:    vpcmpgtd %ymm1, %ymm0, %ymm0
    335 ; AVX512-NEXT:    vpmovdw %zmm0, %ymm0
    336 ; AVX512-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
    337 ; AVX512-NEXT:    retq
    338   %1 = icmp sgt <8 x i32> %a0, %a1
    339   ret <8 x i1> %1
    340 }
    341 
    342 define <16 x i1> @test_cmp_v16i16(<16 x i16> %a0, <16 x i16> %a1) nounwind {
    343 ; SSE2-LABEL: test_cmp_v16i16:
    344 ; SSE2:       # BB#0:
    345 ; SSE2-NEXT:    pcmpgtw %xmm3, %xmm1
    346 ; SSE2-NEXT:    movdqa {{.*#+}} xmm3 = [255,255,255,255,255,255,255,255]
    347 ; SSE2-NEXT:    pand %xmm3, %xmm1
    348 ; SSE2-NEXT:    pcmpgtw %xmm2, %xmm0
    349 ; SSE2-NEXT:    pand %xmm3, %xmm0
    350 ; SSE2-NEXT:    packuswb %xmm1, %xmm0
    351 ; SSE2-NEXT:    retq
    352 ;
    353 ; SSE42-LABEL: test_cmp_v16i16:
    354 ; SSE42:       # BB#0:
    355 ; SSE42-NEXT:    pcmpgtw %xmm3, %xmm1
    356 ; SSE42-NEXT:    movdqa {{.*#+}} xmm3 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
    357 ; SSE42-NEXT:    pshufb %xmm3, %xmm1
    358 ; SSE42-NEXT:    pcmpgtw %xmm2, %xmm0
    359 ; SSE42-NEXT:    pshufb %xmm3, %xmm0
    360 ; SSE42-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
    361 ; SSE42-NEXT:    retq
    362 ;
    363 ; AVX1-LABEL: test_cmp_v16i16:
    364 ; AVX1:       # BB#0:
    365 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
    366 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
    367 ; AVX1-NEXT:    vpcmpgtw %xmm2, %xmm3, %xmm2
    368 ; AVX1-NEXT:    vmovdqa {{.*#+}} xmm3 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
    369 ; AVX1-NEXT:    vpshufb %xmm3, %xmm2, %xmm2
    370 ; AVX1-NEXT:    vpcmpgtw %xmm1, %xmm0, %xmm0
    371 ; AVX1-NEXT:    vpshufb %xmm3, %xmm0, %xmm0
    372 ; AVX1-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
    373 ; AVX1-NEXT:    vzeroupper
    374 ; AVX1-NEXT:    retq
    375 ;
    376 ; AVX2-LABEL: test_cmp_v16i16:
    377 ; AVX2:       # BB#0:
    378 ; AVX2-NEXT:    vpcmpgtw %ymm1, %ymm0, %ymm0
    379 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
    380 ; AVX2-NEXT:    vmovdqa {{.*#+}} xmm2 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
    381 ; AVX2-NEXT:    vpshufb %xmm2, %xmm1, %xmm1
    382 ; AVX2-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
    383 ; AVX2-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
    384 ; AVX2-NEXT:    vzeroupper
    385 ; AVX2-NEXT:    retq
    386 ;
    387 ; AVX512-LABEL: test_cmp_v16i16:
    388 ; AVX512:       # BB#0:
    389 ; AVX512-NEXT:    vpcmpgtw %ymm1, %ymm0, %ymm0
    390 ; AVX512-NEXT:    vpmovsxwd %ymm0, %zmm0
    391 ; AVX512-NEXT:    vpmovdb %zmm0, %xmm0
    392 ; AVX512-NEXT:    retq
    393   %1 = icmp sgt <16 x i16> %a0, %a1
    394   ret <16 x i1> %1
    395 }
    396 
    397 define <32 x i1> @test_cmp_v32i8(<32 x i8> %a0, <32 x i8> %a1) nounwind {
    398 ; SSE2-LABEL: test_cmp_v32i8:
    399 ; SSE2:       # BB#0:
    400 ; SSE2-NEXT:    pcmpgtb %xmm2, %xmm0
    401 ; SSE2-NEXT:    pcmpgtb %xmm3, %xmm1
    402 ; SSE2-NEXT:    movdqa %xmm1, -{{[0-9]+}}(%rsp)
    403 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    404 ; SSE2-NEXT:    andb $1, %al
    405 ; SSE2-NEXT:    movb %al, 2(%rdi)
    406 ; SSE2-NEXT:    movdqa %xmm0, -{{[0-9]+}}(%rsp)
    407 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    408 ; SSE2-NEXT:    andb $1, %al
    409 ; SSE2-NEXT:    movb %al, (%rdi)
    410 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    411 ; SSE2-NEXT:    andb $1, %al
    412 ; SSE2-NEXT:    movb %al, 2(%rdi)
    413 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    414 ; SSE2-NEXT:    andb $1, %al
    415 ; SSE2-NEXT:    movb %al, (%rdi)
    416 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    417 ; SSE2-NEXT:    andb $1, %al
    418 ; SSE2-NEXT:    movb %al, 2(%rdi)
    419 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    420 ; SSE2-NEXT:    andb $1, %al
    421 ; SSE2-NEXT:    movb %al, (%rdi)
    422 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    423 ; SSE2-NEXT:    andb $1, %al
    424 ; SSE2-NEXT:    movb %al, 2(%rdi)
    425 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    426 ; SSE2-NEXT:    andb $1, %al
    427 ; SSE2-NEXT:    movb %al, (%rdi)
    428 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    429 ; SSE2-NEXT:    andb $1, %al
    430 ; SSE2-NEXT:    movb %al, 2(%rdi)
    431 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    432 ; SSE2-NEXT:    andb $1, %al
    433 ; SSE2-NEXT:    movb %al, (%rdi)
    434 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    435 ; SSE2-NEXT:    andb $1, %al
    436 ; SSE2-NEXT:    movb %al, 2(%rdi)
    437 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    438 ; SSE2-NEXT:    andb $1, %al
    439 ; SSE2-NEXT:    movb %al, (%rdi)
    440 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    441 ; SSE2-NEXT:    andb $1, %al
    442 ; SSE2-NEXT:    movb %al, 2(%rdi)
    443 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    444 ; SSE2-NEXT:    andb $1, %al
    445 ; SSE2-NEXT:    movb %al, (%rdi)
    446 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    447 ; SSE2-NEXT:    andb $1, %al
    448 ; SSE2-NEXT:    movb %al, 2(%rdi)
    449 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    450 ; SSE2-NEXT:    andb $1, %al
    451 ; SSE2-NEXT:    movb %al, (%rdi)
    452 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    453 ; SSE2-NEXT:    andb $1, %al
    454 ; SSE2-NEXT:    movb %al, 2(%rdi)
    455 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    456 ; SSE2-NEXT:    andb $1, %al
    457 ; SSE2-NEXT:    movb %al, (%rdi)
    458 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    459 ; SSE2-NEXT:    andb $1, %al
    460 ; SSE2-NEXT:    movb %al, 2(%rdi)
    461 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    462 ; SSE2-NEXT:    andb $1, %al
    463 ; SSE2-NEXT:    movb %al, (%rdi)
    464 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    465 ; SSE2-NEXT:    andb $1, %al
    466 ; SSE2-NEXT:    movb %al, 2(%rdi)
    467 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    468 ; SSE2-NEXT:    andb $1, %al
    469 ; SSE2-NEXT:    movb %al, (%rdi)
    470 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    471 ; SSE2-NEXT:    andb $1, %al
    472 ; SSE2-NEXT:    movb %al, 2(%rdi)
    473 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    474 ; SSE2-NEXT:    andb $1, %al
    475 ; SSE2-NEXT:    movb %al, (%rdi)
    476 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    477 ; SSE2-NEXT:    andb $1, %al
    478 ; SSE2-NEXT:    movb %al, 2(%rdi)
    479 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    480 ; SSE2-NEXT:    andb $1, %al
    481 ; SSE2-NEXT:    movb %al, (%rdi)
    482 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    483 ; SSE2-NEXT:    andb $1, %al
    484 ; SSE2-NEXT:    movb %al, 2(%rdi)
    485 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    486 ; SSE2-NEXT:    andb $1, %al
    487 ; SSE2-NEXT:    movb %al, (%rdi)
    488 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    489 ; SSE2-NEXT:    andb $1, %al
    490 ; SSE2-NEXT:    movb %al, 2(%rdi)
    491 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    492 ; SSE2-NEXT:    andb $1, %al
    493 ; SSE2-NEXT:    movb %al, (%rdi)
    494 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    495 ; SSE2-NEXT:    andb $1, %al
    496 ; SSE2-NEXT:    movb %al, 2(%rdi)
    497 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    498 ; SSE2-NEXT:    andb $1, %al
    499 ; SSE2-NEXT:    movb %al, (%rdi)
    500 ; SSE2-NEXT:    movq %rdi, %rax
    501 ; SSE2-NEXT:    retq
    502 ;
    503 ; SSE42-LABEL: test_cmp_v32i8:
    504 ; SSE42:       # BB#0:
    505 ; SSE42-NEXT:    pcmpgtb %xmm2, %xmm0
    506 ; SSE42-NEXT:    pcmpgtb %xmm3, %xmm1
    507 ; SSE42-NEXT:    pextrb $15, %xmm1, %eax
    508 ; SSE42-NEXT:    andb $1, %al
    509 ; SSE42-NEXT:    movb %al, 2(%rdi)
    510 ; SSE42-NEXT:    pextrb $14, %xmm1, %eax
    511 ; SSE42-NEXT:    andb $1, %al
    512 ; SSE42-NEXT:    movb %al, 2(%rdi)
    513 ; SSE42-NEXT:    pextrb $13, %xmm1, %eax
    514 ; SSE42-NEXT:    andb $1, %al
    515 ; SSE42-NEXT:    movb %al, 2(%rdi)
    516 ; SSE42-NEXT:    pextrb $12, %xmm1, %eax
    517 ; SSE42-NEXT:    andb $1, %al
    518 ; SSE42-NEXT:    movb %al, 2(%rdi)
    519 ; SSE42-NEXT:    pextrb $11, %xmm1, %eax
    520 ; SSE42-NEXT:    andb $1, %al
    521 ; SSE42-NEXT:    movb %al, 2(%rdi)
    522 ; SSE42-NEXT:    pextrb $10, %xmm1, %eax
    523 ; SSE42-NEXT:    andb $1, %al
    524 ; SSE42-NEXT:    movb %al, 2(%rdi)
    525 ; SSE42-NEXT:    pextrb $9, %xmm1, %eax
    526 ; SSE42-NEXT:    andb $1, %al
    527 ; SSE42-NEXT:    movb %al, 2(%rdi)
    528 ; SSE42-NEXT:    pextrb $8, %xmm1, %eax
    529 ; SSE42-NEXT:    andb $1, %al
    530 ; SSE42-NEXT:    movb %al, 2(%rdi)
    531 ; SSE42-NEXT:    pextrb $7, %xmm1, %eax
    532 ; SSE42-NEXT:    andb $1, %al
    533 ; SSE42-NEXT:    movb %al, 2(%rdi)
    534 ; SSE42-NEXT:    pextrb $6, %xmm1, %eax
    535 ; SSE42-NEXT:    andb $1, %al
    536 ; SSE42-NEXT:    movb %al, 2(%rdi)
    537 ; SSE42-NEXT:    pextrb $5, %xmm1, %eax
    538 ; SSE42-NEXT:    andb $1, %al
    539 ; SSE42-NEXT:    movb %al, 2(%rdi)
    540 ; SSE42-NEXT:    pextrb $4, %xmm1, %eax
    541 ; SSE42-NEXT:    andb $1, %al
    542 ; SSE42-NEXT:    movb %al, 2(%rdi)
    543 ; SSE42-NEXT:    pextrb $3, %xmm1, %eax
    544 ; SSE42-NEXT:    andb $1, %al
    545 ; SSE42-NEXT:    movb %al, 2(%rdi)
    546 ; SSE42-NEXT:    pextrb $2, %xmm1, %eax
    547 ; SSE42-NEXT:    andb $1, %al
    548 ; SSE42-NEXT:    movb %al, 2(%rdi)
    549 ; SSE42-NEXT:    pextrb $1, %xmm1, %eax
    550 ; SSE42-NEXT:    andb $1, %al
    551 ; SSE42-NEXT:    movb %al, 2(%rdi)
    552 ; SSE42-NEXT:    pextrb $0, %xmm1, %eax
    553 ; SSE42-NEXT:    andb $1, %al
    554 ; SSE42-NEXT:    movb %al, 2(%rdi)
    555 ; SSE42-NEXT:    pextrb $15, %xmm0, %eax
    556 ; SSE42-NEXT:    andb $1, %al
    557 ; SSE42-NEXT:    movb %al, (%rdi)
    558 ; SSE42-NEXT:    pextrb $14, %xmm0, %eax
    559 ; SSE42-NEXT:    andb $1, %al
    560 ; SSE42-NEXT:    movb %al, (%rdi)
    561 ; SSE42-NEXT:    pextrb $13, %xmm0, %eax
    562 ; SSE42-NEXT:    andb $1, %al
    563 ; SSE42-NEXT:    movb %al, (%rdi)
    564 ; SSE42-NEXT:    pextrb $12, %xmm0, %eax
    565 ; SSE42-NEXT:    andb $1, %al
    566 ; SSE42-NEXT:    movb %al, (%rdi)
    567 ; SSE42-NEXT:    pextrb $11, %xmm0, %eax
    568 ; SSE42-NEXT:    andb $1, %al
    569 ; SSE42-NEXT:    movb %al, (%rdi)
    570 ; SSE42-NEXT:    pextrb $10, %xmm0, %eax
    571 ; SSE42-NEXT:    andb $1, %al
    572 ; SSE42-NEXT:    movb %al, (%rdi)
    573 ; SSE42-NEXT:    pextrb $9, %xmm0, %eax
    574 ; SSE42-NEXT:    andb $1, %al
    575 ; SSE42-NEXT:    movb %al, (%rdi)
    576 ; SSE42-NEXT:    pextrb $8, %xmm0, %eax
    577 ; SSE42-NEXT:    andb $1, %al
    578 ; SSE42-NEXT:    movb %al, (%rdi)
    579 ; SSE42-NEXT:    pextrb $7, %xmm0, %eax
    580 ; SSE42-NEXT:    andb $1, %al
    581 ; SSE42-NEXT:    movb %al, (%rdi)
    582 ; SSE42-NEXT:    pextrb $6, %xmm0, %eax
    583 ; SSE42-NEXT:    andb $1, %al
    584 ; SSE42-NEXT:    movb %al, (%rdi)
    585 ; SSE42-NEXT:    pextrb $5, %xmm0, %eax
    586 ; SSE42-NEXT:    andb $1, %al
    587 ; SSE42-NEXT:    movb %al, (%rdi)
    588 ; SSE42-NEXT:    pextrb $4, %xmm0, %eax
    589 ; SSE42-NEXT:    andb $1, %al
    590 ; SSE42-NEXT:    movb %al, (%rdi)
    591 ; SSE42-NEXT:    pextrb $3, %xmm0, %eax
    592 ; SSE42-NEXT:    andb $1, %al
    593 ; SSE42-NEXT:    movb %al, (%rdi)
    594 ; SSE42-NEXT:    pextrb $2, %xmm0, %eax
    595 ; SSE42-NEXT:    andb $1, %al
    596 ; SSE42-NEXT:    movb %al, (%rdi)
    597 ; SSE42-NEXT:    pextrb $1, %xmm0, %eax
    598 ; SSE42-NEXT:    andb $1, %al
    599 ; SSE42-NEXT:    movb %al, (%rdi)
    600 ; SSE42-NEXT:    pextrb $0, %xmm0, %eax
    601 ; SSE42-NEXT:    andb $1, %al
    602 ; SSE42-NEXT:    movb %al, (%rdi)
    603 ; SSE42-NEXT:    movq %rdi, %rax
    604 ; SSE42-NEXT:    retq
    605 ;
    606 ; AVX1-LABEL: test_cmp_v32i8:
    607 ; AVX1:       # BB#0:
    608 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
    609 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
    610 ; AVX1-NEXT:    vpcmpgtb %xmm2, %xmm3, %xmm2
    611 ; AVX1-NEXT:    vpcmpgtb %xmm1, %xmm0, %xmm0
    612 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
    613 ; AVX1-NEXT:    retq
    614 ;
    615 ; AVX2-LABEL: test_cmp_v32i8:
    616 ; AVX2:       # BB#0:
    617 ; AVX2-NEXT:    vpcmpgtb %ymm1, %ymm0, %ymm0
    618 ; AVX2-NEXT:    retq
    619 ;
    620 ; AVX512-LABEL: test_cmp_v32i8:
    621 ; AVX512:       # BB#0:
    622 ; AVX512-NEXT:    vpcmpgtb %ymm1, %ymm0, %ymm0
    623 ; AVX512-NEXT:    retq
    624   %1 = icmp sgt <32 x i8> %a0, %a1
    625   ret <32 x i1> %1
    626 }
    627 
    628 ;
    629 ; 512-bit vector comparisons
    630 ;
    631 
    632 define <8 x i1> @test_cmp_v8f64(<8 x double> %a0, <8 x double> %a1) nounwind {
    633 ; SSE2-LABEL: test_cmp_v8f64:
    634 ; SSE2:       # BB#0:
    635 ; SSE2-NEXT:    cmpltpd %xmm3, %xmm7
    636 ; SSE2-NEXT:    cmpltpd %xmm1, %xmm5
    637 ; SSE2-NEXT:    pextrw $4, %xmm5, %eax
    638 ; SSE2-NEXT:    punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm7[0],xmm5[1],xmm7[1],xmm5[2],xmm7[2],xmm5[3],xmm7[3]
    639 ; SSE2-NEXT:    cmpltpd %xmm2, %xmm6
    640 ; SSE2-NEXT:    cmpltpd %xmm0, %xmm4
    641 ; SSE2-NEXT:    pextrw $4, %xmm4, %ecx
    642 ; SSE2-NEXT:    punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm6[0],xmm4[1],xmm6[1],xmm4[2],xmm6[2],xmm4[3],xmm6[3]
    643 ; SSE2-NEXT:    punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1],xmm4[2],xmm5[2],xmm4[3],xmm5[3]
    644 ; SSE2-NEXT:    pextrw $4, %xmm7, %edx
    645 ; SSE2-NEXT:    movd %edx, %xmm0
    646 ; SSE2-NEXT:    movd %eax, %xmm1
    647 ; SSE2-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
    648 ; SSE2-NEXT:    pextrw $4, %xmm6, %eax
    649 ; SSE2-NEXT:    movd %eax, %xmm0
    650 ; SSE2-NEXT:    movd %ecx, %xmm2
    651 ; SSE2-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
    652 ; SSE2-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]
    653 ; SSE2-NEXT:    punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1],xmm4[2],xmm2[2],xmm4[3],xmm2[3]
    654 ; SSE2-NEXT:    movdqa %xmm4, %xmm0
    655 ; SSE2-NEXT:    retq
    656 ;
    657 ; SSE42-LABEL: test_cmp_v8f64:
    658 ; SSE42:       # BB#0:
    659 ; SSE42-NEXT:    cmpltpd %xmm3, %xmm7
    660 ; SSE42-NEXT:    xorpd %xmm3, %xmm3
    661 ; SSE42-NEXT:    pblendw {{.*#+}} xmm7 = xmm7[0],xmm3[1,2,3],xmm7[4],xmm3[5,6,7]
    662 ; SSE42-NEXT:    cmpltpd %xmm2, %xmm6
    663 ; SSE42-NEXT:    pblendw {{.*#+}} xmm6 = xmm6[0],xmm3[1,2,3],xmm6[4],xmm3[5,6,7]
    664 ; SSE42-NEXT:    packusdw %xmm7, %xmm6
    665 ; SSE42-NEXT:    cmpltpd %xmm1, %xmm5
    666 ; SSE42-NEXT:    pblendw {{.*#+}} xmm5 = xmm5[0],xmm3[1,2,3],xmm5[4],xmm3[5,6,7]
    667 ; SSE42-NEXT:    cmpltpd %xmm0, %xmm4
    668 ; SSE42-NEXT:    pblendw {{.*#+}} xmm3 = xmm4[0],xmm3[1,2,3],xmm4[4],xmm3[5,6,7]
    669 ; SSE42-NEXT:    packusdw %xmm5, %xmm3
    670 ; SSE42-NEXT:    packusdw %xmm6, %xmm3
    671 ; SSE42-NEXT:    movdqa %xmm3, %xmm0
    672 ; SSE42-NEXT:    retq
    673 ;
    674 ; AVX1-LABEL: test_cmp_v8f64:
    675 ; AVX1:       # BB#0:
    676 ; AVX1-NEXT:    vcmpltpd %ymm1, %ymm3, %ymm1
    677 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
    678 ; AVX1-NEXT:    vpxor %xmm4, %xmm4, %xmm4
    679 ; AVX1-NEXT:    vpblendw {{.*#+}} xmm3 = xmm3[0],xmm4[1,2,3],xmm3[4],xmm4[5,6,7]
    680 ; AVX1-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0],xmm4[1,2,3],xmm1[4],xmm4[5,6,7]
    681 ; AVX1-NEXT:    vpackusdw %xmm3, %xmm1, %xmm1
    682 ; AVX1-NEXT:    vcmpltpd %ymm0, %ymm2, %ymm0
    683 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
    684 ; AVX1-NEXT:    vpblendw {{.*#+}} xmm2 = xmm2[0],xmm4[1,2,3],xmm2[4],xmm4[5,6,7]
    685 ; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm4[1,2,3],xmm0[4],xmm4[5,6,7]
    686 ; AVX1-NEXT:    vpackusdw %xmm2, %xmm0, %xmm0
    687 ; AVX1-NEXT:    vpackusdw %xmm1, %xmm0, %xmm0
    688 ; AVX1-NEXT:    vzeroupper
    689 ; AVX1-NEXT:    retq
    690 ;
    691 ; AVX2-LABEL: test_cmp_v8f64:
    692 ; AVX2:       # BB#0:
    693 ; AVX2-NEXT:    vcmpltpd %ymm0, %ymm2, %ymm0
    694 ; AVX2-NEXT:    vpermilps {{.*#+}} ymm0 = ymm0[0,2,0,2,4,6,4,6]
    695 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,2,3]
    696 ; AVX2-NEXT:    vcmpltpd %ymm1, %ymm3, %ymm1
    697 ; AVX2-NEXT:    vpermilps {{.*#+}} ymm1 = ymm1[0,2,0,2,4,6,4,6]
    698 ; AVX2-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,3,2,3]
    699 ; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
    700 ; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,4,5,8,9,12,13],zero,zero,zero,zero,zero,zero,zero,zero,ymm0[16,17,20,21,24,25,28,29],zero,zero,zero,zero,zero,zero,zero,zero
    701 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,2,3]
    702 ; AVX2-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
    703 ; AVX2-NEXT:    vzeroupper
    704 ; AVX2-NEXT:    retq
    705 ;
    706 ; AVX512-LABEL: test_cmp_v8f64:
    707 ; AVX512:       # BB#0:
    708 ; AVX512-NEXT:    vcmpltpd %zmm0, %zmm1, %k1
    709 ; AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
    710 ; AVX512-NEXT:    vmovdqa64 %zmm0, %zmm0 {%k1} {z}
    711 ; AVX512-NEXT:    vpmovqw %zmm0, %xmm0
    712 ; AVX512-NEXT:    retq
    713   %1 = fcmp ogt <8 x double> %a0, %a1
    714   ret <8 x i1> %1
    715 }
    716 
    717 define <16 x i1> @test_cmp_v16f32(<16 x float> %a0, <16 x float> %a1) nounwind {
    718 ; SSE-LABEL: test_cmp_v16f32:
    719 ; SSE:       # BB#0:
    720 ; SSE-NEXT:    cmpltps %xmm3, %xmm7
    721 ; SSE-NEXT:    movaps {{.*#+}} xmm3 = [255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0]
    722 ; SSE-NEXT:    andps %xmm3, %xmm7
    723 ; SSE-NEXT:    cmpltps %xmm2, %xmm6
    724 ; SSE-NEXT:    andps %xmm3, %xmm6
    725 ; SSE-NEXT:    packuswb %xmm7, %xmm6
    726 ; SSE-NEXT:    cmpltps %xmm1, %xmm5
    727 ; SSE-NEXT:    andps %xmm3, %xmm5
    728 ; SSE-NEXT:    cmpltps %xmm0, %xmm4
    729 ; SSE-NEXT:    andps %xmm4, %xmm3
    730 ; SSE-NEXT:    packuswb %xmm5, %xmm3
    731 ; SSE-NEXT:    packuswb %xmm6, %xmm3
    732 ; SSE-NEXT:    movdqa %xmm3, %xmm0
    733 ; SSE-NEXT:    retq
    734 ;
    735 ; AVX1-LABEL: test_cmp_v16f32:
    736 ; AVX1:       # BB#0:
    737 ; AVX1-NEXT:    vcmpltps %ymm1, %ymm3, %ymm1
    738 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
    739 ; AVX1-NEXT:    vmovaps {{.*#+}} xmm4 = [255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0]
    740 ; AVX1-NEXT:    vandps %xmm4, %xmm3, %xmm3
    741 ; AVX1-NEXT:    vandps %xmm4, %xmm1, %xmm1
    742 ; AVX1-NEXT:    vpackuswb %xmm3, %xmm1, %xmm1
    743 ; AVX1-NEXT:    vcmpltps %ymm0, %ymm2, %ymm0
    744 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
    745 ; AVX1-NEXT:    vandps %xmm4, %xmm2, %xmm2
    746 ; AVX1-NEXT:    vandps %xmm4, %xmm0, %xmm0
    747 ; AVX1-NEXT:    vpackuswb %xmm2, %xmm0, %xmm0
    748 ; AVX1-NEXT:    vpackuswb %xmm1, %xmm0, %xmm0
    749 ; AVX1-NEXT:    vzeroupper
    750 ; AVX1-NEXT:    retq
    751 ;
    752 ; AVX2-LABEL: test_cmp_v16f32:
    753 ; AVX2:       # BB#0:
    754 ; AVX2-NEXT:    vcmpltps %ymm1, %ymm3, %ymm1
    755 ; AVX2-NEXT:    vmovdqa {{.*#+}} ymm3 = [0,1,4,5,8,9,12,13,128,128,128,128,128,128,128,128,0,1,4,5,8,9,12,13,128,128,128,128,128,128,128,128]
    756 ; AVX2-NEXT:    vpshufb %ymm3, %ymm1, %ymm1
    757 ; AVX2-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]
    758 ; AVX2-NEXT:    vmovdqa {{.*#+}} xmm4 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
    759 ; AVX2-NEXT:    vpshufb %xmm4, %xmm1, %xmm1
    760 ; AVX2-NEXT:    vcmpltps %ymm0, %ymm2, %ymm0
    761 ; AVX2-NEXT:    vpshufb %ymm3, %ymm0, %ymm0
    762 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,2,3]
    763 ; AVX2-NEXT:    vpshufb %xmm4, %xmm0, %xmm0
    764 ; AVX2-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
    765 ; AVX2-NEXT:    vzeroupper
    766 ; AVX2-NEXT:    retq
    767 ;
    768 ; AVX512-LABEL: test_cmp_v16f32:
    769 ; AVX512:       # BB#0:
    770 ; AVX512-NEXT:    vcmpltps %zmm0, %zmm1, %k1
    771 ; AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
    772 ; AVX512-NEXT:    vmovdqa32 %zmm0, %zmm0 {%k1} {z}
    773 ; AVX512-NEXT:    vpmovdb %zmm0, %xmm0
    774 ; AVX512-NEXT:    retq
    775   %1 = fcmp ogt <16 x float> %a0, %a1
    776   ret <16 x i1> %1
    777 }
    778 
    779 define <8 x i1> @test_cmp_v8i64(<8 x i64> %a0, <8 x i64> %a1) nounwind {
    780 ; SSE2-LABEL: test_cmp_v8i64:
    781 ; SSE2:       # BB#0:
    782 ; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [2147483648,0,2147483648,0]
    783 ; SSE2-NEXT:    pxor %xmm8, %xmm7
    784 ; SSE2-NEXT:    pxor %xmm8, %xmm3
    785 ; SSE2-NEXT:    movdqa %xmm3, %xmm9
    786 ; SSE2-NEXT:    pcmpgtd %xmm7, %xmm9
    787 ; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm9[0,0,2,2]
    788 ; SSE2-NEXT:    pcmpeqd %xmm7, %xmm3
    789 ; SSE2-NEXT:    pshufd {{.*#+}} xmm7 = xmm3[1,1,3,3]
    790 ; SSE2-NEXT:    pand %xmm10, %xmm7
    791 ; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm9[1,1,3,3]
    792 ; SSE2-NEXT:    por %xmm7, %xmm9
    793 ; SSE2-NEXT:    pxor %xmm8, %xmm5
    794 ; SSE2-NEXT:    pxor %xmm8, %xmm1
    795 ; SSE2-NEXT:    movdqa %xmm1, %xmm7
    796 ; SSE2-NEXT:    pcmpgtd %xmm5, %xmm7
    797 ; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm7[0,0,2,2]
    798 ; SSE2-NEXT:    pcmpeqd %xmm5, %xmm1
    799 ; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm1[1,1,3,3]
    800 ; SSE2-NEXT:    pand %xmm3, %xmm5
    801 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm7[1,1,3,3]
    802 ; SSE2-NEXT:    por %xmm5, %xmm1
    803 ; SSE2-NEXT:    pextrw $4, %xmm1, %eax
    804 ; SSE2-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm9[0],xmm1[1],xmm9[1],xmm1[2],xmm9[2],xmm1[3],xmm9[3]
    805 ; SSE2-NEXT:    pxor %xmm8, %xmm6
    806 ; SSE2-NEXT:    pxor %xmm8, %xmm2
    807 ; SSE2-NEXT:    movdqa %xmm2, %xmm3
    808 ; SSE2-NEXT:    pcmpgtd %xmm6, %xmm3
    809 ; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm3[0,0,2,2]
    810 ; SSE2-NEXT:    pcmpeqd %xmm6, %xmm2
    811 ; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
    812 ; SSE2-NEXT:    pand %xmm5, %xmm2
    813 ; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
    814 ; SSE2-NEXT:    por %xmm2, %xmm3
    815 ; SSE2-NEXT:    pxor %xmm8, %xmm4
    816 ; SSE2-NEXT:    pxor %xmm8, %xmm0
    817 ; SSE2-NEXT:    movdqa %xmm0, %xmm2
    818 ; SSE2-NEXT:    pcmpgtd %xmm4, %xmm2
    819 ; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm2[0,0,2,2]
    820 ; SSE2-NEXT:    pcmpeqd %xmm4, %xmm0
    821 ; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm0[1,1,3,3]
    822 ; SSE2-NEXT:    pand %xmm5, %xmm4
    823 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[1,1,3,3]
    824 ; SSE2-NEXT:    por %xmm4, %xmm0
    825 ; SSE2-NEXT:    pextrw $4, %xmm9, %ecx
    826 ; SSE2-NEXT:    movd %ecx, %xmm2
    827 ; SSE2-NEXT:    pextrw $4, %xmm0, %ecx
    828 ; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
    829 ; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
    830 ; SSE2-NEXT:    movd %eax, %xmm1
    831 ; SSE2-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
    832 ; SSE2-NEXT:    pextrw $4, %xmm3, %eax
    833 ; SSE2-NEXT:    movd %eax, %xmm2
    834 ; SSE2-NEXT:    movd %ecx, %xmm3
    835 ; SSE2-NEXT:    punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]
    836 ; SSE2-NEXT:    punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1],xmm3[2],xmm1[2],xmm3[3],xmm1[3]
    837 ; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
    838 ; SSE2-NEXT:    retq
    839 ;
    840 ; SSE42-LABEL: test_cmp_v8i64:
    841 ; SSE42:       # BB#0:
    842 ; SSE42-NEXT:    pcmpgtq %xmm7, %xmm3
    843 ; SSE42-NEXT:    pxor %xmm7, %xmm7
    844 ; SSE42-NEXT:    pblendw {{.*#+}} xmm3 = xmm3[0],xmm7[1,2,3],xmm3[4],xmm7[5,6,7]
    845 ; SSE42-NEXT:    pcmpgtq %xmm6, %xmm2
    846 ; SSE42-NEXT:    pblendw {{.*#+}} xmm2 = xmm2[0],xmm7[1,2,3],xmm2[4],xmm7[5,6,7]
    847 ; SSE42-NEXT:    packusdw %xmm3, %xmm2
    848 ; SSE42-NEXT:    pcmpgtq %xmm5, %xmm1
    849 ; SSE42-NEXT:    pblendw {{.*#+}} xmm1 = xmm1[0],xmm7[1,2,3],xmm1[4],xmm7[5,6,7]
    850 ; SSE42-NEXT:    pcmpgtq %xmm4, %xmm0
    851 ; SSE42-NEXT:    pblendw {{.*#+}} xmm0 = xmm0[0],xmm7[1,2,3],xmm0[4],xmm7[5,6,7]
    852 ; SSE42-NEXT:    packusdw %xmm1, %xmm0
    853 ; SSE42-NEXT:    packusdw %xmm2, %xmm0
    854 ; SSE42-NEXT:    retq
    855 ;
    856 ; AVX1-LABEL: test_cmp_v8i64:
    857 ; AVX1:       # BB#0:
    858 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
    859 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm5
    860 ; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm5, %xmm4
    861 ; AVX1-NEXT:    vpxor %xmm5, %xmm5, %xmm5
    862 ; AVX1-NEXT:    vpblendw {{.*#+}} xmm4 = xmm4[0],xmm5[1,2,3],xmm4[4],xmm5[5,6,7]
    863 ; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm1, %xmm1
    864 ; AVX1-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0],xmm5[1,2,3],xmm1[4],xmm5[5,6,7]
    865 ; AVX1-NEXT:    vpackusdw %xmm4, %xmm1, %xmm1
    866 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm3
    867 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm4
    868 ; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm4, %xmm3
    869 ; AVX1-NEXT:    vpblendw {{.*#+}} xmm3 = xmm3[0],xmm5[1,2,3],xmm3[4],xmm5[5,6,7]
    870 ; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm0, %xmm0
    871 ; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm5[1,2,3],xmm0[4],xmm5[5,6,7]
    872 ; AVX1-NEXT:    vpackusdw %xmm3, %xmm0, %xmm0
    873 ; AVX1-NEXT:    vpackusdw %xmm1, %xmm0, %xmm0
    874 ; AVX1-NEXT:    vzeroupper
    875 ; AVX1-NEXT:    retq
    876 ;
    877 ; AVX2-LABEL: test_cmp_v8i64:
    878 ; AVX2:       # BB#0:
    879 ; AVX2-NEXT:    vpcmpgtq %ymm2, %ymm0, %ymm0
    880 ; AVX2-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[0,2,0,2,4,6,4,6]
    881 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,2,3]
    882 ; AVX2-NEXT:    vpcmpgtq %ymm3, %ymm1, %ymm1
    883 ; AVX2-NEXT:    vpshufd {{.*#+}} ymm1 = ymm1[0,2,0,2,4,6,4,6]
    884 ; AVX2-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,3,2,3]
    885 ; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
    886 ; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,4,5,8,9,12,13],zero,zero,zero,zero,zero,zero,zero,zero,ymm0[16,17,20,21,24,25,28,29],zero,zero,zero,zero,zero,zero,zero,zero
    887 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,2,3]
    888 ; AVX2-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
    889 ; AVX2-NEXT:    vzeroupper
    890 ; AVX2-NEXT:    retq
    891 ;
    892 ; AVX512-LABEL: test_cmp_v8i64:
    893 ; AVX512:       # BB#0:
    894 ; AVX512-NEXT:    vpcmpgtq %zmm1, %zmm0, %k1
    895 ; AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
    896 ; AVX512-NEXT:    vmovdqa64 %zmm0, %zmm0 {%k1} {z}
    897 ; AVX512-NEXT:    vpmovqw %zmm0, %xmm0
    898 ; AVX512-NEXT:    retq
    899   %1 = icmp sgt <8 x i64> %a0, %a1
    900   ret <8 x i1> %1
    901 }
    902 
    903 define <16 x i1> @test_cmp_v16i32(<16 x i32> %a0, <16 x i32> %a1) nounwind {
    904 ; SSE-LABEL: test_cmp_v16i32:
    905 ; SSE:       # BB#0:
    906 ; SSE-NEXT:    pcmpgtd %xmm7, %xmm3
    907 ; SSE-NEXT:    movdqa {{.*#+}} xmm7 = [255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0]
    908 ; SSE-NEXT:    pand %xmm7, %xmm3
    909 ; SSE-NEXT:    pcmpgtd %xmm6, %xmm2
    910 ; SSE-NEXT:    pand %xmm7, %xmm2
    911 ; SSE-NEXT:    packuswb %xmm3, %xmm2
    912 ; SSE-NEXT:    pcmpgtd %xmm5, %xmm1
    913 ; SSE-NEXT:    pand %xmm7, %xmm1
    914 ; SSE-NEXT:    pcmpgtd %xmm4, %xmm0
    915 ; SSE-NEXT:    pand %xmm7, %xmm0
    916 ; SSE-NEXT:    packuswb %xmm1, %xmm0
    917 ; SSE-NEXT:    packuswb %xmm2, %xmm0
    918 ; SSE-NEXT:    retq
    919 ;
    920 ; AVX1-LABEL: test_cmp_v16i32:
    921 ; AVX1:       # BB#0:
    922 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
    923 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm5
    924 ; AVX1-NEXT:    vpcmpgtd %xmm4, %xmm5, %xmm4
    925 ; AVX1-NEXT:    vmovdqa {{.*#+}} xmm5 = [255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0]
    926 ; AVX1-NEXT:    vpand %xmm5, %xmm4, %xmm4
    927 ; AVX1-NEXT:    vpcmpgtd %xmm3, %xmm1, %xmm1
    928 ; AVX1-NEXT:    vpand %xmm5, %xmm1, %xmm1
    929 ; AVX1-NEXT:    vpackuswb %xmm4, %xmm1, %xmm1
    930 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm3
    931 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm4
    932 ; AVX1-NEXT:    vpcmpgtd %xmm3, %xmm4, %xmm3
    933 ; AVX1-NEXT:    vpand %xmm5, %xmm3, %xmm3
    934 ; AVX1-NEXT:    vpcmpgtd %xmm2, %xmm0, %xmm0
    935 ; AVX1-NEXT:    vpand %xmm5, %xmm0, %xmm0
    936 ; AVX1-NEXT:    vpackuswb %xmm3, %xmm0, %xmm0
    937 ; AVX1-NEXT:    vpackuswb %xmm1, %xmm0, %xmm0
    938 ; AVX1-NEXT:    vzeroupper
    939 ; AVX1-NEXT:    retq
    940 ;
    941 ; AVX2-LABEL: test_cmp_v16i32:
    942 ; AVX2:       # BB#0:
    943 ; AVX2-NEXT:    vpcmpgtd %ymm3, %ymm1, %ymm1
    944 ; AVX2-NEXT:    vmovdqa {{.*#+}} ymm3 = [0,1,4,5,8,9,12,13,128,128,128,128,128,128,128,128,0,1,4,5,8,9,12,13,128,128,128,128,128,128,128,128]
    945 ; AVX2-NEXT:    vpshufb %ymm3, %ymm1, %ymm1
    946 ; AVX2-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]
    947 ; AVX2-NEXT:    vmovdqa {{.*#+}} xmm4 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
    948 ; AVX2-NEXT:    vpshufb %xmm4, %xmm1, %xmm1
    949 ; AVX2-NEXT:    vpcmpgtd %ymm2, %ymm0, %ymm0
    950 ; AVX2-NEXT:    vpshufb %ymm3, %ymm0, %ymm0
    951 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,2,3]
    952 ; AVX2-NEXT:    vpshufb %xmm4, %xmm0, %xmm0
    953 ; AVX2-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
    954 ; AVX2-NEXT:    vzeroupper
    955 ; AVX2-NEXT:    retq
    956 ;
    957 ; AVX512-LABEL: test_cmp_v16i32:
    958 ; AVX512:       # BB#0:
    959 ; AVX512-NEXT:    vpcmpgtd %zmm1, %zmm0, %k1
    960 ; AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
    961 ; AVX512-NEXT:    vmovdqa32 %zmm0, %zmm0 {%k1} {z}
    962 ; AVX512-NEXT:    vpmovdb %zmm0, %xmm0
    963 ; AVX512-NEXT:    retq
    964   %1 = icmp sgt <16 x i32> %a0, %a1
    965   ret <16 x i1> %1
    966 }
    967 
    968 define <32 x i1> @test_cmp_v32i16(<32 x i16> %a0, <32 x i16> %a1) nounwind {
    969 ; SSE2-LABEL: test_cmp_v32i16:
    970 ; SSE2:       # BB#0:
    971 ; SSE2-NEXT:    pcmpgtw %xmm5, %xmm1
    972 ; SSE2-NEXT:    movdqa {{.*#+}} xmm5 = [255,255,255,255,255,255,255,255]
    973 ; SSE2-NEXT:    pand %xmm5, %xmm1
    974 ; SSE2-NEXT:    pcmpgtw %xmm4, %xmm0
    975 ; SSE2-NEXT:    pand %xmm5, %xmm0
    976 ; SSE2-NEXT:    packuswb %xmm1, %xmm0
    977 ; SSE2-NEXT:    pcmpgtw %xmm7, %xmm3
    978 ; SSE2-NEXT:    pand %xmm5, %xmm3
    979 ; SSE2-NEXT:    pcmpgtw %xmm6, %xmm2
    980 ; SSE2-NEXT:    pand %xmm5, %xmm2
    981 ; SSE2-NEXT:    packuswb %xmm3, %xmm2
    982 ; SSE2-NEXT:    movdqa %xmm2, -{{[0-9]+}}(%rsp)
    983 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    984 ; SSE2-NEXT:    andb $1, %al
    985 ; SSE2-NEXT:    movb %al, 2(%rdi)
    986 ; SSE2-NEXT:    movdqa %xmm0, -{{[0-9]+}}(%rsp)
    987 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    988 ; SSE2-NEXT:    andb $1, %al
    989 ; SSE2-NEXT:    movb %al, (%rdi)
    990 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    991 ; SSE2-NEXT:    andb $1, %al
    992 ; SSE2-NEXT:    movb %al, 2(%rdi)
    993 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    994 ; SSE2-NEXT:    andb $1, %al
    995 ; SSE2-NEXT:    movb %al, (%rdi)
    996 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
    997 ; SSE2-NEXT:    andb $1, %al
    998 ; SSE2-NEXT:    movb %al, 2(%rdi)
    999 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1000 ; SSE2-NEXT:    andb $1, %al
   1001 ; SSE2-NEXT:    movb %al, (%rdi)
   1002 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1003 ; SSE2-NEXT:    andb $1, %al
   1004 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1005 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1006 ; SSE2-NEXT:    andb $1, %al
   1007 ; SSE2-NEXT:    movb %al, (%rdi)
   1008 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1009 ; SSE2-NEXT:    andb $1, %al
   1010 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1011 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1012 ; SSE2-NEXT:    andb $1, %al
   1013 ; SSE2-NEXT:    movb %al, (%rdi)
   1014 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1015 ; SSE2-NEXT:    andb $1, %al
   1016 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1017 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1018 ; SSE2-NEXT:    andb $1, %al
   1019 ; SSE2-NEXT:    movb %al, (%rdi)
   1020 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1021 ; SSE2-NEXT:    andb $1, %al
   1022 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1023 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1024 ; SSE2-NEXT:    andb $1, %al
   1025 ; SSE2-NEXT:    movb %al, (%rdi)
   1026 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1027 ; SSE2-NEXT:    andb $1, %al
   1028 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1029 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1030 ; SSE2-NEXT:    andb $1, %al
   1031 ; SSE2-NEXT:    movb %al, (%rdi)
   1032 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1033 ; SSE2-NEXT:    andb $1, %al
   1034 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1035 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1036 ; SSE2-NEXT:    andb $1, %al
   1037 ; SSE2-NEXT:    movb %al, (%rdi)
   1038 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1039 ; SSE2-NEXT:    andb $1, %al
   1040 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1041 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1042 ; SSE2-NEXT:    andb $1, %al
   1043 ; SSE2-NEXT:    movb %al, (%rdi)
   1044 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1045 ; SSE2-NEXT:    andb $1, %al
   1046 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1047 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1048 ; SSE2-NEXT:    andb $1, %al
   1049 ; SSE2-NEXT:    movb %al, (%rdi)
   1050 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1051 ; SSE2-NEXT:    andb $1, %al
   1052 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1053 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1054 ; SSE2-NEXT:    andb $1, %al
   1055 ; SSE2-NEXT:    movb %al, (%rdi)
   1056 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1057 ; SSE2-NEXT:    andb $1, %al
   1058 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1059 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1060 ; SSE2-NEXT:    andb $1, %al
   1061 ; SSE2-NEXT:    movb %al, (%rdi)
   1062 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1063 ; SSE2-NEXT:    andb $1, %al
   1064 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1065 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1066 ; SSE2-NEXT:    andb $1, %al
   1067 ; SSE2-NEXT:    movb %al, (%rdi)
   1068 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1069 ; SSE2-NEXT:    andb $1, %al
   1070 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1071 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1072 ; SSE2-NEXT:    andb $1, %al
   1073 ; SSE2-NEXT:    movb %al, (%rdi)
   1074 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1075 ; SSE2-NEXT:    andb $1, %al
   1076 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1077 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1078 ; SSE2-NEXT:    andb $1, %al
   1079 ; SSE2-NEXT:    movb %al, (%rdi)
   1080 ; SSE2-NEXT:    movq %rdi, %rax
   1081 ; SSE2-NEXT:    retq
   1082 ;
   1083 ; SSE42-LABEL: test_cmp_v32i16:
   1084 ; SSE42:       # BB#0:
   1085 ; SSE42-NEXT:    pcmpgtw %xmm5, %xmm1
   1086 ; SSE42-NEXT:    movdqa {{.*#+}} xmm5 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
   1087 ; SSE42-NEXT:    pshufb %xmm5, %xmm1
   1088 ; SSE42-NEXT:    pcmpgtw %xmm4, %xmm0
   1089 ; SSE42-NEXT:    pshufb %xmm5, %xmm0
   1090 ; SSE42-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
   1091 ; SSE42-NEXT:    pcmpgtw %xmm7, %xmm3
   1092 ; SSE42-NEXT:    pshufb %xmm5, %xmm3
   1093 ; SSE42-NEXT:    pcmpgtw %xmm6, %xmm2
   1094 ; SSE42-NEXT:    pshufb %xmm5, %xmm2
   1095 ; SSE42-NEXT:    punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0]
   1096 ; SSE42-NEXT:    pextrb $15, %xmm2, %eax
   1097 ; SSE42-NEXT:    andb $1, %al
   1098 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1099 ; SSE42-NEXT:    pextrb $14, %xmm2, %eax
   1100 ; SSE42-NEXT:    andb $1, %al
   1101 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1102 ; SSE42-NEXT:    pextrb $13, %xmm2, %eax
   1103 ; SSE42-NEXT:    andb $1, %al
   1104 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1105 ; SSE42-NEXT:    pextrb $12, %xmm2, %eax
   1106 ; SSE42-NEXT:    andb $1, %al
   1107 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1108 ; SSE42-NEXT:    pextrb $11, %xmm2, %eax
   1109 ; SSE42-NEXT:    andb $1, %al
   1110 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1111 ; SSE42-NEXT:    pextrb $10, %xmm2, %eax
   1112 ; SSE42-NEXT:    andb $1, %al
   1113 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1114 ; SSE42-NEXT:    pextrb $9, %xmm2, %eax
   1115 ; SSE42-NEXT:    andb $1, %al
   1116 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1117 ; SSE42-NEXT:    pextrb $8, %xmm2, %eax
   1118 ; SSE42-NEXT:    andb $1, %al
   1119 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1120 ; SSE42-NEXT:    pextrb $7, %xmm2, %eax
   1121 ; SSE42-NEXT:    andb $1, %al
   1122 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1123 ; SSE42-NEXT:    pextrb $6, %xmm2, %eax
   1124 ; SSE42-NEXT:    andb $1, %al
   1125 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1126 ; SSE42-NEXT:    pextrb $5, %xmm2, %eax
   1127 ; SSE42-NEXT:    andb $1, %al
   1128 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1129 ; SSE42-NEXT:    pextrb $4, %xmm2, %eax
   1130 ; SSE42-NEXT:    andb $1, %al
   1131 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1132 ; SSE42-NEXT:    pextrb $3, %xmm2, %eax
   1133 ; SSE42-NEXT:    andb $1, %al
   1134 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1135 ; SSE42-NEXT:    pextrb $2, %xmm2, %eax
   1136 ; SSE42-NEXT:    andb $1, %al
   1137 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1138 ; SSE42-NEXT:    pextrb $1, %xmm2, %eax
   1139 ; SSE42-NEXT:    andb $1, %al
   1140 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1141 ; SSE42-NEXT:    pextrb $0, %xmm2, %eax
   1142 ; SSE42-NEXT:    andb $1, %al
   1143 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1144 ; SSE42-NEXT:    pextrb $15, %xmm0, %eax
   1145 ; SSE42-NEXT:    andb $1, %al
   1146 ; SSE42-NEXT:    movb %al, (%rdi)
   1147 ; SSE42-NEXT:    pextrb $14, %xmm0, %eax
   1148 ; SSE42-NEXT:    andb $1, %al
   1149 ; SSE42-NEXT:    movb %al, (%rdi)
   1150 ; SSE42-NEXT:    pextrb $13, %xmm0, %eax
   1151 ; SSE42-NEXT:    andb $1, %al
   1152 ; SSE42-NEXT:    movb %al, (%rdi)
   1153 ; SSE42-NEXT:    pextrb $12, %xmm0, %eax
   1154 ; SSE42-NEXT:    andb $1, %al
   1155 ; SSE42-NEXT:    movb %al, (%rdi)
   1156 ; SSE42-NEXT:    pextrb $11, %xmm0, %eax
   1157 ; SSE42-NEXT:    andb $1, %al
   1158 ; SSE42-NEXT:    movb %al, (%rdi)
   1159 ; SSE42-NEXT:    pextrb $10, %xmm0, %eax
   1160 ; SSE42-NEXT:    andb $1, %al
   1161 ; SSE42-NEXT:    movb %al, (%rdi)
   1162 ; SSE42-NEXT:    pextrb $9, %xmm0, %eax
   1163 ; SSE42-NEXT:    andb $1, %al
   1164 ; SSE42-NEXT:    movb %al, (%rdi)
   1165 ; SSE42-NEXT:    pextrb $8, %xmm0, %eax
   1166 ; SSE42-NEXT:    andb $1, %al
   1167 ; SSE42-NEXT:    movb %al, (%rdi)
   1168 ; SSE42-NEXT:    pextrb $7, %xmm0, %eax
   1169 ; SSE42-NEXT:    andb $1, %al
   1170 ; SSE42-NEXT:    movb %al, (%rdi)
   1171 ; SSE42-NEXT:    pextrb $6, %xmm0, %eax
   1172 ; SSE42-NEXT:    andb $1, %al
   1173 ; SSE42-NEXT:    movb %al, (%rdi)
   1174 ; SSE42-NEXT:    pextrb $5, %xmm0, %eax
   1175 ; SSE42-NEXT:    andb $1, %al
   1176 ; SSE42-NEXT:    movb %al, (%rdi)
   1177 ; SSE42-NEXT:    pextrb $4, %xmm0, %eax
   1178 ; SSE42-NEXT:    andb $1, %al
   1179 ; SSE42-NEXT:    movb %al, (%rdi)
   1180 ; SSE42-NEXT:    pextrb $3, %xmm0, %eax
   1181 ; SSE42-NEXT:    andb $1, %al
   1182 ; SSE42-NEXT:    movb %al, (%rdi)
   1183 ; SSE42-NEXT:    pextrb $2, %xmm0, %eax
   1184 ; SSE42-NEXT:    andb $1, %al
   1185 ; SSE42-NEXT:    movb %al, (%rdi)
   1186 ; SSE42-NEXT:    pextrb $1, %xmm0, %eax
   1187 ; SSE42-NEXT:    andb $1, %al
   1188 ; SSE42-NEXT:    movb %al, (%rdi)
   1189 ; SSE42-NEXT:    pextrb $0, %xmm0, %eax
   1190 ; SSE42-NEXT:    andb $1, %al
   1191 ; SSE42-NEXT:    movb %al, (%rdi)
   1192 ; SSE42-NEXT:    movq %rdi, %rax
   1193 ; SSE42-NEXT:    retq
   1194 ;
   1195 ; AVX1-LABEL: test_cmp_v32i16:
   1196 ; AVX1:       # BB#0:
   1197 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   1198 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm5
   1199 ; AVX1-NEXT:    vpcmpgtw %xmm4, %xmm5, %xmm4
   1200 ; AVX1-NEXT:    vmovdqa {{.*#+}} xmm5 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
   1201 ; AVX1-NEXT:    vpshufb %xmm5, %xmm4, %xmm4
   1202 ; AVX1-NEXT:    vpcmpgtw %xmm3, %xmm1, %xmm1
   1203 ; AVX1-NEXT:    vpshufb %xmm5, %xmm1, %xmm1
   1204 ; AVX1-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm4[0]
   1205 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm3
   1206 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm4
   1207 ; AVX1-NEXT:    vpcmpgtw %xmm3, %xmm4, %xmm3
   1208 ; AVX1-NEXT:    vpshufb %xmm5, %xmm3, %xmm3
   1209 ; AVX1-NEXT:    vpcmpgtw %xmm2, %xmm0, %xmm0
   1210 ; AVX1-NEXT:    vpshufb %xmm5, %xmm0, %xmm0
   1211 ; AVX1-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm3[0]
   1212 ; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
   1213 ; AVX1-NEXT:    retq
   1214 ;
   1215 ; AVX2-LABEL: test_cmp_v32i16:
   1216 ; AVX2:       # BB#0:
   1217 ; AVX2-NEXT:    vpcmpgtw %ymm3, %ymm1, %ymm1
   1218 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm3
   1219 ; AVX2-NEXT:    vmovdqa {{.*#+}} xmm4 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
   1220 ; AVX2-NEXT:    vpshufb %xmm4, %xmm3, %xmm3
   1221 ; AVX2-NEXT:    vpshufb %xmm4, %xmm1, %xmm1
   1222 ; AVX2-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm3[0]
   1223 ; AVX2-NEXT:    vpcmpgtw %ymm2, %ymm0, %ymm0
   1224 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm2
   1225 ; AVX2-NEXT:    vpshufb %xmm4, %xmm2, %xmm2
   1226 ; AVX2-NEXT:    vpshufb %xmm4, %xmm0, %xmm0
   1227 ; AVX2-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
   1228 ; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   1229 ; AVX2-NEXT:    retq
   1230 ;
   1231 ; AVX512-LABEL: test_cmp_v32i16:
   1232 ; AVX512:       # BB#0:
   1233 ; AVX512-NEXT:    vpcmpgtw %ymm2, %ymm0, %ymm0
   1234 ; AVX512-NEXT:    vpmovsxwd %ymm0, %zmm0
   1235 ; AVX512-NEXT:    vpmovdb %zmm0, %xmm0
   1236 ; AVX512-NEXT:    vpcmpgtw %ymm3, %ymm1, %ymm1
   1237 ; AVX512-NEXT:    vpmovsxwd %ymm1, %zmm1
   1238 ; AVX512-NEXT:    vpmovdb %zmm1, %xmm1
   1239 ; AVX512-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
   1240 ; AVX512-NEXT:    retq
   1241   %1 = icmp sgt <32 x i16> %a0, %a1
   1242   ret <32 x i1> %1
   1243 }
   1244 
   1245 define <64 x i1> @test_cmp_v64i8(<64 x i8> %a0, <64 x i8> %a1) nounwind {
   1246 ; SSE2-LABEL: test_cmp_v64i8:
   1247 ; SSE2:       # BB#0:
   1248 ; SSE2-NEXT:    pcmpgtb %xmm4, %xmm0
   1249 ; SSE2-NEXT:    pcmpgtb %xmm5, %xmm1
   1250 ; SSE2-NEXT:    pcmpgtb %xmm6, %xmm2
   1251 ; SSE2-NEXT:    pcmpgtb %xmm7, %xmm3
   1252 ; SSE2-NEXT:    movdqa %xmm3, -{{[0-9]+}}(%rsp)
   1253 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1254 ; SSE2-NEXT:    andb $1, %al
   1255 ; SSE2-NEXT:    movb %al, 6(%rdi)
   1256 ; SSE2-NEXT:    movdqa %xmm2, -{{[0-9]+}}(%rsp)
   1257 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1258 ; SSE2-NEXT:    andb $1, %al
   1259 ; SSE2-NEXT:    movb %al, 4(%rdi)
   1260 ; SSE2-NEXT:    movdqa %xmm1, -{{[0-9]+}}(%rsp)
   1261 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1262 ; SSE2-NEXT:    andb $1, %al
   1263 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1264 ; SSE2-NEXT:    movdqa %xmm0, -{{[0-9]+}}(%rsp)
   1265 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1266 ; SSE2-NEXT:    andb $1, %al
   1267 ; SSE2-NEXT:    movb %al, (%rdi)
   1268 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1269 ; SSE2-NEXT:    andb $1, %al
   1270 ; SSE2-NEXT:    movb %al, 6(%rdi)
   1271 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1272 ; SSE2-NEXT:    andb $1, %al
   1273 ; SSE2-NEXT:    movb %al, 4(%rdi)
   1274 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1275 ; SSE2-NEXT:    andb $1, %al
   1276 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1277 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1278 ; SSE2-NEXT:    andb $1, %al
   1279 ; SSE2-NEXT:    movb %al, (%rdi)
   1280 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1281 ; SSE2-NEXT:    andb $1, %al
   1282 ; SSE2-NEXT:    movb %al, 6(%rdi)
   1283 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1284 ; SSE2-NEXT:    andb $1, %al
   1285 ; SSE2-NEXT:    movb %al, 4(%rdi)
   1286 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1287 ; SSE2-NEXT:    andb $1, %al
   1288 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1289 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1290 ; SSE2-NEXT:    andb $1, %al
   1291 ; SSE2-NEXT:    movb %al, (%rdi)
   1292 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1293 ; SSE2-NEXT:    andb $1, %al
   1294 ; SSE2-NEXT:    movb %al, 6(%rdi)
   1295 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1296 ; SSE2-NEXT:    andb $1, %al
   1297 ; SSE2-NEXT:    movb %al, 4(%rdi)
   1298 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1299 ; SSE2-NEXT:    andb $1, %al
   1300 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1301 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1302 ; SSE2-NEXT:    andb $1, %al
   1303 ; SSE2-NEXT:    movb %al, (%rdi)
   1304 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1305 ; SSE2-NEXT:    andb $1, %al
   1306 ; SSE2-NEXT:    movb %al, 6(%rdi)
   1307 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1308 ; SSE2-NEXT:    andb $1, %al
   1309 ; SSE2-NEXT:    movb %al, 4(%rdi)
   1310 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1311 ; SSE2-NEXT:    andb $1, %al
   1312 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1313 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1314 ; SSE2-NEXT:    andb $1, %al
   1315 ; SSE2-NEXT:    movb %al, (%rdi)
   1316 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1317 ; SSE2-NEXT:    andb $1, %al
   1318 ; SSE2-NEXT:    movb %al, 6(%rdi)
   1319 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1320 ; SSE2-NEXT:    andb $1, %al
   1321 ; SSE2-NEXT:    movb %al, 4(%rdi)
   1322 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1323 ; SSE2-NEXT:    andb $1, %al
   1324 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1325 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1326 ; SSE2-NEXT:    andb $1, %al
   1327 ; SSE2-NEXT:    movb %al, (%rdi)
   1328 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1329 ; SSE2-NEXT:    andb $1, %al
   1330 ; SSE2-NEXT:    movb %al, 6(%rdi)
   1331 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1332 ; SSE2-NEXT:    andb $1, %al
   1333 ; SSE2-NEXT:    movb %al, 4(%rdi)
   1334 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1335 ; SSE2-NEXT:    andb $1, %al
   1336 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1337 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1338 ; SSE2-NEXT:    andb $1, %al
   1339 ; SSE2-NEXT:    movb %al, (%rdi)
   1340 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1341 ; SSE2-NEXT:    andb $1, %al
   1342 ; SSE2-NEXT:    movb %al, 6(%rdi)
   1343 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1344 ; SSE2-NEXT:    andb $1, %al
   1345 ; SSE2-NEXT:    movb %al, 4(%rdi)
   1346 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1347 ; SSE2-NEXT:    andb $1, %al
   1348 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1349 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1350 ; SSE2-NEXT:    andb $1, %al
   1351 ; SSE2-NEXT:    movb %al, (%rdi)
   1352 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1353 ; SSE2-NEXT:    andb $1, %al
   1354 ; SSE2-NEXT:    movb %al, 6(%rdi)
   1355 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1356 ; SSE2-NEXT:    andb $1, %al
   1357 ; SSE2-NEXT:    movb %al, 4(%rdi)
   1358 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1359 ; SSE2-NEXT:    andb $1, %al
   1360 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1361 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1362 ; SSE2-NEXT:    andb $1, %al
   1363 ; SSE2-NEXT:    movb %al, (%rdi)
   1364 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1365 ; SSE2-NEXT:    andb $1, %al
   1366 ; SSE2-NEXT:    movb %al, 6(%rdi)
   1367 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1368 ; SSE2-NEXT:    andb $1, %al
   1369 ; SSE2-NEXT:    movb %al, 4(%rdi)
   1370 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1371 ; SSE2-NEXT:    andb $1, %al
   1372 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1373 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1374 ; SSE2-NEXT:    andb $1, %al
   1375 ; SSE2-NEXT:    movb %al, (%rdi)
   1376 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1377 ; SSE2-NEXT:    andb $1, %al
   1378 ; SSE2-NEXT:    movb %al, 6(%rdi)
   1379 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1380 ; SSE2-NEXT:    andb $1, %al
   1381 ; SSE2-NEXT:    movb %al, 4(%rdi)
   1382 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1383 ; SSE2-NEXT:    andb $1, %al
   1384 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1385 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1386 ; SSE2-NEXT:    andb $1, %al
   1387 ; SSE2-NEXT:    movb %al, (%rdi)
   1388 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1389 ; SSE2-NEXT:    andb $1, %al
   1390 ; SSE2-NEXT:    movb %al, 6(%rdi)
   1391 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1392 ; SSE2-NEXT:    andb $1, %al
   1393 ; SSE2-NEXT:    movb %al, 4(%rdi)
   1394 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1395 ; SSE2-NEXT:    andb $1, %al
   1396 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1397 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1398 ; SSE2-NEXT:    andb $1, %al
   1399 ; SSE2-NEXT:    movb %al, (%rdi)
   1400 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1401 ; SSE2-NEXT:    andb $1, %al
   1402 ; SSE2-NEXT:    movb %al, 6(%rdi)
   1403 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1404 ; SSE2-NEXT:    andb $1, %al
   1405 ; SSE2-NEXT:    movb %al, 4(%rdi)
   1406 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1407 ; SSE2-NEXT:    andb $1, %al
   1408 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1409 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1410 ; SSE2-NEXT:    andb $1, %al
   1411 ; SSE2-NEXT:    movb %al, (%rdi)
   1412 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1413 ; SSE2-NEXT:    andb $1, %al
   1414 ; SSE2-NEXT:    movb %al, 6(%rdi)
   1415 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1416 ; SSE2-NEXT:    andb $1, %al
   1417 ; SSE2-NEXT:    movb %al, 4(%rdi)
   1418 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1419 ; SSE2-NEXT:    andb $1, %al
   1420 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1421 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1422 ; SSE2-NEXT:    andb $1, %al
   1423 ; SSE2-NEXT:    movb %al, (%rdi)
   1424 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1425 ; SSE2-NEXT:    andb $1, %al
   1426 ; SSE2-NEXT:    movb %al, 6(%rdi)
   1427 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1428 ; SSE2-NEXT:    andb $1, %al
   1429 ; SSE2-NEXT:    movb %al, 4(%rdi)
   1430 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1431 ; SSE2-NEXT:    andb $1, %al
   1432 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1433 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1434 ; SSE2-NEXT:    andb $1, %al
   1435 ; SSE2-NEXT:    movb %al, (%rdi)
   1436 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1437 ; SSE2-NEXT:    andb $1, %al
   1438 ; SSE2-NEXT:    movb %al, 6(%rdi)
   1439 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1440 ; SSE2-NEXT:    andb $1, %al
   1441 ; SSE2-NEXT:    movb %al, 4(%rdi)
   1442 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1443 ; SSE2-NEXT:    andb $1, %al
   1444 ; SSE2-NEXT:    movb %al, 2(%rdi)
   1445 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   1446 ; SSE2-NEXT:    andb $1, %al
   1447 ; SSE2-NEXT:    movb %al, (%rdi)
   1448 ; SSE2-NEXT:    movq %rdi, %rax
   1449 ; SSE2-NEXT:    retq
   1450 ;
   1451 ; SSE42-LABEL: test_cmp_v64i8:
   1452 ; SSE42:       # BB#0:
   1453 ; SSE42-NEXT:    pcmpgtb %xmm4, %xmm0
   1454 ; SSE42-NEXT:    pcmpgtb %xmm5, %xmm1
   1455 ; SSE42-NEXT:    pcmpgtb %xmm6, %xmm2
   1456 ; SSE42-NEXT:    pcmpgtb %xmm7, %xmm3
   1457 ; SSE42-NEXT:    pextrb $15, %xmm3, %eax
   1458 ; SSE42-NEXT:    andb $1, %al
   1459 ; SSE42-NEXT:    movb %al, 6(%rdi)
   1460 ; SSE42-NEXT:    pextrb $14, %xmm3, %eax
   1461 ; SSE42-NEXT:    andb $1, %al
   1462 ; SSE42-NEXT:    movb %al, 6(%rdi)
   1463 ; SSE42-NEXT:    pextrb $13, %xmm3, %eax
   1464 ; SSE42-NEXT:    andb $1, %al
   1465 ; SSE42-NEXT:    movb %al, 6(%rdi)
   1466 ; SSE42-NEXT:    pextrb $12, %xmm3, %eax
   1467 ; SSE42-NEXT:    andb $1, %al
   1468 ; SSE42-NEXT:    movb %al, 6(%rdi)
   1469 ; SSE42-NEXT:    pextrb $11, %xmm3, %eax
   1470 ; SSE42-NEXT:    andb $1, %al
   1471 ; SSE42-NEXT:    movb %al, 6(%rdi)
   1472 ; SSE42-NEXT:    pextrb $10, %xmm3, %eax
   1473 ; SSE42-NEXT:    andb $1, %al
   1474 ; SSE42-NEXT:    movb %al, 6(%rdi)
   1475 ; SSE42-NEXT:    pextrb $9, %xmm3, %eax
   1476 ; SSE42-NEXT:    andb $1, %al
   1477 ; SSE42-NEXT:    movb %al, 6(%rdi)
   1478 ; SSE42-NEXT:    pextrb $8, %xmm3, %eax
   1479 ; SSE42-NEXT:    andb $1, %al
   1480 ; SSE42-NEXT:    movb %al, 6(%rdi)
   1481 ; SSE42-NEXT:    pextrb $7, %xmm3, %eax
   1482 ; SSE42-NEXT:    andb $1, %al
   1483 ; SSE42-NEXT:    movb %al, 6(%rdi)
   1484 ; SSE42-NEXT:    pextrb $6, %xmm3, %eax
   1485 ; SSE42-NEXT:    andb $1, %al
   1486 ; SSE42-NEXT:    movb %al, 6(%rdi)
   1487 ; SSE42-NEXT:    pextrb $5, %xmm3, %eax
   1488 ; SSE42-NEXT:    andb $1, %al
   1489 ; SSE42-NEXT:    movb %al, 6(%rdi)
   1490 ; SSE42-NEXT:    pextrb $4, %xmm3, %eax
   1491 ; SSE42-NEXT:    andb $1, %al
   1492 ; SSE42-NEXT:    movb %al, 6(%rdi)
   1493 ; SSE42-NEXT:    pextrb $3, %xmm3, %eax
   1494 ; SSE42-NEXT:    andb $1, %al
   1495 ; SSE42-NEXT:    movb %al, 6(%rdi)
   1496 ; SSE42-NEXT:    pextrb $2, %xmm3, %eax
   1497 ; SSE42-NEXT:    andb $1, %al
   1498 ; SSE42-NEXT:    movb %al, 6(%rdi)
   1499 ; SSE42-NEXT:    pextrb $1, %xmm3, %eax
   1500 ; SSE42-NEXT:    andb $1, %al
   1501 ; SSE42-NEXT:    movb %al, 6(%rdi)
   1502 ; SSE42-NEXT:    pextrb $0, %xmm3, %eax
   1503 ; SSE42-NEXT:    andb $1, %al
   1504 ; SSE42-NEXT:    movb %al, 6(%rdi)
   1505 ; SSE42-NEXT:    pextrb $15, %xmm2, %eax
   1506 ; SSE42-NEXT:    andb $1, %al
   1507 ; SSE42-NEXT:    movb %al, 4(%rdi)
   1508 ; SSE42-NEXT:    pextrb $14, %xmm2, %eax
   1509 ; SSE42-NEXT:    andb $1, %al
   1510 ; SSE42-NEXT:    movb %al, 4(%rdi)
   1511 ; SSE42-NEXT:    pextrb $13, %xmm2, %eax
   1512 ; SSE42-NEXT:    andb $1, %al
   1513 ; SSE42-NEXT:    movb %al, 4(%rdi)
   1514 ; SSE42-NEXT:    pextrb $12, %xmm2, %eax
   1515 ; SSE42-NEXT:    andb $1, %al
   1516 ; SSE42-NEXT:    movb %al, 4(%rdi)
   1517 ; SSE42-NEXT:    pextrb $11, %xmm2, %eax
   1518 ; SSE42-NEXT:    andb $1, %al
   1519 ; SSE42-NEXT:    movb %al, 4(%rdi)
   1520 ; SSE42-NEXT:    pextrb $10, %xmm2, %eax
   1521 ; SSE42-NEXT:    andb $1, %al
   1522 ; SSE42-NEXT:    movb %al, 4(%rdi)
   1523 ; SSE42-NEXT:    pextrb $9, %xmm2, %eax
   1524 ; SSE42-NEXT:    andb $1, %al
   1525 ; SSE42-NEXT:    movb %al, 4(%rdi)
   1526 ; SSE42-NEXT:    pextrb $8, %xmm2, %eax
   1527 ; SSE42-NEXT:    andb $1, %al
   1528 ; SSE42-NEXT:    movb %al, 4(%rdi)
   1529 ; SSE42-NEXT:    pextrb $7, %xmm2, %eax
   1530 ; SSE42-NEXT:    andb $1, %al
   1531 ; SSE42-NEXT:    movb %al, 4(%rdi)
   1532 ; SSE42-NEXT:    pextrb $6, %xmm2, %eax
   1533 ; SSE42-NEXT:    andb $1, %al
   1534 ; SSE42-NEXT:    movb %al, 4(%rdi)
   1535 ; SSE42-NEXT:    pextrb $5, %xmm2, %eax
   1536 ; SSE42-NEXT:    andb $1, %al
   1537 ; SSE42-NEXT:    movb %al, 4(%rdi)
   1538 ; SSE42-NEXT:    pextrb $4, %xmm2, %eax
   1539 ; SSE42-NEXT:    andb $1, %al
   1540 ; SSE42-NEXT:    movb %al, 4(%rdi)
   1541 ; SSE42-NEXT:    pextrb $3, %xmm2, %eax
   1542 ; SSE42-NEXT:    andb $1, %al
   1543 ; SSE42-NEXT:    movb %al, 4(%rdi)
   1544 ; SSE42-NEXT:    pextrb $2, %xmm2, %eax
   1545 ; SSE42-NEXT:    andb $1, %al
   1546 ; SSE42-NEXT:    movb %al, 4(%rdi)
   1547 ; SSE42-NEXT:    pextrb $1, %xmm2, %eax
   1548 ; SSE42-NEXT:    andb $1, %al
   1549 ; SSE42-NEXT:    movb %al, 4(%rdi)
   1550 ; SSE42-NEXT:    pextrb $0, %xmm2, %eax
   1551 ; SSE42-NEXT:    andb $1, %al
   1552 ; SSE42-NEXT:    movb %al, 4(%rdi)
   1553 ; SSE42-NEXT:    pextrb $15, %xmm1, %eax
   1554 ; SSE42-NEXT:    andb $1, %al
   1555 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1556 ; SSE42-NEXT:    pextrb $14, %xmm1, %eax
   1557 ; SSE42-NEXT:    andb $1, %al
   1558 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1559 ; SSE42-NEXT:    pextrb $13, %xmm1, %eax
   1560 ; SSE42-NEXT:    andb $1, %al
   1561 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1562 ; SSE42-NEXT:    pextrb $12, %xmm1, %eax
   1563 ; SSE42-NEXT:    andb $1, %al
   1564 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1565 ; SSE42-NEXT:    pextrb $11, %xmm1, %eax
   1566 ; SSE42-NEXT:    andb $1, %al
   1567 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1568 ; SSE42-NEXT:    pextrb $10, %xmm1, %eax
   1569 ; SSE42-NEXT:    andb $1, %al
   1570 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1571 ; SSE42-NEXT:    pextrb $9, %xmm1, %eax
   1572 ; SSE42-NEXT:    andb $1, %al
   1573 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1574 ; SSE42-NEXT:    pextrb $8, %xmm1, %eax
   1575 ; SSE42-NEXT:    andb $1, %al
   1576 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1577 ; SSE42-NEXT:    pextrb $7, %xmm1, %eax
   1578 ; SSE42-NEXT:    andb $1, %al
   1579 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1580 ; SSE42-NEXT:    pextrb $6, %xmm1, %eax
   1581 ; SSE42-NEXT:    andb $1, %al
   1582 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1583 ; SSE42-NEXT:    pextrb $5, %xmm1, %eax
   1584 ; SSE42-NEXT:    andb $1, %al
   1585 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1586 ; SSE42-NEXT:    pextrb $4, %xmm1, %eax
   1587 ; SSE42-NEXT:    andb $1, %al
   1588 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1589 ; SSE42-NEXT:    pextrb $3, %xmm1, %eax
   1590 ; SSE42-NEXT:    andb $1, %al
   1591 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1592 ; SSE42-NEXT:    pextrb $2, %xmm1, %eax
   1593 ; SSE42-NEXT:    andb $1, %al
   1594 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1595 ; SSE42-NEXT:    pextrb $1, %xmm1, %eax
   1596 ; SSE42-NEXT:    andb $1, %al
   1597 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1598 ; SSE42-NEXT:    pextrb $0, %xmm1, %eax
   1599 ; SSE42-NEXT:    andb $1, %al
   1600 ; SSE42-NEXT:    movb %al, 2(%rdi)
   1601 ; SSE42-NEXT:    pextrb $15, %xmm0, %eax
   1602 ; SSE42-NEXT:    andb $1, %al
   1603 ; SSE42-NEXT:    movb %al, (%rdi)
   1604 ; SSE42-NEXT:    pextrb $14, %xmm0, %eax
   1605 ; SSE42-NEXT:    andb $1, %al
   1606 ; SSE42-NEXT:    movb %al, (%rdi)
   1607 ; SSE42-NEXT:    pextrb $13, %xmm0, %eax
   1608 ; SSE42-NEXT:    andb $1, %al
   1609 ; SSE42-NEXT:    movb %al, (%rdi)
   1610 ; SSE42-NEXT:    pextrb $12, %xmm0, %eax
   1611 ; SSE42-NEXT:    andb $1, %al
   1612 ; SSE42-NEXT:    movb %al, (%rdi)
   1613 ; SSE42-NEXT:    pextrb $11, %xmm0, %eax
   1614 ; SSE42-NEXT:    andb $1, %al
   1615 ; SSE42-NEXT:    movb %al, (%rdi)
   1616 ; SSE42-NEXT:    pextrb $10, %xmm0, %eax
   1617 ; SSE42-NEXT:    andb $1, %al
   1618 ; SSE42-NEXT:    movb %al, (%rdi)
   1619 ; SSE42-NEXT:    pextrb $9, %xmm0, %eax
   1620 ; SSE42-NEXT:    andb $1, %al
   1621 ; SSE42-NEXT:    movb %al, (%rdi)
   1622 ; SSE42-NEXT:    pextrb $8, %xmm0, %eax
   1623 ; SSE42-NEXT:    andb $1, %al
   1624 ; SSE42-NEXT:    movb %al, (%rdi)
   1625 ; SSE42-NEXT:    pextrb $7, %xmm0, %eax
   1626 ; SSE42-NEXT:    andb $1, %al
   1627 ; SSE42-NEXT:    movb %al, (%rdi)
   1628 ; SSE42-NEXT:    pextrb $6, %xmm0, %eax
   1629 ; SSE42-NEXT:    andb $1, %al
   1630 ; SSE42-NEXT:    movb %al, (%rdi)
   1631 ; SSE42-NEXT:    pextrb $5, %xmm0, %eax
   1632 ; SSE42-NEXT:    andb $1, %al
   1633 ; SSE42-NEXT:    movb %al, (%rdi)
   1634 ; SSE42-NEXT:    pextrb $4, %xmm0, %eax
   1635 ; SSE42-NEXT:    andb $1, %al
   1636 ; SSE42-NEXT:    movb %al, (%rdi)
   1637 ; SSE42-NEXT:    pextrb $3, %xmm0, %eax
   1638 ; SSE42-NEXT:    andb $1, %al
   1639 ; SSE42-NEXT:    movb %al, (%rdi)
   1640 ; SSE42-NEXT:    pextrb $2, %xmm0, %eax
   1641 ; SSE42-NEXT:    andb $1, %al
   1642 ; SSE42-NEXT:    movb %al, (%rdi)
   1643 ; SSE42-NEXT:    pextrb $1, %xmm0, %eax
   1644 ; SSE42-NEXT:    andb $1, %al
   1645 ; SSE42-NEXT:    movb %al, (%rdi)
   1646 ; SSE42-NEXT:    pextrb $0, %xmm0, %eax
   1647 ; SSE42-NEXT:    andb $1, %al
   1648 ; SSE42-NEXT:    movb %al, (%rdi)
   1649 ; SSE42-NEXT:    movq %rdi, %rax
   1650 ; SSE42-NEXT:    retq
   1651 ;
   1652 ; AVX1-LABEL: test_cmp_v64i8:
   1653 ; AVX1:       # BB#0:
   1654 ; AVX1-NEXT:    vpcmpgtb %xmm2, %xmm0, %xmm4
   1655 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm2
   1656 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
   1657 ; AVX1-NEXT:    vpcmpgtb %xmm2, %xmm0, %xmm0
   1658 ; AVX1-NEXT:    vpcmpgtb %xmm3, %xmm1, %xmm2
   1659 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm3
   1660 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm1
   1661 ; AVX1-NEXT:    vpcmpgtb %xmm3, %xmm1, %xmm1
   1662 ; AVX1-NEXT:    vpextrb $15, %xmm1, %eax
   1663 ; AVX1-NEXT:    andb $1, %al
   1664 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1665 ; AVX1-NEXT:    vpextrb $14, %xmm1, %eax
   1666 ; AVX1-NEXT:    andb $1, %al
   1667 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1668 ; AVX1-NEXT:    vpextrb $13, %xmm1, %eax
   1669 ; AVX1-NEXT:    andb $1, %al
   1670 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1671 ; AVX1-NEXT:    vpextrb $12, %xmm1, %eax
   1672 ; AVX1-NEXT:    andb $1, %al
   1673 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1674 ; AVX1-NEXT:    vpextrb $11, %xmm1, %eax
   1675 ; AVX1-NEXT:    andb $1, %al
   1676 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1677 ; AVX1-NEXT:    vpextrb $10, %xmm1, %eax
   1678 ; AVX1-NEXT:    andb $1, %al
   1679 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1680 ; AVX1-NEXT:    vpextrb $9, %xmm1, %eax
   1681 ; AVX1-NEXT:    andb $1, %al
   1682 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1683 ; AVX1-NEXT:    vpextrb $8, %xmm1, %eax
   1684 ; AVX1-NEXT:    andb $1, %al
   1685 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1686 ; AVX1-NEXT:    vpextrb $7, %xmm1, %eax
   1687 ; AVX1-NEXT:    andb $1, %al
   1688 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1689 ; AVX1-NEXT:    vpextrb $6, %xmm1, %eax
   1690 ; AVX1-NEXT:    andb $1, %al
   1691 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1692 ; AVX1-NEXT:    vpextrb $5, %xmm1, %eax
   1693 ; AVX1-NEXT:    andb $1, %al
   1694 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1695 ; AVX1-NEXT:    vpextrb $4, %xmm1, %eax
   1696 ; AVX1-NEXT:    andb $1, %al
   1697 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1698 ; AVX1-NEXT:    vpextrb $3, %xmm1, %eax
   1699 ; AVX1-NEXT:    andb $1, %al
   1700 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1701 ; AVX1-NEXT:    vpextrb $2, %xmm1, %eax
   1702 ; AVX1-NEXT:    andb $1, %al
   1703 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1704 ; AVX1-NEXT:    vpextrb $1, %xmm1, %eax
   1705 ; AVX1-NEXT:    andb $1, %al
   1706 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1707 ; AVX1-NEXT:    vpextrb $0, %xmm1, %eax
   1708 ; AVX1-NEXT:    andb $1, %al
   1709 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1710 ; AVX1-NEXT:    vpextrb $15, %xmm2, %eax
   1711 ; AVX1-NEXT:    andb $1, %al
   1712 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1713 ; AVX1-NEXT:    vpextrb $14, %xmm2, %eax
   1714 ; AVX1-NEXT:    andb $1, %al
   1715 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1716 ; AVX1-NEXT:    vpextrb $13, %xmm2, %eax
   1717 ; AVX1-NEXT:    andb $1, %al
   1718 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1719 ; AVX1-NEXT:    vpextrb $12, %xmm2, %eax
   1720 ; AVX1-NEXT:    andb $1, %al
   1721 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1722 ; AVX1-NEXT:    vpextrb $11, %xmm2, %eax
   1723 ; AVX1-NEXT:    andb $1, %al
   1724 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1725 ; AVX1-NEXT:    vpextrb $10, %xmm2, %eax
   1726 ; AVX1-NEXT:    andb $1, %al
   1727 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1728 ; AVX1-NEXT:    vpextrb $9, %xmm2, %eax
   1729 ; AVX1-NEXT:    andb $1, %al
   1730 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1731 ; AVX1-NEXT:    vpextrb $8, %xmm2, %eax
   1732 ; AVX1-NEXT:    andb $1, %al
   1733 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1734 ; AVX1-NEXT:    vpextrb $7, %xmm2, %eax
   1735 ; AVX1-NEXT:    andb $1, %al
   1736 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1737 ; AVX1-NEXT:    vpextrb $6, %xmm2, %eax
   1738 ; AVX1-NEXT:    andb $1, %al
   1739 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1740 ; AVX1-NEXT:    vpextrb $5, %xmm2, %eax
   1741 ; AVX1-NEXT:    andb $1, %al
   1742 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1743 ; AVX1-NEXT:    vpextrb $4, %xmm2, %eax
   1744 ; AVX1-NEXT:    andb $1, %al
   1745 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1746 ; AVX1-NEXT:    vpextrb $3, %xmm2, %eax
   1747 ; AVX1-NEXT:    andb $1, %al
   1748 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1749 ; AVX1-NEXT:    vpextrb $2, %xmm2, %eax
   1750 ; AVX1-NEXT:    andb $1, %al
   1751 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1752 ; AVX1-NEXT:    vpextrb $1, %xmm2, %eax
   1753 ; AVX1-NEXT:    andb $1, %al
   1754 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1755 ; AVX1-NEXT:    vpextrb $0, %xmm2, %eax
   1756 ; AVX1-NEXT:    andb $1, %al
   1757 ; AVX1-NEXT:    movb %al, 4(%rdi)
   1758 ; AVX1-NEXT:    vpextrb $15, %xmm0, %eax
   1759 ; AVX1-NEXT:    andb $1, %al
   1760 ; AVX1-NEXT:    movb %al, (%rdi)
   1761 ; AVX1-NEXT:    vpextrb $14, %xmm0, %eax
   1762 ; AVX1-NEXT:    andb $1, %al
   1763 ; AVX1-NEXT:    movb %al, (%rdi)
   1764 ; AVX1-NEXT:    vpextrb $13, %xmm0, %eax
   1765 ; AVX1-NEXT:    andb $1, %al
   1766 ; AVX1-NEXT:    movb %al, (%rdi)
   1767 ; AVX1-NEXT:    vpextrb $12, %xmm0, %eax
   1768 ; AVX1-NEXT:    andb $1, %al
   1769 ; AVX1-NEXT:    movb %al, (%rdi)
   1770 ; AVX1-NEXT:    vpextrb $11, %xmm0, %eax
   1771 ; AVX1-NEXT:    andb $1, %al
   1772 ; AVX1-NEXT:    movb %al, (%rdi)
   1773 ; AVX1-NEXT:    vpextrb $10, %xmm0, %eax
   1774 ; AVX1-NEXT:    andb $1, %al
   1775 ; AVX1-NEXT:    movb %al, (%rdi)
   1776 ; AVX1-NEXT:    vpextrb $9, %xmm0, %eax
   1777 ; AVX1-NEXT:    andb $1, %al
   1778 ; AVX1-NEXT:    movb %al, (%rdi)
   1779 ; AVX1-NEXT:    vpextrb $8, %xmm0, %eax
   1780 ; AVX1-NEXT:    andb $1, %al
   1781 ; AVX1-NEXT:    movb %al, (%rdi)
   1782 ; AVX1-NEXT:    vpextrb $7, %xmm0, %eax
   1783 ; AVX1-NEXT:    andb $1, %al
   1784 ; AVX1-NEXT:    movb %al, (%rdi)
   1785 ; AVX1-NEXT:    vpextrb $6, %xmm0, %eax
   1786 ; AVX1-NEXT:    andb $1, %al
   1787 ; AVX1-NEXT:    movb %al, (%rdi)
   1788 ; AVX1-NEXT:    vpextrb $5, %xmm0, %eax
   1789 ; AVX1-NEXT:    andb $1, %al
   1790 ; AVX1-NEXT:    movb %al, (%rdi)
   1791 ; AVX1-NEXT:    vpextrb $4, %xmm0, %eax
   1792 ; AVX1-NEXT:    andb $1, %al
   1793 ; AVX1-NEXT:    movb %al, (%rdi)
   1794 ; AVX1-NEXT:    vpextrb $3, %xmm0, %eax
   1795 ; AVX1-NEXT:    andb $1, %al
   1796 ; AVX1-NEXT:    movb %al, (%rdi)
   1797 ; AVX1-NEXT:    vpextrb $2, %xmm0, %eax
   1798 ; AVX1-NEXT:    andb $1, %al
   1799 ; AVX1-NEXT:    movb %al, (%rdi)
   1800 ; AVX1-NEXT:    vpextrb $1, %xmm0, %eax
   1801 ; AVX1-NEXT:    andb $1, %al
   1802 ; AVX1-NEXT:    movb %al, (%rdi)
   1803 ; AVX1-NEXT:    vpextrb $0, %xmm0, %eax
   1804 ; AVX1-NEXT:    andb $1, %al
   1805 ; AVX1-NEXT:    movb %al, (%rdi)
   1806 ; AVX1-NEXT:    vpextrb $15, %xmm4, %eax
   1807 ; AVX1-NEXT:    andb $1, %al
   1808 ; AVX1-NEXT:    movb %al, (%rdi)
   1809 ; AVX1-NEXT:    vpextrb $14, %xmm4, %eax
   1810 ; AVX1-NEXT:    andb $1, %al
   1811 ; AVX1-NEXT:    movb %al, (%rdi)
   1812 ; AVX1-NEXT:    vpextrb $13, %xmm4, %eax
   1813 ; AVX1-NEXT:    andb $1, %al
   1814 ; AVX1-NEXT:    movb %al, (%rdi)
   1815 ; AVX1-NEXT:    vpextrb $12, %xmm4, %eax
   1816 ; AVX1-NEXT:    andb $1, %al
   1817 ; AVX1-NEXT:    movb %al, (%rdi)
   1818 ; AVX1-NEXT:    vpextrb $11, %xmm4, %eax
   1819 ; AVX1-NEXT:    andb $1, %al
   1820 ; AVX1-NEXT:    movb %al, (%rdi)
   1821 ; AVX1-NEXT:    vpextrb $10, %xmm4, %eax
   1822 ; AVX1-NEXT:    andb $1, %al
   1823 ; AVX1-NEXT:    movb %al, (%rdi)
   1824 ; AVX1-NEXT:    vpextrb $9, %xmm4, %eax
   1825 ; AVX1-NEXT:    andb $1, %al
   1826 ; AVX1-NEXT:    movb %al, (%rdi)
   1827 ; AVX1-NEXT:    vpextrb $8, %xmm4, %eax
   1828 ; AVX1-NEXT:    andb $1, %al
   1829 ; AVX1-NEXT:    movb %al, (%rdi)
   1830 ; AVX1-NEXT:    vpextrb $7, %xmm4, %eax
   1831 ; AVX1-NEXT:    andb $1, %al
   1832 ; AVX1-NEXT:    movb %al, (%rdi)
   1833 ; AVX1-NEXT:    vpextrb $6, %xmm4, %eax
   1834 ; AVX1-NEXT:    andb $1, %al
   1835 ; AVX1-NEXT:    movb %al, (%rdi)
   1836 ; AVX1-NEXT:    vpextrb $5, %xmm4, %eax
   1837 ; AVX1-NEXT:    andb $1, %al
   1838 ; AVX1-NEXT:    movb %al, (%rdi)
   1839 ; AVX1-NEXT:    vpextrb $4, %xmm4, %eax
   1840 ; AVX1-NEXT:    andb $1, %al
   1841 ; AVX1-NEXT:    movb %al, (%rdi)
   1842 ; AVX1-NEXT:    vpextrb $3, %xmm4, %eax
   1843 ; AVX1-NEXT:    andb $1, %al
   1844 ; AVX1-NEXT:    movb %al, (%rdi)
   1845 ; AVX1-NEXT:    vpextrb $2, %xmm4, %eax
   1846 ; AVX1-NEXT:    andb $1, %al
   1847 ; AVX1-NEXT:    movb %al, (%rdi)
   1848 ; AVX1-NEXT:    vpextrb $1, %xmm4, %eax
   1849 ; AVX1-NEXT:    andb $1, %al
   1850 ; AVX1-NEXT:    movb %al, (%rdi)
   1851 ; AVX1-NEXT:    vpextrb $0, %xmm4, %eax
   1852 ; AVX1-NEXT:    andb $1, %al
   1853 ; AVX1-NEXT:    movb %al, (%rdi)
   1854 ; AVX1-NEXT:    movq %rdi, %rax
   1855 ; AVX1-NEXT:    vzeroupper
   1856 ; AVX1-NEXT:    retq
   1857 ;
   1858 ; AVX2-LABEL: test_cmp_v64i8:
   1859 ; AVX2:       # BB#0:
   1860 ; AVX2-NEXT:    vpcmpgtb %ymm2, %ymm0, %ymm0
   1861 ; AVX2-NEXT:    vpcmpgtb %ymm3, %ymm1, %ymm1
   1862 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   1863 ; AVX2-NEXT:    vpextrb $15, %xmm2, %eax
   1864 ; AVX2-NEXT:    andb $1, %al
   1865 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1866 ; AVX2-NEXT:    vpextrb $14, %xmm2, %eax
   1867 ; AVX2-NEXT:    andb $1, %al
   1868 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1869 ; AVX2-NEXT:    vpextrb $13, %xmm2, %eax
   1870 ; AVX2-NEXT:    andb $1, %al
   1871 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1872 ; AVX2-NEXT:    vpextrb $12, %xmm2, %eax
   1873 ; AVX2-NEXT:    andb $1, %al
   1874 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1875 ; AVX2-NEXT:    vpextrb $11, %xmm2, %eax
   1876 ; AVX2-NEXT:    andb $1, %al
   1877 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1878 ; AVX2-NEXT:    vpextrb $10, %xmm2, %eax
   1879 ; AVX2-NEXT:    andb $1, %al
   1880 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1881 ; AVX2-NEXT:    vpextrb $9, %xmm2, %eax
   1882 ; AVX2-NEXT:    andb $1, %al
   1883 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1884 ; AVX2-NEXT:    vpextrb $8, %xmm2, %eax
   1885 ; AVX2-NEXT:    andb $1, %al
   1886 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1887 ; AVX2-NEXT:    vpextrb $7, %xmm2, %eax
   1888 ; AVX2-NEXT:    andb $1, %al
   1889 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1890 ; AVX2-NEXT:    vpextrb $6, %xmm2, %eax
   1891 ; AVX2-NEXT:    andb $1, %al
   1892 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1893 ; AVX2-NEXT:    vpextrb $5, %xmm2, %eax
   1894 ; AVX2-NEXT:    andb $1, %al
   1895 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1896 ; AVX2-NEXT:    vpextrb $4, %xmm2, %eax
   1897 ; AVX2-NEXT:    andb $1, %al
   1898 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1899 ; AVX2-NEXT:    vpextrb $3, %xmm2, %eax
   1900 ; AVX2-NEXT:    andb $1, %al
   1901 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1902 ; AVX2-NEXT:    vpextrb $2, %xmm2, %eax
   1903 ; AVX2-NEXT:    andb $1, %al
   1904 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1905 ; AVX2-NEXT:    vpextrb $1, %xmm2, %eax
   1906 ; AVX2-NEXT:    andb $1, %al
   1907 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1908 ; AVX2-NEXT:    vpextrb $0, %xmm2, %eax
   1909 ; AVX2-NEXT:    andb $1, %al
   1910 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1911 ; AVX2-NEXT:    vpextrb $15, %xmm1, %eax
   1912 ; AVX2-NEXT:    andb $1, %al
   1913 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1914 ; AVX2-NEXT:    vpextrb $14, %xmm1, %eax
   1915 ; AVX2-NEXT:    andb $1, %al
   1916 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1917 ; AVX2-NEXT:    vpextrb $13, %xmm1, %eax
   1918 ; AVX2-NEXT:    andb $1, %al
   1919 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1920 ; AVX2-NEXT:    vpextrb $12, %xmm1, %eax
   1921 ; AVX2-NEXT:    andb $1, %al
   1922 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1923 ; AVX2-NEXT:    vpextrb $11, %xmm1, %eax
   1924 ; AVX2-NEXT:    andb $1, %al
   1925 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1926 ; AVX2-NEXT:    vpextrb $10, %xmm1, %eax
   1927 ; AVX2-NEXT:    andb $1, %al
   1928 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1929 ; AVX2-NEXT:    vpextrb $9, %xmm1, %eax
   1930 ; AVX2-NEXT:    andb $1, %al
   1931 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1932 ; AVX2-NEXT:    vpextrb $8, %xmm1, %eax
   1933 ; AVX2-NEXT:    andb $1, %al
   1934 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1935 ; AVX2-NEXT:    vpextrb $7, %xmm1, %eax
   1936 ; AVX2-NEXT:    andb $1, %al
   1937 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1938 ; AVX2-NEXT:    vpextrb $6, %xmm1, %eax
   1939 ; AVX2-NEXT:    andb $1, %al
   1940 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1941 ; AVX2-NEXT:    vpextrb $5, %xmm1, %eax
   1942 ; AVX2-NEXT:    andb $1, %al
   1943 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1944 ; AVX2-NEXT:    vpextrb $4, %xmm1, %eax
   1945 ; AVX2-NEXT:    andb $1, %al
   1946 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1947 ; AVX2-NEXT:    vpextrb $3, %xmm1, %eax
   1948 ; AVX2-NEXT:    andb $1, %al
   1949 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1950 ; AVX2-NEXT:    vpextrb $2, %xmm1, %eax
   1951 ; AVX2-NEXT:    andb $1, %al
   1952 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1953 ; AVX2-NEXT:    vpextrb $1, %xmm1, %eax
   1954 ; AVX2-NEXT:    andb $1, %al
   1955 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1956 ; AVX2-NEXT:    vpextrb $0, %xmm1, %eax
   1957 ; AVX2-NEXT:    andb $1, %al
   1958 ; AVX2-NEXT:    movb %al, 4(%rdi)
   1959 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
   1960 ; AVX2-NEXT:    vpextrb $15, %xmm1, %eax
   1961 ; AVX2-NEXT:    andb $1, %al
   1962 ; AVX2-NEXT:    movb %al, (%rdi)
   1963 ; AVX2-NEXT:    vpextrb $14, %xmm1, %eax
   1964 ; AVX2-NEXT:    andb $1, %al
   1965 ; AVX2-NEXT:    movb %al, (%rdi)
   1966 ; AVX2-NEXT:    vpextrb $13, %xmm1, %eax
   1967 ; AVX2-NEXT:    andb $1, %al
   1968 ; AVX2-NEXT:    movb %al, (%rdi)
   1969 ; AVX2-NEXT:    vpextrb $12, %xmm1, %eax
   1970 ; AVX2-NEXT:    andb $1, %al
   1971 ; AVX2-NEXT:    movb %al, (%rdi)
   1972 ; AVX2-NEXT:    vpextrb $11, %xmm1, %eax
   1973 ; AVX2-NEXT:    andb $1, %al
   1974 ; AVX2-NEXT:    movb %al, (%rdi)
   1975 ; AVX2-NEXT:    vpextrb $10, %xmm1, %eax
   1976 ; AVX2-NEXT:    andb $1, %al
   1977 ; AVX2-NEXT:    movb %al, (%rdi)
   1978 ; AVX2-NEXT:    vpextrb $9, %xmm1, %eax
   1979 ; AVX2-NEXT:    andb $1, %al
   1980 ; AVX2-NEXT:    movb %al, (%rdi)
   1981 ; AVX2-NEXT:    vpextrb $8, %xmm1, %eax
   1982 ; AVX2-NEXT:    andb $1, %al
   1983 ; AVX2-NEXT:    movb %al, (%rdi)
   1984 ; AVX2-NEXT:    vpextrb $7, %xmm1, %eax
   1985 ; AVX2-NEXT:    andb $1, %al
   1986 ; AVX2-NEXT:    movb %al, (%rdi)
   1987 ; AVX2-NEXT:    vpextrb $6, %xmm1, %eax
   1988 ; AVX2-NEXT:    andb $1, %al
   1989 ; AVX2-NEXT:    movb %al, (%rdi)
   1990 ; AVX2-NEXT:    vpextrb $5, %xmm1, %eax
   1991 ; AVX2-NEXT:    andb $1, %al
   1992 ; AVX2-NEXT:    movb %al, (%rdi)
   1993 ; AVX2-NEXT:    vpextrb $4, %xmm1, %eax
   1994 ; AVX2-NEXT:    andb $1, %al
   1995 ; AVX2-NEXT:    movb %al, (%rdi)
   1996 ; AVX2-NEXT:    vpextrb $3, %xmm1, %eax
   1997 ; AVX2-NEXT:    andb $1, %al
   1998 ; AVX2-NEXT:    movb %al, (%rdi)
   1999 ; AVX2-NEXT:    vpextrb $2, %xmm1, %eax
   2000 ; AVX2-NEXT:    andb $1, %al
   2001 ; AVX2-NEXT:    movb %al, (%rdi)
   2002 ; AVX2-NEXT:    vpextrb $1, %xmm1, %eax
   2003 ; AVX2-NEXT:    andb $1, %al
   2004 ; AVX2-NEXT:    movb %al, (%rdi)
   2005 ; AVX2-NEXT:    vpextrb $0, %xmm1, %eax
   2006 ; AVX2-NEXT:    andb $1, %al
   2007 ; AVX2-NEXT:    movb %al, (%rdi)
   2008 ; AVX2-NEXT:    vpextrb $15, %xmm0, %eax
   2009 ; AVX2-NEXT:    andb $1, %al
   2010 ; AVX2-NEXT:    movb %al, (%rdi)
   2011 ; AVX2-NEXT:    vpextrb $14, %xmm0, %eax
   2012 ; AVX2-NEXT:    andb $1, %al
   2013 ; AVX2-NEXT:    movb %al, (%rdi)
   2014 ; AVX2-NEXT:    vpextrb $13, %xmm0, %eax
   2015 ; AVX2-NEXT:    andb $1, %al
   2016 ; AVX2-NEXT:    movb %al, (%rdi)
   2017 ; AVX2-NEXT:    vpextrb $12, %xmm0, %eax
   2018 ; AVX2-NEXT:    andb $1, %al
   2019 ; AVX2-NEXT:    movb %al, (%rdi)
   2020 ; AVX2-NEXT:    vpextrb $11, %xmm0, %eax
   2021 ; AVX2-NEXT:    andb $1, %al
   2022 ; AVX2-NEXT:    movb %al, (%rdi)
   2023 ; AVX2-NEXT:    vpextrb $10, %xmm0, %eax
   2024 ; AVX2-NEXT:    andb $1, %al
   2025 ; AVX2-NEXT:    movb %al, (%rdi)
   2026 ; AVX2-NEXT:    vpextrb $9, %xmm0, %eax
   2027 ; AVX2-NEXT:    andb $1, %al
   2028 ; AVX2-NEXT:    movb %al, (%rdi)
   2029 ; AVX2-NEXT:    vpextrb $8, %xmm0, %eax
   2030 ; AVX2-NEXT:    andb $1, %al
   2031 ; AVX2-NEXT:    movb %al, (%rdi)
   2032 ; AVX2-NEXT:    vpextrb $7, %xmm0, %eax
   2033 ; AVX2-NEXT:    andb $1, %al
   2034 ; AVX2-NEXT:    movb %al, (%rdi)
   2035 ; AVX2-NEXT:    vpextrb $6, %xmm0, %eax
   2036 ; AVX2-NEXT:    andb $1, %al
   2037 ; AVX2-NEXT:    movb %al, (%rdi)
   2038 ; AVX2-NEXT:    vpextrb $5, %xmm0, %eax
   2039 ; AVX2-NEXT:    andb $1, %al
   2040 ; AVX2-NEXT:    movb %al, (%rdi)
   2041 ; AVX2-NEXT:    vpextrb $4, %xmm0, %eax
   2042 ; AVX2-NEXT:    andb $1, %al
   2043 ; AVX2-NEXT:    movb %al, (%rdi)
   2044 ; AVX2-NEXT:    vpextrb $3, %xmm0, %eax
   2045 ; AVX2-NEXT:    andb $1, %al
   2046 ; AVX2-NEXT:    movb %al, (%rdi)
   2047 ; AVX2-NEXT:    vpextrb $2, %xmm0, %eax
   2048 ; AVX2-NEXT:    andb $1, %al
   2049 ; AVX2-NEXT:    movb %al, (%rdi)
   2050 ; AVX2-NEXT:    vpextrb $1, %xmm0, %eax
   2051 ; AVX2-NEXT:    andb $1, %al
   2052 ; AVX2-NEXT:    movb %al, (%rdi)
   2053 ; AVX2-NEXT:    vpextrb $0, %xmm0, %eax
   2054 ; AVX2-NEXT:    andb $1, %al
   2055 ; AVX2-NEXT:    movb %al, (%rdi)
   2056 ; AVX2-NEXT:    movq %rdi, %rax
   2057 ; AVX2-NEXT:    vzeroupper
   2058 ; AVX2-NEXT:    retq
   2059 ;
   2060 ; AVX512-LABEL: test_cmp_v64i8:
   2061 ; AVX512:       # BB#0:
   2062 ; AVX512-NEXT:    vpcmpgtb %ymm3, %ymm1, %ymm3
   2063 ; AVX512-NEXT:    vpcmpgtb %ymm2, %ymm0, %ymm1
   2064 ; AVX512-NEXT:    vpsllw $7, %xmm1, %xmm0
   2065 ; AVX512-NEXT:    vmovdqa {{.*#+}} xmm4 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128]
   2066 ; AVX512-NEXT:    vpand %xmm4, %xmm0, %xmm0
   2067 ; AVX512-NEXT:    vpxor %xmm5, %xmm5, %xmm5
   2068 ; AVX512-NEXT:    vpcmpgtb %xmm0, %xmm5, %xmm0
   2069 ; AVX512-NEXT:    vextracti128 $1, %ymm1, %xmm1
   2070 ; AVX512-NEXT:    vpsllw $7, %xmm1, %xmm1
   2071 ; AVX512-NEXT:    vpand %xmm4, %xmm1, %xmm1
   2072 ; AVX512-NEXT:    vpcmpgtb %xmm1, %xmm5, %xmm1
   2073 ; AVX512-NEXT:    vpsllw $7, %xmm3, %xmm2
   2074 ; AVX512-NEXT:    vpand %xmm4, %xmm2, %xmm2
   2075 ; AVX512-NEXT:    vpcmpgtb %xmm2, %xmm5, %xmm2
   2076 ; AVX512-NEXT:    vextracti128 $1, %ymm3, %xmm3
   2077 ; AVX512-NEXT:    vpsllw $7, %xmm3, %xmm3
   2078 ; AVX512-NEXT:    vpand %xmm4, %xmm3, %xmm3
   2079 ; AVX512-NEXT:    vpcmpgtb %xmm3, %xmm5, %xmm3
   2080 ; AVX512-NEXT:    retq
   2081   %1 = icmp sgt <64 x i8> %a0, %a1
   2082   ret <64 x i1> %1
   2083 }
   2084 
   2085 ;
   2086 ; 1024-bit vector comparisons
   2087 ;
   2088 
   2089 define <16 x i1> @test_cmp_v16f64(<16 x double> %a0, <16 x double> %a1) nounwind {
   2090 ; SSE-LABEL: test_cmp_v16f64:
   2091 ; SSE:       # BB#0:
   2092 ; SSE-NEXT:    movapd %xmm0, %xmm8
   2093 ; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm0
   2094 ; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm11
   2095 ; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm10
   2096 ; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm12
   2097 ; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm9
   2098 ; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm13
   2099 ; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm14
   2100 ; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm15
   2101 ; SSE-NEXT:    cmpltpd %xmm7, %xmm15
   2102 ; SSE-NEXT:    movapd {{.*#+}} xmm7 = [255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0]
   2103 ; SSE-NEXT:    andpd %xmm7, %xmm15
   2104 ; SSE-NEXT:    cmpltpd %xmm6, %xmm14
   2105 ; SSE-NEXT:    andpd %xmm7, %xmm14
   2106 ; SSE-NEXT:    packuswb %xmm15, %xmm14
   2107 ; SSE-NEXT:    cmpltpd %xmm5, %xmm13
   2108 ; SSE-NEXT:    andpd %xmm7, %xmm13
   2109 ; SSE-NEXT:    cmpltpd %xmm4, %xmm9
   2110 ; SSE-NEXT:    andpd %xmm7, %xmm9
   2111 ; SSE-NEXT:    packuswb %xmm13, %xmm9
   2112 ; SSE-NEXT:    packuswb %xmm14, %xmm9
   2113 ; SSE-NEXT:    cmpltpd %xmm3, %xmm12
   2114 ; SSE-NEXT:    andpd %xmm7, %xmm12
   2115 ; SSE-NEXT:    cmpltpd %xmm2, %xmm10
   2116 ; SSE-NEXT:    andpd %xmm7, %xmm10
   2117 ; SSE-NEXT:    packuswb %xmm12, %xmm10
   2118 ; SSE-NEXT:    cmpltpd %xmm1, %xmm11
   2119 ; SSE-NEXT:    andpd %xmm7, %xmm11
   2120 ; SSE-NEXT:    cmpltpd %xmm8, %xmm0
   2121 ; SSE-NEXT:    andpd %xmm7, %xmm0
   2122 ; SSE-NEXT:    packuswb %xmm11, %xmm0
   2123 ; SSE-NEXT:    packuswb %xmm10, %xmm0
   2124 ; SSE-NEXT:    packuswb %xmm9, %xmm0
   2125 ; SSE-NEXT:    retq
   2126 ;
   2127 ; AVX1-LABEL: test_cmp_v16f64:
   2128 ; AVX1:       # BB#0:
   2129 ; AVX1-NEXT:    vcmpltpd %ymm3, %ymm7, %ymm3
   2130 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm8
   2131 ; AVX1-NEXT:    vmovapd {{.*#+}} xmm7 = [255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0]
   2132 ; AVX1-NEXT:    vandpd %xmm7, %xmm8, %xmm8
   2133 ; AVX1-NEXT:    vandpd %xmm7, %xmm3, %xmm3
   2134 ; AVX1-NEXT:    vpackuswb %xmm8, %xmm3, %xmm3
   2135 ; AVX1-NEXT:    vcmpltpd %ymm2, %ymm6, %ymm2
   2136 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm6
   2137 ; AVX1-NEXT:    vandpd %xmm7, %xmm6, %xmm6
   2138 ; AVX1-NEXT:    vandpd %xmm7, %xmm2, %xmm2
   2139 ; AVX1-NEXT:    vpackuswb %xmm6, %xmm2, %xmm2
   2140 ; AVX1-NEXT:    vpackuswb %xmm3, %xmm2, %xmm2
   2141 ; AVX1-NEXT:    vcmpltpd %ymm1, %ymm5, %ymm1
   2142 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   2143 ; AVX1-NEXT:    vandpd %xmm7, %xmm3, %xmm3
   2144 ; AVX1-NEXT:    vandpd %xmm7, %xmm1, %xmm1
   2145 ; AVX1-NEXT:    vpackuswb %xmm3, %xmm1, %xmm1
   2146 ; AVX1-NEXT:    vcmpltpd %ymm0, %ymm4, %ymm0
   2147 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
   2148 ; AVX1-NEXT:    vandpd %xmm7, %xmm3, %xmm3
   2149 ; AVX1-NEXT:    vandpd %xmm7, %xmm0, %xmm0
   2150 ; AVX1-NEXT:    vpackuswb %xmm3, %xmm0, %xmm0
   2151 ; AVX1-NEXT:    vpackuswb %xmm1, %xmm0, %xmm0
   2152 ; AVX1-NEXT:    vpackuswb %xmm2, %xmm0, %xmm0
   2153 ; AVX1-NEXT:    vzeroupper
   2154 ; AVX1-NEXT:    retq
   2155 ;
   2156 ; AVX2-LABEL: test_cmp_v16f64:
   2157 ; AVX2:       # BB#0:
   2158 ; AVX2-NEXT:    vcmpltpd %ymm2, %ymm6, %ymm2
   2159 ; AVX2-NEXT:    vpermilps {{.*#+}} ymm2 = ymm2[0,2,0,2,4,6,4,6]
   2160 ; AVX2-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,3,2,3]
   2161 ; AVX2-NEXT:    vcmpltpd %ymm3, %ymm7, %ymm3
   2162 ; AVX2-NEXT:    vpermilps {{.*#+}} ymm3 = ymm3[0,2,0,2,4,6,4,6]
   2163 ; AVX2-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,3,2,3]
   2164 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm2
   2165 ; AVX2-NEXT:    vmovdqa {{.*#+}} ymm3 = [0,1,4,5,8,9,12,13,128,128,128,128,128,128,128,128,0,1,4,5,8,9,12,13,128,128,128,128,128,128,128,128]
   2166 ; AVX2-NEXT:    vpshufb %ymm3, %ymm2, %ymm2
   2167 ; AVX2-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,2,2,3]
   2168 ; AVX2-NEXT:    vmovdqa {{.*#+}} xmm6 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
   2169 ; AVX2-NEXT:    vpshufb %xmm6, %xmm2, %xmm2
   2170 ; AVX2-NEXT:    vcmpltpd %ymm0, %ymm4, %ymm0
   2171 ; AVX2-NEXT:    vpermilps {{.*#+}} ymm0 = ymm0[0,2,0,2,4,6,4,6]
   2172 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,2,3]
   2173 ; AVX2-NEXT:    vcmpltpd %ymm1, %ymm5, %ymm1
   2174 ; AVX2-NEXT:    vpermilps {{.*#+}} ymm1 = ymm1[0,2,0,2,4,6,4,6]
   2175 ; AVX2-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,3,2,3]
   2176 ; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   2177 ; AVX2-NEXT:    vpshufb %ymm3, %ymm0, %ymm0
   2178 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,2,3]
   2179 ; AVX2-NEXT:    vpshufb %xmm6, %xmm0, %xmm0
   2180 ; AVX2-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
   2181 ; AVX2-NEXT:    vzeroupper
   2182 ; AVX2-NEXT:    retq
   2183 ;
   2184 ; AVX512-LABEL: test_cmp_v16f64:
   2185 ; AVX512:       # BB#0:
   2186 ; AVX512-NEXT:    vextractf32x4 $3, %zmm2, %xmm4
   2187 ; AVX512-NEXT:    vextractf32x4 $3, %zmm0, %xmm5
   2188 ; AVX512-NEXT:    xorl %eax, %eax
   2189 ; AVX512-NEXT:    vucomisd %xmm4, %xmm5
   2190 ; AVX512-NEXT:    movq $-1, %rcx
   2191 ; AVX512-NEXT:    movl $0, %edx
   2192 ; AVX512-NEXT:    cmovaq %rcx, %rdx
   2193 ; AVX512-NEXT:    vmovq %rdx, %xmm6
   2194 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm4 = xmm4[1,0]
   2195 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm5 = xmm5[1,0]
   2196 ; AVX512-NEXT:    vucomisd %xmm4, %xmm5
   2197 ; AVX512-NEXT:    movl $0, %edx
   2198 ; AVX512-NEXT:    cmovaq %rcx, %rdx
   2199 ; AVX512-NEXT:    vmovq %rdx, %xmm4
   2200 ; AVX512-NEXT:    vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0]
   2201 ; AVX512-NEXT:    vextractf32x4 $2, %zmm2, %xmm5
   2202 ; AVX512-NEXT:    vextractf32x4 $2, %zmm0, %xmm6
   2203 ; AVX512-NEXT:    vucomisd %xmm5, %xmm6
   2204 ; AVX512-NEXT:    movl $0, %edx
   2205 ; AVX512-NEXT:    cmovaq %rcx, %rdx
   2206 ; AVX512-NEXT:    vmovq %rdx, %xmm7
   2207 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm5 = xmm5[1,0]
   2208 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm6 = xmm6[1,0]
   2209 ; AVX512-NEXT:    vucomisd %xmm5, %xmm6
   2210 ; AVX512-NEXT:    movl $0, %edx
   2211 ; AVX512-NEXT:    cmovaq %rcx, %rdx
   2212 ; AVX512-NEXT:    vmovq %rdx, %xmm5
   2213 ; AVX512-NEXT:    vpunpcklqdq {{.*#+}} xmm5 = xmm7[0],xmm5[0]
   2214 ; AVX512-NEXT:    vinserti128 $1, %xmm4, %ymm5, %ymm4
   2215 ; AVX512-NEXT:    vextractf32x4 $1, %zmm2, %xmm5
   2216 ; AVX512-NEXT:    vextractf32x4 $1, %zmm0, %xmm6
   2217 ; AVX512-NEXT:    vucomisd %xmm5, %xmm6
   2218 ; AVX512-NEXT:    movl $0, %edx
   2219 ; AVX512-NEXT:    cmovaq %rcx, %rdx
   2220 ; AVX512-NEXT:    vmovq %rdx, %xmm7
   2221 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm5 = xmm5[1,0]
   2222 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm6 = xmm6[1,0]
   2223 ; AVX512-NEXT:    vucomisd %xmm5, %xmm6
   2224 ; AVX512-NEXT:    movl $0, %edx
   2225 ; AVX512-NEXT:    cmovaq %rcx, %rdx
   2226 ; AVX512-NEXT:    vmovq %rdx, %xmm5
   2227 ; AVX512-NEXT:    vpunpcklqdq {{.*#+}} xmm5 = xmm7[0],xmm5[0]
   2228 ; AVX512-NEXT:    vucomisd %xmm2, %xmm0
   2229 ; AVX512-NEXT:    movl $0, %edx
   2230 ; AVX512-NEXT:    cmovaq %rcx, %rdx
   2231 ; AVX512-NEXT:    vmovq %rdx, %xmm6
   2232 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm2 = xmm2[1,0]
   2233 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm0 = xmm0[1,0]
   2234 ; AVX512-NEXT:    vucomisd %xmm2, %xmm0
   2235 ; AVX512-NEXT:    movl $0, %edx
   2236 ; AVX512-NEXT:    cmovaq %rcx, %rdx
   2237 ; AVX512-NEXT:    vmovq %rdx, %xmm0
   2238 ; AVX512-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm6[0],xmm0[0]
   2239 ; AVX512-NEXT:    vinserti128 $1, %xmm5, %ymm0, %ymm0
   2240 ; AVX512-NEXT:    vinserti64x4 $1, %ymm4, %zmm0, %zmm0
   2241 ; AVX512-NEXT:    vpmovqd %zmm0, %ymm0
   2242 ; AVX512-NEXT:    vextractf32x4 $3, %zmm3, %xmm2
   2243 ; AVX512-NEXT:    vextractf32x4 $3, %zmm1, %xmm4
   2244 ; AVX512-NEXT:    vucomisd %xmm2, %xmm4
   2245 ; AVX512-NEXT:    movl $0, %edx
   2246 ; AVX512-NEXT:    cmovaq %rcx, %rdx
   2247 ; AVX512-NEXT:    vmovq %rdx, %xmm5
   2248 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm2 = xmm2[1,0]
   2249 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm4 = xmm4[1,0]
   2250 ; AVX512-NEXT:    vucomisd %xmm2, %xmm4
   2251 ; AVX512-NEXT:    movl $0, %edx
   2252 ; AVX512-NEXT:    cmovaq %rcx, %rdx
   2253 ; AVX512-NEXT:    vmovq %rdx, %xmm2
   2254 ; AVX512-NEXT:    vpunpcklqdq {{.*#+}} xmm2 = xmm5[0],xmm2[0]
   2255 ; AVX512-NEXT:    vextractf32x4 $2, %zmm3, %xmm4
   2256 ; AVX512-NEXT:    vextractf32x4 $2, %zmm1, %xmm5
   2257 ; AVX512-NEXT:    vucomisd %xmm4, %xmm5
   2258 ; AVX512-NEXT:    movl $0, %edx
   2259 ; AVX512-NEXT:    cmovaq %rcx, %rdx
   2260 ; AVX512-NEXT:    vmovq %rdx, %xmm6
   2261 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm4 = xmm4[1,0]
   2262 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm5 = xmm5[1,0]
   2263 ; AVX512-NEXT:    vucomisd %xmm4, %xmm5
   2264 ; AVX512-NEXT:    movl $0, %edx
   2265 ; AVX512-NEXT:    cmovaq %rcx, %rdx
   2266 ; AVX512-NEXT:    vmovq %rdx, %xmm4
   2267 ; AVX512-NEXT:    vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0]
   2268 ; AVX512-NEXT:    vinserti128 $1, %xmm2, %ymm4, %ymm2
   2269 ; AVX512-NEXT:    vextractf32x4 $1, %zmm3, %xmm4
   2270 ; AVX512-NEXT:    vextractf32x4 $1, %zmm1, %xmm5
   2271 ; AVX512-NEXT:    vucomisd %xmm4, %xmm5
   2272 ; AVX512-NEXT:    movl $0, %edx
   2273 ; AVX512-NEXT:    cmovaq %rcx, %rdx
   2274 ; AVX512-NEXT:    vmovq %rdx, %xmm6
   2275 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm4 = xmm4[1,0]
   2276 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm5 = xmm5[1,0]
   2277 ; AVX512-NEXT:    vucomisd %xmm4, %xmm5
   2278 ; AVX512-NEXT:    movl $0, %edx
   2279 ; AVX512-NEXT:    cmovaq %rcx, %rdx
   2280 ; AVX512-NEXT:    vmovq %rdx, %xmm4
   2281 ; AVX512-NEXT:    vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0]
   2282 ; AVX512-NEXT:    vucomisd %xmm3, %xmm1
   2283 ; AVX512-NEXT:    movl $0, %edx
   2284 ; AVX512-NEXT:    cmovaq %rcx, %rdx
   2285 ; AVX512-NEXT:    vmovq %rdx, %xmm5
   2286 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm3 = xmm3[1,0]
   2287 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm1 = xmm1[1,0]
   2288 ; AVX512-NEXT:    vucomisd %xmm3, %xmm1
   2289 ; AVX512-NEXT:    cmovaq %rcx, %rax
   2290 ; AVX512-NEXT:    vmovq %rax, %xmm1
   2291 ; AVX512-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm5[0],xmm1[0]
   2292 ; AVX512-NEXT:    vinserti128 $1, %xmm4, %ymm1, %ymm1
   2293 ; AVX512-NEXT:    vinserti64x4 $1, %ymm2, %zmm1, %zmm1
   2294 ; AVX512-NEXT:    vpmovqd %zmm1, %ymm1
   2295 ; AVX512-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0
   2296 ; AVX512-NEXT:    vpmovdb %zmm0, %xmm0
   2297 ; AVX512-NEXT:    retq
   2298   %1 = fcmp ogt <16 x double> %a0, %a1
   2299   ret <16 x i1> %1
   2300 }
   2301 
   2302 define <32 x i1> @test_cmp_v32f32(<32 x float> %a0, <32 x float> %a1) nounwind {
   2303 ; SSE2-LABEL: test_cmp_v32f32:
   2304 ; SSE2:       # BB#0:
   2305 ; SSE2-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm8
   2306 ; SSE2-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm9
   2307 ; SSE2-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm10
   2308 ; SSE2-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm11
   2309 ; SSE2-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm12
   2310 ; SSE2-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm13
   2311 ; SSE2-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm14
   2312 ; SSE2-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm15
   2313 ; SSE2-NEXT:    cmpltps %xmm3, %xmm15
   2314 ; SSE2-NEXT:    pshuflw {{.*#+}} xmm3 = xmm15[0,2,2,3,4,5,6,7]
   2315 ; SSE2-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,6,6,7]
   2316 ; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3]
   2317 ; SSE2-NEXT:    cmpltps %xmm2, %xmm14
   2318 ; SSE2-NEXT:    pshuflw {{.*#+}} xmm2 = xmm14[0,2,2,3,4,5,6,7]
   2319 ; SSE2-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7]
   2320 ; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]
   2321 ; SSE2-NEXT:    punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0]
   2322 ; SSE2-NEXT:    psllw $15, %xmm2
   2323 ; SSE2-NEXT:    psraw $15, %xmm2
   2324 ; SSE2-NEXT:    movdqa {{.*#+}} xmm3 = [255,255,255,255,255,255,255,255]
   2325 ; SSE2-NEXT:    pand %xmm3, %xmm2
   2326 ; SSE2-NEXT:    cmpltps %xmm1, %xmm13
   2327 ; SSE2-NEXT:    pshuflw {{.*#+}} xmm1 = xmm13[0,2,2,3,4,5,6,7]
   2328 ; SSE2-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7]
   2329 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
   2330 ; SSE2-NEXT:    cmpltps %xmm0, %xmm12
   2331 ; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm12[0,2,2,3,4,5,6,7]
   2332 ; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,6,7]
   2333 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
   2334 ; SSE2-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
   2335 ; SSE2-NEXT:    psllw $15, %xmm0
   2336 ; SSE2-NEXT:    psraw $15, %xmm0
   2337 ; SSE2-NEXT:    pand %xmm3, %xmm0
   2338 ; SSE2-NEXT:    packuswb %xmm2, %xmm0
   2339 ; SSE2-NEXT:    cmpltps %xmm7, %xmm11
   2340 ; SSE2-NEXT:    pshuflw {{.*#+}} xmm1 = xmm11[0,2,2,3,4,5,6,7]
   2341 ; SSE2-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7]
   2342 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
   2343 ; SSE2-NEXT:    cmpltps %xmm6, %xmm10
   2344 ; SSE2-NEXT:    pshuflw {{.*#+}} xmm2 = xmm10[0,2,2,3,4,5,6,7]
   2345 ; SSE2-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7]
   2346 ; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]
   2347 ; SSE2-NEXT:    punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm1[0]
   2348 ; SSE2-NEXT:    psllw $15, %xmm2
   2349 ; SSE2-NEXT:    psraw $15, %xmm2
   2350 ; SSE2-NEXT:    pand %xmm3, %xmm2
   2351 ; SSE2-NEXT:    cmpltps %xmm5, %xmm9
   2352 ; SSE2-NEXT:    pshuflw {{.*#+}} xmm1 = xmm9[0,2,2,3,4,5,6,7]
   2353 ; SSE2-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7]
   2354 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
   2355 ; SSE2-NEXT:    cmpltps %xmm4, %xmm8
   2356 ; SSE2-NEXT:    pshuflw {{.*#+}} xmm4 = xmm8[0,2,2,3,4,5,6,7]
   2357 ; SSE2-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,6,6,7]
   2358 ; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3]
   2359 ; SSE2-NEXT:    punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm1[0]
   2360 ; SSE2-NEXT:    psllw $15, %xmm4
   2361 ; SSE2-NEXT:    psraw $15, %xmm4
   2362 ; SSE2-NEXT:    pand %xmm3, %xmm4
   2363 ; SSE2-NEXT:    packuswb %xmm2, %xmm4
   2364 ; SSE2-NEXT:    movdqa %xmm4, -{{[0-9]+}}(%rsp)
   2365 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2366 ; SSE2-NEXT:    andb $1, %al
   2367 ; SSE2-NEXT:    movb %al, 2(%rdi)
   2368 ; SSE2-NEXT:    movdqa %xmm0, -{{[0-9]+}}(%rsp)
   2369 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2370 ; SSE2-NEXT:    andb $1, %al
   2371 ; SSE2-NEXT:    movb %al, (%rdi)
   2372 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2373 ; SSE2-NEXT:    andb $1, %al
   2374 ; SSE2-NEXT:    movb %al, 2(%rdi)
   2375 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2376 ; SSE2-NEXT:    andb $1, %al
   2377 ; SSE2-NEXT:    movb %al, (%rdi)
   2378 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2379 ; SSE2-NEXT:    andb $1, %al
   2380 ; SSE2-NEXT:    movb %al, 2(%rdi)
   2381 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2382 ; SSE2-NEXT:    andb $1, %al
   2383 ; SSE2-NEXT:    movb %al, (%rdi)
   2384 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2385 ; SSE2-NEXT:    andb $1, %al
   2386 ; SSE2-NEXT:    movb %al, 2(%rdi)
   2387 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2388 ; SSE2-NEXT:    andb $1, %al
   2389 ; SSE2-NEXT:    movb %al, (%rdi)
   2390 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2391 ; SSE2-NEXT:    andb $1, %al
   2392 ; SSE2-NEXT:    movb %al, 2(%rdi)
   2393 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2394 ; SSE2-NEXT:    andb $1, %al
   2395 ; SSE2-NEXT:    movb %al, (%rdi)
   2396 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2397 ; SSE2-NEXT:    andb $1, %al
   2398 ; SSE2-NEXT:    movb %al, 2(%rdi)
   2399 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2400 ; SSE2-NEXT:    andb $1, %al
   2401 ; SSE2-NEXT:    movb %al, (%rdi)
   2402 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2403 ; SSE2-NEXT:    andb $1, %al
   2404 ; SSE2-NEXT:    movb %al, 2(%rdi)
   2405 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2406 ; SSE2-NEXT:    andb $1, %al
   2407 ; SSE2-NEXT:    movb %al, (%rdi)
   2408 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2409 ; SSE2-NEXT:    andb $1, %al
   2410 ; SSE2-NEXT:    movb %al, 2(%rdi)
   2411 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2412 ; SSE2-NEXT:    andb $1, %al
   2413 ; SSE2-NEXT:    movb %al, (%rdi)
   2414 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2415 ; SSE2-NEXT:    andb $1, %al
   2416 ; SSE2-NEXT:    movb %al, 2(%rdi)
   2417 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2418 ; SSE2-NEXT:    andb $1, %al
   2419 ; SSE2-NEXT:    movb %al, (%rdi)
   2420 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2421 ; SSE2-NEXT:    andb $1, %al
   2422 ; SSE2-NEXT:    movb %al, 2(%rdi)
   2423 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2424 ; SSE2-NEXT:    andb $1, %al
   2425 ; SSE2-NEXT:    movb %al, (%rdi)
   2426 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2427 ; SSE2-NEXT:    andb $1, %al
   2428 ; SSE2-NEXT:    movb %al, 2(%rdi)
   2429 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2430 ; SSE2-NEXT:    andb $1, %al
   2431 ; SSE2-NEXT:    movb %al, (%rdi)
   2432 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2433 ; SSE2-NEXT:    andb $1, %al
   2434 ; SSE2-NEXT:    movb %al, 2(%rdi)
   2435 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2436 ; SSE2-NEXT:    andb $1, %al
   2437 ; SSE2-NEXT:    movb %al, (%rdi)
   2438 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2439 ; SSE2-NEXT:    andb $1, %al
   2440 ; SSE2-NEXT:    movb %al, 2(%rdi)
   2441 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2442 ; SSE2-NEXT:    andb $1, %al
   2443 ; SSE2-NEXT:    movb %al, (%rdi)
   2444 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2445 ; SSE2-NEXT:    andb $1, %al
   2446 ; SSE2-NEXT:    movb %al, 2(%rdi)
   2447 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2448 ; SSE2-NEXT:    andb $1, %al
   2449 ; SSE2-NEXT:    movb %al, (%rdi)
   2450 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2451 ; SSE2-NEXT:    andb $1, %al
   2452 ; SSE2-NEXT:    movb %al, 2(%rdi)
   2453 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2454 ; SSE2-NEXT:    andb $1, %al
   2455 ; SSE2-NEXT:    movb %al, (%rdi)
   2456 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2457 ; SSE2-NEXT:    andb $1, %al
   2458 ; SSE2-NEXT:    movb %al, 2(%rdi)
   2459 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   2460 ; SSE2-NEXT:    andb $1, %al
   2461 ; SSE2-NEXT:    movb %al, (%rdi)
   2462 ; SSE2-NEXT:    movq %rdi, %rax
   2463 ; SSE2-NEXT:    retq
   2464 ;
   2465 ; SSE42-LABEL: test_cmp_v32f32:
   2466 ; SSE42:       # BB#0:
   2467 ; SSE42-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm9
   2468 ; SSE42-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm11
   2469 ; SSE42-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm10
   2470 ; SSE42-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm12
   2471 ; SSE42-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm8
   2472 ; SSE42-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm14
   2473 ; SSE42-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm13
   2474 ; SSE42-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm15
   2475 ; SSE42-NEXT:    cmpltps %xmm3, %xmm15
   2476 ; SSE42-NEXT:    movdqa {{.*#+}} xmm3 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]
   2477 ; SSE42-NEXT:    pshufb %xmm3, %xmm15
   2478 ; SSE42-NEXT:    cmpltps %xmm2, %xmm13
   2479 ; SSE42-NEXT:    pshufb %xmm3, %xmm13
   2480 ; SSE42-NEXT:    punpcklqdq {{.*#+}} xmm13 = xmm13[0],xmm15[0]
   2481 ; SSE42-NEXT:    psllw $15, %xmm13
   2482 ; SSE42-NEXT:    psraw $15, %xmm13
   2483 ; SSE42-NEXT:    movdqa {{.*#+}} xmm2 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
   2484 ; SSE42-NEXT:    pshufb %xmm2, %xmm13
   2485 ; SSE42-NEXT:    cmpltps %xmm1, %xmm14
   2486 ; SSE42-NEXT:    pshufb %xmm3, %xmm14
   2487 ; SSE42-NEXT:    cmpltps %xmm0, %xmm8
   2488 ; SSE42-NEXT:    pshufb %xmm3, %xmm8
   2489 ; SSE42-NEXT:    punpcklqdq {{.*#+}} xmm8 = xmm8[0],xmm14[0]
   2490 ; SSE42-NEXT:    psllw $15, %xmm8
   2491 ; SSE42-NEXT:    psraw $15, %xmm8
   2492 ; SSE42-NEXT:    pshufb %xmm2, %xmm8
   2493 ; SSE42-NEXT:    punpcklqdq {{.*#+}} xmm8 = xmm8[0],xmm13[0]
   2494 ; SSE42-NEXT:    cmpltps %xmm7, %xmm12
   2495 ; SSE42-NEXT:    pshufb %xmm3, %xmm12
   2496 ; SSE42-NEXT:    cmpltps %xmm6, %xmm10
   2497 ; SSE42-NEXT:    pshufb %xmm3, %xmm10
   2498 ; SSE42-NEXT:    punpcklqdq {{.*#+}} xmm10 = xmm10[0],xmm12[0]
   2499 ; SSE42-NEXT:    psllw $15, %xmm10
   2500 ; SSE42-NEXT:    psraw $15, %xmm10
   2501 ; SSE42-NEXT:    pshufb %xmm2, %xmm10
   2502 ; SSE42-NEXT:    cmpltps %xmm5, %xmm11
   2503 ; SSE42-NEXT:    pshufb %xmm3, %xmm11
   2504 ; SSE42-NEXT:    cmpltps %xmm4, %xmm9
   2505 ; SSE42-NEXT:    pshufb %xmm3, %xmm9
   2506 ; SSE42-NEXT:    punpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm11[0]
   2507 ; SSE42-NEXT:    psllw $15, %xmm9
   2508 ; SSE42-NEXT:    psraw $15, %xmm9
   2509 ; SSE42-NEXT:    pshufb %xmm2, %xmm9
   2510 ; SSE42-NEXT:    punpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm10[0]
   2511 ; SSE42-NEXT:    pextrb $15, %xmm9, %eax
   2512 ; SSE42-NEXT:    andb $1, %al
   2513 ; SSE42-NEXT:    movb %al, 2(%rdi)
   2514 ; SSE42-NEXT:    pextrb $14, %xmm9, %eax
   2515 ; SSE42-NEXT:    andb $1, %al
   2516 ; SSE42-NEXT:    movb %al, 2(%rdi)
   2517 ; SSE42-NEXT:    pextrb $13, %xmm9, %eax
   2518 ; SSE42-NEXT:    andb $1, %al
   2519 ; SSE42-NEXT:    movb %al, 2(%rdi)
   2520 ; SSE42-NEXT:    pextrb $12, %xmm9, %eax
   2521 ; SSE42-NEXT:    andb $1, %al
   2522 ; SSE42-NEXT:    movb %al, 2(%rdi)
   2523 ; SSE42-NEXT:    pextrb $11, %xmm9, %eax
   2524 ; SSE42-NEXT:    andb $1, %al
   2525 ; SSE42-NEXT:    movb %al, 2(%rdi)
   2526 ; SSE42-NEXT:    pextrb $10, %xmm9, %eax
   2527 ; SSE42-NEXT:    andb $1, %al
   2528 ; SSE42-NEXT:    movb %al, 2(%rdi)
   2529 ; SSE42-NEXT:    pextrb $9, %xmm9, %eax
   2530 ; SSE42-NEXT:    andb $1, %al
   2531 ; SSE42-NEXT:    movb %al, 2(%rdi)
   2532 ; SSE42-NEXT:    pextrb $8, %xmm9, %eax
   2533 ; SSE42-NEXT:    andb $1, %al
   2534 ; SSE42-NEXT:    movb %al, 2(%rdi)
   2535 ; SSE42-NEXT:    pextrb $7, %xmm9, %eax
   2536 ; SSE42-NEXT:    andb $1, %al
   2537 ; SSE42-NEXT:    movb %al, 2(%rdi)
   2538 ; SSE42-NEXT:    pextrb $6, %xmm9, %eax
   2539 ; SSE42-NEXT:    andb $1, %al
   2540 ; SSE42-NEXT:    movb %al, 2(%rdi)
   2541 ; SSE42-NEXT:    pextrb $5, %xmm9, %eax
   2542 ; SSE42-NEXT:    andb $1, %al
   2543 ; SSE42-NEXT:    movb %al, 2(%rdi)
   2544 ; SSE42-NEXT:    pextrb $4, %xmm9, %eax
   2545 ; SSE42-NEXT:    andb $1, %al
   2546 ; SSE42-NEXT:    movb %al, 2(%rdi)
   2547 ; SSE42-NEXT:    pextrb $3, %xmm9, %eax
   2548 ; SSE42-NEXT:    andb $1, %al
   2549 ; SSE42-NEXT:    movb %al, 2(%rdi)
   2550 ; SSE42-NEXT:    pextrb $2, %xmm9, %eax
   2551 ; SSE42-NEXT:    andb $1, %al
   2552 ; SSE42-NEXT:    movb %al, 2(%rdi)
   2553 ; SSE42-NEXT:    pextrb $1, %xmm9, %eax
   2554 ; SSE42-NEXT:    andb $1, %al
   2555 ; SSE42-NEXT:    movb %al, 2(%rdi)
   2556 ; SSE42-NEXT:    pextrb $0, %xmm9, %eax
   2557 ; SSE42-NEXT:    andb $1, %al
   2558 ; SSE42-NEXT:    movb %al, 2(%rdi)
   2559 ; SSE42-NEXT:    pextrb $15, %xmm8, %eax
   2560 ; SSE42-NEXT:    andb $1, %al
   2561 ; SSE42-NEXT:    movb %al, (%rdi)
   2562 ; SSE42-NEXT:    pextrb $14, %xmm8, %eax
   2563 ; SSE42-NEXT:    andb $1, %al
   2564 ; SSE42-NEXT:    movb %al, (%rdi)
   2565 ; SSE42-NEXT:    pextrb $13, %xmm8, %eax
   2566 ; SSE42-NEXT:    andb $1, %al
   2567 ; SSE42-NEXT:    movb %al, (%rdi)
   2568 ; SSE42-NEXT:    pextrb $12, %xmm8, %eax
   2569 ; SSE42-NEXT:    andb $1, %al
   2570 ; SSE42-NEXT:    movb %al, (%rdi)
   2571 ; SSE42-NEXT:    pextrb $11, %xmm8, %eax
   2572 ; SSE42-NEXT:    andb $1, %al
   2573 ; SSE42-NEXT:    movb %al, (%rdi)
   2574 ; SSE42-NEXT:    pextrb $10, %xmm8, %eax
   2575 ; SSE42-NEXT:    andb $1, %al
   2576 ; SSE42-NEXT:    movb %al, (%rdi)
   2577 ; SSE42-NEXT:    pextrb $9, %xmm8, %eax
   2578 ; SSE42-NEXT:    andb $1, %al
   2579 ; SSE42-NEXT:    movb %al, (%rdi)
   2580 ; SSE42-NEXT:    pextrb $8, %xmm8, %eax
   2581 ; SSE42-NEXT:    andb $1, %al
   2582 ; SSE42-NEXT:    movb %al, (%rdi)
   2583 ; SSE42-NEXT:    pextrb $7, %xmm8, %eax
   2584 ; SSE42-NEXT:    andb $1, %al
   2585 ; SSE42-NEXT:    movb %al, (%rdi)
   2586 ; SSE42-NEXT:    pextrb $6, %xmm8, %eax
   2587 ; SSE42-NEXT:    andb $1, %al
   2588 ; SSE42-NEXT:    movb %al, (%rdi)
   2589 ; SSE42-NEXT:    pextrb $5, %xmm8, %eax
   2590 ; SSE42-NEXT:    andb $1, %al
   2591 ; SSE42-NEXT:    movb %al, (%rdi)
   2592 ; SSE42-NEXT:    pextrb $4, %xmm8, %eax
   2593 ; SSE42-NEXT:    andb $1, %al
   2594 ; SSE42-NEXT:    movb %al, (%rdi)
   2595 ; SSE42-NEXT:    pextrb $3, %xmm8, %eax
   2596 ; SSE42-NEXT:    andb $1, %al
   2597 ; SSE42-NEXT:    movb %al, (%rdi)
   2598 ; SSE42-NEXT:    pextrb $2, %xmm8, %eax
   2599 ; SSE42-NEXT:    andb $1, %al
   2600 ; SSE42-NEXT:    movb %al, (%rdi)
   2601 ; SSE42-NEXT:    pextrb $1, %xmm8, %eax
   2602 ; SSE42-NEXT:    andb $1, %al
   2603 ; SSE42-NEXT:    movb %al, (%rdi)
   2604 ; SSE42-NEXT:    pextrb $0, %xmm8, %eax
   2605 ; SSE42-NEXT:    andb $1, %al
   2606 ; SSE42-NEXT:    movb %al, (%rdi)
   2607 ; SSE42-NEXT:    movq %rdi, %rax
   2608 ; SSE42-NEXT:    retq
   2609 ;
   2610 ; AVX1-LABEL: test_cmp_v32f32:
   2611 ; AVX1:       # BB#0:
   2612 ; AVX1-NEXT:    vcmpltps %ymm3, %ymm7, %ymm3
   2613 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm8
   2614 ; AVX1-NEXT:    vmovaps {{.*#+}} xmm7 = [255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0]
   2615 ; AVX1-NEXT:    vandps %xmm7, %xmm8, %xmm8
   2616 ; AVX1-NEXT:    vandps %xmm7, %xmm3, %xmm3
   2617 ; AVX1-NEXT:    vpackuswb %xmm8, %xmm3, %xmm3
   2618 ; AVX1-NEXT:    vcmpltps %ymm2, %ymm6, %ymm2
   2619 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm6
   2620 ; AVX1-NEXT:    vandps %xmm7, %xmm6, %xmm6
   2621 ; AVX1-NEXT:    vandps %xmm7, %xmm2, %xmm2
   2622 ; AVX1-NEXT:    vpackuswb %xmm6, %xmm2, %xmm2
   2623 ; AVX1-NEXT:    vpackuswb %xmm3, %xmm2, %xmm2
   2624 ; AVX1-NEXT:    vcmpltps %ymm1, %ymm5, %ymm1
   2625 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
   2626 ; AVX1-NEXT:    vandps %xmm7, %xmm3, %xmm3
   2627 ; AVX1-NEXT:    vandps %xmm7, %xmm1, %xmm1
   2628 ; AVX1-NEXT:    vpackuswb %xmm3, %xmm1, %xmm1
   2629 ; AVX1-NEXT:    vcmpltps %ymm0, %ymm4, %ymm0
   2630 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
   2631 ; AVX1-NEXT:    vandps %xmm7, %xmm3, %xmm3
   2632 ; AVX1-NEXT:    vandps %xmm7, %xmm0, %xmm0
   2633 ; AVX1-NEXT:    vpackuswb %xmm3, %xmm0, %xmm0
   2634 ; AVX1-NEXT:    vpackuswb %xmm1, %xmm0, %xmm0
   2635 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
   2636 ; AVX1-NEXT:    retq
   2637 ;
   2638 ; AVX2-LABEL: test_cmp_v32f32:
   2639 ; AVX2:       # BB#0:
   2640 ; AVX2-NEXT:    vcmpltps %ymm3, %ymm7, %ymm3
   2641 ; AVX2-NEXT:    vmovdqa {{.*#+}} ymm8 = [0,1,4,5,8,9,12,13,128,128,128,128,128,128,128,128,0,1,4,5,8,9,12,13,128,128,128,128,128,128,128,128]
   2642 ; AVX2-NEXT:    vpshufb %ymm8, %ymm3, %ymm3
   2643 ; AVX2-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,2,2,3]
   2644 ; AVX2-NEXT:    vmovdqa {{.*#+}} xmm7 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
   2645 ; AVX2-NEXT:    vpshufb %xmm7, %xmm3, %xmm3
   2646 ; AVX2-NEXT:    vcmpltps %ymm2, %ymm6, %ymm2
   2647 ; AVX2-NEXT:    vpshufb %ymm8, %ymm2, %ymm2
   2648 ; AVX2-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,2,2,3]
   2649 ; AVX2-NEXT:    vpshufb %xmm7, %xmm2, %xmm2
   2650 ; AVX2-NEXT:    vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0]
   2651 ; AVX2-NEXT:    vcmpltps %ymm1, %ymm5, %ymm1
   2652 ; AVX2-NEXT:    vpshufb %ymm8, %ymm1, %ymm1
   2653 ; AVX2-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]
   2654 ; AVX2-NEXT:    vpshufb %xmm7, %xmm1, %xmm1
   2655 ; AVX2-NEXT:    vcmpltps %ymm0, %ymm4, %ymm0
   2656 ; AVX2-NEXT:    vpshufb %ymm8, %ymm0, %ymm0
   2657 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,2,3]
   2658 ; AVX2-NEXT:    vpshufb %xmm7, %xmm0, %xmm0
   2659 ; AVX2-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
   2660 ; AVX2-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm0
   2661 ; AVX2-NEXT:    retq
   2662 ;
   2663 ; AVX512-LABEL: test_cmp_v32f32:
   2664 ; AVX512:       # BB#0:
   2665 ; AVX512-NEXT:    vextractf32x4 $3, %zmm2, %xmm4
   2666 ; AVX512-NEXT:    vmovshdup {{.*#+}} xmm5 = xmm4[1,1,3,3]
   2667 ; AVX512-NEXT:    vextractf32x4 $3, %zmm0, %xmm6
   2668 ; AVX512-NEXT:    vmovshdup {{.*#+}} xmm7 = xmm6[1,1,3,3]
   2669 ; AVX512-NEXT:    xorl %eax, %eax
   2670 ; AVX512-NEXT:    vucomiss %xmm5, %xmm7
   2671 ; AVX512-NEXT:    movl $-1, %ecx
   2672 ; AVX512-NEXT:    movl $0, %edx
   2673 ; AVX512-NEXT:    cmoval %ecx, %edx
   2674 ; AVX512-NEXT:    vucomiss %xmm4, %xmm6
   2675 ; AVX512-NEXT:    movl $0, %esi
   2676 ; AVX512-NEXT:    cmoval %ecx, %esi
   2677 ; AVX512-NEXT:    vmovd %esi, %xmm5
   2678 ; AVX512-NEXT:    vpinsrd $1, %edx, %xmm5, %xmm8
   2679 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm7 = xmm4[1,0]
   2680 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm5 = xmm6[1,0]
   2681 ; AVX512-NEXT:    vucomiss %xmm7, %xmm5
   2682 ; AVX512-NEXT:    movl $0, %edx
   2683 ; AVX512-NEXT:    cmoval %ecx, %edx
   2684 ; AVX512-NEXT:    vpinsrd $2, %edx, %xmm8, %xmm5
   2685 ; AVX512-NEXT:    vpermilps {{.*#+}} xmm4 = xmm4[3,1,2,3]
   2686 ; AVX512-NEXT:    vpermilps {{.*#+}} xmm6 = xmm6[3,1,2,3]
   2687 ; AVX512-NEXT:    vucomiss %xmm4, %xmm6
   2688 ; AVX512-NEXT:    movl $0, %edx
   2689 ; AVX512-NEXT:    cmoval %ecx, %edx
   2690 ; AVX512-NEXT:    vpinsrd $3, %edx, %xmm5, %xmm8
   2691 ; AVX512-NEXT:    vextractf32x4 $2, %zmm2, %xmm5
   2692 ; AVX512-NEXT:    vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3]
   2693 ; AVX512-NEXT:    vextractf32x4 $2, %zmm0, %xmm7
   2694 ; AVX512-NEXT:    vmovshdup {{.*#+}} xmm4 = xmm7[1,1,3,3]
   2695 ; AVX512-NEXT:    vucomiss %xmm6, %xmm4
   2696 ; AVX512-NEXT:    movl $0, %edx
   2697 ; AVX512-NEXT:    cmoval %ecx, %edx
   2698 ; AVX512-NEXT:    vucomiss %xmm5, %xmm7
   2699 ; AVX512-NEXT:    movl $0, %esi
   2700 ; AVX512-NEXT:    cmoval %ecx, %esi
   2701 ; AVX512-NEXT:    vmovd %esi, %xmm4
   2702 ; AVX512-NEXT:    vpinsrd $1, %edx, %xmm4, %xmm9
   2703 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm6 = xmm5[1,0]
   2704 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm4 = xmm7[1,0]
   2705 ; AVX512-NEXT:    vucomiss %xmm6, %xmm4
   2706 ; AVX512-NEXT:    movl $0, %edx
   2707 ; AVX512-NEXT:    cmoval %ecx, %edx
   2708 ; AVX512-NEXT:    vpinsrd $2, %edx, %xmm9, %xmm4
   2709 ; AVX512-NEXT:    vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3]
   2710 ; AVX512-NEXT:    vpermilps {{.*#+}} xmm6 = xmm7[3,1,2,3]
   2711 ; AVX512-NEXT:    vucomiss %xmm5, %xmm6
   2712 ; AVX512-NEXT:    movl $0, %edx
   2713 ; AVX512-NEXT:    cmoval %ecx, %edx
   2714 ; AVX512-NEXT:    vpinsrd $3, %edx, %xmm4, %xmm4
   2715 ; AVX512-NEXT:    vinserti128 $1, %xmm8, %ymm4, %ymm8
   2716 ; AVX512-NEXT:    vextractf32x4 $1, %zmm2, %xmm5
   2717 ; AVX512-NEXT:    vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3]
   2718 ; AVX512-NEXT:    vextractf32x4 $1, %zmm0, %xmm7
   2719 ; AVX512-NEXT:    vmovshdup {{.*#+}} xmm4 = xmm7[1,1,3,3]
   2720 ; AVX512-NEXT:    vucomiss %xmm6, %xmm4
   2721 ; AVX512-NEXT:    movl $0, %edx
   2722 ; AVX512-NEXT:    cmoval %ecx, %edx
   2723 ; AVX512-NEXT:    vucomiss %xmm5, %xmm7
   2724 ; AVX512-NEXT:    movl $0, %esi
   2725 ; AVX512-NEXT:    cmoval %ecx, %esi
   2726 ; AVX512-NEXT:    vmovd %esi, %xmm4
   2727 ; AVX512-NEXT:    vpinsrd $1, %edx, %xmm4, %xmm9
   2728 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm6 = xmm5[1,0]
   2729 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm4 = xmm7[1,0]
   2730 ; AVX512-NEXT:    vucomiss %xmm6, %xmm4
   2731 ; AVX512-NEXT:    movl $0, %edx
   2732 ; AVX512-NEXT:    cmoval %ecx, %edx
   2733 ; AVX512-NEXT:    vpinsrd $2, %edx, %xmm9, %xmm4
   2734 ; AVX512-NEXT:    vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3]
   2735 ; AVX512-NEXT:    vpermilps {{.*#+}} xmm6 = xmm7[3,1,2,3]
   2736 ; AVX512-NEXT:    vucomiss %xmm5, %xmm6
   2737 ; AVX512-NEXT:    movl $0, %edx
   2738 ; AVX512-NEXT:    cmoval %ecx, %edx
   2739 ; AVX512-NEXT:    vpinsrd $3, %edx, %xmm4, %xmm4
   2740 ; AVX512-NEXT:    vmovshdup {{.*#+}} xmm5 = xmm2[1,1,3,3]
   2741 ; AVX512-NEXT:    vmovshdup {{.*#+}} xmm6 = xmm0[1,1,3,3]
   2742 ; AVX512-NEXT:    vucomiss %xmm5, %xmm6
   2743 ; AVX512-NEXT:    movl $0, %edx
   2744 ; AVX512-NEXT:    cmoval %ecx, %edx
   2745 ; AVX512-NEXT:    vucomiss %xmm2, %xmm0
   2746 ; AVX512-NEXT:    movl $0, %esi
   2747 ; AVX512-NEXT:    cmoval %ecx, %esi
   2748 ; AVX512-NEXT:    vmovd %esi, %xmm5
   2749 ; AVX512-NEXT:    vpinsrd $1, %edx, %xmm5, %xmm5
   2750 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm6 = xmm2[1,0]
   2751 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm7 = xmm0[1,0]
   2752 ; AVX512-NEXT:    vucomiss %xmm6, %xmm7
   2753 ; AVX512-NEXT:    movl $0, %edx
   2754 ; AVX512-NEXT:    cmoval %ecx, %edx
   2755 ; AVX512-NEXT:    vpinsrd $2, %edx, %xmm5, %xmm5
   2756 ; AVX512-NEXT:    vpermilps {{.*#+}} xmm2 = xmm2[3,1,2,3]
   2757 ; AVX512-NEXT:    vpermilps {{.*#+}} xmm0 = xmm0[3,1,2,3]
   2758 ; AVX512-NEXT:    vucomiss %xmm2, %xmm0
   2759 ; AVX512-NEXT:    movl $0, %edx
   2760 ; AVX512-NEXT:    cmoval %ecx, %edx
   2761 ; AVX512-NEXT:    vpinsrd $3, %edx, %xmm5, %xmm0
   2762 ; AVX512-NEXT:    vinserti128 $1, %xmm4, %ymm0, %ymm0
   2763 ; AVX512-NEXT:    vinserti64x4 $1, %ymm8, %zmm0, %zmm0
   2764 ; AVX512-NEXT:    vpmovdb %zmm0, %xmm8
   2765 ; AVX512-NEXT:    vextractf32x4 $3, %zmm3, %xmm2
   2766 ; AVX512-NEXT:    vmovshdup {{.*#+}} xmm4 = xmm2[1,1,3,3]
   2767 ; AVX512-NEXT:    vextractf32x4 $3, %zmm1, %xmm5
   2768 ; AVX512-NEXT:    vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3]
   2769 ; AVX512-NEXT:    vucomiss %xmm4, %xmm6
   2770 ; AVX512-NEXT:    movl $0, %edx
   2771 ; AVX512-NEXT:    cmoval %ecx, %edx
   2772 ; AVX512-NEXT:    vucomiss %xmm2, %xmm5
   2773 ; AVX512-NEXT:    movl $0, %esi
   2774 ; AVX512-NEXT:    cmoval %ecx, %esi
   2775 ; AVX512-NEXT:    vmovd %esi, %xmm4
   2776 ; AVX512-NEXT:    vpinsrd $1, %edx, %xmm4, %xmm4
   2777 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm6 = xmm2[1,0]
   2778 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm7 = xmm5[1,0]
   2779 ; AVX512-NEXT:    vucomiss %xmm6, %xmm7
   2780 ; AVX512-NEXT:    movl $0, %edx
   2781 ; AVX512-NEXT:    cmoval %ecx, %edx
   2782 ; AVX512-NEXT:    vpinsrd $2, %edx, %xmm4, %xmm4
   2783 ; AVX512-NEXT:    vpermilps {{.*#+}} xmm2 = xmm2[3,1,2,3]
   2784 ; AVX512-NEXT:    vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3]
   2785 ; AVX512-NEXT:    vucomiss %xmm2, %xmm5
   2786 ; AVX512-NEXT:    movl $0, %edx
   2787 ; AVX512-NEXT:    cmoval %ecx, %edx
   2788 ; AVX512-NEXT:    vpinsrd $3, %edx, %xmm4, %xmm2
   2789 ; AVX512-NEXT:    vextractf32x4 $2, %zmm3, %xmm4
   2790 ; AVX512-NEXT:    vmovshdup {{.*#+}} xmm5 = xmm4[1,1,3,3]
   2791 ; AVX512-NEXT:    vextractf32x4 $2, %zmm1, %xmm6
   2792 ; AVX512-NEXT:    vmovshdup {{.*#+}} xmm7 = xmm6[1,1,3,3]
   2793 ; AVX512-NEXT:    vucomiss %xmm5, %xmm7
   2794 ; AVX512-NEXT:    movl $0, %edx
   2795 ; AVX512-NEXT:    cmoval %ecx, %edx
   2796 ; AVX512-NEXT:    vucomiss %xmm4, %xmm6
   2797 ; AVX512-NEXT:    movl $0, %esi
   2798 ; AVX512-NEXT:    cmoval %ecx, %esi
   2799 ; AVX512-NEXT:    vmovd %esi, %xmm5
   2800 ; AVX512-NEXT:    vpinsrd $1, %edx, %xmm5, %xmm5
   2801 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm7 = xmm4[1,0]
   2802 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm0 = xmm6[1,0]
   2803 ; AVX512-NEXT:    vucomiss %xmm7, %xmm0
   2804 ; AVX512-NEXT:    movl $0, %edx
   2805 ; AVX512-NEXT:    cmoval %ecx, %edx
   2806 ; AVX512-NEXT:    vpinsrd $2, %edx, %xmm5, %xmm0
   2807 ; AVX512-NEXT:    vpermilps {{.*#+}} xmm4 = xmm4[3,1,2,3]
   2808 ; AVX512-NEXT:    vpermilps {{.*#+}} xmm5 = xmm6[3,1,2,3]
   2809 ; AVX512-NEXT:    vucomiss %xmm4, %xmm5
   2810 ; AVX512-NEXT:    movl $0, %edx
   2811 ; AVX512-NEXT:    cmoval %ecx, %edx
   2812 ; AVX512-NEXT:    vpinsrd $3, %edx, %xmm0, %xmm0
   2813 ; AVX512-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm2
   2814 ; AVX512-NEXT:    vextractf32x4 $1, %zmm3, %xmm0
   2815 ; AVX512-NEXT:    vmovshdup {{.*#+}} xmm4 = xmm0[1,1,3,3]
   2816 ; AVX512-NEXT:    vextractf32x4 $1, %zmm1, %xmm5
   2817 ; AVX512-NEXT:    vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3]
   2818 ; AVX512-NEXT:    vucomiss %xmm4, %xmm6
   2819 ; AVX512-NEXT:    movl $0, %edx
   2820 ; AVX512-NEXT:    cmoval %ecx, %edx
   2821 ; AVX512-NEXT:    vucomiss %xmm0, %xmm5
   2822 ; AVX512-NEXT:    movl $0, %esi
   2823 ; AVX512-NEXT:    cmoval %ecx, %esi
   2824 ; AVX512-NEXT:    vmovd %esi, %xmm4
   2825 ; AVX512-NEXT:    vpinsrd $1, %edx, %xmm4, %xmm4
   2826 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm6 = xmm0[1,0]
   2827 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm7 = xmm5[1,0]
   2828 ; AVX512-NEXT:    vucomiss %xmm6, %xmm7
   2829 ; AVX512-NEXT:    movl $0, %edx
   2830 ; AVX512-NEXT:    cmoval %ecx, %edx
   2831 ; AVX512-NEXT:    vpinsrd $2, %edx, %xmm4, %xmm4
   2832 ; AVX512-NEXT:    vpermilps {{.*#+}} xmm0 = xmm0[3,1,2,3]
   2833 ; AVX512-NEXT:    vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3]
   2834 ; AVX512-NEXT:    vucomiss %xmm0, %xmm5
   2835 ; AVX512-NEXT:    movl $0, %edx
   2836 ; AVX512-NEXT:    cmoval %ecx, %edx
   2837 ; AVX512-NEXT:    vpinsrd $3, %edx, %xmm4, %xmm0
   2838 ; AVX512-NEXT:    vmovshdup {{.*#+}} xmm4 = xmm3[1,1,3,3]
   2839 ; AVX512-NEXT:    vmovshdup {{.*#+}} xmm5 = xmm1[1,1,3,3]
   2840 ; AVX512-NEXT:    vucomiss %xmm4, %xmm5
   2841 ; AVX512-NEXT:    movl $0, %edx
   2842 ; AVX512-NEXT:    cmoval %ecx, %edx
   2843 ; AVX512-NEXT:    vucomiss %xmm3, %xmm1
   2844 ; AVX512-NEXT:    movl $0, %esi
   2845 ; AVX512-NEXT:    cmoval %ecx, %esi
   2846 ; AVX512-NEXT:    vmovd %esi, %xmm4
   2847 ; AVX512-NEXT:    vpinsrd $1, %edx, %xmm4, %xmm4
   2848 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm5 = xmm3[1,0]
   2849 ; AVX512-NEXT:    vpermilpd {{.*#+}} xmm6 = xmm1[1,0]
   2850 ; AVX512-NEXT:    vucomiss %xmm5, %xmm6
   2851 ; AVX512-NEXT:    movl $0, %edx
   2852 ; AVX512-NEXT:    cmoval %ecx, %edx
   2853 ; AVX512-NEXT:    vpinsrd $2, %edx, %xmm4, %xmm4
   2854 ; AVX512-NEXT:    vpermilps {{.*#+}} xmm3 = xmm3[3,1,2,3]
   2855 ; AVX512-NEXT:    vpermilps {{.*#+}} xmm1 = xmm1[3,1,2,3]
   2856 ; AVX512-NEXT:    vucomiss %xmm3, %xmm1
   2857 ; AVX512-NEXT:    cmoval %ecx, %eax
   2858 ; AVX512-NEXT:    vpinsrd $3, %eax, %xmm4, %xmm1
   2859 ; AVX512-NEXT:    vinserti128 $1, %xmm0, %ymm1, %ymm0
   2860 ; AVX512-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm0
   2861 ; AVX512-NEXT:    vpmovdb %zmm0, %xmm0
   2862 ; AVX512-NEXT:    vinsertf128 $1, %xmm0, %ymm8, %ymm0
   2863 ; AVX512-NEXT:    retq
   2864   %1 = fcmp ogt <32 x float> %a0, %a1
   2865   ret <32 x i1> %1
   2866 }
   2867 
   2868 define <16 x i1> @test_cmp_v16i64(<16 x i64> %a0, <16 x i64> %a1) nounwind {
   2869 ; SSE2-LABEL: test_cmp_v16i64:
   2870 ; SSE2:       # BB#0:
   2871 ; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [2147483648,0,2147483648,0]
   2872 ; SSE2-NEXT:    pxor %xmm8, %xmm7
   2873 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm9
   2874 ; SSE2-NEXT:    pxor %xmm8, %xmm9
   2875 ; SSE2-NEXT:    movdqa %xmm7, %xmm10
   2876 ; SSE2-NEXT:    pcmpgtd %xmm9, %xmm10
   2877 ; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2]
   2878 ; SSE2-NEXT:    pcmpeqd %xmm7, %xmm9
   2879 ; SSE2-NEXT:    pshufd {{.*#+}} xmm7 = xmm9[1,1,3,3]
   2880 ; SSE2-NEXT:    pand %xmm11, %xmm7
   2881 ; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]
   2882 ; SSE2-NEXT:    por %xmm7, %xmm9
   2883 ; SSE2-NEXT:    movdqa {{.*#+}} xmm10 = [255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0]
   2884 ; SSE2-NEXT:    pand %xmm10, %xmm9
   2885 ; SSE2-NEXT:    pxor %xmm8, %xmm6
   2886 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm7
   2887 ; SSE2-NEXT:    pxor %xmm8, %xmm7
   2888 ; SSE2-NEXT:    movdqa %xmm6, %xmm11
   2889 ; SSE2-NEXT:    pcmpgtd %xmm7, %xmm11
   2890 ; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm11[0,0,2,2]
   2891 ; SSE2-NEXT:    pcmpeqd %xmm6, %xmm7
   2892 ; SSE2-NEXT:    pshufd {{.*#+}} xmm7 = xmm7[1,1,3,3]
   2893 ; SSE2-NEXT:    pand %xmm12, %xmm7
   2894 ; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm11[1,1,3,3]
   2895 ; SSE2-NEXT:    por %xmm7, %xmm11
   2896 ; SSE2-NEXT:    pand %xmm10, %xmm11
   2897 ; SSE2-NEXT:    packuswb %xmm9, %xmm11
   2898 ; SSE2-NEXT:    pxor %xmm8, %xmm5
   2899 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm7
   2900 ; SSE2-NEXT:    pxor %xmm8, %xmm7
   2901 ; SSE2-NEXT:    movdqa %xmm5, %xmm6
   2902 ; SSE2-NEXT:    pcmpgtd %xmm7, %xmm6
   2903 ; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm6[0,0,2,2]
   2904 ; SSE2-NEXT:    pcmpeqd %xmm5, %xmm7
   2905 ; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3]
   2906 ; SSE2-NEXT:    pand %xmm9, %xmm5
   2907 ; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3]
   2908 ; SSE2-NEXT:    por %xmm5, %xmm6
   2909 ; SSE2-NEXT:    pand %xmm10, %xmm6
   2910 ; SSE2-NEXT:    pxor %xmm8, %xmm4
   2911 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm5
   2912 ; SSE2-NEXT:    pxor %xmm8, %xmm5
   2913 ; SSE2-NEXT:    movdqa %xmm4, %xmm7
   2914 ; SSE2-NEXT:    pcmpgtd %xmm5, %xmm7
   2915 ; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm7[0,0,2,2]
   2916 ; SSE2-NEXT:    pcmpeqd %xmm4, %xmm5
   2917 ; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]
   2918 ; SSE2-NEXT:    pand %xmm9, %xmm5
   2919 ; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm7[1,1,3,3]
   2920 ; SSE2-NEXT:    por %xmm5, %xmm4
   2921 ; SSE2-NEXT:    pand %xmm10, %xmm4
   2922 ; SSE2-NEXT:    packuswb %xmm6, %xmm4
   2923 ; SSE2-NEXT:    packuswb %xmm11, %xmm4
   2924 ; SSE2-NEXT:    pxor %xmm8, %xmm3
   2925 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm5
   2926 ; SSE2-NEXT:    pxor %xmm8, %xmm5
   2927 ; SSE2-NEXT:    movdqa %xmm3, %xmm6
   2928 ; SSE2-NEXT:    pcmpgtd %xmm5, %xmm6
   2929 ; SSE2-NEXT:    pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
   2930 ; SSE2-NEXT:    pcmpeqd %xmm3, %xmm5
   2931 ; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm5[1,1,3,3]
   2932 ; SSE2-NEXT:    pand %xmm7, %xmm3
   2933 ; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]
   2934 ; SSE2-NEXT:    por %xmm3, %xmm5
   2935 ; SSE2-NEXT:    pand %xmm10, %xmm5
   2936 ; SSE2-NEXT:    pxor %xmm8, %xmm2
   2937 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm3
   2938 ; SSE2-NEXT:    pxor %xmm8, %xmm3
   2939 ; SSE2-NEXT:    movdqa %xmm2, %xmm6
   2940 ; SSE2-NEXT:    pcmpgtd %xmm3, %xmm6
   2941 ; SSE2-NEXT:    pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
   2942 ; SSE2-NEXT:    pcmpeqd %xmm2, %xmm3
   2943 ; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
   2944 ; SSE2-NEXT:    pand %xmm7, %xmm3
   2945 ; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm6[1,1,3,3]
   2946 ; SSE2-NEXT:    por %xmm3, %xmm2
   2947 ; SSE2-NEXT:    pand %xmm10, %xmm2
   2948 ; SSE2-NEXT:    packuswb %xmm5, %xmm2
   2949 ; SSE2-NEXT:    pxor %xmm8, %xmm1
   2950 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm3
   2951 ; SSE2-NEXT:    pxor %xmm8, %xmm3
   2952 ; SSE2-NEXT:    movdqa %xmm1, %xmm5
   2953 ; SSE2-NEXT:    pcmpgtd %xmm3, %xmm5
   2954 ; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]
   2955 ; SSE2-NEXT:    pcmpeqd %xmm1, %xmm3
   2956 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm3[1,1,3,3]
   2957 ; SSE2-NEXT:    pand %xmm6, %xmm1
   2958 ; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm5[1,1,3,3]
   2959 ; SSE2-NEXT:    por %xmm1, %xmm3
   2960 ; SSE2-NEXT:    pand %xmm10, %xmm3
   2961 ; SSE2-NEXT:    pxor %xmm8, %xmm0
   2962 ; SSE2-NEXT:    pxor {{[0-9]+}}(%rsp), %xmm8
   2963 ; SSE2-NEXT:    movdqa %xmm0, %xmm1
   2964 ; SSE2-NEXT:    pcmpgtd %xmm8, %xmm1
   2965 ; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm1[0,0,2,2]
   2966 ; SSE2-NEXT:    pcmpeqd %xmm0, %xmm8
   2967 ; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm8[1,1,3,3]
   2968 ; SSE2-NEXT:    pand %xmm5, %xmm6
   2969 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3]
   2970 ; SSE2-NEXT:    por %xmm6, %xmm0
   2971 ; SSE2-NEXT:    pand %xmm10, %xmm0
   2972 ; SSE2-NEXT:    packuswb %xmm3, %xmm0
   2973 ; SSE2-NEXT:    packuswb %xmm2, %xmm0
   2974 ; SSE2-NEXT:    packuswb %xmm4, %xmm0
   2975 ; SSE2-NEXT:    retq
   2976 ;
   2977 ; SSE42-LABEL: test_cmp_v16i64:
   2978 ; SSE42:       # BB#0:
   2979 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm7
   2980 ; SSE42-NEXT:    movdqa {{.*#+}} xmm8 = [255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0]
   2981 ; SSE42-NEXT:    pand %xmm8, %xmm7
   2982 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm6
   2983 ; SSE42-NEXT:    pand %xmm8, %xmm6
   2984 ; SSE42-NEXT:    packuswb %xmm7, %xmm6
   2985 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm5
   2986 ; SSE42-NEXT:    pand %xmm8, %xmm5
   2987 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm4
   2988 ; SSE42-NEXT:    pand %xmm8, %xmm4
   2989 ; SSE42-NEXT:    packuswb %xmm5, %xmm4
   2990 ; SSE42-NEXT:    packuswb %xmm6, %xmm4
   2991 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm3
   2992 ; SSE42-NEXT:    pand %xmm8, %xmm3
   2993 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm2
   2994 ; SSE42-NEXT:    pand %xmm8, %xmm2
   2995 ; SSE42-NEXT:    packuswb %xmm3, %xmm2
   2996 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm1
   2997 ; SSE42-NEXT:    pand %xmm8, %xmm1
   2998 ; SSE42-NEXT:    pcmpgtq {{[0-9]+}}(%rsp), %xmm0
   2999 ; SSE42-NEXT:    pand %xmm8, %xmm0
   3000 ; SSE42-NEXT:    packuswb %xmm1, %xmm0
   3001 ; SSE42-NEXT:    packuswb %xmm2, %xmm0
   3002 ; SSE42-NEXT:    packuswb %xmm4, %xmm0
   3003 ; SSE42-NEXT:    retq
   3004 ;
   3005 ; AVX1-LABEL: test_cmp_v16i64:
   3006 ; AVX1:       # BB#0:
   3007 ; AVX1-NEXT:    vextractf128 $1, %ymm7, %xmm8
   3008 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm9
   3009 ; AVX1-NEXT:    vpcmpgtq %xmm8, %xmm9, %xmm9
   3010 ; AVX1-NEXT:    vmovdqa {{.*#+}} xmm8 = [255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0]
   3011 ; AVX1-NEXT:    vpand %xmm8, %xmm9, %xmm9
   3012 ; AVX1-NEXT:    vpcmpgtq %xmm7, %xmm3, %xmm3
   3013 ; AVX1-NEXT:    vpand %xmm8, %xmm3, %xmm3
   3014 ; AVX1-NEXT:    vpackuswb %xmm9, %xmm3, %xmm9
   3015 ; AVX1-NEXT:    vextractf128 $1, %ymm6, %xmm7
   3016 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm3
   3017 ; AVX1-NEXT:    vpcmpgtq %xmm7, %xmm3, %xmm3
   3018 ; AVX1-NEXT:    vpand %xmm8, %xmm3, %xmm3
   3019 ; AVX1-NEXT:    vpcmpgtq %xmm6, %xmm2, %xmm2
   3020 ; AVX1-NEXT:    vpand %xmm8, %xmm2, %xmm2
   3021 ; AVX1-NEXT:    vpackuswb %xmm3, %xmm2, %xmm2
   3022 ; AVX1-NEXT:    vpackuswb %xmm9, %xmm2, %xmm2
   3023 ; AVX1-NEXT:    vextractf128 $1, %ymm5, %xmm3
   3024 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm6
   3025 ; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm6, %xmm3
   3026 ; AVX1-NEXT:    vpand %xmm8, %xmm3, %xmm3
   3027 ; AVX1-NEXT:    vpcmpgtq %xmm5, %xmm1, %xmm1
   3028 ; AVX1-NEXT:    vpand %xmm8, %xmm1, %xmm1
   3029 ; AVX1-NEXT:    vpackuswb %xmm3, %xmm1, %xmm1
   3030 ; AVX1-NEXT:    vextractf128 $1, %ymm4, %xmm3
   3031 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm5
   3032 ; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm5, %xmm3
   3033 ; AVX1-NEXT:    vpand %xmm8, %xmm3, %xmm3
   3034 ; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm0, %xmm0
   3035 ; AVX1-NEXT:    vpand %xmm8, %xmm0, %xmm0
   3036 ; AVX1-NEXT:    vpackuswb %xmm3, %xmm0, %xmm0
   3037 ; AVX1-NEXT:    vpackuswb %xmm1, %xmm0, %xmm0
   3038 ; AVX1-NEXT:    vpackuswb %xmm2, %xmm0, %xmm0
   3039 ; AVX1-NEXT:    vzeroupper
   3040 ; AVX1-NEXT:    retq
   3041 ;
   3042 ; AVX2-LABEL: test_cmp_v16i64:
   3043 ; AVX2:       # BB#0:
   3044 ; AVX2-NEXT:    vpcmpgtq %ymm6, %ymm2, %ymm2
   3045 ; AVX2-NEXT:    vpshufd {{.*#+}} ymm2 = ymm2[0,2,0,2,4,6,4,6]
   3046 ; AVX2-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,3,2,3]
   3047 ; AVX2-NEXT:    vpcmpgtq %ymm7, %ymm3, %ymm3
   3048 ; AVX2-NEXT:    vpshufd {{.*#+}} ymm3 = ymm3[0,2,0,2,4,6,4,6]
   3049 ; AVX2-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,3,2,3]
   3050 ; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm2
   3051 ; AVX2-NEXT:    vmovdqa {{.*#+}} ymm3 = [0,1,4,5,8,9,12,13,128,128,128,128,128,128,128,128,0,1,4,5,8,9,12,13,128,128,128,128,128,128,128,128]
   3052 ; AVX2-NEXT:    vpshufb %ymm3, %ymm2, %ymm2
   3053 ; AVX2-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,2,2,3]
   3054 ; AVX2-NEXT:    vmovdqa {{.*#+}} xmm6 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
   3055 ; AVX2-NEXT:    vpshufb %xmm6, %xmm2, %xmm2
   3056 ; AVX2-NEXT:    vpcmpgtq %ymm4, %ymm0, %ymm0
   3057 ; AVX2-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[0,2,0,2,4,6,4,6]
   3058 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,2,3]
   3059 ; AVX2-NEXT:    vpcmpgtq %ymm5, %ymm1, %ymm1
   3060 ; AVX2-NEXT:    vpshufd {{.*#+}} ymm1 = ymm1[0,2,0,2,4,6,4,6]
   3061 ; AVX2-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,3,2,3]
   3062 ; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   3063 ; AVX2-NEXT:    vpshufb %ymm3, %ymm0, %ymm0
   3064 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,2,3]
   3065 ; AVX2-NEXT:    vpshufb %xmm6, %xmm0, %xmm0
   3066 ; AVX2-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
   3067 ; AVX2-NEXT:    vzeroupper
   3068 ; AVX2-NEXT:    retq
   3069 ;
   3070 ; AVX512-LABEL: test_cmp_v16i64:
   3071 ; AVX512:       # BB#0:
   3072 ; AVX512-NEXT:    vextracti32x4 $3, %zmm2, %xmm4
   3073 ; AVX512-NEXT:    vpextrq $1, %xmm4, %rcx
   3074 ; AVX512-NEXT:    vextracti32x4 $3, %zmm0, %xmm5
   3075 ; AVX512-NEXT:    vpextrq $1, %xmm5, %rdx
   3076 ; AVX512-NEXT:    xorl %eax, %eax
   3077 ; AVX512-NEXT:    cmpq %rcx, %rdx
   3078 ; AVX512-NEXT:    movq $-1, %rcx
   3079 ; AVX512-NEXT:    movl $0, %edx
   3080 ; AVX512-NEXT:    cmovgq %rcx, %rdx
   3081 ; AVX512-NEXT:    vmovq %rdx, %xmm6
   3082 ; AVX512-NEXT:    vmovq %xmm4, %rdx
   3083 ; AVX512-NEXT:    vmovq %xmm5, %rsi
   3084 ; AVX512-NEXT:    cmpq %rdx, %rsi
   3085 ; AVX512-NEXT:    movl $0, %edx
   3086 ; AVX512-NEXT:    cmovgq %rcx, %rdx
   3087 ; AVX512-NEXT:    vmovq %rdx, %xmm4
   3088 ; AVX512-NEXT:    vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0]
   3089 ; AVX512-NEXT:    vextracti32x4 $2, %zmm2, %xmm5
   3090 ; AVX512-NEXT:    vpextrq $1, %xmm5, %rdx
   3091 ; AVX512-NEXT:    vextracti32x4 $2, %zmm0, %xmm6
   3092 ; AVX512-NEXT:    vpextrq $1, %xmm6, %rsi
   3093 ; AVX512-NEXT:    cmpq %rdx, %rsi
   3094 ; AVX512-NEXT:    movl $0, %edx
   3095 ; AVX512-NEXT:    cmovgq %rcx, %rdx
   3096 ; AVX512-NEXT:    vmovq %rdx, %xmm7
   3097 ; AVX512-NEXT:    vmovq %xmm5, %rdx
   3098 ; AVX512-NEXT:    vmovq %xmm6, %rsi
   3099 ; AVX512-NEXT:    cmpq %rdx, %rsi
   3100 ; AVX512-NEXT:    movl $0, %edx
   3101 ; AVX512-NEXT:    cmovgq %rcx, %rdx
   3102 ; AVX512-NEXT:    vmovq %rdx, %xmm5
   3103 ; AVX512-NEXT:    vpunpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm7[0]
   3104 ; AVX512-NEXT:    vinserti128 $1, %xmm4, %ymm5, %ymm4
   3105 ; AVX512-NEXT:    vextracti32x4 $1, %zmm2, %xmm5
   3106 ; AVX512-NEXT:    vpextrq $1, %xmm5, %rdx
   3107 ; AVX512-NEXT:    vextracti32x4 $1, %zmm0, %xmm6
   3108 ; AVX512-NEXT:    vpextrq $1, %xmm6, %rsi
   3109 ; AVX512-NEXT:    cmpq %rdx, %rsi
   3110 ; AVX512-NEXT:    movl $0, %edx
   3111 ; AVX512-NEXT:    cmovgq %rcx, %rdx
   3112 ; AVX512-NEXT:    vmovq %rdx, %xmm7
   3113 ; AVX512-NEXT:    vmovq %xmm5, %rdx
   3114 ; AVX512-NEXT:    vmovq %xmm6, %rsi
   3115 ; AVX512-NEXT:    cmpq %rdx, %rsi
   3116 ; AVX512-NEXT:    movl $0, %edx
   3117 ; AVX512-NEXT:    cmovgq %rcx, %rdx
   3118 ; AVX512-NEXT:    vmovq %rdx, %xmm5
   3119 ; AVX512-NEXT:    vpunpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm7[0]
   3120 ; AVX512-NEXT:    vpextrq $1, %xmm2, %rdx
   3121 ; AVX512-NEXT:    vpextrq $1, %xmm0, %rsi
   3122 ; AVX512-NEXT:    cmpq %rdx, %rsi
   3123 ; AVX512-NEXT:    movl $0, %edx
   3124 ; AVX512-NEXT:    cmovgq %rcx, %rdx
   3125 ; AVX512-NEXT:    vmovq %rdx, %xmm6
   3126 ; AVX512-NEXT:    vmovq %xmm2, %rdx
   3127 ; AVX512-NEXT:    vmovq %xmm0, %rsi
   3128 ; AVX512-NEXT:    cmpq %rdx, %rsi
   3129 ; AVX512-NEXT:    movl $0, %edx
   3130 ; AVX512-NEXT:    cmovgq %rcx, %rdx
   3131 ; AVX512-NEXT:    vmovq %rdx, %xmm0
   3132 ; AVX512-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm6[0]
   3133 ; AVX512-NEXT:    vinserti128 $1, %xmm5, %ymm0, %ymm0
   3134 ; AVX512-NEXT:    vinserti64x4 $1, %ymm4, %zmm0, %zmm0
   3135 ; AVX512-NEXT:    vpmovqd %zmm0, %ymm0
   3136 ; AVX512-NEXT:    vextracti32x4 $3, %zmm3, %xmm2
   3137 ; AVX512-NEXT:    vpextrq $1, %xmm2, %rdx
   3138 ; AVX512-NEXT:    vextracti32x4 $3, %zmm1, %xmm4
   3139 ; AVX512-NEXT:    vpextrq $1, %xmm4, %rsi
   3140 ; AVX512-NEXT:    cmpq %rdx, %rsi
   3141 ; AVX512-NEXT:    movl $0, %edx
   3142 ; AVX512-NEXT:    cmovgq %rcx, %rdx
   3143 ; AVX512-NEXT:    vmovq %rdx, %xmm5
   3144 ; AVX512-NEXT:    vmovq %xmm2, %rdx
   3145 ; AVX512-NEXT:    vmovq %xmm4, %rsi
   3146 ; AVX512-NEXT:    cmpq %rdx, %rsi
   3147 ; AVX512-NEXT:    movl $0, %edx
   3148 ; AVX512-NEXT:    cmovgq %rcx, %rdx
   3149 ; AVX512-NEXT:    vmovq %rdx, %xmm2
   3150 ; AVX512-NEXT:    vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm5[0]
   3151 ; AVX512-NEXT:    vextracti32x4 $2, %zmm3, %xmm4
   3152 ; AVX512-NEXT:    vpextrq $1, %xmm4, %rdx
   3153 ; AVX512-NEXT:    vextracti32x4 $2, %zmm1, %xmm5
   3154 ; AVX512-NEXT:    vpextrq $1, %xmm5, %rsi
   3155 ; AVX512-NEXT:    cmpq %rdx, %rsi
   3156 ; AVX512-NEXT:    movl $0, %edx
   3157 ; AVX512-NEXT:    cmovgq %rcx, %rdx
   3158 ; AVX512-NEXT:    vmovq %rdx, %xmm6
   3159 ; AVX512-NEXT:    vmovq %xmm4, %rdx
   3160 ; AVX512-NEXT:    vmovq %xmm5, %rsi
   3161 ; AVX512-NEXT:    cmpq %rdx, %rsi
   3162 ; AVX512-NEXT:    movl $0, %edx
   3163 ; AVX512-NEXT:    cmovgq %rcx, %rdx
   3164 ; AVX512-NEXT:    vmovq %rdx, %xmm4
   3165 ; AVX512-NEXT:    vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0]
   3166 ; AVX512-NEXT:    vinserti128 $1, %xmm2, %ymm4, %ymm2
   3167 ; AVX512-NEXT:    vextracti32x4 $1, %zmm3, %xmm4
   3168 ; AVX512-NEXT:    vpextrq $1, %xmm4, %rdx
   3169 ; AVX512-NEXT:    vextracti32x4 $1, %zmm1, %xmm5
   3170 ; AVX512-NEXT:    vpextrq $1, %xmm5, %rsi
   3171 ; AVX512-NEXT:    cmpq %rdx, %rsi
   3172 ; AVX512-NEXT:    movl $0, %edx
   3173 ; AVX512-NEXT:    cmovgq %rcx, %rdx
   3174 ; AVX512-NEXT:    vmovq %rdx, %xmm6
   3175 ; AVX512-NEXT:    vmovq %xmm4, %rdx
   3176 ; AVX512-NEXT:    vmovq %xmm5, %rsi
   3177 ; AVX512-NEXT:    cmpq %rdx, %rsi
   3178 ; AVX512-NEXT:    movl $0, %edx
   3179 ; AVX512-NEXT:    cmovgq %rcx, %rdx
   3180 ; AVX512-NEXT:    vmovq %rdx, %xmm4
   3181 ; AVX512-NEXT:    vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0]
   3182 ; AVX512-NEXT:    vpextrq $1, %xmm3, %rdx
   3183 ; AVX512-NEXT:    vpextrq $1, %xmm1, %rsi
   3184 ; AVX512-NEXT:    cmpq %rdx, %rsi
   3185 ; AVX512-NEXT:    movl $0, %edx
   3186 ; AVX512-NEXT:    cmovgq %rcx, %rdx
   3187 ; AVX512-NEXT:    vmovq %rdx, %xmm5
   3188 ; AVX512-NEXT:    vmovq %xmm3, %rdx
   3189 ; AVX512-NEXT:    vmovq %xmm1, %rsi
   3190 ; AVX512-NEXT:    cmpq %rdx, %rsi
   3191 ; AVX512-NEXT:    cmovgq %rcx, %rax
   3192 ; AVX512-NEXT:    vmovq %rax, %xmm1
   3193 ; AVX512-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm5[0]
   3194 ; AVX512-NEXT:    vinserti128 $1, %xmm4, %ymm1, %ymm1
   3195 ; AVX512-NEXT:    vinserti64x4 $1, %ymm2, %zmm1, %zmm1
   3196 ; AVX512-NEXT:    vpmovqd %zmm1, %ymm1
   3197 ; AVX512-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0
   3198 ; AVX512-NEXT:    vpmovdb %zmm0, %xmm0
   3199 ; AVX512-NEXT:    retq
   3200   %1 = icmp sgt <16 x i64> %a0, %a1
   3201   ret <16 x i1> %1
   3202 }
   3203 
   3204 define <32 x i1> @test_cmp_v32i32(<32 x i32> %a0, <32 x i32> %a1) nounwind {
   3205 ; SSE2-LABEL: test_cmp_v32i32:
   3206 ; SSE2:       # BB#0:
   3207 ; SSE2-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm3
   3208 ; SSE2-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,2,2,3,4,5,6,7]
   3209 ; SSE2-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,6,6,7]
   3210 ; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3]
   3211 ; SSE2-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm2
   3212 ; SSE2-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,2,2,3,4,5,6,7]
   3213 ; SSE2-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7]
   3214 ; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]
   3215 ; SSE2-NEXT:    punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0]
   3216 ; SSE2-NEXT:    psllw $15, %xmm2
   3217 ; SSE2-NEXT:    psraw $15, %xmm2
   3218 ; SSE2-NEXT:    movdqa {{.*#+}} xmm3 = [255,255,255,255,255,255,255,255]
   3219 ; SSE2-NEXT:    pand %xmm3, %xmm2
   3220 ; SSE2-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm1
   3221 ; SSE2-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,2,2,3,4,5,6,7]
   3222 ; SSE2-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7]
   3223 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
   3224 ; SSE2-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm0
   3225 ; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]
   3226 ; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,6,7]
   3227 ; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
   3228 ; SSE2-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
   3229 ; SSE2-NEXT:    psllw $15, %xmm0
   3230 ; SSE2-NEXT:    psraw $15, %xmm0
   3231 ; SSE2-NEXT:    pand %xmm3, %xmm0
   3232 ; SSE2-NEXT:    packuswb %xmm2, %xmm0
   3233 ; SSE2-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm7
   3234 ; SSE2-NEXT:    pshuflw {{.*#+}} xmm1 = xmm7[0,2,2,3,4,5,6,7]
   3235 ; SSE2-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7]
   3236 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
   3237 ; SSE2-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm6
   3238 ; SSE2-NEXT:    pshuflw {{.*#+}} xmm2 = xmm6[0,2,2,3,4,5,6,7]
   3239 ; SSE2-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7]
   3240 ; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]
   3241 ; SSE2-NEXT:    punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm1[0]
   3242 ; SSE2-NEXT:    psllw $15, %xmm2
   3243 ; SSE2-NEXT:    psraw $15, %xmm2
   3244 ; SSE2-NEXT:    pand %xmm3, %xmm2
   3245 ; SSE2-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm5
   3246 ; SSE2-NEXT:    pshuflw {{.*#+}} xmm1 = xmm5[0,2,2,3,4,5,6,7]
   3247 ; SSE2-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7]
   3248 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
   3249 ; SSE2-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm4
   3250 ; SSE2-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,2,2,3,4,5,6,7]
   3251 ; SSE2-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,6,6,7]
   3252 ; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3]
   3253 ; SSE2-NEXT:    punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm1[0]
   3254 ; SSE2-NEXT:    psllw $15, %xmm4
   3255 ; SSE2-NEXT:    psraw $15, %xmm4
   3256 ; SSE2-NEXT:    pand %xmm3, %xmm4
   3257 ; SSE2-NEXT:    packuswb %xmm2, %xmm4
   3258 ; SSE2-NEXT:    movdqa %xmm4, -{{[0-9]+}}(%rsp)
   3259 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3260 ; SSE2-NEXT:    andb $1, %al
   3261 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3262 ; SSE2-NEXT:    movdqa %xmm0, -{{[0-9]+}}(%rsp)
   3263 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3264 ; SSE2-NEXT:    andb $1, %al
   3265 ; SSE2-NEXT:    movb %al, (%rdi)
   3266 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3267 ; SSE2-NEXT:    andb $1, %al
   3268 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3269 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3270 ; SSE2-NEXT:    andb $1, %al
   3271 ; SSE2-NEXT:    movb %al, (%rdi)
   3272 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3273 ; SSE2-NEXT:    andb $1, %al
   3274 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3275 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3276 ; SSE2-NEXT:    andb $1, %al
   3277 ; SSE2-NEXT:    movb %al, (%rdi)
   3278 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3279 ; SSE2-NEXT:    andb $1, %al
   3280 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3281 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3282 ; SSE2-NEXT:    andb $1, %al
   3283 ; SSE2-NEXT:    movb %al, (%rdi)
   3284 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3285 ; SSE2-NEXT:    andb $1, %al
   3286 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3287 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3288 ; SSE2-NEXT:    andb $1, %al
   3289 ; SSE2-NEXT:    movb %al, (%rdi)
   3290 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3291 ; SSE2-NEXT:    andb $1, %al
   3292 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3293 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3294 ; SSE2-NEXT:    andb $1, %al
   3295 ; SSE2-NEXT:    movb %al, (%rdi)
   3296 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3297 ; SSE2-NEXT:    andb $1, %al
   3298 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3299 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3300 ; SSE2-NEXT:    andb $1, %al
   3301 ; SSE2-NEXT:    movb %al, (%rdi)
   3302 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3303 ; SSE2-NEXT:    andb $1, %al
   3304 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3305 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3306 ; SSE2-NEXT:    andb $1, %al
   3307 ; SSE2-NEXT:    movb %al, (%rdi)
   3308 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3309 ; SSE2-NEXT:    andb $1, %al
   3310 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3311 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3312 ; SSE2-NEXT:    andb $1, %al
   3313 ; SSE2-NEXT:    movb %al, (%rdi)
   3314 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3315 ; SSE2-NEXT:    andb $1, %al
   3316 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3317 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3318 ; SSE2-NEXT:    andb $1, %al
   3319 ; SSE2-NEXT:    movb %al, (%rdi)
   3320 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3321 ; SSE2-NEXT:    andb $1, %al
   3322 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3323 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3324 ; SSE2-NEXT:    andb $1, %al
   3325 ; SSE2-NEXT:    movb %al, (%rdi)
   3326 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3327 ; SSE2-NEXT:    andb $1, %al
   3328 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3329 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3330 ; SSE2-NEXT:    andb $1, %al
   3331 ; SSE2-NEXT:    movb %al, (%rdi)
   3332 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3333 ; SSE2-NEXT:    andb $1, %al
   3334 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3335 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3336 ; SSE2-NEXT:    andb $1, %al
   3337 ; SSE2-NEXT:    movb %al, (%rdi)
   3338 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3339 ; SSE2-NEXT:    andb $1, %al
   3340 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3341 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3342 ; SSE2-NEXT:    andb $1, %al
   3343 ; SSE2-NEXT:    movb %al, (%rdi)
   3344 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3345 ; SSE2-NEXT:    andb $1, %al
   3346 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3347 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3348 ; SSE2-NEXT:    andb $1, %al
   3349 ; SSE2-NEXT:    movb %al, (%rdi)
   3350 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3351 ; SSE2-NEXT:    andb $1, %al
   3352 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3353 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3354 ; SSE2-NEXT:    andb $1, %al
   3355 ; SSE2-NEXT:    movb %al, (%rdi)
   3356 ; SSE2-NEXT:    movq %rdi, %rax
   3357 ; SSE2-NEXT:    retq
   3358 ;
   3359 ; SSE42-LABEL: test_cmp_v32i32:
   3360 ; SSE42:       # BB#0:
   3361 ; SSE42-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm3
   3362 ; SSE42-NEXT:    movdqa {{.*#+}} xmm8 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]
   3363 ; SSE42-NEXT:    pshufb %xmm8, %xmm3
   3364 ; SSE42-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm2
   3365 ; SSE42-NEXT:    pshufb %xmm8, %xmm2
   3366 ; SSE42-NEXT:    punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0]
   3367 ; SSE42-NEXT:    psllw $15, %xmm2
   3368 ; SSE42-NEXT:    psraw $15, %xmm2
   3369 ; SSE42-NEXT:    movdqa {{.*#+}} xmm3 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
   3370 ; SSE42-NEXT:    pshufb %xmm3, %xmm2
   3371 ; SSE42-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm1
   3372 ; SSE42-NEXT:    pshufb %xmm8, %xmm1
   3373 ; SSE42-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm0
   3374 ; SSE42-NEXT:    pshufb %xmm8, %xmm0
   3375 ; SSE42-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
   3376 ; SSE42-NEXT:    psllw $15, %xmm0
   3377 ; SSE42-NEXT:    psraw $15, %xmm0
   3378 ; SSE42-NEXT:    pshufb %xmm3, %xmm0
   3379 ; SSE42-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
   3380 ; SSE42-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm7
   3381 ; SSE42-NEXT:    pshufb %xmm8, %xmm7
   3382 ; SSE42-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm6
   3383 ; SSE42-NEXT:    pshufb %xmm8, %xmm6
   3384 ; SSE42-NEXT:    punpcklqdq {{.*#+}} xmm6 = xmm6[0],xmm7[0]
   3385 ; SSE42-NEXT:    psllw $15, %xmm6
   3386 ; SSE42-NEXT:    psraw $15, %xmm6
   3387 ; SSE42-NEXT:    pshufb %xmm3, %xmm6
   3388 ; SSE42-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm5
   3389 ; SSE42-NEXT:    pshufb %xmm8, %xmm5
   3390 ; SSE42-NEXT:    pcmpgtd {{[0-9]+}}(%rsp), %xmm4
   3391 ; SSE42-NEXT:    pshufb %xmm8, %xmm4
   3392 ; SSE42-NEXT:    punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0]
   3393 ; SSE42-NEXT:    psllw $15, %xmm4
   3394 ; SSE42-NEXT:    psraw $15, %xmm4
   3395 ; SSE42-NEXT:    pshufb %xmm3, %xmm4
   3396 ; SSE42-NEXT:    punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0]
   3397 ; SSE42-NEXT:    pextrb $15, %xmm4, %eax
   3398 ; SSE42-NEXT:    andb $1, %al
   3399 ; SSE42-NEXT:    movb %al, 2(%rdi)
   3400 ; SSE42-NEXT:    pextrb $14, %xmm4, %eax
   3401 ; SSE42-NEXT:    andb $1, %al
   3402 ; SSE42-NEXT:    movb %al, 2(%rdi)
   3403 ; SSE42-NEXT:    pextrb $13, %xmm4, %eax
   3404 ; SSE42-NEXT:    andb $1, %al
   3405 ; SSE42-NEXT:    movb %al, 2(%rdi)
   3406 ; SSE42-NEXT:    pextrb $12, %xmm4, %eax
   3407 ; SSE42-NEXT:    andb $1, %al
   3408 ; SSE42-NEXT:    movb %al, 2(%rdi)
   3409 ; SSE42-NEXT:    pextrb $11, %xmm4, %eax
   3410 ; SSE42-NEXT:    andb $1, %al
   3411 ; SSE42-NEXT:    movb %al, 2(%rdi)
   3412 ; SSE42-NEXT:    pextrb $10, %xmm4, %eax
   3413 ; SSE42-NEXT:    andb $1, %al
   3414 ; SSE42-NEXT:    movb %al, 2(%rdi)
   3415 ; SSE42-NEXT:    pextrb $9, %xmm4, %eax
   3416 ; SSE42-NEXT:    andb $1, %al
   3417 ; SSE42-NEXT:    movb %al, 2(%rdi)
   3418 ; SSE42-NEXT:    pextrb $8, %xmm4, %eax
   3419 ; SSE42-NEXT:    andb $1, %al
   3420 ; SSE42-NEXT:    movb %al, 2(%rdi)
   3421 ; SSE42-NEXT:    pextrb $7, %xmm4, %eax
   3422 ; SSE42-NEXT:    andb $1, %al
   3423 ; SSE42-NEXT:    movb %al, 2(%rdi)
   3424 ; SSE42-NEXT:    pextrb $6, %xmm4, %eax
   3425 ; SSE42-NEXT:    andb $1, %al
   3426 ; SSE42-NEXT:    movb %al, 2(%rdi)
   3427 ; SSE42-NEXT:    pextrb $5, %xmm4, %eax
   3428 ; SSE42-NEXT:    andb $1, %al
   3429 ; SSE42-NEXT:    movb %al, 2(%rdi)
   3430 ; SSE42-NEXT:    pextrb $4, %xmm4, %eax
   3431 ; SSE42-NEXT:    andb $1, %al
   3432 ; SSE42-NEXT:    movb %al, 2(%rdi)
   3433 ; SSE42-NEXT:    pextrb $3, %xmm4, %eax
   3434 ; SSE42-NEXT:    andb $1, %al
   3435 ; SSE42-NEXT:    movb %al, 2(%rdi)
   3436 ; SSE42-NEXT:    pextrb $2, %xmm4, %eax
   3437 ; SSE42-NEXT:    andb $1, %al
   3438 ; SSE42-NEXT:    movb %al, 2(%rdi)
   3439 ; SSE42-NEXT:    pextrb $1, %xmm4, %eax
   3440 ; SSE42-NEXT:    andb $1, %al
   3441 ; SSE42-NEXT:    movb %al, 2(%rdi)
   3442 ; SSE42-NEXT:    pextrb $0, %xmm4, %eax
   3443 ; SSE42-NEXT:    andb $1, %al
   3444 ; SSE42-NEXT:    movb %al, 2(%rdi)
   3445 ; SSE42-NEXT:    pextrb $15, %xmm0, %eax
   3446 ; SSE42-NEXT:    andb $1, %al
   3447 ; SSE42-NEXT:    movb %al, (%rdi)
   3448 ; SSE42-NEXT:    pextrb $14, %xmm0, %eax
   3449 ; SSE42-NEXT:    andb $1, %al
   3450 ; SSE42-NEXT:    movb %al, (%rdi)
   3451 ; SSE42-NEXT:    pextrb $13, %xmm0, %eax
   3452 ; SSE42-NEXT:    andb $1, %al
   3453 ; SSE42-NEXT:    movb %al, (%rdi)
   3454 ; SSE42-NEXT:    pextrb $12, %xmm0, %eax
   3455 ; SSE42-NEXT:    andb $1, %al
   3456 ; SSE42-NEXT:    movb %al, (%rdi)
   3457 ; SSE42-NEXT:    pextrb $11, %xmm0, %eax
   3458 ; SSE42-NEXT:    andb $1, %al
   3459 ; SSE42-NEXT:    movb %al, (%rdi)
   3460 ; SSE42-NEXT:    pextrb $10, %xmm0, %eax
   3461 ; SSE42-NEXT:    andb $1, %al
   3462 ; SSE42-NEXT:    movb %al, (%rdi)
   3463 ; SSE42-NEXT:    pextrb $9, %xmm0, %eax
   3464 ; SSE42-NEXT:    andb $1, %al
   3465 ; SSE42-NEXT:    movb %al, (%rdi)
   3466 ; SSE42-NEXT:    pextrb $8, %xmm0, %eax
   3467 ; SSE42-NEXT:    andb $1, %al
   3468 ; SSE42-NEXT:    movb %al, (%rdi)
   3469 ; SSE42-NEXT:    pextrb $7, %xmm0, %eax
   3470 ; SSE42-NEXT:    andb $1, %al
   3471 ; SSE42-NEXT:    movb %al, (%rdi)
   3472 ; SSE42-NEXT:    pextrb $6, %xmm0, %eax
   3473 ; SSE42-NEXT:    andb $1, %al
   3474 ; SSE42-NEXT:    movb %al, (%rdi)
   3475 ; SSE42-NEXT:    pextrb $5, %xmm0, %eax
   3476 ; SSE42-NEXT:    andb $1, %al
   3477 ; SSE42-NEXT:    movb %al, (%rdi)
   3478 ; SSE42-NEXT:    pextrb $4, %xmm0, %eax
   3479 ; SSE42-NEXT:    andb $1, %al
   3480 ; SSE42-NEXT:    movb %al, (%rdi)
   3481 ; SSE42-NEXT:    pextrb $3, %xmm0, %eax
   3482 ; SSE42-NEXT:    andb $1, %al
   3483 ; SSE42-NEXT:    movb %al, (%rdi)
   3484 ; SSE42-NEXT:    pextrb $2, %xmm0, %eax
   3485 ; SSE42-NEXT:    andb $1, %al
   3486 ; SSE42-NEXT:    movb %al, (%rdi)
   3487 ; SSE42-NEXT:    pextrb $1, %xmm0, %eax
   3488 ; SSE42-NEXT:    andb $1, %al
   3489 ; SSE42-NEXT:    movb %al, (%rdi)
   3490 ; SSE42-NEXT:    pextrb $0, %xmm0, %eax
   3491 ; SSE42-NEXT:    andb $1, %al
   3492 ; SSE42-NEXT:    movb %al, (%rdi)
   3493 ; SSE42-NEXT:    movq %rdi, %rax
   3494 ; SSE42-NEXT:    retq
   3495 ;
   3496 ; AVX1-LABEL: test_cmp_v32i32:
   3497 ; AVX1:       # BB#0:
   3498 ; AVX1-NEXT:    vextractf128 $1, %ymm7, %xmm8
   3499 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm9
   3500 ; AVX1-NEXT:    vpcmpgtd %xmm8, %xmm9, %xmm9
   3501 ; AVX1-NEXT:    vmovdqa {{.*#+}} xmm8 = [255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0]
   3502 ; AVX1-NEXT:    vpand %xmm8, %xmm9, %xmm9
   3503 ; AVX1-NEXT:    vpcmpgtd %xmm7, %xmm3, %xmm3
   3504 ; AVX1-NEXT:    vpand %xmm8, %xmm3, %xmm3
   3505 ; AVX1-NEXT:    vpackuswb %xmm9, %xmm3, %xmm9
   3506 ; AVX1-NEXT:    vextractf128 $1, %ymm6, %xmm7
   3507 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm3
   3508 ; AVX1-NEXT:    vpcmpgtd %xmm7, %xmm3, %xmm3
   3509 ; AVX1-NEXT:    vpand %xmm8, %xmm3, %xmm3
   3510 ; AVX1-NEXT:    vpcmpgtd %xmm6, %xmm2, %xmm2
   3511 ; AVX1-NEXT:    vpand %xmm8, %xmm2, %xmm2
   3512 ; AVX1-NEXT:    vpackuswb %xmm3, %xmm2, %xmm2
   3513 ; AVX1-NEXT:    vpackuswb %xmm9, %xmm2, %xmm2
   3514 ; AVX1-NEXT:    vextractf128 $1, %ymm5, %xmm3
   3515 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm6
   3516 ; AVX1-NEXT:    vpcmpgtd %xmm3, %xmm6, %xmm3
   3517 ; AVX1-NEXT:    vpand %xmm8, %xmm3, %xmm3
   3518 ; AVX1-NEXT:    vpcmpgtd %xmm5, %xmm1, %xmm1
   3519 ; AVX1-NEXT:    vpand %xmm8, %xmm1, %xmm1
   3520 ; AVX1-NEXT:    vpackuswb %xmm3, %xmm1, %xmm1
   3521 ; AVX1-NEXT:    vextractf128 $1, %ymm4, %xmm3
   3522 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm5
   3523 ; AVX1-NEXT:    vpcmpgtd %xmm3, %xmm5, %xmm3
   3524 ; AVX1-NEXT:    vpand %xmm8, %xmm3, %xmm3
   3525 ; AVX1-NEXT:    vpcmpgtd %xmm4, %xmm0, %xmm0
   3526 ; AVX1-NEXT:    vpand %xmm8, %xmm0, %xmm0
   3527 ; AVX1-NEXT:    vpackuswb %xmm3, %xmm0, %xmm0
   3528 ; AVX1-NEXT:    vpackuswb %xmm1, %xmm0, %xmm0
   3529 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
   3530 ; AVX1-NEXT:    retq
   3531 ;
   3532 ; AVX2-LABEL: test_cmp_v32i32:
   3533 ; AVX2:       # BB#0:
   3534 ; AVX2-NEXT:    vpcmpgtd %ymm7, %ymm3, %ymm3
   3535 ; AVX2-NEXT:    vmovdqa {{.*#+}} ymm8 = [0,1,4,5,8,9,12,13,128,128,128,128,128,128,128,128,0,1,4,5,8,9,12,13,128,128,128,128,128,128,128,128]
   3536 ; AVX2-NEXT:    vpshufb %ymm8, %ymm3, %ymm3
   3537 ; AVX2-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,2,2,3]
   3538 ; AVX2-NEXT:    vmovdqa {{.*#+}} xmm7 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
   3539 ; AVX2-NEXT:    vpshufb %xmm7, %xmm3, %xmm3
   3540 ; AVX2-NEXT:    vpcmpgtd %ymm6, %ymm2, %ymm2
   3541 ; AVX2-NEXT:    vpshufb %ymm8, %ymm2, %ymm2
   3542 ; AVX2-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,2,2,3]
   3543 ; AVX2-NEXT:    vpshufb %xmm7, %xmm2, %xmm2
   3544 ; AVX2-NEXT:    vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0]
   3545 ; AVX2-NEXT:    vpcmpgtd %ymm5, %ymm1, %ymm1
   3546 ; AVX2-NEXT:    vpshufb %ymm8, %ymm1, %ymm1
   3547 ; AVX2-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]
   3548 ; AVX2-NEXT:    vpshufb %xmm7, %xmm1, %xmm1
   3549 ; AVX2-NEXT:    vpcmpgtd %ymm4, %ymm0, %ymm0
   3550 ; AVX2-NEXT:    vpshufb %ymm8, %ymm0, %ymm0
   3551 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,2,3]
   3552 ; AVX2-NEXT:    vpshufb %xmm7, %xmm0, %xmm0
   3553 ; AVX2-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
   3554 ; AVX2-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm0
   3555 ; AVX2-NEXT:    retq
   3556 ;
   3557 ; AVX512-LABEL: test_cmp_v32i32:
   3558 ; AVX512:       # BB#0:
   3559 ; AVX512-NEXT:    vextracti32x4 $3, %zmm2, %xmm4
   3560 ; AVX512-NEXT:    vpextrd $1, %xmm4, %ecx
   3561 ; AVX512-NEXT:    vextracti32x4 $3, %zmm0, %xmm5
   3562 ; AVX512-NEXT:    vpextrd $1, %xmm5, %edx
   3563 ; AVX512-NEXT:    xorl %eax, %eax
   3564 ; AVX512-NEXT:    cmpl %ecx, %edx
   3565 ; AVX512-NEXT:    movl $-1, %ecx
   3566 ; AVX512-NEXT:    movl $0, %edx
   3567 ; AVX512-NEXT:    cmovgl %ecx, %edx
   3568 ; AVX512-NEXT:    vmovd %xmm4, %esi
   3569 ; AVX512-NEXT:    vmovd %xmm5, %edi
   3570 ; AVX512-NEXT:    cmpl %esi, %edi
   3571 ; AVX512-NEXT:    movl $0, %esi
   3572 ; AVX512-NEXT:    cmovgl %ecx, %esi
   3573 ; AVX512-NEXT:    vmovd %esi, %xmm6
   3574 ; AVX512-NEXT:    vpinsrd $1, %edx, %xmm6, %xmm6
   3575 ; AVX512-NEXT:    vpextrd $2, %xmm4, %edx
   3576 ; AVX512-NEXT:    vpextrd $2, %xmm5, %esi
   3577 ; AVX512-NEXT:    cmpl %edx, %esi
   3578 ; AVX512-NEXT:    movl $0, %edx
   3579 ; AVX512-NEXT:    cmovgl %ecx, %edx
   3580 ; AVX512-NEXT:    vpinsrd $2, %edx, %xmm6, %xmm6
   3581 ; AVX512-NEXT:    vpextrd $3, %xmm4, %edx
   3582 ; AVX512-NEXT:    vpextrd $3, %xmm5, %esi
   3583 ; AVX512-NEXT:    cmpl %edx, %esi
   3584 ; AVX512-NEXT:    movl $0, %edx
   3585 ; AVX512-NEXT:    cmovgl %ecx, %edx
   3586 ; AVX512-NEXT:    vpinsrd $3, %edx, %xmm6, %xmm4
   3587 ; AVX512-NEXT:    vextracti32x4 $2, %zmm2, %xmm5
   3588 ; AVX512-NEXT:    vpextrd $1, %xmm5, %edx
   3589 ; AVX512-NEXT:    vextracti32x4 $2, %zmm0, %xmm6
   3590 ; AVX512-NEXT:    vpextrd $1, %xmm6, %esi
   3591 ; AVX512-NEXT:    cmpl %edx, %esi
   3592 ; AVX512-NEXT:    movl $0, %edx
   3593 ; AVX512-NEXT:    cmovgl %ecx, %edx
   3594 ; AVX512-NEXT:    vmovd %xmm5, %esi
   3595 ; AVX512-NEXT:    vmovd %xmm6, %edi
   3596 ; AVX512-NEXT:    cmpl %esi, %edi
   3597 ; AVX512-NEXT:    movl $0, %esi
   3598 ; AVX512-NEXT:    cmovgl %ecx, %esi
   3599 ; AVX512-NEXT:    vmovd %esi, %xmm7
   3600 ; AVX512-NEXT:    vpinsrd $1, %edx, %xmm7, %xmm7
   3601 ; AVX512-NEXT:    vpextrd $2, %xmm5, %edx
   3602 ; AVX512-NEXT:    vpextrd $2, %xmm6, %esi
   3603 ; AVX512-NEXT:    cmpl %edx, %esi
   3604 ; AVX512-NEXT:    movl $0, %edx
   3605 ; AVX512-NEXT:    cmovgl %ecx, %edx
   3606 ; AVX512-NEXT:    vpinsrd $2, %edx, %xmm7, %xmm7
   3607 ; AVX512-NEXT:    vpextrd $3, %xmm5, %edx
   3608 ; AVX512-NEXT:    vpextrd $3, %xmm6, %esi
   3609 ; AVX512-NEXT:    cmpl %edx, %esi
   3610 ; AVX512-NEXT:    movl $0, %edx
   3611 ; AVX512-NEXT:    cmovgl %ecx, %edx
   3612 ; AVX512-NEXT:    vpinsrd $3, %edx, %xmm7, %xmm5
   3613 ; AVX512-NEXT:    vinserti128 $1, %xmm4, %ymm5, %ymm4
   3614 ; AVX512-NEXT:    vextracti32x4 $1, %zmm2, %xmm5
   3615 ; AVX512-NEXT:    vpextrd $1, %xmm5, %edx
   3616 ; AVX512-NEXT:    vextracti32x4 $1, %zmm0, %xmm6
   3617 ; AVX512-NEXT:    vpextrd $1, %xmm6, %esi
   3618 ; AVX512-NEXT:    cmpl %edx, %esi
   3619 ; AVX512-NEXT:    movl $0, %edx
   3620 ; AVX512-NEXT:    cmovgl %ecx, %edx
   3621 ; AVX512-NEXT:    vmovd %xmm5, %esi
   3622 ; AVX512-NEXT:    vmovd %xmm6, %edi
   3623 ; AVX512-NEXT:    cmpl %esi, %edi
   3624 ; AVX512-NEXT:    movl $0, %esi
   3625 ; AVX512-NEXT:    cmovgl %ecx, %esi
   3626 ; AVX512-NEXT:    vmovd %esi, %xmm7
   3627 ; AVX512-NEXT:    vpinsrd $1, %edx, %xmm7, %xmm7
   3628 ; AVX512-NEXT:    vpextrd $2, %xmm5, %edx
   3629 ; AVX512-NEXT:    vpextrd $2, %xmm6, %esi
   3630 ; AVX512-NEXT:    cmpl %edx, %esi
   3631 ; AVX512-NEXT:    movl $0, %edx
   3632 ; AVX512-NEXT:    cmovgl %ecx, %edx
   3633 ; AVX512-NEXT:    vpinsrd $2, %edx, %xmm7, %xmm7
   3634 ; AVX512-NEXT:    vpextrd $3, %xmm5, %edx
   3635 ; AVX512-NEXT:    vpextrd $3, %xmm6, %esi
   3636 ; AVX512-NEXT:    cmpl %edx, %esi
   3637 ; AVX512-NEXT:    movl $0, %edx
   3638 ; AVX512-NEXT:    cmovgl %ecx, %edx
   3639 ; AVX512-NEXT:    vpinsrd $3, %edx, %xmm7, %xmm5
   3640 ; AVX512-NEXT:    vpextrd $1, %xmm2, %edx
   3641 ; AVX512-NEXT:    vpextrd $1, %xmm0, %esi
   3642 ; AVX512-NEXT:    cmpl %edx, %esi
   3643 ; AVX512-NEXT:    movl $0, %edx
   3644 ; AVX512-NEXT:    cmovgl %ecx, %edx
   3645 ; AVX512-NEXT:    vmovd %xmm2, %esi
   3646 ; AVX512-NEXT:    vmovd %xmm0, %edi
   3647 ; AVX512-NEXT:    cmpl %esi, %edi
   3648 ; AVX512-NEXT:    movl $0, %esi
   3649 ; AVX512-NEXT:    cmovgl %ecx, %esi
   3650 ; AVX512-NEXT:    vmovd %esi, %xmm6
   3651 ; AVX512-NEXT:    vpinsrd $1, %edx, %xmm6, %xmm6
   3652 ; AVX512-NEXT:    vpextrd $2, %xmm2, %edx
   3653 ; AVX512-NEXT:    vpextrd $2, %xmm0, %esi
   3654 ; AVX512-NEXT:    cmpl %edx, %esi
   3655 ; AVX512-NEXT:    movl $0, %edx
   3656 ; AVX512-NEXT:    cmovgl %ecx, %edx
   3657 ; AVX512-NEXT:    vpinsrd $2, %edx, %xmm6, %xmm6
   3658 ; AVX512-NEXT:    vpextrd $3, %xmm2, %edx
   3659 ; AVX512-NEXT:    vpextrd $3, %xmm0, %esi
   3660 ; AVX512-NEXT:    cmpl %edx, %esi
   3661 ; AVX512-NEXT:    movl $0, %edx
   3662 ; AVX512-NEXT:    cmovgl %ecx, %edx
   3663 ; AVX512-NEXT:    vpinsrd $3, %edx, %xmm6, %xmm0
   3664 ; AVX512-NEXT:    vinserti128 $1, %xmm5, %ymm0, %ymm0
   3665 ; AVX512-NEXT:    vinserti64x4 $1, %ymm4, %zmm0, %zmm0
   3666 ; AVX512-NEXT:    vpmovdb %zmm0, %xmm0
   3667 ; AVX512-NEXT:    vextracti32x4 $3, %zmm3, %xmm2
   3668 ; AVX512-NEXT:    vpextrd $1, %xmm2, %edx
   3669 ; AVX512-NEXT:    vextracti32x4 $3, %zmm1, %xmm4
   3670 ; AVX512-NEXT:    vpextrd $1, %xmm4, %esi
   3671 ; AVX512-NEXT:    cmpl %edx, %esi
   3672 ; AVX512-NEXT:    movl $0, %edx
   3673 ; AVX512-NEXT:    cmovgl %ecx, %edx
   3674 ; AVX512-NEXT:    vmovd %xmm2, %esi
   3675 ; AVX512-NEXT:    vmovd %xmm4, %edi
   3676 ; AVX512-NEXT:    cmpl %esi, %edi
   3677 ; AVX512-NEXT:    movl $0, %esi
   3678 ; AVX512-NEXT:    cmovgl %ecx, %esi
   3679 ; AVX512-NEXT:    vmovd %esi, %xmm5
   3680 ; AVX512-NEXT:    vpinsrd $1, %edx, %xmm5, %xmm5
   3681 ; AVX512-NEXT:    vpextrd $2, %xmm2, %edx
   3682 ; AVX512-NEXT:    vpextrd $2, %xmm4, %esi
   3683 ; AVX512-NEXT:    cmpl %edx, %esi
   3684 ; AVX512-NEXT:    movl $0, %edx
   3685 ; AVX512-NEXT:    cmovgl %ecx, %edx
   3686 ; AVX512-NEXT:    vpinsrd $2, %edx, %xmm5, %xmm5
   3687 ; AVX512-NEXT:    vpextrd $3, %xmm2, %edx
   3688 ; AVX512-NEXT:    vpextrd $3, %xmm4, %esi
   3689 ; AVX512-NEXT:    cmpl %edx, %esi
   3690 ; AVX512-NEXT:    movl $0, %edx
   3691 ; AVX512-NEXT:    cmovgl %ecx, %edx
   3692 ; AVX512-NEXT:    vpinsrd $3, %edx, %xmm5, %xmm2
   3693 ; AVX512-NEXT:    vextracti32x4 $2, %zmm3, %xmm4
   3694 ; AVX512-NEXT:    vpextrd $1, %xmm4, %edx
   3695 ; AVX512-NEXT:    vextracti32x4 $2, %zmm1, %xmm5
   3696 ; AVX512-NEXT:    vpextrd $1, %xmm5, %esi
   3697 ; AVX512-NEXT:    cmpl %edx, %esi
   3698 ; AVX512-NEXT:    movl $0, %edx
   3699 ; AVX512-NEXT:    cmovgl %ecx, %edx
   3700 ; AVX512-NEXT:    vmovd %xmm4, %esi
   3701 ; AVX512-NEXT:    vmovd %xmm5, %edi
   3702 ; AVX512-NEXT:    cmpl %esi, %edi
   3703 ; AVX512-NEXT:    movl $0, %esi
   3704 ; AVX512-NEXT:    cmovgl %ecx, %esi
   3705 ; AVX512-NEXT:    vmovd %esi, %xmm6
   3706 ; AVX512-NEXT:    vpinsrd $1, %edx, %xmm6, %xmm6
   3707 ; AVX512-NEXT:    vpextrd $2, %xmm4, %edx
   3708 ; AVX512-NEXT:    vpextrd $2, %xmm5, %esi
   3709 ; AVX512-NEXT:    cmpl %edx, %esi
   3710 ; AVX512-NEXT:    movl $0, %edx
   3711 ; AVX512-NEXT:    cmovgl %ecx, %edx
   3712 ; AVX512-NEXT:    vpinsrd $2, %edx, %xmm6, %xmm6
   3713 ; AVX512-NEXT:    vpextrd $3, %xmm4, %edx
   3714 ; AVX512-NEXT:    vpextrd $3, %xmm5, %esi
   3715 ; AVX512-NEXT:    cmpl %edx, %esi
   3716 ; AVX512-NEXT:    movl $0, %edx
   3717 ; AVX512-NEXT:    cmovgl %ecx, %edx
   3718 ; AVX512-NEXT:    vpinsrd $3, %edx, %xmm6, %xmm4
   3719 ; AVX512-NEXT:    vinserti128 $1, %xmm2, %ymm4, %ymm2
   3720 ; AVX512-NEXT:    vextracti32x4 $1, %zmm3, %xmm4
   3721 ; AVX512-NEXT:    vpextrd $1, %xmm4, %edx
   3722 ; AVX512-NEXT:    vextracti32x4 $1, %zmm1, %xmm5
   3723 ; AVX512-NEXT:    vpextrd $1, %xmm5, %esi
   3724 ; AVX512-NEXT:    cmpl %edx, %esi
   3725 ; AVX512-NEXT:    movl $0, %edx
   3726 ; AVX512-NEXT:    cmovgl %ecx, %edx
   3727 ; AVX512-NEXT:    vmovd %xmm4, %esi
   3728 ; AVX512-NEXT:    vmovd %xmm5, %edi
   3729 ; AVX512-NEXT:    cmpl %esi, %edi
   3730 ; AVX512-NEXT:    movl $0, %esi
   3731 ; AVX512-NEXT:    cmovgl %ecx, %esi
   3732 ; AVX512-NEXT:    vmovd %esi, %xmm6
   3733 ; AVX512-NEXT:    vpinsrd $1, %edx, %xmm6, %xmm6
   3734 ; AVX512-NEXT:    vpextrd $2, %xmm4, %edx
   3735 ; AVX512-NEXT:    vpextrd $2, %xmm5, %esi
   3736 ; AVX512-NEXT:    cmpl %edx, %esi
   3737 ; AVX512-NEXT:    movl $0, %edx
   3738 ; AVX512-NEXT:    cmovgl %ecx, %edx
   3739 ; AVX512-NEXT:    vpinsrd $2, %edx, %xmm6, %xmm6
   3740 ; AVX512-NEXT:    vpextrd $3, %xmm4, %edx
   3741 ; AVX512-NEXT:    vpextrd $3, %xmm5, %esi
   3742 ; AVX512-NEXT:    cmpl %edx, %esi
   3743 ; AVX512-NEXT:    movl $0, %edx
   3744 ; AVX512-NEXT:    cmovgl %ecx, %edx
   3745 ; AVX512-NEXT:    vpinsrd $3, %edx, %xmm6, %xmm4
   3746 ; AVX512-NEXT:    vpextrd $1, %xmm3, %edx
   3747 ; AVX512-NEXT:    vpextrd $1, %xmm1, %esi
   3748 ; AVX512-NEXT:    cmpl %edx, %esi
   3749 ; AVX512-NEXT:    movl $0, %edx
   3750 ; AVX512-NEXT:    cmovgl %ecx, %edx
   3751 ; AVX512-NEXT:    vmovd %xmm3, %esi
   3752 ; AVX512-NEXT:    vmovd %xmm1, %edi
   3753 ; AVX512-NEXT:    cmpl %esi, %edi
   3754 ; AVX512-NEXT:    movl $0, %esi
   3755 ; AVX512-NEXT:    cmovgl %ecx, %esi
   3756 ; AVX512-NEXT:    vmovd %esi, %xmm5
   3757 ; AVX512-NEXT:    vpinsrd $1, %edx, %xmm5, %xmm5
   3758 ; AVX512-NEXT:    vpextrd $2, %xmm3, %edx
   3759 ; AVX512-NEXT:    vpextrd $2, %xmm1, %esi
   3760 ; AVX512-NEXT:    cmpl %edx, %esi
   3761 ; AVX512-NEXT:    movl $0, %edx
   3762 ; AVX512-NEXT:    cmovgl %ecx, %edx
   3763 ; AVX512-NEXT:    vpinsrd $2, %edx, %xmm5, %xmm5
   3764 ; AVX512-NEXT:    vpextrd $3, %xmm3, %edx
   3765 ; AVX512-NEXT:    vpextrd $3, %xmm1, %esi
   3766 ; AVX512-NEXT:    cmpl %edx, %esi
   3767 ; AVX512-NEXT:    cmovgl %ecx, %eax
   3768 ; AVX512-NEXT:    vpinsrd $3, %eax, %xmm5, %xmm1
   3769 ; AVX512-NEXT:    vinserti128 $1, %xmm4, %ymm1, %ymm1
   3770 ; AVX512-NEXT:    vinserti64x4 $1, %ymm2, %zmm1, %zmm1
   3771 ; AVX512-NEXT:    vpmovdb %zmm1, %xmm1
   3772 ; AVX512-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
   3773 ; AVX512-NEXT:    retq
   3774   %1 = icmp sgt <32 x i32> %a0, %a1
   3775   ret <32 x i1> %1
   3776 }
   3777 
   3778 define <64 x i1> @test_cmp_v64i16(<64 x i16> %a0, <64 x i16> %a1) nounwind {
   3779 ; SSE2-LABEL: test_cmp_v64i16:
   3780 ; SSE2:       # BB#0:
   3781 ; SSE2-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm1
   3782 ; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [255,255,255,255,255,255,255,255]
   3783 ; SSE2-NEXT:    pand %xmm8, %xmm1
   3784 ; SSE2-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm0
   3785 ; SSE2-NEXT:    pand %xmm8, %xmm0
   3786 ; SSE2-NEXT:    packuswb %xmm1, %xmm0
   3787 ; SSE2-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm3
   3788 ; SSE2-NEXT:    pand %xmm8, %xmm3
   3789 ; SSE2-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm2
   3790 ; SSE2-NEXT:    pand %xmm8, %xmm2
   3791 ; SSE2-NEXT:    packuswb %xmm3, %xmm2
   3792 ; SSE2-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm5
   3793 ; SSE2-NEXT:    pand %xmm8, %xmm5
   3794 ; SSE2-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm4
   3795 ; SSE2-NEXT:    pand %xmm8, %xmm4
   3796 ; SSE2-NEXT:    packuswb %xmm5, %xmm4
   3797 ; SSE2-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm7
   3798 ; SSE2-NEXT:    pand %xmm8, %xmm7
   3799 ; SSE2-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm6
   3800 ; SSE2-NEXT:    pand %xmm8, %xmm6
   3801 ; SSE2-NEXT:    packuswb %xmm7, %xmm6
   3802 ; SSE2-NEXT:    movdqa %xmm6, -{{[0-9]+}}(%rsp)
   3803 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3804 ; SSE2-NEXT:    andb $1, %al
   3805 ; SSE2-NEXT:    movb %al, 6(%rdi)
   3806 ; SSE2-NEXT:    movdqa %xmm4, -{{[0-9]+}}(%rsp)
   3807 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3808 ; SSE2-NEXT:    andb $1, %al
   3809 ; SSE2-NEXT:    movb %al, 4(%rdi)
   3810 ; SSE2-NEXT:    movdqa %xmm2, -{{[0-9]+}}(%rsp)
   3811 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3812 ; SSE2-NEXT:    andb $1, %al
   3813 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3814 ; SSE2-NEXT:    movdqa %xmm0, -{{[0-9]+}}(%rsp)
   3815 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3816 ; SSE2-NEXT:    andb $1, %al
   3817 ; SSE2-NEXT:    movb %al, (%rdi)
   3818 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3819 ; SSE2-NEXT:    andb $1, %al
   3820 ; SSE2-NEXT:    movb %al, 6(%rdi)
   3821 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3822 ; SSE2-NEXT:    andb $1, %al
   3823 ; SSE2-NEXT:    movb %al, 4(%rdi)
   3824 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3825 ; SSE2-NEXT:    andb $1, %al
   3826 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3827 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3828 ; SSE2-NEXT:    andb $1, %al
   3829 ; SSE2-NEXT:    movb %al, (%rdi)
   3830 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3831 ; SSE2-NEXT:    andb $1, %al
   3832 ; SSE2-NEXT:    movb %al, 6(%rdi)
   3833 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3834 ; SSE2-NEXT:    andb $1, %al
   3835 ; SSE2-NEXT:    movb %al, 4(%rdi)
   3836 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3837 ; SSE2-NEXT:    andb $1, %al
   3838 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3839 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3840 ; SSE2-NEXT:    andb $1, %al
   3841 ; SSE2-NEXT:    movb %al, (%rdi)
   3842 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3843 ; SSE2-NEXT:    andb $1, %al
   3844 ; SSE2-NEXT:    movb %al, 6(%rdi)
   3845 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3846 ; SSE2-NEXT:    andb $1, %al
   3847 ; SSE2-NEXT:    movb %al, 4(%rdi)
   3848 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3849 ; SSE2-NEXT:    andb $1, %al
   3850 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3851 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3852 ; SSE2-NEXT:    andb $1, %al
   3853 ; SSE2-NEXT:    movb %al, (%rdi)
   3854 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3855 ; SSE2-NEXT:    andb $1, %al
   3856 ; SSE2-NEXT:    movb %al, 6(%rdi)
   3857 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3858 ; SSE2-NEXT:    andb $1, %al
   3859 ; SSE2-NEXT:    movb %al, 4(%rdi)
   3860 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3861 ; SSE2-NEXT:    andb $1, %al
   3862 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3863 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3864 ; SSE2-NEXT:    andb $1, %al
   3865 ; SSE2-NEXT:    movb %al, (%rdi)
   3866 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3867 ; SSE2-NEXT:    andb $1, %al
   3868 ; SSE2-NEXT:    movb %al, 6(%rdi)
   3869 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3870 ; SSE2-NEXT:    andb $1, %al
   3871 ; SSE2-NEXT:    movb %al, 4(%rdi)
   3872 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3873 ; SSE2-NEXT:    andb $1, %al
   3874 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3875 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3876 ; SSE2-NEXT:    andb $1, %al
   3877 ; SSE2-NEXT:    movb %al, (%rdi)
   3878 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3879 ; SSE2-NEXT:    andb $1, %al
   3880 ; SSE2-NEXT:    movb %al, 6(%rdi)
   3881 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3882 ; SSE2-NEXT:    andb $1, %al
   3883 ; SSE2-NEXT:    movb %al, 4(%rdi)
   3884 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3885 ; SSE2-NEXT:    andb $1, %al
   3886 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3887 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3888 ; SSE2-NEXT:    andb $1, %al
   3889 ; SSE2-NEXT:    movb %al, (%rdi)
   3890 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3891 ; SSE2-NEXT:    andb $1, %al
   3892 ; SSE2-NEXT:    movb %al, 6(%rdi)
   3893 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3894 ; SSE2-NEXT:    andb $1, %al
   3895 ; SSE2-NEXT:    movb %al, 4(%rdi)
   3896 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3897 ; SSE2-NEXT:    andb $1, %al
   3898 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3899 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3900 ; SSE2-NEXT:    andb $1, %al
   3901 ; SSE2-NEXT:    movb %al, (%rdi)
   3902 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3903 ; SSE2-NEXT:    andb $1, %al
   3904 ; SSE2-NEXT:    movb %al, 6(%rdi)
   3905 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3906 ; SSE2-NEXT:    andb $1, %al
   3907 ; SSE2-NEXT:    movb %al, 4(%rdi)
   3908 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3909 ; SSE2-NEXT:    andb $1, %al
   3910 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3911 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3912 ; SSE2-NEXT:    andb $1, %al
   3913 ; SSE2-NEXT:    movb %al, (%rdi)
   3914 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3915 ; SSE2-NEXT:    andb $1, %al
   3916 ; SSE2-NEXT:    movb %al, 6(%rdi)
   3917 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3918 ; SSE2-NEXT:    andb $1, %al
   3919 ; SSE2-NEXT:    movb %al, 4(%rdi)
   3920 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3921 ; SSE2-NEXT:    andb $1, %al
   3922 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3923 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3924 ; SSE2-NEXT:    andb $1, %al
   3925 ; SSE2-NEXT:    movb %al, (%rdi)
   3926 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3927 ; SSE2-NEXT:    andb $1, %al
   3928 ; SSE2-NEXT:    movb %al, 6(%rdi)
   3929 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3930 ; SSE2-NEXT:    andb $1, %al
   3931 ; SSE2-NEXT:    movb %al, 4(%rdi)
   3932 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3933 ; SSE2-NEXT:    andb $1, %al
   3934 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3935 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3936 ; SSE2-NEXT:    andb $1, %al
   3937 ; SSE2-NEXT:    movb %al, (%rdi)
   3938 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3939 ; SSE2-NEXT:    andb $1, %al
   3940 ; SSE2-NEXT:    movb %al, 6(%rdi)
   3941 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3942 ; SSE2-NEXT:    andb $1, %al
   3943 ; SSE2-NEXT:    movb %al, 4(%rdi)
   3944 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3945 ; SSE2-NEXT:    andb $1, %al
   3946 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3947 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3948 ; SSE2-NEXT:    andb $1, %al
   3949 ; SSE2-NEXT:    movb %al, (%rdi)
   3950 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3951 ; SSE2-NEXT:    andb $1, %al
   3952 ; SSE2-NEXT:    movb %al, 6(%rdi)
   3953 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3954 ; SSE2-NEXT:    andb $1, %al
   3955 ; SSE2-NEXT:    movb %al, 4(%rdi)
   3956 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3957 ; SSE2-NEXT:    andb $1, %al
   3958 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3959 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3960 ; SSE2-NEXT:    andb $1, %al
   3961 ; SSE2-NEXT:    movb %al, (%rdi)
   3962 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3963 ; SSE2-NEXT:    andb $1, %al
   3964 ; SSE2-NEXT:    movb %al, 6(%rdi)
   3965 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3966 ; SSE2-NEXT:    andb $1, %al
   3967 ; SSE2-NEXT:    movb %al, 4(%rdi)
   3968 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3969 ; SSE2-NEXT:    andb $1, %al
   3970 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3971 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3972 ; SSE2-NEXT:    andb $1, %al
   3973 ; SSE2-NEXT:    movb %al, (%rdi)
   3974 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3975 ; SSE2-NEXT:    andb $1, %al
   3976 ; SSE2-NEXT:    movb %al, 6(%rdi)
   3977 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3978 ; SSE2-NEXT:    andb $1, %al
   3979 ; SSE2-NEXT:    movb %al, 4(%rdi)
   3980 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3981 ; SSE2-NEXT:    andb $1, %al
   3982 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3983 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3984 ; SSE2-NEXT:    andb $1, %al
   3985 ; SSE2-NEXT:    movb %al, (%rdi)
   3986 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3987 ; SSE2-NEXT:    andb $1, %al
   3988 ; SSE2-NEXT:    movb %al, 6(%rdi)
   3989 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3990 ; SSE2-NEXT:    andb $1, %al
   3991 ; SSE2-NEXT:    movb %al, 4(%rdi)
   3992 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3993 ; SSE2-NEXT:    andb $1, %al
   3994 ; SSE2-NEXT:    movb %al, 2(%rdi)
   3995 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   3996 ; SSE2-NEXT:    andb $1, %al
   3997 ; SSE2-NEXT:    movb %al, (%rdi)
   3998 ; SSE2-NEXT:    movq %rdi, %rax
   3999 ; SSE2-NEXT:    retq
   4000 ;
   4001 ; SSE42-LABEL: test_cmp_v64i16:
   4002 ; SSE42:       # BB#0:
   4003 ; SSE42-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm1
   4004 ; SSE42-NEXT:    movdqa {{.*#+}} xmm8 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
   4005 ; SSE42-NEXT:    pshufb %xmm8, %xmm1
   4006 ; SSE42-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm0
   4007 ; SSE42-NEXT:    pshufb %xmm8, %xmm0
   4008 ; SSE42-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
   4009 ; SSE42-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm3
   4010 ; SSE42-NEXT:    pshufb %xmm8, %xmm3
   4011 ; SSE42-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm2
   4012 ; SSE42-NEXT:    pshufb %xmm8, %xmm2
   4013 ; SSE42-NEXT:    punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0]
   4014 ; SSE42-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm5
   4015 ; SSE42-NEXT:    pshufb %xmm8, %xmm5
   4016 ; SSE42-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm4
   4017 ; SSE42-NEXT:    pshufb %xmm8, %xmm4
   4018 ; SSE42-NEXT:    punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0]
   4019 ; SSE42-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm7
   4020 ; SSE42-NEXT:    pshufb %xmm8, %xmm7
   4021 ; SSE42-NEXT:    pcmpgtw {{[0-9]+}}(%rsp), %xmm6
   4022 ; SSE42-NEXT:    pshufb %xmm8, %xmm6
   4023 ; SSE42-NEXT:    punpcklqdq {{.*#+}} xmm6 = xmm6[0],xmm7[0]
   4024 ; SSE42-NEXT:    pextrb $15, %xmm6, %eax
   4025 ; SSE42-NEXT:    andb $1, %al
   4026 ; SSE42-NEXT:    movb %al, 6(%rdi)
   4027 ; SSE42-NEXT:    pextrb $14, %xmm6, %eax
   4028 ; SSE42-NEXT:    andb $1, %al
   4029 ; SSE42-NEXT:    movb %al, 6(%rdi)
   4030 ; SSE42-NEXT:    pextrb $13, %xmm6, %eax
   4031 ; SSE42-NEXT:    andb $1, %al
   4032 ; SSE42-NEXT:    movb %al, 6(%rdi)
   4033 ; SSE42-NEXT:    pextrb $12, %xmm6, %eax
   4034 ; SSE42-NEXT:    andb $1, %al
   4035 ; SSE42-NEXT:    movb %al, 6(%rdi)
   4036 ; SSE42-NEXT:    pextrb $11, %xmm6, %eax
   4037 ; SSE42-NEXT:    andb $1, %al
   4038 ; SSE42-NEXT:    movb %al, 6(%rdi)
   4039 ; SSE42-NEXT:    pextrb $10, %xmm6, %eax
   4040 ; SSE42-NEXT:    andb $1, %al
   4041 ; SSE42-NEXT:    movb %al, 6(%rdi)
   4042 ; SSE42-NEXT:    pextrb $9, %xmm6, %eax
   4043 ; SSE42-NEXT:    andb $1, %al
   4044 ; SSE42-NEXT:    movb %al, 6(%rdi)
   4045 ; SSE42-NEXT:    pextrb $8, %xmm6, %eax
   4046 ; SSE42-NEXT:    andb $1, %al
   4047 ; SSE42-NEXT:    movb %al, 6(%rdi)
   4048 ; SSE42-NEXT:    pextrb $7, %xmm6, %eax
   4049 ; SSE42-NEXT:    andb $1, %al
   4050 ; SSE42-NEXT:    movb %al, 6(%rdi)
   4051 ; SSE42-NEXT:    pextrb $6, %xmm6, %eax
   4052 ; SSE42-NEXT:    andb $1, %al
   4053 ; SSE42-NEXT:    movb %al, 6(%rdi)
   4054 ; SSE42-NEXT:    pextrb $5, %xmm6, %eax
   4055 ; SSE42-NEXT:    andb $1, %al
   4056 ; SSE42-NEXT:    movb %al, 6(%rdi)
   4057 ; SSE42-NEXT:    pextrb $4, %xmm6, %eax
   4058 ; SSE42-NEXT:    andb $1, %al
   4059 ; SSE42-NEXT:    movb %al, 6(%rdi)
   4060 ; SSE42-NEXT:    pextrb $3, %xmm6, %eax
   4061 ; SSE42-NEXT:    andb $1, %al
   4062 ; SSE42-NEXT:    movb %al, 6(%rdi)
   4063 ; SSE42-NEXT:    pextrb $2, %xmm6, %eax
   4064 ; SSE42-NEXT:    andb $1, %al
   4065 ; SSE42-NEXT:    movb %al, 6(%rdi)
   4066 ; SSE42-NEXT:    pextrb $1, %xmm6, %eax
   4067 ; SSE42-NEXT:    andb $1, %al
   4068 ; SSE42-NEXT:    movb %al, 6(%rdi)
   4069 ; SSE42-NEXT:    pextrb $0, %xmm6, %eax
   4070 ; SSE42-NEXT:    andb $1, %al
   4071 ; SSE42-NEXT:    movb %al, 6(%rdi)
   4072 ; SSE42-NEXT:    pextrb $15, %xmm4, %eax
   4073 ; SSE42-NEXT:    andb $1, %al
   4074 ; SSE42-NEXT:    movb %al, 4(%rdi)
   4075 ; SSE42-NEXT:    pextrb $14, %xmm4, %eax
   4076 ; SSE42-NEXT:    andb $1, %al
   4077 ; SSE42-NEXT:    movb %al, 4(%rdi)
   4078 ; SSE42-NEXT:    pextrb $13, %xmm4, %eax
   4079 ; SSE42-NEXT:    andb $1, %al
   4080 ; SSE42-NEXT:    movb %al, 4(%rdi)
   4081 ; SSE42-NEXT:    pextrb $12, %xmm4, %eax
   4082 ; SSE42-NEXT:    andb $1, %al
   4083 ; SSE42-NEXT:    movb %al, 4(%rdi)
   4084 ; SSE42-NEXT:    pextrb $11, %xmm4, %eax
   4085 ; SSE42-NEXT:    andb $1, %al
   4086 ; SSE42-NEXT:    movb %al, 4(%rdi)
   4087 ; SSE42-NEXT:    pextrb $10, %xmm4, %eax
   4088 ; SSE42-NEXT:    andb $1, %al
   4089 ; SSE42-NEXT:    movb %al, 4(%rdi)
   4090 ; SSE42-NEXT:    pextrb $9, %xmm4, %eax
   4091 ; SSE42-NEXT:    andb $1, %al
   4092 ; SSE42-NEXT:    movb %al, 4(%rdi)
   4093 ; SSE42-NEXT:    pextrb $8, %xmm4, %eax
   4094 ; SSE42-NEXT:    andb $1, %al
   4095 ; SSE42-NEXT:    movb %al, 4(%rdi)
   4096 ; SSE42-NEXT:    pextrb $7, %xmm4, %eax
   4097 ; SSE42-NEXT:    andb $1, %al
   4098 ; SSE42-NEXT:    movb %al, 4(%rdi)
   4099 ; SSE42-NEXT:    pextrb $6, %xmm4, %eax
   4100 ; SSE42-NEXT:    andb $1, %al
   4101 ; SSE42-NEXT:    movb %al, 4(%rdi)
   4102 ; SSE42-NEXT:    pextrb $5, %xmm4, %eax
   4103 ; SSE42-NEXT:    andb $1, %al
   4104 ; SSE42-NEXT:    movb %al, 4(%rdi)
   4105 ; SSE42-NEXT:    pextrb $4, %xmm4, %eax
   4106 ; SSE42-NEXT:    andb $1, %al
   4107 ; SSE42-NEXT:    movb %al, 4(%rdi)
   4108 ; SSE42-NEXT:    pextrb $3, %xmm4, %eax
   4109 ; SSE42-NEXT:    andb $1, %al
   4110 ; SSE42-NEXT:    movb %al, 4(%rdi)
   4111 ; SSE42-NEXT:    pextrb $2, %xmm4, %eax
   4112 ; SSE42-NEXT:    andb $1, %al
   4113 ; SSE42-NEXT:    movb %al, 4(%rdi)
   4114 ; SSE42-NEXT:    pextrb $1, %xmm4, %eax
   4115 ; SSE42-NEXT:    andb $1, %al
   4116 ; SSE42-NEXT:    movb %al, 4(%rdi)
   4117 ; SSE42-NEXT:    pextrb $0, %xmm4, %eax
   4118 ; SSE42-NEXT:    andb $1, %al
   4119 ; SSE42-NEXT:    movb %al, 4(%rdi)
   4120 ; SSE42-NEXT:    pextrb $15, %xmm2, %eax
   4121 ; SSE42-NEXT:    andb $1, %al
   4122 ; SSE42-NEXT:    movb %al, 2(%rdi)
   4123 ; SSE42-NEXT:    pextrb $14, %xmm2, %eax
   4124 ; SSE42-NEXT:    andb $1, %al
   4125 ; SSE42-NEXT:    movb %al, 2(%rdi)
   4126 ; SSE42-NEXT:    pextrb $13, %xmm2, %eax
   4127 ; SSE42-NEXT:    andb $1, %al
   4128 ; SSE42-NEXT:    movb %al, 2(%rdi)
   4129 ; SSE42-NEXT:    pextrb $12, %xmm2, %eax
   4130 ; SSE42-NEXT:    andb $1, %al
   4131 ; SSE42-NEXT:    movb %al, 2(%rdi)
   4132 ; SSE42-NEXT:    pextrb $11, %xmm2, %eax
   4133 ; SSE42-NEXT:    andb $1, %al
   4134 ; SSE42-NEXT:    movb %al, 2(%rdi)
   4135 ; SSE42-NEXT:    pextrb $10, %xmm2, %eax
   4136 ; SSE42-NEXT:    andb $1, %al
   4137 ; SSE42-NEXT:    movb %al, 2(%rdi)
   4138 ; SSE42-NEXT:    pextrb $9, %xmm2, %eax
   4139 ; SSE42-NEXT:    andb $1, %al
   4140 ; SSE42-NEXT:    movb %al, 2(%rdi)
   4141 ; SSE42-NEXT:    pextrb $8, %xmm2, %eax
   4142 ; SSE42-NEXT:    andb $1, %al
   4143 ; SSE42-NEXT:    movb %al, 2(%rdi)
   4144 ; SSE42-NEXT:    pextrb $7, %xmm2, %eax
   4145 ; SSE42-NEXT:    andb $1, %al
   4146 ; SSE42-NEXT:    movb %al, 2(%rdi)
   4147 ; SSE42-NEXT:    pextrb $6, %xmm2, %eax
   4148 ; SSE42-NEXT:    andb $1, %al
   4149 ; SSE42-NEXT:    movb %al, 2(%rdi)
   4150 ; SSE42-NEXT:    pextrb $5, %xmm2, %eax
   4151 ; SSE42-NEXT:    andb $1, %al
   4152 ; SSE42-NEXT:    movb %al, 2(%rdi)
   4153 ; SSE42-NEXT:    pextrb $4, %xmm2, %eax
   4154 ; SSE42-NEXT:    andb $1, %al
   4155 ; SSE42-NEXT:    movb %al, 2(%rdi)
   4156 ; SSE42-NEXT:    pextrb $3, %xmm2, %eax
   4157 ; SSE42-NEXT:    andb $1, %al
   4158 ; SSE42-NEXT:    movb %al, 2(%rdi)
   4159 ; SSE42-NEXT:    pextrb $2, %xmm2, %eax
   4160 ; SSE42-NEXT:    andb $1, %al
   4161 ; SSE42-NEXT:    movb %al, 2(%rdi)
   4162 ; SSE42-NEXT:    pextrb $1, %xmm2, %eax
   4163 ; SSE42-NEXT:    andb $1, %al
   4164 ; SSE42-NEXT:    movb %al, 2(%rdi)
   4165 ; SSE42-NEXT:    pextrb $0, %xmm2, %eax
   4166 ; SSE42-NEXT:    andb $1, %al
   4167 ; SSE42-NEXT:    movb %al, 2(%rdi)
   4168 ; SSE42-NEXT:    pextrb $15, %xmm0, %eax
   4169 ; SSE42-NEXT:    andb $1, %al
   4170 ; SSE42-NEXT:    movb %al, (%rdi)
   4171 ; SSE42-NEXT:    pextrb $14, %xmm0, %eax
   4172 ; SSE42-NEXT:    andb $1, %al
   4173 ; SSE42-NEXT:    movb %al, (%rdi)
   4174 ; SSE42-NEXT:    pextrb $13, %xmm0, %eax
   4175 ; SSE42-NEXT:    andb $1, %al
   4176 ; SSE42-NEXT:    movb %al, (%rdi)
   4177 ; SSE42-NEXT:    pextrb $12, %xmm0, %eax
   4178 ; SSE42-NEXT:    andb $1, %al
   4179 ; SSE42-NEXT:    movb %al, (%rdi)
   4180 ; SSE42-NEXT:    pextrb $11, %xmm0, %eax
   4181 ; SSE42-NEXT:    andb $1, %al
   4182 ; SSE42-NEXT:    movb %al, (%rdi)
   4183 ; SSE42-NEXT:    pextrb $10, %xmm0, %eax
   4184 ; SSE42-NEXT:    andb $1, %al
   4185 ; SSE42-NEXT:    movb %al, (%rdi)
   4186 ; SSE42-NEXT:    pextrb $9, %xmm0, %eax
   4187 ; SSE42-NEXT:    andb $1, %al
   4188 ; SSE42-NEXT:    movb %al, (%rdi)
   4189 ; SSE42-NEXT:    pextrb $8, %xmm0, %eax
   4190 ; SSE42-NEXT:    andb $1, %al
   4191 ; SSE42-NEXT:    movb %al, (%rdi)
   4192 ; SSE42-NEXT:    pextrb $7, %xmm0, %eax
   4193 ; SSE42-NEXT:    andb $1, %al
   4194 ; SSE42-NEXT:    movb %al, (%rdi)
   4195 ; SSE42-NEXT:    pextrb $6, %xmm0, %eax
   4196 ; SSE42-NEXT:    andb $1, %al
   4197 ; SSE42-NEXT:    movb %al, (%rdi)
   4198 ; SSE42-NEXT:    pextrb $5, %xmm0, %eax
   4199 ; SSE42-NEXT:    andb $1, %al
   4200 ; SSE42-NEXT:    movb %al, (%rdi)
   4201 ; SSE42-NEXT:    pextrb $4, %xmm0, %eax
   4202 ; SSE42-NEXT:    andb $1, %al
   4203 ; SSE42-NEXT:    movb %al, (%rdi)
   4204 ; SSE42-NEXT:    pextrb $3, %xmm0, %eax
   4205 ; SSE42-NEXT:    andb $1, %al
   4206 ; SSE42-NEXT:    movb %al, (%rdi)
   4207 ; SSE42-NEXT:    pextrb $2, %xmm0, %eax
   4208 ; SSE42-NEXT:    andb $1, %al
   4209 ; SSE42-NEXT:    movb %al, (%rdi)
   4210 ; SSE42-NEXT:    pextrb $1, %xmm0, %eax
   4211 ; SSE42-NEXT:    andb $1, %al
   4212 ; SSE42-NEXT:    movb %al, (%rdi)
   4213 ; SSE42-NEXT:    pextrb $0, %xmm0, %eax
   4214 ; SSE42-NEXT:    andb $1, %al
   4215 ; SSE42-NEXT:    movb %al, (%rdi)
   4216 ; SSE42-NEXT:    movq %rdi, %rax
   4217 ; SSE42-NEXT:    retq
   4218 ;
   4219 ; AVX1-LABEL: test_cmp_v64i16:
   4220 ; AVX1:       # BB#0:
   4221 ; AVX1-NEXT:    vextractf128 $1, %ymm4, %xmm8
   4222 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm9
   4223 ; AVX1-NEXT:    vpcmpgtw %xmm8, %xmm9, %xmm8
   4224 ; AVX1-NEXT:    vmovdqa {{.*#+}} xmm9 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
   4225 ; AVX1-NEXT:    vpshufb %xmm9, %xmm8, %xmm8
   4226 ; AVX1-NEXT:    vpcmpgtw %xmm4, %xmm0, %xmm0
   4227 ; AVX1-NEXT:    vpshufb %xmm9, %xmm0, %xmm0
   4228 ; AVX1-NEXT:    vpunpcklqdq {{.*#+}} xmm8 = xmm0[0],xmm8[0]
   4229 ; AVX1-NEXT:    vextractf128 $1, %ymm5, %xmm4
   4230 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm0
   4231 ; AVX1-NEXT:    vpcmpgtw %xmm4, %xmm0, %xmm0
   4232 ; AVX1-NEXT:    vpshufb %xmm9, %xmm0, %xmm0
   4233 ; AVX1-NEXT:    vpcmpgtw %xmm5, %xmm1, %xmm1
   4234 ; AVX1-NEXT:    vpshufb %xmm9, %xmm1, %xmm1
   4235 ; AVX1-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0]
   4236 ; AVX1-NEXT:    vextractf128 $1, %ymm6, %xmm0
   4237 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm4
   4238 ; AVX1-NEXT:    vpcmpgtw %xmm0, %xmm4, %xmm0
   4239 ; AVX1-NEXT:    vpshufb %xmm9, %xmm0, %xmm0
   4240 ; AVX1-NEXT:    vpcmpgtw %xmm6, %xmm2, %xmm2
   4241 ; AVX1-NEXT:    vpshufb %xmm9, %xmm2, %xmm2
   4242 ; AVX1-NEXT:    vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm0[0]
   4243 ; AVX1-NEXT:    vextractf128 $1, %ymm7, %xmm0
   4244 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm4
   4245 ; AVX1-NEXT:    vpcmpgtw %xmm0, %xmm4, %xmm0
   4246 ; AVX1-NEXT:    vpshufb %xmm9, %xmm0, %xmm0
   4247 ; AVX1-NEXT:    vpcmpgtw %xmm7, %xmm3, %xmm3
   4248 ; AVX1-NEXT:    vpshufb %xmm9, %xmm3, %xmm3
   4249 ; AVX1-NEXT:    vpunpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm0[0]
   4250 ; AVX1-NEXT:    vpextrb $15, %xmm3, %eax
   4251 ; AVX1-NEXT:    andb $1, %al
   4252 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4253 ; AVX1-NEXT:    vpextrb $14, %xmm3, %eax
   4254 ; AVX1-NEXT:    andb $1, %al
   4255 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4256 ; AVX1-NEXT:    vpextrb $13, %xmm3, %eax
   4257 ; AVX1-NEXT:    andb $1, %al
   4258 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4259 ; AVX1-NEXT:    vpextrb $12, %xmm3, %eax
   4260 ; AVX1-NEXT:    andb $1, %al
   4261 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4262 ; AVX1-NEXT:    vpextrb $11, %xmm3, %eax
   4263 ; AVX1-NEXT:    andb $1, %al
   4264 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4265 ; AVX1-NEXT:    vpextrb $10, %xmm3, %eax
   4266 ; AVX1-NEXT:    andb $1, %al
   4267 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4268 ; AVX1-NEXT:    vpextrb $9, %xmm3, %eax
   4269 ; AVX1-NEXT:    andb $1, %al
   4270 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4271 ; AVX1-NEXT:    vpextrb $8, %xmm3, %eax
   4272 ; AVX1-NEXT:    andb $1, %al
   4273 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4274 ; AVX1-NEXT:    vpextrb $7, %xmm3, %eax
   4275 ; AVX1-NEXT:    andb $1, %al
   4276 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4277 ; AVX1-NEXT:    vpextrb $6, %xmm3, %eax
   4278 ; AVX1-NEXT:    andb $1, %al
   4279 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4280 ; AVX1-NEXT:    vpextrb $5, %xmm3, %eax
   4281 ; AVX1-NEXT:    andb $1, %al
   4282 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4283 ; AVX1-NEXT:    vpextrb $4, %xmm3, %eax
   4284 ; AVX1-NEXT:    andb $1, %al
   4285 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4286 ; AVX1-NEXT:    vpextrb $3, %xmm3, %eax
   4287 ; AVX1-NEXT:    andb $1, %al
   4288 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4289 ; AVX1-NEXT:    vpextrb $2, %xmm3, %eax
   4290 ; AVX1-NEXT:    andb $1, %al
   4291 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4292 ; AVX1-NEXT:    vpextrb $1, %xmm3, %eax
   4293 ; AVX1-NEXT:    andb $1, %al
   4294 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4295 ; AVX1-NEXT:    vpextrb $0, %xmm3, %eax
   4296 ; AVX1-NEXT:    andb $1, %al
   4297 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4298 ; AVX1-NEXT:    vpextrb $15, %xmm2, %eax
   4299 ; AVX1-NEXT:    andb $1, %al
   4300 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4301 ; AVX1-NEXT:    vpextrb $14, %xmm2, %eax
   4302 ; AVX1-NEXT:    andb $1, %al
   4303 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4304 ; AVX1-NEXT:    vpextrb $13, %xmm2, %eax
   4305 ; AVX1-NEXT:    andb $1, %al
   4306 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4307 ; AVX1-NEXT:    vpextrb $12, %xmm2, %eax
   4308 ; AVX1-NEXT:    andb $1, %al
   4309 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4310 ; AVX1-NEXT:    vpextrb $11, %xmm2, %eax
   4311 ; AVX1-NEXT:    andb $1, %al
   4312 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4313 ; AVX1-NEXT:    vpextrb $10, %xmm2, %eax
   4314 ; AVX1-NEXT:    andb $1, %al
   4315 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4316 ; AVX1-NEXT:    vpextrb $9, %xmm2, %eax
   4317 ; AVX1-NEXT:    andb $1, %al
   4318 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4319 ; AVX1-NEXT:    vpextrb $8, %xmm2, %eax
   4320 ; AVX1-NEXT:    andb $1, %al
   4321 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4322 ; AVX1-NEXT:    vpextrb $7, %xmm2, %eax
   4323 ; AVX1-NEXT:    andb $1, %al
   4324 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4325 ; AVX1-NEXT:    vpextrb $6, %xmm2, %eax
   4326 ; AVX1-NEXT:    andb $1, %al
   4327 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4328 ; AVX1-NEXT:    vpextrb $5, %xmm2, %eax
   4329 ; AVX1-NEXT:    andb $1, %al
   4330 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4331 ; AVX1-NEXT:    vpextrb $4, %xmm2, %eax
   4332 ; AVX1-NEXT:    andb $1, %al
   4333 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4334 ; AVX1-NEXT:    vpextrb $3, %xmm2, %eax
   4335 ; AVX1-NEXT:    andb $1, %al
   4336 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4337 ; AVX1-NEXT:    vpextrb $2, %xmm2, %eax
   4338 ; AVX1-NEXT:    andb $1, %al
   4339 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4340 ; AVX1-NEXT:    vpextrb $1, %xmm2, %eax
   4341 ; AVX1-NEXT:    andb $1, %al
   4342 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4343 ; AVX1-NEXT:    vpextrb $0, %xmm2, %eax
   4344 ; AVX1-NEXT:    andb $1, %al
   4345 ; AVX1-NEXT:    movb %al, 4(%rdi)
   4346 ; AVX1-NEXT:    vpextrb $15, %xmm1, %eax
   4347 ; AVX1-NEXT:    andb $1, %al
   4348 ; AVX1-NEXT:    movb %al, (%rdi)
   4349 ; AVX1-NEXT:    vpextrb $14, %xmm1, %eax
   4350 ; AVX1-NEXT:    andb $1, %al
   4351 ; AVX1-NEXT:    movb %al, (%rdi)
   4352 ; AVX1-NEXT:    vpextrb $13, %xmm1, %eax
   4353 ; AVX1-NEXT:    andb $1, %al
   4354 ; AVX1-NEXT:    movb %al, (%rdi)
   4355 ; AVX1-NEXT:    vpextrb $12, %xmm1, %eax
   4356 ; AVX1-NEXT:    andb $1, %al
   4357 ; AVX1-NEXT:    movb %al, (%rdi)
   4358 ; AVX1-NEXT:    vpextrb $11, %xmm1, %eax
   4359 ; AVX1-NEXT:    andb $1, %al
   4360 ; AVX1-NEXT:    movb %al, (%rdi)
   4361 ; AVX1-NEXT:    vpextrb $10, %xmm1, %eax
   4362 ; AVX1-NEXT:    andb $1, %al
   4363 ; AVX1-NEXT:    movb %al, (%rdi)
   4364 ; AVX1-NEXT:    vpextrb $9, %xmm1, %eax
   4365 ; AVX1-NEXT:    andb $1, %al
   4366 ; AVX1-NEXT:    movb %al, (%rdi)
   4367 ; AVX1-NEXT:    vpextrb $8, %xmm1, %eax
   4368 ; AVX1-NEXT:    andb $1, %al
   4369 ; AVX1-NEXT:    movb %al, (%rdi)
   4370 ; AVX1-NEXT:    vpextrb $7, %xmm1, %eax
   4371 ; AVX1-NEXT:    andb $1, %al
   4372 ; AVX1-NEXT:    movb %al, (%rdi)
   4373 ; AVX1-NEXT:    vpextrb $6, %xmm1, %eax
   4374 ; AVX1-NEXT:    andb $1, %al
   4375 ; AVX1-NEXT:    movb %al, (%rdi)
   4376 ; AVX1-NEXT:    vpextrb $5, %xmm1, %eax
   4377 ; AVX1-NEXT:    andb $1, %al
   4378 ; AVX1-NEXT:    movb %al, (%rdi)
   4379 ; AVX1-NEXT:    vpextrb $4, %xmm1, %eax
   4380 ; AVX1-NEXT:    andb $1, %al
   4381 ; AVX1-NEXT:    movb %al, (%rdi)
   4382 ; AVX1-NEXT:    vpextrb $3, %xmm1, %eax
   4383 ; AVX1-NEXT:    andb $1, %al
   4384 ; AVX1-NEXT:    movb %al, (%rdi)
   4385 ; AVX1-NEXT:    vpextrb $2, %xmm1, %eax
   4386 ; AVX1-NEXT:    andb $1, %al
   4387 ; AVX1-NEXT:    movb %al, (%rdi)
   4388 ; AVX1-NEXT:    vpextrb $1, %xmm1, %eax
   4389 ; AVX1-NEXT:    andb $1, %al
   4390 ; AVX1-NEXT:    movb %al, (%rdi)
   4391 ; AVX1-NEXT:    vpextrb $0, %xmm1, %eax
   4392 ; AVX1-NEXT:    andb $1, %al
   4393 ; AVX1-NEXT:    movb %al, (%rdi)
   4394 ; AVX1-NEXT:    vpextrb $15, %xmm8, %eax
   4395 ; AVX1-NEXT:    andb $1, %al
   4396 ; AVX1-NEXT:    movb %al, (%rdi)
   4397 ; AVX1-NEXT:    vpextrb $14, %xmm8, %eax
   4398 ; AVX1-NEXT:    andb $1, %al
   4399 ; AVX1-NEXT:    movb %al, (%rdi)
   4400 ; AVX1-NEXT:    vpextrb $13, %xmm8, %eax
   4401 ; AVX1-NEXT:    andb $1, %al
   4402 ; AVX1-NEXT:    movb %al, (%rdi)
   4403 ; AVX1-NEXT:    vpextrb $12, %xmm8, %eax
   4404 ; AVX1-NEXT:    andb $1, %al
   4405 ; AVX1-NEXT:    movb %al, (%rdi)
   4406 ; AVX1-NEXT:    vpextrb $11, %xmm8, %eax
   4407 ; AVX1-NEXT:    andb $1, %al
   4408 ; AVX1-NEXT:    movb %al, (%rdi)
   4409 ; AVX1-NEXT:    vpextrb $10, %xmm8, %eax
   4410 ; AVX1-NEXT:    andb $1, %al
   4411 ; AVX1-NEXT:    movb %al, (%rdi)
   4412 ; AVX1-NEXT:    vpextrb $9, %xmm8, %eax
   4413 ; AVX1-NEXT:    andb $1, %al
   4414 ; AVX1-NEXT:    movb %al, (%rdi)
   4415 ; AVX1-NEXT:    vpextrb $8, %xmm8, %eax
   4416 ; AVX1-NEXT:    andb $1, %al
   4417 ; AVX1-NEXT:    movb %al, (%rdi)
   4418 ; AVX1-NEXT:    vpextrb $7, %xmm8, %eax
   4419 ; AVX1-NEXT:    andb $1, %al
   4420 ; AVX1-NEXT:    movb %al, (%rdi)
   4421 ; AVX1-NEXT:    vpextrb $6, %xmm8, %eax
   4422 ; AVX1-NEXT:    andb $1, %al
   4423 ; AVX1-NEXT:    movb %al, (%rdi)
   4424 ; AVX1-NEXT:    vpextrb $5, %xmm8, %eax
   4425 ; AVX1-NEXT:    andb $1, %al
   4426 ; AVX1-NEXT:    movb %al, (%rdi)
   4427 ; AVX1-NEXT:    vpextrb $4, %xmm8, %eax
   4428 ; AVX1-NEXT:    andb $1, %al
   4429 ; AVX1-NEXT:    movb %al, (%rdi)
   4430 ; AVX1-NEXT:    vpextrb $3, %xmm8, %eax
   4431 ; AVX1-NEXT:    andb $1, %al
   4432 ; AVX1-NEXT:    movb %al, (%rdi)
   4433 ; AVX1-NEXT:    vpextrb $2, %xmm8, %eax
   4434 ; AVX1-NEXT:    andb $1, %al
   4435 ; AVX1-NEXT:    movb %al, (%rdi)
   4436 ; AVX1-NEXT:    vpextrb $1, %xmm8, %eax
   4437 ; AVX1-NEXT:    andb $1, %al
   4438 ; AVX1-NEXT:    movb %al, (%rdi)
   4439 ; AVX1-NEXT:    vpextrb $0, %xmm8, %eax
   4440 ; AVX1-NEXT:    andb $1, %al
   4441 ; AVX1-NEXT:    movb %al, (%rdi)
   4442 ; AVX1-NEXT:    movq %rdi, %rax
   4443 ; AVX1-NEXT:    vzeroupper
   4444 ; AVX1-NEXT:    retq
   4445 ;
   4446 ; AVX2-LABEL: test_cmp_v64i16:
   4447 ; AVX2:       # BB#0:
   4448 ; AVX2-NEXT:    vpcmpgtw %ymm4, %ymm0, %ymm0
   4449 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm8
   4450 ; AVX2-NEXT:    vmovdqa {{.*#+}} xmm4 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
   4451 ; AVX2-NEXT:    vpshufb %xmm4, %xmm8, %xmm8
   4452 ; AVX2-NEXT:    vpshufb %xmm4, %xmm0, %xmm0
   4453 ; AVX2-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm8[0]
   4454 ; AVX2-NEXT:    vpcmpgtw %ymm5, %ymm1, %ymm1
   4455 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm5
   4456 ; AVX2-NEXT:    vpshufb %xmm4, %xmm5, %xmm5
   4457 ; AVX2-NEXT:    vpshufb %xmm4, %xmm1, %xmm1
   4458 ; AVX2-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm5[0]
   4459 ; AVX2-NEXT:    vpcmpgtw %ymm6, %ymm2, %ymm2
   4460 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm5
   4461 ; AVX2-NEXT:    vpshufb %xmm4, %xmm5, %xmm5
   4462 ; AVX2-NEXT:    vpshufb %xmm4, %xmm2, %xmm2
   4463 ; AVX2-NEXT:    vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm5[0]
   4464 ; AVX2-NEXT:    vpcmpgtw %ymm7, %ymm3, %ymm3
   4465 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm5
   4466 ; AVX2-NEXT:    vpshufb %xmm4, %xmm5, %xmm5
   4467 ; AVX2-NEXT:    vpshufb %xmm4, %xmm3, %xmm3
   4468 ; AVX2-NEXT:    vpunpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm5[0]
   4469 ; AVX2-NEXT:    vpextrb $15, %xmm3, %eax
   4470 ; AVX2-NEXT:    andb $1, %al
   4471 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4472 ; AVX2-NEXT:    vpextrb $14, %xmm3, %eax
   4473 ; AVX2-NEXT:    andb $1, %al
   4474 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4475 ; AVX2-NEXT:    vpextrb $13, %xmm3, %eax
   4476 ; AVX2-NEXT:    andb $1, %al
   4477 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4478 ; AVX2-NEXT:    vpextrb $12, %xmm3, %eax
   4479 ; AVX2-NEXT:    andb $1, %al
   4480 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4481 ; AVX2-NEXT:    vpextrb $11, %xmm3, %eax
   4482 ; AVX2-NEXT:    andb $1, %al
   4483 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4484 ; AVX2-NEXT:    vpextrb $10, %xmm3, %eax
   4485 ; AVX2-NEXT:    andb $1, %al
   4486 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4487 ; AVX2-NEXT:    vpextrb $9, %xmm3, %eax
   4488 ; AVX2-NEXT:    andb $1, %al
   4489 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4490 ; AVX2-NEXT:    vpextrb $8, %xmm3, %eax
   4491 ; AVX2-NEXT:    andb $1, %al
   4492 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4493 ; AVX2-NEXT:    vpextrb $7, %xmm3, %eax
   4494 ; AVX2-NEXT:    andb $1, %al
   4495 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4496 ; AVX2-NEXT:    vpextrb $6, %xmm3, %eax
   4497 ; AVX2-NEXT:    andb $1, %al
   4498 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4499 ; AVX2-NEXT:    vpextrb $5, %xmm3, %eax
   4500 ; AVX2-NEXT:    andb $1, %al
   4501 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4502 ; AVX2-NEXT:    vpextrb $4, %xmm3, %eax
   4503 ; AVX2-NEXT:    andb $1, %al
   4504 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4505 ; AVX2-NEXT:    vpextrb $3, %xmm3, %eax
   4506 ; AVX2-NEXT:    andb $1, %al
   4507 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4508 ; AVX2-NEXT:    vpextrb $2, %xmm3, %eax
   4509 ; AVX2-NEXT:    andb $1, %al
   4510 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4511 ; AVX2-NEXT:    vpextrb $1, %xmm3, %eax
   4512 ; AVX2-NEXT:    andb $1, %al
   4513 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4514 ; AVX2-NEXT:    vpextrb $0, %xmm3, %eax
   4515 ; AVX2-NEXT:    andb $1, %al
   4516 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4517 ; AVX2-NEXT:    vpextrb $15, %xmm2, %eax
   4518 ; AVX2-NEXT:    andb $1, %al
   4519 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4520 ; AVX2-NEXT:    vpextrb $14, %xmm2, %eax
   4521 ; AVX2-NEXT:    andb $1, %al
   4522 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4523 ; AVX2-NEXT:    vpextrb $13, %xmm2, %eax
   4524 ; AVX2-NEXT:    andb $1, %al
   4525 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4526 ; AVX2-NEXT:    vpextrb $12, %xmm2, %eax
   4527 ; AVX2-NEXT:    andb $1, %al
   4528 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4529 ; AVX2-NEXT:    vpextrb $11, %xmm2, %eax
   4530 ; AVX2-NEXT:    andb $1, %al
   4531 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4532 ; AVX2-NEXT:    vpextrb $10, %xmm2, %eax
   4533 ; AVX2-NEXT:    andb $1, %al
   4534 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4535 ; AVX2-NEXT:    vpextrb $9, %xmm2, %eax
   4536 ; AVX2-NEXT:    andb $1, %al
   4537 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4538 ; AVX2-NEXT:    vpextrb $8, %xmm2, %eax
   4539 ; AVX2-NEXT:    andb $1, %al
   4540 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4541 ; AVX2-NEXT:    vpextrb $7, %xmm2, %eax
   4542 ; AVX2-NEXT:    andb $1, %al
   4543 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4544 ; AVX2-NEXT:    vpextrb $6, %xmm2, %eax
   4545 ; AVX2-NEXT:    andb $1, %al
   4546 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4547 ; AVX2-NEXT:    vpextrb $5, %xmm2, %eax
   4548 ; AVX2-NEXT:    andb $1, %al
   4549 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4550 ; AVX2-NEXT:    vpextrb $4, %xmm2, %eax
   4551 ; AVX2-NEXT:    andb $1, %al
   4552 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4553 ; AVX2-NEXT:    vpextrb $3, %xmm2, %eax
   4554 ; AVX2-NEXT:    andb $1, %al
   4555 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4556 ; AVX2-NEXT:    vpextrb $2, %xmm2, %eax
   4557 ; AVX2-NEXT:    andb $1, %al
   4558 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4559 ; AVX2-NEXT:    vpextrb $1, %xmm2, %eax
   4560 ; AVX2-NEXT:    andb $1, %al
   4561 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4562 ; AVX2-NEXT:    vpextrb $0, %xmm2, %eax
   4563 ; AVX2-NEXT:    andb $1, %al
   4564 ; AVX2-NEXT:    movb %al, 4(%rdi)
   4565 ; AVX2-NEXT:    vpextrb $15, %xmm1, %eax
   4566 ; AVX2-NEXT:    andb $1, %al
   4567 ; AVX2-NEXT:    movb %al, (%rdi)
   4568 ; AVX2-NEXT:    vpextrb $14, %xmm1, %eax
   4569 ; AVX2-NEXT:    andb $1, %al
   4570 ; AVX2-NEXT:    movb %al, (%rdi)
   4571 ; AVX2-NEXT:    vpextrb $13, %xmm1, %eax
   4572 ; AVX2-NEXT:    andb $1, %al
   4573 ; AVX2-NEXT:    movb %al, (%rdi)
   4574 ; AVX2-NEXT:    vpextrb $12, %xmm1, %eax
   4575 ; AVX2-NEXT:    andb $1, %al
   4576 ; AVX2-NEXT:    movb %al, (%rdi)
   4577 ; AVX2-NEXT:    vpextrb $11, %xmm1, %eax
   4578 ; AVX2-NEXT:    andb $1, %al
   4579 ; AVX2-NEXT:    movb %al, (%rdi)
   4580 ; AVX2-NEXT:    vpextrb $10, %xmm1, %eax
   4581 ; AVX2-NEXT:    andb $1, %al
   4582 ; AVX2-NEXT:    movb %al, (%rdi)
   4583 ; AVX2-NEXT:    vpextrb $9, %xmm1, %eax
   4584 ; AVX2-NEXT:    andb $1, %al
   4585 ; AVX2-NEXT:    movb %al, (%rdi)
   4586 ; AVX2-NEXT:    vpextrb $8, %xmm1, %eax
   4587 ; AVX2-NEXT:    andb $1, %al
   4588 ; AVX2-NEXT:    movb %al, (%rdi)
   4589 ; AVX2-NEXT:    vpextrb $7, %xmm1, %eax
   4590 ; AVX2-NEXT:    andb $1, %al
   4591 ; AVX2-NEXT:    movb %al, (%rdi)
   4592 ; AVX2-NEXT:    vpextrb $6, %xmm1, %eax
   4593 ; AVX2-NEXT:    andb $1, %al
   4594 ; AVX2-NEXT:    movb %al, (%rdi)
   4595 ; AVX2-NEXT:    vpextrb $5, %xmm1, %eax
   4596 ; AVX2-NEXT:    andb $1, %al
   4597 ; AVX2-NEXT:    movb %al, (%rdi)
   4598 ; AVX2-NEXT:    vpextrb $4, %xmm1, %eax
   4599 ; AVX2-NEXT:    andb $1, %al
   4600 ; AVX2-NEXT:    movb %al, (%rdi)
   4601 ; AVX2-NEXT:    vpextrb $3, %xmm1, %eax
   4602 ; AVX2-NEXT:    andb $1, %al
   4603 ; AVX2-NEXT:    movb %al, (%rdi)
   4604 ; AVX2-NEXT:    vpextrb $2, %xmm1, %eax
   4605 ; AVX2-NEXT:    andb $1, %al
   4606 ; AVX2-NEXT:    movb %al, (%rdi)
   4607 ; AVX2-NEXT:    vpextrb $1, %xmm1, %eax
   4608 ; AVX2-NEXT:    andb $1, %al
   4609 ; AVX2-NEXT:    movb %al, (%rdi)
   4610 ; AVX2-NEXT:    vpextrb $0, %xmm1, %eax
   4611 ; AVX2-NEXT:    andb $1, %al
   4612 ; AVX2-NEXT:    movb %al, (%rdi)
   4613 ; AVX2-NEXT:    vpextrb $15, %xmm0, %eax
   4614 ; AVX2-NEXT:    andb $1, %al
   4615 ; AVX2-NEXT:    movb %al, (%rdi)
   4616 ; AVX2-NEXT:    vpextrb $14, %xmm0, %eax
   4617 ; AVX2-NEXT:    andb $1, %al
   4618 ; AVX2-NEXT:    movb %al, (%rdi)
   4619 ; AVX2-NEXT:    vpextrb $13, %xmm0, %eax
   4620 ; AVX2-NEXT:    andb $1, %al
   4621 ; AVX2-NEXT:    movb %al, (%rdi)
   4622 ; AVX2-NEXT:    vpextrb $12, %xmm0, %eax
   4623 ; AVX2-NEXT:    andb $1, %al
   4624 ; AVX2-NEXT:    movb %al, (%rdi)
   4625 ; AVX2-NEXT:    vpextrb $11, %xmm0, %eax
   4626 ; AVX2-NEXT:    andb $1, %al
   4627 ; AVX2-NEXT:    movb %al, (%rdi)
   4628 ; AVX2-NEXT:    vpextrb $10, %xmm0, %eax
   4629 ; AVX2-NEXT:    andb $1, %al
   4630 ; AVX2-NEXT:    movb %al, (%rdi)
   4631 ; AVX2-NEXT:    vpextrb $9, %xmm0, %eax
   4632 ; AVX2-NEXT:    andb $1, %al
   4633 ; AVX2-NEXT:    movb %al, (%rdi)
   4634 ; AVX2-NEXT:    vpextrb $8, %xmm0, %eax
   4635 ; AVX2-NEXT:    andb $1, %al
   4636 ; AVX2-NEXT:    movb %al, (%rdi)
   4637 ; AVX2-NEXT:    vpextrb $7, %xmm0, %eax
   4638 ; AVX2-NEXT:    andb $1, %al
   4639 ; AVX2-NEXT:    movb %al, (%rdi)
   4640 ; AVX2-NEXT:    vpextrb $6, %xmm0, %eax
   4641 ; AVX2-NEXT:    andb $1, %al
   4642 ; AVX2-NEXT:    movb %al, (%rdi)
   4643 ; AVX2-NEXT:    vpextrb $5, %xmm0, %eax
   4644 ; AVX2-NEXT:    andb $1, %al
   4645 ; AVX2-NEXT:    movb %al, (%rdi)
   4646 ; AVX2-NEXT:    vpextrb $4, %xmm0, %eax
   4647 ; AVX2-NEXT:    andb $1, %al
   4648 ; AVX2-NEXT:    movb %al, (%rdi)
   4649 ; AVX2-NEXT:    vpextrb $3, %xmm0, %eax
   4650 ; AVX2-NEXT:    andb $1, %al
   4651 ; AVX2-NEXT:    movb %al, (%rdi)
   4652 ; AVX2-NEXT:    vpextrb $2, %xmm0, %eax
   4653 ; AVX2-NEXT:    andb $1, %al
   4654 ; AVX2-NEXT:    movb %al, (%rdi)
   4655 ; AVX2-NEXT:    vpextrb $1, %xmm0, %eax
   4656 ; AVX2-NEXT:    andb $1, %al
   4657 ; AVX2-NEXT:    movb %al, (%rdi)
   4658 ; AVX2-NEXT:    vpextrb $0, %xmm0, %eax
   4659 ; AVX2-NEXT:    andb $1, %al
   4660 ; AVX2-NEXT:    movb %al, (%rdi)
   4661 ; AVX2-NEXT:    movq %rdi, %rax
   4662 ; AVX2-NEXT:    vzeroupper
   4663 ; AVX2-NEXT:    retq
   4664 ;
   4665 ; AVX512-LABEL: test_cmp_v64i16:
   4666 ; AVX512:       # BB#0:
   4667 ; AVX512-NEXT:    vpcmpgtw %ymm7, %ymm3, %ymm3
   4668 ; AVX512-NEXT:    vpmovsxwd %ymm3, %zmm3
   4669 ; AVX512-NEXT:    vpslld $31, %zmm3, %zmm3
   4670 ; AVX512-NEXT:    vptestmd %zmm3, %zmm3, %k0
   4671 ; AVX512-NEXT:    kshiftlw $14, %k0, %k1
   4672 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4673 ; AVX512-NEXT:    kmovw %k1, %eax
   4674 ; AVX512-NEXT:    kshiftlw $15, %k0, %k1
   4675 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4676 ; AVX512-NEXT:    kmovw %k1, %ecx
   4677 ; AVX512-NEXT:    vmovd %ecx, %xmm3
   4678 ; AVX512-NEXT:    vpinsrb $1, %eax, %xmm3, %xmm3
   4679 ; AVX512-NEXT:    kshiftlw $13, %k0, %k1
   4680 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4681 ; AVX512-NEXT:    kmovw %k1, %eax
   4682 ; AVX512-NEXT:    vpinsrb $2, %eax, %xmm3, %xmm3
   4683 ; AVX512-NEXT:    kshiftlw $12, %k0, %k1
   4684 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4685 ; AVX512-NEXT:    kmovw %k1, %eax
   4686 ; AVX512-NEXT:    vpinsrb $3, %eax, %xmm3, %xmm3
   4687 ; AVX512-NEXT:    kshiftlw $11, %k0, %k1
   4688 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4689 ; AVX512-NEXT:    kmovw %k1, %eax
   4690 ; AVX512-NEXT:    vpinsrb $4, %eax, %xmm3, %xmm3
   4691 ; AVX512-NEXT:    kshiftlw $10, %k0, %k1
   4692 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4693 ; AVX512-NEXT:    kmovw %k1, %eax
   4694 ; AVX512-NEXT:    vpinsrb $5, %eax, %xmm3, %xmm3
   4695 ; AVX512-NEXT:    kshiftlw $9, %k0, %k1
   4696 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4697 ; AVX512-NEXT:    kmovw %k1, %eax
   4698 ; AVX512-NEXT:    vpinsrb $6, %eax, %xmm3, %xmm3
   4699 ; AVX512-NEXT:    kshiftlw $8, %k0, %k1
   4700 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4701 ; AVX512-NEXT:    kmovw %k1, %eax
   4702 ; AVX512-NEXT:    vpinsrb $7, %eax, %xmm3, %xmm3
   4703 ; AVX512-NEXT:    kshiftlw $7, %k0, %k1
   4704 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4705 ; AVX512-NEXT:    kmovw %k1, %eax
   4706 ; AVX512-NEXT:    vpinsrb $8, %eax, %xmm3, %xmm3
   4707 ; AVX512-NEXT:    kshiftlw $6, %k0, %k1
   4708 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4709 ; AVX512-NEXT:    kmovw %k1, %eax
   4710 ; AVX512-NEXT:    vpinsrb $9, %eax, %xmm3, %xmm3
   4711 ; AVX512-NEXT:    kshiftlw $5, %k0, %k1
   4712 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4713 ; AVX512-NEXT:    kmovw %k1, %eax
   4714 ; AVX512-NEXT:    vpinsrb $10, %eax, %xmm3, %xmm3
   4715 ; AVX512-NEXT:    kshiftlw $4, %k0, %k1
   4716 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4717 ; AVX512-NEXT:    kmovw %k1, %eax
   4718 ; AVX512-NEXT:    vpinsrb $11, %eax, %xmm3, %xmm3
   4719 ; AVX512-NEXT:    kshiftlw $3, %k0, %k1
   4720 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4721 ; AVX512-NEXT:    kmovw %k1, %eax
   4722 ; AVX512-NEXT:    vpinsrb $12, %eax, %xmm3, %xmm3
   4723 ; AVX512-NEXT:    kshiftlw $2, %k0, %k1
   4724 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4725 ; AVX512-NEXT:    kmovw %k1, %eax
   4726 ; AVX512-NEXT:    vpinsrb $13, %eax, %xmm3, %xmm3
   4727 ; AVX512-NEXT:    kshiftlw $1, %k0, %k1
   4728 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4729 ; AVX512-NEXT:    kmovw %k1, %eax
   4730 ; AVX512-NEXT:    vpinsrb $14, %eax, %xmm3, %xmm3
   4731 ; AVX512-NEXT:    kshiftlw $0, %k0, %k0
   4732 ; AVX512-NEXT:    kshiftrw $15, %k0, %k0
   4733 ; AVX512-NEXT:    kmovw %k0, %eax
   4734 ; AVX512-NEXT:    vpinsrb $15, %eax, %xmm3, %xmm3
   4735 ; AVX512-NEXT:    vpcmpgtw %ymm6, %ymm2, %ymm2
   4736 ; AVX512-NEXT:    vpmovsxwd %ymm2, %zmm2
   4737 ; AVX512-NEXT:    vpslld $31, %zmm2, %zmm2
   4738 ; AVX512-NEXT:    vptestmd %zmm2, %zmm2, %k0
   4739 ; AVX512-NEXT:    kshiftlw $14, %k0, %k1
   4740 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4741 ; AVX512-NEXT:    kmovw %k1, %eax
   4742 ; AVX512-NEXT:    kshiftlw $15, %k0, %k1
   4743 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4744 ; AVX512-NEXT:    kmovw %k1, %ecx
   4745 ; AVX512-NEXT:    vmovd %ecx, %xmm2
   4746 ; AVX512-NEXT:    vpinsrb $1, %eax, %xmm2, %xmm2
   4747 ; AVX512-NEXT:    kshiftlw $13, %k0, %k1
   4748 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4749 ; AVX512-NEXT:    kmovw %k1, %eax
   4750 ; AVX512-NEXT:    vpinsrb $2, %eax, %xmm2, %xmm2
   4751 ; AVX512-NEXT:    kshiftlw $12, %k0, %k1
   4752 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4753 ; AVX512-NEXT:    kmovw %k1, %eax
   4754 ; AVX512-NEXT:    vpinsrb $3, %eax, %xmm2, %xmm2
   4755 ; AVX512-NEXT:    kshiftlw $11, %k0, %k1
   4756 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4757 ; AVX512-NEXT:    kmovw %k1, %eax
   4758 ; AVX512-NEXT:    vpinsrb $4, %eax, %xmm2, %xmm2
   4759 ; AVX512-NEXT:    kshiftlw $10, %k0, %k1
   4760 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4761 ; AVX512-NEXT:    kmovw %k1, %eax
   4762 ; AVX512-NEXT:    vpinsrb $5, %eax, %xmm2, %xmm2
   4763 ; AVX512-NEXT:    kshiftlw $9, %k0, %k1
   4764 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4765 ; AVX512-NEXT:    kmovw %k1, %eax
   4766 ; AVX512-NEXT:    vpinsrb $6, %eax, %xmm2, %xmm2
   4767 ; AVX512-NEXT:    kshiftlw $8, %k0, %k1
   4768 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4769 ; AVX512-NEXT:    kmovw %k1, %eax
   4770 ; AVX512-NEXT:    vpinsrb $7, %eax, %xmm2, %xmm2
   4771 ; AVX512-NEXT:    kshiftlw $7, %k0, %k1
   4772 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4773 ; AVX512-NEXT:    kmovw %k1, %eax
   4774 ; AVX512-NEXT:    vpinsrb $8, %eax, %xmm2, %xmm2
   4775 ; AVX512-NEXT:    kshiftlw $6, %k0, %k1
   4776 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4777 ; AVX512-NEXT:    kmovw %k1, %eax
   4778 ; AVX512-NEXT:    vpinsrb $9, %eax, %xmm2, %xmm2
   4779 ; AVX512-NEXT:    kshiftlw $5, %k0, %k1
   4780 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4781 ; AVX512-NEXT:    kmovw %k1, %eax
   4782 ; AVX512-NEXT:    vpinsrb $10, %eax, %xmm2, %xmm2
   4783 ; AVX512-NEXT:    kshiftlw $4, %k0, %k1
   4784 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4785 ; AVX512-NEXT:    kmovw %k1, %eax
   4786 ; AVX512-NEXT:    vpinsrb $11, %eax, %xmm2, %xmm2
   4787 ; AVX512-NEXT:    kshiftlw $3, %k0, %k1
   4788 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4789 ; AVX512-NEXT:    kmovw %k1, %eax
   4790 ; AVX512-NEXT:    vpinsrb $12, %eax, %xmm2, %xmm2
   4791 ; AVX512-NEXT:    kshiftlw $2, %k0, %k1
   4792 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4793 ; AVX512-NEXT:    kmovw %k1, %eax
   4794 ; AVX512-NEXT:    vpinsrb $13, %eax, %xmm2, %xmm2
   4795 ; AVX512-NEXT:    kshiftlw $1, %k0, %k1
   4796 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4797 ; AVX512-NEXT:    kmovw %k1, %eax
   4798 ; AVX512-NEXT:    vpinsrb $14, %eax, %xmm2, %xmm2
   4799 ; AVX512-NEXT:    kshiftlw $0, %k0, %k0
   4800 ; AVX512-NEXT:    kshiftrw $15, %k0, %k0
   4801 ; AVX512-NEXT:    kmovw %k0, %eax
   4802 ; AVX512-NEXT:    vpinsrb $15, %eax, %xmm2, %xmm2
   4803 ; AVX512-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm2
   4804 ; AVX512-NEXT:    vpsllw $7, %ymm2, %ymm3
   4805 ; AVX512-NEXT:    vmovdqa {{.*#+}} ymm2 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128]
   4806 ; AVX512-NEXT:    vpand %ymm2, %ymm3, %ymm3
   4807 ; AVX512-NEXT:    vpxor %ymm6, %ymm6, %ymm6
   4808 ; AVX512-NEXT:    vpcmpgtb %ymm3, %ymm6, %ymm3
   4809 ; AVX512-NEXT:    vpcmpgtw %ymm5, %ymm1, %ymm1
   4810 ; AVX512-NEXT:    vpmovsxwd %ymm1, %zmm1
   4811 ; AVX512-NEXT:    vpslld $31, %zmm1, %zmm1
   4812 ; AVX512-NEXT:    vptestmd %zmm1, %zmm1, %k0
   4813 ; AVX512-NEXT:    kshiftlw $14, %k0, %k1
   4814 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4815 ; AVX512-NEXT:    kmovw %k1, %eax
   4816 ; AVX512-NEXT:    kshiftlw $15, %k0, %k1
   4817 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4818 ; AVX512-NEXT:    kmovw %k1, %ecx
   4819 ; AVX512-NEXT:    vmovd %ecx, %xmm1
   4820 ; AVX512-NEXT:    vpinsrb $1, %eax, %xmm1, %xmm1
   4821 ; AVX512-NEXT:    kshiftlw $13, %k0, %k1
   4822 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4823 ; AVX512-NEXT:    kmovw %k1, %eax
   4824 ; AVX512-NEXT:    vpinsrb $2, %eax, %xmm1, %xmm1
   4825 ; AVX512-NEXT:    kshiftlw $12, %k0, %k1
   4826 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4827 ; AVX512-NEXT:    kmovw %k1, %eax
   4828 ; AVX512-NEXT:    vpinsrb $3, %eax, %xmm1, %xmm1
   4829 ; AVX512-NEXT:    kshiftlw $11, %k0, %k1
   4830 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4831 ; AVX512-NEXT:    kmovw %k1, %eax
   4832 ; AVX512-NEXT:    vpinsrb $4, %eax, %xmm1, %xmm1
   4833 ; AVX512-NEXT:    kshiftlw $10, %k0, %k1
   4834 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4835 ; AVX512-NEXT:    kmovw %k1, %eax
   4836 ; AVX512-NEXT:    vpinsrb $5, %eax, %xmm1, %xmm1
   4837 ; AVX512-NEXT:    kshiftlw $9, %k0, %k1
   4838 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4839 ; AVX512-NEXT:    kmovw %k1, %eax
   4840 ; AVX512-NEXT:    vpinsrb $6, %eax, %xmm1, %xmm1
   4841 ; AVX512-NEXT:    kshiftlw $8, %k0, %k1
   4842 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4843 ; AVX512-NEXT:    kmovw %k1, %eax
   4844 ; AVX512-NEXT:    vpinsrb $7, %eax, %xmm1, %xmm1
   4845 ; AVX512-NEXT:    kshiftlw $7, %k0, %k1
   4846 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4847 ; AVX512-NEXT:    kmovw %k1, %eax
   4848 ; AVX512-NEXT:    vpinsrb $8, %eax, %xmm1, %xmm1
   4849 ; AVX512-NEXT:    kshiftlw $6, %k0, %k1
   4850 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4851 ; AVX512-NEXT:    kmovw %k1, %eax
   4852 ; AVX512-NEXT:    vpinsrb $9, %eax, %xmm1, %xmm1
   4853 ; AVX512-NEXT:    kshiftlw $5, %k0, %k1
   4854 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4855 ; AVX512-NEXT:    kmovw %k1, %eax
   4856 ; AVX512-NEXT:    vpinsrb $10, %eax, %xmm1, %xmm1
   4857 ; AVX512-NEXT:    kshiftlw $4, %k0, %k1
   4858 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4859 ; AVX512-NEXT:    kmovw %k1, %eax
   4860 ; AVX512-NEXT:    vpinsrb $11, %eax, %xmm1, %xmm1
   4861 ; AVX512-NEXT:    kshiftlw $3, %k0, %k1
   4862 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4863 ; AVX512-NEXT:    kmovw %k1, %eax
   4864 ; AVX512-NEXT:    vpinsrb $12, %eax, %xmm1, %xmm1
   4865 ; AVX512-NEXT:    kshiftlw $2, %k0, %k1
   4866 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4867 ; AVX512-NEXT:    kmovw %k1, %eax
   4868 ; AVX512-NEXT:    vpinsrb $13, %eax, %xmm1, %xmm1
   4869 ; AVX512-NEXT:    kshiftlw $1, %k0, %k1
   4870 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4871 ; AVX512-NEXT:    kmovw %k1, %eax
   4872 ; AVX512-NEXT:    vpinsrb $14, %eax, %xmm1, %xmm1
   4873 ; AVX512-NEXT:    kshiftlw $0, %k0, %k0
   4874 ; AVX512-NEXT:    kshiftrw $15, %k0, %k0
   4875 ; AVX512-NEXT:    kmovw %k0, %eax
   4876 ; AVX512-NEXT:    vpinsrb $15, %eax, %xmm1, %xmm1
   4877 ; AVX512-NEXT:    vpcmpgtw %ymm4, %ymm0, %ymm0
   4878 ; AVX512-NEXT:    vpmovsxwd %ymm0, %zmm0
   4879 ; AVX512-NEXT:    vpslld $31, %zmm0, %zmm0
   4880 ; AVX512-NEXT:    vptestmd %zmm0, %zmm0, %k0
   4881 ; AVX512-NEXT:    kshiftlw $14, %k0, %k1
   4882 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4883 ; AVX512-NEXT:    kmovw %k1, %eax
   4884 ; AVX512-NEXT:    kshiftlw $15, %k0, %k1
   4885 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4886 ; AVX512-NEXT:    kmovw %k1, %ecx
   4887 ; AVX512-NEXT:    vmovd %ecx, %xmm0
   4888 ; AVX512-NEXT:    vpinsrb $1, %eax, %xmm0, %xmm0
   4889 ; AVX512-NEXT:    kshiftlw $13, %k0, %k1
   4890 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4891 ; AVX512-NEXT:    kmovw %k1, %eax
   4892 ; AVX512-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0
   4893 ; AVX512-NEXT:    kshiftlw $12, %k0, %k1
   4894 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4895 ; AVX512-NEXT:    kmovw %k1, %eax
   4896 ; AVX512-NEXT:    vpinsrb $3, %eax, %xmm0, %xmm0
   4897 ; AVX512-NEXT:    kshiftlw $11, %k0, %k1
   4898 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4899 ; AVX512-NEXT:    kmovw %k1, %eax
   4900 ; AVX512-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0
   4901 ; AVX512-NEXT:    kshiftlw $10, %k0, %k1
   4902 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4903 ; AVX512-NEXT:    kmovw %k1, %eax
   4904 ; AVX512-NEXT:    vpinsrb $5, %eax, %xmm0, %xmm0
   4905 ; AVX512-NEXT:    kshiftlw $9, %k0, %k1
   4906 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4907 ; AVX512-NEXT:    kmovw %k1, %eax
   4908 ; AVX512-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0
   4909 ; AVX512-NEXT:    kshiftlw $8, %k0, %k1
   4910 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4911 ; AVX512-NEXT:    kmovw %k1, %eax
   4912 ; AVX512-NEXT:    vpinsrb $7, %eax, %xmm0, %xmm0
   4913 ; AVX512-NEXT:    kshiftlw $7, %k0, %k1
   4914 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4915 ; AVX512-NEXT:    kmovw %k1, %eax
   4916 ; AVX512-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0
   4917 ; AVX512-NEXT:    kshiftlw $6, %k0, %k1
   4918 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4919 ; AVX512-NEXT:    kmovw %k1, %eax
   4920 ; AVX512-NEXT:    vpinsrb $9, %eax, %xmm0, %xmm0
   4921 ; AVX512-NEXT:    kshiftlw $5, %k0, %k1
   4922 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4923 ; AVX512-NEXT:    kmovw %k1, %eax
   4924 ; AVX512-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0
   4925 ; AVX512-NEXT:    kshiftlw $4, %k0, %k1
   4926 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4927 ; AVX512-NEXT:    kmovw %k1, %eax
   4928 ; AVX512-NEXT:    vpinsrb $11, %eax, %xmm0, %xmm0
   4929 ; AVX512-NEXT:    kshiftlw $3, %k0, %k1
   4930 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4931 ; AVX512-NEXT:    kmovw %k1, %eax
   4932 ; AVX512-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0
   4933 ; AVX512-NEXT:    kshiftlw $2, %k0, %k1
   4934 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4935 ; AVX512-NEXT:    kmovw %k1, %eax
   4936 ; AVX512-NEXT:    vpinsrb $13, %eax, %xmm0, %xmm0
   4937 ; AVX512-NEXT:    kshiftlw $1, %k0, %k1
   4938 ; AVX512-NEXT:    kshiftrw $15, %k1, %k1
   4939 ; AVX512-NEXT:    kmovw %k1, %eax
   4940 ; AVX512-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0
   4941 ; AVX512-NEXT:    kshiftlw $0, %k0, %k0
   4942 ; AVX512-NEXT:    kshiftrw $15, %k0, %k0
   4943 ; AVX512-NEXT:    kmovw %k0, %eax
   4944 ; AVX512-NEXT:    vpinsrb $15, %eax, %xmm0, %xmm0
   4945 ; AVX512-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
   4946 ; AVX512-NEXT:    vpsllw $7, %ymm0, %ymm0
   4947 ; AVX512-NEXT:    vpand %ymm2, %ymm0, %ymm0
   4948 ; AVX512-NEXT:    vpcmpgtb %ymm0, %ymm6, %ymm1
   4949 ; AVX512-NEXT:    vpsllw $7, %xmm1, %xmm0
   4950 ; AVX512-NEXT:    vmovdqa {{.*#+}} xmm4 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128]
   4951 ; AVX512-NEXT:    vpand %xmm4, %xmm0, %xmm0
   4952 ; AVX512-NEXT:    vpxor %xmm5, %xmm5, %xmm5
   4953 ; AVX512-NEXT:    vpcmpgtb %xmm0, %xmm5, %xmm0
   4954 ; AVX512-NEXT:    vextracti128 $1, %ymm1, %xmm1
   4955 ; AVX512-NEXT:    vpsllw $7, %xmm1, %xmm1
   4956 ; AVX512-NEXT:    vpand %xmm4, %xmm1, %xmm1
   4957 ; AVX512-NEXT:    vpcmpgtb %xmm1, %xmm5, %xmm1
   4958 ; AVX512-NEXT:    vpsllw $7, %xmm3, %xmm2
   4959 ; AVX512-NEXT:    vpand %xmm4, %xmm2, %xmm2
   4960 ; AVX512-NEXT:    vpcmpgtb %xmm2, %xmm5, %xmm2
   4961 ; AVX512-NEXT:    vextracti128 $1, %ymm3, %xmm3
   4962 ; AVX512-NEXT:    vpsllw $7, %xmm3, %xmm3
   4963 ; AVX512-NEXT:    vpand %xmm4, %xmm3, %xmm3
   4964 ; AVX512-NEXT:    vpcmpgtb %xmm3, %xmm5, %xmm3
   4965 ; AVX512-NEXT:    retq
   4966   %1 = icmp sgt <64 x i16> %a0, %a1
   4967   ret <64 x i1> %1
   4968 }
   4969 
   4970 define <128 x i1> @test_cmp_v128i8(<128 x i8> %a0, <128 x i8> %a1) nounwind {
   4971 ; SSE2-LABEL: test_cmp_v128i8:
   4972 ; SSE2:       # BB#0:
   4973 ; SSE2-NEXT:    pushq %rax
   4974 ; SSE2-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm0
   4975 ; SSE2-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm1
   4976 ; SSE2-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm2
   4977 ; SSE2-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm3
   4978 ; SSE2-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm4
   4979 ; SSE2-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm5
   4980 ; SSE2-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm6
   4981 ; SSE2-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm7
   4982 ; SSE2-NEXT:    movdqa %xmm7, -{{[0-9]+}}(%rsp)
   4983 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   4984 ; SSE2-NEXT:    andb $1, %al
   4985 ; SSE2-NEXT:    movb %al, 14(%rdi)
   4986 ; SSE2-NEXT:    movdqa %xmm6, -{{[0-9]+}}(%rsp)
   4987 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   4988 ; SSE2-NEXT:    andb $1, %al
   4989 ; SSE2-NEXT:    movb %al, 12(%rdi)
   4990 ; SSE2-NEXT:    movdqa %xmm5, -{{[0-9]+}}(%rsp)
   4991 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   4992 ; SSE2-NEXT:    andb $1, %al
   4993 ; SSE2-NEXT:    movb %al, 10(%rdi)
   4994 ; SSE2-NEXT:    movdqa %xmm4, -{{[0-9]+}}(%rsp)
   4995 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   4996 ; SSE2-NEXT:    andb $1, %al
   4997 ; SSE2-NEXT:    movb %al, 8(%rdi)
   4998 ; SSE2-NEXT:    movdqa %xmm3, -{{[0-9]+}}(%rsp)
   4999 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5000 ; SSE2-NEXT:    andb $1, %al
   5001 ; SSE2-NEXT:    movb %al, 6(%rdi)
   5002 ; SSE2-NEXT:    movdqa %xmm2, -{{[0-9]+}}(%rsp)
   5003 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5004 ; SSE2-NEXT:    andb $1, %al
   5005 ; SSE2-NEXT:    movb %al, 4(%rdi)
   5006 ; SSE2-NEXT:    movdqa %xmm1, -{{[0-9]+}}(%rsp)
   5007 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5008 ; SSE2-NEXT:    andb $1, %al
   5009 ; SSE2-NEXT:    movb %al, 2(%rdi)
   5010 ; SSE2-NEXT:    movdqa %xmm0, -{{[0-9]+}}(%rsp)
   5011 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5012 ; SSE2-NEXT:    andb $1, %al
   5013 ; SSE2-NEXT:    movb %al, (%rdi)
   5014 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5015 ; SSE2-NEXT:    andb $1, %al
   5016 ; SSE2-NEXT:    movb %al, 14(%rdi)
   5017 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5018 ; SSE2-NEXT:    andb $1, %al
   5019 ; SSE2-NEXT:    movb %al, 12(%rdi)
   5020 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5021 ; SSE2-NEXT:    andb $1, %al
   5022 ; SSE2-NEXT:    movb %al, 10(%rdi)
   5023 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5024 ; SSE2-NEXT:    andb $1, %al
   5025 ; SSE2-NEXT:    movb %al, 8(%rdi)
   5026 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5027 ; SSE2-NEXT:    andb $1, %al
   5028 ; SSE2-NEXT:    movb %al, 6(%rdi)
   5029 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5030 ; SSE2-NEXT:    andb $1, %al
   5031 ; SSE2-NEXT:    movb %al, 4(%rdi)
   5032 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5033 ; SSE2-NEXT:    andb $1, %al
   5034 ; SSE2-NEXT:    movb %al, 2(%rdi)
   5035 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5036 ; SSE2-NEXT:    andb $1, %al
   5037 ; SSE2-NEXT:    movb %al, (%rdi)
   5038 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5039 ; SSE2-NEXT:    andb $1, %al
   5040 ; SSE2-NEXT:    movb %al, 14(%rdi)
   5041 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5042 ; SSE2-NEXT:    andb $1, %al
   5043 ; SSE2-NEXT:    movb %al, 12(%rdi)
   5044 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5045 ; SSE2-NEXT:    andb $1, %al
   5046 ; SSE2-NEXT:    movb %al, 10(%rdi)
   5047 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5048 ; SSE2-NEXT:    andb $1, %al
   5049 ; SSE2-NEXT:    movb %al, 8(%rdi)
   5050 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5051 ; SSE2-NEXT:    andb $1, %al
   5052 ; SSE2-NEXT:    movb %al, 6(%rdi)
   5053 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5054 ; SSE2-NEXT:    andb $1, %al
   5055 ; SSE2-NEXT:    movb %al, 4(%rdi)
   5056 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5057 ; SSE2-NEXT:    andb $1, %al
   5058 ; SSE2-NEXT:    movb %al, 2(%rdi)
   5059 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5060 ; SSE2-NEXT:    andb $1, %al
   5061 ; SSE2-NEXT:    movb %al, (%rdi)
   5062 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5063 ; SSE2-NEXT:    andb $1, %al
   5064 ; SSE2-NEXT:    movb %al, 14(%rdi)
   5065 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5066 ; SSE2-NEXT:    andb $1, %al
   5067 ; SSE2-NEXT:    movb %al, 12(%rdi)
   5068 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5069 ; SSE2-NEXT:    andb $1, %al
   5070 ; SSE2-NEXT:    movb %al, 10(%rdi)
   5071 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5072 ; SSE2-NEXT:    andb $1, %al
   5073 ; SSE2-NEXT:    movb %al, 8(%rdi)
   5074 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5075 ; SSE2-NEXT:    andb $1, %al
   5076 ; SSE2-NEXT:    movb %al, 6(%rdi)
   5077 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5078 ; SSE2-NEXT:    andb $1, %al
   5079 ; SSE2-NEXT:    movb %al, 4(%rdi)
   5080 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5081 ; SSE2-NEXT:    andb $1, %al
   5082 ; SSE2-NEXT:    movb %al, 2(%rdi)
   5083 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5084 ; SSE2-NEXT:    andb $1, %al
   5085 ; SSE2-NEXT:    movb %al, (%rdi)
   5086 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5087 ; SSE2-NEXT:    andb $1, %al
   5088 ; SSE2-NEXT:    movb %al, 14(%rdi)
   5089 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5090 ; SSE2-NEXT:    andb $1, %al
   5091 ; SSE2-NEXT:    movb %al, 12(%rdi)
   5092 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5093 ; SSE2-NEXT:    andb $1, %al
   5094 ; SSE2-NEXT:    movb %al, 10(%rdi)
   5095 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5096 ; SSE2-NEXT:    andb $1, %al
   5097 ; SSE2-NEXT:    movb %al, 8(%rdi)
   5098 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5099 ; SSE2-NEXT:    andb $1, %al
   5100 ; SSE2-NEXT:    movb %al, 6(%rdi)
   5101 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5102 ; SSE2-NEXT:    andb $1, %al
   5103 ; SSE2-NEXT:    movb %al, 4(%rdi)
   5104 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5105 ; SSE2-NEXT:    andb $1, %al
   5106 ; SSE2-NEXT:    movb %al, 2(%rdi)
   5107 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5108 ; SSE2-NEXT:    andb $1, %al
   5109 ; SSE2-NEXT:    movb %al, (%rdi)
   5110 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5111 ; SSE2-NEXT:    andb $1, %al
   5112 ; SSE2-NEXT:    movb %al, 14(%rdi)
   5113 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5114 ; SSE2-NEXT:    andb $1, %al
   5115 ; SSE2-NEXT:    movb %al, 12(%rdi)
   5116 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5117 ; SSE2-NEXT:    andb $1, %al
   5118 ; SSE2-NEXT:    movb %al, 10(%rdi)
   5119 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5120 ; SSE2-NEXT:    andb $1, %al
   5121 ; SSE2-NEXT:    movb %al, 8(%rdi)
   5122 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5123 ; SSE2-NEXT:    andb $1, %al
   5124 ; SSE2-NEXT:    movb %al, 6(%rdi)
   5125 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5126 ; SSE2-NEXT:    andb $1, %al
   5127 ; SSE2-NEXT:    movb %al, 4(%rdi)
   5128 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5129 ; SSE2-NEXT:    andb $1, %al
   5130 ; SSE2-NEXT:    movb %al, 2(%rdi)
   5131 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5132 ; SSE2-NEXT:    andb $1, %al
   5133 ; SSE2-NEXT:    movb %al, (%rdi)
   5134 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5135 ; SSE2-NEXT:    andb $1, %al
   5136 ; SSE2-NEXT:    movb %al, 14(%rdi)
   5137 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5138 ; SSE2-NEXT:    andb $1, %al
   5139 ; SSE2-NEXT:    movb %al, 12(%rdi)
   5140 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5141 ; SSE2-NEXT:    andb $1, %al
   5142 ; SSE2-NEXT:    movb %al, 10(%rdi)
   5143 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5144 ; SSE2-NEXT:    andb $1, %al
   5145 ; SSE2-NEXT:    movb %al, 8(%rdi)
   5146 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5147 ; SSE2-NEXT:    andb $1, %al
   5148 ; SSE2-NEXT:    movb %al, 6(%rdi)
   5149 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5150 ; SSE2-NEXT:    andb $1, %al
   5151 ; SSE2-NEXT:    movb %al, 4(%rdi)
   5152 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5153 ; SSE2-NEXT:    andb $1, %al
   5154 ; SSE2-NEXT:    movb %al, 2(%rdi)
   5155 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5156 ; SSE2-NEXT:    andb $1, %al
   5157 ; SSE2-NEXT:    movb %al, (%rdi)
   5158 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5159 ; SSE2-NEXT:    andb $1, %al
   5160 ; SSE2-NEXT:    movb %al, 14(%rdi)
   5161 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5162 ; SSE2-NEXT:    andb $1, %al
   5163 ; SSE2-NEXT:    movb %al, 12(%rdi)
   5164 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5165 ; SSE2-NEXT:    andb $1, %al
   5166 ; SSE2-NEXT:    movb %al, 10(%rdi)
   5167 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5168 ; SSE2-NEXT:    andb $1, %al
   5169 ; SSE2-NEXT:    movb %al, 8(%rdi)
   5170 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5171 ; SSE2-NEXT:    andb $1, %al
   5172 ; SSE2-NEXT:    movb %al, 6(%rdi)
   5173 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5174 ; SSE2-NEXT:    andb $1, %al
   5175 ; SSE2-NEXT:    movb %al, 4(%rdi)
   5176 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5177 ; SSE2-NEXT:    andb $1, %al
   5178 ; SSE2-NEXT:    movb %al, 2(%rdi)
   5179 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5180 ; SSE2-NEXT:    andb $1, %al
   5181 ; SSE2-NEXT:    movb %al, (%rdi)
   5182 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5183 ; SSE2-NEXT:    andb $1, %al
   5184 ; SSE2-NEXT:    movb %al, 14(%rdi)
   5185 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5186 ; SSE2-NEXT:    andb $1, %al
   5187 ; SSE2-NEXT:    movb %al, 12(%rdi)
   5188 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5189 ; SSE2-NEXT:    andb $1, %al
   5190 ; SSE2-NEXT:    movb %al, 10(%rdi)
   5191 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5192 ; SSE2-NEXT:    andb $1, %al
   5193 ; SSE2-NEXT:    movb %al, 8(%rdi)
   5194 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5195 ; SSE2-NEXT:    andb $1, %al
   5196 ; SSE2-NEXT:    movb %al, 6(%rdi)
   5197 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5198 ; SSE2-NEXT:    andb $1, %al
   5199 ; SSE2-NEXT:    movb %al, 4(%rdi)
   5200 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5201 ; SSE2-NEXT:    andb $1, %al
   5202 ; SSE2-NEXT:    movb %al, 2(%rdi)
   5203 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5204 ; SSE2-NEXT:    andb $1, %al
   5205 ; SSE2-NEXT:    movb %al, (%rdi)
   5206 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5207 ; SSE2-NEXT:    andb $1, %al
   5208 ; SSE2-NEXT:    movb %al, 14(%rdi)
   5209 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5210 ; SSE2-NEXT:    andb $1, %al
   5211 ; SSE2-NEXT:    movb %al, 12(%rdi)
   5212 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5213 ; SSE2-NEXT:    andb $1, %al
   5214 ; SSE2-NEXT:    movb %al, 10(%rdi)
   5215 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5216 ; SSE2-NEXT:    andb $1, %al
   5217 ; SSE2-NEXT:    movb %al, 8(%rdi)
   5218 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5219 ; SSE2-NEXT:    andb $1, %al
   5220 ; SSE2-NEXT:    movb %al, 6(%rdi)
   5221 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5222 ; SSE2-NEXT:    andb $1, %al
   5223 ; SSE2-NEXT:    movb %al, 4(%rdi)
   5224 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5225 ; SSE2-NEXT:    andb $1, %al
   5226 ; SSE2-NEXT:    movb %al, 2(%rdi)
   5227 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5228 ; SSE2-NEXT:    andb $1, %al
   5229 ; SSE2-NEXT:    movb %al, (%rdi)
   5230 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5231 ; SSE2-NEXT:    andb $1, %al
   5232 ; SSE2-NEXT:    movb %al, 14(%rdi)
   5233 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5234 ; SSE2-NEXT:    andb $1, %al
   5235 ; SSE2-NEXT:    movb %al, 12(%rdi)
   5236 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5237 ; SSE2-NEXT:    andb $1, %al
   5238 ; SSE2-NEXT:    movb %al, 10(%rdi)
   5239 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5240 ; SSE2-NEXT:    andb $1, %al
   5241 ; SSE2-NEXT:    movb %al, 8(%rdi)
   5242 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5243 ; SSE2-NEXT:    andb $1, %al
   5244 ; SSE2-NEXT:    movb %al, 6(%rdi)
   5245 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5246 ; SSE2-NEXT:    andb $1, %al
   5247 ; SSE2-NEXT:    movb %al, 4(%rdi)
   5248 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5249 ; SSE2-NEXT:    andb $1, %al
   5250 ; SSE2-NEXT:    movb %al, 2(%rdi)
   5251 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5252 ; SSE2-NEXT:    andb $1, %al
   5253 ; SSE2-NEXT:    movb %al, (%rdi)
   5254 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5255 ; SSE2-NEXT:    andb $1, %al
   5256 ; SSE2-NEXT:    movb %al, 14(%rdi)
   5257 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5258 ; SSE2-NEXT:    andb $1, %al
   5259 ; SSE2-NEXT:    movb %al, 12(%rdi)
   5260 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5261 ; SSE2-NEXT:    andb $1, %al
   5262 ; SSE2-NEXT:    movb %al, 10(%rdi)
   5263 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5264 ; SSE2-NEXT:    andb $1, %al
   5265 ; SSE2-NEXT:    movb %al, 8(%rdi)
   5266 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5267 ; SSE2-NEXT:    andb $1, %al
   5268 ; SSE2-NEXT:    movb %al, 6(%rdi)
   5269 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5270 ; SSE2-NEXT:    andb $1, %al
   5271 ; SSE2-NEXT:    movb %al, 4(%rdi)
   5272 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5273 ; SSE2-NEXT:    andb $1, %al
   5274 ; SSE2-NEXT:    movb %al, 2(%rdi)
   5275 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5276 ; SSE2-NEXT:    andb $1, %al
   5277 ; SSE2-NEXT:    movb %al, (%rdi)
   5278 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5279 ; SSE2-NEXT:    andb $1, %al
   5280 ; SSE2-NEXT:    movb %al, 14(%rdi)
   5281 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5282 ; SSE2-NEXT:    andb $1, %al
   5283 ; SSE2-NEXT:    movb %al, 12(%rdi)
   5284 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5285 ; SSE2-NEXT:    andb $1, %al
   5286 ; SSE2-NEXT:    movb %al, 10(%rdi)
   5287 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5288 ; SSE2-NEXT:    andb $1, %al
   5289 ; SSE2-NEXT:    movb %al, 8(%rdi)
   5290 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5291 ; SSE2-NEXT:    andb $1, %al
   5292 ; SSE2-NEXT:    movb %al, 6(%rdi)
   5293 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5294 ; SSE2-NEXT:    andb $1, %al
   5295 ; SSE2-NEXT:    movb %al, 4(%rdi)
   5296 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5297 ; SSE2-NEXT:    andb $1, %al
   5298 ; SSE2-NEXT:    movb %al, 2(%rdi)
   5299 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5300 ; SSE2-NEXT:    andb $1, %al
   5301 ; SSE2-NEXT:    movb %al, (%rdi)
   5302 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5303 ; SSE2-NEXT:    andb $1, %al
   5304 ; SSE2-NEXT:    movb %al, 14(%rdi)
   5305 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5306 ; SSE2-NEXT:    andb $1, %al
   5307 ; SSE2-NEXT:    movb %al, 12(%rdi)
   5308 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5309 ; SSE2-NEXT:    andb $1, %al
   5310 ; SSE2-NEXT:    movb %al, 10(%rdi)
   5311 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5312 ; SSE2-NEXT:    andb $1, %al
   5313 ; SSE2-NEXT:    movb %al, 8(%rdi)
   5314 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5315 ; SSE2-NEXT:    andb $1, %al
   5316 ; SSE2-NEXT:    movb %al, 6(%rdi)
   5317 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5318 ; SSE2-NEXT:    andb $1, %al
   5319 ; SSE2-NEXT:    movb %al, 4(%rdi)
   5320 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5321 ; SSE2-NEXT:    andb $1, %al
   5322 ; SSE2-NEXT:    movb %al, 2(%rdi)
   5323 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5324 ; SSE2-NEXT:    andb $1, %al
   5325 ; SSE2-NEXT:    movb %al, (%rdi)
   5326 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5327 ; SSE2-NEXT:    andb $1, %al
   5328 ; SSE2-NEXT:    movb %al, 14(%rdi)
   5329 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5330 ; SSE2-NEXT:    andb $1, %al
   5331 ; SSE2-NEXT:    movb %al, 12(%rdi)
   5332 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5333 ; SSE2-NEXT:    andb $1, %al
   5334 ; SSE2-NEXT:    movb %al, 10(%rdi)
   5335 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5336 ; SSE2-NEXT:    andb $1, %al
   5337 ; SSE2-NEXT:    movb %al, 8(%rdi)
   5338 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5339 ; SSE2-NEXT:    andb $1, %al
   5340 ; SSE2-NEXT:    movb %al, 6(%rdi)
   5341 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5342 ; SSE2-NEXT:    andb $1, %al
   5343 ; SSE2-NEXT:    movb %al, 4(%rdi)
   5344 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5345 ; SSE2-NEXT:    andb $1, %al
   5346 ; SSE2-NEXT:    movb %al, 2(%rdi)
   5347 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5348 ; SSE2-NEXT:    andb $1, %al
   5349 ; SSE2-NEXT:    movb %al, (%rdi)
   5350 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5351 ; SSE2-NEXT:    andb $1, %al
   5352 ; SSE2-NEXT:    movb %al, 14(%rdi)
   5353 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5354 ; SSE2-NEXT:    andb $1, %al
   5355 ; SSE2-NEXT:    movb %al, 12(%rdi)
   5356 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5357 ; SSE2-NEXT:    andb $1, %al
   5358 ; SSE2-NEXT:    movb %al, 10(%rdi)
   5359 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5360 ; SSE2-NEXT:    andb $1, %al
   5361 ; SSE2-NEXT:    movb %al, 8(%rdi)
   5362 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5363 ; SSE2-NEXT:    andb $1, %al
   5364 ; SSE2-NEXT:    movb %al, 6(%rdi)
   5365 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5366 ; SSE2-NEXT:    andb $1, %al
   5367 ; SSE2-NEXT:    movb %al, 4(%rdi)
   5368 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5369 ; SSE2-NEXT:    andb $1, %al
   5370 ; SSE2-NEXT:    movb %al, 2(%rdi)
   5371 ; SSE2-NEXT:    movb -{{[0-9]+}}(%rsp), %al
   5372 ; SSE2-NEXT:    andb $1, %al
   5373 ; SSE2-NEXT:    movb %al, (%rdi)
   5374 ; SSE2-NEXT:    movq %rdi, %rax
   5375 ; SSE2-NEXT:    popq %rcx
   5376 ; SSE2-NEXT:    retq
   5377 ;
   5378 ; SSE42-LABEL: test_cmp_v128i8:
   5379 ; SSE42:       # BB#0:
   5380 ; SSE42-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm0
   5381 ; SSE42-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm1
   5382 ; SSE42-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm2
   5383 ; SSE42-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm3
   5384 ; SSE42-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm4
   5385 ; SSE42-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm5
   5386 ; SSE42-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm6
   5387 ; SSE42-NEXT:    pcmpgtb {{[0-9]+}}(%rsp), %xmm7
   5388 ; SSE42-NEXT:    pextrb $15, %xmm7, %eax
   5389 ; SSE42-NEXT:    andb $1, %al
   5390 ; SSE42-NEXT:    movb %al, 14(%rdi)
   5391 ; SSE42-NEXT:    pextrb $14, %xmm7, %eax
   5392 ; SSE42-NEXT:    andb $1, %al
   5393 ; SSE42-NEXT:    movb %al, 14(%rdi)
   5394 ; SSE42-NEXT:    pextrb $13, %xmm7, %eax
   5395 ; SSE42-NEXT:    andb $1, %al
   5396 ; SSE42-NEXT:    movb %al, 14(%rdi)
   5397 ; SSE42-NEXT:    pextrb $12, %xmm7, %eax
   5398 ; SSE42-NEXT:    andb $1, %al
   5399 ; SSE42-NEXT:    movb %al, 14(%rdi)
   5400 ; SSE42-NEXT:    pextrb $11, %xmm7, %eax
   5401 ; SSE42-NEXT:    andb $1, %al
   5402 ; SSE42-NEXT:    movb %al, 14(%rdi)
   5403 ; SSE42-NEXT:    pextrb $10, %xmm7, %eax
   5404 ; SSE42-NEXT:    andb $1, %al
   5405 ; SSE42-NEXT:    movb %al, 14(%rdi)
   5406 ; SSE42-NEXT:    pextrb $9, %xmm7, %eax
   5407 ; SSE42-NEXT:    andb $1, %al
   5408 ; SSE42-NEXT:    movb %al, 14(%rdi)
   5409 ; SSE42-NEXT:    pextrb $8, %xmm7, %eax
   5410 ; SSE42-NEXT:    andb $1, %al
   5411 ; SSE42-NEXT:    movb %al, 14(%rdi)
   5412 ; SSE42-NEXT:    pextrb $7, %xmm7, %eax
   5413 ; SSE42-NEXT:    andb $1, %al
   5414 ; SSE42-NEXT:    movb %al, 14(%rdi)
   5415 ; SSE42-NEXT:    pextrb $6, %xmm7, %eax
   5416 ; SSE42-NEXT:    andb $1, %al
   5417 ; SSE42-NEXT:    movb %al, 14(%rdi)
   5418 ; SSE42-NEXT:    pextrb $5, %xmm7, %eax
   5419 ; SSE42-NEXT:    andb $1, %al
   5420 ; SSE42-NEXT:    movb %al, 14(%rdi)
   5421 ; SSE42-NEXT:    pextrb $4, %xmm7, %eax
   5422 ; SSE42-NEXT:    andb $1, %al
   5423 ; SSE42-NEXT:    movb %al, 14(%rdi)
   5424 ; SSE42-NEXT:    pextrb $3, %xmm7, %eax
   5425 ; SSE42-NEXT:    andb $1, %al
   5426 ; SSE42-NEXT:    movb %al, 14(%rdi)
   5427 ; SSE42-NEXT:    pextrb $2, %xmm7, %eax
   5428 ; SSE42-NEXT:    andb $1, %al
   5429 ; SSE42-NEXT:    movb %al, 14(%rdi)
   5430 ; SSE42-NEXT:    pextrb $1, %xmm7, %eax
   5431 ; SSE42-NEXT:    andb $1, %al
   5432 ; SSE42-NEXT:    movb %al, 14(%rdi)
   5433 ; SSE42-NEXT:    pextrb $0, %xmm7, %eax
   5434 ; SSE42-NEXT:    andb $1, %al
   5435 ; SSE42-NEXT:    movb %al, 14(%rdi)
   5436 ; SSE42-NEXT:    pextrb $15, %xmm6, %eax
   5437 ; SSE42-NEXT:    andb $1, %al
   5438 ; SSE42-NEXT:    movb %al, 12(%rdi)
   5439 ; SSE42-NEXT:    pextrb $14, %xmm6, %eax
   5440 ; SSE42-NEXT:    andb $1, %al
   5441 ; SSE42-NEXT:    movb %al, 12(%rdi)
   5442 ; SSE42-NEXT:    pextrb $13, %xmm6, %eax
   5443 ; SSE42-NEXT:    andb $1, %al
   5444 ; SSE42-NEXT:    movb %al, 12(%rdi)
   5445 ; SSE42-NEXT:    pextrb $12, %xmm6, %eax
   5446 ; SSE42-NEXT:    andb $1, %al
   5447 ; SSE42-NEXT:    movb %al, 12(%rdi)
   5448 ; SSE42-NEXT:    pextrb $11, %xmm6, %eax
   5449 ; SSE42-NEXT:    andb $1, %al
   5450 ; SSE42-NEXT:    movb %al, 12(%rdi)
   5451 ; SSE42-NEXT:    pextrb $10, %xmm6, %eax
   5452 ; SSE42-NEXT:    andb $1, %al
   5453 ; SSE42-NEXT:    movb %al, 12(%rdi)
   5454 ; SSE42-NEXT:    pextrb $9, %xmm6, %eax
   5455 ; SSE42-NEXT:    andb $1, %al
   5456 ; SSE42-NEXT:    movb %al, 12(%rdi)
   5457 ; SSE42-NEXT:    pextrb $8, %xmm6, %eax
   5458 ; SSE42-NEXT:    andb $1, %al
   5459 ; SSE42-NEXT:    movb %al, 12(%rdi)
   5460 ; SSE42-NEXT:    pextrb $7, %xmm6, %eax
   5461 ; SSE42-NEXT:    andb $1, %al
   5462 ; SSE42-NEXT:    movb %al, 12(%rdi)
   5463 ; SSE42-NEXT:    pextrb $6, %xmm6, %eax
   5464 ; SSE42-NEXT:    andb $1, %al
   5465 ; SSE42-NEXT:    movb %al, 12(%rdi)
   5466 ; SSE42-NEXT:    pextrb $5, %xmm6, %eax
   5467 ; SSE42-NEXT:    andb $1, %al
   5468 ; SSE42-NEXT:    movb %al, 12(%rdi)
   5469 ; SSE42-NEXT:    pextrb $4, %xmm6, %eax
   5470 ; SSE42-NEXT:    andb $1, %al
   5471 ; SSE42-NEXT:    movb %al, 12(%rdi)
   5472 ; SSE42-NEXT:    pextrb $3, %xmm6, %eax
   5473 ; SSE42-NEXT:    andb $1, %al
   5474 ; SSE42-NEXT:    movb %al, 12(%rdi)
   5475 ; SSE42-NEXT:    pextrb $2, %xmm6, %eax
   5476 ; SSE42-NEXT:    andb $1, %al
   5477 ; SSE42-NEXT:    movb %al, 12(%rdi)
   5478 ; SSE42-NEXT:    pextrb $1, %xmm6, %eax
   5479 ; SSE42-NEXT:    andb $1, %al
   5480 ; SSE42-NEXT:    movb %al, 12(%rdi)
   5481 ; SSE42-NEXT:    pextrb $0, %xmm6, %eax
   5482 ; SSE42-NEXT:    andb $1, %al
   5483 ; SSE42-NEXT:    movb %al, 12(%rdi)
   5484 ; SSE42-NEXT:    pextrb $15, %xmm5, %eax
   5485 ; SSE42-NEXT:    andb $1, %al
   5486 ; SSE42-NEXT:    movb %al, 10(%rdi)
   5487 ; SSE42-NEXT:    pextrb $14, %xmm5, %eax
   5488 ; SSE42-NEXT:    andb $1, %al
   5489 ; SSE42-NEXT:    movb %al, 10(%rdi)
   5490 ; SSE42-NEXT:    pextrb $13, %xmm5, %eax
   5491 ; SSE42-NEXT:    andb $1, %al
   5492 ; SSE42-NEXT:    movb %al, 10(%rdi)
   5493 ; SSE42-NEXT:    pextrb $12, %xmm5, %eax
   5494 ; SSE42-NEXT:    andb $1, %al
   5495 ; SSE42-NEXT:    movb %al, 10(%rdi)
   5496 ; SSE42-NEXT:    pextrb $11, %xmm5, %eax
   5497 ; SSE42-NEXT:    andb $1, %al
   5498 ; SSE42-NEXT:    movb %al, 10(%rdi)
   5499 ; SSE42-NEXT:    pextrb $10, %xmm5, %eax
   5500 ; SSE42-NEXT:    andb $1, %al
   5501 ; SSE42-NEXT:    movb %al, 10(%rdi)
   5502 ; SSE42-NEXT:    pextrb $9, %xmm5, %eax
   5503 ; SSE42-NEXT:    andb $1, %al
   5504 ; SSE42-NEXT:    movb %al, 10(%rdi)
   5505 ; SSE42-NEXT:    pextrb $8, %xmm5, %eax
   5506 ; SSE42-NEXT:    andb $1, %al
   5507 ; SSE42-NEXT:    movb %al, 10(%rdi)
   5508 ; SSE42-NEXT:    pextrb $7, %xmm5, %eax
   5509 ; SSE42-NEXT:    andb $1, %al
   5510 ; SSE42-NEXT:    movb %al, 10(%rdi)
   5511 ; SSE42-NEXT:    pextrb $6, %xmm5, %eax
   5512 ; SSE42-NEXT:    andb $1, %al
   5513 ; SSE42-NEXT:    movb %al, 10(%rdi)
   5514 ; SSE42-NEXT:    pextrb $5, %xmm5, %eax
   5515 ; SSE42-NEXT:    andb $1, %al
   5516 ; SSE42-NEXT:    movb %al, 10(%rdi)
   5517 ; SSE42-NEXT:    pextrb $4, %xmm5, %eax
   5518 ; SSE42-NEXT:    andb $1, %al
   5519 ; SSE42-NEXT:    movb %al, 10(%rdi)
   5520 ; SSE42-NEXT:    pextrb $3, %xmm5, %eax
   5521 ; SSE42-NEXT:    andb $1, %al
   5522 ; SSE42-NEXT:    movb %al, 10(%rdi)
   5523 ; SSE42-NEXT:    pextrb $2, %xmm5, %eax
   5524 ; SSE42-NEXT:    andb $1, %al
   5525 ; SSE42-NEXT:    movb %al, 10(%rdi)
   5526 ; SSE42-NEXT:    pextrb $1, %xmm5, %eax
   5527 ; SSE42-NEXT:    andb $1, %al
   5528 ; SSE42-NEXT:    movb %al, 10(%rdi)
   5529 ; SSE42-NEXT:    pextrb $0, %xmm5, %eax
   5530 ; SSE42-NEXT:    andb $1, %al
   5531 ; SSE42-NEXT:    movb %al, 10(%rdi)
   5532 ; SSE42-NEXT:    pextrb $15, %xmm4, %eax
   5533 ; SSE42-NEXT:    andb $1, %al
   5534 ; SSE42-NEXT:    movb %al, 8(%rdi)
   5535 ; SSE42-NEXT:    pextrb $14, %xmm4, %eax
   5536 ; SSE42-NEXT:    andb $1, %al
   5537 ; SSE42-NEXT:    movb %al, 8(%rdi)
   5538 ; SSE42-NEXT:    pextrb $13, %xmm4, %eax
   5539 ; SSE42-NEXT:    andb $1, %al
   5540 ; SSE42-NEXT:    movb %al, 8(%rdi)
   5541 ; SSE42-NEXT:    pextrb $12, %xmm4, %eax
   5542 ; SSE42-NEXT:    andb $1, %al
   5543 ; SSE42-NEXT:    movb %al, 8(%rdi)
   5544 ; SSE42-NEXT:    pextrb $11, %xmm4, %eax
   5545 ; SSE42-NEXT:    andb $1, %al
   5546 ; SSE42-NEXT:    movb %al, 8(%rdi)
   5547 ; SSE42-NEXT:    pextrb $10, %xmm4, %eax
   5548 ; SSE42-NEXT:    andb $1, %al
   5549 ; SSE42-NEXT:    movb %al, 8(%rdi)
   5550 ; SSE42-NEXT:    pextrb $9, %xmm4, %eax
   5551 ; SSE42-NEXT:    andb $1, %al
   5552 ; SSE42-NEXT:    movb %al, 8(%rdi)
   5553 ; SSE42-NEXT:    pextrb $8, %xmm4, %eax
   5554 ; SSE42-NEXT:    andb $1, %al
   5555 ; SSE42-NEXT:    movb %al, 8(%rdi)
   5556 ; SSE42-NEXT:    pextrb $7, %xmm4, %eax
   5557 ; SSE42-NEXT:    andb $1, %al
   5558 ; SSE42-NEXT:    movb %al, 8(%rdi)
   5559 ; SSE42-NEXT:    pextrb $6, %xmm4, %eax
   5560 ; SSE42-NEXT:    andb $1, %al
   5561 ; SSE42-NEXT:    movb %al, 8(%rdi)
   5562 ; SSE42-NEXT:    pextrb $5, %xmm4, %eax
   5563 ; SSE42-NEXT:    andb $1, %al
   5564 ; SSE42-NEXT:    movb %al, 8(%rdi)
   5565 ; SSE42-NEXT:    pextrb $4, %xmm4, %eax
   5566 ; SSE42-NEXT:    andb $1, %al
   5567 ; SSE42-NEXT:    movb %al, 8(%rdi)
   5568 ; SSE42-NEXT:    pextrb $3, %xmm4, %eax
   5569 ; SSE42-NEXT:    andb $1, %al
   5570 ; SSE42-NEXT:    movb %al, 8(%rdi)
   5571 ; SSE42-NEXT:    pextrb $2, %xmm4, %eax
   5572 ; SSE42-NEXT:    andb $1, %al
   5573 ; SSE42-NEXT:    movb %al, 8(%rdi)
   5574 ; SSE42-NEXT:    pextrb $1, %xmm4, %eax
   5575 ; SSE42-NEXT:    andb $1, %al
   5576 ; SSE42-NEXT:    movb %al, 8(%rdi)
   5577 ; SSE42-NEXT:    pextrb $0, %xmm4, %eax
   5578 ; SSE42-NEXT:    andb $1, %al
   5579 ; SSE42-NEXT:    movb %al, 8(%rdi)
   5580 ; SSE42-NEXT:    pextrb $15, %xmm3, %eax
   5581 ; SSE42-NEXT:    andb $1, %al
   5582 ; SSE42-NEXT:    movb %al, 6(%rdi)
   5583 ; SSE42-NEXT:    pextrb $14, %xmm3, %eax
   5584 ; SSE42-NEXT:    andb $1, %al
   5585 ; SSE42-NEXT:    movb %al, 6(%rdi)
   5586 ; SSE42-NEXT:    pextrb $13, %xmm3, %eax
   5587 ; SSE42-NEXT:    andb $1, %al
   5588 ; SSE42-NEXT:    movb %al, 6(%rdi)
   5589 ; SSE42-NEXT:    pextrb $12, %xmm3, %eax
   5590 ; SSE42-NEXT:    andb $1, %al
   5591 ; SSE42-NEXT:    movb %al, 6(%rdi)
   5592 ; SSE42-NEXT:    pextrb $11, %xmm3, %eax
   5593 ; SSE42-NEXT:    andb $1, %al
   5594 ; SSE42-NEXT:    movb %al, 6(%rdi)
   5595 ; SSE42-NEXT:    pextrb $10, %xmm3, %eax
   5596 ; SSE42-NEXT:    andb $1, %al
   5597 ; SSE42-NEXT:    movb %al, 6(%rdi)
   5598 ; SSE42-NEXT:    pextrb $9, %xmm3, %eax
   5599 ; SSE42-NEXT:    andb $1, %al
   5600 ; SSE42-NEXT:    movb %al, 6(%rdi)
   5601 ; SSE42-NEXT:    pextrb $8, %xmm3, %eax
   5602 ; SSE42-NEXT:    andb $1, %al
   5603 ; SSE42-NEXT:    movb %al, 6(%rdi)
   5604 ; SSE42-NEXT:    pextrb $7, %xmm3, %eax
   5605 ; SSE42-NEXT:    andb $1, %al
   5606 ; SSE42-NEXT:    movb %al, 6(%rdi)
   5607 ; SSE42-NEXT:    pextrb $6, %xmm3, %eax
   5608 ; SSE42-NEXT:    andb $1, %al
   5609 ; SSE42-NEXT:    movb %al, 6(%rdi)
   5610 ; SSE42-NEXT:    pextrb $5, %xmm3, %eax
   5611 ; SSE42-NEXT:    andb $1, %al
   5612 ; SSE42-NEXT:    movb %al, 6(%rdi)
   5613 ; SSE42-NEXT:    pextrb $4, %xmm3, %eax
   5614 ; SSE42-NEXT:    andb $1, %al
   5615 ; SSE42-NEXT:    movb %al, 6(%rdi)
   5616 ; SSE42-NEXT:    pextrb $3, %xmm3, %eax
   5617 ; SSE42-NEXT:    andb $1, %al
   5618 ; SSE42-NEXT:    movb %al, 6(%rdi)
   5619 ; SSE42-NEXT:    pextrb $2, %xmm3, %eax
   5620 ; SSE42-NEXT:    andb $1, %al
   5621 ; SSE42-NEXT:    movb %al, 6(%rdi)
   5622 ; SSE42-NEXT:    pextrb $1, %xmm3, %eax
   5623 ; SSE42-NEXT:    andb $1, %al
   5624 ; SSE42-NEXT:    movb %al, 6(%rdi)
   5625 ; SSE42-NEXT:    pextrb $0, %xmm3, %eax
   5626 ; SSE42-NEXT:    andb $1, %al
   5627 ; SSE42-NEXT:    movb %al, 6(%rdi)
   5628 ; SSE42-NEXT:    pextrb $15, %xmm2, %eax
   5629 ; SSE42-NEXT:    andb $1, %al
   5630 ; SSE42-NEXT:    movb %al, 4(%rdi)
   5631 ; SSE42-NEXT:    pextrb $14, %xmm2, %eax
   5632 ; SSE42-NEXT:    andb $1, %al
   5633 ; SSE42-NEXT:    movb %al, 4(%rdi)
   5634 ; SSE42-NEXT:    pextrb $13, %xmm2, %eax
   5635 ; SSE42-NEXT:    andb $1, %al
   5636 ; SSE42-NEXT:    movb %al, 4(%rdi)
   5637 ; SSE42-NEXT:    pextrb $12, %xmm2, %eax
   5638 ; SSE42-NEXT:    andb $1, %al
   5639 ; SSE42-NEXT:    movb %al, 4(%rdi)
   5640 ; SSE42-NEXT:    pextrb $11, %xmm2, %eax
   5641 ; SSE42-NEXT:    andb $1, %al
   5642 ; SSE42-NEXT:    movb %al, 4(%rdi)
   5643 ; SSE42-NEXT:    pextrb $10, %xmm2, %eax
   5644 ; SSE42-NEXT:    andb $1, %al
   5645 ; SSE42-NEXT:    movb %al, 4(%rdi)
   5646 ; SSE42-NEXT:    pextrb $9, %xmm2, %eax
   5647 ; SSE42-NEXT:    andb $1, %al
   5648 ; SSE42-NEXT:    movb %al, 4(%rdi)
   5649 ; SSE42-NEXT:    pextrb $8, %xmm2, %eax
   5650 ; SSE42-NEXT:    andb $1, %al
   5651 ; SSE42-NEXT:    movb %al, 4(%rdi)
   5652 ; SSE42-NEXT:    pextrb $7, %xmm2, %eax
   5653 ; SSE42-NEXT:    andb $1, %al
   5654 ; SSE42-NEXT:    movb %al, 4(%rdi)
   5655 ; SSE42-NEXT:    pextrb $6, %xmm2, %eax
   5656 ; SSE42-NEXT:    andb $1, %al
   5657 ; SSE42-NEXT:    movb %al, 4(%rdi)
   5658 ; SSE42-NEXT:    pextrb $5, %xmm2, %eax
   5659 ; SSE42-NEXT:    andb $1, %al
   5660 ; SSE42-NEXT:    movb %al, 4(%rdi)
   5661 ; SSE42-NEXT:    pextrb $4, %xmm2, %eax
   5662 ; SSE42-NEXT:    andb $1, %al
   5663 ; SSE42-NEXT:    movb %al, 4(%rdi)
   5664 ; SSE42-NEXT:    pextrb $3, %xmm2, %eax
   5665 ; SSE42-NEXT:    andb $1, %al
   5666 ; SSE42-NEXT:    movb %al, 4(%rdi)
   5667 ; SSE42-NEXT:    pextrb $2, %xmm2, %eax
   5668 ; SSE42-NEXT:    andb $1, %al
   5669 ; SSE42-NEXT:    movb %al, 4(%rdi)
   5670 ; SSE42-NEXT:    pextrb $1, %xmm2, %eax
   5671 ; SSE42-NEXT:    andb $1, %al
   5672 ; SSE42-NEXT:    movb %al, 4(%rdi)
   5673 ; SSE42-NEXT:    pextrb $0, %xmm2, %eax
   5674 ; SSE42-NEXT:    andb $1, %al
   5675 ; SSE42-NEXT:    movb %al, 4(%rdi)
   5676 ; SSE42-NEXT:    pextrb $15, %xmm1, %eax
   5677 ; SSE42-NEXT:    andb $1, %al
   5678 ; SSE42-NEXT:    movb %al, 2(%rdi)
   5679 ; SSE42-NEXT:    pextrb $14, %xmm1, %eax
   5680 ; SSE42-NEXT:    andb $1, %al
   5681 ; SSE42-NEXT:    movb %al, 2(%rdi)
   5682 ; SSE42-NEXT:    pextrb $13, %xmm1, %eax
   5683 ; SSE42-NEXT:    andb $1, %al
   5684 ; SSE42-NEXT:    movb %al, 2(%rdi)
   5685 ; SSE42-NEXT:    pextrb $12, %xmm1, %eax
   5686 ; SSE42-NEXT:    andb $1, %al
   5687 ; SSE42-NEXT:    movb %al, 2(%rdi)
   5688 ; SSE42-NEXT:    pextrb $11, %xmm1, %eax
   5689 ; SSE42-NEXT:    andb $1, %al
   5690 ; SSE42-NEXT:    movb %al, 2(%rdi)
   5691 ; SSE42-NEXT:    pextrb $10, %xmm1, %eax
   5692 ; SSE42-NEXT:    andb $1, %al
   5693 ; SSE42-NEXT:    movb %al, 2(%rdi)
   5694 ; SSE42-NEXT:    pextrb $9, %xmm1, %eax
   5695 ; SSE42-NEXT:    andb $1, %al
   5696 ; SSE42-NEXT:    movb %al, 2(%rdi)
   5697 ; SSE42-NEXT:    pextrb $8, %xmm1, %eax
   5698 ; SSE42-NEXT:    andb $1, %al
   5699 ; SSE42-NEXT:    movb %al, 2(%rdi)
   5700 ; SSE42-NEXT:    pextrb $7, %xmm1, %eax
   5701 ; SSE42-NEXT:    andb $1, %al
   5702 ; SSE42-NEXT:    movb %al, 2(%rdi)
   5703 ; SSE42-NEXT:    pextrb $6, %xmm1, %eax
   5704 ; SSE42-NEXT:    andb $1, %al
   5705 ; SSE42-NEXT:    movb %al, 2(%rdi)
   5706 ; SSE42-NEXT:    pextrb $5, %xmm1, %eax
   5707 ; SSE42-NEXT:    andb $1, %al
   5708 ; SSE42-NEXT:    movb %al, 2(%rdi)
   5709 ; SSE42-NEXT:    pextrb $4, %xmm1, %eax
   5710 ; SSE42-NEXT:    andb $1, %al
   5711 ; SSE42-NEXT:    movb %al, 2(%rdi)
   5712 ; SSE42-NEXT:    pextrb $3, %xmm1, %eax
   5713 ; SSE42-NEXT:    andb $1, %al
   5714 ; SSE42-NEXT:    movb %al, 2(%rdi)
   5715 ; SSE42-NEXT:    pextrb $2, %xmm1, %eax
   5716 ; SSE42-NEXT:    andb $1, %al
   5717 ; SSE42-NEXT:    movb %al, 2(%rdi)
   5718 ; SSE42-NEXT:    pextrb $1, %xmm1, %eax
   5719 ; SSE42-NEXT:    andb $1, %al
   5720 ; SSE42-NEXT:    movb %al, 2(%rdi)
   5721 ; SSE42-NEXT:    pextrb $0, %xmm1, %eax
   5722 ; SSE42-NEXT:    andb $1, %al
   5723 ; SSE42-NEXT:    movb %al, 2(%rdi)
   5724 ; SSE42-NEXT:    pextrb $15, %xmm0, %eax
   5725 ; SSE42-NEXT:    andb $1, %al
   5726 ; SSE42-NEXT:    movb %al, (%rdi)
   5727 ; SSE42-NEXT:    pextrb $14, %xmm0, %eax
   5728 ; SSE42-NEXT:    andb $1, %al
   5729 ; SSE42-NEXT:    movb %al, (%rdi)
   5730 ; SSE42-NEXT:    pextrb $13, %xmm0, %eax
   5731 ; SSE42-NEXT:    andb $1, %al
   5732 ; SSE42-NEXT:    movb %al, (%rdi)
   5733 ; SSE42-NEXT:    pextrb $12, %xmm0, %eax
   5734 ; SSE42-NEXT:    andb $1, %al
   5735 ; SSE42-NEXT:    movb %al, (%rdi)
   5736 ; SSE42-NEXT:    pextrb $11, %xmm0, %eax
   5737 ; SSE42-NEXT:    andb $1, %al
   5738 ; SSE42-NEXT:    movb %al, (%rdi)
   5739 ; SSE42-NEXT:    pextrb $10, %xmm0, %eax
   5740 ; SSE42-NEXT:    andb $1, %al
   5741 ; SSE42-NEXT:    movb %al, (%rdi)
   5742 ; SSE42-NEXT:    pextrb $9, %xmm0, %eax
   5743 ; SSE42-NEXT:    andb $1, %al
   5744 ; SSE42-NEXT:    movb %al, (%rdi)
   5745 ; SSE42-NEXT:    pextrb $8, %xmm0, %eax
   5746 ; SSE42-NEXT:    andb $1, %al
   5747 ; SSE42-NEXT:    movb %al, (%rdi)
   5748 ; SSE42-NEXT:    pextrb $7, %xmm0, %eax
   5749 ; SSE42-NEXT:    andb $1, %al
   5750 ; SSE42-NEXT:    movb %al, (%rdi)
   5751 ; SSE42-NEXT:    pextrb $6, %xmm0, %eax
   5752 ; SSE42-NEXT:    andb $1, %al
   5753 ; SSE42-NEXT:    movb %al, (%rdi)
   5754 ; SSE42-NEXT:    pextrb $5, %xmm0, %eax
   5755 ; SSE42-NEXT:    andb $1, %al
   5756 ; SSE42-NEXT:    movb %al, (%rdi)
   5757 ; SSE42-NEXT:    pextrb $4, %xmm0, %eax
   5758 ; SSE42-NEXT:    andb $1, %al
   5759 ; SSE42-NEXT:    movb %al, (%rdi)
   5760 ; SSE42-NEXT:    pextrb $3, %xmm0, %eax
   5761 ; SSE42-NEXT:    andb $1, %al
   5762 ; SSE42-NEXT:    movb %al, (%rdi)
   5763 ; SSE42-NEXT:    pextrb $2, %xmm0, %eax
   5764 ; SSE42-NEXT:    andb $1, %al
   5765 ; SSE42-NEXT:    movb %al, (%rdi)
   5766 ; SSE42-NEXT:    pextrb $1, %xmm0, %eax
   5767 ; SSE42-NEXT:    andb $1, %al
   5768 ; SSE42-NEXT:    movb %al, (%rdi)
   5769 ; SSE42-NEXT:    pextrb $0, %xmm0, %eax
   5770 ; SSE42-NEXT:    andb $1, %al
   5771 ; SSE42-NEXT:    movb %al, (%rdi)
   5772 ; SSE42-NEXT:    movq %rdi, %rax
   5773 ; SSE42-NEXT:    retq
   5774 ;
   5775 ; AVX1-LABEL: test_cmp_v128i8:
   5776 ; AVX1:       # BB#0:
   5777 ; AVX1-NEXT:    vpcmpgtb %xmm4, %xmm0, %xmm8
   5778 ; AVX1-NEXT:    vextractf128 $1, %ymm4, %xmm4
   5779 ; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
   5780 ; AVX1-NEXT:    vpcmpgtb %xmm4, %xmm0, %xmm0
   5781 ; AVX1-NEXT:    vpcmpgtb %xmm5, %xmm1, %xmm4
   5782 ; AVX1-NEXT:    vextractf128 $1, %ymm5, %xmm5
   5783 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm1
   5784 ; AVX1-NEXT:    vpcmpgtb %xmm5, %xmm1, %xmm1
   5785 ; AVX1-NEXT:    vpcmpgtb %xmm6, %xmm2, %xmm5
   5786 ; AVX1-NEXT:    vextractf128 $1, %ymm6, %xmm6
   5787 ; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm2
   5788 ; AVX1-NEXT:    vpcmpgtb %xmm6, %xmm2, %xmm2
   5789 ; AVX1-NEXT:    vpcmpgtb %xmm7, %xmm3, %xmm6
   5790 ; AVX1-NEXT:    vextractf128 $1, %ymm7, %xmm7
   5791 ; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm3
   5792 ; AVX1-NEXT:    vpcmpgtb %xmm7, %xmm3, %xmm3
   5793 ; AVX1-NEXT:    vpextrb $15, %xmm3, %eax
   5794 ; AVX1-NEXT:    andb $1, %al
   5795 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5796 ; AVX1-NEXT:    vpextrb $14, %xmm3, %eax
   5797 ; AVX1-NEXT:    andb $1, %al
   5798 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5799 ; AVX1-NEXT:    vpextrb $13, %xmm3, %eax
   5800 ; AVX1-NEXT:    andb $1, %al
   5801 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5802 ; AVX1-NEXT:    vpextrb $12, %xmm3, %eax
   5803 ; AVX1-NEXT:    andb $1, %al
   5804 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5805 ; AVX1-NEXT:    vpextrb $11, %xmm3, %eax
   5806 ; AVX1-NEXT:    andb $1, %al
   5807 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5808 ; AVX1-NEXT:    vpextrb $10, %xmm3, %eax
   5809 ; AVX1-NEXT:    andb $1, %al
   5810 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5811 ; AVX1-NEXT:    vpextrb $9, %xmm3, %eax
   5812 ; AVX1-NEXT:    andb $1, %al
   5813 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5814 ; AVX1-NEXT:    vpextrb $8, %xmm3, %eax
   5815 ; AVX1-NEXT:    andb $1, %al
   5816 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5817 ; AVX1-NEXT:    vpextrb $7, %xmm3, %eax
   5818 ; AVX1-NEXT:    andb $1, %al
   5819 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5820 ; AVX1-NEXT:    vpextrb $6, %xmm3, %eax
   5821 ; AVX1-NEXT:    andb $1, %al
   5822 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5823 ; AVX1-NEXT:    vpextrb $5, %xmm3, %eax
   5824 ; AVX1-NEXT:    andb $1, %al
   5825 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5826 ; AVX1-NEXT:    vpextrb $4, %xmm3, %eax
   5827 ; AVX1-NEXT:    andb $1, %al
   5828 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5829 ; AVX1-NEXT:    vpextrb $3, %xmm3, %eax
   5830 ; AVX1-NEXT:    andb $1, %al
   5831 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5832 ; AVX1-NEXT:    vpextrb $2, %xmm3, %eax
   5833 ; AVX1-NEXT:    andb $1, %al
   5834 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5835 ; AVX1-NEXT:    vpextrb $1, %xmm3, %eax
   5836 ; AVX1-NEXT:    andb $1, %al
   5837 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5838 ; AVX1-NEXT:    vpextrb $0, %xmm3, %eax
   5839 ; AVX1-NEXT:    andb $1, %al
   5840 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5841 ; AVX1-NEXT:    vpextrb $15, %xmm6, %eax
   5842 ; AVX1-NEXT:    andb $1, %al
   5843 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5844 ; AVX1-NEXT:    vpextrb $14, %xmm6, %eax
   5845 ; AVX1-NEXT:    andb $1, %al
   5846 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5847 ; AVX1-NEXT:    vpextrb $13, %xmm6, %eax
   5848 ; AVX1-NEXT:    andb $1, %al
   5849 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5850 ; AVX1-NEXT:    vpextrb $12, %xmm6, %eax
   5851 ; AVX1-NEXT:    andb $1, %al
   5852 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5853 ; AVX1-NEXT:    vpextrb $11, %xmm6, %eax
   5854 ; AVX1-NEXT:    andb $1, %al
   5855 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5856 ; AVX1-NEXT:    vpextrb $10, %xmm6, %eax
   5857 ; AVX1-NEXT:    andb $1, %al
   5858 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5859 ; AVX1-NEXT:    vpextrb $9, %xmm6, %eax
   5860 ; AVX1-NEXT:    andb $1, %al
   5861 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5862 ; AVX1-NEXT:    vpextrb $8, %xmm6, %eax
   5863 ; AVX1-NEXT:    andb $1, %al
   5864 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5865 ; AVX1-NEXT:    vpextrb $7, %xmm6, %eax
   5866 ; AVX1-NEXT:    andb $1, %al
   5867 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5868 ; AVX1-NEXT:    vpextrb $6, %xmm6, %eax
   5869 ; AVX1-NEXT:    andb $1, %al
   5870 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5871 ; AVX1-NEXT:    vpextrb $5, %xmm6, %eax
   5872 ; AVX1-NEXT:    andb $1, %al
   5873 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5874 ; AVX1-NEXT:    vpextrb $4, %xmm6, %eax
   5875 ; AVX1-NEXT:    andb $1, %al
   5876 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5877 ; AVX1-NEXT:    vpextrb $3, %xmm6, %eax
   5878 ; AVX1-NEXT:    andb $1, %al
   5879 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5880 ; AVX1-NEXT:    vpextrb $2, %xmm6, %eax
   5881 ; AVX1-NEXT:    andb $1, %al
   5882 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5883 ; AVX1-NEXT:    vpextrb $1, %xmm6, %eax
   5884 ; AVX1-NEXT:    andb $1, %al
   5885 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5886 ; AVX1-NEXT:    vpextrb $0, %xmm6, %eax
   5887 ; AVX1-NEXT:    andb $1, %al
   5888 ; AVX1-NEXT:    movb %al, 12(%rdi)
   5889 ; AVX1-NEXT:    vpextrb $15, %xmm2, %eax
   5890 ; AVX1-NEXT:    andb $1, %al
   5891 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5892 ; AVX1-NEXT:    vpextrb $14, %xmm2, %eax
   5893 ; AVX1-NEXT:    andb $1, %al
   5894 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5895 ; AVX1-NEXT:    vpextrb $13, %xmm2, %eax
   5896 ; AVX1-NEXT:    andb $1, %al
   5897 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5898 ; AVX1-NEXT:    vpextrb $12, %xmm2, %eax
   5899 ; AVX1-NEXT:    andb $1, %al
   5900 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5901 ; AVX1-NEXT:    vpextrb $11, %xmm2, %eax
   5902 ; AVX1-NEXT:    andb $1, %al
   5903 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5904 ; AVX1-NEXT:    vpextrb $10, %xmm2, %eax
   5905 ; AVX1-NEXT:    andb $1, %al
   5906 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5907 ; AVX1-NEXT:    vpextrb $9, %xmm2, %eax
   5908 ; AVX1-NEXT:    andb $1, %al
   5909 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5910 ; AVX1-NEXT:    vpextrb $8, %xmm2, %eax
   5911 ; AVX1-NEXT:    andb $1, %al
   5912 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5913 ; AVX1-NEXT:    vpextrb $7, %xmm2, %eax
   5914 ; AVX1-NEXT:    andb $1, %al
   5915 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5916 ; AVX1-NEXT:    vpextrb $6, %xmm2, %eax
   5917 ; AVX1-NEXT:    andb $1, %al
   5918 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5919 ; AVX1-NEXT:    vpextrb $5, %xmm2, %eax
   5920 ; AVX1-NEXT:    andb $1, %al
   5921 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5922 ; AVX1-NEXT:    vpextrb $4, %xmm2, %eax
   5923 ; AVX1-NEXT:    andb $1, %al
   5924 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5925 ; AVX1-NEXT:    vpextrb $3, %xmm2, %eax
   5926 ; AVX1-NEXT:    andb $1, %al
   5927 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5928 ; AVX1-NEXT:    vpextrb $2, %xmm2, %eax
   5929 ; AVX1-NEXT:    andb $1, %al
   5930 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5931 ; AVX1-NEXT:    vpextrb $1, %xmm2, %eax
   5932 ; AVX1-NEXT:    andb $1, %al
   5933 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5934 ; AVX1-NEXT:    vpextrb $0, %xmm2, %eax
   5935 ; AVX1-NEXT:    andb $1, %al
   5936 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5937 ; AVX1-NEXT:    vpextrb $15, %xmm5, %eax
   5938 ; AVX1-NEXT:    andb $1, %al
   5939 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5940 ; AVX1-NEXT:    vpextrb $14, %xmm5, %eax
   5941 ; AVX1-NEXT:    andb $1, %al
   5942 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5943 ; AVX1-NEXT:    vpextrb $13, %xmm5, %eax
   5944 ; AVX1-NEXT:    andb $1, %al
   5945 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5946 ; AVX1-NEXT:    vpextrb $12, %xmm5, %eax
   5947 ; AVX1-NEXT:    andb $1, %al
   5948 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5949 ; AVX1-NEXT:    vpextrb $11, %xmm5, %eax
   5950 ; AVX1-NEXT:    andb $1, %al
   5951 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5952 ; AVX1-NEXT:    vpextrb $10, %xmm5, %eax
   5953 ; AVX1-NEXT:    andb $1, %al
   5954 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5955 ; AVX1-NEXT:    vpextrb $9, %xmm5, %eax
   5956 ; AVX1-NEXT:    andb $1, %al
   5957 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5958 ; AVX1-NEXT:    vpextrb $8, %xmm5, %eax
   5959 ; AVX1-NEXT:    andb $1, %al
   5960 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5961 ; AVX1-NEXT:    vpextrb $7, %xmm5, %eax
   5962 ; AVX1-NEXT:    andb $1, %al
   5963 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5964 ; AVX1-NEXT:    vpextrb $6, %xmm5, %eax
   5965 ; AVX1-NEXT:    andb $1, %al
   5966 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5967 ; AVX1-NEXT:    vpextrb $5, %xmm5, %eax
   5968 ; AVX1-NEXT:    andb $1, %al
   5969 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5970 ; AVX1-NEXT:    vpextrb $4, %xmm5, %eax
   5971 ; AVX1-NEXT:    andb $1, %al
   5972 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5973 ; AVX1-NEXT:    vpextrb $3, %xmm5, %eax
   5974 ; AVX1-NEXT:    andb $1, %al
   5975 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5976 ; AVX1-NEXT:    vpextrb $2, %xmm5, %eax
   5977 ; AVX1-NEXT:    andb $1, %al
   5978 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5979 ; AVX1-NEXT:    vpextrb $1, %xmm5, %eax
   5980 ; AVX1-NEXT:    andb $1, %al
   5981 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5982 ; AVX1-NEXT:    vpextrb $0, %xmm5, %eax
   5983 ; AVX1-NEXT:    andb $1, %al
   5984 ; AVX1-NEXT:    movb %al, 8(%rdi)
   5985 ; AVX1-NEXT:    vpextrb $15, %xmm1, %eax
   5986 ; AVX1-NEXT:    andb $1, %al
   5987 ; AVX1-NEXT:    movb %al, 4(%rdi)
   5988 ; AVX1-NEXT:    vpextrb $14, %xmm1, %eax
   5989 ; AVX1-NEXT:    andb $1, %al
   5990 ; AVX1-NEXT:    movb %al, 4(%rdi)
   5991 ; AVX1-NEXT:    vpextrb $13, %xmm1, %eax
   5992 ; AVX1-NEXT:    andb $1, %al
   5993 ; AVX1-NEXT:    movb %al, 4(%rdi)
   5994 ; AVX1-NEXT:    vpextrb $12, %xmm1, %eax
   5995 ; AVX1-NEXT:    andb $1, %al
   5996 ; AVX1-NEXT:    movb %al, 4(%rdi)
   5997 ; AVX1-NEXT:    vpextrb $11, %xmm1, %eax
   5998 ; AVX1-NEXT:    andb $1, %al
   5999 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6000 ; AVX1-NEXT:    vpextrb $10, %xmm1, %eax
   6001 ; AVX1-NEXT:    andb $1, %al
   6002 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6003 ; AVX1-NEXT:    vpextrb $9, %xmm1, %eax
   6004 ; AVX1-NEXT:    andb $1, %al
   6005 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6006 ; AVX1-NEXT:    vpextrb $8, %xmm1, %eax
   6007 ; AVX1-NEXT:    andb $1, %al
   6008 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6009 ; AVX1-NEXT:    vpextrb $7, %xmm1, %eax
   6010 ; AVX1-NEXT:    andb $1, %al
   6011 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6012 ; AVX1-NEXT:    vpextrb $6, %xmm1, %eax
   6013 ; AVX1-NEXT:    andb $1, %al
   6014 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6015 ; AVX1-NEXT:    vpextrb $5, %xmm1, %eax
   6016 ; AVX1-NEXT:    andb $1, %al
   6017 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6018 ; AVX1-NEXT:    vpextrb $4, %xmm1, %eax
   6019 ; AVX1-NEXT:    andb $1, %al
   6020 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6021 ; AVX1-NEXT:    vpextrb $3, %xmm1, %eax
   6022 ; AVX1-NEXT:    andb $1, %al
   6023 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6024 ; AVX1-NEXT:    vpextrb $2, %xmm1, %eax
   6025 ; AVX1-NEXT:    andb $1, %al
   6026 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6027 ; AVX1-NEXT:    vpextrb $1, %xmm1, %eax
   6028 ; AVX1-NEXT:    andb $1, %al
   6029 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6030 ; AVX1-NEXT:    vpextrb $0, %xmm1, %eax
   6031 ; AVX1-NEXT:    andb $1, %al
   6032 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6033 ; AVX1-NEXT:    vpextrb $15, %xmm4, %eax
   6034 ; AVX1-NEXT:    andb $1, %al
   6035 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6036 ; AVX1-NEXT:    vpextrb $14, %xmm4, %eax
   6037 ; AVX1-NEXT:    andb $1, %al
   6038 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6039 ; AVX1-NEXT:    vpextrb $13, %xmm4, %eax
   6040 ; AVX1-NEXT:    andb $1, %al
   6041 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6042 ; AVX1-NEXT:    vpextrb $12, %xmm4, %eax
   6043 ; AVX1-NEXT:    andb $1, %al
   6044 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6045 ; AVX1-NEXT:    vpextrb $11, %xmm4, %eax
   6046 ; AVX1-NEXT:    andb $1, %al
   6047 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6048 ; AVX1-NEXT:    vpextrb $10, %xmm4, %eax
   6049 ; AVX1-NEXT:    andb $1, %al
   6050 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6051 ; AVX1-NEXT:    vpextrb $9, %xmm4, %eax
   6052 ; AVX1-NEXT:    andb $1, %al
   6053 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6054 ; AVX1-NEXT:    vpextrb $8, %xmm4, %eax
   6055 ; AVX1-NEXT:    andb $1, %al
   6056 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6057 ; AVX1-NEXT:    vpextrb $7, %xmm4, %eax
   6058 ; AVX1-NEXT:    andb $1, %al
   6059 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6060 ; AVX1-NEXT:    vpextrb $6, %xmm4, %eax
   6061 ; AVX1-NEXT:    andb $1, %al
   6062 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6063 ; AVX1-NEXT:    vpextrb $5, %xmm4, %eax
   6064 ; AVX1-NEXT:    andb $1, %al
   6065 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6066 ; AVX1-NEXT:    vpextrb $4, %xmm4, %eax
   6067 ; AVX1-NEXT:    andb $1, %al
   6068 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6069 ; AVX1-NEXT:    vpextrb $3, %xmm4, %eax
   6070 ; AVX1-NEXT:    andb $1, %al
   6071 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6072 ; AVX1-NEXT:    vpextrb $2, %xmm4, %eax
   6073 ; AVX1-NEXT:    andb $1, %al
   6074 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6075 ; AVX1-NEXT:    vpextrb $1, %xmm4, %eax
   6076 ; AVX1-NEXT:    andb $1, %al
   6077 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6078 ; AVX1-NEXT:    vpextrb $0, %xmm4, %eax
   6079 ; AVX1-NEXT:    andb $1, %al
   6080 ; AVX1-NEXT:    movb %al, 4(%rdi)
   6081 ; AVX1-NEXT:    vpextrb $15, %xmm0, %eax
   6082 ; AVX1-NEXT:    andb $1, %al
   6083 ; AVX1-NEXT:    movb %al, (%rdi)
   6084 ; AVX1-NEXT:    vpextrb $14, %xmm0, %eax
   6085 ; AVX1-NEXT:    andb $1, %al
   6086 ; AVX1-NEXT:    movb %al, (%rdi)
   6087 ; AVX1-NEXT:    vpextrb $13, %xmm0, %eax
   6088 ; AVX1-NEXT:    andb $1, %al
   6089 ; AVX1-NEXT:    movb %al, (%rdi)
   6090 ; AVX1-NEXT:    vpextrb $12, %xmm0, %eax
   6091 ; AVX1-NEXT:    andb $1, %al
   6092 ; AVX1-NEXT:    movb %al, (%rdi)
   6093 ; AVX1-NEXT:    vpextrb $11, %xmm0, %eax
   6094 ; AVX1-NEXT:    andb $1, %al
   6095 ; AVX1-NEXT:    movb %al, (%rdi)
   6096 ; AVX1-NEXT:    vpextrb $10, %xmm0, %eax
   6097 ; AVX1-NEXT:    andb $1, %al
   6098 ; AVX1-NEXT:    movb %al, (%rdi)
   6099 ; AVX1-NEXT:    vpextrb $9, %xmm0, %eax
   6100 ; AVX1-NEXT:    andb $1, %al
   6101 ; AVX1-NEXT:    movb %al, (%rdi)
   6102 ; AVX1-NEXT:    vpextrb $8, %xmm0, %eax
   6103 ; AVX1-NEXT:    andb $1, %al
   6104 ; AVX1-NEXT:    movb %al, (%rdi)
   6105 ; AVX1-NEXT:    vpextrb $7, %xmm0, %eax
   6106 ; AVX1-NEXT:    andb $1, %al
   6107 ; AVX1-NEXT:    movb %al, (%rdi)
   6108 ; AVX1-NEXT:    vpextrb $6, %xmm0, %eax
   6109 ; AVX1-NEXT:    andb $1, %al
   6110 ; AVX1-NEXT:    movb %al, (%rdi)
   6111 ; AVX1-NEXT:    vpextrb $5, %xmm0, %eax
   6112 ; AVX1-NEXT:    andb $1, %al
   6113 ; AVX1-NEXT:    movb %al, (%rdi)
   6114 ; AVX1-NEXT:    vpextrb $4, %xmm0, %eax
   6115 ; AVX1-NEXT:    andb $1, %al
   6116 ; AVX1-NEXT:    movb %al, (%rdi)
   6117 ; AVX1-NEXT:    vpextrb $3, %xmm0, %eax
   6118 ; AVX1-NEXT:    andb $1, %al
   6119 ; AVX1-NEXT:    movb %al, (%rdi)
   6120 ; AVX1-NEXT:    vpextrb $2, %xmm0, %eax
   6121 ; AVX1-NEXT:    andb $1, %al
   6122 ; AVX1-NEXT:    movb %al, (%rdi)
   6123 ; AVX1-NEXT:    vpextrb $1, %xmm0, %eax
   6124 ; AVX1-NEXT:    andb $1, %al
   6125 ; AVX1-NEXT:    movb %al, (%rdi)
   6126 ; AVX1-NEXT:    vpextrb $0, %xmm0, %eax
   6127 ; AVX1-NEXT:    andb $1, %al
   6128 ; AVX1-NEXT:    movb %al, (%rdi)
   6129 ; AVX1-NEXT:    vpextrb $15, %xmm8, %eax
   6130 ; AVX1-NEXT:    andb $1, %al
   6131 ; AVX1-NEXT:    movb %al, (%rdi)
   6132 ; AVX1-NEXT:    vpextrb $14, %xmm8, %eax
   6133 ; AVX1-NEXT:    andb $1, %al
   6134 ; AVX1-NEXT:    movb %al, (%rdi)
   6135 ; AVX1-NEXT:    vpextrb $13, %xmm8, %eax
   6136 ; AVX1-NEXT:    andb $1, %al
   6137 ; AVX1-NEXT:    movb %al, (%rdi)
   6138 ; AVX1-NEXT:    vpextrb $12, %xmm8, %eax
   6139 ; AVX1-NEXT:    andb $1, %al
   6140 ; AVX1-NEXT:    movb %al, (%rdi)
   6141 ; AVX1-NEXT:    vpextrb $11, %xmm8, %eax
   6142 ; AVX1-NEXT:    andb $1, %al
   6143 ; AVX1-NEXT:    movb %al, (%rdi)
   6144 ; AVX1-NEXT:    vpextrb $10, %xmm8, %eax
   6145 ; AVX1-NEXT:    andb $1, %al
   6146 ; AVX1-NEXT:    movb %al, (%rdi)
   6147 ; AVX1-NEXT:    vpextrb $9, %xmm8, %eax
   6148 ; AVX1-NEXT:    andb $1, %al
   6149 ; AVX1-NEXT:    movb %al, (%rdi)
   6150 ; AVX1-NEXT:    vpextrb $8, %xmm8, %eax
   6151 ; AVX1-NEXT:    andb $1, %al
   6152 ; AVX1-NEXT:    movb %al, (%rdi)
   6153 ; AVX1-NEXT:    vpextrb $7, %xmm8, %eax
   6154 ; AVX1-NEXT:    andb $1, %al
   6155 ; AVX1-NEXT:    movb %al, (%rdi)
   6156 ; AVX1-NEXT:    vpextrb $6, %xmm8, %eax
   6157 ; AVX1-NEXT:    andb $1, %al
   6158 ; AVX1-NEXT:    movb %al, (%rdi)
   6159 ; AVX1-NEXT:    vpextrb $5, %xmm8, %eax
   6160 ; AVX1-NEXT:    andb $1, %al
   6161 ; AVX1-NEXT:    movb %al, (%rdi)
   6162 ; AVX1-NEXT:    vpextrb $4, %xmm8, %eax
   6163 ; AVX1-NEXT:    andb $1, %al
   6164 ; AVX1-NEXT:    movb %al, (%rdi)
   6165 ; AVX1-NEXT:    vpextrb $3, %xmm8, %eax
   6166 ; AVX1-NEXT:    andb $1, %al
   6167 ; AVX1-NEXT:    movb %al, (%rdi)
   6168 ; AVX1-NEXT:    vpextrb $2, %xmm8, %eax
   6169 ; AVX1-NEXT:    andb $1, %al
   6170 ; AVX1-NEXT:    movb %al, (%rdi)
   6171 ; AVX1-NEXT:    vpextrb $1, %xmm8, %eax
   6172 ; AVX1-NEXT:    andb $1, %al
   6173 ; AVX1-NEXT:    movb %al, (%rdi)
   6174 ; AVX1-NEXT:    vpextrb $0, %xmm8, %eax
   6175 ; AVX1-NEXT:    andb $1, %al
   6176 ; AVX1-NEXT:    movb %al, (%rdi)
   6177 ; AVX1-NEXT:    movq %rdi, %rax
   6178 ; AVX1-NEXT:    vzeroupper
   6179 ; AVX1-NEXT:    retq
   6180 ;
   6181 ; AVX2-LABEL: test_cmp_v128i8:
   6182 ; AVX2:       # BB#0:
   6183 ; AVX2-NEXT:    vpcmpgtb %ymm4, %ymm0, %ymm0
   6184 ; AVX2-NEXT:    vpcmpgtb %ymm5, %ymm1, %ymm1
   6185 ; AVX2-NEXT:    vpcmpgtb %ymm6, %ymm2, %ymm2
   6186 ; AVX2-NEXT:    vpcmpgtb %ymm7, %ymm3, %ymm3
   6187 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4
   6188 ; AVX2-NEXT:    vpextrb $15, %xmm4, %eax
   6189 ; AVX2-NEXT:    andb $1, %al
   6190 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6191 ; AVX2-NEXT:    vpextrb $14, %xmm4, %eax
   6192 ; AVX2-NEXT:    andb $1, %al
   6193 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6194 ; AVX2-NEXT:    vpextrb $13, %xmm4, %eax
   6195 ; AVX2-NEXT:    andb $1, %al
   6196 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6197 ; AVX2-NEXT:    vpextrb $12, %xmm4, %eax
   6198 ; AVX2-NEXT:    andb $1, %al
   6199 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6200 ; AVX2-NEXT:    vpextrb $11, %xmm4, %eax
   6201 ; AVX2-NEXT:    andb $1, %al
   6202 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6203 ; AVX2-NEXT:    vpextrb $10, %xmm4, %eax
   6204 ; AVX2-NEXT:    andb $1, %al
   6205 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6206 ; AVX2-NEXT:    vpextrb $9, %xmm4, %eax
   6207 ; AVX2-NEXT:    andb $1, %al
   6208 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6209 ; AVX2-NEXT:    vpextrb $8, %xmm4, %eax
   6210 ; AVX2-NEXT:    andb $1, %al
   6211 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6212 ; AVX2-NEXT:    vpextrb $7, %xmm4, %eax
   6213 ; AVX2-NEXT:    andb $1, %al
   6214 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6215 ; AVX2-NEXT:    vpextrb $6, %xmm4, %eax
   6216 ; AVX2-NEXT:    andb $1, %al
   6217 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6218 ; AVX2-NEXT:    vpextrb $5, %xmm4, %eax
   6219 ; AVX2-NEXT:    andb $1, %al
   6220 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6221 ; AVX2-NEXT:    vpextrb $4, %xmm4, %eax
   6222 ; AVX2-NEXT:    andb $1, %al
   6223 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6224 ; AVX2-NEXT:    vpextrb $3, %xmm4, %eax
   6225 ; AVX2-NEXT:    andb $1, %al
   6226 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6227 ; AVX2-NEXT:    vpextrb $2, %xmm4, %eax
   6228 ; AVX2-NEXT:    andb $1, %al
   6229 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6230 ; AVX2-NEXT:    vpextrb $1, %xmm4, %eax
   6231 ; AVX2-NEXT:    andb $1, %al
   6232 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6233 ; AVX2-NEXT:    vpextrb $0, %xmm4, %eax
   6234 ; AVX2-NEXT:    andb $1, %al
   6235 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6236 ; AVX2-NEXT:    vpextrb $15, %xmm3, %eax
   6237 ; AVX2-NEXT:    andb $1, %al
   6238 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6239 ; AVX2-NEXT:    vpextrb $14, %xmm3, %eax
   6240 ; AVX2-NEXT:    andb $1, %al
   6241 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6242 ; AVX2-NEXT:    vpextrb $13, %xmm3, %eax
   6243 ; AVX2-NEXT:    andb $1, %al
   6244 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6245 ; AVX2-NEXT:    vpextrb $12, %xmm3, %eax
   6246 ; AVX2-NEXT:    andb $1, %al
   6247 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6248 ; AVX2-NEXT:    vpextrb $11, %xmm3, %eax
   6249 ; AVX2-NEXT:    andb $1, %al
   6250 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6251 ; AVX2-NEXT:    vpextrb $10, %xmm3, %eax
   6252 ; AVX2-NEXT:    andb $1, %al
   6253 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6254 ; AVX2-NEXT:    vpextrb $9, %xmm3, %eax
   6255 ; AVX2-NEXT:    andb $1, %al
   6256 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6257 ; AVX2-NEXT:    vpextrb $8, %xmm3, %eax
   6258 ; AVX2-NEXT:    andb $1, %al
   6259 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6260 ; AVX2-NEXT:    vpextrb $7, %xmm3, %eax
   6261 ; AVX2-NEXT:    andb $1, %al
   6262 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6263 ; AVX2-NEXT:    vpextrb $6, %xmm3, %eax
   6264 ; AVX2-NEXT:    andb $1, %al
   6265 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6266 ; AVX2-NEXT:    vpextrb $5, %xmm3, %eax
   6267 ; AVX2-NEXT:    andb $1, %al
   6268 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6269 ; AVX2-NEXT:    vpextrb $4, %xmm3, %eax
   6270 ; AVX2-NEXT:    andb $1, %al
   6271 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6272 ; AVX2-NEXT:    vpextrb $3, %xmm3, %eax
   6273 ; AVX2-NEXT:    andb $1, %al
   6274 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6275 ; AVX2-NEXT:    vpextrb $2, %xmm3, %eax
   6276 ; AVX2-NEXT:    andb $1, %al
   6277 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6278 ; AVX2-NEXT:    vpextrb $1, %xmm3, %eax
   6279 ; AVX2-NEXT:    andb $1, %al
   6280 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6281 ; AVX2-NEXT:    vpextrb $0, %xmm3, %eax
   6282 ; AVX2-NEXT:    andb $1, %al
   6283 ; AVX2-NEXT:    movb %al, 12(%rdi)
   6284 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm3
   6285 ; AVX2-NEXT:    vpextrb $15, %xmm3, %eax
   6286 ; AVX2-NEXT:    andb $1, %al
   6287 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6288 ; AVX2-NEXT:    vpextrb $14, %xmm3, %eax
   6289 ; AVX2-NEXT:    andb $1, %al
   6290 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6291 ; AVX2-NEXT:    vpextrb $13, %xmm3, %eax
   6292 ; AVX2-NEXT:    andb $1, %al
   6293 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6294 ; AVX2-NEXT:    vpextrb $12, %xmm3, %eax
   6295 ; AVX2-NEXT:    andb $1, %al
   6296 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6297 ; AVX2-NEXT:    vpextrb $11, %xmm3, %eax
   6298 ; AVX2-NEXT:    andb $1, %al
   6299 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6300 ; AVX2-NEXT:    vpextrb $10, %xmm3, %eax
   6301 ; AVX2-NEXT:    andb $1, %al
   6302 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6303 ; AVX2-NEXT:    vpextrb $9, %xmm3, %eax
   6304 ; AVX2-NEXT:    andb $1, %al
   6305 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6306 ; AVX2-NEXT:    vpextrb $8, %xmm3, %eax
   6307 ; AVX2-NEXT:    andb $1, %al
   6308 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6309 ; AVX2-NEXT:    vpextrb $7, %xmm3, %eax
   6310 ; AVX2-NEXT:    andb $1, %al
   6311 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6312 ; AVX2-NEXT:    vpextrb $6, %xmm3, %eax
   6313 ; AVX2-NEXT:    andb $1, %al
   6314 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6315 ; AVX2-NEXT:    vpextrb $5, %xmm3, %eax
   6316 ; AVX2-NEXT:    andb $1, %al
   6317 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6318 ; AVX2-NEXT:    vpextrb $4, %xmm3, %eax
   6319 ; AVX2-NEXT:    andb $1, %al
   6320 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6321 ; AVX2-NEXT:    vpextrb $3, %xmm3, %eax
   6322 ; AVX2-NEXT:    andb $1, %al
   6323 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6324 ; AVX2-NEXT:    vpextrb $2, %xmm3, %eax
   6325 ; AVX2-NEXT:    andb $1, %al
   6326 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6327 ; AVX2-NEXT:    vpextrb $1, %xmm3, %eax
   6328 ; AVX2-NEXT:    andb $1, %al
   6329 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6330 ; AVX2-NEXT:    vpextrb $0, %xmm3, %eax
   6331 ; AVX2-NEXT:    andb $1, %al
   6332 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6333 ; AVX2-NEXT:    vpextrb $15, %xmm2, %eax
   6334 ; AVX2-NEXT:    andb $1, %al
   6335 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6336 ; AVX2-NEXT:    vpextrb $14, %xmm2, %eax
   6337 ; AVX2-NEXT:    andb $1, %al
   6338 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6339 ; AVX2-NEXT:    vpextrb $13, %xmm2, %eax
   6340 ; AVX2-NEXT:    andb $1, %al
   6341 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6342 ; AVX2-NEXT:    vpextrb $12, %xmm2, %eax
   6343 ; AVX2-NEXT:    andb $1, %al
   6344 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6345 ; AVX2-NEXT:    vpextrb $11, %xmm2, %eax
   6346 ; AVX2-NEXT:    andb $1, %al
   6347 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6348 ; AVX2-NEXT:    vpextrb $10, %xmm2, %eax
   6349 ; AVX2-NEXT:    andb $1, %al
   6350 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6351 ; AVX2-NEXT:    vpextrb $9, %xmm2, %eax
   6352 ; AVX2-NEXT:    andb $1, %al
   6353 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6354 ; AVX2-NEXT:    vpextrb $8, %xmm2, %eax
   6355 ; AVX2-NEXT:    andb $1, %al
   6356 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6357 ; AVX2-NEXT:    vpextrb $7, %xmm2, %eax
   6358 ; AVX2-NEXT:    andb $1, %al
   6359 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6360 ; AVX2-NEXT:    vpextrb $6, %xmm2, %eax
   6361 ; AVX2-NEXT:    andb $1, %al
   6362 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6363 ; AVX2-NEXT:    vpextrb $5, %xmm2, %eax
   6364 ; AVX2-NEXT:    andb $1, %al
   6365 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6366 ; AVX2-NEXT:    vpextrb $4, %xmm2, %eax
   6367 ; AVX2-NEXT:    andb $1, %al
   6368 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6369 ; AVX2-NEXT:    vpextrb $3, %xmm2, %eax
   6370 ; AVX2-NEXT:    andb $1, %al
   6371 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6372 ; AVX2-NEXT:    vpextrb $2, %xmm2, %eax
   6373 ; AVX2-NEXT:    andb $1, %al
   6374 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6375 ; AVX2-NEXT:    vpextrb $1, %xmm2, %eax
   6376 ; AVX2-NEXT:    andb $1, %al
   6377 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6378 ; AVX2-NEXT:    vpextrb $0, %xmm2, %eax
   6379 ; AVX2-NEXT:    andb $1, %al
   6380 ; AVX2-NEXT:    movb %al, 8(%rdi)
   6381 ; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
   6382 ; AVX2-NEXT:    vpextrb $15, %xmm2, %eax
   6383 ; AVX2-NEXT:    andb $1, %al
   6384 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6385 ; AVX2-NEXT:    vpextrb $14, %xmm2, %eax
   6386 ; AVX2-NEXT:    andb $1, %al
   6387 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6388 ; AVX2-NEXT:    vpextrb $13, %xmm2, %eax
   6389 ; AVX2-NEXT:    andb $1, %al
   6390 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6391 ; AVX2-NEXT:    vpextrb $12, %xmm2, %eax
   6392 ; AVX2-NEXT:    andb $1, %al
   6393 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6394 ; AVX2-NEXT:    vpextrb $11, %xmm2, %eax
   6395 ; AVX2-NEXT:    andb $1, %al
   6396 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6397 ; AVX2-NEXT:    vpextrb $10, %xmm2, %eax
   6398 ; AVX2-NEXT:    andb $1, %al
   6399 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6400 ; AVX2-NEXT:    vpextrb $9, %xmm2, %eax
   6401 ; AVX2-NEXT:    andb $1, %al
   6402 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6403 ; AVX2-NEXT:    vpextrb $8, %xmm2, %eax
   6404 ; AVX2-NEXT:    andb $1, %al
   6405 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6406 ; AVX2-NEXT:    vpextrb $7, %xmm2, %eax
   6407 ; AVX2-NEXT:    andb $1, %al
   6408 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6409 ; AVX2-NEXT:    vpextrb $6, %xmm2, %eax
   6410 ; AVX2-NEXT:    andb $1, %al
   6411 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6412 ; AVX2-NEXT:    vpextrb $5, %xmm2, %eax
   6413 ; AVX2-NEXT:    andb $1, %al
   6414 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6415 ; AVX2-NEXT:    vpextrb $4, %xmm2, %eax
   6416 ; AVX2-NEXT:    andb $1, %al
   6417 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6418 ; AVX2-NEXT:    vpextrb $3, %xmm2, %eax
   6419 ; AVX2-NEXT:    andb $1, %al
   6420 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6421 ; AVX2-NEXT:    vpextrb $2, %xmm2, %eax
   6422 ; AVX2-NEXT:    andb $1, %al
   6423 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6424 ; AVX2-NEXT:    vpextrb $1, %xmm2, %eax
   6425 ; AVX2-NEXT:    andb $1, %al
   6426 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6427 ; AVX2-NEXT:    vpextrb $0, %xmm2, %eax
   6428 ; AVX2-NEXT:    andb $1, %al
   6429 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6430 ; AVX2-NEXT:    vpextrb $15, %xmm1, %eax
   6431 ; AVX2-NEXT:    andb $1, %al
   6432 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6433 ; AVX2-NEXT:    vpextrb $14, %xmm1, %eax
   6434 ; AVX2-NEXT:    andb $1, %al
   6435 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6436 ; AVX2-NEXT:    vpextrb $13, %xmm1, %eax
   6437 ; AVX2-NEXT:    andb $1, %al
   6438 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6439 ; AVX2-NEXT:    vpextrb $12, %xmm1, %eax
   6440 ; AVX2-NEXT:    andb $1, %al
   6441 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6442 ; AVX2-NEXT:    vpextrb $11, %xmm1, %eax
   6443 ; AVX2-NEXT:    andb $1, %al
   6444 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6445 ; AVX2-NEXT:    vpextrb $10, %xmm1, %eax
   6446 ; AVX2-NEXT:    andb $1, %al
   6447 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6448 ; AVX2-NEXT:    vpextrb $9, %xmm1, %eax
   6449 ; AVX2-NEXT:    andb $1, %al
   6450 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6451 ; AVX2-NEXT:    vpextrb $8, %xmm1, %eax
   6452 ; AVX2-NEXT:    andb $1, %al
   6453 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6454 ; AVX2-NEXT:    vpextrb $7, %xmm1, %eax
   6455 ; AVX2-NEXT:    andb $1, %al
   6456 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6457 ; AVX2-NEXT:    vpextrb $6, %xmm1, %eax
   6458 ; AVX2-NEXT:    andb $1, %al
   6459 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6460 ; AVX2-NEXT:    vpextrb $5, %xmm1, %eax
   6461 ; AVX2-NEXT:    andb $1, %al
   6462 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6463 ; AVX2-NEXT:    vpextrb $4, %xmm1, %eax
   6464 ; AVX2-NEXT:    andb $1, %al
   6465 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6466 ; AVX2-NEXT:    vpextrb $3, %xmm1, %eax
   6467 ; AVX2-NEXT:    andb $1, %al
   6468 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6469 ; AVX2-NEXT:    vpextrb $2, %xmm1, %eax
   6470 ; AVX2-NEXT:    andb $1, %al
   6471 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6472 ; AVX2-NEXT:    vpextrb $1, %xmm1, %eax
   6473 ; AVX2-NEXT:    andb $1, %al
   6474 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6475 ; AVX2-NEXT:    vpextrb $0, %xmm1, %eax
   6476 ; AVX2-NEXT:    andb $1, %al
   6477 ; AVX2-NEXT:    movb %al, 4(%rdi)
   6478 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
   6479 ; AVX2-NEXT:    vpextrb $15, %xmm1, %eax
   6480 ; AVX2-NEXT:    andb $1, %al
   6481 ; AVX2-NEXT:    movb %al, (%rdi)
   6482 ; AVX2-NEXT:    vpextrb $14, %xmm1, %eax
   6483 ; AVX2-NEXT:    andb $1, %al
   6484 ; AVX2-NEXT:    movb %al, (%rdi)
   6485 ; AVX2-NEXT:    vpextrb $13, %xmm1, %eax
   6486 ; AVX2-NEXT:    andb $1, %al
   6487 ; AVX2-NEXT:    movb %al, (%rdi)
   6488 ; AVX2-NEXT:    vpextrb $12, %xmm1, %eax
   6489 ; AVX2-NEXT:    andb $1, %al
   6490 ; AVX2-NEXT:    movb %al, (%rdi)
   6491 ; AVX2-NEXT:    vpextrb $11, %xmm1, %eax
   6492 ; AVX2-NEXT:    andb $1, %al
   6493 ; AVX2-NEXT:    movb %al, (%rdi)
   6494 ; AVX2-NEXT:    vpextrb $10, %xmm1, %eax
   6495 ; AVX2-NEXT:    andb $1, %al
   6496 ; AVX2-NEXT:    movb %al, (%rdi)
   6497 ; AVX2-NEXT:    vpextrb $9, %xmm1, %eax
   6498 ; AVX2-NEXT:    andb $1, %al
   6499 ; AVX2-NEXT:    movb %al, (%rdi)
   6500 ; AVX2-NEXT:    vpextrb $8, %xmm1, %eax
   6501 ; AVX2-NEXT:    andb $1, %al
   6502 ; AVX2-NEXT:    movb %al, (%rdi)
   6503 ; AVX2-NEXT:    vpextrb $7, %xmm1, %eax
   6504 ; AVX2-NEXT:    andb $1, %al
   6505 ; AVX2-NEXT:    movb %al, (%rdi)
   6506 ; AVX2-NEXT:    vpextrb $6, %xmm1, %eax
   6507 ; AVX2-NEXT:    andb $1, %al
   6508 ; AVX2-NEXT:    movb %al, (%rdi)
   6509 ; AVX2-NEXT:    vpextrb $5, %xmm1, %eax
   6510 ; AVX2-NEXT:    andb $1, %al
   6511 ; AVX2-NEXT:    movb %al, (%rdi)
   6512 ; AVX2-NEXT:    vpextrb $4, %xmm1, %eax
   6513 ; AVX2-NEXT:    andb $1, %al
   6514 ; AVX2-NEXT:    movb %al, (%rdi)
   6515 ; AVX2-NEXT:    vpextrb $3, %xmm1, %eax
   6516 ; AVX2-NEXT:    andb $1, %al
   6517 ; AVX2-NEXT:    movb %al, (%rdi)
   6518 ; AVX2-NEXT:    vpextrb $2, %xmm1, %eax
   6519 ; AVX2-NEXT:    andb $1, %al
   6520 ; AVX2-NEXT:    movb %al, (%rdi)
   6521 ; AVX2-NEXT:    vpextrb $1, %xmm1, %eax
   6522 ; AVX2-NEXT:    andb $1, %al
   6523 ; AVX2-NEXT:    movb %al, (%rdi)
   6524 ; AVX2-NEXT:    vpextrb $0, %xmm1, %eax
   6525 ; AVX2-NEXT:    andb $1, %al
   6526 ; AVX2-NEXT:    movb %al, (%rdi)
   6527 ; AVX2-NEXT:    vpextrb $15, %xmm0, %eax
   6528 ; AVX2-NEXT:    andb $1, %al
   6529 ; AVX2-NEXT:    movb %al, (%rdi)
   6530 ; AVX2-NEXT:    vpextrb $14, %xmm0, %eax
   6531 ; AVX2-NEXT:    andb $1, %al
   6532 ; AVX2-NEXT:    movb %al, (%rdi)
   6533 ; AVX2-NEXT:    vpextrb $13, %xmm0, %eax
   6534 ; AVX2-NEXT:    andb $1, %al
   6535 ; AVX2-NEXT:    movb %al, (%rdi)
   6536 ; AVX2-NEXT:    vpextrb $12, %xmm0, %eax
   6537 ; AVX2-NEXT:    andb $1, %al
   6538 ; AVX2-NEXT:    movb %al, (%rdi)
   6539 ; AVX2-NEXT:    vpextrb $11, %xmm0, %eax
   6540 ; AVX2-NEXT:    andb $1, %al
   6541 ; AVX2-NEXT:    movb %al, (%rdi)
   6542 ; AVX2-NEXT:    vpextrb $10, %xmm0, %eax
   6543 ; AVX2-NEXT:    andb $1, %al
   6544 ; AVX2-NEXT:    movb %al, (%rdi)
   6545 ; AVX2-NEXT:    vpextrb $9, %xmm0, %eax
   6546 ; AVX2-NEXT:    andb $1, %al
   6547 ; AVX2-NEXT:    movb %al, (%rdi)
   6548 ; AVX2-NEXT:    vpextrb $8, %xmm0, %eax
   6549 ; AVX2-NEXT:    andb $1, %al
   6550 ; AVX2-NEXT:    movb %al, (%rdi)
   6551 ; AVX2-NEXT:    vpextrb $7, %xmm0, %eax
   6552 ; AVX2-NEXT:    andb $1, %al
   6553 ; AVX2-NEXT:    movb %al, (%rdi)
   6554 ; AVX2-NEXT:    vpextrb $6, %xmm0, %eax
   6555 ; AVX2-NEXT:    andb $1, %al
   6556 ; AVX2-NEXT:    movb %al, (%rdi)
   6557 ; AVX2-NEXT:    vpextrb $5, %xmm0, %eax
   6558 ; AVX2-NEXT:    andb $1, %al
   6559 ; AVX2-NEXT:    movb %al, (%rdi)
   6560 ; AVX2-NEXT:    vpextrb $4, %xmm0, %eax
   6561 ; AVX2-NEXT:    andb $1, %al
   6562 ; AVX2-NEXT:    movb %al, (%rdi)
   6563 ; AVX2-NEXT:    vpextrb $3, %xmm0, %eax
   6564 ; AVX2-NEXT:    andb $1, %al
   6565 ; AVX2-NEXT:    movb %al, (%rdi)
   6566 ; AVX2-NEXT:    vpextrb $2, %xmm0, %eax
   6567 ; AVX2-NEXT:    andb $1, %al
   6568 ; AVX2-NEXT:    movb %al, (%rdi)
   6569 ; AVX2-NEXT:    vpextrb $1, %xmm0, %eax
   6570 ; AVX2-NEXT:    andb $1, %al
   6571 ; AVX2-NEXT:    movb %al, (%rdi)
   6572 ; AVX2-NEXT:    vpextrb $0, %xmm0, %eax
   6573 ; AVX2-NEXT:    andb $1, %al
   6574 ; AVX2-NEXT:    movb %al, (%rdi)
   6575 ; AVX2-NEXT:    movq %rdi, %rax
   6576 ; AVX2-NEXT:    vzeroupper
   6577 ; AVX2-NEXT:    retq
   6578 ;
   6579 ; AVX512-LABEL: test_cmp_v128i8:
   6580 ; AVX512:       # BB#0:
   6581 ; AVX512-NEXT:    vpcmpgtb %ymm4, %ymm0, %ymm0
   6582 ; AVX512-NEXT:    vpcmpgtb %ymm5, %ymm1, %ymm1
   6583 ; AVX512-NEXT:    vpcmpgtb %ymm6, %ymm2, %ymm2
   6584 ; AVX512-NEXT:    vpcmpgtb %ymm7, %ymm3, %ymm3
   6585 ; AVX512-NEXT:    vextracti128 $1, %ymm3, %xmm4
   6586 ; AVX512-NEXT:    vpmovsxbd %xmm4, %zmm4
   6587 ; AVX512-NEXT:    vpslld $31, %zmm4, %zmm4
   6588 ; AVX512-NEXT:    vptestmd %zmm4, %zmm4, %k0
   6589 ; AVX512-NEXT:    kmovw %k0, 14(%rdi)
   6590 ; AVX512-NEXT:    vpmovsxbd %xmm3, %zmm3
   6591 ; AVX512-NEXT:    vpslld $31, %zmm3, %zmm3
   6592 ; AVX512-NEXT:    vptestmd %zmm3, %zmm3, %k0
   6593 ; AVX512-NEXT:    kmovw %k0, 12(%rdi)
   6594 ; AVX512-NEXT:    vextracti128 $1, %ymm2, %xmm3
   6595 ; AVX512-NEXT:    vpmovsxbd %xmm3, %zmm3
   6596 ; AVX512-NEXT:    vpslld $31, %zmm3, %zmm3
   6597 ; AVX512-NEXT:    vptestmd %zmm3, %zmm3, %k0
   6598 ; AVX512-NEXT:    kmovw %k0, 10(%rdi)
   6599 ; AVX512-NEXT:    vpmovsxbd %xmm2, %zmm2
   6600 ; AVX512-NEXT:    vpslld $31, %zmm2, %zmm2
   6601 ; AVX512-NEXT:    vptestmd %zmm2, %zmm2, %k0
   6602 ; AVX512-NEXT:    kmovw %k0, 8(%rdi)
   6603 ; AVX512-NEXT:    vextracti128 $1, %ymm1, %xmm2
   6604 ; AVX512-NEXT:    vpmovsxbd %xmm2, %zmm2
   6605 ; AVX512-NEXT:    vpslld $31, %zmm2, %zmm2
   6606 ; AVX512-NEXT:    vptestmd %zmm2, %zmm2, %k0
   6607 ; AVX512-NEXT:    kmovw %k0, 6(%rdi)
   6608 ; AVX512-NEXT:    vpmovsxbd %xmm1, %zmm1
   6609 ; AVX512-NEXT:    vpslld $31, %zmm1, %zmm1
   6610 ; AVX512-NEXT:    vptestmd %zmm1, %zmm1, %k0
   6611 ; AVX512-NEXT:    kmovw %k0, 4(%rdi)
   6612 ; AVX512-NEXT:    vextracti128 $1, %ymm0, %xmm1
   6613 ; AVX512-NEXT:    vpmovsxbd %xmm1, %zmm1
   6614 ; AVX512-NEXT:    vpslld $31, %zmm1, %zmm1
   6615 ; AVX512-NEXT:    vptestmd %zmm1, %zmm1, %k0
   6616 ; AVX512-NEXT:    kmovw %k0, 2(%rdi)
   6617 ; AVX512-NEXT:    vpmovsxbd %xmm0, %zmm0
   6618 ; AVX512-NEXT:    vpslld $31, %zmm0, %zmm0
   6619 ; AVX512-NEXT:    vptestmd %zmm0, %zmm0, %k0
   6620 ; AVX512-NEXT:    kmovw %k0, (%rdi)
   6621 ; AVX512-NEXT:    movq %rdi, %rax
   6622 ; AVX512-NEXT:    retq
   6623   %1 = icmp sgt <128 x i8> %a0, %a1
   6624   ret <128 x i1> %1
   6625 }
   6626