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