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 12define <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 27define <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 42define <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 71define <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 85define <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 99define <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 117define <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 165define <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 219define <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 288define <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 342define <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 397define <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 632define <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 717define <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 779define <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 903define <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 968define <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 1245define <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 2089define <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 2302define <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 2868define <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 3204define <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 3778define <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 4970define <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