Lines Matching refs:AVX512
6 …unknown -mattr=+avx512f | FileCheck %s --check-prefix=AVX --check-prefix=AVX512 --check-prefix=AVX…
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
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
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
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
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
620 ; AVX512-LABEL: test_cmp_v32i8:
621 ; AVX512: # BB#0:
622 ; AVX512-NEXT: vpcmpgtb %ymm1, %ymm0, %ymm0
623 ; AVX512-NEXT: retq
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
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
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
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
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
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,…
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
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
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
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
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
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,…
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,…
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
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