1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefix=SSE --check-prefix=SSE2 3; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse4.2 | FileCheck %s --check-prefix=SSE --check-prefix=SSE42 4; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefix=AVX --check-prefix=AVX1 5; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefix=AVX --check-prefix=AVX2 6; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefix=AVX --check-prefix=AVX512 --check-prefix=AVX512F 7; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512dq | FileCheck %s --check-prefix=AVX --check-prefix=AVX512 --check-prefix=AVX512DQ 8; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw | FileCheck %s --check-prefix=AVX --check-prefix=AVX512 --check-prefix=AVX512BW 9 10; 11; 128-bit vector comparisons 12; 13 14define <2 x i1> @test_cmp_v2f64(<2 x double> %a0, <2 x double> %a1) nounwind { 15; SSE-LABEL: test_cmp_v2f64: 16; SSE: # BB#0: 17; SSE-NEXT: cmpltpd %xmm0, %xmm1 18; SSE-NEXT: movapd %xmm1, %xmm0 19; SSE-NEXT: retq 20; 21; AVX-LABEL: test_cmp_v2f64: 22; AVX: # BB#0: 23; AVX-NEXT: vcmpltpd %xmm0, %xmm1, %xmm0 24; AVX-NEXT: retq 25 %1 = fcmp ogt <2 x double> %a0, %a1 26 ret <2 x i1> %1 27} 28 29define <4 x i1> @test_cmp_v4f32(<4 x float> %a0, <4 x float> %a1) nounwind { 30; SSE-LABEL: test_cmp_v4f32: 31; SSE: # BB#0: 32; SSE-NEXT: cmpltps %xmm0, %xmm1 33; SSE-NEXT: movaps %xmm1, %xmm0 34; SSE-NEXT: retq 35; 36; AVX-LABEL: test_cmp_v4f32: 37; AVX: # BB#0: 38; AVX-NEXT: vcmpltps %xmm0, %xmm1, %xmm0 39; AVX-NEXT: retq 40 %1 = fcmp ogt <4 x float> %a0, %a1 41 ret <4 x i1> %1 42} 43 44define <2 x i1> @test_cmp_v2i64(<2 x i64> %a0, <2 x i64> %a1) nounwind { 45; SSE2-LABEL: test_cmp_v2i64: 46; SSE2: # BB#0: 47; SSE2-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,0,2147483648,0] 48; SSE2-NEXT: pxor %xmm2, %xmm1 49; SSE2-NEXT: pxor %xmm2, %xmm0 50; SSE2-NEXT: movdqa %xmm0, %xmm2 51; SSE2-NEXT: pcmpgtd %xmm1, %xmm2 52; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm2[0,0,2,2] 53; SSE2-NEXT: pcmpeqd %xmm1, %xmm0 54; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,3,3] 55; SSE2-NEXT: pand %xmm3, %xmm1 56; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm2[1,1,3,3] 57; SSE2-NEXT: por %xmm1, %xmm0 58; SSE2-NEXT: retq 59; 60; SSE42-LABEL: test_cmp_v2i64: 61; SSE42: # BB#0: 62; SSE42-NEXT: pcmpgtq %xmm1, %xmm0 63; SSE42-NEXT: retq 64; 65; AVX-LABEL: test_cmp_v2i64: 66; AVX: # BB#0: 67; AVX-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm0 68; AVX-NEXT: retq 69 %1 = icmp sgt <2 x i64> %a0, %a1 70 ret <2 x i1> %1 71} 72 73define <4 x i1> @test_cmp_v4i32(<4 x i32> %a0, <4 x i32> %a1) nounwind { 74; SSE-LABEL: test_cmp_v4i32: 75; SSE: # BB#0: 76; SSE-NEXT: pcmpgtd %xmm1, %xmm0 77; SSE-NEXT: retq 78; 79; AVX-LABEL: test_cmp_v4i32: 80; AVX: # BB#0: 81; AVX-NEXT: vpcmpgtd %xmm1, %xmm0, %xmm0 82; AVX-NEXT: retq 83 %1 = icmp sgt <4 x i32> %a0, %a1 84 ret <4 x i1> %1 85} 86 87define <8 x i1> @test_cmp_v8i16(<8 x i16> %a0, <8 x i16> %a1) nounwind { 88; SSE-LABEL: test_cmp_v8i16: 89; SSE: # BB#0: 90; SSE-NEXT: pcmpgtw %xmm1, %xmm0 91; SSE-NEXT: retq 92; 93; AVX-LABEL: test_cmp_v8i16: 94; AVX: # BB#0: 95; AVX-NEXT: vpcmpgtw %xmm1, %xmm0, %xmm0 96; AVX-NEXT: retq 97 %1 = icmp sgt <8 x i16> %a0, %a1 98 ret <8 x i1> %1 99} 100 101define <16 x i1> @test_cmp_v16i8(<16 x i8> %a0, <16 x i8> %a1) nounwind { 102; SSE-LABEL: test_cmp_v16i8: 103; SSE: # BB#0: 104; SSE-NEXT: pcmpgtb %xmm1, %xmm0 105; SSE-NEXT: retq 106; 107; AVX-LABEL: test_cmp_v16i8: 108; AVX: # BB#0: 109; AVX-NEXT: vpcmpgtb %xmm1, %xmm0, %xmm0 110; AVX-NEXT: retq 111 %1 = icmp sgt <16 x i8> %a0, %a1 112 ret <16 x i1> %1 113} 114 115; 116; 256-bit vector comparisons 117; 118 119define <4 x i1> @test_cmp_v4f64(<4 x double> %a0, <4 x double> %a1) nounwind { 120; SSE-LABEL: test_cmp_v4f64: 121; SSE: # BB#0: 122; SSE-NEXT: cmpltpd %xmm1, %xmm3 123; SSE-NEXT: cmpltpd %xmm0, %xmm2 124; SSE-NEXT: packsswb %xmm3, %xmm2 125; SSE-NEXT: movdqa %xmm2, %xmm0 126; SSE-NEXT: retq 127; 128; AVX1-LABEL: test_cmp_v4f64: 129; AVX1: # BB#0: 130; AVX1-NEXT: vcmpltpd %ymm0, %ymm1, %ymm0 131; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 132; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 133; AVX1-NEXT: vzeroupper 134; AVX1-NEXT: retq 135; 136; AVX2-LABEL: test_cmp_v4f64: 137; AVX2: # BB#0: 138; AVX2-NEXT: vcmpltpd %ymm0, %ymm1, %ymm0 139; AVX2-NEXT: vextractf128 $1, %ymm0, %xmm1 140; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 141; AVX2-NEXT: vzeroupper 142; AVX2-NEXT: retq 143; 144; AVX512-LABEL: test_cmp_v4f64: 145; AVX512: # BB#0: 146; AVX512-NEXT: vcmpltpd %ymm0, %ymm1, %ymm0 147; AVX512-NEXT: vpmovqd %zmm0, %ymm0 148; AVX512-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill> 149; AVX512-NEXT: retq 150 %1 = fcmp ogt <4 x double> %a0, %a1 151 ret <4 x i1> %1 152} 153 154define <8 x i1> @test_cmp_v8f32(<8 x float> %a0, <8 x float> %a1) nounwind { 155; SSE-LABEL: test_cmp_v8f32: 156; SSE: # BB#0: 157; SSE-NEXT: cmpltps %xmm1, %xmm3 158; SSE-NEXT: cmpltps %xmm0, %xmm2 159; SSE-NEXT: packsswb %xmm3, %xmm2 160; SSE-NEXT: movdqa %xmm2, %xmm0 161; SSE-NEXT: retq 162; 163; AVX1-LABEL: test_cmp_v8f32: 164; AVX1: # BB#0: 165; AVX1-NEXT: vcmpltps %ymm0, %ymm1, %ymm0 166; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 167; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 168; AVX1-NEXT: vzeroupper 169; AVX1-NEXT: retq 170; 171; AVX2-LABEL: test_cmp_v8f32: 172; AVX2: # BB#0: 173; AVX2-NEXT: vcmpltps %ymm0, %ymm1, %ymm0 174; AVX2-NEXT: vextractf128 $1, %ymm0, %xmm1 175; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 176; AVX2-NEXT: vzeroupper 177; AVX2-NEXT: retq 178; 179; AVX512-LABEL: test_cmp_v8f32: 180; AVX512: # BB#0: 181; AVX512-NEXT: vcmpltps %ymm0, %ymm1, %ymm0 182; AVX512-NEXT: vpmovdw %zmm0, %ymm0 183; AVX512-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill> 184; AVX512-NEXT: retq 185 %1 = fcmp ogt <8 x float> %a0, %a1 186 ret <8 x i1> %1 187} 188 189define <4 x i1> @test_cmp_v4i64(<4 x i64> %a0, <4 x i64> %a1) nounwind { 190; SSE2-LABEL: test_cmp_v4i64: 191; SSE2: # BB#0: 192; SSE2-NEXT: movdqa {{.*#+}} xmm4 = [2147483648,0,2147483648,0] 193; SSE2-NEXT: pxor %xmm4, %xmm3 194; SSE2-NEXT: pxor %xmm4, %xmm1 195; SSE2-NEXT: movdqa %xmm1, %xmm5 196; SSE2-NEXT: pcmpgtd %xmm3, %xmm5 197; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2] 198; SSE2-NEXT: pcmpeqd %xmm3, %xmm1 199; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3] 200; SSE2-NEXT: pand %xmm6, %xmm1 201; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm5[1,1,3,3] 202; SSE2-NEXT: por %xmm1, %xmm3 203; SSE2-NEXT: pxor %xmm4, %xmm2 204; SSE2-NEXT: pxor %xmm4, %xmm0 205; SSE2-NEXT: movdqa %xmm0, %xmm1 206; SSE2-NEXT: pcmpgtd %xmm2, %xmm1 207; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm1[0,0,2,2] 208; SSE2-NEXT: pcmpeqd %xmm2, %xmm0 209; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,3,3] 210; SSE2-NEXT: pand %xmm4, %xmm2 211; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3] 212; SSE2-NEXT: por %xmm2, %xmm0 213; SSE2-NEXT: packsswb %xmm3, %xmm0 214; SSE2-NEXT: retq 215; 216; SSE42-LABEL: test_cmp_v4i64: 217; SSE42: # BB#0: 218; SSE42-NEXT: pcmpgtq %xmm3, %xmm1 219; SSE42-NEXT: pcmpgtq %xmm2, %xmm0 220; SSE42-NEXT: packsswb %xmm1, %xmm0 221; SSE42-NEXT: retq 222; 223; AVX1-LABEL: test_cmp_v4i64: 224; AVX1: # BB#0: 225; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 226; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 227; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2 228; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm0 229; AVX1-NEXT: vpacksswb %xmm2, %xmm0, %xmm0 230; AVX1-NEXT: vzeroupper 231; AVX1-NEXT: retq 232; 233; AVX2-LABEL: test_cmp_v4i64: 234; AVX2: # BB#0: 235; AVX2-NEXT: vpcmpgtq %ymm1, %ymm0, %ymm0 236; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 237; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 238; AVX2-NEXT: vzeroupper 239; AVX2-NEXT: retq 240; 241; AVX512-LABEL: test_cmp_v4i64: 242; AVX512: # BB#0: 243; AVX512-NEXT: vpcmpgtq %ymm1, %ymm0, %ymm0 244; AVX512-NEXT: vpmovqd %zmm0, %ymm0 245; AVX512-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill> 246; AVX512-NEXT: retq 247 %1 = icmp sgt <4 x i64> %a0, %a1 248 ret <4 x i1> %1 249} 250 251define <8 x i1> @test_cmp_v8i32(<8 x i32> %a0, <8 x i32> %a1) nounwind { 252; SSE-LABEL: test_cmp_v8i32: 253; SSE: # BB#0: 254; SSE-NEXT: pcmpgtd %xmm3, %xmm1 255; SSE-NEXT: pcmpgtd %xmm2, %xmm0 256; SSE-NEXT: packsswb %xmm1, %xmm0 257; SSE-NEXT: retq 258; 259; AVX1-LABEL: test_cmp_v8i32: 260; AVX1: # BB#0: 261; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 262; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 263; AVX1-NEXT: vpcmpgtd %xmm2, %xmm3, %xmm2 264; AVX1-NEXT: vpcmpgtd %xmm1, %xmm0, %xmm0 265; AVX1-NEXT: vpacksswb %xmm2, %xmm0, %xmm0 266; AVX1-NEXT: vzeroupper 267; AVX1-NEXT: retq 268; 269; AVX2-LABEL: test_cmp_v8i32: 270; AVX2: # BB#0: 271; AVX2-NEXT: vpcmpgtd %ymm1, %ymm0, %ymm0 272; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 273; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 274; AVX2-NEXT: vzeroupper 275; AVX2-NEXT: retq 276; 277; AVX512-LABEL: test_cmp_v8i32: 278; AVX512: # BB#0: 279; AVX512-NEXT: vpcmpgtd %ymm1, %ymm0, %ymm0 280; AVX512-NEXT: vpmovdw %zmm0, %ymm0 281; AVX512-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill> 282; AVX512-NEXT: retq 283 %1 = icmp sgt <8 x i32> %a0, %a1 284 ret <8 x i1> %1 285} 286 287define <16 x i1> @test_cmp_v16i16(<16 x i16> %a0, <16 x i16> %a1) nounwind { 288; SSE-LABEL: test_cmp_v16i16: 289; SSE: # BB#0: 290; SSE-NEXT: pcmpgtw %xmm3, %xmm1 291; SSE-NEXT: pcmpgtw %xmm2, %xmm0 292; SSE-NEXT: packsswb %xmm1, %xmm0 293; SSE-NEXT: retq 294; 295; AVX1-LABEL: test_cmp_v16i16: 296; AVX1: # BB#0: 297; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 298; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 299; AVX1-NEXT: vpcmpgtw %xmm2, %xmm3, %xmm2 300; AVX1-NEXT: vpcmpgtw %xmm1, %xmm0, %xmm0 301; AVX1-NEXT: vpacksswb %xmm2, %xmm0, %xmm0 302; AVX1-NEXT: vzeroupper 303; AVX1-NEXT: retq 304; 305; AVX2-LABEL: test_cmp_v16i16: 306; AVX2: # BB#0: 307; AVX2-NEXT: vpcmpgtw %ymm1, %ymm0, %ymm0 308; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 309; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 310; AVX2-NEXT: vzeroupper 311; AVX2-NEXT: retq 312; 313; AVX512F-LABEL: test_cmp_v16i16: 314; AVX512F: # BB#0: 315; AVX512F-NEXT: vpcmpgtw %ymm1, %ymm0, %ymm0 316; AVX512F-NEXT: vpmovsxwd %ymm0, %zmm0 317; AVX512F-NEXT: vpmovdb %zmm0, %xmm0 318; AVX512F-NEXT: retq 319; 320; AVX512DQ-LABEL: test_cmp_v16i16: 321; AVX512DQ: # BB#0: 322; AVX512DQ-NEXT: vpcmpgtw %ymm1, %ymm0, %ymm0 323; AVX512DQ-NEXT: vpmovsxwd %ymm0, %zmm0 324; AVX512DQ-NEXT: vpmovdb %zmm0, %xmm0 325; AVX512DQ-NEXT: retq 326; 327; AVX512BW-LABEL: test_cmp_v16i16: 328; AVX512BW: # BB#0: 329; AVX512BW-NEXT: vpcmpgtw %ymm1, %ymm0, %ymm0 330; AVX512BW-NEXT: vpmovwb %zmm0, %ymm0 331; AVX512BW-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill> 332; AVX512BW-NEXT: retq 333 %1 = icmp sgt <16 x i16> %a0, %a1 334 ret <16 x i1> %1 335} 336 337define <32 x i1> @test_cmp_v32i8(<32 x i8> %a0, <32 x i8> %a1) nounwind { 338; SSE2-LABEL: test_cmp_v32i8: 339; SSE2: # BB#0: 340; SSE2-NEXT: pcmpgtb %xmm2, %xmm0 341; SSE2-NEXT: pcmpgtb %xmm3, %xmm1 342; SSE2-NEXT: movdqa %xmm1, -{{[0-9]+}}(%rsp) 343; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 344; SSE2-NEXT: andb $1, %al 345; SSE2-NEXT: movb %al, 2(%rdi) 346; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 347; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 348; SSE2-NEXT: andb $1, %al 349; SSE2-NEXT: movb %al, (%rdi) 350; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 351; SSE2-NEXT: andb $1, %al 352; SSE2-NEXT: movb %al, 2(%rdi) 353; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 354; SSE2-NEXT: andb $1, %al 355; SSE2-NEXT: movb %al, (%rdi) 356; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 357; SSE2-NEXT: andb $1, %al 358; SSE2-NEXT: movb %al, 2(%rdi) 359; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 360; SSE2-NEXT: andb $1, %al 361; SSE2-NEXT: movb %al, (%rdi) 362; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 363; SSE2-NEXT: andb $1, %al 364; SSE2-NEXT: movb %al, 2(%rdi) 365; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 366; SSE2-NEXT: andb $1, %al 367; SSE2-NEXT: movb %al, (%rdi) 368; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 369; SSE2-NEXT: andb $1, %al 370; SSE2-NEXT: movb %al, 2(%rdi) 371; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 372; SSE2-NEXT: andb $1, %al 373; SSE2-NEXT: movb %al, (%rdi) 374; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 375; SSE2-NEXT: andb $1, %al 376; SSE2-NEXT: movb %al, 2(%rdi) 377; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 378; SSE2-NEXT: andb $1, %al 379; SSE2-NEXT: movb %al, (%rdi) 380; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 381; SSE2-NEXT: andb $1, %al 382; SSE2-NEXT: movb %al, 2(%rdi) 383; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 384; SSE2-NEXT: andb $1, %al 385; SSE2-NEXT: movb %al, (%rdi) 386; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 387; SSE2-NEXT: andb $1, %al 388; SSE2-NEXT: movb %al, 2(%rdi) 389; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 390; SSE2-NEXT: andb $1, %al 391; SSE2-NEXT: movb %al, (%rdi) 392; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 393; SSE2-NEXT: andb $1, %al 394; SSE2-NEXT: movb %al, 2(%rdi) 395; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 396; SSE2-NEXT: andb $1, %al 397; SSE2-NEXT: movb %al, (%rdi) 398; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 399; SSE2-NEXT: andb $1, %al 400; SSE2-NEXT: movb %al, 2(%rdi) 401; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 402; SSE2-NEXT: andb $1, %al 403; SSE2-NEXT: movb %al, (%rdi) 404; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 405; SSE2-NEXT: andb $1, %al 406; SSE2-NEXT: movb %al, 2(%rdi) 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: movq %rdi, %rax 441; SSE2-NEXT: retq 442; 443; SSE42-LABEL: test_cmp_v32i8: 444; SSE42: # BB#0: 445; SSE42-NEXT: pcmpgtb %xmm2, %xmm0 446; SSE42-NEXT: pcmpgtb %xmm3, %xmm1 447; SSE42-NEXT: pextrb $15, %xmm1, %eax 448; SSE42-NEXT: andb $1, %al 449; SSE42-NEXT: movb %al, 2(%rdi) 450; SSE42-NEXT: pextrb $14, %xmm1, %eax 451; SSE42-NEXT: andb $1, %al 452; SSE42-NEXT: movb %al, 2(%rdi) 453; SSE42-NEXT: pextrb $13, %xmm1, %eax 454; SSE42-NEXT: andb $1, %al 455; SSE42-NEXT: movb %al, 2(%rdi) 456; SSE42-NEXT: pextrb $12, %xmm1, %eax 457; SSE42-NEXT: andb $1, %al 458; SSE42-NEXT: movb %al, 2(%rdi) 459; SSE42-NEXT: pextrb $11, %xmm1, %eax 460; SSE42-NEXT: andb $1, %al 461; SSE42-NEXT: movb %al, 2(%rdi) 462; SSE42-NEXT: pextrb $10, %xmm1, %eax 463; SSE42-NEXT: andb $1, %al 464; SSE42-NEXT: movb %al, 2(%rdi) 465; SSE42-NEXT: pextrb $9, %xmm1, %eax 466; SSE42-NEXT: andb $1, %al 467; SSE42-NEXT: movb %al, 2(%rdi) 468; SSE42-NEXT: pextrb $8, %xmm1, %eax 469; SSE42-NEXT: andb $1, %al 470; SSE42-NEXT: movb %al, 2(%rdi) 471; SSE42-NEXT: pextrb $7, %xmm1, %eax 472; SSE42-NEXT: andb $1, %al 473; SSE42-NEXT: movb %al, 2(%rdi) 474; SSE42-NEXT: pextrb $6, %xmm1, %eax 475; SSE42-NEXT: andb $1, %al 476; SSE42-NEXT: movb %al, 2(%rdi) 477; SSE42-NEXT: pextrb $5, %xmm1, %eax 478; SSE42-NEXT: andb $1, %al 479; SSE42-NEXT: movb %al, 2(%rdi) 480; SSE42-NEXT: pextrb $4, %xmm1, %eax 481; SSE42-NEXT: andb $1, %al 482; SSE42-NEXT: movb %al, 2(%rdi) 483; SSE42-NEXT: pextrb $3, %xmm1, %eax 484; SSE42-NEXT: andb $1, %al 485; SSE42-NEXT: movb %al, 2(%rdi) 486; SSE42-NEXT: pextrb $2, %xmm1, %eax 487; SSE42-NEXT: andb $1, %al 488; SSE42-NEXT: movb %al, 2(%rdi) 489; SSE42-NEXT: pextrb $1, %xmm1, %eax 490; SSE42-NEXT: andb $1, %al 491; SSE42-NEXT: movb %al, 2(%rdi) 492; SSE42-NEXT: pextrb $0, %xmm1, %eax 493; SSE42-NEXT: andb $1, %al 494; SSE42-NEXT: movb %al, 2(%rdi) 495; SSE42-NEXT: pextrb $15, %xmm0, %eax 496; SSE42-NEXT: andb $1, %al 497; SSE42-NEXT: movb %al, (%rdi) 498; SSE42-NEXT: pextrb $14, %xmm0, %eax 499; SSE42-NEXT: andb $1, %al 500; SSE42-NEXT: movb %al, (%rdi) 501; SSE42-NEXT: pextrb $13, %xmm0, %eax 502; SSE42-NEXT: andb $1, %al 503; SSE42-NEXT: movb %al, (%rdi) 504; SSE42-NEXT: pextrb $12, %xmm0, %eax 505; SSE42-NEXT: andb $1, %al 506; SSE42-NEXT: movb %al, (%rdi) 507; SSE42-NEXT: pextrb $11, %xmm0, %eax 508; SSE42-NEXT: andb $1, %al 509; SSE42-NEXT: movb %al, (%rdi) 510; SSE42-NEXT: pextrb $10, %xmm0, %eax 511; SSE42-NEXT: andb $1, %al 512; SSE42-NEXT: movb %al, (%rdi) 513; SSE42-NEXT: pextrb $9, %xmm0, %eax 514; SSE42-NEXT: andb $1, %al 515; SSE42-NEXT: movb %al, (%rdi) 516; SSE42-NEXT: pextrb $8, %xmm0, %eax 517; SSE42-NEXT: andb $1, %al 518; SSE42-NEXT: movb %al, (%rdi) 519; SSE42-NEXT: pextrb $7, %xmm0, %eax 520; SSE42-NEXT: andb $1, %al 521; SSE42-NEXT: movb %al, (%rdi) 522; SSE42-NEXT: pextrb $6, %xmm0, %eax 523; SSE42-NEXT: andb $1, %al 524; SSE42-NEXT: movb %al, (%rdi) 525; SSE42-NEXT: pextrb $5, %xmm0, %eax 526; SSE42-NEXT: andb $1, %al 527; SSE42-NEXT: movb %al, (%rdi) 528; SSE42-NEXT: pextrb $4, %xmm0, %eax 529; SSE42-NEXT: andb $1, %al 530; SSE42-NEXT: movb %al, (%rdi) 531; SSE42-NEXT: pextrb $3, %xmm0, %eax 532; SSE42-NEXT: andb $1, %al 533; SSE42-NEXT: movb %al, (%rdi) 534; SSE42-NEXT: pextrb $2, %xmm0, %eax 535; SSE42-NEXT: andb $1, %al 536; SSE42-NEXT: movb %al, (%rdi) 537; SSE42-NEXT: pextrb $1, %xmm0, %eax 538; SSE42-NEXT: andb $1, %al 539; SSE42-NEXT: movb %al, (%rdi) 540; SSE42-NEXT: pextrb $0, %xmm0, %eax 541; SSE42-NEXT: andb $1, %al 542; SSE42-NEXT: movb %al, (%rdi) 543; SSE42-NEXT: movq %rdi, %rax 544; SSE42-NEXT: retq 545; 546; AVX1-LABEL: test_cmp_v32i8: 547; AVX1: # BB#0: 548; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 549; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 550; AVX1-NEXT: vpcmpgtb %xmm2, %xmm3, %xmm2 551; AVX1-NEXT: vpcmpgtb %xmm1, %xmm0, %xmm0 552; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 553; AVX1-NEXT: retq 554; 555; AVX2-LABEL: test_cmp_v32i8: 556; AVX2: # BB#0: 557; AVX2-NEXT: vpcmpgtb %ymm1, %ymm0, %ymm0 558; AVX2-NEXT: retq 559; 560; AVX512-LABEL: test_cmp_v32i8: 561; AVX512: # BB#0: 562; AVX512-NEXT: vpcmpgtb %ymm1, %ymm0, %ymm0 563; AVX512-NEXT: retq 564 %1 = icmp sgt <32 x i8> %a0, %a1 565 ret <32 x i1> %1 566} 567 568; 569; 512-bit vector comparisons 570; 571 572define <8 x i1> @test_cmp_v8f64(<8 x double> %a0, <8 x double> %a1) nounwind { 573; SSE-LABEL: test_cmp_v8f64: 574; SSE: # BB#0: 575; SSE-NEXT: cmpltpd %xmm3, %xmm7 576; SSE-NEXT: cmpltpd %xmm2, %xmm6 577; SSE-NEXT: packsswb %xmm7, %xmm6 578; SSE-NEXT: cmpltpd %xmm1, %xmm5 579; SSE-NEXT: cmpltpd %xmm0, %xmm4 580; SSE-NEXT: packsswb %xmm5, %xmm4 581; SSE-NEXT: packsswb %xmm6, %xmm4 582; SSE-NEXT: movdqa %xmm4, %xmm0 583; SSE-NEXT: retq 584; 585; AVX1-LABEL: test_cmp_v8f64: 586; AVX1: # BB#0: 587; AVX1-NEXT: vcmpltpd %ymm1, %ymm3, %ymm1 588; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 589; AVX1-NEXT: vpacksswb %xmm3, %xmm1, %xmm1 590; AVX1-NEXT: vcmpltpd %ymm0, %ymm2, %ymm0 591; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 592; AVX1-NEXT: vpacksswb %xmm2, %xmm0, %xmm0 593; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 594; AVX1-NEXT: vzeroupper 595; AVX1-NEXT: retq 596; 597; AVX2-LABEL: test_cmp_v8f64: 598; AVX2: # BB#0: 599; AVX2-NEXT: vcmpltpd %ymm1, %ymm3, %ymm1 600; AVX2-NEXT: vcmpltpd %ymm0, %ymm2, %ymm0 601; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 602; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 603; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 604; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 605; AVX2-NEXT: vzeroupper 606; AVX2-NEXT: retq 607; 608; AVX512F-LABEL: test_cmp_v8f64: 609; AVX512F: # BB#0: 610; AVX512F-NEXT: vcmpltpd %zmm0, %zmm1, %k1 611; AVX512F-NEXT: vpternlogq $255, %zmm0, %zmm0, %zmm0 {%k1} {z} 612; AVX512F-NEXT: vpmovqw %zmm0, %xmm0 613; AVX512F-NEXT: retq 614; 615; AVX512DQ-LABEL: test_cmp_v8f64: 616; AVX512DQ: # BB#0: 617; AVX512DQ-NEXT: vcmpltpd %zmm0, %zmm1, %k0 618; AVX512DQ-NEXT: vpmovm2q %k0, %zmm0 619; AVX512DQ-NEXT: vpmovqw %zmm0, %xmm0 620; AVX512DQ-NEXT: retq 621; 622; AVX512BW-LABEL: test_cmp_v8f64: 623; AVX512BW: # BB#0: 624; AVX512BW-NEXT: vcmpltpd %zmm0, %zmm1, %k1 625; AVX512BW-NEXT: vpternlogq $255, %zmm0, %zmm0, %zmm0 {%k1} {z} 626; AVX512BW-NEXT: vpmovqw %zmm0, %xmm0 627; AVX512BW-NEXT: retq 628 %1 = fcmp ogt <8 x double> %a0, %a1 629 ret <8 x i1> %1 630} 631 632define <16 x i1> @test_cmp_v16f32(<16 x float> %a0, <16 x float> %a1) nounwind { 633; SSE-LABEL: test_cmp_v16f32: 634; SSE: # BB#0: 635; SSE-NEXT: cmpltps %xmm3, %xmm7 636; SSE-NEXT: cmpltps %xmm2, %xmm6 637; SSE-NEXT: packsswb %xmm7, %xmm6 638; SSE-NEXT: cmpltps %xmm1, %xmm5 639; SSE-NEXT: cmpltps %xmm0, %xmm4 640; SSE-NEXT: packsswb %xmm5, %xmm4 641; SSE-NEXT: packsswb %xmm6, %xmm4 642; SSE-NEXT: movdqa %xmm4, %xmm0 643; SSE-NEXT: retq 644; 645; AVX1-LABEL: test_cmp_v16f32: 646; AVX1: # BB#0: 647; AVX1-NEXT: vcmpltps %ymm1, %ymm3, %ymm1 648; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 649; AVX1-NEXT: vpacksswb %xmm3, %xmm1, %xmm1 650; AVX1-NEXT: vcmpltps %ymm0, %ymm2, %ymm0 651; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 652; AVX1-NEXT: vpacksswb %xmm2, %xmm0, %xmm0 653; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 654; AVX1-NEXT: vzeroupper 655; AVX1-NEXT: retq 656; 657; AVX2-LABEL: test_cmp_v16f32: 658; AVX2: # BB#0: 659; AVX2-NEXT: vcmpltps %ymm1, %ymm3, %ymm1 660; AVX2-NEXT: vcmpltps %ymm0, %ymm2, %ymm0 661; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 662; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 663; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 664; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 665; AVX2-NEXT: vzeroupper 666; AVX2-NEXT: retq 667; 668; AVX512F-LABEL: test_cmp_v16f32: 669; AVX512F: # BB#0: 670; AVX512F-NEXT: vcmpltps %zmm0, %zmm1, %k1 671; AVX512F-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z} 672; AVX512F-NEXT: vpmovdb %zmm0, %xmm0 673; AVX512F-NEXT: retq 674; 675; AVX512DQ-LABEL: test_cmp_v16f32: 676; AVX512DQ: # BB#0: 677; AVX512DQ-NEXT: vcmpltps %zmm0, %zmm1, %k0 678; AVX512DQ-NEXT: vpmovm2d %k0, %zmm0 679; AVX512DQ-NEXT: vpmovdb %zmm0, %xmm0 680; AVX512DQ-NEXT: retq 681; 682; AVX512BW-LABEL: test_cmp_v16f32: 683; AVX512BW: # BB#0: 684; AVX512BW-NEXT: vcmpltps %zmm0, %zmm1, %k1 685; AVX512BW-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z} 686; AVX512BW-NEXT: vpmovdb %zmm0, %xmm0 687; AVX512BW-NEXT: retq 688 %1 = fcmp ogt <16 x float> %a0, %a1 689 ret <16 x i1> %1 690} 691 692define <8 x i1> @test_cmp_v8i64(<8 x i64> %a0, <8 x i64> %a1) nounwind { 693; SSE2-LABEL: test_cmp_v8i64: 694; SSE2: # BB#0: 695; SSE2-NEXT: movdqa {{.*#+}} xmm8 = [2147483648,0,2147483648,0] 696; SSE2-NEXT: pxor %xmm8, %xmm7 697; SSE2-NEXT: pxor %xmm8, %xmm3 698; SSE2-NEXT: movdqa %xmm3, %xmm9 699; SSE2-NEXT: pcmpgtd %xmm7, %xmm9 700; SSE2-NEXT: pshufd {{.*#+}} xmm10 = xmm9[0,0,2,2] 701; SSE2-NEXT: pcmpeqd %xmm7, %xmm3 702; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3] 703; SSE2-NEXT: pand %xmm10, %xmm3 704; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm9[1,1,3,3] 705; SSE2-NEXT: por %xmm3, %xmm7 706; SSE2-NEXT: pxor %xmm8, %xmm6 707; SSE2-NEXT: pxor %xmm8, %xmm2 708; SSE2-NEXT: movdqa %xmm2, %xmm3 709; SSE2-NEXT: pcmpgtd %xmm6, %xmm3 710; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm3[0,0,2,2] 711; SSE2-NEXT: pcmpeqd %xmm6, %xmm2 712; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm2[1,1,3,3] 713; SSE2-NEXT: pand %xmm9, %xmm6 714; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm3[1,1,3,3] 715; SSE2-NEXT: por %xmm6, %xmm2 716; SSE2-NEXT: packsswb %xmm7, %xmm2 717; SSE2-NEXT: pxor %xmm8, %xmm5 718; SSE2-NEXT: pxor %xmm8, %xmm1 719; SSE2-NEXT: movdqa %xmm1, %xmm3 720; SSE2-NEXT: pcmpgtd %xmm5, %xmm3 721; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm3[0,0,2,2] 722; SSE2-NEXT: pcmpeqd %xmm5, %xmm1 723; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3] 724; SSE2-NEXT: pand %xmm6, %xmm1 725; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3] 726; SSE2-NEXT: por %xmm1, %xmm3 727; SSE2-NEXT: pxor %xmm8, %xmm4 728; SSE2-NEXT: pxor %xmm8, %xmm0 729; SSE2-NEXT: movdqa %xmm0, %xmm1 730; SSE2-NEXT: pcmpgtd %xmm4, %xmm1 731; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm1[0,0,2,2] 732; SSE2-NEXT: pcmpeqd %xmm4, %xmm0 733; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,1,3,3] 734; SSE2-NEXT: pand %xmm5, %xmm4 735; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3] 736; SSE2-NEXT: por %xmm4, %xmm0 737; SSE2-NEXT: packsswb %xmm3, %xmm0 738; SSE2-NEXT: packsswb %xmm2, %xmm0 739; SSE2-NEXT: retq 740; 741; SSE42-LABEL: test_cmp_v8i64: 742; SSE42: # BB#0: 743; SSE42-NEXT: pcmpgtq %xmm7, %xmm3 744; SSE42-NEXT: pcmpgtq %xmm6, %xmm2 745; SSE42-NEXT: packsswb %xmm3, %xmm2 746; SSE42-NEXT: pcmpgtq %xmm5, %xmm1 747; SSE42-NEXT: pcmpgtq %xmm4, %xmm0 748; SSE42-NEXT: packsswb %xmm1, %xmm0 749; SSE42-NEXT: packsswb %xmm2, %xmm0 750; SSE42-NEXT: retq 751; 752; AVX1-LABEL: test_cmp_v8i64: 753; AVX1: # BB#0: 754; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4 755; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5 756; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4 757; AVX1-NEXT: vpcmpgtq %xmm3, %xmm1, %xmm1 758; AVX1-NEXT: vpacksswb %xmm4, %xmm1, %xmm1 759; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm3 760; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4 761; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm3 762; AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm0 763; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 764; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 765; AVX1-NEXT: vzeroupper 766; AVX1-NEXT: retq 767; 768; AVX2-LABEL: test_cmp_v8i64: 769; AVX2: # BB#0: 770; AVX2-NEXT: vpcmpgtq %ymm3, %ymm1, %ymm1 771; AVX2-NEXT: vpcmpgtq %ymm2, %ymm0, %ymm0 772; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 773; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 774; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 775; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 776; AVX2-NEXT: vzeroupper 777; AVX2-NEXT: retq 778; 779; AVX512F-LABEL: test_cmp_v8i64: 780; AVX512F: # BB#0: 781; AVX512F-NEXT: vpcmpgtq %zmm1, %zmm0, %k1 782; AVX512F-NEXT: vpternlogq $255, %zmm0, %zmm0, %zmm0 {%k1} {z} 783; AVX512F-NEXT: vpmovqw %zmm0, %xmm0 784; AVX512F-NEXT: retq 785; 786; AVX512DQ-LABEL: test_cmp_v8i64: 787; AVX512DQ: # BB#0: 788; AVX512DQ-NEXT: vpcmpgtq %zmm1, %zmm0, %k0 789; AVX512DQ-NEXT: vpmovm2q %k0, %zmm0 790; AVX512DQ-NEXT: vpmovqw %zmm0, %xmm0 791; AVX512DQ-NEXT: retq 792; 793; AVX512BW-LABEL: test_cmp_v8i64: 794; AVX512BW: # BB#0: 795; AVX512BW-NEXT: vpcmpgtq %zmm1, %zmm0, %k1 796; AVX512BW-NEXT: vpternlogq $255, %zmm0, %zmm0, %zmm0 {%k1} {z} 797; AVX512BW-NEXT: vpmovqw %zmm0, %xmm0 798; AVX512BW-NEXT: retq 799 %1 = icmp sgt <8 x i64> %a0, %a1 800 ret <8 x i1> %1 801} 802 803define <16 x i1> @test_cmp_v16i32(<16 x i32> %a0, <16 x i32> %a1) nounwind { 804; SSE-LABEL: test_cmp_v16i32: 805; SSE: # BB#0: 806; SSE-NEXT: pcmpgtd %xmm7, %xmm3 807; SSE-NEXT: pcmpgtd %xmm6, %xmm2 808; SSE-NEXT: packsswb %xmm3, %xmm2 809; SSE-NEXT: pcmpgtd %xmm5, %xmm1 810; SSE-NEXT: pcmpgtd %xmm4, %xmm0 811; SSE-NEXT: packsswb %xmm1, %xmm0 812; SSE-NEXT: packsswb %xmm2, %xmm0 813; SSE-NEXT: retq 814; 815; AVX1-LABEL: test_cmp_v16i32: 816; AVX1: # BB#0: 817; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4 818; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5 819; AVX1-NEXT: vpcmpgtd %xmm4, %xmm5, %xmm4 820; AVX1-NEXT: vpcmpgtd %xmm3, %xmm1, %xmm1 821; AVX1-NEXT: vpacksswb %xmm4, %xmm1, %xmm1 822; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm3 823; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4 824; AVX1-NEXT: vpcmpgtd %xmm3, %xmm4, %xmm3 825; AVX1-NEXT: vpcmpgtd %xmm2, %xmm0, %xmm0 826; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 827; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 828; AVX1-NEXT: vzeroupper 829; AVX1-NEXT: retq 830; 831; AVX2-LABEL: test_cmp_v16i32: 832; AVX2: # BB#0: 833; AVX2-NEXT: vpcmpgtd %ymm3, %ymm1, %ymm1 834; AVX2-NEXT: vpcmpgtd %ymm2, %ymm0, %ymm0 835; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 836; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 837; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 838; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 839; AVX2-NEXT: vzeroupper 840; AVX2-NEXT: retq 841; 842; AVX512F-LABEL: test_cmp_v16i32: 843; AVX512F: # BB#0: 844; AVX512F-NEXT: vpcmpgtd %zmm1, %zmm0, %k1 845; AVX512F-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z} 846; AVX512F-NEXT: vpmovdb %zmm0, %xmm0 847; AVX512F-NEXT: retq 848; 849; AVX512DQ-LABEL: test_cmp_v16i32: 850; AVX512DQ: # BB#0: 851; AVX512DQ-NEXT: vpcmpgtd %zmm1, %zmm0, %k0 852; AVX512DQ-NEXT: vpmovm2d %k0, %zmm0 853; AVX512DQ-NEXT: vpmovdb %zmm0, %xmm0 854; AVX512DQ-NEXT: retq 855; 856; AVX512BW-LABEL: test_cmp_v16i32: 857; AVX512BW: # BB#0: 858; AVX512BW-NEXT: vpcmpgtd %zmm1, %zmm0, %k1 859; AVX512BW-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z} 860; AVX512BW-NEXT: vpmovdb %zmm0, %xmm0 861; AVX512BW-NEXT: retq 862 %1 = icmp sgt <16 x i32> %a0, %a1 863 ret <16 x i1> %1 864} 865 866define <32 x i1> @test_cmp_v32i16(<32 x i16> %a0, <32 x i16> %a1) nounwind { 867; SSE2-LABEL: test_cmp_v32i16: 868; SSE2: # BB#0: 869; SSE2-NEXT: pcmpgtw %xmm5, %xmm1 870; SSE2-NEXT: movdqa {{.*#+}} xmm5 = [255,255,255,255,255,255,255,255] 871; SSE2-NEXT: pand %xmm5, %xmm1 872; SSE2-NEXT: pcmpgtw %xmm4, %xmm0 873; SSE2-NEXT: pand %xmm5, %xmm0 874; SSE2-NEXT: packuswb %xmm1, %xmm0 875; SSE2-NEXT: pcmpgtw %xmm7, %xmm3 876; SSE2-NEXT: pand %xmm5, %xmm3 877; SSE2-NEXT: pcmpgtw %xmm6, %xmm2 878; SSE2-NEXT: pand %xmm5, %xmm2 879; SSE2-NEXT: packuswb %xmm3, %xmm2 880; SSE2-NEXT: movdqa %xmm2, -{{[0-9]+}}(%rsp) 881; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 882; SSE2-NEXT: andb $1, %al 883; SSE2-NEXT: movb %al, 2(%rdi) 884; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 885; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 886; SSE2-NEXT: andb $1, %al 887; SSE2-NEXT: movb %al, (%rdi) 888; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 889; SSE2-NEXT: andb $1, %al 890; SSE2-NEXT: movb %al, 2(%rdi) 891; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 892; SSE2-NEXT: andb $1, %al 893; SSE2-NEXT: movb %al, (%rdi) 894; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 895; SSE2-NEXT: andb $1, %al 896; SSE2-NEXT: movb %al, 2(%rdi) 897; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 898; SSE2-NEXT: andb $1, %al 899; SSE2-NEXT: movb %al, (%rdi) 900; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 901; SSE2-NEXT: andb $1, %al 902; SSE2-NEXT: movb %al, 2(%rdi) 903; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 904; SSE2-NEXT: andb $1, %al 905; SSE2-NEXT: movb %al, (%rdi) 906; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 907; SSE2-NEXT: andb $1, %al 908; SSE2-NEXT: movb %al, 2(%rdi) 909; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 910; SSE2-NEXT: andb $1, %al 911; SSE2-NEXT: movb %al, (%rdi) 912; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 913; SSE2-NEXT: andb $1, %al 914; SSE2-NEXT: movb %al, 2(%rdi) 915; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 916; SSE2-NEXT: andb $1, %al 917; SSE2-NEXT: movb %al, (%rdi) 918; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 919; SSE2-NEXT: andb $1, %al 920; SSE2-NEXT: movb %al, 2(%rdi) 921; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 922; SSE2-NEXT: andb $1, %al 923; SSE2-NEXT: movb %al, (%rdi) 924; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 925; SSE2-NEXT: andb $1, %al 926; SSE2-NEXT: movb %al, 2(%rdi) 927; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 928; SSE2-NEXT: andb $1, %al 929; SSE2-NEXT: movb %al, (%rdi) 930; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 931; SSE2-NEXT: andb $1, %al 932; SSE2-NEXT: movb %al, 2(%rdi) 933; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 934; SSE2-NEXT: andb $1, %al 935; SSE2-NEXT: movb %al, (%rdi) 936; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 937; SSE2-NEXT: andb $1, %al 938; SSE2-NEXT: movb %al, 2(%rdi) 939; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 940; SSE2-NEXT: andb $1, %al 941; SSE2-NEXT: movb %al, (%rdi) 942; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 943; SSE2-NEXT: andb $1, %al 944; SSE2-NEXT: movb %al, 2(%rdi) 945; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 946; SSE2-NEXT: andb $1, %al 947; SSE2-NEXT: movb %al, (%rdi) 948; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 949; SSE2-NEXT: andb $1, %al 950; SSE2-NEXT: movb %al, 2(%rdi) 951; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 952; SSE2-NEXT: andb $1, %al 953; SSE2-NEXT: movb %al, (%rdi) 954; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 955; SSE2-NEXT: andb $1, %al 956; SSE2-NEXT: movb %al, 2(%rdi) 957; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 958; SSE2-NEXT: andb $1, %al 959; SSE2-NEXT: movb %al, (%rdi) 960; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 961; SSE2-NEXT: andb $1, %al 962; SSE2-NEXT: movb %al, 2(%rdi) 963; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 964; SSE2-NEXT: andb $1, %al 965; SSE2-NEXT: movb %al, (%rdi) 966; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 967; SSE2-NEXT: andb $1, %al 968; SSE2-NEXT: movb %al, 2(%rdi) 969; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 970; SSE2-NEXT: andb $1, %al 971; SSE2-NEXT: movb %al, (%rdi) 972; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 973; SSE2-NEXT: andb $1, %al 974; SSE2-NEXT: movb %al, 2(%rdi) 975; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 976; SSE2-NEXT: andb $1, %al 977; SSE2-NEXT: movb %al, (%rdi) 978; SSE2-NEXT: movq %rdi, %rax 979; SSE2-NEXT: retq 980; 981; SSE42-LABEL: test_cmp_v32i16: 982; SSE42: # BB#0: 983; SSE42-NEXT: pcmpgtw %xmm5, %xmm1 984; SSE42-NEXT: movdqa {{.*#+}} xmm5 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u> 985; SSE42-NEXT: pshufb %xmm5, %xmm1 986; SSE42-NEXT: pcmpgtw %xmm4, %xmm0 987; SSE42-NEXT: pshufb %xmm5, %xmm0 988; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 989; SSE42-NEXT: pcmpgtw %xmm7, %xmm3 990; SSE42-NEXT: pshufb %xmm5, %xmm3 991; SSE42-NEXT: pcmpgtw %xmm6, %xmm2 992; SSE42-NEXT: pshufb %xmm5, %xmm2 993; SSE42-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0] 994; SSE42-NEXT: pextrb $15, %xmm2, %eax 995; SSE42-NEXT: andb $1, %al 996; SSE42-NEXT: movb %al, 2(%rdi) 997; SSE42-NEXT: pextrb $14, %xmm2, %eax 998; SSE42-NEXT: andb $1, %al 999; SSE42-NEXT: movb %al, 2(%rdi) 1000; SSE42-NEXT: pextrb $13, %xmm2, %eax 1001; SSE42-NEXT: andb $1, %al 1002; SSE42-NEXT: movb %al, 2(%rdi) 1003; SSE42-NEXT: pextrb $12, %xmm2, %eax 1004; SSE42-NEXT: andb $1, %al 1005; SSE42-NEXT: movb %al, 2(%rdi) 1006; SSE42-NEXT: pextrb $11, %xmm2, %eax 1007; SSE42-NEXT: andb $1, %al 1008; SSE42-NEXT: movb %al, 2(%rdi) 1009; SSE42-NEXT: pextrb $10, %xmm2, %eax 1010; SSE42-NEXT: andb $1, %al 1011; SSE42-NEXT: movb %al, 2(%rdi) 1012; SSE42-NEXT: pextrb $9, %xmm2, %eax 1013; SSE42-NEXT: andb $1, %al 1014; SSE42-NEXT: movb %al, 2(%rdi) 1015; SSE42-NEXT: pextrb $8, %xmm2, %eax 1016; SSE42-NEXT: andb $1, %al 1017; SSE42-NEXT: movb %al, 2(%rdi) 1018; SSE42-NEXT: pextrb $7, %xmm2, %eax 1019; SSE42-NEXT: andb $1, %al 1020; SSE42-NEXT: movb %al, 2(%rdi) 1021; SSE42-NEXT: pextrb $6, %xmm2, %eax 1022; SSE42-NEXT: andb $1, %al 1023; SSE42-NEXT: movb %al, 2(%rdi) 1024; SSE42-NEXT: pextrb $5, %xmm2, %eax 1025; SSE42-NEXT: andb $1, %al 1026; SSE42-NEXT: movb %al, 2(%rdi) 1027; SSE42-NEXT: pextrb $4, %xmm2, %eax 1028; SSE42-NEXT: andb $1, %al 1029; SSE42-NEXT: movb %al, 2(%rdi) 1030; SSE42-NEXT: pextrb $3, %xmm2, %eax 1031; SSE42-NEXT: andb $1, %al 1032; SSE42-NEXT: movb %al, 2(%rdi) 1033; SSE42-NEXT: pextrb $2, %xmm2, %eax 1034; SSE42-NEXT: andb $1, %al 1035; SSE42-NEXT: movb %al, 2(%rdi) 1036; SSE42-NEXT: pextrb $1, %xmm2, %eax 1037; SSE42-NEXT: andb $1, %al 1038; SSE42-NEXT: movb %al, 2(%rdi) 1039; SSE42-NEXT: pextrb $0, %xmm2, %eax 1040; SSE42-NEXT: andb $1, %al 1041; SSE42-NEXT: movb %al, 2(%rdi) 1042; SSE42-NEXT: pextrb $15, %xmm0, %eax 1043; SSE42-NEXT: andb $1, %al 1044; SSE42-NEXT: movb %al, (%rdi) 1045; SSE42-NEXT: pextrb $14, %xmm0, %eax 1046; SSE42-NEXT: andb $1, %al 1047; SSE42-NEXT: movb %al, (%rdi) 1048; SSE42-NEXT: pextrb $13, %xmm0, %eax 1049; SSE42-NEXT: andb $1, %al 1050; SSE42-NEXT: movb %al, (%rdi) 1051; SSE42-NEXT: pextrb $12, %xmm0, %eax 1052; SSE42-NEXT: andb $1, %al 1053; SSE42-NEXT: movb %al, (%rdi) 1054; SSE42-NEXT: pextrb $11, %xmm0, %eax 1055; SSE42-NEXT: andb $1, %al 1056; SSE42-NEXT: movb %al, (%rdi) 1057; SSE42-NEXT: pextrb $10, %xmm0, %eax 1058; SSE42-NEXT: andb $1, %al 1059; SSE42-NEXT: movb %al, (%rdi) 1060; SSE42-NEXT: pextrb $9, %xmm0, %eax 1061; SSE42-NEXT: andb $1, %al 1062; SSE42-NEXT: movb %al, (%rdi) 1063; SSE42-NEXT: pextrb $8, %xmm0, %eax 1064; SSE42-NEXT: andb $1, %al 1065; SSE42-NEXT: movb %al, (%rdi) 1066; SSE42-NEXT: pextrb $7, %xmm0, %eax 1067; SSE42-NEXT: andb $1, %al 1068; SSE42-NEXT: movb %al, (%rdi) 1069; SSE42-NEXT: pextrb $6, %xmm0, %eax 1070; SSE42-NEXT: andb $1, %al 1071; SSE42-NEXT: movb %al, (%rdi) 1072; SSE42-NEXT: pextrb $5, %xmm0, %eax 1073; SSE42-NEXT: andb $1, %al 1074; SSE42-NEXT: movb %al, (%rdi) 1075; SSE42-NEXT: pextrb $4, %xmm0, %eax 1076; SSE42-NEXT: andb $1, %al 1077; SSE42-NEXT: movb %al, (%rdi) 1078; SSE42-NEXT: pextrb $3, %xmm0, %eax 1079; SSE42-NEXT: andb $1, %al 1080; SSE42-NEXT: movb %al, (%rdi) 1081; SSE42-NEXT: pextrb $2, %xmm0, %eax 1082; SSE42-NEXT: andb $1, %al 1083; SSE42-NEXT: movb %al, (%rdi) 1084; SSE42-NEXT: pextrb $1, %xmm0, %eax 1085; SSE42-NEXT: andb $1, %al 1086; SSE42-NEXT: movb %al, (%rdi) 1087; SSE42-NEXT: pextrb $0, %xmm0, %eax 1088; SSE42-NEXT: andb $1, %al 1089; SSE42-NEXT: movb %al, (%rdi) 1090; SSE42-NEXT: movq %rdi, %rax 1091; SSE42-NEXT: retq 1092; 1093; AVX1-LABEL: test_cmp_v32i16: 1094; AVX1: # BB#0: 1095; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4 1096; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5 1097; AVX1-NEXT: vpcmpgtw %xmm4, %xmm5, %xmm4 1098; AVX1-NEXT: vpcmpgtw %xmm3, %xmm1, %xmm1 1099; AVX1-NEXT: vpacksswb %xmm4, %xmm1, %xmm1 1100; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm3 1101; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4 1102; AVX1-NEXT: vpcmpgtw %xmm3, %xmm4, %xmm3 1103; AVX1-NEXT: vpcmpgtw %xmm2, %xmm0, %xmm0 1104; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 1105; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1106; AVX1-NEXT: retq 1107; 1108; AVX2-LABEL: test_cmp_v32i16: 1109; AVX2: # BB#0: 1110; AVX2-NEXT: vpcmpgtw %ymm3, %ymm1, %ymm1 1111; AVX2-NEXT: vpcmpgtw %ymm2, %ymm0, %ymm0 1112; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 1113; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 1114; AVX2-NEXT: retq 1115; 1116; AVX512F-LABEL: test_cmp_v32i16: 1117; AVX512F: # BB#0: 1118; AVX512F-NEXT: vpcmpgtw %ymm2, %ymm0, %ymm0 1119; AVX512F-NEXT: vpmovsxwd %ymm0, %zmm0 1120; AVX512F-NEXT: vpmovdb %zmm0, %xmm0 1121; AVX512F-NEXT: vpcmpgtw %ymm3, %ymm1, %ymm1 1122; AVX512F-NEXT: vpmovsxwd %ymm1, %zmm1 1123; AVX512F-NEXT: vpmovdb %zmm1, %xmm1 1124; AVX512F-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 1125; AVX512F-NEXT: retq 1126; 1127; AVX512DQ-LABEL: test_cmp_v32i16: 1128; AVX512DQ: # BB#0: 1129; AVX512DQ-NEXT: vpcmpgtw %ymm2, %ymm0, %ymm0 1130; AVX512DQ-NEXT: vpmovsxwd %ymm0, %zmm0 1131; AVX512DQ-NEXT: vpmovdb %zmm0, %xmm0 1132; AVX512DQ-NEXT: vpcmpgtw %ymm3, %ymm1, %ymm1 1133; AVX512DQ-NEXT: vpmovsxwd %ymm1, %zmm1 1134; AVX512DQ-NEXT: vpmovdb %zmm1, %xmm1 1135; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 1136; AVX512DQ-NEXT: retq 1137; 1138; AVX512BW-LABEL: test_cmp_v32i16: 1139; AVX512BW: # BB#0: 1140; AVX512BW-NEXT: vpcmpgtw %zmm1, %zmm0, %k1 1141; AVX512BW-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 1142; AVX512BW-NEXT: vmovdqu16 %zmm0, %zmm0 {%k1} {z} 1143; AVX512BW-NEXT: vpmovwb %zmm0, %ymm0 1144; AVX512BW-NEXT: retq 1145 %1 = icmp sgt <32 x i16> %a0, %a1 1146 ret <32 x i1> %1 1147} 1148 1149define <64 x i1> @test_cmp_v64i8(<64 x i8> %a0, <64 x i8> %a1) nounwind { 1150; SSE2-LABEL: test_cmp_v64i8: 1151; SSE2: # BB#0: 1152; SSE2-NEXT: pcmpgtb %xmm4, %xmm0 1153; SSE2-NEXT: pcmpgtb %xmm5, %xmm1 1154; SSE2-NEXT: pcmpgtb %xmm6, %xmm2 1155; SSE2-NEXT: pcmpgtb %xmm7, %xmm3 1156; SSE2-NEXT: movdqa %xmm3, -{{[0-9]+}}(%rsp) 1157; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1158; SSE2-NEXT: andb $1, %al 1159; SSE2-NEXT: movb %al, 6(%rdi) 1160; SSE2-NEXT: movdqa %xmm2, -{{[0-9]+}}(%rsp) 1161; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1162; SSE2-NEXT: andb $1, %al 1163; SSE2-NEXT: movb %al, 4(%rdi) 1164; SSE2-NEXT: movdqa %xmm1, -{{[0-9]+}}(%rsp) 1165; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1166; SSE2-NEXT: andb $1, %al 1167; SSE2-NEXT: movb %al, 2(%rdi) 1168; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 1169; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1170; SSE2-NEXT: andb $1, %al 1171; SSE2-NEXT: movb %al, (%rdi) 1172; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1173; SSE2-NEXT: andb $1, %al 1174; SSE2-NEXT: movb %al, 6(%rdi) 1175; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1176; SSE2-NEXT: andb $1, %al 1177; SSE2-NEXT: movb %al, 4(%rdi) 1178; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1179; SSE2-NEXT: andb $1, %al 1180; SSE2-NEXT: movb %al, 2(%rdi) 1181; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1182; SSE2-NEXT: andb $1, %al 1183; SSE2-NEXT: movb %al, (%rdi) 1184; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1185; SSE2-NEXT: andb $1, %al 1186; SSE2-NEXT: movb %al, 6(%rdi) 1187; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1188; SSE2-NEXT: andb $1, %al 1189; SSE2-NEXT: movb %al, 4(%rdi) 1190; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1191; SSE2-NEXT: andb $1, %al 1192; SSE2-NEXT: movb %al, 2(%rdi) 1193; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1194; SSE2-NEXT: andb $1, %al 1195; SSE2-NEXT: movb %al, (%rdi) 1196; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1197; SSE2-NEXT: andb $1, %al 1198; SSE2-NEXT: movb %al, 6(%rdi) 1199; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1200; SSE2-NEXT: andb $1, %al 1201; SSE2-NEXT: movb %al, 4(%rdi) 1202; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1203; SSE2-NEXT: andb $1, %al 1204; SSE2-NEXT: movb %al, 2(%rdi) 1205; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1206; SSE2-NEXT: andb $1, %al 1207; SSE2-NEXT: movb %al, (%rdi) 1208; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1209; SSE2-NEXT: andb $1, %al 1210; SSE2-NEXT: movb %al, 6(%rdi) 1211; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1212; SSE2-NEXT: andb $1, %al 1213; SSE2-NEXT: movb %al, 4(%rdi) 1214; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1215; SSE2-NEXT: andb $1, %al 1216; SSE2-NEXT: movb %al, 2(%rdi) 1217; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1218; SSE2-NEXT: andb $1, %al 1219; SSE2-NEXT: movb %al, (%rdi) 1220; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1221; SSE2-NEXT: andb $1, %al 1222; SSE2-NEXT: movb %al, 6(%rdi) 1223; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1224; SSE2-NEXT: andb $1, %al 1225; SSE2-NEXT: movb %al, 4(%rdi) 1226; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1227; SSE2-NEXT: andb $1, %al 1228; SSE2-NEXT: movb %al, 2(%rdi) 1229; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1230; SSE2-NEXT: andb $1, %al 1231; SSE2-NEXT: movb %al, (%rdi) 1232; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1233; SSE2-NEXT: andb $1, %al 1234; SSE2-NEXT: movb %al, 6(%rdi) 1235; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1236; SSE2-NEXT: andb $1, %al 1237; SSE2-NEXT: movb %al, 4(%rdi) 1238; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1239; SSE2-NEXT: andb $1, %al 1240; SSE2-NEXT: movb %al, 2(%rdi) 1241; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1242; SSE2-NEXT: andb $1, %al 1243; SSE2-NEXT: movb %al, (%rdi) 1244; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1245; SSE2-NEXT: andb $1, %al 1246; SSE2-NEXT: movb %al, 6(%rdi) 1247; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1248; SSE2-NEXT: andb $1, %al 1249; SSE2-NEXT: movb %al, 4(%rdi) 1250; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1251; SSE2-NEXT: andb $1, %al 1252; SSE2-NEXT: movb %al, 2(%rdi) 1253; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1254; SSE2-NEXT: andb $1, %al 1255; SSE2-NEXT: movb %al, (%rdi) 1256; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1257; SSE2-NEXT: andb $1, %al 1258; SSE2-NEXT: movb %al, 6(%rdi) 1259; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1260; SSE2-NEXT: andb $1, %al 1261; SSE2-NEXT: movb %al, 4(%rdi) 1262; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1263; SSE2-NEXT: andb $1, %al 1264; SSE2-NEXT: movb %al, 2(%rdi) 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: movq %rdi, %rax 1353; SSE2-NEXT: retq 1354; 1355; SSE42-LABEL: test_cmp_v64i8: 1356; SSE42: # BB#0: 1357; SSE42-NEXT: pcmpgtb %xmm4, %xmm0 1358; SSE42-NEXT: pcmpgtb %xmm5, %xmm1 1359; SSE42-NEXT: pcmpgtb %xmm6, %xmm2 1360; SSE42-NEXT: pcmpgtb %xmm7, %xmm3 1361; SSE42-NEXT: pextrb $15, %xmm3, %eax 1362; SSE42-NEXT: andb $1, %al 1363; SSE42-NEXT: movb %al, 6(%rdi) 1364; SSE42-NEXT: pextrb $14, %xmm3, %eax 1365; SSE42-NEXT: andb $1, %al 1366; SSE42-NEXT: movb %al, 6(%rdi) 1367; SSE42-NEXT: pextrb $13, %xmm3, %eax 1368; SSE42-NEXT: andb $1, %al 1369; SSE42-NEXT: movb %al, 6(%rdi) 1370; SSE42-NEXT: pextrb $12, %xmm3, %eax 1371; SSE42-NEXT: andb $1, %al 1372; SSE42-NEXT: movb %al, 6(%rdi) 1373; SSE42-NEXT: pextrb $11, %xmm3, %eax 1374; SSE42-NEXT: andb $1, %al 1375; SSE42-NEXT: movb %al, 6(%rdi) 1376; SSE42-NEXT: pextrb $10, %xmm3, %eax 1377; SSE42-NEXT: andb $1, %al 1378; SSE42-NEXT: movb %al, 6(%rdi) 1379; SSE42-NEXT: pextrb $9, %xmm3, %eax 1380; SSE42-NEXT: andb $1, %al 1381; SSE42-NEXT: movb %al, 6(%rdi) 1382; SSE42-NEXT: pextrb $8, %xmm3, %eax 1383; SSE42-NEXT: andb $1, %al 1384; SSE42-NEXT: movb %al, 6(%rdi) 1385; SSE42-NEXT: pextrb $7, %xmm3, %eax 1386; SSE42-NEXT: andb $1, %al 1387; SSE42-NEXT: movb %al, 6(%rdi) 1388; SSE42-NEXT: pextrb $6, %xmm3, %eax 1389; SSE42-NEXT: andb $1, %al 1390; SSE42-NEXT: movb %al, 6(%rdi) 1391; SSE42-NEXT: pextrb $5, %xmm3, %eax 1392; SSE42-NEXT: andb $1, %al 1393; SSE42-NEXT: movb %al, 6(%rdi) 1394; SSE42-NEXT: pextrb $4, %xmm3, %eax 1395; SSE42-NEXT: andb $1, %al 1396; SSE42-NEXT: movb %al, 6(%rdi) 1397; SSE42-NEXT: pextrb $3, %xmm3, %eax 1398; SSE42-NEXT: andb $1, %al 1399; SSE42-NEXT: movb %al, 6(%rdi) 1400; SSE42-NEXT: pextrb $2, %xmm3, %eax 1401; SSE42-NEXT: andb $1, %al 1402; SSE42-NEXT: movb %al, 6(%rdi) 1403; SSE42-NEXT: pextrb $1, %xmm3, %eax 1404; SSE42-NEXT: andb $1, %al 1405; SSE42-NEXT: movb %al, 6(%rdi) 1406; SSE42-NEXT: pextrb $0, %xmm3, %eax 1407; SSE42-NEXT: andb $1, %al 1408; SSE42-NEXT: movb %al, 6(%rdi) 1409; SSE42-NEXT: pextrb $15, %xmm2, %eax 1410; SSE42-NEXT: andb $1, %al 1411; SSE42-NEXT: movb %al, 4(%rdi) 1412; SSE42-NEXT: pextrb $14, %xmm2, %eax 1413; SSE42-NEXT: andb $1, %al 1414; SSE42-NEXT: movb %al, 4(%rdi) 1415; SSE42-NEXT: pextrb $13, %xmm2, %eax 1416; SSE42-NEXT: andb $1, %al 1417; SSE42-NEXT: movb %al, 4(%rdi) 1418; SSE42-NEXT: pextrb $12, %xmm2, %eax 1419; SSE42-NEXT: andb $1, %al 1420; SSE42-NEXT: movb %al, 4(%rdi) 1421; SSE42-NEXT: pextrb $11, %xmm2, %eax 1422; SSE42-NEXT: andb $1, %al 1423; SSE42-NEXT: movb %al, 4(%rdi) 1424; SSE42-NEXT: pextrb $10, %xmm2, %eax 1425; SSE42-NEXT: andb $1, %al 1426; SSE42-NEXT: movb %al, 4(%rdi) 1427; SSE42-NEXT: pextrb $9, %xmm2, %eax 1428; SSE42-NEXT: andb $1, %al 1429; SSE42-NEXT: movb %al, 4(%rdi) 1430; SSE42-NEXT: pextrb $8, %xmm2, %eax 1431; SSE42-NEXT: andb $1, %al 1432; SSE42-NEXT: movb %al, 4(%rdi) 1433; SSE42-NEXT: pextrb $7, %xmm2, %eax 1434; SSE42-NEXT: andb $1, %al 1435; SSE42-NEXT: movb %al, 4(%rdi) 1436; SSE42-NEXT: pextrb $6, %xmm2, %eax 1437; SSE42-NEXT: andb $1, %al 1438; SSE42-NEXT: movb %al, 4(%rdi) 1439; SSE42-NEXT: pextrb $5, %xmm2, %eax 1440; SSE42-NEXT: andb $1, %al 1441; SSE42-NEXT: movb %al, 4(%rdi) 1442; SSE42-NEXT: pextrb $4, %xmm2, %eax 1443; SSE42-NEXT: andb $1, %al 1444; SSE42-NEXT: movb %al, 4(%rdi) 1445; SSE42-NEXT: pextrb $3, %xmm2, %eax 1446; SSE42-NEXT: andb $1, %al 1447; SSE42-NEXT: movb %al, 4(%rdi) 1448; SSE42-NEXT: pextrb $2, %xmm2, %eax 1449; SSE42-NEXT: andb $1, %al 1450; SSE42-NEXT: movb %al, 4(%rdi) 1451; SSE42-NEXT: pextrb $1, %xmm2, %eax 1452; SSE42-NEXT: andb $1, %al 1453; SSE42-NEXT: movb %al, 4(%rdi) 1454; SSE42-NEXT: pextrb $0, %xmm2, %eax 1455; SSE42-NEXT: andb $1, %al 1456; SSE42-NEXT: movb %al, 4(%rdi) 1457; SSE42-NEXT: pextrb $15, %xmm1, %eax 1458; SSE42-NEXT: andb $1, %al 1459; SSE42-NEXT: movb %al, 2(%rdi) 1460; SSE42-NEXT: pextrb $14, %xmm1, %eax 1461; SSE42-NEXT: andb $1, %al 1462; SSE42-NEXT: movb %al, 2(%rdi) 1463; SSE42-NEXT: pextrb $13, %xmm1, %eax 1464; SSE42-NEXT: andb $1, %al 1465; SSE42-NEXT: movb %al, 2(%rdi) 1466; SSE42-NEXT: pextrb $12, %xmm1, %eax 1467; SSE42-NEXT: andb $1, %al 1468; SSE42-NEXT: movb %al, 2(%rdi) 1469; SSE42-NEXT: pextrb $11, %xmm1, %eax 1470; SSE42-NEXT: andb $1, %al 1471; SSE42-NEXT: movb %al, 2(%rdi) 1472; SSE42-NEXT: pextrb $10, %xmm1, %eax 1473; SSE42-NEXT: andb $1, %al 1474; SSE42-NEXT: movb %al, 2(%rdi) 1475; SSE42-NEXT: pextrb $9, %xmm1, %eax 1476; SSE42-NEXT: andb $1, %al 1477; SSE42-NEXT: movb %al, 2(%rdi) 1478; SSE42-NEXT: pextrb $8, %xmm1, %eax 1479; SSE42-NEXT: andb $1, %al 1480; SSE42-NEXT: movb %al, 2(%rdi) 1481; SSE42-NEXT: pextrb $7, %xmm1, %eax 1482; SSE42-NEXT: andb $1, %al 1483; SSE42-NEXT: movb %al, 2(%rdi) 1484; SSE42-NEXT: pextrb $6, %xmm1, %eax 1485; SSE42-NEXT: andb $1, %al 1486; SSE42-NEXT: movb %al, 2(%rdi) 1487; SSE42-NEXT: pextrb $5, %xmm1, %eax 1488; SSE42-NEXT: andb $1, %al 1489; SSE42-NEXT: movb %al, 2(%rdi) 1490; SSE42-NEXT: pextrb $4, %xmm1, %eax 1491; SSE42-NEXT: andb $1, %al 1492; SSE42-NEXT: movb %al, 2(%rdi) 1493; SSE42-NEXT: pextrb $3, %xmm1, %eax 1494; SSE42-NEXT: andb $1, %al 1495; SSE42-NEXT: movb %al, 2(%rdi) 1496; SSE42-NEXT: pextrb $2, %xmm1, %eax 1497; SSE42-NEXT: andb $1, %al 1498; SSE42-NEXT: movb %al, 2(%rdi) 1499; SSE42-NEXT: pextrb $1, %xmm1, %eax 1500; SSE42-NEXT: andb $1, %al 1501; SSE42-NEXT: movb %al, 2(%rdi) 1502; SSE42-NEXT: pextrb $0, %xmm1, %eax 1503; SSE42-NEXT: andb $1, %al 1504; SSE42-NEXT: movb %al, 2(%rdi) 1505; SSE42-NEXT: pextrb $15, %xmm0, %eax 1506; SSE42-NEXT: andb $1, %al 1507; SSE42-NEXT: movb %al, (%rdi) 1508; SSE42-NEXT: pextrb $14, %xmm0, %eax 1509; SSE42-NEXT: andb $1, %al 1510; SSE42-NEXT: movb %al, (%rdi) 1511; SSE42-NEXT: pextrb $13, %xmm0, %eax 1512; SSE42-NEXT: andb $1, %al 1513; SSE42-NEXT: movb %al, (%rdi) 1514; SSE42-NEXT: pextrb $12, %xmm0, %eax 1515; SSE42-NEXT: andb $1, %al 1516; SSE42-NEXT: movb %al, (%rdi) 1517; SSE42-NEXT: pextrb $11, %xmm0, %eax 1518; SSE42-NEXT: andb $1, %al 1519; SSE42-NEXT: movb %al, (%rdi) 1520; SSE42-NEXT: pextrb $10, %xmm0, %eax 1521; SSE42-NEXT: andb $1, %al 1522; SSE42-NEXT: movb %al, (%rdi) 1523; SSE42-NEXT: pextrb $9, %xmm0, %eax 1524; SSE42-NEXT: andb $1, %al 1525; SSE42-NEXT: movb %al, (%rdi) 1526; SSE42-NEXT: pextrb $8, %xmm0, %eax 1527; SSE42-NEXT: andb $1, %al 1528; SSE42-NEXT: movb %al, (%rdi) 1529; SSE42-NEXT: pextrb $7, %xmm0, %eax 1530; SSE42-NEXT: andb $1, %al 1531; SSE42-NEXT: movb %al, (%rdi) 1532; SSE42-NEXT: pextrb $6, %xmm0, %eax 1533; SSE42-NEXT: andb $1, %al 1534; SSE42-NEXT: movb %al, (%rdi) 1535; SSE42-NEXT: pextrb $5, %xmm0, %eax 1536; SSE42-NEXT: andb $1, %al 1537; SSE42-NEXT: movb %al, (%rdi) 1538; SSE42-NEXT: pextrb $4, %xmm0, %eax 1539; SSE42-NEXT: andb $1, %al 1540; SSE42-NEXT: movb %al, (%rdi) 1541; SSE42-NEXT: pextrb $3, %xmm0, %eax 1542; SSE42-NEXT: andb $1, %al 1543; SSE42-NEXT: movb %al, (%rdi) 1544; SSE42-NEXT: pextrb $2, %xmm0, %eax 1545; SSE42-NEXT: andb $1, %al 1546; SSE42-NEXT: movb %al, (%rdi) 1547; SSE42-NEXT: pextrb $1, %xmm0, %eax 1548; SSE42-NEXT: andb $1, %al 1549; SSE42-NEXT: movb %al, (%rdi) 1550; SSE42-NEXT: pextrb $0, %xmm0, %eax 1551; SSE42-NEXT: andb $1, %al 1552; SSE42-NEXT: movb %al, (%rdi) 1553; SSE42-NEXT: movq %rdi, %rax 1554; SSE42-NEXT: retq 1555; 1556; AVX1-LABEL: test_cmp_v64i8: 1557; AVX1: # BB#0: 1558; AVX1-NEXT: vpcmpgtb %xmm2, %xmm0, %xmm4 1559; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm2 1560; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 1561; AVX1-NEXT: vpcmpgtb %xmm2, %xmm0, %xmm0 1562; AVX1-NEXT: vpcmpgtb %xmm3, %xmm1, %xmm2 1563; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm3 1564; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1 1565; AVX1-NEXT: vpcmpgtb %xmm3, %xmm1, %xmm1 1566; AVX1-NEXT: vpextrb $15, %xmm1, %eax 1567; AVX1-NEXT: andb $1, %al 1568; AVX1-NEXT: movb %al, 4(%rdi) 1569; AVX1-NEXT: vpextrb $14, %xmm1, %eax 1570; AVX1-NEXT: andb $1, %al 1571; AVX1-NEXT: movb %al, 4(%rdi) 1572; AVX1-NEXT: vpextrb $13, %xmm1, %eax 1573; AVX1-NEXT: andb $1, %al 1574; AVX1-NEXT: movb %al, 4(%rdi) 1575; AVX1-NEXT: vpextrb $12, %xmm1, %eax 1576; AVX1-NEXT: andb $1, %al 1577; AVX1-NEXT: movb %al, 4(%rdi) 1578; AVX1-NEXT: vpextrb $11, %xmm1, %eax 1579; AVX1-NEXT: andb $1, %al 1580; AVX1-NEXT: movb %al, 4(%rdi) 1581; AVX1-NEXT: vpextrb $10, %xmm1, %eax 1582; AVX1-NEXT: andb $1, %al 1583; AVX1-NEXT: movb %al, 4(%rdi) 1584; AVX1-NEXT: vpextrb $9, %xmm1, %eax 1585; AVX1-NEXT: andb $1, %al 1586; AVX1-NEXT: movb %al, 4(%rdi) 1587; AVX1-NEXT: vpextrb $8, %xmm1, %eax 1588; AVX1-NEXT: andb $1, %al 1589; AVX1-NEXT: movb %al, 4(%rdi) 1590; AVX1-NEXT: vpextrb $7, %xmm1, %eax 1591; AVX1-NEXT: andb $1, %al 1592; AVX1-NEXT: movb %al, 4(%rdi) 1593; AVX1-NEXT: vpextrb $6, %xmm1, %eax 1594; AVX1-NEXT: andb $1, %al 1595; AVX1-NEXT: movb %al, 4(%rdi) 1596; AVX1-NEXT: vpextrb $5, %xmm1, %eax 1597; AVX1-NEXT: andb $1, %al 1598; AVX1-NEXT: movb %al, 4(%rdi) 1599; AVX1-NEXT: vpextrb $4, %xmm1, %eax 1600; AVX1-NEXT: andb $1, %al 1601; AVX1-NEXT: movb %al, 4(%rdi) 1602; AVX1-NEXT: vpextrb $3, %xmm1, %eax 1603; AVX1-NEXT: andb $1, %al 1604; AVX1-NEXT: movb %al, 4(%rdi) 1605; AVX1-NEXT: vpextrb $2, %xmm1, %eax 1606; AVX1-NEXT: andb $1, %al 1607; AVX1-NEXT: movb %al, 4(%rdi) 1608; AVX1-NEXT: vpextrb $1, %xmm1, %eax 1609; AVX1-NEXT: andb $1, %al 1610; AVX1-NEXT: movb %al, 4(%rdi) 1611; AVX1-NEXT: vpextrb $0, %xmm1, %eax 1612; AVX1-NEXT: andb $1, %al 1613; AVX1-NEXT: movb %al, 4(%rdi) 1614; AVX1-NEXT: vpextrb $15, %xmm2, %eax 1615; AVX1-NEXT: andb $1, %al 1616; AVX1-NEXT: movb %al, 4(%rdi) 1617; AVX1-NEXT: vpextrb $14, %xmm2, %eax 1618; AVX1-NEXT: andb $1, %al 1619; AVX1-NEXT: movb %al, 4(%rdi) 1620; AVX1-NEXT: vpextrb $13, %xmm2, %eax 1621; AVX1-NEXT: andb $1, %al 1622; AVX1-NEXT: movb %al, 4(%rdi) 1623; AVX1-NEXT: vpextrb $12, %xmm2, %eax 1624; AVX1-NEXT: andb $1, %al 1625; AVX1-NEXT: movb %al, 4(%rdi) 1626; AVX1-NEXT: vpextrb $11, %xmm2, %eax 1627; AVX1-NEXT: andb $1, %al 1628; AVX1-NEXT: movb %al, 4(%rdi) 1629; AVX1-NEXT: vpextrb $10, %xmm2, %eax 1630; AVX1-NEXT: andb $1, %al 1631; AVX1-NEXT: movb %al, 4(%rdi) 1632; AVX1-NEXT: vpextrb $9, %xmm2, %eax 1633; AVX1-NEXT: andb $1, %al 1634; AVX1-NEXT: movb %al, 4(%rdi) 1635; AVX1-NEXT: vpextrb $8, %xmm2, %eax 1636; AVX1-NEXT: andb $1, %al 1637; AVX1-NEXT: movb %al, 4(%rdi) 1638; AVX1-NEXT: vpextrb $7, %xmm2, %eax 1639; AVX1-NEXT: andb $1, %al 1640; AVX1-NEXT: movb %al, 4(%rdi) 1641; AVX1-NEXT: vpextrb $6, %xmm2, %eax 1642; AVX1-NEXT: andb $1, %al 1643; AVX1-NEXT: movb %al, 4(%rdi) 1644; AVX1-NEXT: vpextrb $5, %xmm2, %eax 1645; AVX1-NEXT: andb $1, %al 1646; AVX1-NEXT: movb %al, 4(%rdi) 1647; AVX1-NEXT: vpextrb $4, %xmm2, %eax 1648; AVX1-NEXT: andb $1, %al 1649; AVX1-NEXT: movb %al, 4(%rdi) 1650; AVX1-NEXT: vpextrb $3, %xmm2, %eax 1651; AVX1-NEXT: andb $1, %al 1652; AVX1-NEXT: movb %al, 4(%rdi) 1653; AVX1-NEXT: vpextrb $2, %xmm2, %eax 1654; AVX1-NEXT: andb $1, %al 1655; AVX1-NEXT: movb %al, 4(%rdi) 1656; AVX1-NEXT: vpextrb $1, %xmm2, %eax 1657; AVX1-NEXT: andb $1, %al 1658; AVX1-NEXT: movb %al, 4(%rdi) 1659; AVX1-NEXT: vpextrb $0, %xmm2, %eax 1660; AVX1-NEXT: andb $1, %al 1661; AVX1-NEXT: movb %al, 4(%rdi) 1662; AVX1-NEXT: vpextrb $15, %xmm0, %eax 1663; AVX1-NEXT: andb $1, %al 1664; AVX1-NEXT: movb %al, (%rdi) 1665; AVX1-NEXT: vpextrb $14, %xmm0, %eax 1666; AVX1-NEXT: andb $1, %al 1667; AVX1-NEXT: movb %al, (%rdi) 1668; AVX1-NEXT: vpextrb $13, %xmm0, %eax 1669; AVX1-NEXT: andb $1, %al 1670; AVX1-NEXT: movb %al, (%rdi) 1671; AVX1-NEXT: vpextrb $12, %xmm0, %eax 1672; AVX1-NEXT: andb $1, %al 1673; AVX1-NEXT: movb %al, (%rdi) 1674; AVX1-NEXT: vpextrb $11, %xmm0, %eax 1675; AVX1-NEXT: andb $1, %al 1676; AVX1-NEXT: movb %al, (%rdi) 1677; AVX1-NEXT: vpextrb $10, %xmm0, %eax 1678; AVX1-NEXT: andb $1, %al 1679; AVX1-NEXT: movb %al, (%rdi) 1680; AVX1-NEXT: vpextrb $9, %xmm0, %eax 1681; AVX1-NEXT: andb $1, %al 1682; AVX1-NEXT: movb %al, (%rdi) 1683; AVX1-NEXT: vpextrb $8, %xmm0, %eax 1684; AVX1-NEXT: andb $1, %al 1685; AVX1-NEXT: movb %al, (%rdi) 1686; AVX1-NEXT: vpextrb $7, %xmm0, %eax 1687; AVX1-NEXT: andb $1, %al 1688; AVX1-NEXT: movb %al, (%rdi) 1689; AVX1-NEXT: vpextrb $6, %xmm0, %eax 1690; AVX1-NEXT: andb $1, %al 1691; AVX1-NEXT: movb %al, (%rdi) 1692; AVX1-NEXT: vpextrb $5, %xmm0, %eax 1693; AVX1-NEXT: andb $1, %al 1694; AVX1-NEXT: movb %al, (%rdi) 1695; AVX1-NEXT: vpextrb $4, %xmm0, %eax 1696; AVX1-NEXT: andb $1, %al 1697; AVX1-NEXT: movb %al, (%rdi) 1698; AVX1-NEXT: vpextrb $3, %xmm0, %eax 1699; AVX1-NEXT: andb $1, %al 1700; AVX1-NEXT: movb %al, (%rdi) 1701; AVX1-NEXT: vpextrb $2, %xmm0, %eax 1702; AVX1-NEXT: andb $1, %al 1703; AVX1-NEXT: movb %al, (%rdi) 1704; AVX1-NEXT: vpextrb $1, %xmm0, %eax 1705; AVX1-NEXT: andb $1, %al 1706; AVX1-NEXT: movb %al, (%rdi) 1707; AVX1-NEXT: vpextrb $0, %xmm0, %eax 1708; AVX1-NEXT: andb $1, %al 1709; AVX1-NEXT: movb %al, (%rdi) 1710; AVX1-NEXT: vpextrb $15, %xmm4, %eax 1711; AVX1-NEXT: andb $1, %al 1712; AVX1-NEXT: movb %al, (%rdi) 1713; AVX1-NEXT: vpextrb $14, %xmm4, %eax 1714; AVX1-NEXT: andb $1, %al 1715; AVX1-NEXT: movb %al, (%rdi) 1716; AVX1-NEXT: vpextrb $13, %xmm4, %eax 1717; AVX1-NEXT: andb $1, %al 1718; AVX1-NEXT: movb %al, (%rdi) 1719; AVX1-NEXT: vpextrb $12, %xmm4, %eax 1720; AVX1-NEXT: andb $1, %al 1721; AVX1-NEXT: movb %al, (%rdi) 1722; AVX1-NEXT: vpextrb $11, %xmm4, %eax 1723; AVX1-NEXT: andb $1, %al 1724; AVX1-NEXT: movb %al, (%rdi) 1725; AVX1-NEXT: vpextrb $10, %xmm4, %eax 1726; AVX1-NEXT: andb $1, %al 1727; AVX1-NEXT: movb %al, (%rdi) 1728; AVX1-NEXT: vpextrb $9, %xmm4, %eax 1729; AVX1-NEXT: andb $1, %al 1730; AVX1-NEXT: movb %al, (%rdi) 1731; AVX1-NEXT: vpextrb $8, %xmm4, %eax 1732; AVX1-NEXT: andb $1, %al 1733; AVX1-NEXT: movb %al, (%rdi) 1734; AVX1-NEXT: vpextrb $7, %xmm4, %eax 1735; AVX1-NEXT: andb $1, %al 1736; AVX1-NEXT: movb %al, (%rdi) 1737; AVX1-NEXT: vpextrb $6, %xmm4, %eax 1738; AVX1-NEXT: andb $1, %al 1739; AVX1-NEXT: movb %al, (%rdi) 1740; AVX1-NEXT: vpextrb $5, %xmm4, %eax 1741; AVX1-NEXT: andb $1, %al 1742; AVX1-NEXT: movb %al, (%rdi) 1743; AVX1-NEXT: vpextrb $4, %xmm4, %eax 1744; AVX1-NEXT: andb $1, %al 1745; AVX1-NEXT: movb %al, (%rdi) 1746; AVX1-NEXT: vpextrb $3, %xmm4, %eax 1747; AVX1-NEXT: andb $1, %al 1748; AVX1-NEXT: movb %al, (%rdi) 1749; AVX1-NEXT: vpextrb $2, %xmm4, %eax 1750; AVX1-NEXT: andb $1, %al 1751; AVX1-NEXT: movb %al, (%rdi) 1752; AVX1-NEXT: vpextrb $1, %xmm4, %eax 1753; AVX1-NEXT: andb $1, %al 1754; AVX1-NEXT: movb %al, (%rdi) 1755; AVX1-NEXT: vpextrb $0, %xmm4, %eax 1756; AVX1-NEXT: andb $1, %al 1757; AVX1-NEXT: movb %al, (%rdi) 1758; AVX1-NEXT: movq %rdi, %rax 1759; AVX1-NEXT: vzeroupper 1760; AVX1-NEXT: retq 1761; 1762; AVX2-LABEL: test_cmp_v64i8: 1763; AVX2: # BB#0: 1764; AVX2-NEXT: vpcmpgtb %ymm2, %ymm0, %ymm0 1765; AVX2-NEXT: vpcmpgtb %ymm3, %ymm1, %ymm1 1766; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2 1767; AVX2-NEXT: vpextrb $15, %xmm2, %eax 1768; AVX2-NEXT: andb $1, %al 1769; AVX2-NEXT: movb %al, 4(%rdi) 1770; AVX2-NEXT: vpextrb $14, %xmm2, %eax 1771; AVX2-NEXT: andb $1, %al 1772; AVX2-NEXT: movb %al, 4(%rdi) 1773; AVX2-NEXT: vpextrb $13, %xmm2, %eax 1774; AVX2-NEXT: andb $1, %al 1775; AVX2-NEXT: movb %al, 4(%rdi) 1776; AVX2-NEXT: vpextrb $12, %xmm2, %eax 1777; AVX2-NEXT: andb $1, %al 1778; AVX2-NEXT: movb %al, 4(%rdi) 1779; AVX2-NEXT: vpextrb $11, %xmm2, %eax 1780; AVX2-NEXT: andb $1, %al 1781; AVX2-NEXT: movb %al, 4(%rdi) 1782; AVX2-NEXT: vpextrb $10, %xmm2, %eax 1783; AVX2-NEXT: andb $1, %al 1784; AVX2-NEXT: movb %al, 4(%rdi) 1785; AVX2-NEXT: vpextrb $9, %xmm2, %eax 1786; AVX2-NEXT: andb $1, %al 1787; AVX2-NEXT: movb %al, 4(%rdi) 1788; AVX2-NEXT: vpextrb $8, %xmm2, %eax 1789; AVX2-NEXT: andb $1, %al 1790; AVX2-NEXT: movb %al, 4(%rdi) 1791; AVX2-NEXT: vpextrb $7, %xmm2, %eax 1792; AVX2-NEXT: andb $1, %al 1793; AVX2-NEXT: movb %al, 4(%rdi) 1794; AVX2-NEXT: vpextrb $6, %xmm2, %eax 1795; AVX2-NEXT: andb $1, %al 1796; AVX2-NEXT: movb %al, 4(%rdi) 1797; AVX2-NEXT: vpextrb $5, %xmm2, %eax 1798; AVX2-NEXT: andb $1, %al 1799; AVX2-NEXT: movb %al, 4(%rdi) 1800; AVX2-NEXT: vpextrb $4, %xmm2, %eax 1801; AVX2-NEXT: andb $1, %al 1802; AVX2-NEXT: movb %al, 4(%rdi) 1803; AVX2-NEXT: vpextrb $3, %xmm2, %eax 1804; AVX2-NEXT: andb $1, %al 1805; AVX2-NEXT: movb %al, 4(%rdi) 1806; AVX2-NEXT: vpextrb $2, %xmm2, %eax 1807; AVX2-NEXT: andb $1, %al 1808; AVX2-NEXT: movb %al, 4(%rdi) 1809; AVX2-NEXT: vpextrb $1, %xmm2, %eax 1810; AVX2-NEXT: andb $1, %al 1811; AVX2-NEXT: movb %al, 4(%rdi) 1812; AVX2-NEXT: vpextrb $0, %xmm2, %eax 1813; AVX2-NEXT: andb $1, %al 1814; AVX2-NEXT: movb %al, 4(%rdi) 1815; AVX2-NEXT: vpextrb $15, %xmm1, %eax 1816; AVX2-NEXT: andb $1, %al 1817; AVX2-NEXT: movb %al, 4(%rdi) 1818; AVX2-NEXT: vpextrb $14, %xmm1, %eax 1819; AVX2-NEXT: andb $1, %al 1820; AVX2-NEXT: movb %al, 4(%rdi) 1821; AVX2-NEXT: vpextrb $13, %xmm1, %eax 1822; AVX2-NEXT: andb $1, %al 1823; AVX2-NEXT: movb %al, 4(%rdi) 1824; AVX2-NEXT: vpextrb $12, %xmm1, %eax 1825; AVX2-NEXT: andb $1, %al 1826; AVX2-NEXT: movb %al, 4(%rdi) 1827; AVX2-NEXT: vpextrb $11, %xmm1, %eax 1828; AVX2-NEXT: andb $1, %al 1829; AVX2-NEXT: movb %al, 4(%rdi) 1830; AVX2-NEXT: vpextrb $10, %xmm1, %eax 1831; AVX2-NEXT: andb $1, %al 1832; AVX2-NEXT: movb %al, 4(%rdi) 1833; AVX2-NEXT: vpextrb $9, %xmm1, %eax 1834; AVX2-NEXT: andb $1, %al 1835; AVX2-NEXT: movb %al, 4(%rdi) 1836; AVX2-NEXT: vpextrb $8, %xmm1, %eax 1837; AVX2-NEXT: andb $1, %al 1838; AVX2-NEXT: movb %al, 4(%rdi) 1839; AVX2-NEXT: vpextrb $7, %xmm1, %eax 1840; AVX2-NEXT: andb $1, %al 1841; AVX2-NEXT: movb %al, 4(%rdi) 1842; AVX2-NEXT: vpextrb $6, %xmm1, %eax 1843; AVX2-NEXT: andb $1, %al 1844; AVX2-NEXT: movb %al, 4(%rdi) 1845; AVX2-NEXT: vpextrb $5, %xmm1, %eax 1846; AVX2-NEXT: andb $1, %al 1847; AVX2-NEXT: movb %al, 4(%rdi) 1848; AVX2-NEXT: vpextrb $4, %xmm1, %eax 1849; AVX2-NEXT: andb $1, %al 1850; AVX2-NEXT: movb %al, 4(%rdi) 1851; AVX2-NEXT: vpextrb $3, %xmm1, %eax 1852; AVX2-NEXT: andb $1, %al 1853; AVX2-NEXT: movb %al, 4(%rdi) 1854; AVX2-NEXT: vpextrb $2, %xmm1, %eax 1855; AVX2-NEXT: andb $1, %al 1856; AVX2-NEXT: movb %al, 4(%rdi) 1857; AVX2-NEXT: vpextrb $1, %xmm1, %eax 1858; AVX2-NEXT: andb $1, %al 1859; AVX2-NEXT: movb %al, 4(%rdi) 1860; AVX2-NEXT: vpextrb $0, %xmm1, %eax 1861; AVX2-NEXT: andb $1, %al 1862; AVX2-NEXT: movb %al, 4(%rdi) 1863; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 1864; AVX2-NEXT: vpextrb $15, %xmm1, %eax 1865; AVX2-NEXT: andb $1, %al 1866; AVX2-NEXT: movb %al, (%rdi) 1867; AVX2-NEXT: vpextrb $14, %xmm1, %eax 1868; AVX2-NEXT: andb $1, %al 1869; AVX2-NEXT: movb %al, (%rdi) 1870; AVX2-NEXT: vpextrb $13, %xmm1, %eax 1871; AVX2-NEXT: andb $1, %al 1872; AVX2-NEXT: movb %al, (%rdi) 1873; AVX2-NEXT: vpextrb $12, %xmm1, %eax 1874; AVX2-NEXT: andb $1, %al 1875; AVX2-NEXT: movb %al, (%rdi) 1876; AVX2-NEXT: vpextrb $11, %xmm1, %eax 1877; AVX2-NEXT: andb $1, %al 1878; AVX2-NEXT: movb %al, (%rdi) 1879; AVX2-NEXT: vpextrb $10, %xmm1, %eax 1880; AVX2-NEXT: andb $1, %al 1881; AVX2-NEXT: movb %al, (%rdi) 1882; AVX2-NEXT: vpextrb $9, %xmm1, %eax 1883; AVX2-NEXT: andb $1, %al 1884; AVX2-NEXT: movb %al, (%rdi) 1885; AVX2-NEXT: vpextrb $8, %xmm1, %eax 1886; AVX2-NEXT: andb $1, %al 1887; AVX2-NEXT: movb %al, (%rdi) 1888; AVX2-NEXT: vpextrb $7, %xmm1, %eax 1889; AVX2-NEXT: andb $1, %al 1890; AVX2-NEXT: movb %al, (%rdi) 1891; AVX2-NEXT: vpextrb $6, %xmm1, %eax 1892; AVX2-NEXT: andb $1, %al 1893; AVX2-NEXT: movb %al, (%rdi) 1894; AVX2-NEXT: vpextrb $5, %xmm1, %eax 1895; AVX2-NEXT: andb $1, %al 1896; AVX2-NEXT: movb %al, (%rdi) 1897; AVX2-NEXT: vpextrb $4, %xmm1, %eax 1898; AVX2-NEXT: andb $1, %al 1899; AVX2-NEXT: movb %al, (%rdi) 1900; AVX2-NEXT: vpextrb $3, %xmm1, %eax 1901; AVX2-NEXT: andb $1, %al 1902; AVX2-NEXT: movb %al, (%rdi) 1903; AVX2-NEXT: vpextrb $2, %xmm1, %eax 1904; AVX2-NEXT: andb $1, %al 1905; AVX2-NEXT: movb %al, (%rdi) 1906; AVX2-NEXT: vpextrb $1, %xmm1, %eax 1907; AVX2-NEXT: andb $1, %al 1908; AVX2-NEXT: movb %al, (%rdi) 1909; AVX2-NEXT: vpextrb $0, %xmm1, %eax 1910; AVX2-NEXT: andb $1, %al 1911; AVX2-NEXT: movb %al, (%rdi) 1912; AVX2-NEXT: vpextrb $15, %xmm0, %eax 1913; AVX2-NEXT: andb $1, %al 1914; AVX2-NEXT: movb %al, (%rdi) 1915; AVX2-NEXT: vpextrb $14, %xmm0, %eax 1916; AVX2-NEXT: andb $1, %al 1917; AVX2-NEXT: movb %al, (%rdi) 1918; AVX2-NEXT: vpextrb $13, %xmm0, %eax 1919; AVX2-NEXT: andb $1, %al 1920; AVX2-NEXT: movb %al, (%rdi) 1921; AVX2-NEXT: vpextrb $12, %xmm0, %eax 1922; AVX2-NEXT: andb $1, %al 1923; AVX2-NEXT: movb %al, (%rdi) 1924; AVX2-NEXT: vpextrb $11, %xmm0, %eax 1925; AVX2-NEXT: andb $1, %al 1926; AVX2-NEXT: movb %al, (%rdi) 1927; AVX2-NEXT: vpextrb $10, %xmm0, %eax 1928; AVX2-NEXT: andb $1, %al 1929; AVX2-NEXT: movb %al, (%rdi) 1930; AVX2-NEXT: vpextrb $9, %xmm0, %eax 1931; AVX2-NEXT: andb $1, %al 1932; AVX2-NEXT: movb %al, (%rdi) 1933; AVX2-NEXT: vpextrb $8, %xmm0, %eax 1934; AVX2-NEXT: andb $1, %al 1935; AVX2-NEXT: movb %al, (%rdi) 1936; AVX2-NEXT: vpextrb $7, %xmm0, %eax 1937; AVX2-NEXT: andb $1, %al 1938; AVX2-NEXT: movb %al, (%rdi) 1939; AVX2-NEXT: vpextrb $6, %xmm0, %eax 1940; AVX2-NEXT: andb $1, %al 1941; AVX2-NEXT: movb %al, (%rdi) 1942; AVX2-NEXT: vpextrb $5, %xmm0, %eax 1943; AVX2-NEXT: andb $1, %al 1944; AVX2-NEXT: movb %al, (%rdi) 1945; AVX2-NEXT: vpextrb $4, %xmm0, %eax 1946; AVX2-NEXT: andb $1, %al 1947; AVX2-NEXT: movb %al, (%rdi) 1948; AVX2-NEXT: vpextrb $3, %xmm0, %eax 1949; AVX2-NEXT: andb $1, %al 1950; AVX2-NEXT: movb %al, (%rdi) 1951; AVX2-NEXT: vpextrb $2, %xmm0, %eax 1952; AVX2-NEXT: andb $1, %al 1953; AVX2-NEXT: movb %al, (%rdi) 1954; AVX2-NEXT: vpextrb $1, %xmm0, %eax 1955; AVX2-NEXT: andb $1, %al 1956; AVX2-NEXT: movb %al, (%rdi) 1957; AVX2-NEXT: vpextrb $0, %xmm0, %eax 1958; AVX2-NEXT: andb $1, %al 1959; AVX2-NEXT: movb %al, (%rdi) 1960; AVX2-NEXT: movq %rdi, %rax 1961; AVX2-NEXT: vzeroupper 1962; AVX2-NEXT: retq 1963; 1964; AVX512F-LABEL: test_cmp_v64i8: 1965; AVX512F: # BB#0: 1966; AVX512F-NEXT: vpcmpgtb %ymm3, %ymm1, %ymm4 1967; AVX512F-NEXT: vpcmpgtb %ymm2, %ymm0, %ymm0 1968; AVX512F-NEXT: vextracti128 $1, %ymm0, %xmm1 1969; AVX512F-NEXT: vextracti128 $1, %ymm4, %xmm3 1970; AVX512F-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill> 1971; AVX512F-NEXT: vmovdqa %xmm4, %xmm2 1972; AVX512F-NEXT: retq 1973; 1974; AVX512DQ-LABEL: test_cmp_v64i8: 1975; AVX512DQ: # BB#0: 1976; AVX512DQ-NEXT: vpcmpgtb %ymm3, %ymm1, %ymm4 1977; AVX512DQ-NEXT: vpcmpgtb %ymm2, %ymm0, %ymm0 1978; AVX512DQ-NEXT: vextracti128 $1, %ymm0, %xmm1 1979; AVX512DQ-NEXT: vextracti128 $1, %ymm4, %xmm3 1980; AVX512DQ-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill> 1981; AVX512DQ-NEXT: vmovdqa %xmm4, %xmm2 1982; AVX512DQ-NEXT: retq 1983; 1984; AVX512BW-LABEL: test_cmp_v64i8: 1985; AVX512BW: # BB#0: 1986; AVX512BW-NEXT: vpcmpgtb %zmm1, %zmm0, %k0 1987; AVX512BW-NEXT: vpmovm2b %k0, %zmm0 1988; AVX512BW-NEXT: retq 1989 %1 = icmp sgt <64 x i8> %a0, %a1 1990 ret <64 x i1> %1 1991} 1992 1993; 1994; 1024-bit vector comparisons 1995; 1996 1997define <16 x i1> @test_cmp_v16f64(<16 x double> %a0, <16 x double> %a1) nounwind { 1998; SSE-LABEL: test_cmp_v16f64: 1999; SSE: # BB#0: 2000; SSE-NEXT: movapd %xmm0, %xmm8 2001; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm0 2002; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm11 2003; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm10 2004; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm12 2005; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm9 2006; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm13 2007; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm14 2008; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm15 2009; SSE-NEXT: cmpltpd %xmm7, %xmm15 2010; SSE-NEXT: cmpltpd %xmm6, %xmm14 2011; SSE-NEXT: packsswb %xmm15, %xmm14 2012; SSE-NEXT: cmpltpd %xmm5, %xmm13 2013; SSE-NEXT: cmpltpd %xmm4, %xmm9 2014; SSE-NEXT: packsswb %xmm13, %xmm9 2015; SSE-NEXT: packsswb %xmm14, %xmm9 2016; SSE-NEXT: cmpltpd %xmm3, %xmm12 2017; SSE-NEXT: cmpltpd %xmm2, %xmm10 2018; SSE-NEXT: packsswb %xmm12, %xmm10 2019; SSE-NEXT: cmpltpd %xmm1, %xmm11 2020; SSE-NEXT: cmpltpd %xmm8, %xmm0 2021; SSE-NEXT: packsswb %xmm11, %xmm0 2022; SSE-NEXT: packsswb %xmm10, %xmm0 2023; SSE-NEXT: packsswb %xmm9, %xmm0 2024; SSE-NEXT: retq 2025; 2026; AVX1-LABEL: test_cmp_v16f64: 2027; AVX1: # BB#0: 2028; AVX1-NEXT: vcmpltpd %ymm3, %ymm7, %ymm3 2029; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm7 2030; AVX1-NEXT: vpacksswb %xmm7, %xmm3, %xmm3 2031; AVX1-NEXT: vcmpltpd %ymm2, %ymm6, %ymm2 2032; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm6 2033; AVX1-NEXT: vpacksswb %xmm6, %xmm2, %xmm2 2034; AVX1-NEXT: vpacksswb %xmm3, %xmm2, %xmm2 2035; AVX1-NEXT: vcmpltpd %ymm1, %ymm5, %ymm1 2036; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 2037; AVX1-NEXT: vpacksswb %xmm3, %xmm1, %xmm1 2038; AVX1-NEXT: vcmpltpd %ymm0, %ymm4, %ymm0 2039; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 2040; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 2041; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 2042; AVX1-NEXT: vpacksswb %xmm2, %xmm0, %xmm0 2043; AVX1-NEXT: vzeroupper 2044; AVX1-NEXT: retq 2045; 2046; AVX2-LABEL: test_cmp_v16f64: 2047; AVX2: # BB#0: 2048; AVX2-NEXT: vcmpltpd %ymm3, %ymm7, %ymm3 2049; AVX2-NEXT: vcmpltpd %ymm2, %ymm6, %ymm2 2050; AVX2-NEXT: vpacksswb %ymm3, %ymm2, %ymm2 2051; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,1,3] 2052; AVX2-NEXT: vcmpltpd %ymm1, %ymm5, %ymm1 2053; AVX2-NEXT: vcmpltpd %ymm0, %ymm4, %ymm0 2054; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 2055; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 2056; AVX2-NEXT: vpacksswb %ymm2, %ymm0, %ymm0 2057; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 2058; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 2059; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 2060; AVX2-NEXT: vzeroupper 2061; AVX2-NEXT: retq 2062; 2063; AVX512F-LABEL: test_cmp_v16f64: 2064; AVX512F: # BB#0: 2065; AVX512F-NEXT: vextractf32x4 $3, %zmm2, %xmm4 2066; AVX512F-NEXT: vextractf32x4 $3, %zmm0, %xmm5 2067; AVX512F-NEXT: xorl %eax, %eax 2068; AVX512F-NEXT: vucomisd %xmm4, %xmm5 2069; AVX512F-NEXT: movq $-1, %rcx 2070; AVX512F-NEXT: movl $0, %edx 2071; AVX512F-NEXT: cmovaq %rcx, %rdx 2072; AVX512F-NEXT: vmovq %rdx, %xmm6 2073; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2074; AVX512F-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2075; AVX512F-NEXT: vucomisd %xmm4, %xmm5 2076; AVX512F-NEXT: movl $0, %edx 2077; AVX512F-NEXT: cmovaq %rcx, %rdx 2078; AVX512F-NEXT: vmovq %rdx, %xmm4 2079; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0] 2080; AVX512F-NEXT: vextractf32x4 $2, %zmm2, %xmm5 2081; AVX512F-NEXT: vextractf32x4 $2, %zmm0, %xmm6 2082; AVX512F-NEXT: vucomisd %xmm5, %xmm6 2083; AVX512F-NEXT: movl $0, %edx 2084; AVX512F-NEXT: cmovaq %rcx, %rdx 2085; AVX512F-NEXT: vmovq %rdx, %xmm7 2086; AVX512F-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2087; AVX512F-NEXT: vpermilpd {{.*#+}} xmm6 = xmm6[1,0] 2088; AVX512F-NEXT: vucomisd %xmm5, %xmm6 2089; AVX512F-NEXT: movl $0, %edx 2090; AVX512F-NEXT: cmovaq %rcx, %rdx 2091; AVX512F-NEXT: vmovq %rdx, %xmm5 2092; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm7[0],xmm5[0] 2093; AVX512F-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4 2094; AVX512F-NEXT: vextractf32x4 $1, %zmm2, %xmm5 2095; AVX512F-NEXT: vextractf32x4 $1, %zmm0, %xmm6 2096; AVX512F-NEXT: vucomisd %xmm5, %xmm6 2097; AVX512F-NEXT: movl $0, %edx 2098; AVX512F-NEXT: cmovaq %rcx, %rdx 2099; AVX512F-NEXT: vmovq %rdx, %xmm7 2100; AVX512F-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2101; AVX512F-NEXT: vpermilpd {{.*#+}} xmm6 = xmm6[1,0] 2102; AVX512F-NEXT: vucomisd %xmm5, %xmm6 2103; AVX512F-NEXT: movl $0, %edx 2104; AVX512F-NEXT: cmovaq %rcx, %rdx 2105; AVX512F-NEXT: vmovq %rdx, %xmm5 2106; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm7[0],xmm5[0] 2107; AVX512F-NEXT: vucomisd %xmm2, %xmm0 2108; AVX512F-NEXT: movl $0, %edx 2109; AVX512F-NEXT: cmovaq %rcx, %rdx 2110; AVX512F-NEXT: vmovq %rdx, %xmm6 2111; AVX512F-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 2112; AVX512F-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 2113; AVX512F-NEXT: vucomisd %xmm2, %xmm0 2114; AVX512F-NEXT: movl $0, %edx 2115; AVX512F-NEXT: cmovaq %rcx, %rdx 2116; AVX512F-NEXT: vmovq %rdx, %xmm0 2117; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm6[0],xmm0[0] 2118; AVX512F-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0 2119; AVX512F-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm0 2120; AVX512F-NEXT: vpmovqd %zmm0, %ymm0 2121; AVX512F-NEXT: vextractf32x4 $3, %zmm3, %xmm2 2122; AVX512F-NEXT: vextractf32x4 $3, %zmm1, %xmm4 2123; AVX512F-NEXT: vucomisd %xmm2, %xmm4 2124; AVX512F-NEXT: movl $0, %edx 2125; AVX512F-NEXT: cmovaq %rcx, %rdx 2126; AVX512F-NEXT: vmovq %rdx, %xmm5 2127; AVX512F-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 2128; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2129; AVX512F-NEXT: vucomisd %xmm2, %xmm4 2130; AVX512F-NEXT: movl $0, %edx 2131; AVX512F-NEXT: cmovaq %rcx, %rdx 2132; AVX512F-NEXT: vmovq %rdx, %xmm2 2133; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm5[0],xmm2[0] 2134; AVX512F-NEXT: vextractf32x4 $2, %zmm3, %xmm4 2135; AVX512F-NEXT: vextractf32x4 $2, %zmm1, %xmm5 2136; AVX512F-NEXT: vucomisd %xmm4, %xmm5 2137; AVX512F-NEXT: movl $0, %edx 2138; AVX512F-NEXT: cmovaq %rcx, %rdx 2139; AVX512F-NEXT: vmovq %rdx, %xmm6 2140; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2141; AVX512F-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2142; AVX512F-NEXT: vucomisd %xmm4, %xmm5 2143; AVX512F-NEXT: movl $0, %edx 2144; AVX512F-NEXT: cmovaq %rcx, %rdx 2145; AVX512F-NEXT: vmovq %rdx, %xmm4 2146; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0] 2147; AVX512F-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2 2148; AVX512F-NEXT: vextractf32x4 $1, %zmm3, %xmm4 2149; AVX512F-NEXT: vextractf32x4 $1, %zmm1, %xmm5 2150; AVX512F-NEXT: vucomisd %xmm4, %xmm5 2151; AVX512F-NEXT: movl $0, %edx 2152; AVX512F-NEXT: cmovaq %rcx, %rdx 2153; AVX512F-NEXT: vmovq %rdx, %xmm6 2154; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2155; AVX512F-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2156; AVX512F-NEXT: vucomisd %xmm4, %xmm5 2157; AVX512F-NEXT: movl $0, %edx 2158; AVX512F-NEXT: cmovaq %rcx, %rdx 2159; AVX512F-NEXT: vmovq %rdx, %xmm4 2160; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0] 2161; AVX512F-NEXT: vucomisd %xmm3, %xmm1 2162; AVX512F-NEXT: movl $0, %edx 2163; AVX512F-NEXT: cmovaq %rcx, %rdx 2164; AVX512F-NEXT: vmovq %rdx, %xmm5 2165; AVX512F-NEXT: vpermilpd {{.*#+}} xmm3 = xmm3[1,0] 2166; AVX512F-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 2167; AVX512F-NEXT: vucomisd %xmm3, %xmm1 2168; AVX512F-NEXT: cmovaq %rcx, %rax 2169; AVX512F-NEXT: vmovq %rax, %xmm1 2170; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm5[0],xmm1[0] 2171; AVX512F-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1 2172; AVX512F-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1 2173; AVX512F-NEXT: vpmovqd %zmm1, %ymm1 2174; AVX512F-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 2175; AVX512F-NEXT: vpmovdb %zmm0, %xmm0 2176; AVX512F-NEXT: retq 2177; 2178; AVX512DQ-LABEL: test_cmp_v16f64: 2179; AVX512DQ: # BB#0: 2180; AVX512DQ-NEXT: vextractf64x2 $3, %zmm2, %xmm4 2181; AVX512DQ-NEXT: vextractf64x2 $3, %zmm0, %xmm5 2182; AVX512DQ-NEXT: xorl %eax, %eax 2183; AVX512DQ-NEXT: vucomisd %xmm4, %xmm5 2184; AVX512DQ-NEXT: movq $-1, %rcx 2185; AVX512DQ-NEXT: movl $0, %edx 2186; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2187; AVX512DQ-NEXT: vmovq %rdx, %xmm6 2188; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2189; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2190; AVX512DQ-NEXT: vucomisd %xmm4, %xmm5 2191; AVX512DQ-NEXT: movl $0, %edx 2192; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2193; AVX512DQ-NEXT: vmovq %rdx, %xmm4 2194; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0] 2195; AVX512DQ-NEXT: vextractf64x2 $2, %zmm2, %xmm5 2196; AVX512DQ-NEXT: vextractf64x2 $2, %zmm0, %xmm6 2197; AVX512DQ-NEXT: vucomisd %xmm5, %xmm6 2198; AVX512DQ-NEXT: movl $0, %edx 2199; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2200; AVX512DQ-NEXT: vmovq %rdx, %xmm7 2201; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2202; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm6 = xmm6[1,0] 2203; AVX512DQ-NEXT: vucomisd %xmm5, %xmm6 2204; AVX512DQ-NEXT: movl $0, %edx 2205; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2206; AVX512DQ-NEXT: vmovq %rdx, %xmm5 2207; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm7[0],xmm5[0] 2208; AVX512DQ-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4 2209; AVX512DQ-NEXT: vextractf64x2 $1, %zmm2, %xmm5 2210; AVX512DQ-NEXT: vextractf64x2 $1, %zmm0, %xmm6 2211; AVX512DQ-NEXT: vucomisd %xmm5, %xmm6 2212; AVX512DQ-NEXT: movl $0, %edx 2213; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2214; AVX512DQ-NEXT: vmovq %rdx, %xmm7 2215; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2216; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm6 = xmm6[1,0] 2217; AVX512DQ-NEXT: vucomisd %xmm5, %xmm6 2218; AVX512DQ-NEXT: movl $0, %edx 2219; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2220; AVX512DQ-NEXT: vmovq %rdx, %xmm5 2221; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm7[0],xmm5[0] 2222; AVX512DQ-NEXT: vucomisd %xmm2, %xmm0 2223; AVX512DQ-NEXT: movl $0, %edx 2224; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2225; AVX512DQ-NEXT: vmovq %rdx, %xmm6 2226; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 2227; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 2228; AVX512DQ-NEXT: vucomisd %xmm2, %xmm0 2229; AVX512DQ-NEXT: movl $0, %edx 2230; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2231; AVX512DQ-NEXT: vmovq %rdx, %xmm0 2232; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm6[0],xmm0[0] 2233; AVX512DQ-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0 2234; AVX512DQ-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm0 2235; AVX512DQ-NEXT: vpmovqd %zmm0, %ymm0 2236; AVX512DQ-NEXT: vextractf64x2 $3, %zmm3, %xmm2 2237; AVX512DQ-NEXT: vextractf64x2 $3, %zmm1, %xmm4 2238; AVX512DQ-NEXT: vucomisd %xmm2, %xmm4 2239; AVX512DQ-NEXT: movl $0, %edx 2240; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2241; AVX512DQ-NEXT: vmovq %rdx, %xmm5 2242; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 2243; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2244; AVX512DQ-NEXT: vucomisd %xmm2, %xmm4 2245; AVX512DQ-NEXT: movl $0, %edx 2246; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2247; AVX512DQ-NEXT: vmovq %rdx, %xmm2 2248; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm5[0],xmm2[0] 2249; AVX512DQ-NEXT: vextractf64x2 $2, %zmm3, %xmm4 2250; AVX512DQ-NEXT: vextractf64x2 $2, %zmm1, %xmm5 2251; AVX512DQ-NEXT: vucomisd %xmm4, %xmm5 2252; AVX512DQ-NEXT: movl $0, %edx 2253; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2254; AVX512DQ-NEXT: vmovq %rdx, %xmm6 2255; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2256; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2257; AVX512DQ-NEXT: vucomisd %xmm4, %xmm5 2258; AVX512DQ-NEXT: movl $0, %edx 2259; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2260; AVX512DQ-NEXT: vmovq %rdx, %xmm4 2261; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0] 2262; AVX512DQ-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2 2263; AVX512DQ-NEXT: vextractf64x2 $1, %zmm3, %xmm4 2264; AVX512DQ-NEXT: vextractf64x2 $1, %zmm1, %xmm5 2265; AVX512DQ-NEXT: vucomisd %xmm4, %xmm5 2266; AVX512DQ-NEXT: movl $0, %edx 2267; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2268; AVX512DQ-NEXT: vmovq %rdx, %xmm6 2269; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2270; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2271; AVX512DQ-NEXT: vucomisd %xmm4, %xmm5 2272; AVX512DQ-NEXT: movl $0, %edx 2273; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2274; AVX512DQ-NEXT: vmovq %rdx, %xmm4 2275; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0] 2276; AVX512DQ-NEXT: vucomisd %xmm3, %xmm1 2277; AVX512DQ-NEXT: movl $0, %edx 2278; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2279; AVX512DQ-NEXT: vmovq %rdx, %xmm5 2280; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm3 = xmm3[1,0] 2281; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 2282; AVX512DQ-NEXT: vucomisd %xmm3, %xmm1 2283; AVX512DQ-NEXT: cmovaq %rcx, %rax 2284; AVX512DQ-NEXT: vmovq %rax, %xmm1 2285; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm5[0],xmm1[0] 2286; AVX512DQ-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1 2287; AVX512DQ-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1 2288; AVX512DQ-NEXT: vpmovqd %zmm1, %ymm1 2289; AVX512DQ-NEXT: vinserti32x8 $1, %ymm1, %zmm0, %zmm0 2290; AVX512DQ-NEXT: vpmovdb %zmm0, %xmm0 2291; AVX512DQ-NEXT: retq 2292; 2293; AVX512BW-LABEL: test_cmp_v16f64: 2294; AVX512BW: # BB#0: 2295; AVX512BW-NEXT: vextractf32x4 $3, %zmm2, %xmm4 2296; AVX512BW-NEXT: vextractf32x4 $3, %zmm0, %xmm5 2297; AVX512BW-NEXT: xorl %eax, %eax 2298; AVX512BW-NEXT: vucomisd %xmm4, %xmm5 2299; AVX512BW-NEXT: movq $-1, %rcx 2300; AVX512BW-NEXT: movl $0, %edx 2301; AVX512BW-NEXT: cmovaq %rcx, %rdx 2302; AVX512BW-NEXT: vmovq %rdx, %xmm6 2303; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2304; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2305; AVX512BW-NEXT: vucomisd %xmm4, %xmm5 2306; AVX512BW-NEXT: movl $0, %edx 2307; AVX512BW-NEXT: cmovaq %rcx, %rdx 2308; AVX512BW-NEXT: vmovq %rdx, %xmm4 2309; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0] 2310; AVX512BW-NEXT: vextractf32x4 $2, %zmm2, %xmm5 2311; AVX512BW-NEXT: vextractf32x4 $2, %zmm0, %xmm6 2312; AVX512BW-NEXT: vucomisd %xmm5, %xmm6 2313; AVX512BW-NEXT: movl $0, %edx 2314; AVX512BW-NEXT: cmovaq %rcx, %rdx 2315; AVX512BW-NEXT: vmovq %rdx, %xmm7 2316; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2317; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm6 = xmm6[1,0] 2318; AVX512BW-NEXT: vucomisd %xmm5, %xmm6 2319; AVX512BW-NEXT: movl $0, %edx 2320; AVX512BW-NEXT: cmovaq %rcx, %rdx 2321; AVX512BW-NEXT: vmovq %rdx, %xmm5 2322; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm7[0],xmm5[0] 2323; AVX512BW-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4 2324; AVX512BW-NEXT: vextractf32x4 $1, %zmm2, %xmm5 2325; AVX512BW-NEXT: vextractf32x4 $1, %zmm0, %xmm6 2326; AVX512BW-NEXT: vucomisd %xmm5, %xmm6 2327; AVX512BW-NEXT: movl $0, %edx 2328; AVX512BW-NEXT: cmovaq %rcx, %rdx 2329; AVX512BW-NEXT: vmovq %rdx, %xmm7 2330; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2331; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm6 = xmm6[1,0] 2332; AVX512BW-NEXT: vucomisd %xmm5, %xmm6 2333; AVX512BW-NEXT: movl $0, %edx 2334; AVX512BW-NEXT: cmovaq %rcx, %rdx 2335; AVX512BW-NEXT: vmovq %rdx, %xmm5 2336; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm7[0],xmm5[0] 2337; AVX512BW-NEXT: vucomisd %xmm2, %xmm0 2338; AVX512BW-NEXT: movl $0, %edx 2339; AVX512BW-NEXT: cmovaq %rcx, %rdx 2340; AVX512BW-NEXT: vmovq %rdx, %xmm6 2341; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 2342; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 2343; AVX512BW-NEXT: vucomisd %xmm2, %xmm0 2344; AVX512BW-NEXT: movl $0, %edx 2345; AVX512BW-NEXT: cmovaq %rcx, %rdx 2346; AVX512BW-NEXT: vmovq %rdx, %xmm0 2347; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm6[0],xmm0[0] 2348; AVX512BW-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0 2349; AVX512BW-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm0 2350; AVX512BW-NEXT: vpmovqd %zmm0, %ymm0 2351; AVX512BW-NEXT: vextractf32x4 $3, %zmm3, %xmm2 2352; AVX512BW-NEXT: vextractf32x4 $3, %zmm1, %xmm4 2353; AVX512BW-NEXT: vucomisd %xmm2, %xmm4 2354; AVX512BW-NEXT: movl $0, %edx 2355; AVX512BW-NEXT: cmovaq %rcx, %rdx 2356; AVX512BW-NEXT: vmovq %rdx, %xmm5 2357; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 2358; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2359; AVX512BW-NEXT: vucomisd %xmm2, %xmm4 2360; AVX512BW-NEXT: movl $0, %edx 2361; AVX512BW-NEXT: cmovaq %rcx, %rdx 2362; AVX512BW-NEXT: vmovq %rdx, %xmm2 2363; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm5[0],xmm2[0] 2364; AVX512BW-NEXT: vextractf32x4 $2, %zmm3, %xmm4 2365; AVX512BW-NEXT: vextractf32x4 $2, %zmm1, %xmm5 2366; AVX512BW-NEXT: vucomisd %xmm4, %xmm5 2367; AVX512BW-NEXT: movl $0, %edx 2368; AVX512BW-NEXT: cmovaq %rcx, %rdx 2369; AVX512BW-NEXT: vmovq %rdx, %xmm6 2370; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2371; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2372; AVX512BW-NEXT: vucomisd %xmm4, %xmm5 2373; AVX512BW-NEXT: movl $0, %edx 2374; AVX512BW-NEXT: cmovaq %rcx, %rdx 2375; AVX512BW-NEXT: vmovq %rdx, %xmm4 2376; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0] 2377; AVX512BW-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2 2378; AVX512BW-NEXT: vextractf32x4 $1, %zmm3, %xmm4 2379; AVX512BW-NEXT: vextractf32x4 $1, %zmm1, %xmm5 2380; AVX512BW-NEXT: vucomisd %xmm4, %xmm5 2381; AVX512BW-NEXT: movl $0, %edx 2382; AVX512BW-NEXT: cmovaq %rcx, %rdx 2383; AVX512BW-NEXT: vmovq %rdx, %xmm6 2384; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2385; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2386; AVX512BW-NEXT: vucomisd %xmm4, %xmm5 2387; AVX512BW-NEXT: movl $0, %edx 2388; AVX512BW-NEXT: cmovaq %rcx, %rdx 2389; AVX512BW-NEXT: vmovq %rdx, %xmm4 2390; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0] 2391; AVX512BW-NEXT: vucomisd %xmm3, %xmm1 2392; AVX512BW-NEXT: movl $0, %edx 2393; AVX512BW-NEXT: cmovaq %rcx, %rdx 2394; AVX512BW-NEXT: vmovq %rdx, %xmm5 2395; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm3 = xmm3[1,0] 2396; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 2397; AVX512BW-NEXT: vucomisd %xmm3, %xmm1 2398; AVX512BW-NEXT: cmovaq %rcx, %rax 2399; AVX512BW-NEXT: vmovq %rax, %xmm1 2400; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm5[0],xmm1[0] 2401; AVX512BW-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1 2402; AVX512BW-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1 2403; AVX512BW-NEXT: vpmovqd %zmm1, %ymm1 2404; AVX512BW-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 2405; AVX512BW-NEXT: vpmovdb %zmm0, %xmm0 2406; AVX512BW-NEXT: retq 2407 %1 = fcmp ogt <16 x double> %a0, %a1 2408 ret <16 x i1> %1 2409} 2410 2411define <32 x i1> @test_cmp_v32f32(<32 x float> %a0, <32 x float> %a1) nounwind { 2412; SSE2-LABEL: test_cmp_v32f32: 2413; SSE2: # BB#0: 2414; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm8 2415; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm9 2416; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm10 2417; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm11 2418; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm12 2419; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm13 2420; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm14 2421; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm15 2422; SSE2-NEXT: cmpltps %xmm3, %xmm15 2423; SSE2-NEXT: pshuflw {{.*#+}} xmm3 = xmm15[0,2,2,3,4,5,6,7] 2424; SSE2-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,6,6,7] 2425; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3] 2426; SSE2-NEXT: cmpltps %xmm2, %xmm14 2427; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm14[0,2,2,3,4,5,6,7] 2428; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7] 2429; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] 2430; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0] 2431; SSE2-NEXT: psllw $15, %xmm2 2432; SSE2-NEXT: psraw $15, %xmm2 2433; SSE2-NEXT: movdqa {{.*#+}} xmm3 = [255,255,255,255,255,255,255,255] 2434; SSE2-NEXT: pand %xmm3, %xmm2 2435; SSE2-NEXT: cmpltps %xmm1, %xmm13 2436; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm13[0,2,2,3,4,5,6,7] 2437; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 2438; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 2439; SSE2-NEXT: cmpltps %xmm0, %xmm12 2440; SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm12[0,2,2,3,4,5,6,7] 2441; SSE2-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,6,7] 2442; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3] 2443; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 2444; SSE2-NEXT: psllw $15, %xmm0 2445; SSE2-NEXT: psraw $15, %xmm0 2446; SSE2-NEXT: pand %xmm3, %xmm0 2447; SSE2-NEXT: packuswb %xmm2, %xmm0 2448; SSE2-NEXT: cmpltps %xmm7, %xmm11 2449; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm11[0,2,2,3,4,5,6,7] 2450; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 2451; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 2452; SSE2-NEXT: cmpltps %xmm6, %xmm10 2453; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm10[0,2,2,3,4,5,6,7] 2454; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7] 2455; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] 2456; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm1[0] 2457; SSE2-NEXT: psllw $15, %xmm2 2458; SSE2-NEXT: psraw $15, %xmm2 2459; SSE2-NEXT: pand %xmm3, %xmm2 2460; SSE2-NEXT: cmpltps %xmm5, %xmm9 2461; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm9[0,2,2,3,4,5,6,7] 2462; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 2463; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 2464; SSE2-NEXT: cmpltps %xmm4, %xmm8 2465; SSE2-NEXT: pshuflw {{.*#+}} xmm4 = xmm8[0,2,2,3,4,5,6,7] 2466; SSE2-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,6,6,7] 2467; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3] 2468; SSE2-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm1[0] 2469; SSE2-NEXT: psllw $15, %xmm4 2470; SSE2-NEXT: psraw $15, %xmm4 2471; SSE2-NEXT: pand %xmm3, %xmm4 2472; SSE2-NEXT: packuswb %xmm2, %xmm4 2473; SSE2-NEXT: movdqa %xmm4, -{{[0-9]+}}(%rsp) 2474; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2475; SSE2-NEXT: andb $1, %al 2476; SSE2-NEXT: movb %al, 2(%rdi) 2477; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 2478; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2479; SSE2-NEXT: andb $1, %al 2480; SSE2-NEXT: movb %al, (%rdi) 2481; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2482; SSE2-NEXT: andb $1, %al 2483; SSE2-NEXT: movb %al, 2(%rdi) 2484; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2485; SSE2-NEXT: andb $1, %al 2486; SSE2-NEXT: movb %al, (%rdi) 2487; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2488; SSE2-NEXT: andb $1, %al 2489; SSE2-NEXT: movb %al, 2(%rdi) 2490; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2491; SSE2-NEXT: andb $1, %al 2492; SSE2-NEXT: movb %al, (%rdi) 2493; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2494; SSE2-NEXT: andb $1, %al 2495; SSE2-NEXT: movb %al, 2(%rdi) 2496; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2497; SSE2-NEXT: andb $1, %al 2498; SSE2-NEXT: movb %al, (%rdi) 2499; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2500; SSE2-NEXT: andb $1, %al 2501; SSE2-NEXT: movb %al, 2(%rdi) 2502; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2503; SSE2-NEXT: andb $1, %al 2504; SSE2-NEXT: movb %al, (%rdi) 2505; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2506; SSE2-NEXT: andb $1, %al 2507; SSE2-NEXT: movb %al, 2(%rdi) 2508; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2509; SSE2-NEXT: andb $1, %al 2510; SSE2-NEXT: movb %al, (%rdi) 2511; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2512; SSE2-NEXT: andb $1, %al 2513; SSE2-NEXT: movb %al, 2(%rdi) 2514; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2515; SSE2-NEXT: andb $1, %al 2516; SSE2-NEXT: movb %al, (%rdi) 2517; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2518; SSE2-NEXT: andb $1, %al 2519; SSE2-NEXT: movb %al, 2(%rdi) 2520; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2521; SSE2-NEXT: andb $1, %al 2522; SSE2-NEXT: movb %al, (%rdi) 2523; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2524; SSE2-NEXT: andb $1, %al 2525; SSE2-NEXT: movb %al, 2(%rdi) 2526; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2527; SSE2-NEXT: andb $1, %al 2528; SSE2-NEXT: movb %al, (%rdi) 2529; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2530; SSE2-NEXT: andb $1, %al 2531; SSE2-NEXT: movb %al, 2(%rdi) 2532; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2533; SSE2-NEXT: andb $1, %al 2534; SSE2-NEXT: movb %al, (%rdi) 2535; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2536; SSE2-NEXT: andb $1, %al 2537; SSE2-NEXT: movb %al, 2(%rdi) 2538; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2539; SSE2-NEXT: andb $1, %al 2540; SSE2-NEXT: movb %al, (%rdi) 2541; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2542; SSE2-NEXT: andb $1, %al 2543; SSE2-NEXT: movb %al, 2(%rdi) 2544; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2545; SSE2-NEXT: andb $1, %al 2546; SSE2-NEXT: movb %al, (%rdi) 2547; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2548; SSE2-NEXT: andb $1, %al 2549; SSE2-NEXT: movb %al, 2(%rdi) 2550; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2551; SSE2-NEXT: andb $1, %al 2552; SSE2-NEXT: movb %al, (%rdi) 2553; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2554; SSE2-NEXT: andb $1, %al 2555; SSE2-NEXT: movb %al, 2(%rdi) 2556; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2557; SSE2-NEXT: andb $1, %al 2558; SSE2-NEXT: movb %al, (%rdi) 2559; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2560; SSE2-NEXT: andb $1, %al 2561; SSE2-NEXT: movb %al, 2(%rdi) 2562; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2563; SSE2-NEXT: andb $1, %al 2564; SSE2-NEXT: movb %al, (%rdi) 2565; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2566; SSE2-NEXT: andb $1, %al 2567; SSE2-NEXT: movb %al, 2(%rdi) 2568; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2569; SSE2-NEXT: andb $1, %al 2570; SSE2-NEXT: movb %al, (%rdi) 2571; SSE2-NEXT: movq %rdi, %rax 2572; SSE2-NEXT: retq 2573; 2574; SSE42-LABEL: test_cmp_v32f32: 2575; SSE42: # BB#0: 2576; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm9 2577; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm11 2578; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm10 2579; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm12 2580; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm8 2581; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm14 2582; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm13 2583; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm15 2584; SSE42-NEXT: cmpltps %xmm3, %xmm15 2585; SSE42-NEXT: movdqa {{.*#+}} xmm3 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15] 2586; SSE42-NEXT: pshufb %xmm3, %xmm15 2587; SSE42-NEXT: cmpltps %xmm2, %xmm13 2588; SSE42-NEXT: pshufb %xmm3, %xmm13 2589; SSE42-NEXT: punpcklqdq {{.*#+}} xmm13 = xmm13[0],xmm15[0] 2590; SSE42-NEXT: psllw $15, %xmm13 2591; SSE42-NEXT: psraw $15, %xmm13 2592; SSE42-NEXT: movdqa {{.*#+}} xmm2 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u> 2593; SSE42-NEXT: pshufb %xmm2, %xmm13 2594; SSE42-NEXT: cmpltps %xmm1, %xmm14 2595; SSE42-NEXT: pshufb %xmm3, %xmm14 2596; SSE42-NEXT: cmpltps %xmm0, %xmm8 2597; SSE42-NEXT: pshufb %xmm3, %xmm8 2598; SSE42-NEXT: punpcklqdq {{.*#+}} xmm8 = xmm8[0],xmm14[0] 2599; SSE42-NEXT: psllw $15, %xmm8 2600; SSE42-NEXT: psraw $15, %xmm8 2601; SSE42-NEXT: pshufb %xmm2, %xmm8 2602; SSE42-NEXT: punpcklqdq {{.*#+}} xmm8 = xmm8[0],xmm13[0] 2603; SSE42-NEXT: cmpltps %xmm7, %xmm12 2604; SSE42-NEXT: pshufb %xmm3, %xmm12 2605; SSE42-NEXT: cmpltps %xmm6, %xmm10 2606; SSE42-NEXT: pshufb %xmm3, %xmm10 2607; SSE42-NEXT: punpcklqdq {{.*#+}} xmm10 = xmm10[0],xmm12[0] 2608; SSE42-NEXT: psllw $15, %xmm10 2609; SSE42-NEXT: psraw $15, %xmm10 2610; SSE42-NEXT: pshufb %xmm2, %xmm10 2611; SSE42-NEXT: cmpltps %xmm5, %xmm11 2612; SSE42-NEXT: pshufb %xmm3, %xmm11 2613; SSE42-NEXT: cmpltps %xmm4, %xmm9 2614; SSE42-NEXT: pshufb %xmm3, %xmm9 2615; SSE42-NEXT: punpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm11[0] 2616; SSE42-NEXT: psllw $15, %xmm9 2617; SSE42-NEXT: psraw $15, %xmm9 2618; SSE42-NEXT: pshufb %xmm2, %xmm9 2619; SSE42-NEXT: punpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm10[0] 2620; SSE42-NEXT: pextrb $15, %xmm9, %eax 2621; SSE42-NEXT: andb $1, %al 2622; SSE42-NEXT: movb %al, 2(%rdi) 2623; SSE42-NEXT: pextrb $14, %xmm9, %eax 2624; SSE42-NEXT: andb $1, %al 2625; SSE42-NEXT: movb %al, 2(%rdi) 2626; SSE42-NEXT: pextrb $13, %xmm9, %eax 2627; SSE42-NEXT: andb $1, %al 2628; SSE42-NEXT: movb %al, 2(%rdi) 2629; SSE42-NEXT: pextrb $12, %xmm9, %eax 2630; SSE42-NEXT: andb $1, %al 2631; SSE42-NEXT: movb %al, 2(%rdi) 2632; SSE42-NEXT: pextrb $11, %xmm9, %eax 2633; SSE42-NEXT: andb $1, %al 2634; SSE42-NEXT: movb %al, 2(%rdi) 2635; SSE42-NEXT: pextrb $10, %xmm9, %eax 2636; SSE42-NEXT: andb $1, %al 2637; SSE42-NEXT: movb %al, 2(%rdi) 2638; SSE42-NEXT: pextrb $9, %xmm9, %eax 2639; SSE42-NEXT: andb $1, %al 2640; SSE42-NEXT: movb %al, 2(%rdi) 2641; SSE42-NEXT: pextrb $8, %xmm9, %eax 2642; SSE42-NEXT: andb $1, %al 2643; SSE42-NEXT: movb %al, 2(%rdi) 2644; SSE42-NEXT: pextrb $7, %xmm9, %eax 2645; SSE42-NEXT: andb $1, %al 2646; SSE42-NEXT: movb %al, 2(%rdi) 2647; SSE42-NEXT: pextrb $6, %xmm9, %eax 2648; SSE42-NEXT: andb $1, %al 2649; SSE42-NEXT: movb %al, 2(%rdi) 2650; SSE42-NEXT: pextrb $5, %xmm9, %eax 2651; SSE42-NEXT: andb $1, %al 2652; SSE42-NEXT: movb %al, 2(%rdi) 2653; SSE42-NEXT: pextrb $4, %xmm9, %eax 2654; SSE42-NEXT: andb $1, %al 2655; SSE42-NEXT: movb %al, 2(%rdi) 2656; SSE42-NEXT: pextrb $3, %xmm9, %eax 2657; SSE42-NEXT: andb $1, %al 2658; SSE42-NEXT: movb %al, 2(%rdi) 2659; SSE42-NEXT: pextrb $2, %xmm9, %eax 2660; SSE42-NEXT: andb $1, %al 2661; SSE42-NEXT: movb %al, 2(%rdi) 2662; SSE42-NEXT: pextrb $1, %xmm9, %eax 2663; SSE42-NEXT: andb $1, %al 2664; SSE42-NEXT: movb %al, 2(%rdi) 2665; SSE42-NEXT: pextrb $0, %xmm9, %eax 2666; SSE42-NEXT: andb $1, %al 2667; SSE42-NEXT: movb %al, 2(%rdi) 2668; SSE42-NEXT: pextrb $15, %xmm8, %eax 2669; SSE42-NEXT: andb $1, %al 2670; SSE42-NEXT: movb %al, (%rdi) 2671; SSE42-NEXT: pextrb $14, %xmm8, %eax 2672; SSE42-NEXT: andb $1, %al 2673; SSE42-NEXT: movb %al, (%rdi) 2674; SSE42-NEXT: pextrb $13, %xmm8, %eax 2675; SSE42-NEXT: andb $1, %al 2676; SSE42-NEXT: movb %al, (%rdi) 2677; SSE42-NEXT: pextrb $12, %xmm8, %eax 2678; SSE42-NEXT: andb $1, %al 2679; SSE42-NEXT: movb %al, (%rdi) 2680; SSE42-NEXT: pextrb $11, %xmm8, %eax 2681; SSE42-NEXT: andb $1, %al 2682; SSE42-NEXT: movb %al, (%rdi) 2683; SSE42-NEXT: pextrb $10, %xmm8, %eax 2684; SSE42-NEXT: andb $1, %al 2685; SSE42-NEXT: movb %al, (%rdi) 2686; SSE42-NEXT: pextrb $9, %xmm8, %eax 2687; SSE42-NEXT: andb $1, %al 2688; SSE42-NEXT: movb %al, (%rdi) 2689; SSE42-NEXT: pextrb $8, %xmm8, %eax 2690; SSE42-NEXT: andb $1, %al 2691; SSE42-NEXT: movb %al, (%rdi) 2692; SSE42-NEXT: pextrb $7, %xmm8, %eax 2693; SSE42-NEXT: andb $1, %al 2694; SSE42-NEXT: movb %al, (%rdi) 2695; SSE42-NEXT: pextrb $6, %xmm8, %eax 2696; SSE42-NEXT: andb $1, %al 2697; SSE42-NEXT: movb %al, (%rdi) 2698; SSE42-NEXT: pextrb $5, %xmm8, %eax 2699; SSE42-NEXT: andb $1, %al 2700; SSE42-NEXT: movb %al, (%rdi) 2701; SSE42-NEXT: pextrb $4, %xmm8, %eax 2702; SSE42-NEXT: andb $1, %al 2703; SSE42-NEXT: movb %al, (%rdi) 2704; SSE42-NEXT: pextrb $3, %xmm8, %eax 2705; SSE42-NEXT: andb $1, %al 2706; SSE42-NEXT: movb %al, (%rdi) 2707; SSE42-NEXT: pextrb $2, %xmm8, %eax 2708; SSE42-NEXT: andb $1, %al 2709; SSE42-NEXT: movb %al, (%rdi) 2710; SSE42-NEXT: pextrb $1, %xmm8, %eax 2711; SSE42-NEXT: andb $1, %al 2712; SSE42-NEXT: movb %al, (%rdi) 2713; SSE42-NEXT: pextrb $0, %xmm8, %eax 2714; SSE42-NEXT: andb $1, %al 2715; SSE42-NEXT: movb %al, (%rdi) 2716; SSE42-NEXT: movq %rdi, %rax 2717; SSE42-NEXT: retq 2718; 2719; AVX1-LABEL: test_cmp_v32f32: 2720; AVX1: # BB#0: 2721; AVX1-NEXT: vcmpltps %ymm3, %ymm7, %ymm3 2722; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm7 2723; AVX1-NEXT: vpacksswb %xmm7, %xmm3, %xmm3 2724; AVX1-NEXT: vcmpltps %ymm2, %ymm6, %ymm2 2725; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm6 2726; AVX1-NEXT: vpacksswb %xmm6, %xmm2, %xmm2 2727; AVX1-NEXT: vpacksswb %xmm3, %xmm2, %xmm2 2728; AVX1-NEXT: vcmpltps %ymm1, %ymm5, %ymm1 2729; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 2730; AVX1-NEXT: vpacksswb %xmm3, %xmm1, %xmm1 2731; AVX1-NEXT: vcmpltps %ymm0, %ymm4, %ymm0 2732; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 2733; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 2734; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 2735; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 2736; AVX1-NEXT: retq 2737; 2738; AVX2-LABEL: test_cmp_v32f32: 2739; AVX2: # BB#0: 2740; AVX2-NEXT: vcmpltps %ymm3, %ymm7, %ymm3 2741; AVX2-NEXT: vcmpltps %ymm2, %ymm6, %ymm2 2742; AVX2-NEXT: vpacksswb %ymm3, %ymm2, %ymm2 2743; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,1,3] 2744; AVX2-NEXT: vcmpltps %ymm1, %ymm5, %ymm1 2745; AVX2-NEXT: vcmpltps %ymm0, %ymm4, %ymm0 2746; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 2747; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 2748; AVX2-NEXT: vpacksswb %ymm2, %ymm0, %ymm0 2749; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 2750; AVX2-NEXT: retq 2751; 2752; AVX512F-LABEL: test_cmp_v32f32: 2753; AVX512F: # BB#0: 2754; AVX512F-NEXT: vextractf32x4 $3, %zmm2, %xmm4 2755; AVX512F-NEXT: vmovshdup {{.*#+}} xmm5 = xmm4[1,1,3,3] 2756; AVX512F-NEXT: vextractf32x4 $3, %zmm0, %xmm6 2757; AVX512F-NEXT: vmovshdup {{.*#+}} xmm7 = xmm6[1,1,3,3] 2758; AVX512F-NEXT: xorl %eax, %eax 2759; AVX512F-NEXT: vucomiss %xmm5, %xmm7 2760; AVX512F-NEXT: movl $-1, %ecx 2761; AVX512F-NEXT: movl $0, %edx 2762; AVX512F-NEXT: cmoval %ecx, %edx 2763; AVX512F-NEXT: vucomiss %xmm4, %xmm6 2764; AVX512F-NEXT: movl $0, %esi 2765; AVX512F-NEXT: cmoval %ecx, %esi 2766; AVX512F-NEXT: vmovd %esi, %xmm5 2767; AVX512F-NEXT: vpinsrd $1, %edx, %xmm5, %xmm8 2768; AVX512F-NEXT: vpermilpd {{.*#+}} xmm7 = xmm4[1,0] 2769; AVX512F-NEXT: vpermilpd {{.*#+}} xmm5 = xmm6[1,0] 2770; AVX512F-NEXT: vucomiss %xmm7, %xmm5 2771; AVX512F-NEXT: movl $0, %edx 2772; AVX512F-NEXT: cmoval %ecx, %edx 2773; AVX512F-NEXT: vpinsrd $2, %edx, %xmm8, %xmm5 2774; AVX512F-NEXT: vpermilps {{.*#+}} xmm4 = xmm4[3,1,2,3] 2775; AVX512F-NEXT: vpermilps {{.*#+}} xmm6 = xmm6[3,1,2,3] 2776; AVX512F-NEXT: vucomiss %xmm4, %xmm6 2777; AVX512F-NEXT: movl $0, %edx 2778; AVX512F-NEXT: cmoval %ecx, %edx 2779; AVX512F-NEXT: vpinsrd $3, %edx, %xmm5, %xmm8 2780; AVX512F-NEXT: vextractf32x4 $2, %zmm2, %xmm5 2781; AVX512F-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 2782; AVX512F-NEXT: vextractf32x4 $2, %zmm0, %xmm7 2783; AVX512F-NEXT: vmovshdup {{.*#+}} xmm4 = xmm7[1,1,3,3] 2784; AVX512F-NEXT: vucomiss %xmm6, %xmm4 2785; AVX512F-NEXT: movl $0, %edx 2786; AVX512F-NEXT: cmoval %ecx, %edx 2787; AVX512F-NEXT: vucomiss %xmm5, %xmm7 2788; AVX512F-NEXT: movl $0, %esi 2789; AVX512F-NEXT: cmoval %ecx, %esi 2790; AVX512F-NEXT: vmovd %esi, %xmm4 2791; AVX512F-NEXT: vpinsrd $1, %edx, %xmm4, %xmm9 2792; AVX512F-NEXT: vpermilpd {{.*#+}} xmm6 = xmm5[1,0] 2793; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm7[1,0] 2794; AVX512F-NEXT: vucomiss %xmm6, %xmm4 2795; AVX512F-NEXT: movl $0, %edx 2796; AVX512F-NEXT: cmoval %ecx, %edx 2797; AVX512F-NEXT: vpinsrd $2, %edx, %xmm9, %xmm4 2798; AVX512F-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 2799; AVX512F-NEXT: vpermilps {{.*#+}} xmm6 = xmm7[3,1,2,3] 2800; AVX512F-NEXT: vucomiss %xmm5, %xmm6 2801; AVX512F-NEXT: movl $0, %edx 2802; AVX512F-NEXT: cmoval %ecx, %edx 2803; AVX512F-NEXT: vpinsrd $3, %edx, %xmm4, %xmm4 2804; AVX512F-NEXT: vinserti128 $1, %xmm8, %ymm4, %ymm8 2805; AVX512F-NEXT: vextractf32x4 $1, %zmm2, %xmm5 2806; AVX512F-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 2807; AVX512F-NEXT: vextractf32x4 $1, %zmm0, %xmm7 2808; AVX512F-NEXT: vmovshdup {{.*#+}} xmm4 = xmm7[1,1,3,3] 2809; AVX512F-NEXT: vucomiss %xmm6, %xmm4 2810; AVX512F-NEXT: movl $0, %edx 2811; AVX512F-NEXT: cmoval %ecx, %edx 2812; AVX512F-NEXT: vucomiss %xmm5, %xmm7 2813; AVX512F-NEXT: movl $0, %esi 2814; AVX512F-NEXT: cmoval %ecx, %esi 2815; AVX512F-NEXT: vmovd %esi, %xmm4 2816; AVX512F-NEXT: vpinsrd $1, %edx, %xmm4, %xmm9 2817; AVX512F-NEXT: vpermilpd {{.*#+}} xmm6 = xmm5[1,0] 2818; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm7[1,0] 2819; AVX512F-NEXT: vucomiss %xmm6, %xmm4 2820; AVX512F-NEXT: movl $0, %edx 2821; AVX512F-NEXT: cmoval %ecx, %edx 2822; AVX512F-NEXT: vpinsrd $2, %edx, %xmm9, %xmm4 2823; AVX512F-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 2824; AVX512F-NEXT: vpermilps {{.*#+}} xmm6 = xmm7[3,1,2,3] 2825; AVX512F-NEXT: vucomiss %xmm5, %xmm6 2826; AVX512F-NEXT: movl $0, %edx 2827; AVX512F-NEXT: cmoval %ecx, %edx 2828; AVX512F-NEXT: vpinsrd $3, %edx, %xmm4, %xmm4 2829; AVX512F-NEXT: vmovshdup {{.*#+}} xmm5 = xmm2[1,1,3,3] 2830; AVX512F-NEXT: vmovshdup {{.*#+}} xmm6 = xmm0[1,1,3,3] 2831; AVX512F-NEXT: vucomiss %xmm5, %xmm6 2832; AVX512F-NEXT: movl $0, %edx 2833; AVX512F-NEXT: cmoval %ecx, %edx 2834; AVX512F-NEXT: vucomiss %xmm2, %xmm0 2835; AVX512F-NEXT: movl $0, %esi 2836; AVX512F-NEXT: cmoval %ecx, %esi 2837; AVX512F-NEXT: vmovd %esi, %xmm5 2838; AVX512F-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 2839; AVX512F-NEXT: vpermilpd {{.*#+}} xmm6 = xmm2[1,0] 2840; AVX512F-NEXT: vpermilpd {{.*#+}} xmm7 = xmm0[1,0] 2841; AVX512F-NEXT: vucomiss %xmm6, %xmm7 2842; AVX512F-NEXT: movl $0, %edx 2843; AVX512F-NEXT: cmoval %ecx, %edx 2844; AVX512F-NEXT: vpinsrd $2, %edx, %xmm5, %xmm5 2845; AVX512F-NEXT: vpermilps {{.*#+}} xmm2 = xmm2[3,1,2,3] 2846; AVX512F-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,1,2,3] 2847; AVX512F-NEXT: vucomiss %xmm2, %xmm0 2848; AVX512F-NEXT: movl $0, %edx 2849; AVX512F-NEXT: cmoval %ecx, %edx 2850; AVX512F-NEXT: vpinsrd $3, %edx, %xmm5, %xmm0 2851; AVX512F-NEXT: vinserti128 $1, %xmm4, %ymm0, %ymm0 2852; AVX512F-NEXT: vinserti64x4 $1, %ymm8, %zmm0, %zmm0 2853; AVX512F-NEXT: vpmovdb %zmm0, %xmm8 2854; AVX512F-NEXT: vextractf32x4 $3, %zmm3, %xmm2 2855; AVX512F-NEXT: vmovshdup {{.*#+}} xmm4 = xmm2[1,1,3,3] 2856; AVX512F-NEXT: vextractf32x4 $3, %zmm1, %xmm5 2857; AVX512F-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 2858; AVX512F-NEXT: vucomiss %xmm4, %xmm6 2859; AVX512F-NEXT: movl $0, %edx 2860; AVX512F-NEXT: cmoval %ecx, %edx 2861; AVX512F-NEXT: vucomiss %xmm2, %xmm5 2862; AVX512F-NEXT: movl $0, %esi 2863; AVX512F-NEXT: cmoval %ecx, %esi 2864; AVX512F-NEXT: vmovd %esi, %xmm4 2865; AVX512F-NEXT: vpinsrd $1, %edx, %xmm4, %xmm4 2866; AVX512F-NEXT: vpermilpd {{.*#+}} xmm6 = xmm2[1,0] 2867; AVX512F-NEXT: vpermilpd {{.*#+}} xmm7 = xmm5[1,0] 2868; AVX512F-NEXT: vucomiss %xmm6, %xmm7 2869; AVX512F-NEXT: movl $0, %edx 2870; AVX512F-NEXT: cmoval %ecx, %edx 2871; AVX512F-NEXT: vpinsrd $2, %edx, %xmm4, %xmm4 2872; AVX512F-NEXT: vpermilps {{.*#+}} xmm2 = xmm2[3,1,2,3] 2873; AVX512F-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 2874; AVX512F-NEXT: vucomiss %xmm2, %xmm5 2875; AVX512F-NEXT: movl $0, %edx 2876; AVX512F-NEXT: cmoval %ecx, %edx 2877; AVX512F-NEXT: vpinsrd $3, %edx, %xmm4, %xmm2 2878; AVX512F-NEXT: vextractf32x4 $2, %zmm3, %xmm4 2879; AVX512F-NEXT: vmovshdup {{.*#+}} xmm5 = xmm4[1,1,3,3] 2880; AVX512F-NEXT: vextractf32x4 $2, %zmm1, %xmm6 2881; AVX512F-NEXT: vmovshdup {{.*#+}} xmm7 = xmm6[1,1,3,3] 2882; AVX512F-NEXT: vucomiss %xmm5, %xmm7 2883; AVX512F-NEXT: movl $0, %edx 2884; AVX512F-NEXT: cmoval %ecx, %edx 2885; AVX512F-NEXT: vucomiss %xmm4, %xmm6 2886; AVX512F-NEXT: movl $0, %esi 2887; AVX512F-NEXT: cmoval %ecx, %esi 2888; AVX512F-NEXT: vmovd %esi, %xmm5 2889; AVX512F-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 2890; AVX512F-NEXT: vpermilpd {{.*#+}} xmm7 = xmm4[1,0] 2891; AVX512F-NEXT: vpermilpd {{.*#+}} xmm0 = xmm6[1,0] 2892; AVX512F-NEXT: vucomiss %xmm7, %xmm0 2893; AVX512F-NEXT: movl $0, %edx 2894; AVX512F-NEXT: cmoval %ecx, %edx 2895; AVX512F-NEXT: vpinsrd $2, %edx, %xmm5, %xmm0 2896; AVX512F-NEXT: vpermilps {{.*#+}} xmm4 = xmm4[3,1,2,3] 2897; AVX512F-NEXT: vpermilps {{.*#+}} xmm5 = xmm6[3,1,2,3] 2898; AVX512F-NEXT: vucomiss %xmm4, %xmm5 2899; AVX512F-NEXT: movl $0, %edx 2900; AVX512F-NEXT: cmoval %ecx, %edx 2901; AVX512F-NEXT: vpinsrd $3, %edx, %xmm0, %xmm0 2902; AVX512F-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm2 2903; AVX512F-NEXT: vextractf32x4 $1, %zmm3, %xmm0 2904; AVX512F-NEXT: vmovshdup {{.*#+}} xmm4 = xmm0[1,1,3,3] 2905; AVX512F-NEXT: vextractf32x4 $1, %zmm1, %xmm5 2906; AVX512F-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 2907; AVX512F-NEXT: vucomiss %xmm4, %xmm6 2908; AVX512F-NEXT: movl $0, %edx 2909; AVX512F-NEXT: cmoval %ecx, %edx 2910; AVX512F-NEXT: vucomiss %xmm0, %xmm5 2911; AVX512F-NEXT: movl $0, %esi 2912; AVX512F-NEXT: cmoval %ecx, %esi 2913; AVX512F-NEXT: vmovd %esi, %xmm4 2914; AVX512F-NEXT: vpinsrd $1, %edx, %xmm4, %xmm4 2915; AVX512F-NEXT: vpermilpd {{.*#+}} xmm6 = xmm0[1,0] 2916; AVX512F-NEXT: vpermilpd {{.*#+}} xmm7 = xmm5[1,0] 2917; AVX512F-NEXT: vucomiss %xmm6, %xmm7 2918; AVX512F-NEXT: movl $0, %edx 2919; AVX512F-NEXT: cmoval %ecx, %edx 2920; AVX512F-NEXT: vpinsrd $2, %edx, %xmm4, %xmm4 2921; AVX512F-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,1,2,3] 2922; AVX512F-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 2923; AVX512F-NEXT: vucomiss %xmm0, %xmm5 2924; AVX512F-NEXT: movl $0, %edx 2925; AVX512F-NEXT: cmoval %ecx, %edx 2926; AVX512F-NEXT: vpinsrd $3, %edx, %xmm4, %xmm0 2927; AVX512F-NEXT: vmovshdup {{.*#+}} xmm4 = xmm3[1,1,3,3] 2928; AVX512F-NEXT: vmovshdup {{.*#+}} xmm5 = xmm1[1,1,3,3] 2929; AVX512F-NEXT: vucomiss %xmm4, %xmm5 2930; AVX512F-NEXT: movl $0, %edx 2931; AVX512F-NEXT: cmoval %ecx, %edx 2932; AVX512F-NEXT: vucomiss %xmm3, %xmm1 2933; AVX512F-NEXT: movl $0, %esi 2934; AVX512F-NEXT: cmoval %ecx, %esi 2935; AVX512F-NEXT: vmovd %esi, %xmm4 2936; AVX512F-NEXT: vpinsrd $1, %edx, %xmm4, %xmm4 2937; AVX512F-NEXT: vpermilpd {{.*#+}} xmm5 = xmm3[1,0] 2938; AVX512F-NEXT: vpermilpd {{.*#+}} xmm6 = xmm1[1,0] 2939; AVX512F-NEXT: vucomiss %xmm5, %xmm6 2940; AVX512F-NEXT: movl $0, %edx 2941; AVX512F-NEXT: cmoval %ecx, %edx 2942; AVX512F-NEXT: vpinsrd $2, %edx, %xmm4, %xmm4 2943; AVX512F-NEXT: vpermilps {{.*#+}} xmm3 = xmm3[3,1,2,3] 2944; AVX512F-NEXT: vpermilps {{.*#+}} xmm1 = xmm1[3,1,2,3] 2945; AVX512F-NEXT: vucomiss %xmm3, %xmm1 2946; AVX512F-NEXT: cmoval %ecx, %eax 2947; AVX512F-NEXT: vpinsrd $3, %eax, %xmm4, %xmm1 2948; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 2949; AVX512F-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm0 2950; AVX512F-NEXT: vpmovdb %zmm0, %xmm0 2951; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm8, %ymm0 2952; AVX512F-NEXT: retq 2953; 2954; AVX512DQ-LABEL: test_cmp_v32f32: 2955; AVX512DQ: # BB#0: 2956; AVX512DQ-NEXT: vextractf32x4 $3, %zmm2, %xmm4 2957; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm5 = xmm4[1,1,3,3] 2958; AVX512DQ-NEXT: vextractf32x4 $3, %zmm0, %xmm6 2959; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm7 = xmm6[1,1,3,3] 2960; AVX512DQ-NEXT: xorl %eax, %eax 2961; AVX512DQ-NEXT: vucomiss %xmm5, %xmm7 2962; AVX512DQ-NEXT: movl $-1, %ecx 2963; AVX512DQ-NEXT: movl $0, %edx 2964; AVX512DQ-NEXT: cmoval %ecx, %edx 2965; AVX512DQ-NEXT: vucomiss %xmm4, %xmm6 2966; AVX512DQ-NEXT: movl $0, %esi 2967; AVX512DQ-NEXT: cmoval %ecx, %esi 2968; AVX512DQ-NEXT: vmovd %esi, %xmm5 2969; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm5, %xmm8 2970; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm7 = xmm4[1,0] 2971; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm5 = xmm6[1,0] 2972; AVX512DQ-NEXT: vucomiss %xmm7, %xmm5 2973; AVX512DQ-NEXT: movl $0, %edx 2974; AVX512DQ-NEXT: cmoval %ecx, %edx 2975; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm8, %xmm5 2976; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm4 = xmm4[3,1,2,3] 2977; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm6 = xmm6[3,1,2,3] 2978; AVX512DQ-NEXT: vucomiss %xmm4, %xmm6 2979; AVX512DQ-NEXT: movl $0, %edx 2980; AVX512DQ-NEXT: cmoval %ecx, %edx 2981; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm5, %xmm8 2982; AVX512DQ-NEXT: vextractf32x4 $2, %zmm2, %xmm5 2983; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 2984; AVX512DQ-NEXT: vextractf32x4 $2, %zmm0, %xmm7 2985; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm4 = xmm7[1,1,3,3] 2986; AVX512DQ-NEXT: vucomiss %xmm6, %xmm4 2987; AVX512DQ-NEXT: movl $0, %edx 2988; AVX512DQ-NEXT: cmoval %ecx, %edx 2989; AVX512DQ-NEXT: vucomiss %xmm5, %xmm7 2990; AVX512DQ-NEXT: movl $0, %esi 2991; AVX512DQ-NEXT: cmoval %ecx, %esi 2992; AVX512DQ-NEXT: vmovd %esi, %xmm4 2993; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm4, %xmm9 2994; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm6 = xmm5[1,0] 2995; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm7[1,0] 2996; AVX512DQ-NEXT: vucomiss %xmm6, %xmm4 2997; AVX512DQ-NEXT: movl $0, %edx 2998; AVX512DQ-NEXT: cmoval %ecx, %edx 2999; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm9, %xmm4 3000; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 3001; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm6 = xmm7[3,1,2,3] 3002; AVX512DQ-NEXT: vucomiss %xmm5, %xmm6 3003; AVX512DQ-NEXT: movl $0, %edx 3004; AVX512DQ-NEXT: cmoval %ecx, %edx 3005; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm4, %xmm4 3006; AVX512DQ-NEXT: vinserti128 $1, %xmm8, %ymm4, %ymm8 3007; AVX512DQ-NEXT: vextractf32x4 $1, %zmm2, %xmm5 3008; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 3009; AVX512DQ-NEXT: vextractf32x4 $1, %zmm0, %xmm7 3010; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm4 = xmm7[1,1,3,3] 3011; AVX512DQ-NEXT: vucomiss %xmm6, %xmm4 3012; AVX512DQ-NEXT: movl $0, %edx 3013; AVX512DQ-NEXT: cmoval %ecx, %edx 3014; AVX512DQ-NEXT: vucomiss %xmm5, %xmm7 3015; AVX512DQ-NEXT: movl $0, %esi 3016; AVX512DQ-NEXT: cmoval %ecx, %esi 3017; AVX512DQ-NEXT: vmovd %esi, %xmm4 3018; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm4, %xmm9 3019; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm6 = xmm5[1,0] 3020; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm7[1,0] 3021; AVX512DQ-NEXT: vucomiss %xmm6, %xmm4 3022; AVX512DQ-NEXT: movl $0, %edx 3023; AVX512DQ-NEXT: cmoval %ecx, %edx 3024; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm9, %xmm4 3025; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 3026; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm6 = xmm7[3,1,2,3] 3027; AVX512DQ-NEXT: vucomiss %xmm5, %xmm6 3028; AVX512DQ-NEXT: movl $0, %edx 3029; AVX512DQ-NEXT: cmoval %ecx, %edx 3030; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm4, %xmm4 3031; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm5 = xmm2[1,1,3,3] 3032; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm6 = xmm0[1,1,3,3] 3033; AVX512DQ-NEXT: vucomiss %xmm5, %xmm6 3034; AVX512DQ-NEXT: movl $0, %edx 3035; AVX512DQ-NEXT: cmoval %ecx, %edx 3036; AVX512DQ-NEXT: vucomiss %xmm2, %xmm0 3037; AVX512DQ-NEXT: movl $0, %esi 3038; AVX512DQ-NEXT: cmoval %ecx, %esi 3039; AVX512DQ-NEXT: vmovd %esi, %xmm5 3040; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 3041; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm6 = xmm2[1,0] 3042; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm7 = xmm0[1,0] 3043; AVX512DQ-NEXT: vucomiss %xmm6, %xmm7 3044; AVX512DQ-NEXT: movl $0, %edx 3045; AVX512DQ-NEXT: cmoval %ecx, %edx 3046; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm5, %xmm5 3047; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm2 = xmm2[3,1,2,3] 3048; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,1,2,3] 3049; AVX512DQ-NEXT: vucomiss %xmm2, %xmm0 3050; AVX512DQ-NEXT: movl $0, %edx 3051; AVX512DQ-NEXT: cmoval %ecx, %edx 3052; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm5, %xmm0 3053; AVX512DQ-NEXT: vinserti128 $1, %xmm4, %ymm0, %ymm0 3054; AVX512DQ-NEXT: vinserti32x8 $1, %ymm8, %zmm0, %zmm0 3055; AVX512DQ-NEXT: vpmovdb %zmm0, %xmm8 3056; AVX512DQ-NEXT: vextractf32x4 $3, %zmm3, %xmm2 3057; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm4 = xmm2[1,1,3,3] 3058; AVX512DQ-NEXT: vextractf32x4 $3, %zmm1, %xmm5 3059; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 3060; AVX512DQ-NEXT: vucomiss %xmm4, %xmm6 3061; AVX512DQ-NEXT: movl $0, %edx 3062; AVX512DQ-NEXT: cmoval %ecx, %edx 3063; AVX512DQ-NEXT: vucomiss %xmm2, %xmm5 3064; AVX512DQ-NEXT: movl $0, %esi 3065; AVX512DQ-NEXT: cmoval %ecx, %esi 3066; AVX512DQ-NEXT: vmovd %esi, %xmm4 3067; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm4, %xmm4 3068; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm6 = xmm2[1,0] 3069; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm7 = xmm5[1,0] 3070; AVX512DQ-NEXT: vucomiss %xmm6, %xmm7 3071; AVX512DQ-NEXT: movl $0, %edx 3072; AVX512DQ-NEXT: cmoval %ecx, %edx 3073; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm4, %xmm4 3074; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm2 = xmm2[3,1,2,3] 3075; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 3076; AVX512DQ-NEXT: vucomiss %xmm2, %xmm5 3077; AVX512DQ-NEXT: movl $0, %edx 3078; AVX512DQ-NEXT: cmoval %ecx, %edx 3079; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm4, %xmm2 3080; AVX512DQ-NEXT: vextractf32x4 $2, %zmm3, %xmm4 3081; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm5 = xmm4[1,1,3,3] 3082; AVX512DQ-NEXT: vextractf32x4 $2, %zmm1, %xmm6 3083; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm7 = xmm6[1,1,3,3] 3084; AVX512DQ-NEXT: vucomiss %xmm5, %xmm7 3085; AVX512DQ-NEXT: movl $0, %edx 3086; AVX512DQ-NEXT: cmoval %ecx, %edx 3087; AVX512DQ-NEXT: vucomiss %xmm4, %xmm6 3088; AVX512DQ-NEXT: movl $0, %esi 3089; AVX512DQ-NEXT: cmoval %ecx, %esi 3090; AVX512DQ-NEXT: vmovd %esi, %xmm5 3091; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 3092; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm7 = xmm4[1,0] 3093; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm0 = xmm6[1,0] 3094; AVX512DQ-NEXT: vucomiss %xmm7, %xmm0 3095; AVX512DQ-NEXT: movl $0, %edx 3096; AVX512DQ-NEXT: cmoval %ecx, %edx 3097; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm5, %xmm0 3098; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm4 = xmm4[3,1,2,3] 3099; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm5 = xmm6[3,1,2,3] 3100; AVX512DQ-NEXT: vucomiss %xmm4, %xmm5 3101; AVX512DQ-NEXT: movl $0, %edx 3102; AVX512DQ-NEXT: cmoval %ecx, %edx 3103; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm0, %xmm0 3104; AVX512DQ-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm2 3105; AVX512DQ-NEXT: vextractf32x4 $1, %zmm3, %xmm0 3106; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm4 = xmm0[1,1,3,3] 3107; AVX512DQ-NEXT: vextractf32x4 $1, %zmm1, %xmm5 3108; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 3109; AVX512DQ-NEXT: vucomiss %xmm4, %xmm6 3110; AVX512DQ-NEXT: movl $0, %edx 3111; AVX512DQ-NEXT: cmoval %ecx, %edx 3112; AVX512DQ-NEXT: vucomiss %xmm0, %xmm5 3113; AVX512DQ-NEXT: movl $0, %esi 3114; AVX512DQ-NEXT: cmoval %ecx, %esi 3115; AVX512DQ-NEXT: vmovd %esi, %xmm4 3116; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm4, %xmm4 3117; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm6 = xmm0[1,0] 3118; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm7 = xmm5[1,0] 3119; AVX512DQ-NEXT: vucomiss %xmm6, %xmm7 3120; AVX512DQ-NEXT: movl $0, %edx 3121; AVX512DQ-NEXT: cmoval %ecx, %edx 3122; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm4, %xmm4 3123; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,1,2,3] 3124; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 3125; AVX512DQ-NEXT: vucomiss %xmm0, %xmm5 3126; AVX512DQ-NEXT: movl $0, %edx 3127; AVX512DQ-NEXT: cmoval %ecx, %edx 3128; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm4, %xmm0 3129; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm4 = xmm3[1,1,3,3] 3130; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm5 = xmm1[1,1,3,3] 3131; AVX512DQ-NEXT: vucomiss %xmm4, %xmm5 3132; AVX512DQ-NEXT: movl $0, %edx 3133; AVX512DQ-NEXT: cmoval %ecx, %edx 3134; AVX512DQ-NEXT: vucomiss %xmm3, %xmm1 3135; AVX512DQ-NEXT: movl $0, %esi 3136; AVX512DQ-NEXT: cmoval %ecx, %esi 3137; AVX512DQ-NEXT: vmovd %esi, %xmm4 3138; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm4, %xmm4 3139; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm5 = xmm3[1,0] 3140; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm6 = xmm1[1,0] 3141; AVX512DQ-NEXT: vucomiss %xmm5, %xmm6 3142; AVX512DQ-NEXT: movl $0, %edx 3143; AVX512DQ-NEXT: cmoval %ecx, %edx 3144; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm4, %xmm4 3145; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm3 = xmm3[3,1,2,3] 3146; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm1 = xmm1[3,1,2,3] 3147; AVX512DQ-NEXT: vucomiss %xmm3, %xmm1 3148; AVX512DQ-NEXT: cmoval %ecx, %eax 3149; AVX512DQ-NEXT: vpinsrd $3, %eax, %xmm4, %xmm1 3150; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 3151; AVX512DQ-NEXT: vinserti32x8 $1, %ymm2, %zmm0, %zmm0 3152; AVX512DQ-NEXT: vpmovdb %zmm0, %xmm0 3153; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm8, %ymm0 3154; AVX512DQ-NEXT: retq 3155; 3156; AVX512BW-LABEL: test_cmp_v32f32: 3157; AVX512BW: # BB#0: 3158; AVX512BW-NEXT: vextractf32x4 $3, %zmm2, %xmm4 3159; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm5 = xmm4[1,1,3,3] 3160; AVX512BW-NEXT: vextractf32x4 $3, %zmm0, %xmm6 3161; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm7 = xmm6[1,1,3,3] 3162; AVX512BW-NEXT: xorl %eax, %eax 3163; AVX512BW-NEXT: vucomiss %xmm5, %xmm7 3164; AVX512BW-NEXT: movl $-1, %ecx 3165; AVX512BW-NEXT: movl $0, %edx 3166; AVX512BW-NEXT: cmoval %ecx, %edx 3167; AVX512BW-NEXT: vucomiss %xmm4, %xmm6 3168; AVX512BW-NEXT: movl $0, %esi 3169; AVX512BW-NEXT: cmoval %ecx, %esi 3170; AVX512BW-NEXT: vmovd %esi, %xmm5 3171; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm5, %xmm8 3172; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm7 = xmm4[1,0] 3173; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm5 = xmm6[1,0] 3174; AVX512BW-NEXT: vucomiss %xmm7, %xmm5 3175; AVX512BW-NEXT: movl $0, %edx 3176; AVX512BW-NEXT: cmoval %ecx, %edx 3177; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm8, %xmm5 3178; AVX512BW-NEXT: vpermilps {{.*#+}} xmm4 = xmm4[3,1,2,3] 3179; AVX512BW-NEXT: vpermilps {{.*#+}} xmm6 = xmm6[3,1,2,3] 3180; AVX512BW-NEXT: vucomiss %xmm4, %xmm6 3181; AVX512BW-NEXT: movl $0, %edx 3182; AVX512BW-NEXT: cmoval %ecx, %edx 3183; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm5, %xmm8 3184; AVX512BW-NEXT: vextractf32x4 $2, %zmm2, %xmm5 3185; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 3186; AVX512BW-NEXT: vextractf32x4 $2, %zmm0, %xmm7 3187; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm4 = xmm7[1,1,3,3] 3188; AVX512BW-NEXT: vucomiss %xmm6, %xmm4 3189; AVX512BW-NEXT: movl $0, %edx 3190; AVX512BW-NEXT: cmoval %ecx, %edx 3191; AVX512BW-NEXT: vucomiss %xmm5, %xmm7 3192; AVX512BW-NEXT: movl $0, %esi 3193; AVX512BW-NEXT: cmoval %ecx, %esi 3194; AVX512BW-NEXT: vmovd %esi, %xmm4 3195; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm4, %xmm9 3196; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm6 = xmm5[1,0] 3197; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm7[1,0] 3198; AVX512BW-NEXT: vucomiss %xmm6, %xmm4 3199; AVX512BW-NEXT: movl $0, %edx 3200; AVX512BW-NEXT: cmoval %ecx, %edx 3201; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm9, %xmm4 3202; AVX512BW-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 3203; AVX512BW-NEXT: vpermilps {{.*#+}} xmm6 = xmm7[3,1,2,3] 3204; AVX512BW-NEXT: vucomiss %xmm5, %xmm6 3205; AVX512BW-NEXT: movl $0, %edx 3206; AVX512BW-NEXT: cmoval %ecx, %edx 3207; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm4, %xmm4 3208; AVX512BW-NEXT: vinserti128 $1, %xmm8, %ymm4, %ymm8 3209; AVX512BW-NEXT: vextractf32x4 $1, %zmm2, %xmm5 3210; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 3211; AVX512BW-NEXT: vextractf32x4 $1, %zmm0, %xmm7 3212; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm4 = xmm7[1,1,3,3] 3213; AVX512BW-NEXT: vucomiss %xmm6, %xmm4 3214; AVX512BW-NEXT: movl $0, %edx 3215; AVX512BW-NEXT: cmoval %ecx, %edx 3216; AVX512BW-NEXT: vucomiss %xmm5, %xmm7 3217; AVX512BW-NEXT: movl $0, %esi 3218; AVX512BW-NEXT: cmoval %ecx, %esi 3219; AVX512BW-NEXT: vmovd %esi, %xmm4 3220; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm4, %xmm9 3221; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm6 = xmm5[1,0] 3222; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm7[1,0] 3223; AVX512BW-NEXT: vucomiss %xmm6, %xmm4 3224; AVX512BW-NEXT: movl $0, %edx 3225; AVX512BW-NEXT: cmoval %ecx, %edx 3226; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm9, %xmm4 3227; AVX512BW-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 3228; AVX512BW-NEXT: vpermilps {{.*#+}} xmm6 = xmm7[3,1,2,3] 3229; AVX512BW-NEXT: vucomiss %xmm5, %xmm6 3230; AVX512BW-NEXT: movl $0, %edx 3231; AVX512BW-NEXT: cmoval %ecx, %edx 3232; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm4, %xmm4 3233; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm5 = xmm2[1,1,3,3] 3234; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm6 = xmm0[1,1,3,3] 3235; AVX512BW-NEXT: vucomiss %xmm5, %xmm6 3236; AVX512BW-NEXT: movl $0, %edx 3237; AVX512BW-NEXT: cmoval %ecx, %edx 3238; AVX512BW-NEXT: vucomiss %xmm2, %xmm0 3239; AVX512BW-NEXT: movl $0, %esi 3240; AVX512BW-NEXT: cmoval %ecx, %esi 3241; AVX512BW-NEXT: vmovd %esi, %xmm5 3242; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 3243; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm6 = xmm2[1,0] 3244; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm7 = xmm0[1,0] 3245; AVX512BW-NEXT: vucomiss %xmm6, %xmm7 3246; AVX512BW-NEXT: movl $0, %edx 3247; AVX512BW-NEXT: cmoval %ecx, %edx 3248; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm5, %xmm5 3249; AVX512BW-NEXT: vpermilps {{.*#+}} xmm2 = xmm2[3,1,2,3] 3250; AVX512BW-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,1,2,3] 3251; AVX512BW-NEXT: vucomiss %xmm2, %xmm0 3252; AVX512BW-NEXT: movl $0, %edx 3253; AVX512BW-NEXT: cmoval %ecx, %edx 3254; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm5, %xmm0 3255; AVX512BW-NEXT: vinserti128 $1, %xmm4, %ymm0, %ymm0 3256; AVX512BW-NEXT: vinserti64x4 $1, %ymm8, %zmm0, %zmm0 3257; AVX512BW-NEXT: vpmovdw %zmm0, %ymm8 3258; AVX512BW-NEXT: vextractf32x4 $3, %zmm3, %xmm2 3259; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm4 = xmm2[1,1,3,3] 3260; AVX512BW-NEXT: vextractf32x4 $3, %zmm1, %xmm5 3261; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 3262; AVX512BW-NEXT: vucomiss %xmm4, %xmm6 3263; AVX512BW-NEXT: movl $0, %edx 3264; AVX512BW-NEXT: cmoval %ecx, %edx 3265; AVX512BW-NEXT: vucomiss %xmm2, %xmm5 3266; AVX512BW-NEXT: movl $0, %esi 3267; AVX512BW-NEXT: cmoval %ecx, %esi 3268; AVX512BW-NEXT: vmovd %esi, %xmm4 3269; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm4, %xmm4 3270; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm6 = xmm2[1,0] 3271; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm7 = xmm5[1,0] 3272; AVX512BW-NEXT: vucomiss %xmm6, %xmm7 3273; AVX512BW-NEXT: movl $0, %edx 3274; AVX512BW-NEXT: cmoval %ecx, %edx 3275; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm4, %xmm4 3276; AVX512BW-NEXT: vpermilps {{.*#+}} xmm2 = xmm2[3,1,2,3] 3277; AVX512BW-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 3278; AVX512BW-NEXT: vucomiss %xmm2, %xmm5 3279; AVX512BW-NEXT: movl $0, %edx 3280; AVX512BW-NEXT: cmoval %ecx, %edx 3281; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm4, %xmm2 3282; AVX512BW-NEXT: vextractf32x4 $2, %zmm3, %xmm4 3283; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm5 = xmm4[1,1,3,3] 3284; AVX512BW-NEXT: vextractf32x4 $2, %zmm1, %xmm6 3285; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm7 = xmm6[1,1,3,3] 3286; AVX512BW-NEXT: vucomiss %xmm5, %xmm7 3287; AVX512BW-NEXT: movl $0, %edx 3288; AVX512BW-NEXT: cmoval %ecx, %edx 3289; AVX512BW-NEXT: vucomiss %xmm4, %xmm6 3290; AVX512BW-NEXT: movl $0, %esi 3291; AVX512BW-NEXT: cmoval %ecx, %esi 3292; AVX512BW-NEXT: vmovd %esi, %xmm5 3293; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 3294; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm7 = xmm4[1,0] 3295; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm0 = xmm6[1,0] 3296; AVX512BW-NEXT: vucomiss %xmm7, %xmm0 3297; AVX512BW-NEXT: movl $0, %edx 3298; AVX512BW-NEXT: cmoval %ecx, %edx 3299; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm5, %xmm0 3300; AVX512BW-NEXT: vpermilps {{.*#+}} xmm4 = xmm4[3,1,2,3] 3301; AVX512BW-NEXT: vpermilps {{.*#+}} xmm5 = xmm6[3,1,2,3] 3302; AVX512BW-NEXT: vucomiss %xmm4, %xmm5 3303; AVX512BW-NEXT: movl $0, %edx 3304; AVX512BW-NEXT: cmoval %ecx, %edx 3305; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm0, %xmm0 3306; AVX512BW-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm2 3307; AVX512BW-NEXT: vextractf32x4 $1, %zmm3, %xmm0 3308; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm4 = xmm0[1,1,3,3] 3309; AVX512BW-NEXT: vextractf32x4 $1, %zmm1, %xmm5 3310; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 3311; AVX512BW-NEXT: vucomiss %xmm4, %xmm6 3312; AVX512BW-NEXT: movl $0, %edx 3313; AVX512BW-NEXT: cmoval %ecx, %edx 3314; AVX512BW-NEXT: vucomiss %xmm0, %xmm5 3315; AVX512BW-NEXT: movl $0, %esi 3316; AVX512BW-NEXT: cmoval %ecx, %esi 3317; AVX512BW-NEXT: vmovd %esi, %xmm4 3318; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm4, %xmm4 3319; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm6 = xmm0[1,0] 3320; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm7 = xmm5[1,0] 3321; AVX512BW-NEXT: vucomiss %xmm6, %xmm7 3322; AVX512BW-NEXT: movl $0, %edx 3323; AVX512BW-NEXT: cmoval %ecx, %edx 3324; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm4, %xmm4 3325; AVX512BW-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,1,2,3] 3326; AVX512BW-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 3327; AVX512BW-NEXT: vucomiss %xmm0, %xmm5 3328; AVX512BW-NEXT: movl $0, %edx 3329; AVX512BW-NEXT: cmoval %ecx, %edx 3330; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm4, %xmm0 3331; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm4 = xmm3[1,1,3,3] 3332; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm5 = xmm1[1,1,3,3] 3333; AVX512BW-NEXT: vucomiss %xmm4, %xmm5 3334; AVX512BW-NEXT: movl $0, %edx 3335; AVX512BW-NEXT: cmoval %ecx, %edx 3336; AVX512BW-NEXT: vucomiss %xmm3, %xmm1 3337; AVX512BW-NEXT: movl $0, %esi 3338; AVX512BW-NEXT: cmoval %ecx, %esi 3339; AVX512BW-NEXT: vmovd %esi, %xmm4 3340; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm4, %xmm4 3341; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm5 = xmm3[1,0] 3342; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm6 = xmm1[1,0] 3343; AVX512BW-NEXT: vucomiss %xmm5, %xmm6 3344; AVX512BW-NEXT: movl $0, %edx 3345; AVX512BW-NEXT: cmoval %ecx, %edx 3346; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm4, %xmm4 3347; AVX512BW-NEXT: vpermilps {{.*#+}} xmm3 = xmm3[3,1,2,3] 3348; AVX512BW-NEXT: vpermilps {{.*#+}} xmm1 = xmm1[3,1,2,3] 3349; AVX512BW-NEXT: vucomiss %xmm3, %xmm1 3350; AVX512BW-NEXT: cmoval %ecx, %eax 3351; AVX512BW-NEXT: vpinsrd $3, %eax, %xmm4, %xmm1 3352; AVX512BW-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 3353; AVX512BW-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm0 3354; AVX512BW-NEXT: vpmovdw %zmm0, %ymm0 3355; AVX512BW-NEXT: vinserti64x4 $1, %ymm0, %zmm8, %zmm0 3356; AVX512BW-NEXT: vpmovwb %zmm0, %ymm0 3357; AVX512BW-NEXT: retq 3358 %1 = fcmp ogt <32 x float> %a0, %a1 3359 ret <32 x i1> %1 3360} 3361 3362define <16 x i1> @test_cmp_v16i64(<16 x i64> %a0, <16 x i64> %a1) nounwind { 3363; SSE2-LABEL: test_cmp_v16i64: 3364; SSE2: # BB#0: 3365; SSE2-NEXT: movdqa {{.*#+}} xmm8 = [2147483648,0,2147483648,0] 3366; SSE2-NEXT: pxor %xmm8, %xmm7 3367; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm9 3368; SSE2-NEXT: pxor %xmm8, %xmm9 3369; SSE2-NEXT: movdqa %xmm7, %xmm10 3370; SSE2-NEXT: pcmpgtd %xmm9, %xmm10 3371; SSE2-NEXT: pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2] 3372; SSE2-NEXT: pcmpeqd %xmm7, %xmm9 3373; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm9[1,1,3,3] 3374; SSE2-NEXT: pand %xmm11, %xmm7 3375; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3] 3376; SSE2-NEXT: por %xmm7, %xmm9 3377; SSE2-NEXT: pxor %xmm8, %xmm6 3378; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm7 3379; SSE2-NEXT: pxor %xmm8, %xmm7 3380; SSE2-NEXT: movdqa %xmm6, %xmm10 3381; SSE2-NEXT: pcmpgtd %xmm7, %xmm10 3382; SSE2-NEXT: pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2] 3383; SSE2-NEXT: pcmpeqd %xmm6, %xmm7 3384; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm7[1,1,3,3] 3385; SSE2-NEXT: pand %xmm11, %xmm7 3386; SSE2-NEXT: pshufd {{.*#+}} xmm10 = xmm10[1,1,3,3] 3387; SSE2-NEXT: por %xmm7, %xmm10 3388; SSE2-NEXT: packsswb %xmm9, %xmm10 3389; SSE2-NEXT: pxor %xmm8, %xmm5 3390; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm7 3391; SSE2-NEXT: pxor %xmm8, %xmm7 3392; SSE2-NEXT: movdqa %xmm5, %xmm6 3393; SSE2-NEXT: pcmpgtd %xmm7, %xmm6 3394; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm6[0,0,2,2] 3395; SSE2-NEXT: pcmpeqd %xmm5, %xmm7 3396; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3] 3397; SSE2-NEXT: pand %xmm9, %xmm5 3398; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3] 3399; SSE2-NEXT: por %xmm5, %xmm6 3400; SSE2-NEXT: pxor %xmm8, %xmm4 3401; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm5 3402; SSE2-NEXT: pxor %xmm8, %xmm5 3403; SSE2-NEXT: movdqa %xmm4, %xmm7 3404; SSE2-NEXT: pcmpgtd %xmm5, %xmm7 3405; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm7[0,0,2,2] 3406; SSE2-NEXT: pcmpeqd %xmm4, %xmm5 3407; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3] 3408; SSE2-NEXT: pand %xmm9, %xmm5 3409; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm7[1,1,3,3] 3410; SSE2-NEXT: por %xmm5, %xmm4 3411; SSE2-NEXT: packsswb %xmm6, %xmm4 3412; SSE2-NEXT: packsswb %xmm10, %xmm4 3413; SSE2-NEXT: pxor %xmm8, %xmm3 3414; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm5 3415; SSE2-NEXT: pxor %xmm8, %xmm5 3416; SSE2-NEXT: movdqa %xmm3, %xmm6 3417; SSE2-NEXT: pcmpgtd %xmm5, %xmm6 3418; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2] 3419; SSE2-NEXT: pcmpeqd %xmm3, %xmm5 3420; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm5[1,1,3,3] 3421; SSE2-NEXT: pand %xmm7, %xmm3 3422; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3] 3423; SSE2-NEXT: por %xmm3, %xmm5 3424; SSE2-NEXT: pxor %xmm8, %xmm2 3425; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 3426; SSE2-NEXT: pxor %xmm8, %xmm3 3427; SSE2-NEXT: movdqa %xmm2, %xmm6 3428; SSE2-NEXT: pcmpgtd %xmm3, %xmm6 3429; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2] 3430; SSE2-NEXT: pcmpeqd %xmm2, %xmm3 3431; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3] 3432; SSE2-NEXT: pand %xmm7, %xmm3 3433; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm6[1,1,3,3] 3434; SSE2-NEXT: por %xmm3, %xmm2 3435; SSE2-NEXT: packsswb %xmm5, %xmm2 3436; SSE2-NEXT: pxor %xmm8, %xmm1 3437; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 3438; SSE2-NEXT: pxor %xmm8, %xmm3 3439; SSE2-NEXT: movdqa %xmm1, %xmm5 3440; SSE2-NEXT: pcmpgtd %xmm3, %xmm5 3441; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2] 3442; SSE2-NEXT: pcmpeqd %xmm1, %xmm3 3443; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm3[1,1,3,3] 3444; SSE2-NEXT: pand %xmm6, %xmm1 3445; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm5[1,1,3,3] 3446; SSE2-NEXT: por %xmm1, %xmm3 3447; SSE2-NEXT: pxor %xmm8, %xmm0 3448; SSE2-NEXT: pxor {{[0-9]+}}(%rsp), %xmm8 3449; SSE2-NEXT: movdqa %xmm0, %xmm1 3450; SSE2-NEXT: pcmpgtd %xmm8, %xmm1 3451; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm1[0,0,2,2] 3452; SSE2-NEXT: pcmpeqd %xmm0, %xmm8 3453; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm8[1,1,3,3] 3454; SSE2-NEXT: pand %xmm5, %xmm6 3455; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3] 3456; SSE2-NEXT: por %xmm6, %xmm0 3457; SSE2-NEXT: packsswb %xmm3, %xmm0 3458; SSE2-NEXT: packsswb %xmm2, %xmm0 3459; SSE2-NEXT: packsswb %xmm4, %xmm0 3460; SSE2-NEXT: retq 3461; 3462; SSE42-LABEL: test_cmp_v16i64: 3463; SSE42: # BB#0: 3464; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm7 3465; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm6 3466; SSE42-NEXT: packsswb %xmm7, %xmm6 3467; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm5 3468; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm4 3469; SSE42-NEXT: packsswb %xmm5, %xmm4 3470; SSE42-NEXT: packsswb %xmm6, %xmm4 3471; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm3 3472; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm2 3473; SSE42-NEXT: packsswb %xmm3, %xmm2 3474; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm1 3475; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm0 3476; SSE42-NEXT: packsswb %xmm1, %xmm0 3477; SSE42-NEXT: packsswb %xmm2, %xmm0 3478; SSE42-NEXT: packsswb %xmm4, %xmm0 3479; SSE42-NEXT: retq 3480; 3481; AVX1-LABEL: test_cmp_v16i64: 3482; AVX1: # BB#0: 3483; AVX1-NEXT: vextractf128 $1, %ymm7, %xmm8 3484; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm9 3485; AVX1-NEXT: vpcmpgtq %xmm8, %xmm9, %xmm8 3486; AVX1-NEXT: vpcmpgtq %xmm7, %xmm3, %xmm3 3487; AVX1-NEXT: vpacksswb %xmm8, %xmm3, %xmm8 3488; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm7 3489; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm3 3490; AVX1-NEXT: vpcmpgtq %xmm7, %xmm3, %xmm3 3491; AVX1-NEXT: vpcmpgtq %xmm6, %xmm2, %xmm2 3492; AVX1-NEXT: vpacksswb %xmm3, %xmm2, %xmm2 3493; AVX1-NEXT: vpacksswb %xmm8, %xmm2, %xmm2 3494; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm3 3495; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm6 3496; AVX1-NEXT: vpcmpgtq %xmm3, %xmm6, %xmm3 3497; AVX1-NEXT: vpcmpgtq %xmm5, %xmm1, %xmm1 3498; AVX1-NEXT: vpacksswb %xmm3, %xmm1, %xmm1 3499; AVX1-NEXT: vextractf128 $1, %ymm4, %xmm3 3500; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5 3501; AVX1-NEXT: vpcmpgtq %xmm3, %xmm5, %xmm3 3502; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm0 3503; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 3504; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 3505; AVX1-NEXT: vpacksswb %xmm2, %xmm0, %xmm0 3506; AVX1-NEXT: vzeroupper 3507; AVX1-NEXT: retq 3508; 3509; AVX2-LABEL: test_cmp_v16i64: 3510; AVX2: # BB#0: 3511; AVX2-NEXT: vpcmpgtq %ymm7, %ymm3, %ymm3 3512; AVX2-NEXT: vpcmpgtq %ymm6, %ymm2, %ymm2 3513; AVX2-NEXT: vpacksswb %ymm3, %ymm2, %ymm2 3514; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,1,3] 3515; AVX2-NEXT: vpcmpgtq %ymm5, %ymm1, %ymm1 3516; AVX2-NEXT: vpcmpgtq %ymm4, %ymm0, %ymm0 3517; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 3518; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 3519; AVX2-NEXT: vpacksswb %ymm2, %ymm0, %ymm0 3520; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 3521; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 3522; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 3523; AVX2-NEXT: vzeroupper 3524; AVX2-NEXT: retq 3525; 3526; AVX512F-LABEL: test_cmp_v16i64: 3527; AVX512F: # BB#0: 3528; AVX512F-NEXT: vextracti32x4 $3, %zmm2, %xmm4 3529; AVX512F-NEXT: vpextrq $1, %xmm4, %rcx 3530; AVX512F-NEXT: vextracti32x4 $3, %zmm0, %xmm5 3531; AVX512F-NEXT: vpextrq $1, %xmm5, %rdx 3532; AVX512F-NEXT: xorl %eax, %eax 3533; AVX512F-NEXT: cmpq %rcx, %rdx 3534; AVX512F-NEXT: movq $-1, %rcx 3535; AVX512F-NEXT: movl $0, %edx 3536; AVX512F-NEXT: cmovgq %rcx, %rdx 3537; AVX512F-NEXT: vmovq %rdx, %xmm6 3538; AVX512F-NEXT: vmovq %xmm4, %rdx 3539; AVX512F-NEXT: vmovq %xmm5, %rsi 3540; AVX512F-NEXT: cmpq %rdx, %rsi 3541; AVX512F-NEXT: movl $0, %edx 3542; AVX512F-NEXT: cmovgq %rcx, %rdx 3543; AVX512F-NEXT: vmovq %rdx, %xmm4 3544; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 3545; AVX512F-NEXT: vextracti32x4 $2, %zmm2, %xmm5 3546; AVX512F-NEXT: vpextrq $1, %xmm5, %rdx 3547; AVX512F-NEXT: vextracti32x4 $2, %zmm0, %xmm6 3548; AVX512F-NEXT: vpextrq $1, %xmm6, %rsi 3549; AVX512F-NEXT: cmpq %rdx, %rsi 3550; AVX512F-NEXT: movl $0, %edx 3551; AVX512F-NEXT: cmovgq %rcx, %rdx 3552; AVX512F-NEXT: vmovq %rdx, %xmm7 3553; AVX512F-NEXT: vmovq %xmm5, %rdx 3554; AVX512F-NEXT: vmovq %xmm6, %rsi 3555; AVX512F-NEXT: cmpq %rdx, %rsi 3556; AVX512F-NEXT: movl $0, %edx 3557; AVX512F-NEXT: cmovgq %rcx, %rdx 3558; AVX512F-NEXT: vmovq %rdx, %xmm5 3559; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm7[0] 3560; AVX512F-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4 3561; AVX512F-NEXT: vextracti32x4 $1, %zmm2, %xmm5 3562; AVX512F-NEXT: vpextrq $1, %xmm5, %rdx 3563; AVX512F-NEXT: vextracti32x4 $1, %zmm0, %xmm6 3564; AVX512F-NEXT: vpextrq $1, %xmm6, %rsi 3565; AVX512F-NEXT: cmpq %rdx, %rsi 3566; AVX512F-NEXT: movl $0, %edx 3567; AVX512F-NEXT: cmovgq %rcx, %rdx 3568; AVX512F-NEXT: vmovq %rdx, %xmm7 3569; AVX512F-NEXT: vmovq %xmm5, %rdx 3570; AVX512F-NEXT: vmovq %xmm6, %rsi 3571; AVX512F-NEXT: cmpq %rdx, %rsi 3572; AVX512F-NEXT: movl $0, %edx 3573; AVX512F-NEXT: cmovgq %rcx, %rdx 3574; AVX512F-NEXT: vmovq %rdx, %xmm5 3575; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm7[0] 3576; AVX512F-NEXT: vpextrq $1, %xmm2, %rdx 3577; AVX512F-NEXT: vpextrq $1, %xmm0, %rsi 3578; AVX512F-NEXT: cmpq %rdx, %rsi 3579; AVX512F-NEXT: movl $0, %edx 3580; AVX512F-NEXT: cmovgq %rcx, %rdx 3581; AVX512F-NEXT: vmovq %rdx, %xmm6 3582; AVX512F-NEXT: vmovq %xmm2, %rdx 3583; AVX512F-NEXT: vmovq %xmm0, %rsi 3584; AVX512F-NEXT: cmpq %rdx, %rsi 3585; AVX512F-NEXT: movl $0, %edx 3586; AVX512F-NEXT: cmovgq %rcx, %rdx 3587; AVX512F-NEXT: vmovq %rdx, %xmm0 3588; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm6[0] 3589; AVX512F-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0 3590; AVX512F-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm0 3591; AVX512F-NEXT: vpmovqd %zmm0, %ymm0 3592; AVX512F-NEXT: vextracti32x4 $3, %zmm3, %xmm2 3593; AVX512F-NEXT: vpextrq $1, %xmm2, %rdx 3594; AVX512F-NEXT: vextracti32x4 $3, %zmm1, %xmm4 3595; AVX512F-NEXT: vpextrq $1, %xmm4, %rsi 3596; AVX512F-NEXT: cmpq %rdx, %rsi 3597; AVX512F-NEXT: movl $0, %edx 3598; AVX512F-NEXT: cmovgq %rcx, %rdx 3599; AVX512F-NEXT: vmovq %rdx, %xmm5 3600; AVX512F-NEXT: vmovq %xmm2, %rdx 3601; AVX512F-NEXT: vmovq %xmm4, %rsi 3602; AVX512F-NEXT: cmpq %rdx, %rsi 3603; AVX512F-NEXT: movl $0, %edx 3604; AVX512F-NEXT: cmovgq %rcx, %rdx 3605; AVX512F-NEXT: vmovq %rdx, %xmm2 3606; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm5[0] 3607; AVX512F-NEXT: vextracti32x4 $2, %zmm3, %xmm4 3608; AVX512F-NEXT: vpextrq $1, %xmm4, %rdx 3609; AVX512F-NEXT: vextracti32x4 $2, %zmm1, %xmm5 3610; AVX512F-NEXT: vpextrq $1, %xmm5, %rsi 3611; AVX512F-NEXT: cmpq %rdx, %rsi 3612; AVX512F-NEXT: movl $0, %edx 3613; AVX512F-NEXT: cmovgq %rcx, %rdx 3614; AVX512F-NEXT: vmovq %rdx, %xmm6 3615; AVX512F-NEXT: vmovq %xmm4, %rdx 3616; AVX512F-NEXT: vmovq %xmm5, %rsi 3617; AVX512F-NEXT: cmpq %rdx, %rsi 3618; AVX512F-NEXT: movl $0, %edx 3619; AVX512F-NEXT: cmovgq %rcx, %rdx 3620; AVX512F-NEXT: vmovq %rdx, %xmm4 3621; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 3622; AVX512F-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2 3623; AVX512F-NEXT: vextracti32x4 $1, %zmm3, %xmm4 3624; AVX512F-NEXT: vpextrq $1, %xmm4, %rdx 3625; AVX512F-NEXT: vextracti32x4 $1, %zmm1, %xmm5 3626; AVX512F-NEXT: vpextrq $1, %xmm5, %rsi 3627; AVX512F-NEXT: cmpq %rdx, %rsi 3628; AVX512F-NEXT: movl $0, %edx 3629; AVX512F-NEXT: cmovgq %rcx, %rdx 3630; AVX512F-NEXT: vmovq %rdx, %xmm6 3631; AVX512F-NEXT: vmovq %xmm4, %rdx 3632; AVX512F-NEXT: vmovq %xmm5, %rsi 3633; AVX512F-NEXT: cmpq %rdx, %rsi 3634; AVX512F-NEXT: movl $0, %edx 3635; AVX512F-NEXT: cmovgq %rcx, %rdx 3636; AVX512F-NEXT: vmovq %rdx, %xmm4 3637; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 3638; AVX512F-NEXT: vpextrq $1, %xmm3, %rdx 3639; AVX512F-NEXT: vpextrq $1, %xmm1, %rsi 3640; AVX512F-NEXT: cmpq %rdx, %rsi 3641; AVX512F-NEXT: movl $0, %edx 3642; AVX512F-NEXT: cmovgq %rcx, %rdx 3643; AVX512F-NEXT: vmovq %rdx, %xmm5 3644; AVX512F-NEXT: vmovq %xmm3, %rdx 3645; AVX512F-NEXT: vmovq %xmm1, %rsi 3646; AVX512F-NEXT: cmpq %rdx, %rsi 3647; AVX512F-NEXT: cmovgq %rcx, %rax 3648; AVX512F-NEXT: vmovq %rax, %xmm1 3649; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm5[0] 3650; AVX512F-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1 3651; AVX512F-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1 3652; AVX512F-NEXT: vpmovqd %zmm1, %ymm1 3653; AVX512F-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 3654; AVX512F-NEXT: vpmovdb %zmm0, %xmm0 3655; AVX512F-NEXT: retq 3656; 3657; AVX512DQ-LABEL: test_cmp_v16i64: 3658; AVX512DQ: # BB#0: 3659; AVX512DQ-NEXT: vextracti64x2 $3, %zmm2, %xmm4 3660; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rcx 3661; AVX512DQ-NEXT: vextracti64x2 $3, %zmm0, %xmm5 3662; AVX512DQ-NEXT: vpextrq $1, %xmm5, %rdx 3663; AVX512DQ-NEXT: xorl %eax, %eax 3664; AVX512DQ-NEXT: cmpq %rcx, %rdx 3665; AVX512DQ-NEXT: movq $-1, %rcx 3666; AVX512DQ-NEXT: movl $0, %edx 3667; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3668; AVX512DQ-NEXT: vmovq %rdx, %xmm6 3669; AVX512DQ-NEXT: vmovq %xmm4, %rdx 3670; AVX512DQ-NEXT: vmovq %xmm5, %rsi 3671; AVX512DQ-NEXT: cmpq %rdx, %rsi 3672; AVX512DQ-NEXT: movl $0, %edx 3673; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3674; AVX512DQ-NEXT: vmovq %rdx, %xmm4 3675; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 3676; AVX512DQ-NEXT: vextracti64x2 $2, %zmm2, %xmm5 3677; AVX512DQ-NEXT: vpextrq $1, %xmm5, %rdx 3678; AVX512DQ-NEXT: vextracti64x2 $2, %zmm0, %xmm6 3679; AVX512DQ-NEXT: vpextrq $1, %xmm6, %rsi 3680; AVX512DQ-NEXT: cmpq %rdx, %rsi 3681; AVX512DQ-NEXT: movl $0, %edx 3682; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3683; AVX512DQ-NEXT: vmovq %rdx, %xmm7 3684; AVX512DQ-NEXT: vmovq %xmm5, %rdx 3685; AVX512DQ-NEXT: vmovq %xmm6, %rsi 3686; AVX512DQ-NEXT: cmpq %rdx, %rsi 3687; AVX512DQ-NEXT: movl $0, %edx 3688; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3689; AVX512DQ-NEXT: vmovq %rdx, %xmm5 3690; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm7[0] 3691; AVX512DQ-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4 3692; AVX512DQ-NEXT: vextracti64x2 $1, %zmm2, %xmm5 3693; AVX512DQ-NEXT: vpextrq $1, %xmm5, %rdx 3694; AVX512DQ-NEXT: vextracti64x2 $1, %zmm0, %xmm6 3695; AVX512DQ-NEXT: vpextrq $1, %xmm6, %rsi 3696; AVX512DQ-NEXT: cmpq %rdx, %rsi 3697; AVX512DQ-NEXT: movl $0, %edx 3698; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3699; AVX512DQ-NEXT: vmovq %rdx, %xmm7 3700; AVX512DQ-NEXT: vmovq %xmm5, %rdx 3701; AVX512DQ-NEXT: vmovq %xmm6, %rsi 3702; AVX512DQ-NEXT: cmpq %rdx, %rsi 3703; AVX512DQ-NEXT: movl $0, %edx 3704; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3705; AVX512DQ-NEXT: vmovq %rdx, %xmm5 3706; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm7[0] 3707; AVX512DQ-NEXT: vpextrq $1, %xmm2, %rdx 3708; AVX512DQ-NEXT: vpextrq $1, %xmm0, %rsi 3709; AVX512DQ-NEXT: cmpq %rdx, %rsi 3710; AVX512DQ-NEXT: movl $0, %edx 3711; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3712; AVX512DQ-NEXT: vmovq %rdx, %xmm6 3713; AVX512DQ-NEXT: vmovq %xmm2, %rdx 3714; AVX512DQ-NEXT: vmovq %xmm0, %rsi 3715; AVX512DQ-NEXT: cmpq %rdx, %rsi 3716; AVX512DQ-NEXT: movl $0, %edx 3717; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3718; AVX512DQ-NEXT: vmovq %rdx, %xmm0 3719; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm6[0] 3720; AVX512DQ-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0 3721; AVX512DQ-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm0 3722; AVX512DQ-NEXT: vpmovqd %zmm0, %ymm0 3723; AVX512DQ-NEXT: vextracti64x2 $3, %zmm3, %xmm2 3724; AVX512DQ-NEXT: vpextrq $1, %xmm2, %rdx 3725; AVX512DQ-NEXT: vextracti64x2 $3, %zmm1, %xmm4 3726; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rsi 3727; AVX512DQ-NEXT: cmpq %rdx, %rsi 3728; AVX512DQ-NEXT: movl $0, %edx 3729; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3730; AVX512DQ-NEXT: vmovq %rdx, %xmm5 3731; AVX512DQ-NEXT: vmovq %xmm2, %rdx 3732; AVX512DQ-NEXT: vmovq %xmm4, %rsi 3733; AVX512DQ-NEXT: cmpq %rdx, %rsi 3734; AVX512DQ-NEXT: movl $0, %edx 3735; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3736; AVX512DQ-NEXT: vmovq %rdx, %xmm2 3737; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm5[0] 3738; AVX512DQ-NEXT: vextracti64x2 $2, %zmm3, %xmm4 3739; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rdx 3740; AVX512DQ-NEXT: vextracti64x2 $2, %zmm1, %xmm5 3741; AVX512DQ-NEXT: vpextrq $1, %xmm5, %rsi 3742; AVX512DQ-NEXT: cmpq %rdx, %rsi 3743; AVX512DQ-NEXT: movl $0, %edx 3744; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3745; AVX512DQ-NEXT: vmovq %rdx, %xmm6 3746; AVX512DQ-NEXT: vmovq %xmm4, %rdx 3747; AVX512DQ-NEXT: vmovq %xmm5, %rsi 3748; AVX512DQ-NEXT: cmpq %rdx, %rsi 3749; AVX512DQ-NEXT: movl $0, %edx 3750; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3751; AVX512DQ-NEXT: vmovq %rdx, %xmm4 3752; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 3753; AVX512DQ-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2 3754; AVX512DQ-NEXT: vextracti64x2 $1, %zmm3, %xmm4 3755; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rdx 3756; AVX512DQ-NEXT: vextracti64x2 $1, %zmm1, %xmm5 3757; AVX512DQ-NEXT: vpextrq $1, %xmm5, %rsi 3758; AVX512DQ-NEXT: cmpq %rdx, %rsi 3759; AVX512DQ-NEXT: movl $0, %edx 3760; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3761; AVX512DQ-NEXT: vmovq %rdx, %xmm6 3762; AVX512DQ-NEXT: vmovq %xmm4, %rdx 3763; AVX512DQ-NEXT: vmovq %xmm5, %rsi 3764; AVX512DQ-NEXT: cmpq %rdx, %rsi 3765; AVX512DQ-NEXT: movl $0, %edx 3766; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3767; AVX512DQ-NEXT: vmovq %rdx, %xmm4 3768; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 3769; AVX512DQ-NEXT: vpextrq $1, %xmm3, %rdx 3770; AVX512DQ-NEXT: vpextrq $1, %xmm1, %rsi 3771; AVX512DQ-NEXT: cmpq %rdx, %rsi 3772; AVX512DQ-NEXT: movl $0, %edx 3773; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3774; AVX512DQ-NEXT: vmovq %rdx, %xmm5 3775; AVX512DQ-NEXT: vmovq %xmm3, %rdx 3776; AVX512DQ-NEXT: vmovq %xmm1, %rsi 3777; AVX512DQ-NEXT: cmpq %rdx, %rsi 3778; AVX512DQ-NEXT: cmovgq %rcx, %rax 3779; AVX512DQ-NEXT: vmovq %rax, %xmm1 3780; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm5[0] 3781; AVX512DQ-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1 3782; AVX512DQ-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1 3783; AVX512DQ-NEXT: vpmovqd %zmm1, %ymm1 3784; AVX512DQ-NEXT: vinserti32x8 $1, %ymm1, %zmm0, %zmm0 3785; AVX512DQ-NEXT: vpmovdb %zmm0, %xmm0 3786; AVX512DQ-NEXT: retq 3787; 3788; AVX512BW-LABEL: test_cmp_v16i64: 3789; AVX512BW: # BB#0: 3790; AVX512BW-NEXT: vextracti32x4 $3, %zmm2, %xmm4 3791; AVX512BW-NEXT: vpextrq $1, %xmm4, %rcx 3792; AVX512BW-NEXT: vextracti32x4 $3, %zmm0, %xmm5 3793; AVX512BW-NEXT: vpextrq $1, %xmm5, %rdx 3794; AVX512BW-NEXT: xorl %eax, %eax 3795; AVX512BW-NEXT: cmpq %rcx, %rdx 3796; AVX512BW-NEXT: movq $-1, %rcx 3797; AVX512BW-NEXT: movl $0, %edx 3798; AVX512BW-NEXT: cmovgq %rcx, %rdx 3799; AVX512BW-NEXT: vmovq %rdx, %xmm6 3800; AVX512BW-NEXT: vmovq %xmm4, %rdx 3801; AVX512BW-NEXT: vmovq %xmm5, %rsi 3802; AVX512BW-NEXT: cmpq %rdx, %rsi 3803; AVX512BW-NEXT: movl $0, %edx 3804; AVX512BW-NEXT: cmovgq %rcx, %rdx 3805; AVX512BW-NEXT: vmovq %rdx, %xmm4 3806; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 3807; AVX512BW-NEXT: vextracti32x4 $2, %zmm2, %xmm5 3808; AVX512BW-NEXT: vpextrq $1, %xmm5, %rdx 3809; AVX512BW-NEXT: vextracti32x4 $2, %zmm0, %xmm6 3810; AVX512BW-NEXT: vpextrq $1, %xmm6, %rsi 3811; AVX512BW-NEXT: cmpq %rdx, %rsi 3812; AVX512BW-NEXT: movl $0, %edx 3813; AVX512BW-NEXT: cmovgq %rcx, %rdx 3814; AVX512BW-NEXT: vmovq %rdx, %xmm7 3815; AVX512BW-NEXT: vmovq %xmm5, %rdx 3816; AVX512BW-NEXT: vmovq %xmm6, %rsi 3817; AVX512BW-NEXT: cmpq %rdx, %rsi 3818; AVX512BW-NEXT: movl $0, %edx 3819; AVX512BW-NEXT: cmovgq %rcx, %rdx 3820; AVX512BW-NEXT: vmovq %rdx, %xmm5 3821; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm7[0] 3822; AVX512BW-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4 3823; AVX512BW-NEXT: vextracti32x4 $1, %zmm2, %xmm5 3824; AVX512BW-NEXT: vpextrq $1, %xmm5, %rdx 3825; AVX512BW-NEXT: vextracti32x4 $1, %zmm0, %xmm6 3826; AVX512BW-NEXT: vpextrq $1, %xmm6, %rsi 3827; AVX512BW-NEXT: cmpq %rdx, %rsi 3828; AVX512BW-NEXT: movl $0, %edx 3829; AVX512BW-NEXT: cmovgq %rcx, %rdx 3830; AVX512BW-NEXT: vmovq %rdx, %xmm7 3831; AVX512BW-NEXT: vmovq %xmm5, %rdx 3832; AVX512BW-NEXT: vmovq %xmm6, %rsi 3833; AVX512BW-NEXT: cmpq %rdx, %rsi 3834; AVX512BW-NEXT: movl $0, %edx 3835; AVX512BW-NEXT: cmovgq %rcx, %rdx 3836; AVX512BW-NEXT: vmovq %rdx, %xmm5 3837; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm7[0] 3838; AVX512BW-NEXT: vpextrq $1, %xmm2, %rdx 3839; AVX512BW-NEXT: vpextrq $1, %xmm0, %rsi 3840; AVX512BW-NEXT: cmpq %rdx, %rsi 3841; AVX512BW-NEXT: movl $0, %edx 3842; AVX512BW-NEXT: cmovgq %rcx, %rdx 3843; AVX512BW-NEXT: vmovq %rdx, %xmm6 3844; AVX512BW-NEXT: vmovq %xmm2, %rdx 3845; AVX512BW-NEXT: vmovq %xmm0, %rsi 3846; AVX512BW-NEXT: cmpq %rdx, %rsi 3847; AVX512BW-NEXT: movl $0, %edx 3848; AVX512BW-NEXT: cmovgq %rcx, %rdx 3849; AVX512BW-NEXT: vmovq %rdx, %xmm0 3850; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm6[0] 3851; AVX512BW-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0 3852; AVX512BW-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm0 3853; AVX512BW-NEXT: vpmovqd %zmm0, %ymm0 3854; AVX512BW-NEXT: vextracti32x4 $3, %zmm3, %xmm2 3855; AVX512BW-NEXT: vpextrq $1, %xmm2, %rdx 3856; AVX512BW-NEXT: vextracti32x4 $3, %zmm1, %xmm4 3857; AVX512BW-NEXT: vpextrq $1, %xmm4, %rsi 3858; AVX512BW-NEXT: cmpq %rdx, %rsi 3859; AVX512BW-NEXT: movl $0, %edx 3860; AVX512BW-NEXT: cmovgq %rcx, %rdx 3861; AVX512BW-NEXT: vmovq %rdx, %xmm5 3862; AVX512BW-NEXT: vmovq %xmm2, %rdx 3863; AVX512BW-NEXT: vmovq %xmm4, %rsi 3864; AVX512BW-NEXT: cmpq %rdx, %rsi 3865; AVX512BW-NEXT: movl $0, %edx 3866; AVX512BW-NEXT: cmovgq %rcx, %rdx 3867; AVX512BW-NEXT: vmovq %rdx, %xmm2 3868; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm5[0] 3869; AVX512BW-NEXT: vextracti32x4 $2, %zmm3, %xmm4 3870; AVX512BW-NEXT: vpextrq $1, %xmm4, %rdx 3871; AVX512BW-NEXT: vextracti32x4 $2, %zmm1, %xmm5 3872; AVX512BW-NEXT: vpextrq $1, %xmm5, %rsi 3873; AVX512BW-NEXT: cmpq %rdx, %rsi 3874; AVX512BW-NEXT: movl $0, %edx 3875; AVX512BW-NEXT: cmovgq %rcx, %rdx 3876; AVX512BW-NEXT: vmovq %rdx, %xmm6 3877; AVX512BW-NEXT: vmovq %xmm4, %rdx 3878; AVX512BW-NEXT: vmovq %xmm5, %rsi 3879; AVX512BW-NEXT: cmpq %rdx, %rsi 3880; AVX512BW-NEXT: movl $0, %edx 3881; AVX512BW-NEXT: cmovgq %rcx, %rdx 3882; AVX512BW-NEXT: vmovq %rdx, %xmm4 3883; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 3884; AVX512BW-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2 3885; AVX512BW-NEXT: vextracti32x4 $1, %zmm3, %xmm4 3886; AVX512BW-NEXT: vpextrq $1, %xmm4, %rdx 3887; AVX512BW-NEXT: vextracti32x4 $1, %zmm1, %xmm5 3888; AVX512BW-NEXT: vpextrq $1, %xmm5, %rsi 3889; AVX512BW-NEXT: cmpq %rdx, %rsi 3890; AVX512BW-NEXT: movl $0, %edx 3891; AVX512BW-NEXT: cmovgq %rcx, %rdx 3892; AVX512BW-NEXT: vmovq %rdx, %xmm6 3893; AVX512BW-NEXT: vmovq %xmm4, %rdx 3894; AVX512BW-NEXT: vmovq %xmm5, %rsi 3895; AVX512BW-NEXT: cmpq %rdx, %rsi 3896; AVX512BW-NEXT: movl $0, %edx 3897; AVX512BW-NEXT: cmovgq %rcx, %rdx 3898; AVX512BW-NEXT: vmovq %rdx, %xmm4 3899; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 3900; AVX512BW-NEXT: vpextrq $1, %xmm3, %rdx 3901; AVX512BW-NEXT: vpextrq $1, %xmm1, %rsi 3902; AVX512BW-NEXT: cmpq %rdx, %rsi 3903; AVX512BW-NEXT: movl $0, %edx 3904; AVX512BW-NEXT: cmovgq %rcx, %rdx 3905; AVX512BW-NEXT: vmovq %rdx, %xmm5 3906; AVX512BW-NEXT: vmovq %xmm3, %rdx 3907; AVX512BW-NEXT: vmovq %xmm1, %rsi 3908; AVX512BW-NEXT: cmpq %rdx, %rsi 3909; AVX512BW-NEXT: cmovgq %rcx, %rax 3910; AVX512BW-NEXT: vmovq %rax, %xmm1 3911; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm5[0] 3912; AVX512BW-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1 3913; AVX512BW-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1 3914; AVX512BW-NEXT: vpmovqd %zmm1, %ymm1 3915; AVX512BW-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 3916; AVX512BW-NEXT: vpmovdb %zmm0, %xmm0 3917; AVX512BW-NEXT: retq 3918 %1 = icmp sgt <16 x i64> %a0, %a1 3919 ret <16 x i1> %1 3920} 3921 3922define <32 x i1> @test_cmp_v32i32(<32 x i32> %a0, <32 x i32> %a1) nounwind { 3923; SSE2-LABEL: test_cmp_v32i32: 3924; SSE2: # BB#0: 3925; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm3 3926; SSE2-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[0,2,2,3,4,5,6,7] 3927; SSE2-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,6,6,7] 3928; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3] 3929; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm2 3930; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[0,2,2,3,4,5,6,7] 3931; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7] 3932; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] 3933; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0] 3934; SSE2-NEXT: psllw $15, %xmm2 3935; SSE2-NEXT: psraw $15, %xmm2 3936; SSE2-NEXT: movdqa {{.*#+}} xmm3 = [255,255,255,255,255,255,255,255] 3937; SSE2-NEXT: pand %xmm3, %xmm2 3938; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm1 3939; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,2,2,3,4,5,6,7] 3940; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 3941; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 3942; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm0 3943; SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7] 3944; SSE2-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,6,7] 3945; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3] 3946; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 3947; SSE2-NEXT: psllw $15, %xmm0 3948; SSE2-NEXT: psraw $15, %xmm0 3949; SSE2-NEXT: pand %xmm3, %xmm0 3950; SSE2-NEXT: packuswb %xmm2, %xmm0 3951; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm7 3952; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm7[0,2,2,3,4,5,6,7] 3953; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 3954; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 3955; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm6 3956; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm6[0,2,2,3,4,5,6,7] 3957; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7] 3958; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] 3959; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm1[0] 3960; SSE2-NEXT: psllw $15, %xmm2 3961; SSE2-NEXT: psraw $15, %xmm2 3962; SSE2-NEXT: pand %xmm3, %xmm2 3963; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm5 3964; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm5[0,2,2,3,4,5,6,7] 3965; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 3966; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 3967; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm4 3968; SSE2-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,2,2,3,4,5,6,7] 3969; SSE2-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,6,6,7] 3970; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3] 3971; SSE2-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm1[0] 3972; SSE2-NEXT: psllw $15, %xmm4 3973; SSE2-NEXT: psraw $15, %xmm4 3974; SSE2-NEXT: pand %xmm3, %xmm4 3975; SSE2-NEXT: packuswb %xmm2, %xmm4 3976; SSE2-NEXT: movdqa %xmm4, -{{[0-9]+}}(%rsp) 3977; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3978; SSE2-NEXT: andb $1, %al 3979; SSE2-NEXT: movb %al, 2(%rdi) 3980; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 3981; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3982; SSE2-NEXT: andb $1, %al 3983; SSE2-NEXT: movb %al, (%rdi) 3984; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3985; SSE2-NEXT: andb $1, %al 3986; SSE2-NEXT: movb %al, 2(%rdi) 3987; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3988; SSE2-NEXT: andb $1, %al 3989; SSE2-NEXT: movb %al, (%rdi) 3990; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3991; SSE2-NEXT: andb $1, %al 3992; SSE2-NEXT: movb %al, 2(%rdi) 3993; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3994; SSE2-NEXT: andb $1, %al 3995; SSE2-NEXT: movb %al, (%rdi) 3996; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3997; SSE2-NEXT: andb $1, %al 3998; SSE2-NEXT: movb %al, 2(%rdi) 3999; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4000; SSE2-NEXT: andb $1, %al 4001; SSE2-NEXT: movb %al, (%rdi) 4002; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4003; SSE2-NEXT: andb $1, %al 4004; SSE2-NEXT: movb %al, 2(%rdi) 4005; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4006; SSE2-NEXT: andb $1, %al 4007; SSE2-NEXT: movb %al, (%rdi) 4008; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4009; SSE2-NEXT: andb $1, %al 4010; SSE2-NEXT: movb %al, 2(%rdi) 4011; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4012; SSE2-NEXT: andb $1, %al 4013; SSE2-NEXT: movb %al, (%rdi) 4014; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4015; SSE2-NEXT: andb $1, %al 4016; SSE2-NEXT: movb %al, 2(%rdi) 4017; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4018; SSE2-NEXT: andb $1, %al 4019; SSE2-NEXT: movb %al, (%rdi) 4020; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4021; SSE2-NEXT: andb $1, %al 4022; SSE2-NEXT: movb %al, 2(%rdi) 4023; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4024; SSE2-NEXT: andb $1, %al 4025; SSE2-NEXT: movb %al, (%rdi) 4026; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4027; SSE2-NEXT: andb $1, %al 4028; SSE2-NEXT: movb %al, 2(%rdi) 4029; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4030; SSE2-NEXT: andb $1, %al 4031; SSE2-NEXT: movb %al, (%rdi) 4032; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4033; SSE2-NEXT: andb $1, %al 4034; SSE2-NEXT: movb %al, 2(%rdi) 4035; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4036; SSE2-NEXT: andb $1, %al 4037; SSE2-NEXT: movb %al, (%rdi) 4038; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4039; SSE2-NEXT: andb $1, %al 4040; SSE2-NEXT: movb %al, 2(%rdi) 4041; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4042; SSE2-NEXT: andb $1, %al 4043; SSE2-NEXT: movb %al, (%rdi) 4044; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4045; SSE2-NEXT: andb $1, %al 4046; SSE2-NEXT: movb %al, 2(%rdi) 4047; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4048; SSE2-NEXT: andb $1, %al 4049; SSE2-NEXT: movb %al, (%rdi) 4050; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4051; SSE2-NEXT: andb $1, %al 4052; SSE2-NEXT: movb %al, 2(%rdi) 4053; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4054; SSE2-NEXT: andb $1, %al 4055; SSE2-NEXT: movb %al, (%rdi) 4056; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4057; SSE2-NEXT: andb $1, %al 4058; SSE2-NEXT: movb %al, 2(%rdi) 4059; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4060; SSE2-NEXT: andb $1, %al 4061; SSE2-NEXT: movb %al, (%rdi) 4062; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4063; SSE2-NEXT: andb $1, %al 4064; SSE2-NEXT: movb %al, 2(%rdi) 4065; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4066; SSE2-NEXT: andb $1, %al 4067; SSE2-NEXT: movb %al, (%rdi) 4068; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4069; SSE2-NEXT: andb $1, %al 4070; SSE2-NEXT: movb %al, 2(%rdi) 4071; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4072; SSE2-NEXT: andb $1, %al 4073; SSE2-NEXT: movb %al, (%rdi) 4074; SSE2-NEXT: movq %rdi, %rax 4075; SSE2-NEXT: retq 4076; 4077; SSE42-LABEL: test_cmp_v32i32: 4078; SSE42: # BB#0: 4079; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm3 4080; SSE42-NEXT: movdqa {{.*#+}} xmm8 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15] 4081; SSE42-NEXT: pshufb %xmm8, %xmm3 4082; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm2 4083; SSE42-NEXT: pshufb %xmm8, %xmm2 4084; SSE42-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0] 4085; SSE42-NEXT: psllw $15, %xmm2 4086; SSE42-NEXT: psraw $15, %xmm2 4087; SSE42-NEXT: movdqa {{.*#+}} xmm3 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u> 4088; SSE42-NEXT: pshufb %xmm3, %xmm2 4089; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm1 4090; SSE42-NEXT: pshufb %xmm8, %xmm1 4091; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm0 4092; SSE42-NEXT: pshufb %xmm8, %xmm0 4093; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 4094; SSE42-NEXT: psllw $15, %xmm0 4095; SSE42-NEXT: psraw $15, %xmm0 4096; SSE42-NEXT: pshufb %xmm3, %xmm0 4097; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0] 4098; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm7 4099; SSE42-NEXT: pshufb %xmm8, %xmm7 4100; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm6 4101; SSE42-NEXT: pshufb %xmm8, %xmm6 4102; SSE42-NEXT: punpcklqdq {{.*#+}} xmm6 = xmm6[0],xmm7[0] 4103; SSE42-NEXT: psllw $15, %xmm6 4104; SSE42-NEXT: psraw $15, %xmm6 4105; SSE42-NEXT: pshufb %xmm3, %xmm6 4106; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm5 4107; SSE42-NEXT: pshufb %xmm8, %xmm5 4108; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm4 4109; SSE42-NEXT: pshufb %xmm8, %xmm4 4110; SSE42-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0] 4111; SSE42-NEXT: psllw $15, %xmm4 4112; SSE42-NEXT: psraw $15, %xmm4 4113; SSE42-NEXT: pshufb %xmm3, %xmm4 4114; SSE42-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 4115; SSE42-NEXT: pextrb $15, %xmm4, %eax 4116; SSE42-NEXT: andb $1, %al 4117; SSE42-NEXT: movb %al, 2(%rdi) 4118; SSE42-NEXT: pextrb $14, %xmm4, %eax 4119; SSE42-NEXT: andb $1, %al 4120; SSE42-NEXT: movb %al, 2(%rdi) 4121; SSE42-NEXT: pextrb $13, %xmm4, %eax 4122; SSE42-NEXT: andb $1, %al 4123; SSE42-NEXT: movb %al, 2(%rdi) 4124; SSE42-NEXT: pextrb $12, %xmm4, %eax 4125; SSE42-NEXT: andb $1, %al 4126; SSE42-NEXT: movb %al, 2(%rdi) 4127; SSE42-NEXT: pextrb $11, %xmm4, %eax 4128; SSE42-NEXT: andb $1, %al 4129; SSE42-NEXT: movb %al, 2(%rdi) 4130; SSE42-NEXT: pextrb $10, %xmm4, %eax 4131; SSE42-NEXT: andb $1, %al 4132; SSE42-NEXT: movb %al, 2(%rdi) 4133; SSE42-NEXT: pextrb $9, %xmm4, %eax 4134; SSE42-NEXT: andb $1, %al 4135; SSE42-NEXT: movb %al, 2(%rdi) 4136; SSE42-NEXT: pextrb $8, %xmm4, %eax 4137; SSE42-NEXT: andb $1, %al 4138; SSE42-NEXT: movb %al, 2(%rdi) 4139; SSE42-NEXT: pextrb $7, %xmm4, %eax 4140; SSE42-NEXT: andb $1, %al 4141; SSE42-NEXT: movb %al, 2(%rdi) 4142; SSE42-NEXT: pextrb $6, %xmm4, %eax 4143; SSE42-NEXT: andb $1, %al 4144; SSE42-NEXT: movb %al, 2(%rdi) 4145; SSE42-NEXT: pextrb $5, %xmm4, %eax 4146; SSE42-NEXT: andb $1, %al 4147; SSE42-NEXT: movb %al, 2(%rdi) 4148; SSE42-NEXT: pextrb $4, %xmm4, %eax 4149; SSE42-NEXT: andb $1, %al 4150; SSE42-NEXT: movb %al, 2(%rdi) 4151; SSE42-NEXT: pextrb $3, %xmm4, %eax 4152; SSE42-NEXT: andb $1, %al 4153; SSE42-NEXT: movb %al, 2(%rdi) 4154; SSE42-NEXT: pextrb $2, %xmm4, %eax 4155; SSE42-NEXT: andb $1, %al 4156; SSE42-NEXT: movb %al, 2(%rdi) 4157; SSE42-NEXT: pextrb $1, %xmm4, %eax 4158; SSE42-NEXT: andb $1, %al 4159; SSE42-NEXT: movb %al, 2(%rdi) 4160; SSE42-NEXT: pextrb $0, %xmm4, %eax 4161; SSE42-NEXT: andb $1, %al 4162; SSE42-NEXT: movb %al, 2(%rdi) 4163; SSE42-NEXT: pextrb $15, %xmm0, %eax 4164; SSE42-NEXT: andb $1, %al 4165; SSE42-NEXT: movb %al, (%rdi) 4166; SSE42-NEXT: pextrb $14, %xmm0, %eax 4167; SSE42-NEXT: andb $1, %al 4168; SSE42-NEXT: movb %al, (%rdi) 4169; SSE42-NEXT: pextrb $13, %xmm0, %eax 4170; SSE42-NEXT: andb $1, %al 4171; SSE42-NEXT: movb %al, (%rdi) 4172; SSE42-NEXT: pextrb $12, %xmm0, %eax 4173; SSE42-NEXT: andb $1, %al 4174; SSE42-NEXT: movb %al, (%rdi) 4175; SSE42-NEXT: pextrb $11, %xmm0, %eax 4176; SSE42-NEXT: andb $1, %al 4177; SSE42-NEXT: movb %al, (%rdi) 4178; SSE42-NEXT: pextrb $10, %xmm0, %eax 4179; SSE42-NEXT: andb $1, %al 4180; SSE42-NEXT: movb %al, (%rdi) 4181; SSE42-NEXT: pextrb $9, %xmm0, %eax 4182; SSE42-NEXT: andb $1, %al 4183; SSE42-NEXT: movb %al, (%rdi) 4184; SSE42-NEXT: pextrb $8, %xmm0, %eax 4185; SSE42-NEXT: andb $1, %al 4186; SSE42-NEXT: movb %al, (%rdi) 4187; SSE42-NEXT: pextrb $7, %xmm0, %eax 4188; SSE42-NEXT: andb $1, %al 4189; SSE42-NEXT: movb %al, (%rdi) 4190; SSE42-NEXT: pextrb $6, %xmm0, %eax 4191; SSE42-NEXT: andb $1, %al 4192; SSE42-NEXT: movb %al, (%rdi) 4193; SSE42-NEXT: pextrb $5, %xmm0, %eax 4194; SSE42-NEXT: andb $1, %al 4195; SSE42-NEXT: movb %al, (%rdi) 4196; SSE42-NEXT: pextrb $4, %xmm0, %eax 4197; SSE42-NEXT: andb $1, %al 4198; SSE42-NEXT: movb %al, (%rdi) 4199; SSE42-NEXT: pextrb $3, %xmm0, %eax 4200; SSE42-NEXT: andb $1, %al 4201; SSE42-NEXT: movb %al, (%rdi) 4202; SSE42-NEXT: pextrb $2, %xmm0, %eax 4203; SSE42-NEXT: andb $1, %al 4204; SSE42-NEXT: movb %al, (%rdi) 4205; SSE42-NEXT: pextrb $1, %xmm0, %eax 4206; SSE42-NEXT: andb $1, %al 4207; SSE42-NEXT: movb %al, (%rdi) 4208; SSE42-NEXT: pextrb $0, %xmm0, %eax 4209; SSE42-NEXT: andb $1, %al 4210; SSE42-NEXT: movb %al, (%rdi) 4211; SSE42-NEXT: movq %rdi, %rax 4212; SSE42-NEXT: retq 4213; 4214; AVX1-LABEL: test_cmp_v32i32: 4215; AVX1: # BB#0: 4216; AVX1-NEXT: vextractf128 $1, %ymm7, %xmm8 4217; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm9 4218; AVX1-NEXT: vpcmpgtd %xmm8, %xmm9, %xmm8 4219; AVX1-NEXT: vpcmpgtd %xmm7, %xmm3, %xmm3 4220; AVX1-NEXT: vpacksswb %xmm8, %xmm3, %xmm8 4221; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm7 4222; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm3 4223; AVX1-NEXT: vpcmpgtd %xmm7, %xmm3, %xmm3 4224; AVX1-NEXT: vpcmpgtd %xmm6, %xmm2, %xmm2 4225; AVX1-NEXT: vpacksswb %xmm3, %xmm2, %xmm2 4226; AVX1-NEXT: vpacksswb %xmm8, %xmm2, %xmm2 4227; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm3 4228; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm6 4229; AVX1-NEXT: vpcmpgtd %xmm3, %xmm6, %xmm3 4230; AVX1-NEXT: vpcmpgtd %xmm5, %xmm1, %xmm1 4231; AVX1-NEXT: vpacksswb %xmm3, %xmm1, %xmm1 4232; AVX1-NEXT: vextractf128 $1, %ymm4, %xmm3 4233; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5 4234; AVX1-NEXT: vpcmpgtd %xmm3, %xmm5, %xmm3 4235; AVX1-NEXT: vpcmpgtd %xmm4, %xmm0, %xmm0 4236; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 4237; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 4238; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 4239; AVX1-NEXT: retq 4240; 4241; AVX2-LABEL: test_cmp_v32i32: 4242; AVX2: # BB#0: 4243; AVX2-NEXT: vpcmpgtd %ymm7, %ymm3, %ymm3 4244; AVX2-NEXT: vpcmpgtd %ymm6, %ymm2, %ymm2 4245; AVX2-NEXT: vpacksswb %ymm3, %ymm2, %ymm2 4246; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,1,3] 4247; AVX2-NEXT: vpcmpgtd %ymm5, %ymm1, %ymm1 4248; AVX2-NEXT: vpcmpgtd %ymm4, %ymm0, %ymm0 4249; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 4250; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 4251; AVX2-NEXT: vpacksswb %ymm2, %ymm0, %ymm0 4252; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 4253; AVX2-NEXT: retq 4254; 4255; AVX512F-LABEL: test_cmp_v32i32: 4256; AVX512F: # BB#0: 4257; AVX512F-NEXT: vextracti32x4 $3, %zmm2, %xmm4 4258; AVX512F-NEXT: vpextrd $1, %xmm4, %ecx 4259; AVX512F-NEXT: vextracti32x4 $3, %zmm0, %xmm5 4260; AVX512F-NEXT: vpextrd $1, %xmm5, %edx 4261; AVX512F-NEXT: xorl %eax, %eax 4262; AVX512F-NEXT: cmpl %ecx, %edx 4263; AVX512F-NEXT: movl $-1, %ecx 4264; AVX512F-NEXT: movl $0, %edx 4265; AVX512F-NEXT: cmovgl %ecx, %edx 4266; AVX512F-NEXT: vmovd %xmm4, %esi 4267; AVX512F-NEXT: vmovd %xmm5, %edi 4268; AVX512F-NEXT: cmpl %esi, %edi 4269; AVX512F-NEXT: movl $0, %esi 4270; AVX512F-NEXT: cmovgl %ecx, %esi 4271; AVX512F-NEXT: vmovd %esi, %xmm6 4272; AVX512F-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 4273; AVX512F-NEXT: vpextrd $2, %xmm4, %edx 4274; AVX512F-NEXT: vpextrd $2, %xmm5, %esi 4275; AVX512F-NEXT: cmpl %edx, %esi 4276; AVX512F-NEXT: movl $0, %edx 4277; AVX512F-NEXT: cmovgl %ecx, %edx 4278; AVX512F-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 4279; AVX512F-NEXT: vpextrd $3, %xmm4, %edx 4280; AVX512F-NEXT: vpextrd $3, %xmm5, %esi 4281; AVX512F-NEXT: cmpl %edx, %esi 4282; AVX512F-NEXT: movl $0, %edx 4283; AVX512F-NEXT: cmovgl %ecx, %edx 4284; AVX512F-NEXT: vpinsrd $3, %edx, %xmm6, %xmm4 4285; AVX512F-NEXT: vextracti32x4 $2, %zmm2, %xmm5 4286; AVX512F-NEXT: vpextrd $1, %xmm5, %edx 4287; AVX512F-NEXT: vextracti32x4 $2, %zmm0, %xmm6 4288; AVX512F-NEXT: vpextrd $1, %xmm6, %esi 4289; AVX512F-NEXT: cmpl %edx, %esi 4290; AVX512F-NEXT: movl $0, %edx 4291; AVX512F-NEXT: cmovgl %ecx, %edx 4292; AVX512F-NEXT: vmovd %xmm5, %esi 4293; AVX512F-NEXT: vmovd %xmm6, %edi 4294; AVX512F-NEXT: cmpl %esi, %edi 4295; AVX512F-NEXT: movl $0, %esi 4296; AVX512F-NEXT: cmovgl %ecx, %esi 4297; AVX512F-NEXT: vmovd %esi, %xmm7 4298; AVX512F-NEXT: vpinsrd $1, %edx, %xmm7, %xmm7 4299; AVX512F-NEXT: vpextrd $2, %xmm5, %edx 4300; AVX512F-NEXT: vpextrd $2, %xmm6, %esi 4301; AVX512F-NEXT: cmpl %edx, %esi 4302; AVX512F-NEXT: movl $0, %edx 4303; AVX512F-NEXT: cmovgl %ecx, %edx 4304; AVX512F-NEXT: vpinsrd $2, %edx, %xmm7, %xmm7 4305; AVX512F-NEXT: vpextrd $3, %xmm5, %edx 4306; AVX512F-NEXT: vpextrd $3, %xmm6, %esi 4307; AVX512F-NEXT: cmpl %edx, %esi 4308; AVX512F-NEXT: movl $0, %edx 4309; AVX512F-NEXT: cmovgl %ecx, %edx 4310; AVX512F-NEXT: vpinsrd $3, %edx, %xmm7, %xmm5 4311; AVX512F-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4 4312; AVX512F-NEXT: vextracti32x4 $1, %zmm2, %xmm5 4313; AVX512F-NEXT: vpextrd $1, %xmm5, %edx 4314; AVX512F-NEXT: vextracti32x4 $1, %zmm0, %xmm6 4315; AVX512F-NEXT: vpextrd $1, %xmm6, %esi 4316; AVX512F-NEXT: cmpl %edx, %esi 4317; AVX512F-NEXT: movl $0, %edx 4318; AVX512F-NEXT: cmovgl %ecx, %edx 4319; AVX512F-NEXT: vmovd %xmm5, %esi 4320; AVX512F-NEXT: vmovd %xmm6, %edi 4321; AVX512F-NEXT: cmpl %esi, %edi 4322; AVX512F-NEXT: movl $0, %esi 4323; AVX512F-NEXT: cmovgl %ecx, %esi 4324; AVX512F-NEXT: vmovd %esi, %xmm7 4325; AVX512F-NEXT: vpinsrd $1, %edx, %xmm7, %xmm7 4326; AVX512F-NEXT: vpextrd $2, %xmm5, %edx 4327; AVX512F-NEXT: vpextrd $2, %xmm6, %esi 4328; AVX512F-NEXT: cmpl %edx, %esi 4329; AVX512F-NEXT: movl $0, %edx 4330; AVX512F-NEXT: cmovgl %ecx, %edx 4331; AVX512F-NEXT: vpinsrd $2, %edx, %xmm7, %xmm7 4332; AVX512F-NEXT: vpextrd $3, %xmm5, %edx 4333; AVX512F-NEXT: vpextrd $3, %xmm6, %esi 4334; AVX512F-NEXT: cmpl %edx, %esi 4335; AVX512F-NEXT: movl $0, %edx 4336; AVX512F-NEXT: cmovgl %ecx, %edx 4337; AVX512F-NEXT: vpinsrd $3, %edx, %xmm7, %xmm5 4338; AVX512F-NEXT: vpextrd $1, %xmm2, %edx 4339; AVX512F-NEXT: vpextrd $1, %xmm0, %esi 4340; AVX512F-NEXT: cmpl %edx, %esi 4341; AVX512F-NEXT: movl $0, %edx 4342; AVX512F-NEXT: cmovgl %ecx, %edx 4343; AVX512F-NEXT: vmovd %xmm2, %esi 4344; AVX512F-NEXT: vmovd %xmm0, %edi 4345; AVX512F-NEXT: cmpl %esi, %edi 4346; AVX512F-NEXT: movl $0, %esi 4347; AVX512F-NEXT: cmovgl %ecx, %esi 4348; AVX512F-NEXT: vmovd %esi, %xmm6 4349; AVX512F-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 4350; AVX512F-NEXT: vpextrd $2, %xmm2, %edx 4351; AVX512F-NEXT: vpextrd $2, %xmm0, %esi 4352; AVX512F-NEXT: cmpl %edx, %esi 4353; AVX512F-NEXT: movl $0, %edx 4354; AVX512F-NEXT: cmovgl %ecx, %edx 4355; AVX512F-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 4356; AVX512F-NEXT: vpextrd $3, %xmm2, %edx 4357; AVX512F-NEXT: vpextrd $3, %xmm0, %esi 4358; AVX512F-NEXT: cmpl %edx, %esi 4359; AVX512F-NEXT: movl $0, %edx 4360; AVX512F-NEXT: cmovgl %ecx, %edx 4361; AVX512F-NEXT: vpinsrd $3, %edx, %xmm6, %xmm0 4362; AVX512F-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0 4363; AVX512F-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm0 4364; AVX512F-NEXT: vpmovdb %zmm0, %xmm0 4365; AVX512F-NEXT: vextracti32x4 $3, %zmm3, %xmm2 4366; AVX512F-NEXT: vpextrd $1, %xmm2, %edx 4367; AVX512F-NEXT: vextracti32x4 $3, %zmm1, %xmm4 4368; AVX512F-NEXT: vpextrd $1, %xmm4, %esi 4369; AVX512F-NEXT: cmpl %edx, %esi 4370; AVX512F-NEXT: movl $0, %edx 4371; AVX512F-NEXT: cmovgl %ecx, %edx 4372; AVX512F-NEXT: vmovd %xmm2, %esi 4373; AVX512F-NEXT: vmovd %xmm4, %edi 4374; AVX512F-NEXT: cmpl %esi, %edi 4375; AVX512F-NEXT: movl $0, %esi 4376; AVX512F-NEXT: cmovgl %ecx, %esi 4377; AVX512F-NEXT: vmovd %esi, %xmm5 4378; AVX512F-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 4379; AVX512F-NEXT: vpextrd $2, %xmm2, %edx 4380; AVX512F-NEXT: vpextrd $2, %xmm4, %esi 4381; AVX512F-NEXT: cmpl %edx, %esi 4382; AVX512F-NEXT: movl $0, %edx 4383; AVX512F-NEXT: cmovgl %ecx, %edx 4384; AVX512F-NEXT: vpinsrd $2, %edx, %xmm5, %xmm5 4385; AVX512F-NEXT: vpextrd $3, %xmm2, %edx 4386; AVX512F-NEXT: vpextrd $3, %xmm4, %esi 4387; AVX512F-NEXT: cmpl %edx, %esi 4388; AVX512F-NEXT: movl $0, %edx 4389; AVX512F-NEXT: cmovgl %ecx, %edx 4390; AVX512F-NEXT: vpinsrd $3, %edx, %xmm5, %xmm2 4391; AVX512F-NEXT: vextracti32x4 $2, %zmm3, %xmm4 4392; AVX512F-NEXT: vpextrd $1, %xmm4, %edx 4393; AVX512F-NEXT: vextracti32x4 $2, %zmm1, %xmm5 4394; AVX512F-NEXT: vpextrd $1, %xmm5, %esi 4395; AVX512F-NEXT: cmpl %edx, %esi 4396; AVX512F-NEXT: movl $0, %edx 4397; AVX512F-NEXT: cmovgl %ecx, %edx 4398; AVX512F-NEXT: vmovd %xmm4, %esi 4399; AVX512F-NEXT: vmovd %xmm5, %edi 4400; AVX512F-NEXT: cmpl %esi, %edi 4401; AVX512F-NEXT: movl $0, %esi 4402; AVX512F-NEXT: cmovgl %ecx, %esi 4403; AVX512F-NEXT: vmovd %esi, %xmm6 4404; AVX512F-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 4405; AVX512F-NEXT: vpextrd $2, %xmm4, %edx 4406; AVX512F-NEXT: vpextrd $2, %xmm5, %esi 4407; AVX512F-NEXT: cmpl %edx, %esi 4408; AVX512F-NEXT: movl $0, %edx 4409; AVX512F-NEXT: cmovgl %ecx, %edx 4410; AVX512F-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 4411; AVX512F-NEXT: vpextrd $3, %xmm4, %edx 4412; AVX512F-NEXT: vpextrd $3, %xmm5, %esi 4413; AVX512F-NEXT: cmpl %edx, %esi 4414; AVX512F-NEXT: movl $0, %edx 4415; AVX512F-NEXT: cmovgl %ecx, %edx 4416; AVX512F-NEXT: vpinsrd $3, %edx, %xmm6, %xmm4 4417; AVX512F-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2 4418; AVX512F-NEXT: vextracti32x4 $1, %zmm3, %xmm4 4419; AVX512F-NEXT: vpextrd $1, %xmm4, %edx 4420; AVX512F-NEXT: vextracti32x4 $1, %zmm1, %xmm5 4421; AVX512F-NEXT: vpextrd $1, %xmm5, %esi 4422; AVX512F-NEXT: cmpl %edx, %esi 4423; AVX512F-NEXT: movl $0, %edx 4424; AVX512F-NEXT: cmovgl %ecx, %edx 4425; AVX512F-NEXT: vmovd %xmm4, %esi 4426; AVX512F-NEXT: vmovd %xmm5, %edi 4427; AVX512F-NEXT: cmpl %esi, %edi 4428; AVX512F-NEXT: movl $0, %esi 4429; AVX512F-NEXT: cmovgl %ecx, %esi 4430; AVX512F-NEXT: vmovd %esi, %xmm6 4431; AVX512F-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 4432; AVX512F-NEXT: vpextrd $2, %xmm4, %edx 4433; AVX512F-NEXT: vpextrd $2, %xmm5, %esi 4434; AVX512F-NEXT: cmpl %edx, %esi 4435; AVX512F-NEXT: movl $0, %edx 4436; AVX512F-NEXT: cmovgl %ecx, %edx 4437; AVX512F-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 4438; AVX512F-NEXT: vpextrd $3, %xmm4, %edx 4439; AVX512F-NEXT: vpextrd $3, %xmm5, %esi 4440; AVX512F-NEXT: cmpl %edx, %esi 4441; AVX512F-NEXT: movl $0, %edx 4442; AVX512F-NEXT: cmovgl %ecx, %edx 4443; AVX512F-NEXT: vpinsrd $3, %edx, %xmm6, %xmm4 4444; AVX512F-NEXT: vpextrd $1, %xmm3, %edx 4445; AVX512F-NEXT: vpextrd $1, %xmm1, %esi 4446; AVX512F-NEXT: cmpl %edx, %esi 4447; AVX512F-NEXT: movl $0, %edx 4448; AVX512F-NEXT: cmovgl %ecx, %edx 4449; AVX512F-NEXT: vmovd %xmm3, %esi 4450; AVX512F-NEXT: vmovd %xmm1, %edi 4451; AVX512F-NEXT: cmpl %esi, %edi 4452; AVX512F-NEXT: movl $0, %esi 4453; AVX512F-NEXT: cmovgl %ecx, %esi 4454; AVX512F-NEXT: vmovd %esi, %xmm5 4455; AVX512F-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 4456; AVX512F-NEXT: vpextrd $2, %xmm3, %edx 4457; AVX512F-NEXT: vpextrd $2, %xmm1, %esi 4458; AVX512F-NEXT: cmpl %edx, %esi 4459; AVX512F-NEXT: movl $0, %edx 4460; AVX512F-NEXT: cmovgl %ecx, %edx 4461; AVX512F-NEXT: vpinsrd $2, %edx, %xmm5, %xmm5 4462; AVX512F-NEXT: vpextrd $3, %xmm3, %edx 4463; AVX512F-NEXT: vpextrd $3, %xmm1, %esi 4464; AVX512F-NEXT: cmpl %edx, %esi 4465; AVX512F-NEXT: cmovgl %ecx, %eax 4466; AVX512F-NEXT: vpinsrd $3, %eax, %xmm5, %xmm1 4467; AVX512F-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1 4468; AVX512F-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1 4469; AVX512F-NEXT: vpmovdb %zmm1, %xmm1 4470; AVX512F-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 4471; AVX512F-NEXT: retq 4472; 4473; AVX512DQ-LABEL: test_cmp_v32i32: 4474; AVX512DQ: # BB#0: 4475; AVX512DQ-NEXT: vextracti32x4 $3, %zmm2, %xmm4 4476; AVX512DQ-NEXT: vpextrd $1, %xmm4, %ecx 4477; AVX512DQ-NEXT: vextracti32x4 $3, %zmm0, %xmm5 4478; AVX512DQ-NEXT: vpextrd $1, %xmm5, %edx 4479; AVX512DQ-NEXT: xorl %eax, %eax 4480; AVX512DQ-NEXT: cmpl %ecx, %edx 4481; AVX512DQ-NEXT: movl $-1, %ecx 4482; AVX512DQ-NEXT: movl $0, %edx 4483; AVX512DQ-NEXT: cmovgl %ecx, %edx 4484; AVX512DQ-NEXT: vmovd %xmm4, %esi 4485; AVX512DQ-NEXT: vmovd %xmm5, %edi 4486; AVX512DQ-NEXT: cmpl %esi, %edi 4487; AVX512DQ-NEXT: movl $0, %esi 4488; AVX512DQ-NEXT: cmovgl %ecx, %esi 4489; AVX512DQ-NEXT: vmovd %esi, %xmm6 4490; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 4491; AVX512DQ-NEXT: vpextrd $2, %xmm4, %edx 4492; AVX512DQ-NEXT: vpextrd $2, %xmm5, %esi 4493; AVX512DQ-NEXT: cmpl %edx, %esi 4494; AVX512DQ-NEXT: movl $0, %edx 4495; AVX512DQ-NEXT: cmovgl %ecx, %edx 4496; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 4497; AVX512DQ-NEXT: vpextrd $3, %xmm4, %edx 4498; AVX512DQ-NEXT: vpextrd $3, %xmm5, %esi 4499; AVX512DQ-NEXT: cmpl %edx, %esi 4500; AVX512DQ-NEXT: movl $0, %edx 4501; AVX512DQ-NEXT: cmovgl %ecx, %edx 4502; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm6, %xmm4 4503; AVX512DQ-NEXT: vextracti32x4 $2, %zmm2, %xmm5 4504; AVX512DQ-NEXT: vpextrd $1, %xmm5, %edx 4505; AVX512DQ-NEXT: vextracti32x4 $2, %zmm0, %xmm6 4506; AVX512DQ-NEXT: vpextrd $1, %xmm6, %esi 4507; AVX512DQ-NEXT: cmpl %edx, %esi 4508; AVX512DQ-NEXT: movl $0, %edx 4509; AVX512DQ-NEXT: cmovgl %ecx, %edx 4510; AVX512DQ-NEXT: vmovd %xmm5, %esi 4511; AVX512DQ-NEXT: vmovd %xmm6, %edi 4512; AVX512DQ-NEXT: cmpl %esi, %edi 4513; AVX512DQ-NEXT: movl $0, %esi 4514; AVX512DQ-NEXT: cmovgl %ecx, %esi 4515; AVX512DQ-NEXT: vmovd %esi, %xmm7 4516; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm7, %xmm7 4517; AVX512DQ-NEXT: vpextrd $2, %xmm5, %edx 4518; AVX512DQ-NEXT: vpextrd $2, %xmm6, %esi 4519; AVX512DQ-NEXT: cmpl %edx, %esi 4520; AVX512DQ-NEXT: movl $0, %edx 4521; AVX512DQ-NEXT: cmovgl %ecx, %edx 4522; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm7, %xmm7 4523; AVX512DQ-NEXT: vpextrd $3, %xmm5, %edx 4524; AVX512DQ-NEXT: vpextrd $3, %xmm6, %esi 4525; AVX512DQ-NEXT: cmpl %edx, %esi 4526; AVX512DQ-NEXT: movl $0, %edx 4527; AVX512DQ-NEXT: cmovgl %ecx, %edx 4528; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm7, %xmm5 4529; AVX512DQ-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4 4530; AVX512DQ-NEXT: vextracti32x4 $1, %zmm2, %xmm5 4531; AVX512DQ-NEXT: vpextrd $1, %xmm5, %edx 4532; AVX512DQ-NEXT: vextracti32x4 $1, %zmm0, %xmm6 4533; AVX512DQ-NEXT: vpextrd $1, %xmm6, %esi 4534; AVX512DQ-NEXT: cmpl %edx, %esi 4535; AVX512DQ-NEXT: movl $0, %edx 4536; AVX512DQ-NEXT: cmovgl %ecx, %edx 4537; AVX512DQ-NEXT: vmovd %xmm5, %esi 4538; AVX512DQ-NEXT: vmovd %xmm6, %edi 4539; AVX512DQ-NEXT: cmpl %esi, %edi 4540; AVX512DQ-NEXT: movl $0, %esi 4541; AVX512DQ-NEXT: cmovgl %ecx, %esi 4542; AVX512DQ-NEXT: vmovd %esi, %xmm7 4543; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm7, %xmm7 4544; AVX512DQ-NEXT: vpextrd $2, %xmm5, %edx 4545; AVX512DQ-NEXT: vpextrd $2, %xmm6, %esi 4546; AVX512DQ-NEXT: cmpl %edx, %esi 4547; AVX512DQ-NEXT: movl $0, %edx 4548; AVX512DQ-NEXT: cmovgl %ecx, %edx 4549; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm7, %xmm7 4550; AVX512DQ-NEXT: vpextrd $3, %xmm5, %edx 4551; AVX512DQ-NEXT: vpextrd $3, %xmm6, %esi 4552; AVX512DQ-NEXT: cmpl %edx, %esi 4553; AVX512DQ-NEXT: movl $0, %edx 4554; AVX512DQ-NEXT: cmovgl %ecx, %edx 4555; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm7, %xmm5 4556; AVX512DQ-NEXT: vpextrd $1, %xmm2, %edx 4557; AVX512DQ-NEXT: vpextrd $1, %xmm0, %esi 4558; AVX512DQ-NEXT: cmpl %edx, %esi 4559; AVX512DQ-NEXT: movl $0, %edx 4560; AVX512DQ-NEXT: cmovgl %ecx, %edx 4561; AVX512DQ-NEXT: vmovd %xmm2, %esi 4562; AVX512DQ-NEXT: vmovd %xmm0, %edi 4563; AVX512DQ-NEXT: cmpl %esi, %edi 4564; AVX512DQ-NEXT: movl $0, %esi 4565; AVX512DQ-NEXT: cmovgl %ecx, %esi 4566; AVX512DQ-NEXT: vmovd %esi, %xmm6 4567; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 4568; AVX512DQ-NEXT: vpextrd $2, %xmm2, %edx 4569; AVX512DQ-NEXT: vpextrd $2, %xmm0, %esi 4570; AVX512DQ-NEXT: cmpl %edx, %esi 4571; AVX512DQ-NEXT: movl $0, %edx 4572; AVX512DQ-NEXT: cmovgl %ecx, %edx 4573; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 4574; AVX512DQ-NEXT: vpextrd $3, %xmm2, %edx 4575; AVX512DQ-NEXT: vpextrd $3, %xmm0, %esi 4576; AVX512DQ-NEXT: cmpl %edx, %esi 4577; AVX512DQ-NEXT: movl $0, %edx 4578; AVX512DQ-NEXT: cmovgl %ecx, %edx 4579; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm6, %xmm0 4580; AVX512DQ-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0 4581; AVX512DQ-NEXT: vinserti32x8 $1, %ymm4, %zmm0, %zmm0 4582; AVX512DQ-NEXT: vpmovdb %zmm0, %xmm0 4583; AVX512DQ-NEXT: vextracti32x4 $3, %zmm3, %xmm2 4584; AVX512DQ-NEXT: vpextrd $1, %xmm2, %edx 4585; AVX512DQ-NEXT: vextracti32x4 $3, %zmm1, %xmm4 4586; AVX512DQ-NEXT: vpextrd $1, %xmm4, %esi 4587; AVX512DQ-NEXT: cmpl %edx, %esi 4588; AVX512DQ-NEXT: movl $0, %edx 4589; AVX512DQ-NEXT: cmovgl %ecx, %edx 4590; AVX512DQ-NEXT: vmovd %xmm2, %esi 4591; AVX512DQ-NEXT: vmovd %xmm4, %edi 4592; AVX512DQ-NEXT: cmpl %esi, %edi 4593; AVX512DQ-NEXT: movl $0, %esi 4594; AVX512DQ-NEXT: cmovgl %ecx, %esi 4595; AVX512DQ-NEXT: vmovd %esi, %xmm5 4596; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 4597; AVX512DQ-NEXT: vpextrd $2, %xmm2, %edx 4598; AVX512DQ-NEXT: vpextrd $2, %xmm4, %esi 4599; AVX512DQ-NEXT: cmpl %edx, %esi 4600; AVX512DQ-NEXT: movl $0, %edx 4601; AVX512DQ-NEXT: cmovgl %ecx, %edx 4602; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm5, %xmm5 4603; AVX512DQ-NEXT: vpextrd $3, %xmm2, %edx 4604; AVX512DQ-NEXT: vpextrd $3, %xmm4, %esi 4605; AVX512DQ-NEXT: cmpl %edx, %esi 4606; AVX512DQ-NEXT: movl $0, %edx 4607; AVX512DQ-NEXT: cmovgl %ecx, %edx 4608; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm5, %xmm2 4609; AVX512DQ-NEXT: vextracti32x4 $2, %zmm3, %xmm4 4610; AVX512DQ-NEXT: vpextrd $1, %xmm4, %edx 4611; AVX512DQ-NEXT: vextracti32x4 $2, %zmm1, %xmm5 4612; AVX512DQ-NEXT: vpextrd $1, %xmm5, %esi 4613; AVX512DQ-NEXT: cmpl %edx, %esi 4614; AVX512DQ-NEXT: movl $0, %edx 4615; AVX512DQ-NEXT: cmovgl %ecx, %edx 4616; AVX512DQ-NEXT: vmovd %xmm4, %esi 4617; AVX512DQ-NEXT: vmovd %xmm5, %edi 4618; AVX512DQ-NEXT: cmpl %esi, %edi 4619; AVX512DQ-NEXT: movl $0, %esi 4620; AVX512DQ-NEXT: cmovgl %ecx, %esi 4621; AVX512DQ-NEXT: vmovd %esi, %xmm6 4622; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 4623; AVX512DQ-NEXT: vpextrd $2, %xmm4, %edx 4624; AVX512DQ-NEXT: vpextrd $2, %xmm5, %esi 4625; AVX512DQ-NEXT: cmpl %edx, %esi 4626; AVX512DQ-NEXT: movl $0, %edx 4627; AVX512DQ-NEXT: cmovgl %ecx, %edx 4628; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 4629; AVX512DQ-NEXT: vpextrd $3, %xmm4, %edx 4630; AVX512DQ-NEXT: vpextrd $3, %xmm5, %esi 4631; AVX512DQ-NEXT: cmpl %edx, %esi 4632; AVX512DQ-NEXT: movl $0, %edx 4633; AVX512DQ-NEXT: cmovgl %ecx, %edx 4634; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm6, %xmm4 4635; AVX512DQ-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2 4636; AVX512DQ-NEXT: vextracti32x4 $1, %zmm3, %xmm4 4637; AVX512DQ-NEXT: vpextrd $1, %xmm4, %edx 4638; AVX512DQ-NEXT: vextracti32x4 $1, %zmm1, %xmm5 4639; AVX512DQ-NEXT: vpextrd $1, %xmm5, %esi 4640; AVX512DQ-NEXT: cmpl %edx, %esi 4641; AVX512DQ-NEXT: movl $0, %edx 4642; AVX512DQ-NEXT: cmovgl %ecx, %edx 4643; AVX512DQ-NEXT: vmovd %xmm4, %esi 4644; AVX512DQ-NEXT: vmovd %xmm5, %edi 4645; AVX512DQ-NEXT: cmpl %esi, %edi 4646; AVX512DQ-NEXT: movl $0, %esi 4647; AVX512DQ-NEXT: cmovgl %ecx, %esi 4648; AVX512DQ-NEXT: vmovd %esi, %xmm6 4649; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 4650; AVX512DQ-NEXT: vpextrd $2, %xmm4, %edx 4651; AVX512DQ-NEXT: vpextrd $2, %xmm5, %esi 4652; AVX512DQ-NEXT: cmpl %edx, %esi 4653; AVX512DQ-NEXT: movl $0, %edx 4654; AVX512DQ-NEXT: cmovgl %ecx, %edx 4655; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 4656; AVX512DQ-NEXT: vpextrd $3, %xmm4, %edx 4657; AVX512DQ-NEXT: vpextrd $3, %xmm5, %esi 4658; AVX512DQ-NEXT: cmpl %edx, %esi 4659; AVX512DQ-NEXT: movl $0, %edx 4660; AVX512DQ-NEXT: cmovgl %ecx, %edx 4661; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm6, %xmm4 4662; AVX512DQ-NEXT: vpextrd $1, %xmm3, %edx 4663; AVX512DQ-NEXT: vpextrd $1, %xmm1, %esi 4664; AVX512DQ-NEXT: cmpl %edx, %esi 4665; AVX512DQ-NEXT: movl $0, %edx 4666; AVX512DQ-NEXT: cmovgl %ecx, %edx 4667; AVX512DQ-NEXT: vmovd %xmm3, %esi 4668; AVX512DQ-NEXT: vmovd %xmm1, %edi 4669; AVX512DQ-NEXT: cmpl %esi, %edi 4670; AVX512DQ-NEXT: movl $0, %esi 4671; AVX512DQ-NEXT: cmovgl %ecx, %esi 4672; AVX512DQ-NEXT: vmovd %esi, %xmm5 4673; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 4674; AVX512DQ-NEXT: vpextrd $2, %xmm3, %edx 4675; AVX512DQ-NEXT: vpextrd $2, %xmm1, %esi 4676; AVX512DQ-NEXT: cmpl %edx, %esi 4677; AVX512DQ-NEXT: movl $0, %edx 4678; AVX512DQ-NEXT: cmovgl %ecx, %edx 4679; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm5, %xmm5 4680; AVX512DQ-NEXT: vpextrd $3, %xmm3, %edx 4681; AVX512DQ-NEXT: vpextrd $3, %xmm1, %esi 4682; AVX512DQ-NEXT: cmpl %edx, %esi 4683; AVX512DQ-NEXT: cmovgl %ecx, %eax 4684; AVX512DQ-NEXT: vpinsrd $3, %eax, %xmm5, %xmm1 4685; AVX512DQ-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1 4686; AVX512DQ-NEXT: vinserti32x8 $1, %ymm2, %zmm1, %zmm1 4687; AVX512DQ-NEXT: vpmovdb %zmm1, %xmm1 4688; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 4689; AVX512DQ-NEXT: retq 4690; 4691; AVX512BW-LABEL: test_cmp_v32i32: 4692; AVX512BW: # BB#0: 4693; AVX512BW-NEXT: vextracti32x4 $3, %zmm2, %xmm4 4694; AVX512BW-NEXT: vpextrd $1, %xmm4, %ecx 4695; AVX512BW-NEXT: vextracti32x4 $3, %zmm0, %xmm5 4696; AVX512BW-NEXT: vpextrd $1, %xmm5, %edx 4697; AVX512BW-NEXT: xorl %eax, %eax 4698; AVX512BW-NEXT: cmpl %ecx, %edx 4699; AVX512BW-NEXT: movl $-1, %ecx 4700; AVX512BW-NEXT: movl $0, %edx 4701; AVX512BW-NEXT: cmovgl %ecx, %edx 4702; AVX512BW-NEXT: vmovd %xmm4, %esi 4703; AVX512BW-NEXT: vmovd %xmm5, %edi 4704; AVX512BW-NEXT: cmpl %esi, %edi 4705; AVX512BW-NEXT: movl $0, %esi 4706; AVX512BW-NEXT: cmovgl %ecx, %esi 4707; AVX512BW-NEXT: vmovd %esi, %xmm6 4708; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 4709; AVX512BW-NEXT: vpextrd $2, %xmm4, %edx 4710; AVX512BW-NEXT: vpextrd $2, %xmm5, %esi 4711; AVX512BW-NEXT: cmpl %edx, %esi 4712; AVX512BW-NEXT: movl $0, %edx 4713; AVX512BW-NEXT: cmovgl %ecx, %edx 4714; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 4715; AVX512BW-NEXT: vpextrd $3, %xmm4, %edx 4716; AVX512BW-NEXT: vpextrd $3, %xmm5, %esi 4717; AVX512BW-NEXT: cmpl %edx, %esi 4718; AVX512BW-NEXT: movl $0, %edx 4719; AVX512BW-NEXT: cmovgl %ecx, %edx 4720; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm6, %xmm4 4721; AVX512BW-NEXT: vextracti32x4 $2, %zmm2, %xmm5 4722; AVX512BW-NEXT: vpextrd $1, %xmm5, %edx 4723; AVX512BW-NEXT: vextracti32x4 $2, %zmm0, %xmm6 4724; AVX512BW-NEXT: vpextrd $1, %xmm6, %esi 4725; AVX512BW-NEXT: cmpl %edx, %esi 4726; AVX512BW-NEXT: movl $0, %edx 4727; AVX512BW-NEXT: cmovgl %ecx, %edx 4728; AVX512BW-NEXT: vmovd %xmm5, %esi 4729; AVX512BW-NEXT: vmovd %xmm6, %edi 4730; AVX512BW-NEXT: cmpl %esi, %edi 4731; AVX512BW-NEXT: movl $0, %esi 4732; AVX512BW-NEXT: cmovgl %ecx, %esi 4733; AVX512BW-NEXT: vmovd %esi, %xmm7 4734; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm7, %xmm7 4735; AVX512BW-NEXT: vpextrd $2, %xmm5, %edx 4736; AVX512BW-NEXT: vpextrd $2, %xmm6, %esi 4737; AVX512BW-NEXT: cmpl %edx, %esi 4738; AVX512BW-NEXT: movl $0, %edx 4739; AVX512BW-NEXT: cmovgl %ecx, %edx 4740; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm7, %xmm7 4741; AVX512BW-NEXT: vpextrd $3, %xmm5, %edx 4742; AVX512BW-NEXT: vpextrd $3, %xmm6, %esi 4743; AVX512BW-NEXT: cmpl %edx, %esi 4744; AVX512BW-NEXT: movl $0, %edx 4745; AVX512BW-NEXT: cmovgl %ecx, %edx 4746; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm7, %xmm5 4747; AVX512BW-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4 4748; AVX512BW-NEXT: vextracti32x4 $1, %zmm2, %xmm5 4749; AVX512BW-NEXT: vpextrd $1, %xmm5, %edx 4750; AVX512BW-NEXT: vextracti32x4 $1, %zmm0, %xmm6 4751; AVX512BW-NEXT: vpextrd $1, %xmm6, %esi 4752; AVX512BW-NEXT: cmpl %edx, %esi 4753; AVX512BW-NEXT: movl $0, %edx 4754; AVX512BW-NEXT: cmovgl %ecx, %edx 4755; AVX512BW-NEXT: vmovd %xmm5, %esi 4756; AVX512BW-NEXT: vmovd %xmm6, %edi 4757; AVX512BW-NEXT: cmpl %esi, %edi 4758; AVX512BW-NEXT: movl $0, %esi 4759; AVX512BW-NEXT: cmovgl %ecx, %esi 4760; AVX512BW-NEXT: vmovd %esi, %xmm7 4761; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm7, %xmm7 4762; AVX512BW-NEXT: vpextrd $2, %xmm5, %edx 4763; AVX512BW-NEXT: vpextrd $2, %xmm6, %esi 4764; AVX512BW-NEXT: cmpl %edx, %esi 4765; AVX512BW-NEXT: movl $0, %edx 4766; AVX512BW-NEXT: cmovgl %ecx, %edx 4767; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm7, %xmm7 4768; AVX512BW-NEXT: vpextrd $3, %xmm5, %edx 4769; AVX512BW-NEXT: vpextrd $3, %xmm6, %esi 4770; AVX512BW-NEXT: cmpl %edx, %esi 4771; AVX512BW-NEXT: movl $0, %edx 4772; AVX512BW-NEXT: cmovgl %ecx, %edx 4773; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm7, %xmm5 4774; AVX512BW-NEXT: vpextrd $1, %xmm2, %edx 4775; AVX512BW-NEXT: vpextrd $1, %xmm0, %esi 4776; AVX512BW-NEXT: cmpl %edx, %esi 4777; AVX512BW-NEXT: movl $0, %edx 4778; AVX512BW-NEXT: cmovgl %ecx, %edx 4779; AVX512BW-NEXT: vmovd %xmm2, %esi 4780; AVX512BW-NEXT: vmovd %xmm0, %edi 4781; AVX512BW-NEXT: cmpl %esi, %edi 4782; AVX512BW-NEXT: movl $0, %esi 4783; AVX512BW-NEXT: cmovgl %ecx, %esi 4784; AVX512BW-NEXT: vmovd %esi, %xmm6 4785; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 4786; AVX512BW-NEXT: vpextrd $2, %xmm2, %edx 4787; AVX512BW-NEXT: vpextrd $2, %xmm0, %esi 4788; AVX512BW-NEXT: cmpl %edx, %esi 4789; AVX512BW-NEXT: movl $0, %edx 4790; AVX512BW-NEXT: cmovgl %ecx, %edx 4791; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 4792; AVX512BW-NEXT: vpextrd $3, %xmm2, %edx 4793; AVX512BW-NEXT: vpextrd $3, %xmm0, %esi 4794; AVX512BW-NEXT: cmpl %edx, %esi 4795; AVX512BW-NEXT: movl $0, %edx 4796; AVX512BW-NEXT: cmovgl %ecx, %edx 4797; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm6, %xmm0 4798; AVX512BW-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0 4799; AVX512BW-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm0 4800; AVX512BW-NEXT: vpmovdw %zmm0, %ymm0 4801; AVX512BW-NEXT: vextracti32x4 $3, %zmm3, %xmm2 4802; AVX512BW-NEXT: vpextrd $1, %xmm2, %edx 4803; AVX512BW-NEXT: vextracti32x4 $3, %zmm1, %xmm4 4804; AVX512BW-NEXT: vpextrd $1, %xmm4, %esi 4805; AVX512BW-NEXT: cmpl %edx, %esi 4806; AVX512BW-NEXT: movl $0, %edx 4807; AVX512BW-NEXT: cmovgl %ecx, %edx 4808; AVX512BW-NEXT: vmovd %xmm2, %esi 4809; AVX512BW-NEXT: vmovd %xmm4, %edi 4810; AVX512BW-NEXT: cmpl %esi, %edi 4811; AVX512BW-NEXT: movl $0, %esi 4812; AVX512BW-NEXT: cmovgl %ecx, %esi 4813; AVX512BW-NEXT: vmovd %esi, %xmm5 4814; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 4815; AVX512BW-NEXT: vpextrd $2, %xmm2, %edx 4816; AVX512BW-NEXT: vpextrd $2, %xmm4, %esi 4817; AVX512BW-NEXT: cmpl %edx, %esi 4818; AVX512BW-NEXT: movl $0, %edx 4819; AVX512BW-NEXT: cmovgl %ecx, %edx 4820; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm5, %xmm5 4821; AVX512BW-NEXT: vpextrd $3, %xmm2, %edx 4822; AVX512BW-NEXT: vpextrd $3, %xmm4, %esi 4823; AVX512BW-NEXT: cmpl %edx, %esi 4824; AVX512BW-NEXT: movl $0, %edx 4825; AVX512BW-NEXT: cmovgl %ecx, %edx 4826; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm5, %xmm2 4827; AVX512BW-NEXT: vextracti32x4 $2, %zmm3, %xmm4 4828; AVX512BW-NEXT: vpextrd $1, %xmm4, %edx 4829; AVX512BW-NEXT: vextracti32x4 $2, %zmm1, %xmm5 4830; AVX512BW-NEXT: vpextrd $1, %xmm5, %esi 4831; AVX512BW-NEXT: cmpl %edx, %esi 4832; AVX512BW-NEXT: movl $0, %edx 4833; AVX512BW-NEXT: cmovgl %ecx, %edx 4834; AVX512BW-NEXT: vmovd %xmm4, %esi 4835; AVX512BW-NEXT: vmovd %xmm5, %edi 4836; AVX512BW-NEXT: cmpl %esi, %edi 4837; AVX512BW-NEXT: movl $0, %esi 4838; AVX512BW-NEXT: cmovgl %ecx, %esi 4839; AVX512BW-NEXT: vmovd %esi, %xmm6 4840; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 4841; AVX512BW-NEXT: vpextrd $2, %xmm4, %edx 4842; AVX512BW-NEXT: vpextrd $2, %xmm5, %esi 4843; AVX512BW-NEXT: cmpl %edx, %esi 4844; AVX512BW-NEXT: movl $0, %edx 4845; AVX512BW-NEXT: cmovgl %ecx, %edx 4846; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 4847; AVX512BW-NEXT: vpextrd $3, %xmm4, %edx 4848; AVX512BW-NEXT: vpextrd $3, %xmm5, %esi 4849; AVX512BW-NEXT: cmpl %edx, %esi 4850; AVX512BW-NEXT: movl $0, %edx 4851; AVX512BW-NEXT: cmovgl %ecx, %edx 4852; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm6, %xmm4 4853; AVX512BW-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2 4854; AVX512BW-NEXT: vextracti32x4 $1, %zmm3, %xmm4 4855; AVX512BW-NEXT: vpextrd $1, %xmm4, %edx 4856; AVX512BW-NEXT: vextracti32x4 $1, %zmm1, %xmm5 4857; AVX512BW-NEXT: vpextrd $1, %xmm5, %esi 4858; AVX512BW-NEXT: cmpl %edx, %esi 4859; AVX512BW-NEXT: movl $0, %edx 4860; AVX512BW-NEXT: cmovgl %ecx, %edx 4861; AVX512BW-NEXT: vmovd %xmm4, %esi 4862; AVX512BW-NEXT: vmovd %xmm5, %edi 4863; AVX512BW-NEXT: cmpl %esi, %edi 4864; AVX512BW-NEXT: movl $0, %esi 4865; AVX512BW-NEXT: cmovgl %ecx, %esi 4866; AVX512BW-NEXT: vmovd %esi, %xmm6 4867; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 4868; AVX512BW-NEXT: vpextrd $2, %xmm4, %edx 4869; AVX512BW-NEXT: vpextrd $2, %xmm5, %esi 4870; AVX512BW-NEXT: cmpl %edx, %esi 4871; AVX512BW-NEXT: movl $0, %edx 4872; AVX512BW-NEXT: cmovgl %ecx, %edx 4873; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 4874; AVX512BW-NEXT: vpextrd $3, %xmm4, %edx 4875; AVX512BW-NEXT: vpextrd $3, %xmm5, %esi 4876; AVX512BW-NEXT: cmpl %edx, %esi 4877; AVX512BW-NEXT: movl $0, %edx 4878; AVX512BW-NEXT: cmovgl %ecx, %edx 4879; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm6, %xmm4 4880; AVX512BW-NEXT: vpextrd $1, %xmm3, %edx 4881; AVX512BW-NEXT: vpextrd $1, %xmm1, %esi 4882; AVX512BW-NEXT: cmpl %edx, %esi 4883; AVX512BW-NEXT: movl $0, %edx 4884; AVX512BW-NEXT: cmovgl %ecx, %edx 4885; AVX512BW-NEXT: vmovd %xmm3, %esi 4886; AVX512BW-NEXT: vmovd %xmm1, %edi 4887; AVX512BW-NEXT: cmpl %esi, %edi 4888; AVX512BW-NEXT: movl $0, %esi 4889; AVX512BW-NEXT: cmovgl %ecx, %esi 4890; AVX512BW-NEXT: vmovd %esi, %xmm5 4891; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 4892; AVX512BW-NEXT: vpextrd $2, %xmm3, %edx 4893; AVX512BW-NEXT: vpextrd $2, %xmm1, %esi 4894; AVX512BW-NEXT: cmpl %edx, %esi 4895; AVX512BW-NEXT: movl $0, %edx 4896; AVX512BW-NEXT: cmovgl %ecx, %edx 4897; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm5, %xmm5 4898; AVX512BW-NEXT: vpextrd $3, %xmm3, %edx 4899; AVX512BW-NEXT: vpextrd $3, %xmm1, %esi 4900; AVX512BW-NEXT: cmpl %edx, %esi 4901; AVX512BW-NEXT: cmovgl %ecx, %eax 4902; AVX512BW-NEXT: vpinsrd $3, %eax, %xmm5, %xmm1 4903; AVX512BW-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1 4904; AVX512BW-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1 4905; AVX512BW-NEXT: vpmovdw %zmm1, %ymm1 4906; AVX512BW-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 4907; AVX512BW-NEXT: vpmovwb %zmm0, %ymm0 4908; AVX512BW-NEXT: retq 4909 %1 = icmp sgt <32 x i32> %a0, %a1 4910 ret <32 x i1> %1 4911} 4912 4913define <64 x i1> @test_cmp_v64i16(<64 x i16> %a0, <64 x i16> %a1) nounwind { 4914; SSE2-LABEL: test_cmp_v64i16: 4915; SSE2: # BB#0: 4916; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm1 4917; SSE2-NEXT: movdqa {{.*#+}} xmm8 = [255,255,255,255,255,255,255,255] 4918; SSE2-NEXT: pand %xmm8, %xmm1 4919; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm0 4920; SSE2-NEXT: pand %xmm8, %xmm0 4921; SSE2-NEXT: packuswb %xmm1, %xmm0 4922; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm3 4923; SSE2-NEXT: pand %xmm8, %xmm3 4924; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm2 4925; SSE2-NEXT: pand %xmm8, %xmm2 4926; SSE2-NEXT: packuswb %xmm3, %xmm2 4927; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm5 4928; SSE2-NEXT: pand %xmm8, %xmm5 4929; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm4 4930; SSE2-NEXT: pand %xmm8, %xmm4 4931; SSE2-NEXT: packuswb %xmm5, %xmm4 4932; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm7 4933; SSE2-NEXT: pand %xmm8, %xmm7 4934; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm6 4935; SSE2-NEXT: pand %xmm8, %xmm6 4936; SSE2-NEXT: packuswb %xmm7, %xmm6 4937; SSE2-NEXT: movdqa %xmm6, -{{[0-9]+}}(%rsp) 4938; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4939; SSE2-NEXT: andb $1, %al 4940; SSE2-NEXT: movb %al, 6(%rdi) 4941; SSE2-NEXT: movdqa %xmm4, -{{[0-9]+}}(%rsp) 4942; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4943; SSE2-NEXT: andb $1, %al 4944; SSE2-NEXT: movb %al, 4(%rdi) 4945; SSE2-NEXT: movdqa %xmm2, -{{[0-9]+}}(%rsp) 4946; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4947; SSE2-NEXT: andb $1, %al 4948; SSE2-NEXT: movb %al, 2(%rdi) 4949; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 4950; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4951; SSE2-NEXT: andb $1, %al 4952; SSE2-NEXT: movb %al, (%rdi) 4953; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4954; SSE2-NEXT: andb $1, %al 4955; SSE2-NEXT: movb %al, 6(%rdi) 4956; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4957; SSE2-NEXT: andb $1, %al 4958; SSE2-NEXT: movb %al, 4(%rdi) 4959; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4960; SSE2-NEXT: andb $1, %al 4961; SSE2-NEXT: movb %al, 2(%rdi) 4962; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4963; SSE2-NEXT: andb $1, %al 4964; SSE2-NEXT: movb %al, (%rdi) 4965; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4966; SSE2-NEXT: andb $1, %al 4967; SSE2-NEXT: movb %al, 6(%rdi) 4968; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4969; SSE2-NEXT: andb $1, %al 4970; SSE2-NEXT: movb %al, 4(%rdi) 4971; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4972; SSE2-NEXT: andb $1, %al 4973; SSE2-NEXT: movb %al, 2(%rdi) 4974; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4975; SSE2-NEXT: andb $1, %al 4976; SSE2-NEXT: movb %al, (%rdi) 4977; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4978; SSE2-NEXT: andb $1, %al 4979; SSE2-NEXT: movb %al, 6(%rdi) 4980; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4981; SSE2-NEXT: andb $1, %al 4982; SSE2-NEXT: movb %al, 4(%rdi) 4983; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4984; SSE2-NEXT: andb $1, %al 4985; SSE2-NEXT: movb %al, 2(%rdi) 4986; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4987; SSE2-NEXT: andb $1, %al 4988; SSE2-NEXT: movb %al, (%rdi) 4989; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4990; SSE2-NEXT: andb $1, %al 4991; SSE2-NEXT: movb %al, 6(%rdi) 4992; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4993; SSE2-NEXT: andb $1, %al 4994; SSE2-NEXT: movb %al, 4(%rdi) 4995; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4996; SSE2-NEXT: andb $1, %al 4997; SSE2-NEXT: movb %al, 2(%rdi) 4998; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4999; SSE2-NEXT: andb $1, %al 5000; SSE2-NEXT: movb %al, (%rdi) 5001; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5002; SSE2-NEXT: andb $1, %al 5003; SSE2-NEXT: movb %al, 6(%rdi) 5004; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5005; SSE2-NEXT: andb $1, %al 5006; SSE2-NEXT: movb %al, 4(%rdi) 5007; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5008; SSE2-NEXT: andb $1, %al 5009; SSE2-NEXT: movb %al, 2(%rdi) 5010; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5011; SSE2-NEXT: andb $1, %al 5012; SSE2-NEXT: movb %al, (%rdi) 5013; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5014; SSE2-NEXT: andb $1, %al 5015; SSE2-NEXT: movb %al, 6(%rdi) 5016; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5017; SSE2-NEXT: andb $1, %al 5018; SSE2-NEXT: movb %al, 4(%rdi) 5019; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5020; SSE2-NEXT: andb $1, %al 5021; SSE2-NEXT: movb %al, 2(%rdi) 5022; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5023; SSE2-NEXT: andb $1, %al 5024; SSE2-NEXT: movb %al, (%rdi) 5025; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5026; SSE2-NEXT: andb $1, %al 5027; SSE2-NEXT: movb %al, 6(%rdi) 5028; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5029; SSE2-NEXT: andb $1, %al 5030; SSE2-NEXT: movb %al, 4(%rdi) 5031; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5032; SSE2-NEXT: andb $1, %al 5033; SSE2-NEXT: movb %al, 2(%rdi) 5034; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5035; SSE2-NEXT: andb $1, %al 5036; SSE2-NEXT: movb %al, (%rdi) 5037; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5038; SSE2-NEXT: andb $1, %al 5039; SSE2-NEXT: movb %al, 6(%rdi) 5040; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5041; SSE2-NEXT: andb $1, %al 5042; SSE2-NEXT: movb %al, 4(%rdi) 5043; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5044; SSE2-NEXT: andb $1, %al 5045; SSE2-NEXT: movb %al, 2(%rdi) 5046; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5047; SSE2-NEXT: andb $1, %al 5048; SSE2-NEXT: movb %al, (%rdi) 5049; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5050; SSE2-NEXT: andb $1, %al 5051; SSE2-NEXT: movb %al, 6(%rdi) 5052; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5053; SSE2-NEXT: andb $1, %al 5054; SSE2-NEXT: movb %al, 4(%rdi) 5055; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5056; SSE2-NEXT: andb $1, %al 5057; SSE2-NEXT: movb %al, 2(%rdi) 5058; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5059; SSE2-NEXT: andb $1, %al 5060; SSE2-NEXT: movb %al, (%rdi) 5061; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5062; SSE2-NEXT: andb $1, %al 5063; SSE2-NEXT: movb %al, 6(%rdi) 5064; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5065; SSE2-NEXT: andb $1, %al 5066; SSE2-NEXT: movb %al, 4(%rdi) 5067; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5068; SSE2-NEXT: andb $1, %al 5069; SSE2-NEXT: movb %al, 2(%rdi) 5070; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5071; SSE2-NEXT: andb $1, %al 5072; SSE2-NEXT: movb %al, (%rdi) 5073; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5074; SSE2-NEXT: andb $1, %al 5075; SSE2-NEXT: movb %al, 6(%rdi) 5076; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5077; SSE2-NEXT: andb $1, %al 5078; SSE2-NEXT: movb %al, 4(%rdi) 5079; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5080; SSE2-NEXT: andb $1, %al 5081; SSE2-NEXT: movb %al, 2(%rdi) 5082; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5083; SSE2-NEXT: andb $1, %al 5084; SSE2-NEXT: movb %al, (%rdi) 5085; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5086; SSE2-NEXT: andb $1, %al 5087; SSE2-NEXT: movb %al, 6(%rdi) 5088; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5089; SSE2-NEXT: andb $1, %al 5090; SSE2-NEXT: movb %al, 4(%rdi) 5091; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5092; SSE2-NEXT: andb $1, %al 5093; SSE2-NEXT: movb %al, 2(%rdi) 5094; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5095; SSE2-NEXT: andb $1, %al 5096; SSE2-NEXT: movb %al, (%rdi) 5097; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5098; SSE2-NEXT: andb $1, %al 5099; SSE2-NEXT: movb %al, 6(%rdi) 5100; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5101; SSE2-NEXT: andb $1, %al 5102; SSE2-NEXT: movb %al, 4(%rdi) 5103; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5104; SSE2-NEXT: andb $1, %al 5105; SSE2-NEXT: movb %al, 2(%rdi) 5106; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5107; SSE2-NEXT: andb $1, %al 5108; SSE2-NEXT: movb %al, (%rdi) 5109; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5110; SSE2-NEXT: andb $1, %al 5111; SSE2-NEXT: movb %al, 6(%rdi) 5112; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5113; SSE2-NEXT: andb $1, %al 5114; SSE2-NEXT: movb %al, 4(%rdi) 5115; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5116; SSE2-NEXT: andb $1, %al 5117; SSE2-NEXT: movb %al, 2(%rdi) 5118; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5119; SSE2-NEXT: andb $1, %al 5120; SSE2-NEXT: movb %al, (%rdi) 5121; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5122; SSE2-NEXT: andb $1, %al 5123; SSE2-NEXT: movb %al, 6(%rdi) 5124; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5125; SSE2-NEXT: andb $1, %al 5126; SSE2-NEXT: movb %al, 4(%rdi) 5127; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5128; SSE2-NEXT: andb $1, %al 5129; SSE2-NEXT: movb %al, 2(%rdi) 5130; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5131; SSE2-NEXT: andb $1, %al 5132; SSE2-NEXT: movb %al, (%rdi) 5133; SSE2-NEXT: movq %rdi, %rax 5134; SSE2-NEXT: retq 5135; 5136; SSE42-LABEL: test_cmp_v64i16: 5137; SSE42: # BB#0: 5138; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm1 5139; SSE42-NEXT: movdqa {{.*#+}} xmm8 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u> 5140; SSE42-NEXT: pshufb %xmm8, %xmm1 5141; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm0 5142; SSE42-NEXT: pshufb %xmm8, %xmm0 5143; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 5144; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm3 5145; SSE42-NEXT: pshufb %xmm8, %xmm3 5146; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm2 5147; SSE42-NEXT: pshufb %xmm8, %xmm2 5148; SSE42-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0] 5149; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm5 5150; SSE42-NEXT: pshufb %xmm8, %xmm5 5151; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm4 5152; SSE42-NEXT: pshufb %xmm8, %xmm4 5153; SSE42-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0] 5154; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm7 5155; SSE42-NEXT: pshufb %xmm8, %xmm7 5156; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm6 5157; SSE42-NEXT: pshufb %xmm8, %xmm6 5158; SSE42-NEXT: punpcklqdq {{.*#+}} xmm6 = xmm6[0],xmm7[0] 5159; SSE42-NEXT: pextrb $15, %xmm6, %eax 5160; SSE42-NEXT: andb $1, %al 5161; SSE42-NEXT: movb %al, 6(%rdi) 5162; SSE42-NEXT: pextrb $14, %xmm6, %eax 5163; SSE42-NEXT: andb $1, %al 5164; SSE42-NEXT: movb %al, 6(%rdi) 5165; SSE42-NEXT: pextrb $13, %xmm6, %eax 5166; SSE42-NEXT: andb $1, %al 5167; SSE42-NEXT: movb %al, 6(%rdi) 5168; SSE42-NEXT: pextrb $12, %xmm6, %eax 5169; SSE42-NEXT: andb $1, %al 5170; SSE42-NEXT: movb %al, 6(%rdi) 5171; SSE42-NEXT: pextrb $11, %xmm6, %eax 5172; SSE42-NEXT: andb $1, %al 5173; SSE42-NEXT: movb %al, 6(%rdi) 5174; SSE42-NEXT: pextrb $10, %xmm6, %eax 5175; SSE42-NEXT: andb $1, %al 5176; SSE42-NEXT: movb %al, 6(%rdi) 5177; SSE42-NEXT: pextrb $9, %xmm6, %eax 5178; SSE42-NEXT: andb $1, %al 5179; SSE42-NEXT: movb %al, 6(%rdi) 5180; SSE42-NEXT: pextrb $8, %xmm6, %eax 5181; SSE42-NEXT: andb $1, %al 5182; SSE42-NEXT: movb %al, 6(%rdi) 5183; SSE42-NEXT: pextrb $7, %xmm6, %eax 5184; SSE42-NEXT: andb $1, %al 5185; SSE42-NEXT: movb %al, 6(%rdi) 5186; SSE42-NEXT: pextrb $6, %xmm6, %eax 5187; SSE42-NEXT: andb $1, %al 5188; SSE42-NEXT: movb %al, 6(%rdi) 5189; SSE42-NEXT: pextrb $5, %xmm6, %eax 5190; SSE42-NEXT: andb $1, %al 5191; SSE42-NEXT: movb %al, 6(%rdi) 5192; SSE42-NEXT: pextrb $4, %xmm6, %eax 5193; SSE42-NEXT: andb $1, %al 5194; SSE42-NEXT: movb %al, 6(%rdi) 5195; SSE42-NEXT: pextrb $3, %xmm6, %eax 5196; SSE42-NEXT: andb $1, %al 5197; SSE42-NEXT: movb %al, 6(%rdi) 5198; SSE42-NEXT: pextrb $2, %xmm6, %eax 5199; SSE42-NEXT: andb $1, %al 5200; SSE42-NEXT: movb %al, 6(%rdi) 5201; SSE42-NEXT: pextrb $1, %xmm6, %eax 5202; SSE42-NEXT: andb $1, %al 5203; SSE42-NEXT: movb %al, 6(%rdi) 5204; SSE42-NEXT: pextrb $0, %xmm6, %eax 5205; SSE42-NEXT: andb $1, %al 5206; SSE42-NEXT: movb %al, 6(%rdi) 5207; SSE42-NEXT: pextrb $15, %xmm4, %eax 5208; SSE42-NEXT: andb $1, %al 5209; SSE42-NEXT: movb %al, 4(%rdi) 5210; SSE42-NEXT: pextrb $14, %xmm4, %eax 5211; SSE42-NEXT: andb $1, %al 5212; SSE42-NEXT: movb %al, 4(%rdi) 5213; SSE42-NEXT: pextrb $13, %xmm4, %eax 5214; SSE42-NEXT: andb $1, %al 5215; SSE42-NEXT: movb %al, 4(%rdi) 5216; SSE42-NEXT: pextrb $12, %xmm4, %eax 5217; SSE42-NEXT: andb $1, %al 5218; SSE42-NEXT: movb %al, 4(%rdi) 5219; SSE42-NEXT: pextrb $11, %xmm4, %eax 5220; SSE42-NEXT: andb $1, %al 5221; SSE42-NEXT: movb %al, 4(%rdi) 5222; SSE42-NEXT: pextrb $10, %xmm4, %eax 5223; SSE42-NEXT: andb $1, %al 5224; SSE42-NEXT: movb %al, 4(%rdi) 5225; SSE42-NEXT: pextrb $9, %xmm4, %eax 5226; SSE42-NEXT: andb $1, %al 5227; SSE42-NEXT: movb %al, 4(%rdi) 5228; SSE42-NEXT: pextrb $8, %xmm4, %eax 5229; SSE42-NEXT: andb $1, %al 5230; SSE42-NEXT: movb %al, 4(%rdi) 5231; SSE42-NEXT: pextrb $7, %xmm4, %eax 5232; SSE42-NEXT: andb $1, %al 5233; SSE42-NEXT: movb %al, 4(%rdi) 5234; SSE42-NEXT: pextrb $6, %xmm4, %eax 5235; SSE42-NEXT: andb $1, %al 5236; SSE42-NEXT: movb %al, 4(%rdi) 5237; SSE42-NEXT: pextrb $5, %xmm4, %eax 5238; SSE42-NEXT: andb $1, %al 5239; SSE42-NEXT: movb %al, 4(%rdi) 5240; SSE42-NEXT: pextrb $4, %xmm4, %eax 5241; SSE42-NEXT: andb $1, %al 5242; SSE42-NEXT: movb %al, 4(%rdi) 5243; SSE42-NEXT: pextrb $3, %xmm4, %eax 5244; SSE42-NEXT: andb $1, %al 5245; SSE42-NEXT: movb %al, 4(%rdi) 5246; SSE42-NEXT: pextrb $2, %xmm4, %eax 5247; SSE42-NEXT: andb $1, %al 5248; SSE42-NEXT: movb %al, 4(%rdi) 5249; SSE42-NEXT: pextrb $1, %xmm4, %eax 5250; SSE42-NEXT: andb $1, %al 5251; SSE42-NEXT: movb %al, 4(%rdi) 5252; SSE42-NEXT: pextrb $0, %xmm4, %eax 5253; SSE42-NEXT: andb $1, %al 5254; SSE42-NEXT: movb %al, 4(%rdi) 5255; SSE42-NEXT: pextrb $15, %xmm2, %eax 5256; SSE42-NEXT: andb $1, %al 5257; SSE42-NEXT: movb %al, 2(%rdi) 5258; SSE42-NEXT: pextrb $14, %xmm2, %eax 5259; SSE42-NEXT: andb $1, %al 5260; SSE42-NEXT: movb %al, 2(%rdi) 5261; SSE42-NEXT: pextrb $13, %xmm2, %eax 5262; SSE42-NEXT: andb $1, %al 5263; SSE42-NEXT: movb %al, 2(%rdi) 5264; SSE42-NEXT: pextrb $12, %xmm2, %eax 5265; SSE42-NEXT: andb $1, %al 5266; SSE42-NEXT: movb %al, 2(%rdi) 5267; SSE42-NEXT: pextrb $11, %xmm2, %eax 5268; SSE42-NEXT: andb $1, %al 5269; SSE42-NEXT: movb %al, 2(%rdi) 5270; SSE42-NEXT: pextrb $10, %xmm2, %eax 5271; SSE42-NEXT: andb $1, %al 5272; SSE42-NEXT: movb %al, 2(%rdi) 5273; SSE42-NEXT: pextrb $9, %xmm2, %eax 5274; SSE42-NEXT: andb $1, %al 5275; SSE42-NEXT: movb %al, 2(%rdi) 5276; SSE42-NEXT: pextrb $8, %xmm2, %eax 5277; SSE42-NEXT: andb $1, %al 5278; SSE42-NEXT: movb %al, 2(%rdi) 5279; SSE42-NEXT: pextrb $7, %xmm2, %eax 5280; SSE42-NEXT: andb $1, %al 5281; SSE42-NEXT: movb %al, 2(%rdi) 5282; SSE42-NEXT: pextrb $6, %xmm2, %eax 5283; SSE42-NEXT: andb $1, %al 5284; SSE42-NEXT: movb %al, 2(%rdi) 5285; SSE42-NEXT: pextrb $5, %xmm2, %eax 5286; SSE42-NEXT: andb $1, %al 5287; SSE42-NEXT: movb %al, 2(%rdi) 5288; SSE42-NEXT: pextrb $4, %xmm2, %eax 5289; SSE42-NEXT: andb $1, %al 5290; SSE42-NEXT: movb %al, 2(%rdi) 5291; SSE42-NEXT: pextrb $3, %xmm2, %eax 5292; SSE42-NEXT: andb $1, %al 5293; SSE42-NEXT: movb %al, 2(%rdi) 5294; SSE42-NEXT: pextrb $2, %xmm2, %eax 5295; SSE42-NEXT: andb $1, %al 5296; SSE42-NEXT: movb %al, 2(%rdi) 5297; SSE42-NEXT: pextrb $1, %xmm2, %eax 5298; SSE42-NEXT: andb $1, %al 5299; SSE42-NEXT: movb %al, 2(%rdi) 5300; SSE42-NEXT: pextrb $0, %xmm2, %eax 5301; SSE42-NEXT: andb $1, %al 5302; SSE42-NEXT: movb %al, 2(%rdi) 5303; SSE42-NEXT: pextrb $15, %xmm0, %eax 5304; SSE42-NEXT: andb $1, %al 5305; SSE42-NEXT: movb %al, (%rdi) 5306; SSE42-NEXT: pextrb $14, %xmm0, %eax 5307; SSE42-NEXT: andb $1, %al 5308; SSE42-NEXT: movb %al, (%rdi) 5309; SSE42-NEXT: pextrb $13, %xmm0, %eax 5310; SSE42-NEXT: andb $1, %al 5311; SSE42-NEXT: movb %al, (%rdi) 5312; SSE42-NEXT: pextrb $12, %xmm0, %eax 5313; SSE42-NEXT: andb $1, %al 5314; SSE42-NEXT: movb %al, (%rdi) 5315; SSE42-NEXT: pextrb $11, %xmm0, %eax 5316; SSE42-NEXT: andb $1, %al 5317; SSE42-NEXT: movb %al, (%rdi) 5318; SSE42-NEXT: pextrb $10, %xmm0, %eax 5319; SSE42-NEXT: andb $1, %al 5320; SSE42-NEXT: movb %al, (%rdi) 5321; SSE42-NEXT: pextrb $9, %xmm0, %eax 5322; SSE42-NEXT: andb $1, %al 5323; SSE42-NEXT: movb %al, (%rdi) 5324; SSE42-NEXT: pextrb $8, %xmm0, %eax 5325; SSE42-NEXT: andb $1, %al 5326; SSE42-NEXT: movb %al, (%rdi) 5327; SSE42-NEXT: pextrb $7, %xmm0, %eax 5328; SSE42-NEXT: andb $1, %al 5329; SSE42-NEXT: movb %al, (%rdi) 5330; SSE42-NEXT: pextrb $6, %xmm0, %eax 5331; SSE42-NEXT: andb $1, %al 5332; SSE42-NEXT: movb %al, (%rdi) 5333; SSE42-NEXT: pextrb $5, %xmm0, %eax 5334; SSE42-NEXT: andb $1, %al 5335; SSE42-NEXT: movb %al, (%rdi) 5336; SSE42-NEXT: pextrb $4, %xmm0, %eax 5337; SSE42-NEXT: andb $1, %al 5338; SSE42-NEXT: movb %al, (%rdi) 5339; SSE42-NEXT: pextrb $3, %xmm0, %eax 5340; SSE42-NEXT: andb $1, %al 5341; SSE42-NEXT: movb %al, (%rdi) 5342; SSE42-NEXT: pextrb $2, %xmm0, %eax 5343; SSE42-NEXT: andb $1, %al 5344; SSE42-NEXT: movb %al, (%rdi) 5345; SSE42-NEXT: pextrb $1, %xmm0, %eax 5346; SSE42-NEXT: andb $1, %al 5347; SSE42-NEXT: movb %al, (%rdi) 5348; SSE42-NEXT: pextrb $0, %xmm0, %eax 5349; SSE42-NEXT: andb $1, %al 5350; SSE42-NEXT: movb %al, (%rdi) 5351; SSE42-NEXT: movq %rdi, %rax 5352; SSE42-NEXT: retq 5353; 5354; AVX1-LABEL: test_cmp_v64i16: 5355; AVX1: # BB#0: 5356; AVX1-NEXT: vextractf128 $1, %ymm4, %xmm8 5357; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm9 5358; AVX1-NEXT: vpcmpgtw %xmm8, %xmm9, %xmm8 5359; AVX1-NEXT: vpcmpgtw %xmm4, %xmm0, %xmm0 5360; AVX1-NEXT: vpacksswb %xmm8, %xmm0, %xmm8 5361; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm4 5362; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm0 5363; AVX1-NEXT: vpcmpgtw %xmm4, %xmm0, %xmm0 5364; AVX1-NEXT: vpcmpgtw %xmm5, %xmm1, %xmm1 5365; AVX1-NEXT: vpacksswb %xmm0, %xmm1, %xmm1 5366; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm0 5367; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm4 5368; AVX1-NEXT: vpcmpgtw %xmm0, %xmm4, %xmm0 5369; AVX1-NEXT: vpcmpgtw %xmm6, %xmm2, %xmm2 5370; AVX1-NEXT: vpacksswb %xmm0, %xmm2, %xmm2 5371; AVX1-NEXT: vextractf128 $1, %ymm7, %xmm0 5372; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4 5373; AVX1-NEXT: vpcmpgtw %xmm0, %xmm4, %xmm0 5374; AVX1-NEXT: vpcmpgtw %xmm7, %xmm3, %xmm3 5375; AVX1-NEXT: vpacksswb %xmm0, %xmm3, %xmm3 5376; AVX1-NEXT: vpextrb $15, %xmm3, %eax 5377; AVX1-NEXT: andb $1, %al 5378; AVX1-NEXT: movb %al, 4(%rdi) 5379; AVX1-NEXT: vpextrb $14, %xmm3, %eax 5380; AVX1-NEXT: andb $1, %al 5381; AVX1-NEXT: movb %al, 4(%rdi) 5382; AVX1-NEXT: vpextrb $13, %xmm3, %eax 5383; AVX1-NEXT: andb $1, %al 5384; AVX1-NEXT: movb %al, 4(%rdi) 5385; AVX1-NEXT: vpextrb $12, %xmm3, %eax 5386; AVX1-NEXT: andb $1, %al 5387; AVX1-NEXT: movb %al, 4(%rdi) 5388; AVX1-NEXT: vpextrb $11, %xmm3, %eax 5389; AVX1-NEXT: andb $1, %al 5390; AVX1-NEXT: movb %al, 4(%rdi) 5391; AVX1-NEXT: vpextrb $10, %xmm3, %eax 5392; AVX1-NEXT: andb $1, %al 5393; AVX1-NEXT: movb %al, 4(%rdi) 5394; AVX1-NEXT: vpextrb $9, %xmm3, %eax 5395; AVX1-NEXT: andb $1, %al 5396; AVX1-NEXT: movb %al, 4(%rdi) 5397; AVX1-NEXT: vpextrb $8, %xmm3, %eax 5398; AVX1-NEXT: andb $1, %al 5399; AVX1-NEXT: movb %al, 4(%rdi) 5400; AVX1-NEXT: vpextrb $7, %xmm3, %eax 5401; AVX1-NEXT: andb $1, %al 5402; AVX1-NEXT: movb %al, 4(%rdi) 5403; AVX1-NEXT: vpextrb $6, %xmm3, %eax 5404; AVX1-NEXT: andb $1, %al 5405; AVX1-NEXT: movb %al, 4(%rdi) 5406; AVX1-NEXT: vpextrb $5, %xmm3, %eax 5407; AVX1-NEXT: andb $1, %al 5408; AVX1-NEXT: movb %al, 4(%rdi) 5409; AVX1-NEXT: vpextrb $4, %xmm3, %eax 5410; AVX1-NEXT: andb $1, %al 5411; AVX1-NEXT: movb %al, 4(%rdi) 5412; AVX1-NEXT: vpextrb $3, %xmm3, %eax 5413; AVX1-NEXT: andb $1, %al 5414; AVX1-NEXT: movb %al, 4(%rdi) 5415; AVX1-NEXT: vpextrb $2, %xmm3, %eax 5416; AVX1-NEXT: andb $1, %al 5417; AVX1-NEXT: movb %al, 4(%rdi) 5418; AVX1-NEXT: vpextrb $1, %xmm3, %eax 5419; AVX1-NEXT: andb $1, %al 5420; AVX1-NEXT: movb %al, 4(%rdi) 5421; AVX1-NEXT: vpextrb $0, %xmm3, %eax 5422; AVX1-NEXT: andb $1, %al 5423; AVX1-NEXT: movb %al, 4(%rdi) 5424; AVX1-NEXT: vpextrb $15, %xmm2, %eax 5425; AVX1-NEXT: andb $1, %al 5426; AVX1-NEXT: movb %al, 4(%rdi) 5427; AVX1-NEXT: vpextrb $14, %xmm2, %eax 5428; AVX1-NEXT: andb $1, %al 5429; AVX1-NEXT: movb %al, 4(%rdi) 5430; AVX1-NEXT: vpextrb $13, %xmm2, %eax 5431; AVX1-NEXT: andb $1, %al 5432; AVX1-NEXT: movb %al, 4(%rdi) 5433; AVX1-NEXT: vpextrb $12, %xmm2, %eax 5434; AVX1-NEXT: andb $1, %al 5435; AVX1-NEXT: movb %al, 4(%rdi) 5436; AVX1-NEXT: vpextrb $11, %xmm2, %eax 5437; AVX1-NEXT: andb $1, %al 5438; AVX1-NEXT: movb %al, 4(%rdi) 5439; AVX1-NEXT: vpextrb $10, %xmm2, %eax 5440; AVX1-NEXT: andb $1, %al 5441; AVX1-NEXT: movb %al, 4(%rdi) 5442; AVX1-NEXT: vpextrb $9, %xmm2, %eax 5443; AVX1-NEXT: andb $1, %al 5444; AVX1-NEXT: movb %al, 4(%rdi) 5445; AVX1-NEXT: vpextrb $8, %xmm2, %eax 5446; AVX1-NEXT: andb $1, %al 5447; AVX1-NEXT: movb %al, 4(%rdi) 5448; AVX1-NEXT: vpextrb $7, %xmm2, %eax 5449; AVX1-NEXT: andb $1, %al 5450; AVX1-NEXT: movb %al, 4(%rdi) 5451; AVX1-NEXT: vpextrb $6, %xmm2, %eax 5452; AVX1-NEXT: andb $1, %al 5453; AVX1-NEXT: movb %al, 4(%rdi) 5454; AVX1-NEXT: vpextrb $5, %xmm2, %eax 5455; AVX1-NEXT: andb $1, %al 5456; AVX1-NEXT: movb %al, 4(%rdi) 5457; AVX1-NEXT: vpextrb $4, %xmm2, %eax 5458; AVX1-NEXT: andb $1, %al 5459; AVX1-NEXT: movb %al, 4(%rdi) 5460; AVX1-NEXT: vpextrb $3, %xmm2, %eax 5461; AVX1-NEXT: andb $1, %al 5462; AVX1-NEXT: movb %al, 4(%rdi) 5463; AVX1-NEXT: vpextrb $2, %xmm2, %eax 5464; AVX1-NEXT: andb $1, %al 5465; AVX1-NEXT: movb %al, 4(%rdi) 5466; AVX1-NEXT: vpextrb $1, %xmm2, %eax 5467; AVX1-NEXT: andb $1, %al 5468; AVX1-NEXT: movb %al, 4(%rdi) 5469; AVX1-NEXT: vpextrb $0, %xmm2, %eax 5470; AVX1-NEXT: andb $1, %al 5471; AVX1-NEXT: movb %al, 4(%rdi) 5472; AVX1-NEXT: vpextrb $15, %xmm1, %eax 5473; AVX1-NEXT: andb $1, %al 5474; AVX1-NEXT: movb %al, (%rdi) 5475; AVX1-NEXT: vpextrb $14, %xmm1, %eax 5476; AVX1-NEXT: andb $1, %al 5477; AVX1-NEXT: movb %al, (%rdi) 5478; AVX1-NEXT: vpextrb $13, %xmm1, %eax 5479; AVX1-NEXT: andb $1, %al 5480; AVX1-NEXT: movb %al, (%rdi) 5481; AVX1-NEXT: vpextrb $12, %xmm1, %eax 5482; AVX1-NEXT: andb $1, %al 5483; AVX1-NEXT: movb %al, (%rdi) 5484; AVX1-NEXT: vpextrb $11, %xmm1, %eax 5485; AVX1-NEXT: andb $1, %al 5486; AVX1-NEXT: movb %al, (%rdi) 5487; AVX1-NEXT: vpextrb $10, %xmm1, %eax 5488; AVX1-NEXT: andb $1, %al 5489; AVX1-NEXT: movb %al, (%rdi) 5490; AVX1-NEXT: vpextrb $9, %xmm1, %eax 5491; AVX1-NEXT: andb $1, %al 5492; AVX1-NEXT: movb %al, (%rdi) 5493; AVX1-NEXT: vpextrb $8, %xmm1, %eax 5494; AVX1-NEXT: andb $1, %al 5495; AVX1-NEXT: movb %al, (%rdi) 5496; AVX1-NEXT: vpextrb $7, %xmm1, %eax 5497; AVX1-NEXT: andb $1, %al 5498; AVX1-NEXT: movb %al, (%rdi) 5499; AVX1-NEXT: vpextrb $6, %xmm1, %eax 5500; AVX1-NEXT: andb $1, %al 5501; AVX1-NEXT: movb %al, (%rdi) 5502; AVX1-NEXT: vpextrb $5, %xmm1, %eax 5503; AVX1-NEXT: andb $1, %al 5504; AVX1-NEXT: movb %al, (%rdi) 5505; AVX1-NEXT: vpextrb $4, %xmm1, %eax 5506; AVX1-NEXT: andb $1, %al 5507; AVX1-NEXT: movb %al, (%rdi) 5508; AVX1-NEXT: vpextrb $3, %xmm1, %eax 5509; AVX1-NEXT: andb $1, %al 5510; AVX1-NEXT: movb %al, (%rdi) 5511; AVX1-NEXT: vpextrb $2, %xmm1, %eax 5512; AVX1-NEXT: andb $1, %al 5513; AVX1-NEXT: movb %al, (%rdi) 5514; AVX1-NEXT: vpextrb $1, %xmm1, %eax 5515; AVX1-NEXT: andb $1, %al 5516; AVX1-NEXT: movb %al, (%rdi) 5517; AVX1-NEXT: vpextrb $0, %xmm1, %eax 5518; AVX1-NEXT: andb $1, %al 5519; AVX1-NEXT: movb %al, (%rdi) 5520; AVX1-NEXT: vpextrb $15, %xmm8, %eax 5521; AVX1-NEXT: andb $1, %al 5522; AVX1-NEXT: movb %al, (%rdi) 5523; AVX1-NEXT: vpextrb $14, %xmm8, %eax 5524; AVX1-NEXT: andb $1, %al 5525; AVX1-NEXT: movb %al, (%rdi) 5526; AVX1-NEXT: vpextrb $13, %xmm8, %eax 5527; AVX1-NEXT: andb $1, %al 5528; AVX1-NEXT: movb %al, (%rdi) 5529; AVX1-NEXT: vpextrb $12, %xmm8, %eax 5530; AVX1-NEXT: andb $1, %al 5531; AVX1-NEXT: movb %al, (%rdi) 5532; AVX1-NEXT: vpextrb $11, %xmm8, %eax 5533; AVX1-NEXT: andb $1, %al 5534; AVX1-NEXT: movb %al, (%rdi) 5535; AVX1-NEXT: vpextrb $10, %xmm8, %eax 5536; AVX1-NEXT: andb $1, %al 5537; AVX1-NEXT: movb %al, (%rdi) 5538; AVX1-NEXT: vpextrb $9, %xmm8, %eax 5539; AVX1-NEXT: andb $1, %al 5540; AVX1-NEXT: movb %al, (%rdi) 5541; AVX1-NEXT: vpextrb $8, %xmm8, %eax 5542; AVX1-NEXT: andb $1, %al 5543; AVX1-NEXT: movb %al, (%rdi) 5544; AVX1-NEXT: vpextrb $7, %xmm8, %eax 5545; AVX1-NEXT: andb $1, %al 5546; AVX1-NEXT: movb %al, (%rdi) 5547; AVX1-NEXT: vpextrb $6, %xmm8, %eax 5548; AVX1-NEXT: andb $1, %al 5549; AVX1-NEXT: movb %al, (%rdi) 5550; AVX1-NEXT: vpextrb $5, %xmm8, %eax 5551; AVX1-NEXT: andb $1, %al 5552; AVX1-NEXT: movb %al, (%rdi) 5553; AVX1-NEXT: vpextrb $4, %xmm8, %eax 5554; AVX1-NEXT: andb $1, %al 5555; AVX1-NEXT: movb %al, (%rdi) 5556; AVX1-NEXT: vpextrb $3, %xmm8, %eax 5557; AVX1-NEXT: andb $1, %al 5558; AVX1-NEXT: movb %al, (%rdi) 5559; AVX1-NEXT: vpextrb $2, %xmm8, %eax 5560; AVX1-NEXT: andb $1, %al 5561; AVX1-NEXT: movb %al, (%rdi) 5562; AVX1-NEXT: vpextrb $1, %xmm8, %eax 5563; AVX1-NEXT: andb $1, %al 5564; AVX1-NEXT: movb %al, (%rdi) 5565; AVX1-NEXT: vpextrb $0, %xmm8, %eax 5566; AVX1-NEXT: andb $1, %al 5567; AVX1-NEXT: movb %al, (%rdi) 5568; AVX1-NEXT: movq %rdi, %rax 5569; AVX1-NEXT: vzeroupper 5570; AVX1-NEXT: retq 5571; 5572; AVX2-LABEL: test_cmp_v64i16: 5573; AVX2: # BB#0: 5574; AVX2-NEXT: vpcmpgtw %ymm4, %ymm0, %ymm0 5575; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm4 5576; AVX2-NEXT: vpacksswb %xmm4, %xmm0, %xmm0 5577; AVX2-NEXT: vpcmpgtw %ymm5, %ymm1, %ymm1 5578; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm4 5579; AVX2-NEXT: vpacksswb %xmm4, %xmm1, %xmm1 5580; AVX2-NEXT: vpcmpgtw %ymm6, %ymm2, %ymm2 5581; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm4 5582; AVX2-NEXT: vpacksswb %xmm4, %xmm2, %xmm2 5583; AVX2-NEXT: vpcmpgtw %ymm7, %ymm3, %ymm3 5584; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4 5585; AVX2-NEXT: vpacksswb %xmm4, %xmm3, %xmm3 5586; AVX2-NEXT: vpextrb $15, %xmm3, %eax 5587; AVX2-NEXT: andb $1, %al 5588; AVX2-NEXT: movb %al, 4(%rdi) 5589; AVX2-NEXT: vpextrb $14, %xmm3, %eax 5590; AVX2-NEXT: andb $1, %al 5591; AVX2-NEXT: movb %al, 4(%rdi) 5592; AVX2-NEXT: vpextrb $13, %xmm3, %eax 5593; AVX2-NEXT: andb $1, %al 5594; AVX2-NEXT: movb %al, 4(%rdi) 5595; AVX2-NEXT: vpextrb $12, %xmm3, %eax 5596; AVX2-NEXT: andb $1, %al 5597; AVX2-NEXT: movb %al, 4(%rdi) 5598; AVX2-NEXT: vpextrb $11, %xmm3, %eax 5599; AVX2-NEXT: andb $1, %al 5600; AVX2-NEXT: movb %al, 4(%rdi) 5601; AVX2-NEXT: vpextrb $10, %xmm3, %eax 5602; AVX2-NEXT: andb $1, %al 5603; AVX2-NEXT: movb %al, 4(%rdi) 5604; AVX2-NEXT: vpextrb $9, %xmm3, %eax 5605; AVX2-NEXT: andb $1, %al 5606; AVX2-NEXT: movb %al, 4(%rdi) 5607; AVX2-NEXT: vpextrb $8, %xmm3, %eax 5608; AVX2-NEXT: andb $1, %al 5609; AVX2-NEXT: movb %al, 4(%rdi) 5610; AVX2-NEXT: vpextrb $7, %xmm3, %eax 5611; AVX2-NEXT: andb $1, %al 5612; AVX2-NEXT: movb %al, 4(%rdi) 5613; AVX2-NEXT: vpextrb $6, %xmm3, %eax 5614; AVX2-NEXT: andb $1, %al 5615; AVX2-NEXT: movb %al, 4(%rdi) 5616; AVX2-NEXT: vpextrb $5, %xmm3, %eax 5617; AVX2-NEXT: andb $1, %al 5618; AVX2-NEXT: movb %al, 4(%rdi) 5619; AVX2-NEXT: vpextrb $4, %xmm3, %eax 5620; AVX2-NEXT: andb $1, %al 5621; AVX2-NEXT: movb %al, 4(%rdi) 5622; AVX2-NEXT: vpextrb $3, %xmm3, %eax 5623; AVX2-NEXT: andb $1, %al 5624; AVX2-NEXT: movb %al, 4(%rdi) 5625; AVX2-NEXT: vpextrb $2, %xmm3, %eax 5626; AVX2-NEXT: andb $1, %al 5627; AVX2-NEXT: movb %al, 4(%rdi) 5628; AVX2-NEXT: vpextrb $1, %xmm3, %eax 5629; AVX2-NEXT: andb $1, %al 5630; AVX2-NEXT: movb %al, 4(%rdi) 5631; AVX2-NEXT: vpextrb $0, %xmm3, %eax 5632; AVX2-NEXT: andb $1, %al 5633; AVX2-NEXT: movb %al, 4(%rdi) 5634; AVX2-NEXT: vpextrb $15, %xmm2, %eax 5635; AVX2-NEXT: andb $1, %al 5636; AVX2-NEXT: movb %al, 4(%rdi) 5637; AVX2-NEXT: vpextrb $14, %xmm2, %eax 5638; AVX2-NEXT: andb $1, %al 5639; AVX2-NEXT: movb %al, 4(%rdi) 5640; AVX2-NEXT: vpextrb $13, %xmm2, %eax 5641; AVX2-NEXT: andb $1, %al 5642; AVX2-NEXT: movb %al, 4(%rdi) 5643; AVX2-NEXT: vpextrb $12, %xmm2, %eax 5644; AVX2-NEXT: andb $1, %al 5645; AVX2-NEXT: movb %al, 4(%rdi) 5646; AVX2-NEXT: vpextrb $11, %xmm2, %eax 5647; AVX2-NEXT: andb $1, %al 5648; AVX2-NEXT: movb %al, 4(%rdi) 5649; AVX2-NEXT: vpextrb $10, %xmm2, %eax 5650; AVX2-NEXT: andb $1, %al 5651; AVX2-NEXT: movb %al, 4(%rdi) 5652; AVX2-NEXT: vpextrb $9, %xmm2, %eax 5653; AVX2-NEXT: andb $1, %al 5654; AVX2-NEXT: movb %al, 4(%rdi) 5655; AVX2-NEXT: vpextrb $8, %xmm2, %eax 5656; AVX2-NEXT: andb $1, %al 5657; AVX2-NEXT: movb %al, 4(%rdi) 5658; AVX2-NEXT: vpextrb $7, %xmm2, %eax 5659; AVX2-NEXT: andb $1, %al 5660; AVX2-NEXT: movb %al, 4(%rdi) 5661; AVX2-NEXT: vpextrb $6, %xmm2, %eax 5662; AVX2-NEXT: andb $1, %al 5663; AVX2-NEXT: movb %al, 4(%rdi) 5664; AVX2-NEXT: vpextrb $5, %xmm2, %eax 5665; AVX2-NEXT: andb $1, %al 5666; AVX2-NEXT: movb %al, 4(%rdi) 5667; AVX2-NEXT: vpextrb $4, %xmm2, %eax 5668; AVX2-NEXT: andb $1, %al 5669; AVX2-NEXT: movb %al, 4(%rdi) 5670; AVX2-NEXT: vpextrb $3, %xmm2, %eax 5671; AVX2-NEXT: andb $1, %al 5672; AVX2-NEXT: movb %al, 4(%rdi) 5673; AVX2-NEXT: vpextrb $2, %xmm2, %eax 5674; AVX2-NEXT: andb $1, %al 5675; AVX2-NEXT: movb %al, 4(%rdi) 5676; AVX2-NEXT: vpextrb $1, %xmm2, %eax 5677; AVX2-NEXT: andb $1, %al 5678; AVX2-NEXT: movb %al, 4(%rdi) 5679; AVX2-NEXT: vpextrb $0, %xmm2, %eax 5680; AVX2-NEXT: andb $1, %al 5681; AVX2-NEXT: movb %al, 4(%rdi) 5682; AVX2-NEXT: vpextrb $15, %xmm1, %eax 5683; AVX2-NEXT: andb $1, %al 5684; AVX2-NEXT: movb %al, (%rdi) 5685; AVX2-NEXT: vpextrb $14, %xmm1, %eax 5686; AVX2-NEXT: andb $1, %al 5687; AVX2-NEXT: movb %al, (%rdi) 5688; AVX2-NEXT: vpextrb $13, %xmm1, %eax 5689; AVX2-NEXT: andb $1, %al 5690; AVX2-NEXT: movb %al, (%rdi) 5691; AVX2-NEXT: vpextrb $12, %xmm1, %eax 5692; AVX2-NEXT: andb $1, %al 5693; AVX2-NEXT: movb %al, (%rdi) 5694; AVX2-NEXT: vpextrb $11, %xmm1, %eax 5695; AVX2-NEXT: andb $1, %al 5696; AVX2-NEXT: movb %al, (%rdi) 5697; AVX2-NEXT: vpextrb $10, %xmm1, %eax 5698; AVX2-NEXT: andb $1, %al 5699; AVX2-NEXT: movb %al, (%rdi) 5700; AVX2-NEXT: vpextrb $9, %xmm1, %eax 5701; AVX2-NEXT: andb $1, %al 5702; AVX2-NEXT: movb %al, (%rdi) 5703; AVX2-NEXT: vpextrb $8, %xmm1, %eax 5704; AVX2-NEXT: andb $1, %al 5705; AVX2-NEXT: movb %al, (%rdi) 5706; AVX2-NEXT: vpextrb $7, %xmm1, %eax 5707; AVX2-NEXT: andb $1, %al 5708; AVX2-NEXT: movb %al, (%rdi) 5709; AVX2-NEXT: vpextrb $6, %xmm1, %eax 5710; AVX2-NEXT: andb $1, %al 5711; AVX2-NEXT: movb %al, (%rdi) 5712; AVX2-NEXT: vpextrb $5, %xmm1, %eax 5713; AVX2-NEXT: andb $1, %al 5714; AVX2-NEXT: movb %al, (%rdi) 5715; AVX2-NEXT: vpextrb $4, %xmm1, %eax 5716; AVX2-NEXT: andb $1, %al 5717; AVX2-NEXT: movb %al, (%rdi) 5718; AVX2-NEXT: vpextrb $3, %xmm1, %eax 5719; AVX2-NEXT: andb $1, %al 5720; AVX2-NEXT: movb %al, (%rdi) 5721; AVX2-NEXT: vpextrb $2, %xmm1, %eax 5722; AVX2-NEXT: andb $1, %al 5723; AVX2-NEXT: movb %al, (%rdi) 5724; AVX2-NEXT: vpextrb $1, %xmm1, %eax 5725; AVX2-NEXT: andb $1, %al 5726; AVX2-NEXT: movb %al, (%rdi) 5727; AVX2-NEXT: vpextrb $0, %xmm1, %eax 5728; AVX2-NEXT: andb $1, %al 5729; AVX2-NEXT: movb %al, (%rdi) 5730; AVX2-NEXT: vpextrb $15, %xmm0, %eax 5731; AVX2-NEXT: andb $1, %al 5732; AVX2-NEXT: movb %al, (%rdi) 5733; AVX2-NEXT: vpextrb $14, %xmm0, %eax 5734; AVX2-NEXT: andb $1, %al 5735; AVX2-NEXT: movb %al, (%rdi) 5736; AVX2-NEXT: vpextrb $13, %xmm0, %eax 5737; AVX2-NEXT: andb $1, %al 5738; AVX2-NEXT: movb %al, (%rdi) 5739; AVX2-NEXT: vpextrb $12, %xmm0, %eax 5740; AVX2-NEXT: andb $1, %al 5741; AVX2-NEXT: movb %al, (%rdi) 5742; AVX2-NEXT: vpextrb $11, %xmm0, %eax 5743; AVX2-NEXT: andb $1, %al 5744; AVX2-NEXT: movb %al, (%rdi) 5745; AVX2-NEXT: vpextrb $10, %xmm0, %eax 5746; AVX2-NEXT: andb $1, %al 5747; AVX2-NEXT: movb %al, (%rdi) 5748; AVX2-NEXT: vpextrb $9, %xmm0, %eax 5749; AVX2-NEXT: andb $1, %al 5750; AVX2-NEXT: movb %al, (%rdi) 5751; AVX2-NEXT: vpextrb $8, %xmm0, %eax 5752; AVX2-NEXT: andb $1, %al 5753; AVX2-NEXT: movb %al, (%rdi) 5754; AVX2-NEXT: vpextrb $7, %xmm0, %eax 5755; AVX2-NEXT: andb $1, %al 5756; AVX2-NEXT: movb %al, (%rdi) 5757; AVX2-NEXT: vpextrb $6, %xmm0, %eax 5758; AVX2-NEXT: andb $1, %al 5759; AVX2-NEXT: movb %al, (%rdi) 5760; AVX2-NEXT: vpextrb $5, %xmm0, %eax 5761; AVX2-NEXT: andb $1, %al 5762; AVX2-NEXT: movb %al, (%rdi) 5763; AVX2-NEXT: vpextrb $4, %xmm0, %eax 5764; AVX2-NEXT: andb $1, %al 5765; AVX2-NEXT: movb %al, (%rdi) 5766; AVX2-NEXT: vpextrb $3, %xmm0, %eax 5767; AVX2-NEXT: andb $1, %al 5768; AVX2-NEXT: movb %al, (%rdi) 5769; AVX2-NEXT: vpextrb $2, %xmm0, %eax 5770; AVX2-NEXT: andb $1, %al 5771; AVX2-NEXT: movb %al, (%rdi) 5772; AVX2-NEXT: vpextrb $1, %xmm0, %eax 5773; AVX2-NEXT: andb $1, %al 5774; AVX2-NEXT: movb %al, (%rdi) 5775; AVX2-NEXT: vpextrb $0, %xmm0, %eax 5776; AVX2-NEXT: andb $1, %al 5777; AVX2-NEXT: movb %al, (%rdi) 5778; AVX2-NEXT: movq %rdi, %rax 5779; AVX2-NEXT: vzeroupper 5780; AVX2-NEXT: retq 5781; 5782; AVX512F-LABEL: test_cmp_v64i16: 5783; AVX512F: # BB#0: 5784; AVX512F-NEXT: vpcmpgtw %ymm7, %ymm3, %ymm3 5785; AVX512F-NEXT: vpmovsxwd %ymm3, %zmm3 5786; AVX512F-NEXT: vpslld $31, %zmm3, %zmm3 5787; AVX512F-NEXT: vptestmd %zmm3, %zmm3, %k0 5788; AVX512F-NEXT: kshiftlw $14, %k0, %k1 5789; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5790; AVX512F-NEXT: kmovw %k1, %eax 5791; AVX512F-NEXT: kshiftlw $15, %k0, %k1 5792; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5793; AVX512F-NEXT: kmovw %k1, %ecx 5794; AVX512F-NEXT: vmovd %ecx, %xmm3 5795; AVX512F-NEXT: vpinsrb $1, %eax, %xmm3, %xmm3 5796; AVX512F-NEXT: kshiftlw $13, %k0, %k1 5797; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5798; AVX512F-NEXT: kmovw %k1, %eax 5799; AVX512F-NEXT: vpinsrb $2, %eax, %xmm3, %xmm3 5800; AVX512F-NEXT: kshiftlw $12, %k0, %k1 5801; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5802; AVX512F-NEXT: kmovw %k1, %eax 5803; AVX512F-NEXT: vpinsrb $3, %eax, %xmm3, %xmm3 5804; AVX512F-NEXT: kshiftlw $11, %k0, %k1 5805; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5806; AVX512F-NEXT: kmovw %k1, %eax 5807; AVX512F-NEXT: vpinsrb $4, %eax, %xmm3, %xmm3 5808; AVX512F-NEXT: kshiftlw $10, %k0, %k1 5809; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5810; AVX512F-NEXT: kmovw %k1, %eax 5811; AVX512F-NEXT: vpinsrb $5, %eax, %xmm3, %xmm3 5812; AVX512F-NEXT: kshiftlw $9, %k0, %k1 5813; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5814; AVX512F-NEXT: kmovw %k1, %eax 5815; AVX512F-NEXT: vpinsrb $6, %eax, %xmm3, %xmm3 5816; AVX512F-NEXT: kshiftlw $8, %k0, %k1 5817; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5818; AVX512F-NEXT: kmovw %k1, %eax 5819; AVX512F-NEXT: vpinsrb $7, %eax, %xmm3, %xmm3 5820; AVX512F-NEXT: kshiftlw $7, %k0, %k1 5821; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5822; AVX512F-NEXT: kmovw %k1, %eax 5823; AVX512F-NEXT: vpinsrb $8, %eax, %xmm3, %xmm3 5824; AVX512F-NEXT: kshiftlw $6, %k0, %k1 5825; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5826; AVX512F-NEXT: kmovw %k1, %eax 5827; AVX512F-NEXT: vpinsrb $9, %eax, %xmm3, %xmm3 5828; AVX512F-NEXT: kshiftlw $5, %k0, %k1 5829; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5830; AVX512F-NEXT: kmovw %k1, %eax 5831; AVX512F-NEXT: vpinsrb $10, %eax, %xmm3, %xmm3 5832; AVX512F-NEXT: kshiftlw $4, %k0, %k1 5833; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5834; AVX512F-NEXT: kmovw %k1, %eax 5835; AVX512F-NEXT: vpinsrb $11, %eax, %xmm3, %xmm3 5836; AVX512F-NEXT: kshiftlw $3, %k0, %k1 5837; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5838; AVX512F-NEXT: kmovw %k1, %eax 5839; AVX512F-NEXT: vpinsrb $12, %eax, %xmm3, %xmm3 5840; AVX512F-NEXT: kshiftlw $2, %k0, %k1 5841; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5842; AVX512F-NEXT: kmovw %k1, %eax 5843; AVX512F-NEXT: vpinsrb $13, %eax, %xmm3, %xmm3 5844; AVX512F-NEXT: kshiftlw $1, %k0, %k1 5845; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5846; AVX512F-NEXT: kmovw %k1, %eax 5847; AVX512F-NEXT: vpinsrb $14, %eax, %xmm3, %xmm3 5848; AVX512F-NEXT: kshiftrw $15, %k0, %k0 5849; AVX512F-NEXT: kmovw %k0, %eax 5850; AVX512F-NEXT: vpinsrb $15, %eax, %xmm3, %xmm3 5851; AVX512F-NEXT: vpcmpgtw %ymm6, %ymm2, %ymm2 5852; AVX512F-NEXT: vpmovsxwd %ymm2, %zmm2 5853; AVX512F-NEXT: vpslld $31, %zmm2, %zmm2 5854; AVX512F-NEXT: vptestmd %zmm2, %zmm2, %k0 5855; AVX512F-NEXT: kshiftlw $14, %k0, %k1 5856; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5857; AVX512F-NEXT: kmovw %k1, %eax 5858; AVX512F-NEXT: kshiftlw $15, %k0, %k1 5859; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5860; AVX512F-NEXT: kmovw %k1, %ecx 5861; AVX512F-NEXT: vmovd %ecx, %xmm2 5862; AVX512F-NEXT: vpinsrb $1, %eax, %xmm2, %xmm2 5863; AVX512F-NEXT: kshiftlw $13, %k0, %k1 5864; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5865; AVX512F-NEXT: kmovw %k1, %eax 5866; AVX512F-NEXT: vpinsrb $2, %eax, %xmm2, %xmm2 5867; AVX512F-NEXT: kshiftlw $12, %k0, %k1 5868; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5869; AVX512F-NEXT: kmovw %k1, %eax 5870; AVX512F-NEXT: vpinsrb $3, %eax, %xmm2, %xmm2 5871; AVX512F-NEXT: kshiftlw $11, %k0, %k1 5872; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5873; AVX512F-NEXT: kmovw %k1, %eax 5874; AVX512F-NEXT: vpinsrb $4, %eax, %xmm2, %xmm2 5875; AVX512F-NEXT: kshiftlw $10, %k0, %k1 5876; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5877; AVX512F-NEXT: kmovw %k1, %eax 5878; AVX512F-NEXT: vpinsrb $5, %eax, %xmm2, %xmm2 5879; AVX512F-NEXT: kshiftlw $9, %k0, %k1 5880; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5881; AVX512F-NEXT: kmovw %k1, %eax 5882; AVX512F-NEXT: vpinsrb $6, %eax, %xmm2, %xmm2 5883; AVX512F-NEXT: kshiftlw $8, %k0, %k1 5884; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5885; AVX512F-NEXT: kmovw %k1, %eax 5886; AVX512F-NEXT: vpinsrb $7, %eax, %xmm2, %xmm2 5887; AVX512F-NEXT: kshiftlw $7, %k0, %k1 5888; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5889; AVX512F-NEXT: kmovw %k1, %eax 5890; AVX512F-NEXT: vpinsrb $8, %eax, %xmm2, %xmm2 5891; AVX512F-NEXT: kshiftlw $6, %k0, %k1 5892; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5893; AVX512F-NEXT: kmovw %k1, %eax 5894; AVX512F-NEXT: vpinsrb $9, %eax, %xmm2, %xmm2 5895; AVX512F-NEXT: kshiftlw $5, %k0, %k1 5896; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5897; AVX512F-NEXT: kmovw %k1, %eax 5898; AVX512F-NEXT: vpinsrb $10, %eax, %xmm2, %xmm2 5899; AVX512F-NEXT: kshiftlw $4, %k0, %k1 5900; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5901; AVX512F-NEXT: kmovw %k1, %eax 5902; AVX512F-NEXT: vpinsrb $11, %eax, %xmm2, %xmm2 5903; AVX512F-NEXT: kshiftlw $3, %k0, %k1 5904; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5905; AVX512F-NEXT: kmovw %k1, %eax 5906; AVX512F-NEXT: vpinsrb $12, %eax, %xmm2, %xmm2 5907; AVX512F-NEXT: kshiftlw $2, %k0, %k1 5908; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5909; AVX512F-NEXT: kmovw %k1, %eax 5910; AVX512F-NEXT: vpinsrb $13, %eax, %xmm2, %xmm2 5911; AVX512F-NEXT: kshiftlw $1, %k0, %k1 5912; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5913; AVX512F-NEXT: kmovw %k1, %eax 5914; AVX512F-NEXT: vpinsrb $14, %eax, %xmm2, %xmm2 5915; AVX512F-NEXT: kshiftrw $15, %k0, %k0 5916; AVX512F-NEXT: kmovw %k0, %eax 5917; AVX512F-NEXT: vpinsrb $15, %eax, %xmm2, %xmm2 5918; AVX512F-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2 5919; AVX512F-NEXT: vpsllw $7, %ymm2, %ymm2 5920; AVX512F-NEXT: vmovdqa {{.*#+}} ymm3 = [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] 5921; AVX512F-NEXT: vpand %ymm3, %ymm2, %ymm2 5922; AVX512F-NEXT: vpxor %ymm6, %ymm6, %ymm6 5923; AVX512F-NEXT: vpcmpgtb %ymm2, %ymm6, %ymm2 5924; AVX512F-NEXT: vpcmpgtw %ymm5, %ymm1, %ymm1 5925; AVX512F-NEXT: vpmovsxwd %ymm1, %zmm1 5926; AVX512F-NEXT: vpslld $31, %zmm1, %zmm1 5927; AVX512F-NEXT: vptestmd %zmm1, %zmm1, %k0 5928; AVX512F-NEXT: kshiftlw $14, %k0, %k1 5929; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5930; AVX512F-NEXT: kmovw %k1, %eax 5931; AVX512F-NEXT: kshiftlw $15, %k0, %k1 5932; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5933; AVX512F-NEXT: kmovw %k1, %ecx 5934; AVX512F-NEXT: vmovd %ecx, %xmm1 5935; AVX512F-NEXT: vpinsrb $1, %eax, %xmm1, %xmm1 5936; AVX512F-NEXT: kshiftlw $13, %k0, %k1 5937; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5938; AVX512F-NEXT: kmovw %k1, %eax 5939; AVX512F-NEXT: vpinsrb $2, %eax, %xmm1, %xmm1 5940; AVX512F-NEXT: kshiftlw $12, %k0, %k1 5941; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5942; AVX512F-NEXT: kmovw %k1, %eax 5943; AVX512F-NEXT: vpinsrb $3, %eax, %xmm1, %xmm1 5944; AVX512F-NEXT: kshiftlw $11, %k0, %k1 5945; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5946; AVX512F-NEXT: kmovw %k1, %eax 5947; AVX512F-NEXT: vpinsrb $4, %eax, %xmm1, %xmm1 5948; AVX512F-NEXT: kshiftlw $10, %k0, %k1 5949; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5950; AVX512F-NEXT: kmovw %k1, %eax 5951; AVX512F-NEXT: vpinsrb $5, %eax, %xmm1, %xmm1 5952; AVX512F-NEXT: kshiftlw $9, %k0, %k1 5953; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5954; AVX512F-NEXT: kmovw %k1, %eax 5955; AVX512F-NEXT: vpinsrb $6, %eax, %xmm1, %xmm1 5956; AVX512F-NEXT: kshiftlw $8, %k0, %k1 5957; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5958; AVX512F-NEXT: kmovw %k1, %eax 5959; AVX512F-NEXT: vpinsrb $7, %eax, %xmm1, %xmm1 5960; AVX512F-NEXT: kshiftlw $7, %k0, %k1 5961; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5962; AVX512F-NEXT: kmovw %k1, %eax 5963; AVX512F-NEXT: vpinsrb $8, %eax, %xmm1, %xmm1 5964; AVX512F-NEXT: kshiftlw $6, %k0, %k1 5965; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5966; AVX512F-NEXT: kmovw %k1, %eax 5967; AVX512F-NEXT: vpinsrb $9, %eax, %xmm1, %xmm1 5968; AVX512F-NEXT: kshiftlw $5, %k0, %k1 5969; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5970; AVX512F-NEXT: kmovw %k1, %eax 5971; AVX512F-NEXT: vpinsrb $10, %eax, %xmm1, %xmm1 5972; AVX512F-NEXT: kshiftlw $4, %k0, %k1 5973; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5974; AVX512F-NEXT: kmovw %k1, %eax 5975; AVX512F-NEXT: vpinsrb $11, %eax, %xmm1, %xmm1 5976; AVX512F-NEXT: kshiftlw $3, %k0, %k1 5977; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5978; AVX512F-NEXT: kmovw %k1, %eax 5979; AVX512F-NEXT: vpinsrb $12, %eax, %xmm1, %xmm1 5980; AVX512F-NEXT: kshiftlw $2, %k0, %k1 5981; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5982; AVX512F-NEXT: kmovw %k1, %eax 5983; AVX512F-NEXT: vpinsrb $13, %eax, %xmm1, %xmm1 5984; AVX512F-NEXT: kshiftlw $1, %k0, %k1 5985; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5986; AVX512F-NEXT: kmovw %k1, %eax 5987; AVX512F-NEXT: vpinsrb $14, %eax, %xmm1, %xmm1 5988; AVX512F-NEXT: kshiftrw $15, %k0, %k0 5989; AVX512F-NEXT: kmovw %k0, %eax 5990; AVX512F-NEXT: vpinsrb $15, %eax, %xmm1, %xmm1 5991; AVX512F-NEXT: vpcmpgtw %ymm4, %ymm0, %ymm0 5992; AVX512F-NEXT: vpmovsxwd %ymm0, %zmm0 5993; AVX512F-NEXT: vpslld $31, %zmm0, %zmm0 5994; AVX512F-NEXT: vptestmd %zmm0, %zmm0, %k0 5995; AVX512F-NEXT: kshiftlw $14, %k0, %k1 5996; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5997; AVX512F-NEXT: kmovw %k1, %eax 5998; AVX512F-NEXT: kshiftlw $15, %k0, %k1 5999; AVX512F-NEXT: kshiftrw $15, %k1, %k1 6000; AVX512F-NEXT: kmovw %k1, %ecx 6001; AVX512F-NEXT: vmovd %ecx, %xmm0 6002; AVX512F-NEXT: vpinsrb $1, %eax, %xmm0, %xmm0 6003; AVX512F-NEXT: kshiftlw $13, %k0, %k1 6004; AVX512F-NEXT: kshiftrw $15, %k1, %k1 6005; AVX512F-NEXT: kmovw %k1, %eax 6006; AVX512F-NEXT: vpinsrb $2, %eax, %xmm0, %xmm0 6007; AVX512F-NEXT: kshiftlw $12, %k0, %k1 6008; AVX512F-NEXT: kshiftrw $15, %k1, %k1 6009; AVX512F-NEXT: kmovw %k1, %eax 6010; AVX512F-NEXT: vpinsrb $3, %eax, %xmm0, %xmm0 6011; AVX512F-NEXT: kshiftlw $11, %k0, %k1 6012; AVX512F-NEXT: kshiftrw $15, %k1, %k1 6013; AVX512F-NEXT: kmovw %k1, %eax 6014; AVX512F-NEXT: vpinsrb $4, %eax, %xmm0, %xmm0 6015; AVX512F-NEXT: kshiftlw $10, %k0, %k1 6016; AVX512F-NEXT: kshiftrw $15, %k1, %k1 6017; AVX512F-NEXT: kmovw %k1, %eax 6018; AVX512F-NEXT: vpinsrb $5, %eax, %xmm0, %xmm0 6019; AVX512F-NEXT: kshiftlw $9, %k0, %k1 6020; AVX512F-NEXT: kshiftrw $15, %k1, %k1 6021; AVX512F-NEXT: kmovw %k1, %eax 6022; AVX512F-NEXT: vpinsrb $6, %eax, %xmm0, %xmm0 6023; AVX512F-NEXT: kshiftlw $8, %k0, %k1 6024; AVX512F-NEXT: kshiftrw $15, %k1, %k1 6025; AVX512F-NEXT: kmovw %k1, %eax 6026; AVX512F-NEXT: vpinsrb $7, %eax, %xmm0, %xmm0 6027; AVX512F-NEXT: kshiftlw $7, %k0, %k1 6028; AVX512F-NEXT: kshiftrw $15, %k1, %k1 6029; AVX512F-NEXT: kmovw %k1, %eax 6030; AVX512F-NEXT: vpinsrb $8, %eax, %xmm0, %xmm0 6031; AVX512F-NEXT: kshiftlw $6, %k0, %k1 6032; AVX512F-NEXT: kshiftrw $15, %k1, %k1 6033; AVX512F-NEXT: kmovw %k1, %eax 6034; AVX512F-NEXT: vpinsrb $9, %eax, %xmm0, %xmm0 6035; AVX512F-NEXT: kshiftlw $5, %k0, %k1 6036; AVX512F-NEXT: kshiftrw $15, %k1, %k1 6037; AVX512F-NEXT: kmovw %k1, %eax 6038; AVX512F-NEXT: vpinsrb $10, %eax, %xmm0, %xmm0 6039; AVX512F-NEXT: kshiftlw $4, %k0, %k1 6040; AVX512F-NEXT: kshiftrw $15, %k1, %k1 6041; AVX512F-NEXT: kmovw %k1, %eax 6042; AVX512F-NEXT: vpinsrb $11, %eax, %xmm0, %xmm0 6043; AVX512F-NEXT: kshiftlw $3, %k0, %k1 6044; AVX512F-NEXT: kshiftrw $15, %k1, %k1 6045; AVX512F-NEXT: kmovw %k1, %eax 6046; AVX512F-NEXT: vpinsrb $12, %eax, %xmm0, %xmm0 6047; AVX512F-NEXT: kshiftlw $2, %k0, %k1 6048; AVX512F-NEXT: kshiftrw $15, %k1, %k1 6049; AVX512F-NEXT: kmovw %k1, %eax 6050; AVX512F-NEXT: vpinsrb $13, %eax, %xmm0, %xmm0 6051; AVX512F-NEXT: kshiftlw $1, %k0, %k1 6052; AVX512F-NEXT: kshiftrw $15, %k1, %k1 6053; AVX512F-NEXT: kmovw %k1, %eax 6054; AVX512F-NEXT: vpinsrb $14, %eax, %xmm0, %xmm0 6055; AVX512F-NEXT: kshiftrw $15, %k0, %k0 6056; AVX512F-NEXT: kmovw %k0, %eax 6057; AVX512F-NEXT: vpinsrb $15, %eax, %xmm0, %xmm0 6058; AVX512F-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 6059; AVX512F-NEXT: vpsllw $7, %ymm0, %ymm0 6060; AVX512F-NEXT: vpand %ymm3, %ymm0, %ymm0 6061; AVX512F-NEXT: vpcmpgtb %ymm0, %ymm6, %ymm0 6062; AVX512F-NEXT: vextracti128 $1, %ymm0, %xmm1 6063; AVX512F-NEXT: vextracti128 $1, %ymm2, %xmm3 6064; AVX512F-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill> 6065; AVX512F-NEXT: # kill: %XMM2<def> %XMM2<kill> %YMM2<kill> 6066; AVX512F-NEXT: retq 6067; 6068; AVX512DQ-LABEL: test_cmp_v64i16: 6069; AVX512DQ: # BB#0: 6070; AVX512DQ-NEXT: vpcmpgtw %ymm7, %ymm3, %ymm3 6071; AVX512DQ-NEXT: vpmovsxwd %ymm3, %zmm3 6072; AVX512DQ-NEXT: vpslld $31, %zmm3, %zmm3 6073; AVX512DQ-NEXT: vptestmd %zmm3, %zmm3, %k0 6074; AVX512DQ-NEXT: kshiftlw $14, %k0, %k1 6075; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6076; AVX512DQ-NEXT: kmovw %k1, %eax 6077; AVX512DQ-NEXT: kshiftlw $15, %k0, %k1 6078; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6079; AVX512DQ-NEXT: kmovw %k1, %ecx 6080; AVX512DQ-NEXT: vmovd %ecx, %xmm3 6081; AVX512DQ-NEXT: vpinsrb $1, %eax, %xmm3, %xmm3 6082; AVX512DQ-NEXT: kshiftlw $13, %k0, %k1 6083; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6084; AVX512DQ-NEXT: kmovw %k1, %eax 6085; AVX512DQ-NEXT: vpinsrb $2, %eax, %xmm3, %xmm3 6086; AVX512DQ-NEXT: kshiftlw $12, %k0, %k1 6087; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6088; AVX512DQ-NEXT: kmovw %k1, %eax 6089; AVX512DQ-NEXT: vpinsrb $3, %eax, %xmm3, %xmm3 6090; AVX512DQ-NEXT: kshiftlw $11, %k0, %k1 6091; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6092; AVX512DQ-NEXT: kmovw %k1, %eax 6093; AVX512DQ-NEXT: vpinsrb $4, %eax, %xmm3, %xmm3 6094; AVX512DQ-NEXT: kshiftlw $10, %k0, %k1 6095; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6096; AVX512DQ-NEXT: kmovw %k1, %eax 6097; AVX512DQ-NEXT: vpinsrb $5, %eax, %xmm3, %xmm3 6098; AVX512DQ-NEXT: kshiftlw $9, %k0, %k1 6099; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6100; AVX512DQ-NEXT: kmovw %k1, %eax 6101; AVX512DQ-NEXT: vpinsrb $6, %eax, %xmm3, %xmm3 6102; AVX512DQ-NEXT: kshiftlw $8, %k0, %k1 6103; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6104; AVX512DQ-NEXT: kmovw %k1, %eax 6105; AVX512DQ-NEXT: vpinsrb $7, %eax, %xmm3, %xmm3 6106; AVX512DQ-NEXT: kshiftlw $7, %k0, %k1 6107; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6108; AVX512DQ-NEXT: kmovw %k1, %eax 6109; AVX512DQ-NEXT: vpinsrb $8, %eax, %xmm3, %xmm3 6110; AVX512DQ-NEXT: kshiftlw $6, %k0, %k1 6111; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6112; AVX512DQ-NEXT: kmovw %k1, %eax 6113; AVX512DQ-NEXT: vpinsrb $9, %eax, %xmm3, %xmm3 6114; AVX512DQ-NEXT: kshiftlw $5, %k0, %k1 6115; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6116; AVX512DQ-NEXT: kmovw %k1, %eax 6117; AVX512DQ-NEXT: vpinsrb $10, %eax, %xmm3, %xmm3 6118; AVX512DQ-NEXT: kshiftlw $4, %k0, %k1 6119; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6120; AVX512DQ-NEXT: kmovw %k1, %eax 6121; AVX512DQ-NEXT: vpinsrb $11, %eax, %xmm3, %xmm3 6122; AVX512DQ-NEXT: kshiftlw $3, %k0, %k1 6123; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6124; AVX512DQ-NEXT: kmovw %k1, %eax 6125; AVX512DQ-NEXT: vpinsrb $12, %eax, %xmm3, %xmm3 6126; AVX512DQ-NEXT: kshiftlw $2, %k0, %k1 6127; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6128; AVX512DQ-NEXT: kmovw %k1, %eax 6129; AVX512DQ-NEXT: vpinsrb $13, %eax, %xmm3, %xmm3 6130; AVX512DQ-NEXT: kshiftlw $1, %k0, %k1 6131; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6132; AVX512DQ-NEXT: kmovw %k1, %eax 6133; AVX512DQ-NEXT: vpinsrb $14, %eax, %xmm3, %xmm3 6134; AVX512DQ-NEXT: kshiftrw $15, %k0, %k0 6135; AVX512DQ-NEXT: kmovw %k0, %eax 6136; AVX512DQ-NEXT: vpinsrb $15, %eax, %xmm3, %xmm3 6137; AVX512DQ-NEXT: vpcmpgtw %ymm6, %ymm2, %ymm2 6138; AVX512DQ-NEXT: vpmovsxwd %ymm2, %zmm2 6139; AVX512DQ-NEXT: vpslld $31, %zmm2, %zmm2 6140; AVX512DQ-NEXT: vptestmd %zmm2, %zmm2, %k0 6141; AVX512DQ-NEXT: kshiftlw $14, %k0, %k1 6142; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6143; AVX512DQ-NEXT: kmovw %k1, %eax 6144; AVX512DQ-NEXT: kshiftlw $15, %k0, %k1 6145; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6146; AVX512DQ-NEXT: kmovw %k1, %ecx 6147; AVX512DQ-NEXT: vmovd %ecx, %xmm2 6148; AVX512DQ-NEXT: vpinsrb $1, %eax, %xmm2, %xmm2 6149; AVX512DQ-NEXT: kshiftlw $13, %k0, %k1 6150; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6151; AVX512DQ-NEXT: kmovw %k1, %eax 6152; AVX512DQ-NEXT: vpinsrb $2, %eax, %xmm2, %xmm2 6153; AVX512DQ-NEXT: kshiftlw $12, %k0, %k1 6154; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6155; AVX512DQ-NEXT: kmovw %k1, %eax 6156; AVX512DQ-NEXT: vpinsrb $3, %eax, %xmm2, %xmm2 6157; AVX512DQ-NEXT: kshiftlw $11, %k0, %k1 6158; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6159; AVX512DQ-NEXT: kmovw %k1, %eax 6160; AVX512DQ-NEXT: vpinsrb $4, %eax, %xmm2, %xmm2 6161; AVX512DQ-NEXT: kshiftlw $10, %k0, %k1 6162; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6163; AVX512DQ-NEXT: kmovw %k1, %eax 6164; AVX512DQ-NEXT: vpinsrb $5, %eax, %xmm2, %xmm2 6165; AVX512DQ-NEXT: kshiftlw $9, %k0, %k1 6166; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6167; AVX512DQ-NEXT: kmovw %k1, %eax 6168; AVX512DQ-NEXT: vpinsrb $6, %eax, %xmm2, %xmm2 6169; AVX512DQ-NEXT: kshiftlw $8, %k0, %k1 6170; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6171; AVX512DQ-NEXT: kmovw %k1, %eax 6172; AVX512DQ-NEXT: vpinsrb $7, %eax, %xmm2, %xmm2 6173; AVX512DQ-NEXT: kshiftlw $7, %k0, %k1 6174; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6175; AVX512DQ-NEXT: kmovw %k1, %eax 6176; AVX512DQ-NEXT: vpinsrb $8, %eax, %xmm2, %xmm2 6177; AVX512DQ-NEXT: kshiftlw $6, %k0, %k1 6178; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6179; AVX512DQ-NEXT: kmovw %k1, %eax 6180; AVX512DQ-NEXT: vpinsrb $9, %eax, %xmm2, %xmm2 6181; AVX512DQ-NEXT: kshiftlw $5, %k0, %k1 6182; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6183; AVX512DQ-NEXT: kmovw %k1, %eax 6184; AVX512DQ-NEXT: vpinsrb $10, %eax, %xmm2, %xmm2 6185; AVX512DQ-NEXT: kshiftlw $4, %k0, %k1 6186; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6187; AVX512DQ-NEXT: kmovw %k1, %eax 6188; AVX512DQ-NEXT: vpinsrb $11, %eax, %xmm2, %xmm2 6189; AVX512DQ-NEXT: kshiftlw $3, %k0, %k1 6190; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6191; AVX512DQ-NEXT: kmovw %k1, %eax 6192; AVX512DQ-NEXT: vpinsrb $12, %eax, %xmm2, %xmm2 6193; AVX512DQ-NEXT: kshiftlw $2, %k0, %k1 6194; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6195; AVX512DQ-NEXT: kmovw %k1, %eax 6196; AVX512DQ-NEXT: vpinsrb $13, %eax, %xmm2, %xmm2 6197; AVX512DQ-NEXT: kshiftlw $1, %k0, %k1 6198; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6199; AVX512DQ-NEXT: kmovw %k1, %eax 6200; AVX512DQ-NEXT: vpinsrb $14, %eax, %xmm2, %xmm2 6201; AVX512DQ-NEXT: kshiftrw $15, %k0, %k0 6202; AVX512DQ-NEXT: kmovw %k0, %eax 6203; AVX512DQ-NEXT: vpinsrb $15, %eax, %xmm2, %xmm2 6204; AVX512DQ-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2 6205; AVX512DQ-NEXT: vpsllw $7, %ymm2, %ymm2 6206; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm3 = [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] 6207; AVX512DQ-NEXT: vpand %ymm3, %ymm2, %ymm2 6208; AVX512DQ-NEXT: vpxor %ymm6, %ymm6, %ymm6 6209; AVX512DQ-NEXT: vpcmpgtb %ymm2, %ymm6, %ymm2 6210; AVX512DQ-NEXT: vpcmpgtw %ymm5, %ymm1, %ymm1 6211; AVX512DQ-NEXT: vpmovsxwd %ymm1, %zmm1 6212; AVX512DQ-NEXT: vpslld $31, %zmm1, %zmm1 6213; AVX512DQ-NEXT: vptestmd %zmm1, %zmm1, %k0 6214; AVX512DQ-NEXT: kshiftlw $14, %k0, %k1 6215; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6216; AVX512DQ-NEXT: kmovw %k1, %eax 6217; AVX512DQ-NEXT: kshiftlw $15, %k0, %k1 6218; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6219; AVX512DQ-NEXT: kmovw %k1, %ecx 6220; AVX512DQ-NEXT: vmovd %ecx, %xmm1 6221; AVX512DQ-NEXT: vpinsrb $1, %eax, %xmm1, %xmm1 6222; AVX512DQ-NEXT: kshiftlw $13, %k0, %k1 6223; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6224; AVX512DQ-NEXT: kmovw %k1, %eax 6225; AVX512DQ-NEXT: vpinsrb $2, %eax, %xmm1, %xmm1 6226; AVX512DQ-NEXT: kshiftlw $12, %k0, %k1 6227; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6228; AVX512DQ-NEXT: kmovw %k1, %eax 6229; AVX512DQ-NEXT: vpinsrb $3, %eax, %xmm1, %xmm1 6230; AVX512DQ-NEXT: kshiftlw $11, %k0, %k1 6231; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6232; AVX512DQ-NEXT: kmovw %k1, %eax 6233; AVX512DQ-NEXT: vpinsrb $4, %eax, %xmm1, %xmm1 6234; AVX512DQ-NEXT: kshiftlw $10, %k0, %k1 6235; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6236; AVX512DQ-NEXT: kmovw %k1, %eax 6237; AVX512DQ-NEXT: vpinsrb $5, %eax, %xmm1, %xmm1 6238; AVX512DQ-NEXT: kshiftlw $9, %k0, %k1 6239; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6240; AVX512DQ-NEXT: kmovw %k1, %eax 6241; AVX512DQ-NEXT: vpinsrb $6, %eax, %xmm1, %xmm1 6242; AVX512DQ-NEXT: kshiftlw $8, %k0, %k1 6243; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6244; AVX512DQ-NEXT: kmovw %k1, %eax 6245; AVX512DQ-NEXT: vpinsrb $7, %eax, %xmm1, %xmm1 6246; AVX512DQ-NEXT: kshiftlw $7, %k0, %k1 6247; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6248; AVX512DQ-NEXT: kmovw %k1, %eax 6249; AVX512DQ-NEXT: vpinsrb $8, %eax, %xmm1, %xmm1 6250; AVX512DQ-NEXT: kshiftlw $6, %k0, %k1 6251; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6252; AVX512DQ-NEXT: kmovw %k1, %eax 6253; AVX512DQ-NEXT: vpinsrb $9, %eax, %xmm1, %xmm1 6254; AVX512DQ-NEXT: kshiftlw $5, %k0, %k1 6255; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6256; AVX512DQ-NEXT: kmovw %k1, %eax 6257; AVX512DQ-NEXT: vpinsrb $10, %eax, %xmm1, %xmm1 6258; AVX512DQ-NEXT: kshiftlw $4, %k0, %k1 6259; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6260; AVX512DQ-NEXT: kmovw %k1, %eax 6261; AVX512DQ-NEXT: vpinsrb $11, %eax, %xmm1, %xmm1 6262; AVX512DQ-NEXT: kshiftlw $3, %k0, %k1 6263; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6264; AVX512DQ-NEXT: kmovw %k1, %eax 6265; AVX512DQ-NEXT: vpinsrb $12, %eax, %xmm1, %xmm1 6266; AVX512DQ-NEXT: kshiftlw $2, %k0, %k1 6267; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6268; AVX512DQ-NEXT: kmovw %k1, %eax 6269; AVX512DQ-NEXT: vpinsrb $13, %eax, %xmm1, %xmm1 6270; AVX512DQ-NEXT: kshiftlw $1, %k0, %k1 6271; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6272; AVX512DQ-NEXT: kmovw %k1, %eax 6273; AVX512DQ-NEXT: vpinsrb $14, %eax, %xmm1, %xmm1 6274; AVX512DQ-NEXT: kshiftrw $15, %k0, %k0 6275; AVX512DQ-NEXT: kmovw %k0, %eax 6276; AVX512DQ-NEXT: vpinsrb $15, %eax, %xmm1, %xmm1 6277; AVX512DQ-NEXT: vpcmpgtw %ymm4, %ymm0, %ymm0 6278; AVX512DQ-NEXT: vpmovsxwd %ymm0, %zmm0 6279; AVX512DQ-NEXT: vpslld $31, %zmm0, %zmm0 6280; AVX512DQ-NEXT: vptestmd %zmm0, %zmm0, %k0 6281; AVX512DQ-NEXT: kshiftlw $14, %k0, %k1 6282; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6283; AVX512DQ-NEXT: kmovw %k1, %eax 6284; AVX512DQ-NEXT: kshiftlw $15, %k0, %k1 6285; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6286; AVX512DQ-NEXT: kmovw %k1, %ecx 6287; AVX512DQ-NEXT: vmovd %ecx, %xmm0 6288; AVX512DQ-NEXT: vpinsrb $1, %eax, %xmm0, %xmm0 6289; AVX512DQ-NEXT: kshiftlw $13, %k0, %k1 6290; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6291; AVX512DQ-NEXT: kmovw %k1, %eax 6292; AVX512DQ-NEXT: vpinsrb $2, %eax, %xmm0, %xmm0 6293; AVX512DQ-NEXT: kshiftlw $12, %k0, %k1 6294; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6295; AVX512DQ-NEXT: kmovw %k1, %eax 6296; AVX512DQ-NEXT: vpinsrb $3, %eax, %xmm0, %xmm0 6297; AVX512DQ-NEXT: kshiftlw $11, %k0, %k1 6298; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6299; AVX512DQ-NEXT: kmovw %k1, %eax 6300; AVX512DQ-NEXT: vpinsrb $4, %eax, %xmm0, %xmm0 6301; AVX512DQ-NEXT: kshiftlw $10, %k0, %k1 6302; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6303; AVX512DQ-NEXT: kmovw %k1, %eax 6304; AVX512DQ-NEXT: vpinsrb $5, %eax, %xmm0, %xmm0 6305; AVX512DQ-NEXT: kshiftlw $9, %k0, %k1 6306; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6307; AVX512DQ-NEXT: kmovw %k1, %eax 6308; AVX512DQ-NEXT: vpinsrb $6, %eax, %xmm0, %xmm0 6309; AVX512DQ-NEXT: kshiftlw $8, %k0, %k1 6310; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6311; AVX512DQ-NEXT: kmovw %k1, %eax 6312; AVX512DQ-NEXT: vpinsrb $7, %eax, %xmm0, %xmm0 6313; AVX512DQ-NEXT: kshiftlw $7, %k0, %k1 6314; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6315; AVX512DQ-NEXT: kmovw %k1, %eax 6316; AVX512DQ-NEXT: vpinsrb $8, %eax, %xmm0, %xmm0 6317; AVX512DQ-NEXT: kshiftlw $6, %k0, %k1 6318; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6319; AVX512DQ-NEXT: kmovw %k1, %eax 6320; AVX512DQ-NEXT: vpinsrb $9, %eax, %xmm0, %xmm0 6321; AVX512DQ-NEXT: kshiftlw $5, %k0, %k1 6322; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6323; AVX512DQ-NEXT: kmovw %k1, %eax 6324; AVX512DQ-NEXT: vpinsrb $10, %eax, %xmm0, %xmm0 6325; AVX512DQ-NEXT: kshiftlw $4, %k0, %k1 6326; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6327; AVX512DQ-NEXT: kmovw %k1, %eax 6328; AVX512DQ-NEXT: vpinsrb $11, %eax, %xmm0, %xmm0 6329; AVX512DQ-NEXT: kshiftlw $3, %k0, %k1 6330; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6331; AVX512DQ-NEXT: kmovw %k1, %eax 6332; AVX512DQ-NEXT: vpinsrb $12, %eax, %xmm0, %xmm0 6333; AVX512DQ-NEXT: kshiftlw $2, %k0, %k1 6334; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6335; AVX512DQ-NEXT: kmovw %k1, %eax 6336; AVX512DQ-NEXT: vpinsrb $13, %eax, %xmm0, %xmm0 6337; AVX512DQ-NEXT: kshiftlw $1, %k0, %k1 6338; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6339; AVX512DQ-NEXT: kmovw %k1, %eax 6340; AVX512DQ-NEXT: vpinsrb $14, %eax, %xmm0, %xmm0 6341; AVX512DQ-NEXT: kshiftrw $15, %k0, %k0 6342; AVX512DQ-NEXT: kmovw %k0, %eax 6343; AVX512DQ-NEXT: vpinsrb $15, %eax, %xmm0, %xmm0 6344; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 6345; AVX512DQ-NEXT: vpsllw $7, %ymm0, %ymm0 6346; AVX512DQ-NEXT: vpand %ymm3, %ymm0, %ymm0 6347; AVX512DQ-NEXT: vpcmpgtb %ymm0, %ymm6, %ymm0 6348; AVX512DQ-NEXT: vextracti128 $1, %ymm0, %xmm1 6349; AVX512DQ-NEXT: vextracti128 $1, %ymm2, %xmm3 6350; AVX512DQ-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill> 6351; AVX512DQ-NEXT: # kill: %XMM2<def> %XMM2<kill> %YMM2<kill> 6352; AVX512DQ-NEXT: retq 6353; 6354; AVX512BW-LABEL: test_cmp_v64i16: 6355; AVX512BW: # BB#0: 6356; AVX512BW-NEXT: vextracti32x4 $3, %zmm2, %xmm4 6357; AVX512BW-NEXT: vpextrw $1, %xmm4, %ecx 6358; AVX512BW-NEXT: vextracti32x4 $3, %zmm0, %xmm5 6359; AVX512BW-NEXT: vpextrw $1, %xmm5, %edx 6360; AVX512BW-NEXT: xorl %eax, %eax 6361; AVX512BW-NEXT: cmpw %cx, %dx 6362; AVX512BW-NEXT: movw $-1, %cx 6363; AVX512BW-NEXT: movl $0, %edx 6364; AVX512BW-NEXT: cmovgw %cx, %dx 6365; AVX512BW-NEXT: vmovd %xmm4, %esi 6366; AVX512BW-NEXT: vmovd %xmm5, %edi 6367; AVX512BW-NEXT: cmpw %si, %di 6368; AVX512BW-NEXT: movl $0, %esi 6369; AVX512BW-NEXT: cmovgw %cx, %si 6370; AVX512BW-NEXT: vmovd %esi, %xmm6 6371; AVX512BW-NEXT: vpinsrw $1, %edx, %xmm6, %xmm6 6372; AVX512BW-NEXT: vpextrw $2, %xmm4, %edx 6373; AVX512BW-NEXT: vpextrw $2, %xmm5, %esi 6374; AVX512BW-NEXT: cmpw %dx, %si 6375; AVX512BW-NEXT: movl $0, %edx 6376; AVX512BW-NEXT: cmovgw %cx, %dx 6377; AVX512BW-NEXT: vpinsrw $2, %edx, %xmm6, %xmm6 6378; AVX512BW-NEXT: vpextrw $3, %xmm4, %edx 6379; AVX512BW-NEXT: vpextrw $3, %xmm5, %esi 6380; AVX512BW-NEXT: cmpw %dx, %si 6381; AVX512BW-NEXT: movl $0, %edx 6382; AVX512BW-NEXT: cmovgw %cx, %dx 6383; AVX512BW-NEXT: vpinsrw $3, %edx, %xmm6, %xmm6 6384; AVX512BW-NEXT: vpextrw $4, %xmm4, %edx 6385; AVX512BW-NEXT: vpextrw $4, %xmm5, %esi 6386; AVX512BW-NEXT: cmpw %dx, %si 6387; AVX512BW-NEXT: movl $0, %edx 6388; AVX512BW-NEXT: cmovgw %cx, %dx 6389; AVX512BW-NEXT: vpinsrw $4, %edx, %xmm6, %xmm6 6390; AVX512BW-NEXT: vpextrw $5, %xmm4, %edx 6391; AVX512BW-NEXT: vpextrw $5, %xmm5, %esi 6392; AVX512BW-NEXT: cmpw %dx, %si 6393; AVX512BW-NEXT: movl $0, %edx 6394; AVX512BW-NEXT: cmovgw %cx, %dx 6395; AVX512BW-NEXT: vpinsrw $5, %edx, %xmm6, %xmm6 6396; AVX512BW-NEXT: vpextrw $6, %xmm4, %edx 6397; AVX512BW-NEXT: vpextrw $6, %xmm5, %esi 6398; AVX512BW-NEXT: cmpw %dx, %si 6399; AVX512BW-NEXT: movl $0, %edx 6400; AVX512BW-NEXT: cmovgw %cx, %dx 6401; AVX512BW-NEXT: vpinsrw $6, %edx, %xmm6, %xmm6 6402; AVX512BW-NEXT: vpextrw $7, %xmm4, %edx 6403; AVX512BW-NEXT: vpextrw $7, %xmm5, %esi 6404; AVX512BW-NEXT: cmpw %dx, %si 6405; AVX512BW-NEXT: movl $0, %edx 6406; AVX512BW-NEXT: cmovgw %cx, %dx 6407; AVX512BW-NEXT: vpinsrw $7, %edx, %xmm6, %xmm4 6408; AVX512BW-NEXT: vextracti32x4 $2, %zmm2, %xmm5 6409; AVX512BW-NEXT: vpextrw $1, %xmm5, %edx 6410; AVX512BW-NEXT: vextracti32x4 $2, %zmm0, %xmm6 6411; AVX512BW-NEXT: vpextrw $1, %xmm6, %esi 6412; AVX512BW-NEXT: cmpw %dx, %si 6413; AVX512BW-NEXT: movl $0, %edx 6414; AVX512BW-NEXT: cmovgw %cx, %dx 6415; AVX512BW-NEXT: vmovd %xmm5, %esi 6416; AVX512BW-NEXT: vmovd %xmm6, %edi 6417; AVX512BW-NEXT: cmpw %si, %di 6418; AVX512BW-NEXT: movl $0, %esi 6419; AVX512BW-NEXT: cmovgw %cx, %si 6420; AVX512BW-NEXT: vmovd %esi, %xmm7 6421; AVX512BW-NEXT: vpinsrw $1, %edx, %xmm7, %xmm7 6422; AVX512BW-NEXT: vpextrw $2, %xmm5, %edx 6423; AVX512BW-NEXT: vpextrw $2, %xmm6, %esi 6424; AVX512BW-NEXT: cmpw %dx, %si 6425; AVX512BW-NEXT: movl $0, %edx 6426; AVX512BW-NEXT: cmovgw %cx, %dx 6427; AVX512BW-NEXT: vpinsrw $2, %edx, %xmm7, %xmm7 6428; AVX512BW-NEXT: vpextrw $3, %xmm5, %edx 6429; AVX512BW-NEXT: vpextrw $3, %xmm6, %esi 6430; AVX512BW-NEXT: cmpw %dx, %si 6431; AVX512BW-NEXT: movl $0, %edx 6432; AVX512BW-NEXT: cmovgw %cx, %dx 6433; AVX512BW-NEXT: vpinsrw $3, %edx, %xmm7, %xmm7 6434; AVX512BW-NEXT: vpextrw $4, %xmm5, %edx 6435; AVX512BW-NEXT: vpextrw $4, %xmm6, %esi 6436; AVX512BW-NEXT: cmpw %dx, %si 6437; AVX512BW-NEXT: movl $0, %edx 6438; AVX512BW-NEXT: cmovgw %cx, %dx 6439; AVX512BW-NEXT: vpinsrw $4, %edx, %xmm7, %xmm7 6440; AVX512BW-NEXT: vpextrw $5, %xmm5, %edx 6441; AVX512BW-NEXT: vpextrw $5, %xmm6, %esi 6442; AVX512BW-NEXT: cmpw %dx, %si 6443; AVX512BW-NEXT: movl $0, %edx 6444; AVX512BW-NEXT: cmovgw %cx, %dx 6445; AVX512BW-NEXT: vpinsrw $5, %edx, %xmm7, %xmm7 6446; AVX512BW-NEXT: vpextrw $6, %xmm5, %edx 6447; AVX512BW-NEXT: vpextrw $6, %xmm6, %esi 6448; AVX512BW-NEXT: cmpw %dx, %si 6449; AVX512BW-NEXT: movl $0, %edx 6450; AVX512BW-NEXT: cmovgw %cx, %dx 6451; AVX512BW-NEXT: vpinsrw $6, %edx, %xmm7, %xmm7 6452; AVX512BW-NEXT: vpextrw $7, %xmm5, %edx 6453; AVX512BW-NEXT: vpextrw $7, %xmm6, %esi 6454; AVX512BW-NEXT: cmpw %dx, %si 6455; AVX512BW-NEXT: movl $0, %edx 6456; AVX512BW-NEXT: cmovgw %cx, %dx 6457; AVX512BW-NEXT: vpinsrw $7, %edx, %xmm7, %xmm5 6458; AVX512BW-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4 6459; AVX512BW-NEXT: vextracti32x4 $1, %zmm2, %xmm5 6460; AVX512BW-NEXT: vpextrw $1, %xmm5, %edx 6461; AVX512BW-NEXT: vextracti32x4 $1, %zmm0, %xmm6 6462; AVX512BW-NEXT: vpextrw $1, %xmm6, %esi 6463; AVX512BW-NEXT: cmpw %dx, %si 6464; AVX512BW-NEXT: movl $0, %edx 6465; AVX512BW-NEXT: cmovgw %cx, %dx 6466; AVX512BW-NEXT: vmovd %xmm5, %esi 6467; AVX512BW-NEXT: vmovd %xmm6, %edi 6468; AVX512BW-NEXT: cmpw %si, %di 6469; AVX512BW-NEXT: movl $0, %esi 6470; AVX512BW-NEXT: cmovgw %cx, %si 6471; AVX512BW-NEXT: vmovd %esi, %xmm7 6472; AVX512BW-NEXT: vpinsrw $1, %edx, %xmm7, %xmm7 6473; AVX512BW-NEXT: vpextrw $2, %xmm5, %edx 6474; AVX512BW-NEXT: vpextrw $2, %xmm6, %esi 6475; AVX512BW-NEXT: cmpw %dx, %si 6476; AVX512BW-NEXT: movl $0, %edx 6477; AVX512BW-NEXT: cmovgw %cx, %dx 6478; AVX512BW-NEXT: vpinsrw $2, %edx, %xmm7, %xmm7 6479; AVX512BW-NEXT: vpextrw $3, %xmm5, %edx 6480; AVX512BW-NEXT: vpextrw $3, %xmm6, %esi 6481; AVX512BW-NEXT: cmpw %dx, %si 6482; AVX512BW-NEXT: movl $0, %edx 6483; AVX512BW-NEXT: cmovgw %cx, %dx 6484; AVX512BW-NEXT: vpinsrw $3, %edx, %xmm7, %xmm7 6485; AVX512BW-NEXT: vpextrw $4, %xmm5, %edx 6486; AVX512BW-NEXT: vpextrw $4, %xmm6, %esi 6487; AVX512BW-NEXT: cmpw %dx, %si 6488; AVX512BW-NEXT: movl $0, %edx 6489; AVX512BW-NEXT: cmovgw %cx, %dx 6490; AVX512BW-NEXT: vpinsrw $4, %edx, %xmm7, %xmm7 6491; AVX512BW-NEXT: vpextrw $5, %xmm5, %edx 6492; AVX512BW-NEXT: vpextrw $5, %xmm6, %esi 6493; AVX512BW-NEXT: cmpw %dx, %si 6494; AVX512BW-NEXT: movl $0, %edx 6495; AVX512BW-NEXT: cmovgw %cx, %dx 6496; AVX512BW-NEXT: vpinsrw $5, %edx, %xmm7, %xmm7 6497; AVX512BW-NEXT: vpextrw $6, %xmm5, %edx 6498; AVX512BW-NEXT: vpextrw $6, %xmm6, %esi 6499; AVX512BW-NEXT: cmpw %dx, %si 6500; AVX512BW-NEXT: movl $0, %edx 6501; AVX512BW-NEXT: cmovgw %cx, %dx 6502; AVX512BW-NEXT: vpinsrw $6, %edx, %xmm7, %xmm7 6503; AVX512BW-NEXT: vpextrw $7, %xmm5, %edx 6504; AVX512BW-NEXT: vpextrw $7, %xmm6, %esi 6505; AVX512BW-NEXT: cmpw %dx, %si 6506; AVX512BW-NEXT: movl $0, %edx 6507; AVX512BW-NEXT: cmovgw %cx, %dx 6508; AVX512BW-NEXT: vpinsrw $7, %edx, %xmm7, %xmm5 6509; AVX512BW-NEXT: vpextrw $1, %xmm2, %edx 6510; AVX512BW-NEXT: vpextrw $1, %xmm0, %esi 6511; AVX512BW-NEXT: cmpw %dx, %si 6512; AVX512BW-NEXT: movl $0, %edx 6513; AVX512BW-NEXT: cmovgw %cx, %dx 6514; AVX512BW-NEXT: vmovd %xmm2, %esi 6515; AVX512BW-NEXT: vmovd %xmm0, %edi 6516; AVX512BW-NEXT: cmpw %si, %di 6517; AVX512BW-NEXT: movl $0, %esi 6518; AVX512BW-NEXT: cmovgw %cx, %si 6519; AVX512BW-NEXT: vmovd %esi, %xmm6 6520; AVX512BW-NEXT: vpinsrw $1, %edx, %xmm6, %xmm6 6521; AVX512BW-NEXT: vpextrw $2, %xmm2, %edx 6522; AVX512BW-NEXT: vpextrw $2, %xmm0, %esi 6523; AVX512BW-NEXT: cmpw %dx, %si 6524; AVX512BW-NEXT: movl $0, %edx 6525; AVX512BW-NEXT: cmovgw %cx, %dx 6526; AVX512BW-NEXT: vpinsrw $2, %edx, %xmm6, %xmm6 6527; AVX512BW-NEXT: vpextrw $3, %xmm2, %edx 6528; AVX512BW-NEXT: vpextrw $3, %xmm0, %esi 6529; AVX512BW-NEXT: cmpw %dx, %si 6530; AVX512BW-NEXT: movl $0, %edx 6531; AVX512BW-NEXT: cmovgw %cx, %dx 6532; AVX512BW-NEXT: vpinsrw $3, %edx, %xmm6, %xmm6 6533; AVX512BW-NEXT: vpextrw $4, %xmm2, %edx 6534; AVX512BW-NEXT: vpextrw $4, %xmm0, %esi 6535; AVX512BW-NEXT: cmpw %dx, %si 6536; AVX512BW-NEXT: movl $0, %edx 6537; AVX512BW-NEXT: cmovgw %cx, %dx 6538; AVX512BW-NEXT: vpinsrw $4, %edx, %xmm6, %xmm6 6539; AVX512BW-NEXT: vpextrw $5, %xmm2, %edx 6540; AVX512BW-NEXT: vpextrw $5, %xmm0, %esi 6541; AVX512BW-NEXT: cmpw %dx, %si 6542; AVX512BW-NEXT: movl $0, %edx 6543; AVX512BW-NEXT: cmovgw %cx, %dx 6544; AVX512BW-NEXT: vpinsrw $5, %edx, %xmm6, %xmm6 6545; AVX512BW-NEXT: vpextrw $6, %xmm2, %edx 6546; AVX512BW-NEXT: vpextrw $6, %xmm0, %esi 6547; AVX512BW-NEXT: cmpw %dx, %si 6548; AVX512BW-NEXT: movl $0, %edx 6549; AVX512BW-NEXT: cmovgw %cx, %dx 6550; AVX512BW-NEXT: vpinsrw $6, %edx, %xmm6, %xmm6 6551; AVX512BW-NEXT: vpextrw $7, %xmm2, %edx 6552; AVX512BW-NEXT: vpextrw $7, %xmm0, %esi 6553; AVX512BW-NEXT: cmpw %dx, %si 6554; AVX512BW-NEXT: movl $0, %edx 6555; AVX512BW-NEXT: cmovgw %cx, %dx 6556; AVX512BW-NEXT: vpinsrw $7, %edx, %xmm6, %xmm0 6557; AVX512BW-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0 6558; AVX512BW-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm0 6559; AVX512BW-NEXT: vpmovwb %zmm0, %ymm0 6560; AVX512BW-NEXT: vextracti32x4 $3, %zmm3, %xmm2 6561; AVX512BW-NEXT: vpextrw $1, %xmm2, %edx 6562; AVX512BW-NEXT: vextracti32x4 $3, %zmm1, %xmm4 6563; AVX512BW-NEXT: vpextrw $1, %xmm4, %esi 6564; AVX512BW-NEXT: cmpw %dx, %si 6565; AVX512BW-NEXT: movl $0, %edx 6566; AVX512BW-NEXT: cmovgw %cx, %dx 6567; AVX512BW-NEXT: vmovd %xmm2, %esi 6568; AVX512BW-NEXT: vmovd %xmm4, %edi 6569; AVX512BW-NEXT: cmpw %si, %di 6570; AVX512BW-NEXT: movl $0, %esi 6571; AVX512BW-NEXT: cmovgw %cx, %si 6572; AVX512BW-NEXT: vmovd %esi, %xmm5 6573; AVX512BW-NEXT: vpinsrw $1, %edx, %xmm5, %xmm5 6574; AVX512BW-NEXT: vpextrw $2, %xmm2, %edx 6575; AVX512BW-NEXT: vpextrw $2, %xmm4, %esi 6576; AVX512BW-NEXT: cmpw %dx, %si 6577; AVX512BW-NEXT: movl $0, %edx 6578; AVX512BW-NEXT: cmovgw %cx, %dx 6579; AVX512BW-NEXT: vpinsrw $2, %edx, %xmm5, %xmm5 6580; AVX512BW-NEXT: vpextrw $3, %xmm2, %edx 6581; AVX512BW-NEXT: vpextrw $3, %xmm4, %esi 6582; AVX512BW-NEXT: cmpw %dx, %si 6583; AVX512BW-NEXT: movl $0, %edx 6584; AVX512BW-NEXT: cmovgw %cx, %dx 6585; AVX512BW-NEXT: vpinsrw $3, %edx, %xmm5, %xmm5 6586; AVX512BW-NEXT: vpextrw $4, %xmm2, %edx 6587; AVX512BW-NEXT: vpextrw $4, %xmm4, %esi 6588; AVX512BW-NEXT: cmpw %dx, %si 6589; AVX512BW-NEXT: movl $0, %edx 6590; AVX512BW-NEXT: cmovgw %cx, %dx 6591; AVX512BW-NEXT: vpinsrw $4, %edx, %xmm5, %xmm5 6592; AVX512BW-NEXT: vpextrw $5, %xmm2, %edx 6593; AVX512BW-NEXT: vpextrw $5, %xmm4, %esi 6594; AVX512BW-NEXT: cmpw %dx, %si 6595; AVX512BW-NEXT: movl $0, %edx 6596; AVX512BW-NEXT: cmovgw %cx, %dx 6597; AVX512BW-NEXT: vpinsrw $5, %edx, %xmm5, %xmm5 6598; AVX512BW-NEXT: vpextrw $6, %xmm2, %edx 6599; AVX512BW-NEXT: vpextrw $6, %xmm4, %esi 6600; AVX512BW-NEXT: cmpw %dx, %si 6601; AVX512BW-NEXT: movl $0, %edx 6602; AVX512BW-NEXT: cmovgw %cx, %dx 6603; AVX512BW-NEXT: vpinsrw $6, %edx, %xmm5, %xmm5 6604; AVX512BW-NEXT: vpextrw $7, %xmm2, %edx 6605; AVX512BW-NEXT: vpextrw $7, %xmm4, %esi 6606; AVX512BW-NEXT: cmpw %dx, %si 6607; AVX512BW-NEXT: movl $0, %edx 6608; AVX512BW-NEXT: cmovgw %cx, %dx 6609; AVX512BW-NEXT: vpinsrw $7, %edx, %xmm5, %xmm2 6610; AVX512BW-NEXT: vextracti32x4 $2, %zmm3, %xmm4 6611; AVX512BW-NEXT: vpextrw $1, %xmm4, %edx 6612; AVX512BW-NEXT: vextracti32x4 $2, %zmm1, %xmm5 6613; AVX512BW-NEXT: vpextrw $1, %xmm5, %esi 6614; AVX512BW-NEXT: cmpw %dx, %si 6615; AVX512BW-NEXT: movl $0, %edx 6616; AVX512BW-NEXT: cmovgw %cx, %dx 6617; AVX512BW-NEXT: vmovd %xmm4, %esi 6618; AVX512BW-NEXT: vmovd %xmm5, %edi 6619; AVX512BW-NEXT: cmpw %si, %di 6620; AVX512BW-NEXT: movl $0, %esi 6621; AVX512BW-NEXT: cmovgw %cx, %si 6622; AVX512BW-NEXT: vmovd %esi, %xmm6 6623; AVX512BW-NEXT: vpinsrw $1, %edx, %xmm6, %xmm6 6624; AVX512BW-NEXT: vpextrw $2, %xmm4, %edx 6625; AVX512BW-NEXT: vpextrw $2, %xmm5, %esi 6626; AVX512BW-NEXT: cmpw %dx, %si 6627; AVX512BW-NEXT: movl $0, %edx 6628; AVX512BW-NEXT: cmovgw %cx, %dx 6629; AVX512BW-NEXT: vpinsrw $2, %edx, %xmm6, %xmm6 6630; AVX512BW-NEXT: vpextrw $3, %xmm4, %edx 6631; AVX512BW-NEXT: vpextrw $3, %xmm5, %esi 6632; AVX512BW-NEXT: cmpw %dx, %si 6633; AVX512BW-NEXT: movl $0, %edx 6634; AVX512BW-NEXT: cmovgw %cx, %dx 6635; AVX512BW-NEXT: vpinsrw $3, %edx, %xmm6, %xmm6 6636; AVX512BW-NEXT: vpextrw $4, %xmm4, %edx 6637; AVX512BW-NEXT: vpextrw $4, %xmm5, %esi 6638; AVX512BW-NEXT: cmpw %dx, %si 6639; AVX512BW-NEXT: movl $0, %edx 6640; AVX512BW-NEXT: cmovgw %cx, %dx 6641; AVX512BW-NEXT: vpinsrw $4, %edx, %xmm6, %xmm6 6642; AVX512BW-NEXT: vpextrw $5, %xmm4, %edx 6643; AVX512BW-NEXT: vpextrw $5, %xmm5, %esi 6644; AVX512BW-NEXT: cmpw %dx, %si 6645; AVX512BW-NEXT: movl $0, %edx 6646; AVX512BW-NEXT: cmovgw %cx, %dx 6647; AVX512BW-NEXT: vpinsrw $5, %edx, %xmm6, %xmm6 6648; AVX512BW-NEXT: vpextrw $6, %xmm4, %edx 6649; AVX512BW-NEXT: vpextrw $6, %xmm5, %esi 6650; AVX512BW-NEXT: cmpw %dx, %si 6651; AVX512BW-NEXT: movl $0, %edx 6652; AVX512BW-NEXT: cmovgw %cx, %dx 6653; AVX512BW-NEXT: vpinsrw $6, %edx, %xmm6, %xmm6 6654; AVX512BW-NEXT: vpextrw $7, %xmm4, %edx 6655; AVX512BW-NEXT: vpextrw $7, %xmm5, %esi 6656; AVX512BW-NEXT: cmpw %dx, %si 6657; AVX512BW-NEXT: movl $0, %edx 6658; AVX512BW-NEXT: cmovgw %cx, %dx 6659; AVX512BW-NEXT: vpinsrw $7, %edx, %xmm6, %xmm4 6660; AVX512BW-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2 6661; AVX512BW-NEXT: vextracti32x4 $1, %zmm3, %xmm4 6662; AVX512BW-NEXT: vpextrw $1, %xmm4, %edx 6663; AVX512BW-NEXT: vextracti32x4 $1, %zmm1, %xmm5 6664; AVX512BW-NEXT: vpextrw $1, %xmm5, %esi 6665; AVX512BW-NEXT: cmpw %dx, %si 6666; AVX512BW-NEXT: movl $0, %edx 6667; AVX512BW-NEXT: cmovgw %cx, %dx 6668; AVX512BW-NEXT: vmovd %xmm4, %esi 6669; AVX512BW-NEXT: vmovd %xmm5, %edi 6670; AVX512BW-NEXT: cmpw %si, %di 6671; AVX512BW-NEXT: movl $0, %esi 6672; AVX512BW-NEXT: cmovgw %cx, %si 6673; AVX512BW-NEXT: vmovd %esi, %xmm6 6674; AVX512BW-NEXT: vpinsrw $1, %edx, %xmm6, %xmm6 6675; AVX512BW-NEXT: vpextrw $2, %xmm4, %edx 6676; AVX512BW-NEXT: vpextrw $2, %xmm5, %esi 6677; AVX512BW-NEXT: cmpw %dx, %si 6678; AVX512BW-NEXT: movl $0, %edx 6679; AVX512BW-NEXT: cmovgw %cx, %dx 6680; AVX512BW-NEXT: vpinsrw $2, %edx, %xmm6, %xmm6 6681; AVX512BW-NEXT: vpextrw $3, %xmm4, %edx 6682; AVX512BW-NEXT: vpextrw $3, %xmm5, %esi 6683; AVX512BW-NEXT: cmpw %dx, %si 6684; AVX512BW-NEXT: movl $0, %edx 6685; AVX512BW-NEXT: cmovgw %cx, %dx 6686; AVX512BW-NEXT: vpinsrw $3, %edx, %xmm6, %xmm6 6687; AVX512BW-NEXT: vpextrw $4, %xmm4, %edx 6688; AVX512BW-NEXT: vpextrw $4, %xmm5, %esi 6689; AVX512BW-NEXT: cmpw %dx, %si 6690; AVX512BW-NEXT: movl $0, %edx 6691; AVX512BW-NEXT: cmovgw %cx, %dx 6692; AVX512BW-NEXT: vpinsrw $4, %edx, %xmm6, %xmm6 6693; AVX512BW-NEXT: vpextrw $5, %xmm4, %edx 6694; AVX512BW-NEXT: vpextrw $5, %xmm5, %esi 6695; AVX512BW-NEXT: cmpw %dx, %si 6696; AVX512BW-NEXT: movl $0, %edx 6697; AVX512BW-NEXT: cmovgw %cx, %dx 6698; AVX512BW-NEXT: vpinsrw $5, %edx, %xmm6, %xmm6 6699; AVX512BW-NEXT: vpextrw $6, %xmm4, %edx 6700; AVX512BW-NEXT: vpextrw $6, %xmm5, %esi 6701; AVX512BW-NEXT: cmpw %dx, %si 6702; AVX512BW-NEXT: movl $0, %edx 6703; AVX512BW-NEXT: cmovgw %cx, %dx 6704; AVX512BW-NEXT: vpinsrw $6, %edx, %xmm6, %xmm6 6705; AVX512BW-NEXT: vpextrw $7, %xmm4, %edx 6706; AVX512BW-NEXT: vpextrw $7, %xmm5, %esi 6707; AVX512BW-NEXT: cmpw %dx, %si 6708; AVX512BW-NEXT: movl $0, %edx 6709; AVX512BW-NEXT: cmovgw %cx, %dx 6710; AVX512BW-NEXT: vpinsrw $7, %edx, %xmm6, %xmm4 6711; AVX512BW-NEXT: vpextrw $1, %xmm3, %edx 6712; AVX512BW-NEXT: vpextrw $1, %xmm1, %esi 6713; AVX512BW-NEXT: cmpw %dx, %si 6714; AVX512BW-NEXT: movl $0, %edx 6715; AVX512BW-NEXT: cmovgw %cx, %dx 6716; AVX512BW-NEXT: vmovd %xmm3, %esi 6717; AVX512BW-NEXT: vmovd %xmm1, %edi 6718; AVX512BW-NEXT: cmpw %si, %di 6719; AVX512BW-NEXT: movl $0, %esi 6720; AVX512BW-NEXT: cmovgw %cx, %si 6721; AVX512BW-NEXT: vmovd %esi, %xmm5 6722; AVX512BW-NEXT: vpinsrw $1, %edx, %xmm5, %xmm5 6723; AVX512BW-NEXT: vpextrw $2, %xmm3, %edx 6724; AVX512BW-NEXT: vpextrw $2, %xmm1, %esi 6725; AVX512BW-NEXT: cmpw %dx, %si 6726; AVX512BW-NEXT: movl $0, %edx 6727; AVX512BW-NEXT: cmovgw %cx, %dx 6728; AVX512BW-NEXT: vpinsrw $2, %edx, %xmm5, %xmm5 6729; AVX512BW-NEXT: vpextrw $3, %xmm3, %edx 6730; AVX512BW-NEXT: vpextrw $3, %xmm1, %esi 6731; AVX512BW-NEXT: cmpw %dx, %si 6732; AVX512BW-NEXT: movl $0, %edx 6733; AVX512BW-NEXT: cmovgw %cx, %dx 6734; AVX512BW-NEXT: vpinsrw $3, %edx, %xmm5, %xmm5 6735; AVX512BW-NEXT: vpextrw $4, %xmm3, %edx 6736; AVX512BW-NEXT: vpextrw $4, %xmm1, %esi 6737; AVX512BW-NEXT: cmpw %dx, %si 6738; AVX512BW-NEXT: movl $0, %edx 6739; AVX512BW-NEXT: cmovgw %cx, %dx 6740; AVX512BW-NEXT: vpinsrw $4, %edx, %xmm5, %xmm5 6741; AVX512BW-NEXT: vpextrw $5, %xmm3, %edx 6742; AVX512BW-NEXT: vpextrw $5, %xmm1, %esi 6743; AVX512BW-NEXT: cmpw %dx, %si 6744; AVX512BW-NEXT: movl $0, %edx 6745; AVX512BW-NEXT: cmovgw %cx, %dx 6746; AVX512BW-NEXT: vpinsrw $5, %edx, %xmm5, %xmm5 6747; AVX512BW-NEXT: vpextrw $6, %xmm3, %edx 6748; AVX512BW-NEXT: vpextrw $6, %xmm1, %esi 6749; AVX512BW-NEXT: cmpw %dx, %si 6750; AVX512BW-NEXT: movl $0, %edx 6751; AVX512BW-NEXT: cmovgw %cx, %dx 6752; AVX512BW-NEXT: vpinsrw $6, %edx, %xmm5, %xmm5 6753; AVX512BW-NEXT: vpextrw $7, %xmm3, %edx 6754; AVX512BW-NEXT: vpextrw $7, %xmm1, %esi 6755; AVX512BW-NEXT: cmpw %dx, %si 6756; AVX512BW-NEXT: cmovgw %cx, %ax 6757; AVX512BW-NEXT: vpinsrw $7, %eax, %xmm5, %xmm1 6758; AVX512BW-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1 6759; AVX512BW-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1 6760; AVX512BW-NEXT: vpmovwb %zmm1, %ymm1 6761; AVX512BW-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 6762; AVX512BW-NEXT: retq 6763 %1 = icmp sgt <64 x i16> %a0, %a1 6764 ret <64 x i1> %1 6765} 6766 6767define <128 x i1> @test_cmp_v128i8(<128 x i8> %a0, <128 x i8> %a1) nounwind { 6768; SSE2-LABEL: test_cmp_v128i8: 6769; SSE2: # BB#0: 6770; SSE2-NEXT: pushq %rax 6771; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm0 6772; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm1 6773; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm2 6774; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm3 6775; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm4 6776; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm5 6777; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm6 6778; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm7 6779; SSE2-NEXT: movdqa %xmm7, -{{[0-9]+}}(%rsp) 6780; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6781; SSE2-NEXT: andb $1, %al 6782; SSE2-NEXT: movb %al, 14(%rdi) 6783; SSE2-NEXT: movdqa %xmm6, -{{[0-9]+}}(%rsp) 6784; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6785; SSE2-NEXT: andb $1, %al 6786; SSE2-NEXT: movb %al, 12(%rdi) 6787; SSE2-NEXT: movdqa %xmm5, -{{[0-9]+}}(%rsp) 6788; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6789; SSE2-NEXT: andb $1, %al 6790; SSE2-NEXT: movb %al, 10(%rdi) 6791; SSE2-NEXT: movdqa %xmm4, -{{[0-9]+}}(%rsp) 6792; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6793; SSE2-NEXT: andb $1, %al 6794; SSE2-NEXT: movb %al, 8(%rdi) 6795; SSE2-NEXT: movdqa %xmm3, -{{[0-9]+}}(%rsp) 6796; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6797; SSE2-NEXT: andb $1, %al 6798; SSE2-NEXT: movb %al, 6(%rdi) 6799; SSE2-NEXT: movdqa %xmm2, -{{[0-9]+}}(%rsp) 6800; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6801; SSE2-NEXT: andb $1, %al 6802; SSE2-NEXT: movb %al, 4(%rdi) 6803; SSE2-NEXT: movdqa %xmm1, -{{[0-9]+}}(%rsp) 6804; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6805; SSE2-NEXT: andb $1, %al 6806; SSE2-NEXT: movb %al, 2(%rdi) 6807; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 6808; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6809; SSE2-NEXT: andb $1, %al 6810; SSE2-NEXT: movb %al, (%rdi) 6811; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6812; SSE2-NEXT: andb $1, %al 6813; SSE2-NEXT: movb %al, 14(%rdi) 6814; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6815; SSE2-NEXT: andb $1, %al 6816; SSE2-NEXT: movb %al, 12(%rdi) 6817; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6818; SSE2-NEXT: andb $1, %al 6819; SSE2-NEXT: movb %al, 10(%rdi) 6820; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6821; SSE2-NEXT: andb $1, %al 6822; SSE2-NEXT: movb %al, 8(%rdi) 6823; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6824; SSE2-NEXT: andb $1, %al 6825; SSE2-NEXT: movb %al, 6(%rdi) 6826; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6827; SSE2-NEXT: andb $1, %al 6828; SSE2-NEXT: movb %al, 4(%rdi) 6829; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6830; SSE2-NEXT: andb $1, %al 6831; SSE2-NEXT: movb %al, 2(%rdi) 6832; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6833; SSE2-NEXT: andb $1, %al 6834; SSE2-NEXT: movb %al, (%rdi) 6835; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6836; SSE2-NEXT: andb $1, %al 6837; SSE2-NEXT: movb %al, 14(%rdi) 6838; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6839; SSE2-NEXT: andb $1, %al 6840; SSE2-NEXT: movb %al, 12(%rdi) 6841; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6842; SSE2-NEXT: andb $1, %al 6843; SSE2-NEXT: movb %al, 10(%rdi) 6844; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6845; SSE2-NEXT: andb $1, %al 6846; SSE2-NEXT: movb %al, 8(%rdi) 6847; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6848; SSE2-NEXT: andb $1, %al 6849; SSE2-NEXT: movb %al, 6(%rdi) 6850; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6851; SSE2-NEXT: andb $1, %al 6852; SSE2-NEXT: movb %al, 4(%rdi) 6853; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6854; SSE2-NEXT: andb $1, %al 6855; SSE2-NEXT: movb %al, 2(%rdi) 6856; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6857; SSE2-NEXT: andb $1, %al 6858; SSE2-NEXT: movb %al, (%rdi) 6859; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6860; SSE2-NEXT: andb $1, %al 6861; SSE2-NEXT: movb %al, 14(%rdi) 6862; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6863; SSE2-NEXT: andb $1, %al 6864; SSE2-NEXT: movb %al, 12(%rdi) 6865; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6866; SSE2-NEXT: andb $1, %al 6867; SSE2-NEXT: movb %al, 10(%rdi) 6868; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6869; SSE2-NEXT: andb $1, %al 6870; SSE2-NEXT: movb %al, 8(%rdi) 6871; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6872; SSE2-NEXT: andb $1, %al 6873; SSE2-NEXT: movb %al, 6(%rdi) 6874; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6875; SSE2-NEXT: andb $1, %al 6876; SSE2-NEXT: movb %al, 4(%rdi) 6877; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6878; SSE2-NEXT: andb $1, %al 6879; SSE2-NEXT: movb %al, 2(%rdi) 6880; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6881; SSE2-NEXT: andb $1, %al 6882; SSE2-NEXT: movb %al, (%rdi) 6883; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6884; SSE2-NEXT: andb $1, %al 6885; SSE2-NEXT: movb %al, 14(%rdi) 6886; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6887; SSE2-NEXT: andb $1, %al 6888; SSE2-NEXT: movb %al, 12(%rdi) 6889; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6890; SSE2-NEXT: andb $1, %al 6891; SSE2-NEXT: movb %al, 10(%rdi) 6892; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6893; SSE2-NEXT: andb $1, %al 6894; SSE2-NEXT: movb %al, 8(%rdi) 6895; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6896; SSE2-NEXT: andb $1, %al 6897; SSE2-NEXT: movb %al, 6(%rdi) 6898; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6899; SSE2-NEXT: andb $1, %al 6900; SSE2-NEXT: movb %al, 4(%rdi) 6901; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6902; SSE2-NEXT: andb $1, %al 6903; SSE2-NEXT: movb %al, 2(%rdi) 6904; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6905; SSE2-NEXT: andb $1, %al 6906; SSE2-NEXT: movb %al, (%rdi) 6907; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6908; SSE2-NEXT: andb $1, %al 6909; SSE2-NEXT: movb %al, 14(%rdi) 6910; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6911; SSE2-NEXT: andb $1, %al 6912; SSE2-NEXT: movb %al, 12(%rdi) 6913; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6914; SSE2-NEXT: andb $1, %al 6915; SSE2-NEXT: movb %al, 10(%rdi) 6916; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6917; SSE2-NEXT: andb $1, %al 6918; SSE2-NEXT: movb %al, 8(%rdi) 6919; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6920; SSE2-NEXT: andb $1, %al 6921; SSE2-NEXT: movb %al, 6(%rdi) 6922; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6923; SSE2-NEXT: andb $1, %al 6924; SSE2-NEXT: movb %al, 4(%rdi) 6925; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6926; SSE2-NEXT: andb $1, %al 6927; SSE2-NEXT: movb %al, 2(%rdi) 6928; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6929; SSE2-NEXT: andb $1, %al 6930; SSE2-NEXT: movb %al, (%rdi) 6931; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6932; SSE2-NEXT: andb $1, %al 6933; SSE2-NEXT: movb %al, 14(%rdi) 6934; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6935; SSE2-NEXT: andb $1, %al 6936; SSE2-NEXT: movb %al, 12(%rdi) 6937; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6938; SSE2-NEXT: andb $1, %al 6939; SSE2-NEXT: movb %al, 10(%rdi) 6940; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6941; SSE2-NEXT: andb $1, %al 6942; SSE2-NEXT: movb %al, 8(%rdi) 6943; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6944; SSE2-NEXT: andb $1, %al 6945; SSE2-NEXT: movb %al, 6(%rdi) 6946; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6947; SSE2-NEXT: andb $1, %al 6948; SSE2-NEXT: movb %al, 4(%rdi) 6949; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6950; SSE2-NEXT: andb $1, %al 6951; SSE2-NEXT: movb %al, 2(%rdi) 6952; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6953; SSE2-NEXT: andb $1, %al 6954; SSE2-NEXT: movb %al, (%rdi) 6955; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6956; SSE2-NEXT: andb $1, %al 6957; SSE2-NEXT: movb %al, 14(%rdi) 6958; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6959; SSE2-NEXT: andb $1, %al 6960; SSE2-NEXT: movb %al, 12(%rdi) 6961; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6962; SSE2-NEXT: andb $1, %al 6963; SSE2-NEXT: movb %al, 10(%rdi) 6964; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6965; SSE2-NEXT: andb $1, %al 6966; SSE2-NEXT: movb %al, 8(%rdi) 6967; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6968; SSE2-NEXT: andb $1, %al 6969; SSE2-NEXT: movb %al, 6(%rdi) 6970; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6971; SSE2-NEXT: andb $1, %al 6972; SSE2-NEXT: movb %al, 4(%rdi) 6973; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6974; SSE2-NEXT: andb $1, %al 6975; SSE2-NEXT: movb %al, 2(%rdi) 6976; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6977; SSE2-NEXT: andb $1, %al 6978; SSE2-NEXT: movb %al, (%rdi) 6979; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6980; SSE2-NEXT: andb $1, %al 6981; SSE2-NEXT: movb %al, 14(%rdi) 6982; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6983; SSE2-NEXT: andb $1, %al 6984; SSE2-NEXT: movb %al, 12(%rdi) 6985; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6986; SSE2-NEXT: andb $1, %al 6987; SSE2-NEXT: movb %al, 10(%rdi) 6988; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6989; SSE2-NEXT: andb $1, %al 6990; SSE2-NEXT: movb %al, 8(%rdi) 6991; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6992; SSE2-NEXT: andb $1, %al 6993; SSE2-NEXT: movb %al, 6(%rdi) 6994; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6995; SSE2-NEXT: andb $1, %al 6996; SSE2-NEXT: movb %al, 4(%rdi) 6997; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6998; SSE2-NEXT: andb $1, %al 6999; SSE2-NEXT: movb %al, 2(%rdi) 7000; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7001; SSE2-NEXT: andb $1, %al 7002; SSE2-NEXT: movb %al, (%rdi) 7003; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7004; SSE2-NEXT: andb $1, %al 7005; SSE2-NEXT: movb %al, 14(%rdi) 7006; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7007; SSE2-NEXT: andb $1, %al 7008; SSE2-NEXT: movb %al, 12(%rdi) 7009; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7010; SSE2-NEXT: andb $1, %al 7011; SSE2-NEXT: movb %al, 10(%rdi) 7012; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7013; SSE2-NEXT: andb $1, %al 7014; SSE2-NEXT: movb %al, 8(%rdi) 7015; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7016; SSE2-NEXT: andb $1, %al 7017; SSE2-NEXT: movb %al, 6(%rdi) 7018; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7019; SSE2-NEXT: andb $1, %al 7020; SSE2-NEXT: movb %al, 4(%rdi) 7021; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7022; SSE2-NEXT: andb $1, %al 7023; SSE2-NEXT: movb %al, 2(%rdi) 7024; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7025; SSE2-NEXT: andb $1, %al 7026; SSE2-NEXT: movb %al, (%rdi) 7027; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7028; SSE2-NEXT: andb $1, %al 7029; SSE2-NEXT: movb %al, 14(%rdi) 7030; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7031; SSE2-NEXT: andb $1, %al 7032; SSE2-NEXT: movb %al, 12(%rdi) 7033; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7034; SSE2-NEXT: andb $1, %al 7035; SSE2-NEXT: movb %al, 10(%rdi) 7036; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7037; SSE2-NEXT: andb $1, %al 7038; SSE2-NEXT: movb %al, 8(%rdi) 7039; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7040; SSE2-NEXT: andb $1, %al 7041; SSE2-NEXT: movb %al, 6(%rdi) 7042; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7043; SSE2-NEXT: andb $1, %al 7044; SSE2-NEXT: movb %al, 4(%rdi) 7045; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7046; SSE2-NEXT: andb $1, %al 7047; SSE2-NEXT: movb %al, 2(%rdi) 7048; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7049; SSE2-NEXT: andb $1, %al 7050; SSE2-NEXT: movb %al, (%rdi) 7051; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7052; SSE2-NEXT: andb $1, %al 7053; SSE2-NEXT: movb %al, 14(%rdi) 7054; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7055; SSE2-NEXT: andb $1, %al 7056; SSE2-NEXT: movb %al, 12(%rdi) 7057; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7058; SSE2-NEXT: andb $1, %al 7059; SSE2-NEXT: movb %al, 10(%rdi) 7060; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7061; SSE2-NEXT: andb $1, %al 7062; SSE2-NEXT: movb %al, 8(%rdi) 7063; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7064; SSE2-NEXT: andb $1, %al 7065; SSE2-NEXT: movb %al, 6(%rdi) 7066; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7067; SSE2-NEXT: andb $1, %al 7068; SSE2-NEXT: movb %al, 4(%rdi) 7069; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7070; SSE2-NEXT: andb $1, %al 7071; SSE2-NEXT: movb %al, 2(%rdi) 7072; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7073; SSE2-NEXT: andb $1, %al 7074; SSE2-NEXT: movb %al, (%rdi) 7075; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7076; SSE2-NEXT: andb $1, %al 7077; SSE2-NEXT: movb %al, 14(%rdi) 7078; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7079; SSE2-NEXT: andb $1, %al 7080; SSE2-NEXT: movb %al, 12(%rdi) 7081; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7082; SSE2-NEXT: andb $1, %al 7083; SSE2-NEXT: movb %al, 10(%rdi) 7084; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7085; SSE2-NEXT: andb $1, %al 7086; SSE2-NEXT: movb %al, 8(%rdi) 7087; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7088; SSE2-NEXT: andb $1, %al 7089; SSE2-NEXT: movb %al, 6(%rdi) 7090; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7091; SSE2-NEXT: andb $1, %al 7092; SSE2-NEXT: movb %al, 4(%rdi) 7093; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7094; SSE2-NEXT: andb $1, %al 7095; SSE2-NEXT: movb %al, 2(%rdi) 7096; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7097; SSE2-NEXT: andb $1, %al 7098; SSE2-NEXT: movb %al, (%rdi) 7099; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7100; SSE2-NEXT: andb $1, %al 7101; SSE2-NEXT: movb %al, 14(%rdi) 7102; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7103; SSE2-NEXT: andb $1, %al 7104; SSE2-NEXT: movb %al, 12(%rdi) 7105; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7106; SSE2-NEXT: andb $1, %al 7107; SSE2-NEXT: movb %al, 10(%rdi) 7108; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7109; SSE2-NEXT: andb $1, %al 7110; SSE2-NEXT: movb %al, 8(%rdi) 7111; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7112; SSE2-NEXT: andb $1, %al 7113; SSE2-NEXT: movb %al, 6(%rdi) 7114; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7115; SSE2-NEXT: andb $1, %al 7116; SSE2-NEXT: movb %al, 4(%rdi) 7117; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7118; SSE2-NEXT: andb $1, %al 7119; SSE2-NEXT: movb %al, 2(%rdi) 7120; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7121; SSE2-NEXT: andb $1, %al 7122; SSE2-NEXT: movb %al, (%rdi) 7123; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7124; SSE2-NEXT: andb $1, %al 7125; SSE2-NEXT: movb %al, 14(%rdi) 7126; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7127; SSE2-NEXT: andb $1, %al 7128; SSE2-NEXT: movb %al, 12(%rdi) 7129; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7130; SSE2-NEXT: andb $1, %al 7131; SSE2-NEXT: movb %al, 10(%rdi) 7132; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7133; SSE2-NEXT: andb $1, %al 7134; SSE2-NEXT: movb %al, 8(%rdi) 7135; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7136; SSE2-NEXT: andb $1, %al 7137; SSE2-NEXT: movb %al, 6(%rdi) 7138; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7139; SSE2-NEXT: andb $1, %al 7140; SSE2-NEXT: movb %al, 4(%rdi) 7141; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7142; SSE2-NEXT: andb $1, %al 7143; SSE2-NEXT: movb %al, 2(%rdi) 7144; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7145; SSE2-NEXT: andb $1, %al 7146; SSE2-NEXT: movb %al, (%rdi) 7147; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7148; SSE2-NEXT: andb $1, %al 7149; SSE2-NEXT: movb %al, 14(%rdi) 7150; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7151; SSE2-NEXT: andb $1, %al 7152; SSE2-NEXT: movb %al, 12(%rdi) 7153; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7154; SSE2-NEXT: andb $1, %al 7155; SSE2-NEXT: movb %al, 10(%rdi) 7156; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7157; SSE2-NEXT: andb $1, %al 7158; SSE2-NEXT: movb %al, 8(%rdi) 7159; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7160; SSE2-NEXT: andb $1, %al 7161; SSE2-NEXT: movb %al, 6(%rdi) 7162; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7163; SSE2-NEXT: andb $1, %al 7164; SSE2-NEXT: movb %al, 4(%rdi) 7165; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7166; SSE2-NEXT: andb $1, %al 7167; SSE2-NEXT: movb %al, 2(%rdi) 7168; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7169; SSE2-NEXT: andb $1, %al 7170; SSE2-NEXT: movb %al, (%rdi) 7171; SSE2-NEXT: movq %rdi, %rax 7172; SSE2-NEXT: popq %rcx 7173; SSE2-NEXT: retq 7174; 7175; SSE42-LABEL: test_cmp_v128i8: 7176; SSE42: # BB#0: 7177; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm0 7178; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm1 7179; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm2 7180; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm3 7181; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm4 7182; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm5 7183; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm6 7184; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm7 7185; SSE42-NEXT: pextrb $15, %xmm7, %eax 7186; SSE42-NEXT: andb $1, %al 7187; SSE42-NEXT: movb %al, 14(%rdi) 7188; SSE42-NEXT: pextrb $14, %xmm7, %eax 7189; SSE42-NEXT: andb $1, %al 7190; SSE42-NEXT: movb %al, 14(%rdi) 7191; SSE42-NEXT: pextrb $13, %xmm7, %eax 7192; SSE42-NEXT: andb $1, %al 7193; SSE42-NEXT: movb %al, 14(%rdi) 7194; SSE42-NEXT: pextrb $12, %xmm7, %eax 7195; SSE42-NEXT: andb $1, %al 7196; SSE42-NEXT: movb %al, 14(%rdi) 7197; SSE42-NEXT: pextrb $11, %xmm7, %eax 7198; SSE42-NEXT: andb $1, %al 7199; SSE42-NEXT: movb %al, 14(%rdi) 7200; SSE42-NEXT: pextrb $10, %xmm7, %eax 7201; SSE42-NEXT: andb $1, %al 7202; SSE42-NEXT: movb %al, 14(%rdi) 7203; SSE42-NEXT: pextrb $9, %xmm7, %eax 7204; SSE42-NEXT: andb $1, %al 7205; SSE42-NEXT: movb %al, 14(%rdi) 7206; SSE42-NEXT: pextrb $8, %xmm7, %eax 7207; SSE42-NEXT: andb $1, %al 7208; SSE42-NEXT: movb %al, 14(%rdi) 7209; SSE42-NEXT: pextrb $7, %xmm7, %eax 7210; SSE42-NEXT: andb $1, %al 7211; SSE42-NEXT: movb %al, 14(%rdi) 7212; SSE42-NEXT: pextrb $6, %xmm7, %eax 7213; SSE42-NEXT: andb $1, %al 7214; SSE42-NEXT: movb %al, 14(%rdi) 7215; SSE42-NEXT: pextrb $5, %xmm7, %eax 7216; SSE42-NEXT: andb $1, %al 7217; SSE42-NEXT: movb %al, 14(%rdi) 7218; SSE42-NEXT: pextrb $4, %xmm7, %eax 7219; SSE42-NEXT: andb $1, %al 7220; SSE42-NEXT: movb %al, 14(%rdi) 7221; SSE42-NEXT: pextrb $3, %xmm7, %eax 7222; SSE42-NEXT: andb $1, %al 7223; SSE42-NEXT: movb %al, 14(%rdi) 7224; SSE42-NEXT: pextrb $2, %xmm7, %eax 7225; SSE42-NEXT: andb $1, %al 7226; SSE42-NEXT: movb %al, 14(%rdi) 7227; SSE42-NEXT: pextrb $1, %xmm7, %eax 7228; SSE42-NEXT: andb $1, %al 7229; SSE42-NEXT: movb %al, 14(%rdi) 7230; SSE42-NEXT: pextrb $0, %xmm7, %eax 7231; SSE42-NEXT: andb $1, %al 7232; SSE42-NEXT: movb %al, 14(%rdi) 7233; SSE42-NEXT: pextrb $15, %xmm6, %eax 7234; SSE42-NEXT: andb $1, %al 7235; SSE42-NEXT: movb %al, 12(%rdi) 7236; SSE42-NEXT: pextrb $14, %xmm6, %eax 7237; SSE42-NEXT: andb $1, %al 7238; SSE42-NEXT: movb %al, 12(%rdi) 7239; SSE42-NEXT: pextrb $13, %xmm6, %eax 7240; SSE42-NEXT: andb $1, %al 7241; SSE42-NEXT: movb %al, 12(%rdi) 7242; SSE42-NEXT: pextrb $12, %xmm6, %eax 7243; SSE42-NEXT: andb $1, %al 7244; SSE42-NEXT: movb %al, 12(%rdi) 7245; SSE42-NEXT: pextrb $11, %xmm6, %eax 7246; SSE42-NEXT: andb $1, %al 7247; SSE42-NEXT: movb %al, 12(%rdi) 7248; SSE42-NEXT: pextrb $10, %xmm6, %eax 7249; SSE42-NEXT: andb $1, %al 7250; SSE42-NEXT: movb %al, 12(%rdi) 7251; SSE42-NEXT: pextrb $9, %xmm6, %eax 7252; SSE42-NEXT: andb $1, %al 7253; SSE42-NEXT: movb %al, 12(%rdi) 7254; SSE42-NEXT: pextrb $8, %xmm6, %eax 7255; SSE42-NEXT: andb $1, %al 7256; SSE42-NEXT: movb %al, 12(%rdi) 7257; SSE42-NEXT: pextrb $7, %xmm6, %eax 7258; SSE42-NEXT: andb $1, %al 7259; SSE42-NEXT: movb %al, 12(%rdi) 7260; SSE42-NEXT: pextrb $6, %xmm6, %eax 7261; SSE42-NEXT: andb $1, %al 7262; SSE42-NEXT: movb %al, 12(%rdi) 7263; SSE42-NEXT: pextrb $5, %xmm6, %eax 7264; SSE42-NEXT: andb $1, %al 7265; SSE42-NEXT: movb %al, 12(%rdi) 7266; SSE42-NEXT: pextrb $4, %xmm6, %eax 7267; SSE42-NEXT: andb $1, %al 7268; SSE42-NEXT: movb %al, 12(%rdi) 7269; SSE42-NEXT: pextrb $3, %xmm6, %eax 7270; SSE42-NEXT: andb $1, %al 7271; SSE42-NEXT: movb %al, 12(%rdi) 7272; SSE42-NEXT: pextrb $2, %xmm6, %eax 7273; SSE42-NEXT: andb $1, %al 7274; SSE42-NEXT: movb %al, 12(%rdi) 7275; SSE42-NEXT: pextrb $1, %xmm6, %eax 7276; SSE42-NEXT: andb $1, %al 7277; SSE42-NEXT: movb %al, 12(%rdi) 7278; SSE42-NEXT: pextrb $0, %xmm6, %eax 7279; SSE42-NEXT: andb $1, %al 7280; SSE42-NEXT: movb %al, 12(%rdi) 7281; SSE42-NEXT: pextrb $15, %xmm5, %eax 7282; SSE42-NEXT: andb $1, %al 7283; SSE42-NEXT: movb %al, 10(%rdi) 7284; SSE42-NEXT: pextrb $14, %xmm5, %eax 7285; SSE42-NEXT: andb $1, %al 7286; SSE42-NEXT: movb %al, 10(%rdi) 7287; SSE42-NEXT: pextrb $13, %xmm5, %eax 7288; SSE42-NEXT: andb $1, %al 7289; SSE42-NEXT: movb %al, 10(%rdi) 7290; SSE42-NEXT: pextrb $12, %xmm5, %eax 7291; SSE42-NEXT: andb $1, %al 7292; SSE42-NEXT: movb %al, 10(%rdi) 7293; SSE42-NEXT: pextrb $11, %xmm5, %eax 7294; SSE42-NEXT: andb $1, %al 7295; SSE42-NEXT: movb %al, 10(%rdi) 7296; SSE42-NEXT: pextrb $10, %xmm5, %eax 7297; SSE42-NEXT: andb $1, %al 7298; SSE42-NEXT: movb %al, 10(%rdi) 7299; SSE42-NEXT: pextrb $9, %xmm5, %eax 7300; SSE42-NEXT: andb $1, %al 7301; SSE42-NEXT: movb %al, 10(%rdi) 7302; SSE42-NEXT: pextrb $8, %xmm5, %eax 7303; SSE42-NEXT: andb $1, %al 7304; SSE42-NEXT: movb %al, 10(%rdi) 7305; SSE42-NEXT: pextrb $7, %xmm5, %eax 7306; SSE42-NEXT: andb $1, %al 7307; SSE42-NEXT: movb %al, 10(%rdi) 7308; SSE42-NEXT: pextrb $6, %xmm5, %eax 7309; SSE42-NEXT: andb $1, %al 7310; SSE42-NEXT: movb %al, 10(%rdi) 7311; SSE42-NEXT: pextrb $5, %xmm5, %eax 7312; SSE42-NEXT: andb $1, %al 7313; SSE42-NEXT: movb %al, 10(%rdi) 7314; SSE42-NEXT: pextrb $4, %xmm5, %eax 7315; SSE42-NEXT: andb $1, %al 7316; SSE42-NEXT: movb %al, 10(%rdi) 7317; SSE42-NEXT: pextrb $3, %xmm5, %eax 7318; SSE42-NEXT: andb $1, %al 7319; SSE42-NEXT: movb %al, 10(%rdi) 7320; SSE42-NEXT: pextrb $2, %xmm5, %eax 7321; SSE42-NEXT: andb $1, %al 7322; SSE42-NEXT: movb %al, 10(%rdi) 7323; SSE42-NEXT: pextrb $1, %xmm5, %eax 7324; SSE42-NEXT: andb $1, %al 7325; SSE42-NEXT: movb %al, 10(%rdi) 7326; SSE42-NEXT: pextrb $0, %xmm5, %eax 7327; SSE42-NEXT: andb $1, %al 7328; SSE42-NEXT: movb %al, 10(%rdi) 7329; SSE42-NEXT: pextrb $15, %xmm4, %eax 7330; SSE42-NEXT: andb $1, %al 7331; SSE42-NEXT: movb %al, 8(%rdi) 7332; SSE42-NEXT: pextrb $14, %xmm4, %eax 7333; SSE42-NEXT: andb $1, %al 7334; SSE42-NEXT: movb %al, 8(%rdi) 7335; SSE42-NEXT: pextrb $13, %xmm4, %eax 7336; SSE42-NEXT: andb $1, %al 7337; SSE42-NEXT: movb %al, 8(%rdi) 7338; SSE42-NEXT: pextrb $12, %xmm4, %eax 7339; SSE42-NEXT: andb $1, %al 7340; SSE42-NEXT: movb %al, 8(%rdi) 7341; SSE42-NEXT: pextrb $11, %xmm4, %eax 7342; SSE42-NEXT: andb $1, %al 7343; SSE42-NEXT: movb %al, 8(%rdi) 7344; SSE42-NEXT: pextrb $10, %xmm4, %eax 7345; SSE42-NEXT: andb $1, %al 7346; SSE42-NEXT: movb %al, 8(%rdi) 7347; SSE42-NEXT: pextrb $9, %xmm4, %eax 7348; SSE42-NEXT: andb $1, %al 7349; SSE42-NEXT: movb %al, 8(%rdi) 7350; SSE42-NEXT: pextrb $8, %xmm4, %eax 7351; SSE42-NEXT: andb $1, %al 7352; SSE42-NEXT: movb %al, 8(%rdi) 7353; SSE42-NEXT: pextrb $7, %xmm4, %eax 7354; SSE42-NEXT: andb $1, %al 7355; SSE42-NEXT: movb %al, 8(%rdi) 7356; SSE42-NEXT: pextrb $6, %xmm4, %eax 7357; SSE42-NEXT: andb $1, %al 7358; SSE42-NEXT: movb %al, 8(%rdi) 7359; SSE42-NEXT: pextrb $5, %xmm4, %eax 7360; SSE42-NEXT: andb $1, %al 7361; SSE42-NEXT: movb %al, 8(%rdi) 7362; SSE42-NEXT: pextrb $4, %xmm4, %eax 7363; SSE42-NEXT: andb $1, %al 7364; SSE42-NEXT: movb %al, 8(%rdi) 7365; SSE42-NEXT: pextrb $3, %xmm4, %eax 7366; SSE42-NEXT: andb $1, %al 7367; SSE42-NEXT: movb %al, 8(%rdi) 7368; SSE42-NEXT: pextrb $2, %xmm4, %eax 7369; SSE42-NEXT: andb $1, %al 7370; SSE42-NEXT: movb %al, 8(%rdi) 7371; SSE42-NEXT: pextrb $1, %xmm4, %eax 7372; SSE42-NEXT: andb $1, %al 7373; SSE42-NEXT: movb %al, 8(%rdi) 7374; SSE42-NEXT: pextrb $0, %xmm4, %eax 7375; SSE42-NEXT: andb $1, %al 7376; SSE42-NEXT: movb %al, 8(%rdi) 7377; SSE42-NEXT: pextrb $15, %xmm3, %eax 7378; SSE42-NEXT: andb $1, %al 7379; SSE42-NEXT: movb %al, 6(%rdi) 7380; SSE42-NEXT: pextrb $14, %xmm3, %eax 7381; SSE42-NEXT: andb $1, %al 7382; SSE42-NEXT: movb %al, 6(%rdi) 7383; SSE42-NEXT: pextrb $13, %xmm3, %eax 7384; SSE42-NEXT: andb $1, %al 7385; SSE42-NEXT: movb %al, 6(%rdi) 7386; SSE42-NEXT: pextrb $12, %xmm3, %eax 7387; SSE42-NEXT: andb $1, %al 7388; SSE42-NEXT: movb %al, 6(%rdi) 7389; SSE42-NEXT: pextrb $11, %xmm3, %eax 7390; SSE42-NEXT: andb $1, %al 7391; SSE42-NEXT: movb %al, 6(%rdi) 7392; SSE42-NEXT: pextrb $10, %xmm3, %eax 7393; SSE42-NEXT: andb $1, %al 7394; SSE42-NEXT: movb %al, 6(%rdi) 7395; SSE42-NEXT: pextrb $9, %xmm3, %eax 7396; SSE42-NEXT: andb $1, %al 7397; SSE42-NEXT: movb %al, 6(%rdi) 7398; SSE42-NEXT: pextrb $8, %xmm3, %eax 7399; SSE42-NEXT: andb $1, %al 7400; SSE42-NEXT: movb %al, 6(%rdi) 7401; SSE42-NEXT: pextrb $7, %xmm3, %eax 7402; SSE42-NEXT: andb $1, %al 7403; SSE42-NEXT: movb %al, 6(%rdi) 7404; SSE42-NEXT: pextrb $6, %xmm3, %eax 7405; SSE42-NEXT: andb $1, %al 7406; SSE42-NEXT: movb %al, 6(%rdi) 7407; SSE42-NEXT: pextrb $5, %xmm3, %eax 7408; SSE42-NEXT: andb $1, %al 7409; SSE42-NEXT: movb %al, 6(%rdi) 7410; SSE42-NEXT: pextrb $4, %xmm3, %eax 7411; SSE42-NEXT: andb $1, %al 7412; SSE42-NEXT: movb %al, 6(%rdi) 7413; SSE42-NEXT: pextrb $3, %xmm3, %eax 7414; SSE42-NEXT: andb $1, %al 7415; SSE42-NEXT: movb %al, 6(%rdi) 7416; SSE42-NEXT: pextrb $2, %xmm3, %eax 7417; SSE42-NEXT: andb $1, %al 7418; SSE42-NEXT: movb %al, 6(%rdi) 7419; SSE42-NEXT: pextrb $1, %xmm3, %eax 7420; SSE42-NEXT: andb $1, %al 7421; SSE42-NEXT: movb %al, 6(%rdi) 7422; SSE42-NEXT: pextrb $0, %xmm3, %eax 7423; SSE42-NEXT: andb $1, %al 7424; SSE42-NEXT: movb %al, 6(%rdi) 7425; SSE42-NEXT: pextrb $15, %xmm2, %eax 7426; SSE42-NEXT: andb $1, %al 7427; SSE42-NEXT: movb %al, 4(%rdi) 7428; SSE42-NEXT: pextrb $14, %xmm2, %eax 7429; SSE42-NEXT: andb $1, %al 7430; SSE42-NEXT: movb %al, 4(%rdi) 7431; SSE42-NEXT: pextrb $13, %xmm2, %eax 7432; SSE42-NEXT: andb $1, %al 7433; SSE42-NEXT: movb %al, 4(%rdi) 7434; SSE42-NEXT: pextrb $12, %xmm2, %eax 7435; SSE42-NEXT: andb $1, %al 7436; SSE42-NEXT: movb %al, 4(%rdi) 7437; SSE42-NEXT: pextrb $11, %xmm2, %eax 7438; SSE42-NEXT: andb $1, %al 7439; SSE42-NEXT: movb %al, 4(%rdi) 7440; SSE42-NEXT: pextrb $10, %xmm2, %eax 7441; SSE42-NEXT: andb $1, %al 7442; SSE42-NEXT: movb %al, 4(%rdi) 7443; SSE42-NEXT: pextrb $9, %xmm2, %eax 7444; SSE42-NEXT: andb $1, %al 7445; SSE42-NEXT: movb %al, 4(%rdi) 7446; SSE42-NEXT: pextrb $8, %xmm2, %eax 7447; SSE42-NEXT: andb $1, %al 7448; SSE42-NEXT: movb %al, 4(%rdi) 7449; SSE42-NEXT: pextrb $7, %xmm2, %eax 7450; SSE42-NEXT: andb $1, %al 7451; SSE42-NEXT: movb %al, 4(%rdi) 7452; SSE42-NEXT: pextrb $6, %xmm2, %eax 7453; SSE42-NEXT: andb $1, %al 7454; SSE42-NEXT: movb %al, 4(%rdi) 7455; SSE42-NEXT: pextrb $5, %xmm2, %eax 7456; SSE42-NEXT: andb $1, %al 7457; SSE42-NEXT: movb %al, 4(%rdi) 7458; SSE42-NEXT: pextrb $4, %xmm2, %eax 7459; SSE42-NEXT: andb $1, %al 7460; SSE42-NEXT: movb %al, 4(%rdi) 7461; SSE42-NEXT: pextrb $3, %xmm2, %eax 7462; SSE42-NEXT: andb $1, %al 7463; SSE42-NEXT: movb %al, 4(%rdi) 7464; SSE42-NEXT: pextrb $2, %xmm2, %eax 7465; SSE42-NEXT: andb $1, %al 7466; SSE42-NEXT: movb %al, 4(%rdi) 7467; SSE42-NEXT: pextrb $1, %xmm2, %eax 7468; SSE42-NEXT: andb $1, %al 7469; SSE42-NEXT: movb %al, 4(%rdi) 7470; SSE42-NEXT: pextrb $0, %xmm2, %eax 7471; SSE42-NEXT: andb $1, %al 7472; SSE42-NEXT: movb %al, 4(%rdi) 7473; SSE42-NEXT: pextrb $15, %xmm1, %eax 7474; SSE42-NEXT: andb $1, %al 7475; SSE42-NEXT: movb %al, 2(%rdi) 7476; SSE42-NEXT: pextrb $14, %xmm1, %eax 7477; SSE42-NEXT: andb $1, %al 7478; SSE42-NEXT: movb %al, 2(%rdi) 7479; SSE42-NEXT: pextrb $13, %xmm1, %eax 7480; SSE42-NEXT: andb $1, %al 7481; SSE42-NEXT: movb %al, 2(%rdi) 7482; SSE42-NEXT: pextrb $12, %xmm1, %eax 7483; SSE42-NEXT: andb $1, %al 7484; SSE42-NEXT: movb %al, 2(%rdi) 7485; SSE42-NEXT: pextrb $11, %xmm1, %eax 7486; SSE42-NEXT: andb $1, %al 7487; SSE42-NEXT: movb %al, 2(%rdi) 7488; SSE42-NEXT: pextrb $10, %xmm1, %eax 7489; SSE42-NEXT: andb $1, %al 7490; SSE42-NEXT: movb %al, 2(%rdi) 7491; SSE42-NEXT: pextrb $9, %xmm1, %eax 7492; SSE42-NEXT: andb $1, %al 7493; SSE42-NEXT: movb %al, 2(%rdi) 7494; SSE42-NEXT: pextrb $8, %xmm1, %eax 7495; SSE42-NEXT: andb $1, %al 7496; SSE42-NEXT: movb %al, 2(%rdi) 7497; SSE42-NEXT: pextrb $7, %xmm1, %eax 7498; SSE42-NEXT: andb $1, %al 7499; SSE42-NEXT: movb %al, 2(%rdi) 7500; SSE42-NEXT: pextrb $6, %xmm1, %eax 7501; SSE42-NEXT: andb $1, %al 7502; SSE42-NEXT: movb %al, 2(%rdi) 7503; SSE42-NEXT: pextrb $5, %xmm1, %eax 7504; SSE42-NEXT: andb $1, %al 7505; SSE42-NEXT: movb %al, 2(%rdi) 7506; SSE42-NEXT: pextrb $4, %xmm1, %eax 7507; SSE42-NEXT: andb $1, %al 7508; SSE42-NEXT: movb %al, 2(%rdi) 7509; SSE42-NEXT: pextrb $3, %xmm1, %eax 7510; SSE42-NEXT: andb $1, %al 7511; SSE42-NEXT: movb %al, 2(%rdi) 7512; SSE42-NEXT: pextrb $2, %xmm1, %eax 7513; SSE42-NEXT: andb $1, %al 7514; SSE42-NEXT: movb %al, 2(%rdi) 7515; SSE42-NEXT: pextrb $1, %xmm1, %eax 7516; SSE42-NEXT: andb $1, %al 7517; SSE42-NEXT: movb %al, 2(%rdi) 7518; SSE42-NEXT: pextrb $0, %xmm1, %eax 7519; SSE42-NEXT: andb $1, %al 7520; SSE42-NEXT: movb %al, 2(%rdi) 7521; SSE42-NEXT: pextrb $15, %xmm0, %eax 7522; SSE42-NEXT: andb $1, %al 7523; SSE42-NEXT: movb %al, (%rdi) 7524; SSE42-NEXT: pextrb $14, %xmm0, %eax 7525; SSE42-NEXT: andb $1, %al 7526; SSE42-NEXT: movb %al, (%rdi) 7527; SSE42-NEXT: pextrb $13, %xmm0, %eax 7528; SSE42-NEXT: andb $1, %al 7529; SSE42-NEXT: movb %al, (%rdi) 7530; SSE42-NEXT: pextrb $12, %xmm0, %eax 7531; SSE42-NEXT: andb $1, %al 7532; SSE42-NEXT: movb %al, (%rdi) 7533; SSE42-NEXT: pextrb $11, %xmm0, %eax 7534; SSE42-NEXT: andb $1, %al 7535; SSE42-NEXT: movb %al, (%rdi) 7536; SSE42-NEXT: pextrb $10, %xmm0, %eax 7537; SSE42-NEXT: andb $1, %al 7538; SSE42-NEXT: movb %al, (%rdi) 7539; SSE42-NEXT: pextrb $9, %xmm0, %eax 7540; SSE42-NEXT: andb $1, %al 7541; SSE42-NEXT: movb %al, (%rdi) 7542; SSE42-NEXT: pextrb $8, %xmm0, %eax 7543; SSE42-NEXT: andb $1, %al 7544; SSE42-NEXT: movb %al, (%rdi) 7545; SSE42-NEXT: pextrb $7, %xmm0, %eax 7546; SSE42-NEXT: andb $1, %al 7547; SSE42-NEXT: movb %al, (%rdi) 7548; SSE42-NEXT: pextrb $6, %xmm0, %eax 7549; SSE42-NEXT: andb $1, %al 7550; SSE42-NEXT: movb %al, (%rdi) 7551; SSE42-NEXT: pextrb $5, %xmm0, %eax 7552; SSE42-NEXT: andb $1, %al 7553; SSE42-NEXT: movb %al, (%rdi) 7554; SSE42-NEXT: pextrb $4, %xmm0, %eax 7555; SSE42-NEXT: andb $1, %al 7556; SSE42-NEXT: movb %al, (%rdi) 7557; SSE42-NEXT: pextrb $3, %xmm0, %eax 7558; SSE42-NEXT: andb $1, %al 7559; SSE42-NEXT: movb %al, (%rdi) 7560; SSE42-NEXT: pextrb $2, %xmm0, %eax 7561; SSE42-NEXT: andb $1, %al 7562; SSE42-NEXT: movb %al, (%rdi) 7563; SSE42-NEXT: pextrb $1, %xmm0, %eax 7564; SSE42-NEXT: andb $1, %al 7565; SSE42-NEXT: movb %al, (%rdi) 7566; SSE42-NEXT: pextrb $0, %xmm0, %eax 7567; SSE42-NEXT: andb $1, %al 7568; SSE42-NEXT: movb %al, (%rdi) 7569; SSE42-NEXT: movq %rdi, %rax 7570; SSE42-NEXT: retq 7571; 7572; AVX1-LABEL: test_cmp_v128i8: 7573; AVX1: # BB#0: 7574; AVX1-NEXT: vpcmpgtb %xmm4, %xmm0, %xmm8 7575; AVX1-NEXT: vextractf128 $1, %ymm4, %xmm4 7576; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 7577; AVX1-NEXT: vpcmpgtb %xmm4, %xmm0, %xmm0 7578; AVX1-NEXT: vpcmpgtb %xmm5, %xmm1, %xmm4 7579; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm5 7580; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1 7581; AVX1-NEXT: vpcmpgtb %xmm5, %xmm1, %xmm1 7582; AVX1-NEXT: vpcmpgtb %xmm6, %xmm2, %xmm5 7583; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm6 7584; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm2 7585; AVX1-NEXT: vpcmpgtb %xmm6, %xmm2, %xmm2 7586; AVX1-NEXT: vpcmpgtb %xmm7, %xmm3, %xmm6 7587; AVX1-NEXT: vextractf128 $1, %ymm7, %xmm7 7588; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm3 7589; AVX1-NEXT: vpcmpgtb %xmm7, %xmm3, %xmm3 7590; AVX1-NEXT: vpextrb $15, %xmm3, %eax 7591; AVX1-NEXT: andb $1, %al 7592; AVX1-NEXT: movb %al, 12(%rdi) 7593; AVX1-NEXT: vpextrb $14, %xmm3, %eax 7594; AVX1-NEXT: andb $1, %al 7595; AVX1-NEXT: movb %al, 12(%rdi) 7596; AVX1-NEXT: vpextrb $13, %xmm3, %eax 7597; AVX1-NEXT: andb $1, %al 7598; AVX1-NEXT: movb %al, 12(%rdi) 7599; AVX1-NEXT: vpextrb $12, %xmm3, %eax 7600; AVX1-NEXT: andb $1, %al 7601; AVX1-NEXT: movb %al, 12(%rdi) 7602; AVX1-NEXT: vpextrb $11, %xmm3, %eax 7603; AVX1-NEXT: andb $1, %al 7604; AVX1-NEXT: movb %al, 12(%rdi) 7605; AVX1-NEXT: vpextrb $10, %xmm3, %eax 7606; AVX1-NEXT: andb $1, %al 7607; AVX1-NEXT: movb %al, 12(%rdi) 7608; AVX1-NEXT: vpextrb $9, %xmm3, %eax 7609; AVX1-NEXT: andb $1, %al 7610; AVX1-NEXT: movb %al, 12(%rdi) 7611; AVX1-NEXT: vpextrb $8, %xmm3, %eax 7612; AVX1-NEXT: andb $1, %al 7613; AVX1-NEXT: movb %al, 12(%rdi) 7614; AVX1-NEXT: vpextrb $7, %xmm3, %eax 7615; AVX1-NEXT: andb $1, %al 7616; AVX1-NEXT: movb %al, 12(%rdi) 7617; AVX1-NEXT: vpextrb $6, %xmm3, %eax 7618; AVX1-NEXT: andb $1, %al 7619; AVX1-NEXT: movb %al, 12(%rdi) 7620; AVX1-NEXT: vpextrb $5, %xmm3, %eax 7621; AVX1-NEXT: andb $1, %al 7622; AVX1-NEXT: movb %al, 12(%rdi) 7623; AVX1-NEXT: vpextrb $4, %xmm3, %eax 7624; AVX1-NEXT: andb $1, %al 7625; AVX1-NEXT: movb %al, 12(%rdi) 7626; AVX1-NEXT: vpextrb $3, %xmm3, %eax 7627; AVX1-NEXT: andb $1, %al 7628; AVX1-NEXT: movb %al, 12(%rdi) 7629; AVX1-NEXT: vpextrb $2, %xmm3, %eax 7630; AVX1-NEXT: andb $1, %al 7631; AVX1-NEXT: movb %al, 12(%rdi) 7632; AVX1-NEXT: vpextrb $1, %xmm3, %eax 7633; AVX1-NEXT: andb $1, %al 7634; AVX1-NEXT: movb %al, 12(%rdi) 7635; AVX1-NEXT: vpextrb $0, %xmm3, %eax 7636; AVX1-NEXT: andb $1, %al 7637; AVX1-NEXT: movb %al, 12(%rdi) 7638; AVX1-NEXT: vpextrb $15, %xmm6, %eax 7639; AVX1-NEXT: andb $1, %al 7640; AVX1-NEXT: movb %al, 12(%rdi) 7641; AVX1-NEXT: vpextrb $14, %xmm6, %eax 7642; AVX1-NEXT: andb $1, %al 7643; AVX1-NEXT: movb %al, 12(%rdi) 7644; AVX1-NEXT: vpextrb $13, %xmm6, %eax 7645; AVX1-NEXT: andb $1, %al 7646; AVX1-NEXT: movb %al, 12(%rdi) 7647; AVX1-NEXT: vpextrb $12, %xmm6, %eax 7648; AVX1-NEXT: andb $1, %al 7649; AVX1-NEXT: movb %al, 12(%rdi) 7650; AVX1-NEXT: vpextrb $11, %xmm6, %eax 7651; AVX1-NEXT: andb $1, %al 7652; AVX1-NEXT: movb %al, 12(%rdi) 7653; AVX1-NEXT: vpextrb $10, %xmm6, %eax 7654; AVX1-NEXT: andb $1, %al 7655; AVX1-NEXT: movb %al, 12(%rdi) 7656; AVX1-NEXT: vpextrb $9, %xmm6, %eax 7657; AVX1-NEXT: andb $1, %al 7658; AVX1-NEXT: movb %al, 12(%rdi) 7659; AVX1-NEXT: vpextrb $8, %xmm6, %eax 7660; AVX1-NEXT: andb $1, %al 7661; AVX1-NEXT: movb %al, 12(%rdi) 7662; AVX1-NEXT: vpextrb $7, %xmm6, %eax 7663; AVX1-NEXT: andb $1, %al 7664; AVX1-NEXT: movb %al, 12(%rdi) 7665; AVX1-NEXT: vpextrb $6, %xmm6, %eax 7666; AVX1-NEXT: andb $1, %al 7667; AVX1-NEXT: movb %al, 12(%rdi) 7668; AVX1-NEXT: vpextrb $5, %xmm6, %eax 7669; AVX1-NEXT: andb $1, %al 7670; AVX1-NEXT: movb %al, 12(%rdi) 7671; AVX1-NEXT: vpextrb $4, %xmm6, %eax 7672; AVX1-NEXT: andb $1, %al 7673; AVX1-NEXT: movb %al, 12(%rdi) 7674; AVX1-NEXT: vpextrb $3, %xmm6, %eax 7675; AVX1-NEXT: andb $1, %al 7676; AVX1-NEXT: movb %al, 12(%rdi) 7677; AVX1-NEXT: vpextrb $2, %xmm6, %eax 7678; AVX1-NEXT: andb $1, %al 7679; AVX1-NEXT: movb %al, 12(%rdi) 7680; AVX1-NEXT: vpextrb $1, %xmm6, %eax 7681; AVX1-NEXT: andb $1, %al 7682; AVX1-NEXT: movb %al, 12(%rdi) 7683; AVX1-NEXT: vpextrb $0, %xmm6, %eax 7684; AVX1-NEXT: andb $1, %al 7685; AVX1-NEXT: movb %al, 12(%rdi) 7686; AVX1-NEXT: vpextrb $15, %xmm2, %eax 7687; AVX1-NEXT: andb $1, %al 7688; AVX1-NEXT: movb %al, 8(%rdi) 7689; AVX1-NEXT: vpextrb $14, %xmm2, %eax 7690; AVX1-NEXT: andb $1, %al 7691; AVX1-NEXT: movb %al, 8(%rdi) 7692; AVX1-NEXT: vpextrb $13, %xmm2, %eax 7693; AVX1-NEXT: andb $1, %al 7694; AVX1-NEXT: movb %al, 8(%rdi) 7695; AVX1-NEXT: vpextrb $12, %xmm2, %eax 7696; AVX1-NEXT: andb $1, %al 7697; AVX1-NEXT: movb %al, 8(%rdi) 7698; AVX1-NEXT: vpextrb $11, %xmm2, %eax 7699; AVX1-NEXT: andb $1, %al 7700; AVX1-NEXT: movb %al, 8(%rdi) 7701; AVX1-NEXT: vpextrb $10, %xmm2, %eax 7702; AVX1-NEXT: andb $1, %al 7703; AVX1-NEXT: movb %al, 8(%rdi) 7704; AVX1-NEXT: vpextrb $9, %xmm2, %eax 7705; AVX1-NEXT: andb $1, %al 7706; AVX1-NEXT: movb %al, 8(%rdi) 7707; AVX1-NEXT: vpextrb $8, %xmm2, %eax 7708; AVX1-NEXT: andb $1, %al 7709; AVX1-NEXT: movb %al, 8(%rdi) 7710; AVX1-NEXT: vpextrb $7, %xmm2, %eax 7711; AVX1-NEXT: andb $1, %al 7712; AVX1-NEXT: movb %al, 8(%rdi) 7713; AVX1-NEXT: vpextrb $6, %xmm2, %eax 7714; AVX1-NEXT: andb $1, %al 7715; AVX1-NEXT: movb %al, 8(%rdi) 7716; AVX1-NEXT: vpextrb $5, %xmm2, %eax 7717; AVX1-NEXT: andb $1, %al 7718; AVX1-NEXT: movb %al, 8(%rdi) 7719; AVX1-NEXT: vpextrb $4, %xmm2, %eax 7720; AVX1-NEXT: andb $1, %al 7721; AVX1-NEXT: movb %al, 8(%rdi) 7722; AVX1-NEXT: vpextrb $3, %xmm2, %eax 7723; AVX1-NEXT: andb $1, %al 7724; AVX1-NEXT: movb %al, 8(%rdi) 7725; AVX1-NEXT: vpextrb $2, %xmm2, %eax 7726; AVX1-NEXT: andb $1, %al 7727; AVX1-NEXT: movb %al, 8(%rdi) 7728; AVX1-NEXT: vpextrb $1, %xmm2, %eax 7729; AVX1-NEXT: andb $1, %al 7730; AVX1-NEXT: movb %al, 8(%rdi) 7731; AVX1-NEXT: vpextrb $0, %xmm2, %eax 7732; AVX1-NEXT: andb $1, %al 7733; AVX1-NEXT: movb %al, 8(%rdi) 7734; AVX1-NEXT: vpextrb $15, %xmm5, %eax 7735; AVX1-NEXT: andb $1, %al 7736; AVX1-NEXT: movb %al, 8(%rdi) 7737; AVX1-NEXT: vpextrb $14, %xmm5, %eax 7738; AVX1-NEXT: andb $1, %al 7739; AVX1-NEXT: movb %al, 8(%rdi) 7740; AVX1-NEXT: vpextrb $13, %xmm5, %eax 7741; AVX1-NEXT: andb $1, %al 7742; AVX1-NEXT: movb %al, 8(%rdi) 7743; AVX1-NEXT: vpextrb $12, %xmm5, %eax 7744; AVX1-NEXT: andb $1, %al 7745; AVX1-NEXT: movb %al, 8(%rdi) 7746; AVX1-NEXT: vpextrb $11, %xmm5, %eax 7747; AVX1-NEXT: andb $1, %al 7748; AVX1-NEXT: movb %al, 8(%rdi) 7749; AVX1-NEXT: vpextrb $10, %xmm5, %eax 7750; AVX1-NEXT: andb $1, %al 7751; AVX1-NEXT: movb %al, 8(%rdi) 7752; AVX1-NEXT: vpextrb $9, %xmm5, %eax 7753; AVX1-NEXT: andb $1, %al 7754; AVX1-NEXT: movb %al, 8(%rdi) 7755; AVX1-NEXT: vpextrb $8, %xmm5, %eax 7756; AVX1-NEXT: andb $1, %al 7757; AVX1-NEXT: movb %al, 8(%rdi) 7758; AVX1-NEXT: vpextrb $7, %xmm5, %eax 7759; AVX1-NEXT: andb $1, %al 7760; AVX1-NEXT: movb %al, 8(%rdi) 7761; AVX1-NEXT: vpextrb $6, %xmm5, %eax 7762; AVX1-NEXT: andb $1, %al 7763; AVX1-NEXT: movb %al, 8(%rdi) 7764; AVX1-NEXT: vpextrb $5, %xmm5, %eax 7765; AVX1-NEXT: andb $1, %al 7766; AVX1-NEXT: movb %al, 8(%rdi) 7767; AVX1-NEXT: vpextrb $4, %xmm5, %eax 7768; AVX1-NEXT: andb $1, %al 7769; AVX1-NEXT: movb %al, 8(%rdi) 7770; AVX1-NEXT: vpextrb $3, %xmm5, %eax 7771; AVX1-NEXT: andb $1, %al 7772; AVX1-NEXT: movb %al, 8(%rdi) 7773; AVX1-NEXT: vpextrb $2, %xmm5, %eax 7774; AVX1-NEXT: andb $1, %al 7775; AVX1-NEXT: movb %al, 8(%rdi) 7776; AVX1-NEXT: vpextrb $1, %xmm5, %eax 7777; AVX1-NEXT: andb $1, %al 7778; AVX1-NEXT: movb %al, 8(%rdi) 7779; AVX1-NEXT: vpextrb $0, %xmm5, %eax 7780; AVX1-NEXT: andb $1, %al 7781; AVX1-NEXT: movb %al, 8(%rdi) 7782; AVX1-NEXT: vpextrb $15, %xmm1, %eax 7783; AVX1-NEXT: andb $1, %al 7784; AVX1-NEXT: movb %al, 4(%rdi) 7785; AVX1-NEXT: vpextrb $14, %xmm1, %eax 7786; AVX1-NEXT: andb $1, %al 7787; AVX1-NEXT: movb %al, 4(%rdi) 7788; AVX1-NEXT: vpextrb $13, %xmm1, %eax 7789; AVX1-NEXT: andb $1, %al 7790; AVX1-NEXT: movb %al, 4(%rdi) 7791; AVX1-NEXT: vpextrb $12, %xmm1, %eax 7792; AVX1-NEXT: andb $1, %al 7793; AVX1-NEXT: movb %al, 4(%rdi) 7794; AVX1-NEXT: vpextrb $11, %xmm1, %eax 7795; AVX1-NEXT: andb $1, %al 7796; AVX1-NEXT: movb %al, 4(%rdi) 7797; AVX1-NEXT: vpextrb $10, %xmm1, %eax 7798; AVX1-NEXT: andb $1, %al 7799; AVX1-NEXT: movb %al, 4(%rdi) 7800; AVX1-NEXT: vpextrb $9, %xmm1, %eax 7801; AVX1-NEXT: andb $1, %al 7802; AVX1-NEXT: movb %al, 4(%rdi) 7803; AVX1-NEXT: vpextrb $8, %xmm1, %eax 7804; AVX1-NEXT: andb $1, %al 7805; AVX1-NEXT: movb %al, 4(%rdi) 7806; AVX1-NEXT: vpextrb $7, %xmm1, %eax 7807; AVX1-NEXT: andb $1, %al 7808; AVX1-NEXT: movb %al, 4(%rdi) 7809; AVX1-NEXT: vpextrb $6, %xmm1, %eax 7810; AVX1-NEXT: andb $1, %al 7811; AVX1-NEXT: movb %al, 4(%rdi) 7812; AVX1-NEXT: vpextrb $5, %xmm1, %eax 7813; AVX1-NEXT: andb $1, %al 7814; AVX1-NEXT: movb %al, 4(%rdi) 7815; AVX1-NEXT: vpextrb $4, %xmm1, %eax 7816; AVX1-NEXT: andb $1, %al 7817; AVX1-NEXT: movb %al, 4(%rdi) 7818; AVX1-NEXT: vpextrb $3, %xmm1, %eax 7819; AVX1-NEXT: andb $1, %al 7820; AVX1-NEXT: movb %al, 4(%rdi) 7821; AVX1-NEXT: vpextrb $2, %xmm1, %eax 7822; AVX1-NEXT: andb $1, %al 7823; AVX1-NEXT: movb %al, 4(%rdi) 7824; AVX1-NEXT: vpextrb $1, %xmm1, %eax 7825; AVX1-NEXT: andb $1, %al 7826; AVX1-NEXT: movb %al, 4(%rdi) 7827; AVX1-NEXT: vpextrb $0, %xmm1, %eax 7828; AVX1-NEXT: andb $1, %al 7829; AVX1-NEXT: movb %al, 4(%rdi) 7830; AVX1-NEXT: vpextrb $15, %xmm4, %eax 7831; AVX1-NEXT: andb $1, %al 7832; AVX1-NEXT: movb %al, 4(%rdi) 7833; AVX1-NEXT: vpextrb $14, %xmm4, %eax 7834; AVX1-NEXT: andb $1, %al 7835; AVX1-NEXT: movb %al, 4(%rdi) 7836; AVX1-NEXT: vpextrb $13, %xmm4, %eax 7837; AVX1-NEXT: andb $1, %al 7838; AVX1-NEXT: movb %al, 4(%rdi) 7839; AVX1-NEXT: vpextrb $12, %xmm4, %eax 7840; AVX1-NEXT: andb $1, %al 7841; AVX1-NEXT: movb %al, 4(%rdi) 7842; AVX1-NEXT: vpextrb $11, %xmm4, %eax 7843; AVX1-NEXT: andb $1, %al 7844; AVX1-NEXT: movb %al, 4(%rdi) 7845; AVX1-NEXT: vpextrb $10, %xmm4, %eax 7846; AVX1-NEXT: andb $1, %al 7847; AVX1-NEXT: movb %al, 4(%rdi) 7848; AVX1-NEXT: vpextrb $9, %xmm4, %eax 7849; AVX1-NEXT: andb $1, %al 7850; AVX1-NEXT: movb %al, 4(%rdi) 7851; AVX1-NEXT: vpextrb $8, %xmm4, %eax 7852; AVX1-NEXT: andb $1, %al 7853; AVX1-NEXT: movb %al, 4(%rdi) 7854; AVX1-NEXT: vpextrb $7, %xmm4, %eax 7855; AVX1-NEXT: andb $1, %al 7856; AVX1-NEXT: movb %al, 4(%rdi) 7857; AVX1-NEXT: vpextrb $6, %xmm4, %eax 7858; AVX1-NEXT: andb $1, %al 7859; AVX1-NEXT: movb %al, 4(%rdi) 7860; AVX1-NEXT: vpextrb $5, %xmm4, %eax 7861; AVX1-NEXT: andb $1, %al 7862; AVX1-NEXT: movb %al, 4(%rdi) 7863; AVX1-NEXT: vpextrb $4, %xmm4, %eax 7864; AVX1-NEXT: andb $1, %al 7865; AVX1-NEXT: movb %al, 4(%rdi) 7866; AVX1-NEXT: vpextrb $3, %xmm4, %eax 7867; AVX1-NEXT: andb $1, %al 7868; AVX1-NEXT: movb %al, 4(%rdi) 7869; AVX1-NEXT: vpextrb $2, %xmm4, %eax 7870; AVX1-NEXT: andb $1, %al 7871; AVX1-NEXT: movb %al, 4(%rdi) 7872; AVX1-NEXT: vpextrb $1, %xmm4, %eax 7873; AVX1-NEXT: andb $1, %al 7874; AVX1-NEXT: movb %al, 4(%rdi) 7875; AVX1-NEXT: vpextrb $0, %xmm4, %eax 7876; AVX1-NEXT: andb $1, %al 7877; AVX1-NEXT: movb %al, 4(%rdi) 7878; AVX1-NEXT: vpextrb $15, %xmm0, %eax 7879; AVX1-NEXT: andb $1, %al 7880; AVX1-NEXT: movb %al, (%rdi) 7881; AVX1-NEXT: vpextrb $14, %xmm0, %eax 7882; AVX1-NEXT: andb $1, %al 7883; AVX1-NEXT: movb %al, (%rdi) 7884; AVX1-NEXT: vpextrb $13, %xmm0, %eax 7885; AVX1-NEXT: andb $1, %al 7886; AVX1-NEXT: movb %al, (%rdi) 7887; AVX1-NEXT: vpextrb $12, %xmm0, %eax 7888; AVX1-NEXT: andb $1, %al 7889; AVX1-NEXT: movb %al, (%rdi) 7890; AVX1-NEXT: vpextrb $11, %xmm0, %eax 7891; AVX1-NEXT: andb $1, %al 7892; AVX1-NEXT: movb %al, (%rdi) 7893; AVX1-NEXT: vpextrb $10, %xmm0, %eax 7894; AVX1-NEXT: andb $1, %al 7895; AVX1-NEXT: movb %al, (%rdi) 7896; AVX1-NEXT: vpextrb $9, %xmm0, %eax 7897; AVX1-NEXT: andb $1, %al 7898; AVX1-NEXT: movb %al, (%rdi) 7899; AVX1-NEXT: vpextrb $8, %xmm0, %eax 7900; AVX1-NEXT: andb $1, %al 7901; AVX1-NEXT: movb %al, (%rdi) 7902; AVX1-NEXT: vpextrb $7, %xmm0, %eax 7903; AVX1-NEXT: andb $1, %al 7904; AVX1-NEXT: movb %al, (%rdi) 7905; AVX1-NEXT: vpextrb $6, %xmm0, %eax 7906; AVX1-NEXT: andb $1, %al 7907; AVX1-NEXT: movb %al, (%rdi) 7908; AVX1-NEXT: vpextrb $5, %xmm0, %eax 7909; AVX1-NEXT: andb $1, %al 7910; AVX1-NEXT: movb %al, (%rdi) 7911; AVX1-NEXT: vpextrb $4, %xmm0, %eax 7912; AVX1-NEXT: andb $1, %al 7913; AVX1-NEXT: movb %al, (%rdi) 7914; AVX1-NEXT: vpextrb $3, %xmm0, %eax 7915; AVX1-NEXT: andb $1, %al 7916; AVX1-NEXT: movb %al, (%rdi) 7917; AVX1-NEXT: vpextrb $2, %xmm0, %eax 7918; AVX1-NEXT: andb $1, %al 7919; AVX1-NEXT: movb %al, (%rdi) 7920; AVX1-NEXT: vpextrb $1, %xmm0, %eax 7921; AVX1-NEXT: andb $1, %al 7922; AVX1-NEXT: movb %al, (%rdi) 7923; AVX1-NEXT: vpextrb $0, %xmm0, %eax 7924; AVX1-NEXT: andb $1, %al 7925; AVX1-NEXT: movb %al, (%rdi) 7926; AVX1-NEXT: vpextrb $15, %xmm8, %eax 7927; AVX1-NEXT: andb $1, %al 7928; AVX1-NEXT: movb %al, (%rdi) 7929; AVX1-NEXT: vpextrb $14, %xmm8, %eax 7930; AVX1-NEXT: andb $1, %al 7931; AVX1-NEXT: movb %al, (%rdi) 7932; AVX1-NEXT: vpextrb $13, %xmm8, %eax 7933; AVX1-NEXT: andb $1, %al 7934; AVX1-NEXT: movb %al, (%rdi) 7935; AVX1-NEXT: vpextrb $12, %xmm8, %eax 7936; AVX1-NEXT: andb $1, %al 7937; AVX1-NEXT: movb %al, (%rdi) 7938; AVX1-NEXT: vpextrb $11, %xmm8, %eax 7939; AVX1-NEXT: andb $1, %al 7940; AVX1-NEXT: movb %al, (%rdi) 7941; AVX1-NEXT: vpextrb $10, %xmm8, %eax 7942; AVX1-NEXT: andb $1, %al 7943; AVX1-NEXT: movb %al, (%rdi) 7944; AVX1-NEXT: vpextrb $9, %xmm8, %eax 7945; AVX1-NEXT: andb $1, %al 7946; AVX1-NEXT: movb %al, (%rdi) 7947; AVX1-NEXT: vpextrb $8, %xmm8, %eax 7948; AVX1-NEXT: andb $1, %al 7949; AVX1-NEXT: movb %al, (%rdi) 7950; AVX1-NEXT: vpextrb $7, %xmm8, %eax 7951; AVX1-NEXT: andb $1, %al 7952; AVX1-NEXT: movb %al, (%rdi) 7953; AVX1-NEXT: vpextrb $6, %xmm8, %eax 7954; AVX1-NEXT: andb $1, %al 7955; AVX1-NEXT: movb %al, (%rdi) 7956; AVX1-NEXT: vpextrb $5, %xmm8, %eax 7957; AVX1-NEXT: andb $1, %al 7958; AVX1-NEXT: movb %al, (%rdi) 7959; AVX1-NEXT: vpextrb $4, %xmm8, %eax 7960; AVX1-NEXT: andb $1, %al 7961; AVX1-NEXT: movb %al, (%rdi) 7962; AVX1-NEXT: vpextrb $3, %xmm8, %eax 7963; AVX1-NEXT: andb $1, %al 7964; AVX1-NEXT: movb %al, (%rdi) 7965; AVX1-NEXT: vpextrb $2, %xmm8, %eax 7966; AVX1-NEXT: andb $1, %al 7967; AVX1-NEXT: movb %al, (%rdi) 7968; AVX1-NEXT: vpextrb $1, %xmm8, %eax 7969; AVX1-NEXT: andb $1, %al 7970; AVX1-NEXT: movb %al, (%rdi) 7971; AVX1-NEXT: vpextrb $0, %xmm8, %eax 7972; AVX1-NEXT: andb $1, %al 7973; AVX1-NEXT: movb %al, (%rdi) 7974; AVX1-NEXT: movq %rdi, %rax 7975; AVX1-NEXT: vzeroupper 7976; AVX1-NEXT: retq 7977; 7978; AVX2-LABEL: test_cmp_v128i8: 7979; AVX2: # BB#0: 7980; AVX2-NEXT: vpcmpgtb %ymm4, %ymm0, %ymm0 7981; AVX2-NEXT: vpcmpgtb %ymm5, %ymm1, %ymm1 7982; AVX2-NEXT: vpcmpgtb %ymm6, %ymm2, %ymm2 7983; AVX2-NEXT: vpcmpgtb %ymm7, %ymm3, %ymm3 7984; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4 7985; AVX2-NEXT: vpextrb $15, %xmm4, %eax 7986; AVX2-NEXT: andb $1, %al 7987; AVX2-NEXT: movb %al, 12(%rdi) 7988; AVX2-NEXT: vpextrb $14, %xmm4, %eax 7989; AVX2-NEXT: andb $1, %al 7990; AVX2-NEXT: movb %al, 12(%rdi) 7991; AVX2-NEXT: vpextrb $13, %xmm4, %eax 7992; AVX2-NEXT: andb $1, %al 7993; AVX2-NEXT: movb %al, 12(%rdi) 7994; AVX2-NEXT: vpextrb $12, %xmm4, %eax 7995; AVX2-NEXT: andb $1, %al 7996; AVX2-NEXT: movb %al, 12(%rdi) 7997; AVX2-NEXT: vpextrb $11, %xmm4, %eax 7998; AVX2-NEXT: andb $1, %al 7999; AVX2-NEXT: movb %al, 12(%rdi) 8000; AVX2-NEXT: vpextrb $10, %xmm4, %eax 8001; AVX2-NEXT: andb $1, %al 8002; AVX2-NEXT: movb %al, 12(%rdi) 8003; AVX2-NEXT: vpextrb $9, %xmm4, %eax 8004; AVX2-NEXT: andb $1, %al 8005; AVX2-NEXT: movb %al, 12(%rdi) 8006; AVX2-NEXT: vpextrb $8, %xmm4, %eax 8007; AVX2-NEXT: andb $1, %al 8008; AVX2-NEXT: movb %al, 12(%rdi) 8009; AVX2-NEXT: vpextrb $7, %xmm4, %eax 8010; AVX2-NEXT: andb $1, %al 8011; AVX2-NEXT: movb %al, 12(%rdi) 8012; AVX2-NEXT: vpextrb $6, %xmm4, %eax 8013; AVX2-NEXT: andb $1, %al 8014; AVX2-NEXT: movb %al, 12(%rdi) 8015; AVX2-NEXT: vpextrb $5, %xmm4, %eax 8016; AVX2-NEXT: andb $1, %al 8017; AVX2-NEXT: movb %al, 12(%rdi) 8018; AVX2-NEXT: vpextrb $4, %xmm4, %eax 8019; AVX2-NEXT: andb $1, %al 8020; AVX2-NEXT: movb %al, 12(%rdi) 8021; AVX2-NEXT: vpextrb $3, %xmm4, %eax 8022; AVX2-NEXT: andb $1, %al 8023; AVX2-NEXT: movb %al, 12(%rdi) 8024; AVX2-NEXT: vpextrb $2, %xmm4, %eax 8025; AVX2-NEXT: andb $1, %al 8026; AVX2-NEXT: movb %al, 12(%rdi) 8027; AVX2-NEXT: vpextrb $1, %xmm4, %eax 8028; AVX2-NEXT: andb $1, %al 8029; AVX2-NEXT: movb %al, 12(%rdi) 8030; AVX2-NEXT: vpextrb $0, %xmm4, %eax 8031; AVX2-NEXT: andb $1, %al 8032; AVX2-NEXT: movb %al, 12(%rdi) 8033; AVX2-NEXT: vpextrb $15, %xmm3, %eax 8034; AVX2-NEXT: andb $1, %al 8035; AVX2-NEXT: movb %al, 12(%rdi) 8036; AVX2-NEXT: vpextrb $14, %xmm3, %eax 8037; AVX2-NEXT: andb $1, %al 8038; AVX2-NEXT: movb %al, 12(%rdi) 8039; AVX2-NEXT: vpextrb $13, %xmm3, %eax 8040; AVX2-NEXT: andb $1, %al 8041; AVX2-NEXT: movb %al, 12(%rdi) 8042; AVX2-NEXT: vpextrb $12, %xmm3, %eax 8043; AVX2-NEXT: andb $1, %al 8044; AVX2-NEXT: movb %al, 12(%rdi) 8045; AVX2-NEXT: vpextrb $11, %xmm3, %eax 8046; AVX2-NEXT: andb $1, %al 8047; AVX2-NEXT: movb %al, 12(%rdi) 8048; AVX2-NEXT: vpextrb $10, %xmm3, %eax 8049; AVX2-NEXT: andb $1, %al 8050; AVX2-NEXT: movb %al, 12(%rdi) 8051; AVX2-NEXT: vpextrb $9, %xmm3, %eax 8052; AVX2-NEXT: andb $1, %al 8053; AVX2-NEXT: movb %al, 12(%rdi) 8054; AVX2-NEXT: vpextrb $8, %xmm3, %eax 8055; AVX2-NEXT: andb $1, %al 8056; AVX2-NEXT: movb %al, 12(%rdi) 8057; AVX2-NEXT: vpextrb $7, %xmm3, %eax 8058; AVX2-NEXT: andb $1, %al 8059; AVX2-NEXT: movb %al, 12(%rdi) 8060; AVX2-NEXT: vpextrb $6, %xmm3, %eax 8061; AVX2-NEXT: andb $1, %al 8062; AVX2-NEXT: movb %al, 12(%rdi) 8063; AVX2-NEXT: vpextrb $5, %xmm3, %eax 8064; AVX2-NEXT: andb $1, %al 8065; AVX2-NEXT: movb %al, 12(%rdi) 8066; AVX2-NEXT: vpextrb $4, %xmm3, %eax 8067; AVX2-NEXT: andb $1, %al 8068; AVX2-NEXT: movb %al, 12(%rdi) 8069; AVX2-NEXT: vpextrb $3, %xmm3, %eax 8070; AVX2-NEXT: andb $1, %al 8071; AVX2-NEXT: movb %al, 12(%rdi) 8072; AVX2-NEXT: vpextrb $2, %xmm3, %eax 8073; AVX2-NEXT: andb $1, %al 8074; AVX2-NEXT: movb %al, 12(%rdi) 8075; AVX2-NEXT: vpextrb $1, %xmm3, %eax 8076; AVX2-NEXT: andb $1, %al 8077; AVX2-NEXT: movb %al, 12(%rdi) 8078; AVX2-NEXT: vpextrb $0, %xmm3, %eax 8079; AVX2-NEXT: andb $1, %al 8080; AVX2-NEXT: movb %al, 12(%rdi) 8081; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm3 8082; AVX2-NEXT: vpextrb $15, %xmm3, %eax 8083; AVX2-NEXT: andb $1, %al 8084; AVX2-NEXT: movb %al, 8(%rdi) 8085; AVX2-NEXT: vpextrb $14, %xmm3, %eax 8086; AVX2-NEXT: andb $1, %al 8087; AVX2-NEXT: movb %al, 8(%rdi) 8088; AVX2-NEXT: vpextrb $13, %xmm3, %eax 8089; AVX2-NEXT: andb $1, %al 8090; AVX2-NEXT: movb %al, 8(%rdi) 8091; AVX2-NEXT: vpextrb $12, %xmm3, %eax 8092; AVX2-NEXT: andb $1, %al 8093; AVX2-NEXT: movb %al, 8(%rdi) 8094; AVX2-NEXT: vpextrb $11, %xmm3, %eax 8095; AVX2-NEXT: andb $1, %al 8096; AVX2-NEXT: movb %al, 8(%rdi) 8097; AVX2-NEXT: vpextrb $10, %xmm3, %eax 8098; AVX2-NEXT: andb $1, %al 8099; AVX2-NEXT: movb %al, 8(%rdi) 8100; AVX2-NEXT: vpextrb $9, %xmm3, %eax 8101; AVX2-NEXT: andb $1, %al 8102; AVX2-NEXT: movb %al, 8(%rdi) 8103; AVX2-NEXT: vpextrb $8, %xmm3, %eax 8104; AVX2-NEXT: andb $1, %al 8105; AVX2-NEXT: movb %al, 8(%rdi) 8106; AVX2-NEXT: vpextrb $7, %xmm3, %eax 8107; AVX2-NEXT: andb $1, %al 8108; AVX2-NEXT: movb %al, 8(%rdi) 8109; AVX2-NEXT: vpextrb $6, %xmm3, %eax 8110; AVX2-NEXT: andb $1, %al 8111; AVX2-NEXT: movb %al, 8(%rdi) 8112; AVX2-NEXT: vpextrb $5, %xmm3, %eax 8113; AVX2-NEXT: andb $1, %al 8114; AVX2-NEXT: movb %al, 8(%rdi) 8115; AVX2-NEXT: vpextrb $4, %xmm3, %eax 8116; AVX2-NEXT: andb $1, %al 8117; AVX2-NEXT: movb %al, 8(%rdi) 8118; AVX2-NEXT: vpextrb $3, %xmm3, %eax 8119; AVX2-NEXT: andb $1, %al 8120; AVX2-NEXT: movb %al, 8(%rdi) 8121; AVX2-NEXT: vpextrb $2, %xmm3, %eax 8122; AVX2-NEXT: andb $1, %al 8123; AVX2-NEXT: movb %al, 8(%rdi) 8124; AVX2-NEXT: vpextrb $1, %xmm3, %eax 8125; AVX2-NEXT: andb $1, %al 8126; AVX2-NEXT: movb %al, 8(%rdi) 8127; AVX2-NEXT: vpextrb $0, %xmm3, %eax 8128; AVX2-NEXT: andb $1, %al 8129; AVX2-NEXT: movb %al, 8(%rdi) 8130; AVX2-NEXT: vpextrb $15, %xmm2, %eax 8131; AVX2-NEXT: andb $1, %al 8132; AVX2-NEXT: movb %al, 8(%rdi) 8133; AVX2-NEXT: vpextrb $14, %xmm2, %eax 8134; AVX2-NEXT: andb $1, %al 8135; AVX2-NEXT: movb %al, 8(%rdi) 8136; AVX2-NEXT: vpextrb $13, %xmm2, %eax 8137; AVX2-NEXT: andb $1, %al 8138; AVX2-NEXT: movb %al, 8(%rdi) 8139; AVX2-NEXT: vpextrb $12, %xmm2, %eax 8140; AVX2-NEXT: andb $1, %al 8141; AVX2-NEXT: movb %al, 8(%rdi) 8142; AVX2-NEXT: vpextrb $11, %xmm2, %eax 8143; AVX2-NEXT: andb $1, %al 8144; AVX2-NEXT: movb %al, 8(%rdi) 8145; AVX2-NEXT: vpextrb $10, %xmm2, %eax 8146; AVX2-NEXT: andb $1, %al 8147; AVX2-NEXT: movb %al, 8(%rdi) 8148; AVX2-NEXT: vpextrb $9, %xmm2, %eax 8149; AVX2-NEXT: andb $1, %al 8150; AVX2-NEXT: movb %al, 8(%rdi) 8151; AVX2-NEXT: vpextrb $8, %xmm2, %eax 8152; AVX2-NEXT: andb $1, %al 8153; AVX2-NEXT: movb %al, 8(%rdi) 8154; AVX2-NEXT: vpextrb $7, %xmm2, %eax 8155; AVX2-NEXT: andb $1, %al 8156; AVX2-NEXT: movb %al, 8(%rdi) 8157; AVX2-NEXT: vpextrb $6, %xmm2, %eax 8158; AVX2-NEXT: andb $1, %al 8159; AVX2-NEXT: movb %al, 8(%rdi) 8160; AVX2-NEXT: vpextrb $5, %xmm2, %eax 8161; AVX2-NEXT: andb $1, %al 8162; AVX2-NEXT: movb %al, 8(%rdi) 8163; AVX2-NEXT: vpextrb $4, %xmm2, %eax 8164; AVX2-NEXT: andb $1, %al 8165; AVX2-NEXT: movb %al, 8(%rdi) 8166; AVX2-NEXT: vpextrb $3, %xmm2, %eax 8167; AVX2-NEXT: andb $1, %al 8168; AVX2-NEXT: movb %al, 8(%rdi) 8169; AVX2-NEXT: vpextrb $2, %xmm2, %eax 8170; AVX2-NEXT: andb $1, %al 8171; AVX2-NEXT: movb %al, 8(%rdi) 8172; AVX2-NEXT: vpextrb $1, %xmm2, %eax 8173; AVX2-NEXT: andb $1, %al 8174; AVX2-NEXT: movb %al, 8(%rdi) 8175; AVX2-NEXT: vpextrb $0, %xmm2, %eax 8176; AVX2-NEXT: andb $1, %al 8177; AVX2-NEXT: movb %al, 8(%rdi) 8178; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2 8179; AVX2-NEXT: vpextrb $15, %xmm2, %eax 8180; AVX2-NEXT: andb $1, %al 8181; AVX2-NEXT: movb %al, 4(%rdi) 8182; AVX2-NEXT: vpextrb $14, %xmm2, %eax 8183; AVX2-NEXT: andb $1, %al 8184; AVX2-NEXT: movb %al, 4(%rdi) 8185; AVX2-NEXT: vpextrb $13, %xmm2, %eax 8186; AVX2-NEXT: andb $1, %al 8187; AVX2-NEXT: movb %al, 4(%rdi) 8188; AVX2-NEXT: vpextrb $12, %xmm2, %eax 8189; AVX2-NEXT: andb $1, %al 8190; AVX2-NEXT: movb %al, 4(%rdi) 8191; AVX2-NEXT: vpextrb $11, %xmm2, %eax 8192; AVX2-NEXT: andb $1, %al 8193; AVX2-NEXT: movb %al, 4(%rdi) 8194; AVX2-NEXT: vpextrb $10, %xmm2, %eax 8195; AVX2-NEXT: andb $1, %al 8196; AVX2-NEXT: movb %al, 4(%rdi) 8197; AVX2-NEXT: vpextrb $9, %xmm2, %eax 8198; AVX2-NEXT: andb $1, %al 8199; AVX2-NEXT: movb %al, 4(%rdi) 8200; AVX2-NEXT: vpextrb $8, %xmm2, %eax 8201; AVX2-NEXT: andb $1, %al 8202; AVX2-NEXT: movb %al, 4(%rdi) 8203; AVX2-NEXT: vpextrb $7, %xmm2, %eax 8204; AVX2-NEXT: andb $1, %al 8205; AVX2-NEXT: movb %al, 4(%rdi) 8206; AVX2-NEXT: vpextrb $6, %xmm2, %eax 8207; AVX2-NEXT: andb $1, %al 8208; AVX2-NEXT: movb %al, 4(%rdi) 8209; AVX2-NEXT: vpextrb $5, %xmm2, %eax 8210; AVX2-NEXT: andb $1, %al 8211; AVX2-NEXT: movb %al, 4(%rdi) 8212; AVX2-NEXT: vpextrb $4, %xmm2, %eax 8213; AVX2-NEXT: andb $1, %al 8214; AVX2-NEXT: movb %al, 4(%rdi) 8215; AVX2-NEXT: vpextrb $3, %xmm2, %eax 8216; AVX2-NEXT: andb $1, %al 8217; AVX2-NEXT: movb %al, 4(%rdi) 8218; AVX2-NEXT: vpextrb $2, %xmm2, %eax 8219; AVX2-NEXT: andb $1, %al 8220; AVX2-NEXT: movb %al, 4(%rdi) 8221; AVX2-NEXT: vpextrb $1, %xmm2, %eax 8222; AVX2-NEXT: andb $1, %al 8223; AVX2-NEXT: movb %al, 4(%rdi) 8224; AVX2-NEXT: vpextrb $0, %xmm2, %eax 8225; AVX2-NEXT: andb $1, %al 8226; AVX2-NEXT: movb %al, 4(%rdi) 8227; AVX2-NEXT: vpextrb $15, %xmm1, %eax 8228; AVX2-NEXT: andb $1, %al 8229; AVX2-NEXT: movb %al, 4(%rdi) 8230; AVX2-NEXT: vpextrb $14, %xmm1, %eax 8231; AVX2-NEXT: andb $1, %al 8232; AVX2-NEXT: movb %al, 4(%rdi) 8233; AVX2-NEXT: vpextrb $13, %xmm1, %eax 8234; AVX2-NEXT: andb $1, %al 8235; AVX2-NEXT: movb %al, 4(%rdi) 8236; AVX2-NEXT: vpextrb $12, %xmm1, %eax 8237; AVX2-NEXT: andb $1, %al 8238; AVX2-NEXT: movb %al, 4(%rdi) 8239; AVX2-NEXT: vpextrb $11, %xmm1, %eax 8240; AVX2-NEXT: andb $1, %al 8241; AVX2-NEXT: movb %al, 4(%rdi) 8242; AVX2-NEXT: vpextrb $10, %xmm1, %eax 8243; AVX2-NEXT: andb $1, %al 8244; AVX2-NEXT: movb %al, 4(%rdi) 8245; AVX2-NEXT: vpextrb $9, %xmm1, %eax 8246; AVX2-NEXT: andb $1, %al 8247; AVX2-NEXT: movb %al, 4(%rdi) 8248; AVX2-NEXT: vpextrb $8, %xmm1, %eax 8249; AVX2-NEXT: andb $1, %al 8250; AVX2-NEXT: movb %al, 4(%rdi) 8251; AVX2-NEXT: vpextrb $7, %xmm1, %eax 8252; AVX2-NEXT: andb $1, %al 8253; AVX2-NEXT: movb %al, 4(%rdi) 8254; AVX2-NEXT: vpextrb $6, %xmm1, %eax 8255; AVX2-NEXT: andb $1, %al 8256; AVX2-NEXT: movb %al, 4(%rdi) 8257; AVX2-NEXT: vpextrb $5, %xmm1, %eax 8258; AVX2-NEXT: andb $1, %al 8259; AVX2-NEXT: movb %al, 4(%rdi) 8260; AVX2-NEXT: vpextrb $4, %xmm1, %eax 8261; AVX2-NEXT: andb $1, %al 8262; AVX2-NEXT: movb %al, 4(%rdi) 8263; AVX2-NEXT: vpextrb $3, %xmm1, %eax 8264; AVX2-NEXT: andb $1, %al 8265; AVX2-NEXT: movb %al, 4(%rdi) 8266; AVX2-NEXT: vpextrb $2, %xmm1, %eax 8267; AVX2-NEXT: andb $1, %al 8268; AVX2-NEXT: movb %al, 4(%rdi) 8269; AVX2-NEXT: vpextrb $1, %xmm1, %eax 8270; AVX2-NEXT: andb $1, %al 8271; AVX2-NEXT: movb %al, 4(%rdi) 8272; AVX2-NEXT: vpextrb $0, %xmm1, %eax 8273; AVX2-NEXT: andb $1, %al 8274; AVX2-NEXT: movb %al, 4(%rdi) 8275; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 8276; AVX2-NEXT: vpextrb $15, %xmm1, %eax 8277; AVX2-NEXT: andb $1, %al 8278; AVX2-NEXT: movb %al, (%rdi) 8279; AVX2-NEXT: vpextrb $14, %xmm1, %eax 8280; AVX2-NEXT: andb $1, %al 8281; AVX2-NEXT: movb %al, (%rdi) 8282; AVX2-NEXT: vpextrb $13, %xmm1, %eax 8283; AVX2-NEXT: andb $1, %al 8284; AVX2-NEXT: movb %al, (%rdi) 8285; AVX2-NEXT: vpextrb $12, %xmm1, %eax 8286; AVX2-NEXT: andb $1, %al 8287; AVX2-NEXT: movb %al, (%rdi) 8288; AVX2-NEXT: vpextrb $11, %xmm1, %eax 8289; AVX2-NEXT: andb $1, %al 8290; AVX2-NEXT: movb %al, (%rdi) 8291; AVX2-NEXT: vpextrb $10, %xmm1, %eax 8292; AVX2-NEXT: andb $1, %al 8293; AVX2-NEXT: movb %al, (%rdi) 8294; AVX2-NEXT: vpextrb $9, %xmm1, %eax 8295; AVX2-NEXT: andb $1, %al 8296; AVX2-NEXT: movb %al, (%rdi) 8297; AVX2-NEXT: vpextrb $8, %xmm1, %eax 8298; AVX2-NEXT: andb $1, %al 8299; AVX2-NEXT: movb %al, (%rdi) 8300; AVX2-NEXT: vpextrb $7, %xmm1, %eax 8301; AVX2-NEXT: andb $1, %al 8302; AVX2-NEXT: movb %al, (%rdi) 8303; AVX2-NEXT: vpextrb $6, %xmm1, %eax 8304; AVX2-NEXT: andb $1, %al 8305; AVX2-NEXT: movb %al, (%rdi) 8306; AVX2-NEXT: vpextrb $5, %xmm1, %eax 8307; AVX2-NEXT: andb $1, %al 8308; AVX2-NEXT: movb %al, (%rdi) 8309; AVX2-NEXT: vpextrb $4, %xmm1, %eax 8310; AVX2-NEXT: andb $1, %al 8311; AVX2-NEXT: movb %al, (%rdi) 8312; AVX2-NEXT: vpextrb $3, %xmm1, %eax 8313; AVX2-NEXT: andb $1, %al 8314; AVX2-NEXT: movb %al, (%rdi) 8315; AVX2-NEXT: vpextrb $2, %xmm1, %eax 8316; AVX2-NEXT: andb $1, %al 8317; AVX2-NEXT: movb %al, (%rdi) 8318; AVX2-NEXT: vpextrb $1, %xmm1, %eax 8319; AVX2-NEXT: andb $1, %al 8320; AVX2-NEXT: movb %al, (%rdi) 8321; AVX2-NEXT: vpextrb $0, %xmm1, %eax 8322; AVX2-NEXT: andb $1, %al 8323; AVX2-NEXT: movb %al, (%rdi) 8324; AVX2-NEXT: vpextrb $15, %xmm0, %eax 8325; AVX2-NEXT: andb $1, %al 8326; AVX2-NEXT: movb %al, (%rdi) 8327; AVX2-NEXT: vpextrb $14, %xmm0, %eax 8328; AVX2-NEXT: andb $1, %al 8329; AVX2-NEXT: movb %al, (%rdi) 8330; AVX2-NEXT: vpextrb $13, %xmm0, %eax 8331; AVX2-NEXT: andb $1, %al 8332; AVX2-NEXT: movb %al, (%rdi) 8333; AVX2-NEXT: vpextrb $12, %xmm0, %eax 8334; AVX2-NEXT: andb $1, %al 8335; AVX2-NEXT: movb %al, (%rdi) 8336; AVX2-NEXT: vpextrb $11, %xmm0, %eax 8337; AVX2-NEXT: andb $1, %al 8338; AVX2-NEXT: movb %al, (%rdi) 8339; AVX2-NEXT: vpextrb $10, %xmm0, %eax 8340; AVX2-NEXT: andb $1, %al 8341; AVX2-NEXT: movb %al, (%rdi) 8342; AVX2-NEXT: vpextrb $9, %xmm0, %eax 8343; AVX2-NEXT: andb $1, %al 8344; AVX2-NEXT: movb %al, (%rdi) 8345; AVX2-NEXT: vpextrb $8, %xmm0, %eax 8346; AVX2-NEXT: andb $1, %al 8347; AVX2-NEXT: movb %al, (%rdi) 8348; AVX2-NEXT: vpextrb $7, %xmm0, %eax 8349; AVX2-NEXT: andb $1, %al 8350; AVX2-NEXT: movb %al, (%rdi) 8351; AVX2-NEXT: vpextrb $6, %xmm0, %eax 8352; AVX2-NEXT: andb $1, %al 8353; AVX2-NEXT: movb %al, (%rdi) 8354; AVX2-NEXT: vpextrb $5, %xmm0, %eax 8355; AVX2-NEXT: andb $1, %al 8356; AVX2-NEXT: movb %al, (%rdi) 8357; AVX2-NEXT: vpextrb $4, %xmm0, %eax 8358; AVX2-NEXT: andb $1, %al 8359; AVX2-NEXT: movb %al, (%rdi) 8360; AVX2-NEXT: vpextrb $3, %xmm0, %eax 8361; AVX2-NEXT: andb $1, %al 8362; AVX2-NEXT: movb %al, (%rdi) 8363; AVX2-NEXT: vpextrb $2, %xmm0, %eax 8364; AVX2-NEXT: andb $1, %al 8365; AVX2-NEXT: movb %al, (%rdi) 8366; AVX2-NEXT: vpextrb $1, %xmm0, %eax 8367; AVX2-NEXT: andb $1, %al 8368; AVX2-NEXT: movb %al, (%rdi) 8369; AVX2-NEXT: vpextrb $0, %xmm0, %eax 8370; AVX2-NEXT: andb $1, %al 8371; AVX2-NEXT: movb %al, (%rdi) 8372; AVX2-NEXT: movq %rdi, %rax 8373; AVX2-NEXT: vzeroupper 8374; AVX2-NEXT: retq 8375; 8376; AVX512F-LABEL: test_cmp_v128i8: 8377; AVX512F: # BB#0: 8378; AVX512F-NEXT: vpcmpgtb %ymm4, %ymm0, %ymm0 8379; AVX512F-NEXT: vpcmpgtb %ymm5, %ymm1, %ymm1 8380; AVX512F-NEXT: vpcmpgtb %ymm6, %ymm2, %ymm2 8381; AVX512F-NEXT: vpcmpgtb %ymm7, %ymm3, %ymm3 8382; AVX512F-NEXT: vextracti128 $1, %ymm3, %xmm4 8383; AVX512F-NEXT: vpmovsxbd %xmm4, %zmm4 8384; AVX512F-NEXT: vpslld $31, %zmm4, %zmm4 8385; AVX512F-NEXT: vptestmd %zmm4, %zmm4, %k0 8386; AVX512F-NEXT: kmovw %k0, 14(%rdi) 8387; AVX512F-NEXT: vpmovsxbd %xmm3, %zmm3 8388; AVX512F-NEXT: vpslld $31, %zmm3, %zmm3 8389; AVX512F-NEXT: vptestmd %zmm3, %zmm3, %k0 8390; AVX512F-NEXT: kmovw %k0, 12(%rdi) 8391; AVX512F-NEXT: vextracti128 $1, %ymm2, %xmm3 8392; AVX512F-NEXT: vpmovsxbd %xmm3, %zmm3 8393; AVX512F-NEXT: vpslld $31, %zmm3, %zmm3 8394; AVX512F-NEXT: vptestmd %zmm3, %zmm3, %k0 8395; AVX512F-NEXT: kmovw %k0, 10(%rdi) 8396; AVX512F-NEXT: vpmovsxbd %xmm2, %zmm2 8397; AVX512F-NEXT: vpslld $31, %zmm2, %zmm2 8398; AVX512F-NEXT: vptestmd %zmm2, %zmm2, %k0 8399; AVX512F-NEXT: kmovw %k0, 8(%rdi) 8400; AVX512F-NEXT: vextracti128 $1, %ymm1, %xmm2 8401; AVX512F-NEXT: vpmovsxbd %xmm2, %zmm2 8402; AVX512F-NEXT: vpslld $31, %zmm2, %zmm2 8403; AVX512F-NEXT: vptestmd %zmm2, %zmm2, %k0 8404; AVX512F-NEXT: kmovw %k0, 6(%rdi) 8405; AVX512F-NEXT: vpmovsxbd %xmm1, %zmm1 8406; AVX512F-NEXT: vpslld $31, %zmm1, %zmm1 8407; AVX512F-NEXT: vptestmd %zmm1, %zmm1, %k0 8408; AVX512F-NEXT: kmovw %k0, 4(%rdi) 8409; AVX512F-NEXT: vextracti128 $1, %ymm0, %xmm1 8410; AVX512F-NEXT: vpmovsxbd %xmm1, %zmm1 8411; AVX512F-NEXT: vpslld $31, %zmm1, %zmm1 8412; AVX512F-NEXT: vptestmd %zmm1, %zmm1, %k0 8413; AVX512F-NEXT: kmovw %k0, 2(%rdi) 8414; AVX512F-NEXT: vpmovsxbd %xmm0, %zmm0 8415; AVX512F-NEXT: vpslld $31, %zmm0, %zmm0 8416; AVX512F-NEXT: vptestmd %zmm0, %zmm0, %k0 8417; AVX512F-NEXT: kmovw %k0, (%rdi) 8418; AVX512F-NEXT: movq %rdi, %rax 8419; AVX512F-NEXT: retq 8420; 8421; AVX512DQ-LABEL: test_cmp_v128i8: 8422; AVX512DQ: # BB#0: 8423; AVX512DQ-NEXT: vpcmpgtb %ymm4, %ymm0, %ymm0 8424; AVX512DQ-NEXT: vpcmpgtb %ymm5, %ymm1, %ymm1 8425; AVX512DQ-NEXT: vpcmpgtb %ymm6, %ymm2, %ymm2 8426; AVX512DQ-NEXT: vpcmpgtb %ymm7, %ymm3, %ymm3 8427; AVX512DQ-NEXT: vextracti128 $1, %ymm3, %xmm4 8428; AVX512DQ-NEXT: vpmovsxbd %xmm4, %zmm4 8429; AVX512DQ-NEXT: vpslld $31, %zmm4, %zmm4 8430; AVX512DQ-NEXT: vptestmd %zmm4, %zmm4, %k0 8431; AVX512DQ-NEXT: kmovw %k0, 14(%rdi) 8432; AVX512DQ-NEXT: vpmovsxbd %xmm3, %zmm3 8433; AVX512DQ-NEXT: vpslld $31, %zmm3, %zmm3 8434; AVX512DQ-NEXT: vptestmd %zmm3, %zmm3, %k0 8435; AVX512DQ-NEXT: kmovw %k0, 12(%rdi) 8436; AVX512DQ-NEXT: vextracti128 $1, %ymm2, %xmm3 8437; AVX512DQ-NEXT: vpmovsxbd %xmm3, %zmm3 8438; AVX512DQ-NEXT: vpslld $31, %zmm3, %zmm3 8439; AVX512DQ-NEXT: vptestmd %zmm3, %zmm3, %k0 8440; AVX512DQ-NEXT: kmovw %k0, 10(%rdi) 8441; AVX512DQ-NEXT: vpmovsxbd %xmm2, %zmm2 8442; AVX512DQ-NEXT: vpslld $31, %zmm2, %zmm2 8443; AVX512DQ-NEXT: vptestmd %zmm2, %zmm2, %k0 8444; AVX512DQ-NEXT: kmovw %k0, 8(%rdi) 8445; AVX512DQ-NEXT: vextracti128 $1, %ymm1, %xmm2 8446; AVX512DQ-NEXT: vpmovsxbd %xmm2, %zmm2 8447; AVX512DQ-NEXT: vpslld $31, %zmm2, %zmm2 8448; AVX512DQ-NEXT: vptestmd %zmm2, %zmm2, %k0 8449; AVX512DQ-NEXT: kmovw %k0, 6(%rdi) 8450; AVX512DQ-NEXT: vpmovsxbd %xmm1, %zmm1 8451; AVX512DQ-NEXT: vpslld $31, %zmm1, %zmm1 8452; AVX512DQ-NEXT: vptestmd %zmm1, %zmm1, %k0 8453; AVX512DQ-NEXT: kmovw %k0, 4(%rdi) 8454; AVX512DQ-NEXT: vextracti128 $1, %ymm0, %xmm1 8455; AVX512DQ-NEXT: vpmovsxbd %xmm1, %zmm1 8456; AVX512DQ-NEXT: vpslld $31, %zmm1, %zmm1 8457; AVX512DQ-NEXT: vptestmd %zmm1, %zmm1, %k0 8458; AVX512DQ-NEXT: kmovw %k0, 2(%rdi) 8459; AVX512DQ-NEXT: vpmovsxbd %xmm0, %zmm0 8460; AVX512DQ-NEXT: vpslld $31, %zmm0, %zmm0 8461; AVX512DQ-NEXT: vptestmd %zmm0, %zmm0, %k0 8462; AVX512DQ-NEXT: kmovw %k0, (%rdi) 8463; AVX512DQ-NEXT: movq %rdi, %rax 8464; AVX512DQ-NEXT: retq 8465; 8466; AVX512BW-LABEL: test_cmp_v128i8: 8467; AVX512BW: # BB#0: 8468; AVX512BW-NEXT: vpcmpgtb %zmm3, %zmm1, %k0 8469; AVX512BW-NEXT: vpcmpgtb %zmm2, %zmm0, %k1 8470; AVX512BW-NEXT: vpmovm2b %k1, %zmm0 8471; AVX512BW-NEXT: vpmovm2b %k0, %zmm1 8472; AVX512BW-NEXT: retq 8473 %1 = icmp sgt <128 x i8> %a0, %a1 8474 ret <128 x i1> %1 8475} 8476 8477; 8478; 2048-bit vector comparisons 8479; 8480 8481define <32 x i1> @test_cmp_v32f64(<32 x double> %a0, <32 x double> %a1) nounwind { 8482; SSE2-LABEL: test_cmp_v32f64: 8483; SSE2: # BB#0: 8484; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm8 8485; SSE2-NEXT: cmpltpd %xmm7, %xmm8 8486; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm7 8487; SSE2-NEXT: cmpltpd %xmm6, %xmm7 8488; SSE2-NEXT: shufps {{.*#+}} xmm7 = xmm7[0,2],xmm8[0,2] 8489; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm6 8490; SSE2-NEXT: cmpltpd %xmm5, %xmm6 8491; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 8492; SSE2-NEXT: cmpltpd %xmm4, %xmm5 8493; SSE2-NEXT: shufps {{.*#+}} xmm5 = xmm5[0,2],xmm6[0,2] 8494; SSE2-NEXT: pslld $31, %xmm7 8495; SSE2-NEXT: psrad $31, %xmm7 8496; SSE2-NEXT: pshuflw {{.*#+}} xmm4 = xmm7[0,2,2,3,4,5,6,7] 8497; SSE2-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,6,6,7] 8498; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,2,2,3] 8499; SSE2-NEXT: pslld $31, %xmm5 8500; SSE2-NEXT: psrad $31, %xmm5 8501; SSE2-NEXT: pshuflw {{.*#+}} xmm4 = xmm5[0,2,2,3,4,5,6,7] 8502; SSE2-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,6,6,7] 8503; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3] 8504; SSE2-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 8505; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 8506; SSE2-NEXT: cmpltpd %xmm3, %xmm5 8507; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm6 8508; SSE2-NEXT: cmpltpd %xmm2, %xmm6 8509; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm2 8510; SSE2-NEXT: shufps {{.*#+}} xmm6 = xmm6[0,2],xmm5[0,2] 8511; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 8512; SSE2-NEXT: cmpltpd %xmm1, %xmm5 8513; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm1 8514; SSE2-NEXT: cmpltpd %xmm0, %xmm1 8515; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm3 8516; SSE2-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,2],xmm5[0,2] 8517; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 8518; SSE2-NEXT: psllw $15, %xmm4 8519; SSE2-NEXT: psraw $15, %xmm4 8520; SSE2-NEXT: pslld $31, %xmm6 8521; SSE2-NEXT: psrad $31, %xmm6 8522; SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm6[0,2,2,3,4,5,6,7] 8523; SSE2-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,6,7] 8524; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm0[0,2,2,3] 8525; SSE2-NEXT: pslld $31, %xmm1 8526; SSE2-NEXT: psrad $31, %xmm1 8527; SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm1[0,2,2,3,4,5,6,7] 8528; SSE2-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,6,7] 8529; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3] 8530; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm6[0] 8531; SSE2-NEXT: movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,255] 8532; SSE2-NEXT: pand %xmm1, %xmm4 8533; SSE2-NEXT: psllw $15, %xmm0 8534; SSE2-NEXT: psraw $15, %xmm0 8535; SSE2-NEXT: pand %xmm1, %xmm0 8536; SSE2-NEXT: packuswb %xmm4, %xmm0 8537; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm4 8538; SSE2-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm4 8539; SSE2-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm5 8540; SSE2-NEXT: shufps {{.*#+}} xmm5 = xmm5[0,2],xmm4[0,2] 8541; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm4 8542; SSE2-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm4 8543; SSE2-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm3 8544; SSE2-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,2],xmm4[0,2] 8545; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm4 8546; SSE2-NEXT: pslld $31, %xmm5 8547; SSE2-NEXT: psrad $31, %xmm5 8548; SSE2-NEXT: pshuflw {{.*#+}} xmm5 = xmm5[0,2,2,3,4,5,6,7] 8549; SSE2-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,6,6,7] 8550; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,2,2,3] 8551; SSE2-NEXT: pslld $31, %xmm3 8552; SSE2-NEXT: psrad $31, %xmm3 8553; SSE2-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[0,2,2,3,4,5,6,7] 8554; SSE2-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,6,6,7] 8555; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3] 8556; SSE2-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm5[0] 8557; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 8558; SSE2-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm5 8559; SSE2-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm4 8560; SSE2-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,2],xmm5[0,2] 8561; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 8562; SSE2-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm5 8563; SSE2-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm2 8564; SSE2-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,2],xmm5[0,2] 8565; SSE2-NEXT: pslld $31, %xmm4 8566; SSE2-NEXT: psrad $31, %xmm4 8567; SSE2-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,2,2,3,4,5,6,7] 8568; SSE2-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,6,6,7] 8569; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3] 8570; SSE2-NEXT: pslld $31, %xmm2 8571; SSE2-NEXT: psrad $31, %xmm2 8572; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[0,2,2,3,4,5,6,7] 8573; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7] 8574; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] 8575; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm4[0] 8576; SSE2-NEXT: psllw $15, %xmm3 8577; SSE2-NEXT: psraw $15, %xmm3 8578; SSE2-NEXT: pand %xmm1, %xmm3 8579; SSE2-NEXT: psllw $15, %xmm2 8580; SSE2-NEXT: psraw $15, %xmm2 8581; SSE2-NEXT: pand %xmm1, %xmm2 8582; SSE2-NEXT: packuswb %xmm3, %xmm2 8583; SSE2-NEXT: movdqa %xmm2, -{{[0-9]+}}(%rsp) 8584; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8585; SSE2-NEXT: andb $1, %al 8586; SSE2-NEXT: movb %al, 2(%rdi) 8587; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 8588; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8589; SSE2-NEXT: andb $1, %al 8590; SSE2-NEXT: movb %al, (%rdi) 8591; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8592; SSE2-NEXT: andb $1, %al 8593; SSE2-NEXT: movb %al, 2(%rdi) 8594; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8595; SSE2-NEXT: andb $1, %al 8596; SSE2-NEXT: movb %al, (%rdi) 8597; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8598; SSE2-NEXT: andb $1, %al 8599; SSE2-NEXT: movb %al, 2(%rdi) 8600; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8601; SSE2-NEXT: andb $1, %al 8602; SSE2-NEXT: movb %al, (%rdi) 8603; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8604; SSE2-NEXT: andb $1, %al 8605; SSE2-NEXT: movb %al, 2(%rdi) 8606; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8607; SSE2-NEXT: andb $1, %al 8608; SSE2-NEXT: movb %al, (%rdi) 8609; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8610; SSE2-NEXT: andb $1, %al 8611; SSE2-NEXT: movb %al, 2(%rdi) 8612; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8613; SSE2-NEXT: andb $1, %al 8614; SSE2-NEXT: movb %al, (%rdi) 8615; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8616; SSE2-NEXT: andb $1, %al 8617; SSE2-NEXT: movb %al, 2(%rdi) 8618; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8619; SSE2-NEXT: andb $1, %al 8620; SSE2-NEXT: movb %al, (%rdi) 8621; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8622; SSE2-NEXT: andb $1, %al 8623; SSE2-NEXT: movb %al, 2(%rdi) 8624; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8625; SSE2-NEXT: andb $1, %al 8626; SSE2-NEXT: movb %al, (%rdi) 8627; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8628; SSE2-NEXT: andb $1, %al 8629; SSE2-NEXT: movb %al, 2(%rdi) 8630; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8631; SSE2-NEXT: andb $1, %al 8632; SSE2-NEXT: movb %al, (%rdi) 8633; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8634; SSE2-NEXT: andb $1, %al 8635; SSE2-NEXT: movb %al, 2(%rdi) 8636; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8637; SSE2-NEXT: andb $1, %al 8638; SSE2-NEXT: movb %al, (%rdi) 8639; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8640; SSE2-NEXT: andb $1, %al 8641; SSE2-NEXT: movb %al, 2(%rdi) 8642; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8643; SSE2-NEXT: andb $1, %al 8644; SSE2-NEXT: movb %al, (%rdi) 8645; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8646; SSE2-NEXT: andb $1, %al 8647; SSE2-NEXT: movb %al, 2(%rdi) 8648; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8649; SSE2-NEXT: andb $1, %al 8650; SSE2-NEXT: movb %al, (%rdi) 8651; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8652; SSE2-NEXT: andb $1, %al 8653; SSE2-NEXT: movb %al, 2(%rdi) 8654; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8655; SSE2-NEXT: andb $1, %al 8656; SSE2-NEXT: movb %al, (%rdi) 8657; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8658; SSE2-NEXT: andb $1, %al 8659; SSE2-NEXT: movb %al, 2(%rdi) 8660; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8661; SSE2-NEXT: andb $1, %al 8662; SSE2-NEXT: movb %al, (%rdi) 8663; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8664; SSE2-NEXT: andb $1, %al 8665; SSE2-NEXT: movb %al, 2(%rdi) 8666; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8667; SSE2-NEXT: andb $1, %al 8668; SSE2-NEXT: movb %al, (%rdi) 8669; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8670; SSE2-NEXT: andb $1, %al 8671; SSE2-NEXT: movb %al, 2(%rdi) 8672; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8673; SSE2-NEXT: andb $1, %al 8674; SSE2-NEXT: movb %al, (%rdi) 8675; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8676; SSE2-NEXT: andb $1, %al 8677; SSE2-NEXT: movb %al, 2(%rdi) 8678; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8679; SSE2-NEXT: andb $1, %al 8680; SSE2-NEXT: movb %al, (%rdi) 8681; SSE2-NEXT: movq %rdi, %rax 8682; SSE2-NEXT: retq 8683; 8684; SSE42-LABEL: test_cmp_v32f64: 8685; SSE42: # BB#0: 8686; SSE42-NEXT: pushq %rbp 8687; SSE42-NEXT: pushq %r15 8688; SSE42-NEXT: pushq %r14 8689; SSE42-NEXT: pushq %r13 8690; SSE42-NEXT: pushq %r12 8691; SSE42-NEXT: pushq %rbx 8692; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm8 8693; SSE42-NEXT: cmpltpd %xmm7, %xmm8 8694; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm7 8695; SSE42-NEXT: cmpltpd %xmm6, %xmm7 8696; SSE42-NEXT: shufps {{.*#+}} xmm7 = xmm7[0,2],xmm8[0,2] 8697; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm6 8698; SSE42-NEXT: cmpltpd %xmm5, %xmm6 8699; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 8700; SSE42-NEXT: cmpltpd %xmm4, %xmm5 8701; SSE42-NEXT: pslld $31, %xmm7 8702; SSE42-NEXT: psrad $31, %xmm7 8703; SSE42-NEXT: shufps {{.*#+}} xmm5 = xmm5[0,2],xmm6[0,2] 8704; SSE42-NEXT: movdqa {{.*#+}} xmm4 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15] 8705; SSE42-NEXT: pshufb %xmm4, %xmm7 8706; SSE42-NEXT: pslld $31, %xmm5 8707; SSE42-NEXT: psrad $31, %xmm5 8708; SSE42-NEXT: pshufb %xmm4, %xmm5 8709; SSE42-NEXT: punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm7[0] 8710; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm6 8711; SSE42-NEXT: cmpltpd %xmm3, %xmm6 8712; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm3 8713; SSE42-NEXT: cmpltpd %xmm2, %xmm3 8714; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm2 8715; SSE42-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,2],xmm6[0,2] 8716; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm6 8717; SSE42-NEXT: cmpltpd %xmm1, %xmm6 8718; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm1 8719; SSE42-NEXT: cmpltpd %xmm0, %xmm1 8720; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm0 8721; SSE42-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,2],xmm6[0,2] 8722; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm6 8723; SSE42-NEXT: psllw $15, %xmm5 8724; SSE42-NEXT: psraw $15, %xmm5 8725; SSE42-NEXT: pslld $31, %xmm3 8726; SSE42-NEXT: psrad $31, %xmm3 8727; SSE42-NEXT: pshufb %xmm4, %xmm3 8728; SSE42-NEXT: pslld $31, %xmm1 8729; SSE42-NEXT: psrad $31, %xmm1 8730; SSE42-NEXT: pshufb %xmm4, %xmm1 8731; SSE42-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm3[0] 8732; SSE42-NEXT: movdqa {{.*#+}} xmm3 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u> 8733; SSE42-NEXT: pshufb %xmm3, %xmm5 8734; SSE42-NEXT: psllw $15, %xmm1 8735; SSE42-NEXT: psraw $15, %xmm1 8736; SSE42-NEXT: pshufb %xmm3, %xmm1 8737; SSE42-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm5[0] 8738; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 8739; SSE42-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm5 8740; SSE42-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm6 8741; SSE42-NEXT: shufps {{.*#+}} xmm6 = xmm6[0,2],xmm5[0,2] 8742; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 8743; SSE42-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm5 8744; SSE42-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm0 8745; SSE42-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,2],xmm5[0,2] 8746; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 8747; SSE42-NEXT: pslld $31, %xmm6 8748; SSE42-NEXT: psrad $31, %xmm6 8749; SSE42-NEXT: pshufb %xmm4, %xmm6 8750; SSE42-NEXT: pslld $31, %xmm0 8751; SSE42-NEXT: psrad $31, %xmm0 8752; SSE42-NEXT: pshufb %xmm4, %xmm0 8753; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm6[0] 8754; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm6 8755; SSE42-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm6 8756; SSE42-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm5 8757; SSE42-NEXT: shufps {{.*#+}} xmm5 = xmm5[0,2],xmm6[0,2] 8758; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm6 8759; SSE42-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm6 8760; SSE42-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm2 8761; SSE42-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,2],xmm6[0,2] 8762; SSE42-NEXT: pslld $31, %xmm5 8763; SSE42-NEXT: psrad $31, %xmm5 8764; SSE42-NEXT: pshufb %xmm4, %xmm5 8765; SSE42-NEXT: pslld $31, %xmm2 8766; SSE42-NEXT: psrad $31, %xmm2 8767; SSE42-NEXT: pshufb %xmm4, %xmm2 8768; SSE42-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm5[0] 8769; SSE42-NEXT: psllw $15, %xmm0 8770; SSE42-NEXT: psraw $15, %xmm0 8771; SSE42-NEXT: pshufb %xmm3, %xmm0 8772; SSE42-NEXT: psllw $15, %xmm2 8773; SSE42-NEXT: psraw $15, %xmm2 8774; SSE42-NEXT: pshufb %xmm3, %xmm2 8775; SSE42-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm0[0] 8776; SSE42-NEXT: pextrb $15, %xmm2, %eax 8777; SSE42-NEXT: andb $1, %al 8778; SSE42-NEXT: movb %al, 2(%rdi) 8779; SSE42-NEXT: pextrb $14, %xmm2, %eax 8780; SSE42-NEXT: andb $1, %al 8781; SSE42-NEXT: movb %al, 2(%rdi) 8782; SSE42-NEXT: pextrb $13, %xmm2, %r8d 8783; SSE42-NEXT: pextrb $12, %xmm2, %r9d 8784; SSE42-NEXT: pextrb $11, %xmm2, %r10d 8785; SSE42-NEXT: pextrb $10, %xmm2, %r11d 8786; SSE42-NEXT: pextrb $9, %xmm2, %r14d 8787; SSE42-NEXT: pextrb $8, %xmm2, %r15d 8788; SSE42-NEXT: pextrb $7, %xmm2, %r12d 8789; SSE42-NEXT: pextrb $6, %xmm2, %r13d 8790; SSE42-NEXT: pextrb $5, %xmm2, %ebx 8791; SSE42-NEXT: pextrb $4, %xmm2, %ebp 8792; SSE42-NEXT: pextrb $3, %xmm2, %eax 8793; SSE42-NEXT: pextrb $2, %xmm2, %ecx 8794; SSE42-NEXT: pextrb $1, %xmm2, %edx 8795; SSE42-NEXT: pextrb $0, %xmm2, %esi 8796; SSE42-NEXT: andb $1, %r8b 8797; SSE42-NEXT: movb %r8b, 2(%rdi) 8798; SSE42-NEXT: andb $1, %r9b 8799; SSE42-NEXT: movb %r9b, 2(%rdi) 8800; SSE42-NEXT: andb $1, %r10b 8801; SSE42-NEXT: movb %r10b, 2(%rdi) 8802; SSE42-NEXT: andb $1, %r11b 8803; SSE42-NEXT: movb %r11b, 2(%rdi) 8804; SSE42-NEXT: andb $1, %r14b 8805; SSE42-NEXT: movb %r14b, 2(%rdi) 8806; SSE42-NEXT: andb $1, %r15b 8807; SSE42-NEXT: movb %r15b, 2(%rdi) 8808; SSE42-NEXT: andb $1, %r12b 8809; SSE42-NEXT: movb %r12b, 2(%rdi) 8810; SSE42-NEXT: andb $1, %r13b 8811; SSE42-NEXT: movb %r13b, 2(%rdi) 8812; SSE42-NEXT: andb $1, %bl 8813; SSE42-NEXT: movb %bl, 2(%rdi) 8814; SSE42-NEXT: andb $1, %bpl 8815; SSE42-NEXT: movb %bpl, 2(%rdi) 8816; SSE42-NEXT: andb $1, %al 8817; SSE42-NEXT: movb %al, 2(%rdi) 8818; SSE42-NEXT: andb $1, %cl 8819; SSE42-NEXT: movb %cl, 2(%rdi) 8820; SSE42-NEXT: andb $1, %dl 8821; SSE42-NEXT: movb %dl, 2(%rdi) 8822; SSE42-NEXT: andb $1, %sil 8823; SSE42-NEXT: movb %sil, 2(%rdi) 8824; SSE42-NEXT: pextrb $15, %xmm1, %eax 8825; SSE42-NEXT: andb $1, %al 8826; SSE42-NEXT: movb %al, (%rdi) 8827; SSE42-NEXT: pextrb $14, %xmm1, %eax 8828; SSE42-NEXT: andb $1, %al 8829; SSE42-NEXT: movb %al, (%rdi) 8830; SSE42-NEXT: pextrb $13, %xmm1, %r8d 8831; SSE42-NEXT: pextrb $12, %xmm1, %r9d 8832; SSE42-NEXT: pextrb $11, %xmm1, %r10d 8833; SSE42-NEXT: pextrb $10, %xmm1, %r11d 8834; SSE42-NEXT: pextrb $9, %xmm1, %r14d 8835; SSE42-NEXT: pextrb $8, %xmm1, %r15d 8836; SSE42-NEXT: pextrb $7, %xmm1, %r12d 8837; SSE42-NEXT: pextrb $6, %xmm1, %r13d 8838; SSE42-NEXT: pextrb $5, %xmm1, %ebx 8839; SSE42-NEXT: pextrb $4, %xmm1, %ebp 8840; SSE42-NEXT: pextrb $3, %xmm1, %eax 8841; SSE42-NEXT: pextrb $2, %xmm1, %ecx 8842; SSE42-NEXT: pextrb $1, %xmm1, %edx 8843; SSE42-NEXT: pextrb $0, %xmm1, %esi 8844; SSE42-NEXT: andb $1, %r8b 8845; SSE42-NEXT: movb %r8b, (%rdi) 8846; SSE42-NEXT: andb $1, %r9b 8847; SSE42-NEXT: movb %r9b, (%rdi) 8848; SSE42-NEXT: andb $1, %r10b 8849; SSE42-NEXT: movb %r10b, (%rdi) 8850; SSE42-NEXT: andb $1, %r11b 8851; SSE42-NEXT: movb %r11b, (%rdi) 8852; SSE42-NEXT: andb $1, %r14b 8853; SSE42-NEXT: movb %r14b, (%rdi) 8854; SSE42-NEXT: andb $1, %r15b 8855; SSE42-NEXT: movb %r15b, (%rdi) 8856; SSE42-NEXT: andb $1, %r12b 8857; SSE42-NEXT: movb %r12b, (%rdi) 8858; SSE42-NEXT: andb $1, %r13b 8859; SSE42-NEXT: movb %r13b, (%rdi) 8860; SSE42-NEXT: andb $1, %bl 8861; SSE42-NEXT: movb %bl, (%rdi) 8862; SSE42-NEXT: andb $1, %bpl 8863; SSE42-NEXT: movb %bpl, (%rdi) 8864; SSE42-NEXT: andb $1, %al 8865; SSE42-NEXT: movb %al, (%rdi) 8866; SSE42-NEXT: andb $1, %cl 8867; SSE42-NEXT: movb %cl, (%rdi) 8868; SSE42-NEXT: andb $1, %dl 8869; SSE42-NEXT: movb %dl, (%rdi) 8870; SSE42-NEXT: andb $1, %sil 8871; SSE42-NEXT: movb %sil, (%rdi) 8872; SSE42-NEXT: movq %rdi, %rax 8873; SSE42-NEXT: popq %rbx 8874; SSE42-NEXT: popq %r12 8875; SSE42-NEXT: popq %r13 8876; SSE42-NEXT: popq %r14 8877; SSE42-NEXT: popq %r15 8878; SSE42-NEXT: popq %rbp 8879; SSE42-NEXT: retq 8880; 8881; AVX1-LABEL: test_cmp_v32f64: 8882; AVX1: # BB#0: 8883; AVX1-NEXT: pushq %rbp 8884; AVX1-NEXT: movq %rsp, %rbp 8885; AVX1-NEXT: andq $-32, %rsp 8886; AVX1-NEXT: subq $32, %rsp 8887; AVX1-NEXT: vmovapd 16(%rbp), %ymm8 8888; AVX1-NEXT: vmovapd 48(%rbp), %ymm9 8889; AVX1-NEXT: vmovapd 80(%rbp), %ymm10 8890; AVX1-NEXT: vmovapd 112(%rbp), %ymm11 8891; AVX1-NEXT: vmovapd 144(%rbp), %ymm12 8892; AVX1-NEXT: vmovapd 176(%rbp), %ymm13 8893; AVX1-NEXT: vmovapd 208(%rbp), %ymm14 8894; AVX1-NEXT: vmovapd 240(%rbp), %ymm15 8895; AVX1-NEXT: vcmpltpd %ymm7, %ymm15, %ymm15 8896; AVX1-NEXT: vextractf128 $1, %ymm15, %xmm7 8897; AVX1-NEXT: vpacksswb %xmm7, %xmm15, %xmm15 8898; AVX1-NEXT: vcmpltpd %ymm6, %ymm14, %ymm6 8899; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm7 8900; AVX1-NEXT: vpacksswb %xmm7, %xmm6, %xmm6 8901; AVX1-NEXT: vpacksswb %xmm15, %xmm6, %xmm6 8902; AVX1-NEXT: vcmpltpd %ymm5, %ymm13, %ymm5 8903; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm7 8904; AVX1-NEXT: vpacksswb %xmm7, %xmm5, %xmm5 8905; AVX1-NEXT: vcmpltpd %ymm4, %ymm12, %ymm4 8906; AVX1-NEXT: vextractf128 $1, %ymm4, %xmm7 8907; AVX1-NEXT: vpacksswb %xmm7, %xmm4, %xmm4 8908; AVX1-NEXT: vpacksswb %xmm5, %xmm4, %xmm4 8909; AVX1-NEXT: vpacksswb %xmm6, %xmm4, %xmm4 8910; AVX1-NEXT: vcmpltpd %ymm3, %ymm11, %ymm3 8911; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm5 8912; AVX1-NEXT: vpacksswb %xmm5, %xmm3, %xmm3 8913; AVX1-NEXT: vcmpltpd %ymm2, %ymm10, %ymm2 8914; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm5 8915; AVX1-NEXT: vpacksswb %xmm5, %xmm2, %xmm2 8916; AVX1-NEXT: vpacksswb %xmm3, %xmm2, %xmm2 8917; AVX1-NEXT: vcmpltpd %ymm1, %ymm9, %ymm1 8918; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 8919; AVX1-NEXT: vpacksswb %xmm3, %xmm1, %xmm1 8920; AVX1-NEXT: vcmpltpd %ymm0, %ymm8, %ymm0 8921; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 8922; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 8923; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 8924; AVX1-NEXT: vpacksswb %xmm2, %xmm0, %xmm0 8925; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm0 8926; AVX1-NEXT: movq %rbp, %rsp 8927; AVX1-NEXT: popq %rbp 8928; AVX1-NEXT: retq 8929; 8930; AVX2-LABEL: test_cmp_v32f64: 8931; AVX2: # BB#0: 8932; AVX2-NEXT: pushq %rbp 8933; AVX2-NEXT: movq %rsp, %rbp 8934; AVX2-NEXT: andq $-32, %rsp 8935; AVX2-NEXT: subq $32, %rsp 8936; AVX2-NEXT: vmovapd 16(%rbp), %ymm8 8937; AVX2-NEXT: vmovapd 48(%rbp), %ymm9 8938; AVX2-NEXT: vmovapd 80(%rbp), %ymm10 8939; AVX2-NEXT: vmovapd 112(%rbp), %ymm11 8940; AVX2-NEXT: vmovapd 144(%rbp), %ymm12 8941; AVX2-NEXT: vmovapd 176(%rbp), %ymm13 8942; AVX2-NEXT: vmovapd 208(%rbp), %ymm14 8943; AVX2-NEXT: vmovapd 240(%rbp), %ymm15 8944; AVX2-NEXT: vcmpltpd %ymm7, %ymm15, %ymm7 8945; AVX2-NEXT: vcmpltpd %ymm6, %ymm14, %ymm6 8946; AVX2-NEXT: vpacksswb %ymm7, %ymm6, %ymm6 8947; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,2,1,3] 8948; AVX2-NEXT: vcmpltpd %ymm5, %ymm13, %ymm5 8949; AVX2-NEXT: vcmpltpd %ymm4, %ymm12, %ymm4 8950; AVX2-NEXT: vpacksswb %ymm5, %ymm4, %ymm4 8951; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,2,1,3] 8952; AVX2-NEXT: vpacksswb %ymm6, %ymm4, %ymm4 8953; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,2,1,3] 8954; AVX2-NEXT: vcmpltpd %ymm3, %ymm11, %ymm3 8955; AVX2-NEXT: vcmpltpd %ymm2, %ymm10, %ymm2 8956; AVX2-NEXT: vpacksswb %ymm3, %ymm2, %ymm2 8957; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,1,3] 8958; AVX2-NEXT: vcmpltpd %ymm1, %ymm9, %ymm1 8959; AVX2-NEXT: vcmpltpd %ymm0, %ymm8, %ymm0 8960; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 8961; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 8962; AVX2-NEXT: vpacksswb %ymm2, %ymm0, %ymm0 8963; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 8964; AVX2-NEXT: vpacksswb %ymm4, %ymm0, %ymm0 8965; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 8966; AVX2-NEXT: movq %rbp, %rsp 8967; AVX2-NEXT: popq %rbp 8968; AVX2-NEXT: retq 8969; 8970; AVX512F-LABEL: test_cmp_v32f64: 8971; AVX512F: # BB#0: 8972; AVX512F-NEXT: vextractf32x4 $3, %zmm4, %xmm8 8973; AVX512F-NEXT: vextractf32x4 $3, %zmm0, %xmm9 8974; AVX512F-NEXT: xorl %eax, %eax 8975; AVX512F-NEXT: vucomisd %xmm8, %xmm9 8976; AVX512F-NEXT: movq $-1, %rcx 8977; AVX512F-NEXT: movl $0, %edx 8978; AVX512F-NEXT: cmovaq %rcx, %rdx 8979; AVX512F-NEXT: vmovq %rdx, %xmm10 8980; AVX512F-NEXT: vpermilpd {{.*#+}} xmm8 = xmm8[1,0] 8981; AVX512F-NEXT: vpermilpd {{.*#+}} xmm9 = xmm9[1,0] 8982; AVX512F-NEXT: vucomisd %xmm8, %xmm9 8983; AVX512F-NEXT: movl $0, %edx 8984; AVX512F-NEXT: cmovaq %rcx, %rdx 8985; AVX512F-NEXT: vmovq %rdx, %xmm8 8986; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm8 = xmm10[0],xmm8[0] 8987; AVX512F-NEXT: vextractf32x4 $2, %zmm4, %xmm9 8988; AVX512F-NEXT: vextractf32x4 $2, %zmm0, %xmm10 8989; AVX512F-NEXT: vucomisd %xmm9, %xmm10 8990; AVX512F-NEXT: movl $0, %edx 8991; AVX512F-NEXT: cmovaq %rcx, %rdx 8992; AVX512F-NEXT: vmovq %rdx, %xmm11 8993; AVX512F-NEXT: vpermilpd {{.*#+}} xmm9 = xmm9[1,0] 8994; AVX512F-NEXT: vpermilpd {{.*#+}} xmm10 = xmm10[1,0] 8995; AVX512F-NEXT: vucomisd %xmm9, %xmm10 8996; AVX512F-NEXT: movl $0, %edx 8997; AVX512F-NEXT: cmovaq %rcx, %rdx 8998; AVX512F-NEXT: vmovq %rdx, %xmm9 8999; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm11[0],xmm9[0] 9000; AVX512F-NEXT: vinserti128 $1, %xmm8, %ymm9, %ymm8 9001; AVX512F-NEXT: vextractf32x4 $1, %zmm4, %xmm9 9002; AVX512F-NEXT: vextractf32x4 $1, %zmm0, %xmm10 9003; AVX512F-NEXT: vucomisd %xmm9, %xmm10 9004; AVX512F-NEXT: movl $0, %edx 9005; AVX512F-NEXT: cmovaq %rcx, %rdx 9006; AVX512F-NEXT: vmovq %rdx, %xmm11 9007; AVX512F-NEXT: vpermilpd {{.*#+}} xmm9 = xmm9[1,0] 9008; AVX512F-NEXT: vpermilpd {{.*#+}} xmm10 = xmm10[1,0] 9009; AVX512F-NEXT: vucomisd %xmm9, %xmm10 9010; AVX512F-NEXT: movl $0, %edx 9011; AVX512F-NEXT: cmovaq %rcx, %rdx 9012; AVX512F-NEXT: vmovq %rdx, %xmm9 9013; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm11[0],xmm9[0] 9014; AVX512F-NEXT: vucomisd %xmm4, %xmm0 9015; AVX512F-NEXT: movl $0, %edx 9016; AVX512F-NEXT: cmovaq %rcx, %rdx 9017; AVX512F-NEXT: vmovq %rdx, %xmm10 9018; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9019; AVX512F-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 9020; AVX512F-NEXT: vucomisd %xmm4, %xmm0 9021; AVX512F-NEXT: movl $0, %edx 9022; AVX512F-NEXT: cmovaq %rcx, %rdx 9023; AVX512F-NEXT: vmovq %rdx, %xmm0 9024; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm10[0],xmm0[0] 9025; AVX512F-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm0 9026; AVX512F-NEXT: vinserti64x4 $1, %ymm8, %zmm0, %zmm0 9027; AVX512F-NEXT: vpmovqd %zmm0, %ymm8 9028; AVX512F-NEXT: vextractf32x4 $3, %zmm5, %xmm4 9029; AVX512F-NEXT: vextractf32x4 $3, %zmm1, %xmm0 9030; AVX512F-NEXT: vucomisd %xmm4, %xmm0 9031; AVX512F-NEXT: movl $0, %edx 9032; AVX512F-NEXT: cmovaq %rcx, %rdx 9033; AVX512F-NEXT: vmovq %rdx, %xmm9 9034; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9035; AVX512F-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 9036; AVX512F-NEXT: vucomisd %xmm4, %xmm0 9037; AVX512F-NEXT: movl $0, %edx 9038; AVX512F-NEXT: cmovaq %rcx, %rdx 9039; AVX512F-NEXT: vmovq %rdx, %xmm0 9040; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm0[0] 9041; AVX512F-NEXT: vextractf32x4 $2, %zmm5, %xmm4 9042; AVX512F-NEXT: vextractf32x4 $2, %zmm1, %xmm0 9043; AVX512F-NEXT: vucomisd %xmm4, %xmm0 9044; AVX512F-NEXT: movl $0, %edx 9045; AVX512F-NEXT: cmovaq %rcx, %rdx 9046; AVX512F-NEXT: vmovq %rdx, %xmm10 9047; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9048; AVX512F-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 9049; AVX512F-NEXT: vucomisd %xmm4, %xmm0 9050; AVX512F-NEXT: movl $0, %edx 9051; AVX512F-NEXT: cmovaq %rcx, %rdx 9052; AVX512F-NEXT: vmovq %rdx, %xmm0 9053; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm10[0],xmm0[0] 9054; AVX512F-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm9 9055; AVX512F-NEXT: vextractf32x4 $1, %zmm5, %xmm4 9056; AVX512F-NEXT: vextractf32x4 $1, %zmm1, %xmm0 9057; AVX512F-NEXT: vucomisd %xmm4, %xmm0 9058; AVX512F-NEXT: movl $0, %edx 9059; AVX512F-NEXT: cmovaq %rcx, %rdx 9060; AVX512F-NEXT: vmovq %rdx, %xmm10 9061; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9062; AVX512F-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 9063; AVX512F-NEXT: vucomisd %xmm4, %xmm0 9064; AVX512F-NEXT: movl $0, %edx 9065; AVX512F-NEXT: cmovaq %rcx, %rdx 9066; AVX512F-NEXT: vmovq %rdx, %xmm0 9067; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm10[0],xmm0[0] 9068; AVX512F-NEXT: vucomisd %xmm5, %xmm1 9069; AVX512F-NEXT: movl $0, %edx 9070; AVX512F-NEXT: cmovaq %rcx, %rdx 9071; AVX512F-NEXT: vmovq %rdx, %xmm4 9072; AVX512F-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 9073; AVX512F-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 9074; AVX512F-NEXT: vucomisd %xmm5, %xmm1 9075; AVX512F-NEXT: movl $0, %edx 9076; AVX512F-NEXT: cmovaq %rcx, %rdx 9077; AVX512F-NEXT: vmovq %rdx, %xmm1 9078; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm4[0],xmm1[0] 9079; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 9080; AVX512F-NEXT: vinserti64x4 $1, %ymm9, %zmm0, %zmm0 9081; AVX512F-NEXT: vpmovqd %zmm0, %ymm0 9082; AVX512F-NEXT: vinserti64x4 $1, %ymm0, %zmm8, %zmm0 9083; AVX512F-NEXT: vpmovdb %zmm0, %xmm8 9084; AVX512F-NEXT: vextractf32x4 $3, %zmm6, %xmm1 9085; AVX512F-NEXT: vextractf32x4 $3, %zmm2, %xmm4 9086; AVX512F-NEXT: vucomisd %xmm1, %xmm4 9087; AVX512F-NEXT: movl $0, %edx 9088; AVX512F-NEXT: cmovaq %rcx, %rdx 9089; AVX512F-NEXT: vmovq %rdx, %xmm5 9090; AVX512F-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 9091; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9092; AVX512F-NEXT: vucomisd %xmm1, %xmm4 9093; AVX512F-NEXT: movl $0, %edx 9094; AVX512F-NEXT: cmovaq %rcx, %rdx 9095; AVX512F-NEXT: vmovq %rdx, %xmm1 9096; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm5[0],xmm1[0] 9097; AVX512F-NEXT: vextractf32x4 $2, %zmm6, %xmm4 9098; AVX512F-NEXT: vextractf32x4 $2, %zmm2, %xmm5 9099; AVX512F-NEXT: vucomisd %xmm4, %xmm5 9100; AVX512F-NEXT: movl $0, %edx 9101; AVX512F-NEXT: cmovaq %rcx, %rdx 9102; AVX512F-NEXT: vmovq %rdx, %xmm0 9103; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9104; AVX512F-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 9105; AVX512F-NEXT: vucomisd %xmm4, %xmm5 9106; AVX512F-NEXT: movl $0, %edx 9107; AVX512F-NEXT: cmovaq %rcx, %rdx 9108; AVX512F-NEXT: vmovq %rdx, %xmm4 9109; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm4[0] 9110; AVX512F-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 9111; AVX512F-NEXT: vextractf32x4 $1, %zmm6, %xmm1 9112; AVX512F-NEXT: vextractf32x4 $1, %zmm2, %xmm4 9113; AVX512F-NEXT: vucomisd %xmm1, %xmm4 9114; AVX512F-NEXT: movl $0, %edx 9115; AVX512F-NEXT: cmovaq %rcx, %rdx 9116; AVX512F-NEXT: vmovq %rdx, %xmm5 9117; AVX512F-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 9118; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9119; AVX512F-NEXT: vucomisd %xmm1, %xmm4 9120; AVX512F-NEXT: movl $0, %edx 9121; AVX512F-NEXT: cmovaq %rcx, %rdx 9122; AVX512F-NEXT: vmovq %rdx, %xmm1 9123; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm5[0],xmm1[0] 9124; AVX512F-NEXT: vucomisd %xmm6, %xmm2 9125; AVX512F-NEXT: movl $0, %edx 9126; AVX512F-NEXT: cmovaq %rcx, %rdx 9127; AVX512F-NEXT: vmovq %rdx, %xmm4 9128; AVX512F-NEXT: vpermilpd {{.*#+}} xmm5 = xmm6[1,0] 9129; AVX512F-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 9130; AVX512F-NEXT: vucomisd %xmm5, %xmm2 9131; AVX512F-NEXT: movl $0, %edx 9132; AVX512F-NEXT: cmovaq %rcx, %rdx 9133; AVX512F-NEXT: vmovq %rdx, %xmm2 9134; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm4[0],xmm2[0] 9135; AVX512F-NEXT: vinserti128 $1, %xmm1, %ymm2, %ymm1 9136; AVX512F-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm0 9137; AVX512F-NEXT: vpmovqd %zmm0, %ymm0 9138; AVX512F-NEXT: vextractf32x4 $3, %zmm7, %xmm1 9139; AVX512F-NEXT: vextractf32x4 $3, %zmm3, %xmm2 9140; AVX512F-NEXT: vucomisd %xmm1, %xmm2 9141; AVX512F-NEXT: movl $0, %edx 9142; AVX512F-NEXT: cmovaq %rcx, %rdx 9143; AVX512F-NEXT: vmovq %rdx, %xmm4 9144; AVX512F-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 9145; AVX512F-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 9146; AVX512F-NEXT: vucomisd %xmm1, %xmm2 9147; AVX512F-NEXT: movl $0, %edx 9148; AVX512F-NEXT: cmovaq %rcx, %rdx 9149; AVX512F-NEXT: vmovq %rdx, %xmm1 9150; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm4[0],xmm1[0] 9151; AVX512F-NEXT: vextractf32x4 $2, %zmm7, %xmm2 9152; AVX512F-NEXT: vextractf32x4 $2, %zmm3, %xmm4 9153; AVX512F-NEXT: vucomisd %xmm2, %xmm4 9154; AVX512F-NEXT: movl $0, %edx 9155; AVX512F-NEXT: cmovaq %rcx, %rdx 9156; AVX512F-NEXT: vmovq %rdx, %xmm5 9157; AVX512F-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 9158; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9159; AVX512F-NEXT: vucomisd %xmm2, %xmm4 9160; AVX512F-NEXT: movl $0, %edx 9161; AVX512F-NEXT: cmovaq %rcx, %rdx 9162; AVX512F-NEXT: vmovq %rdx, %xmm2 9163; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm5[0],xmm2[0] 9164; AVX512F-NEXT: vinserti128 $1, %xmm1, %ymm2, %ymm1 9165; AVX512F-NEXT: vextractf32x4 $1, %zmm7, %xmm2 9166; AVX512F-NEXT: vextractf32x4 $1, %zmm3, %xmm4 9167; AVX512F-NEXT: vucomisd %xmm2, %xmm4 9168; AVX512F-NEXT: movl $0, %edx 9169; AVX512F-NEXT: cmovaq %rcx, %rdx 9170; AVX512F-NEXT: vmovq %rdx, %xmm5 9171; AVX512F-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 9172; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9173; AVX512F-NEXT: vucomisd %xmm2, %xmm4 9174; AVX512F-NEXT: movl $0, %edx 9175; AVX512F-NEXT: cmovaq %rcx, %rdx 9176; AVX512F-NEXT: vmovq %rdx, %xmm2 9177; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm5[0],xmm2[0] 9178; AVX512F-NEXT: vucomisd %xmm7, %xmm3 9179; AVX512F-NEXT: movl $0, %edx 9180; AVX512F-NEXT: cmovaq %rcx, %rdx 9181; AVX512F-NEXT: vmovq %rdx, %xmm4 9182; AVX512F-NEXT: vpermilpd {{.*#+}} xmm5 = xmm7[1,0] 9183; AVX512F-NEXT: vpermilpd {{.*#+}} xmm3 = xmm3[1,0] 9184; AVX512F-NEXT: vucomisd %xmm5, %xmm3 9185; AVX512F-NEXT: cmovaq %rcx, %rax 9186; AVX512F-NEXT: vmovq %rax, %xmm3 9187; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm4[0],xmm3[0] 9188; AVX512F-NEXT: vinserti128 $1, %xmm2, %ymm3, %ymm2 9189; AVX512F-NEXT: vinserti64x4 $1, %ymm1, %zmm2, %zmm1 9190; AVX512F-NEXT: vpmovqd %zmm1, %ymm1 9191; AVX512F-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 9192; AVX512F-NEXT: vpmovdb %zmm0, %xmm0 9193; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm8, %ymm0 9194; AVX512F-NEXT: retq 9195; 9196; AVX512DQ-LABEL: test_cmp_v32f64: 9197; AVX512DQ: # BB#0: 9198; AVX512DQ-NEXT: vextractf64x2 $3, %zmm4, %xmm8 9199; AVX512DQ-NEXT: vextractf64x2 $3, %zmm0, %xmm9 9200; AVX512DQ-NEXT: xorl %eax, %eax 9201; AVX512DQ-NEXT: vucomisd %xmm8, %xmm9 9202; AVX512DQ-NEXT: movq $-1, %rcx 9203; AVX512DQ-NEXT: movl $0, %edx 9204; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9205; AVX512DQ-NEXT: vmovq %rdx, %xmm10 9206; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm8 = xmm8[1,0] 9207; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm9 = xmm9[1,0] 9208; AVX512DQ-NEXT: vucomisd %xmm8, %xmm9 9209; AVX512DQ-NEXT: movl $0, %edx 9210; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9211; AVX512DQ-NEXT: vmovq %rdx, %xmm8 9212; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm8 = xmm10[0],xmm8[0] 9213; AVX512DQ-NEXT: vextractf64x2 $2, %zmm4, %xmm9 9214; AVX512DQ-NEXT: vextractf64x2 $2, %zmm0, %xmm10 9215; AVX512DQ-NEXT: vucomisd %xmm9, %xmm10 9216; AVX512DQ-NEXT: movl $0, %edx 9217; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9218; AVX512DQ-NEXT: vmovq %rdx, %xmm11 9219; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm9 = xmm9[1,0] 9220; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm10 = xmm10[1,0] 9221; AVX512DQ-NEXT: vucomisd %xmm9, %xmm10 9222; AVX512DQ-NEXT: movl $0, %edx 9223; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9224; AVX512DQ-NEXT: vmovq %rdx, %xmm9 9225; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm11[0],xmm9[0] 9226; AVX512DQ-NEXT: vinserti128 $1, %xmm8, %ymm9, %ymm8 9227; AVX512DQ-NEXT: vextractf64x2 $1, %zmm4, %xmm9 9228; AVX512DQ-NEXT: vextractf64x2 $1, %zmm0, %xmm10 9229; AVX512DQ-NEXT: vucomisd %xmm9, %xmm10 9230; AVX512DQ-NEXT: movl $0, %edx 9231; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9232; AVX512DQ-NEXT: vmovq %rdx, %xmm11 9233; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm9 = xmm9[1,0] 9234; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm10 = xmm10[1,0] 9235; AVX512DQ-NEXT: vucomisd %xmm9, %xmm10 9236; AVX512DQ-NEXT: movl $0, %edx 9237; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9238; AVX512DQ-NEXT: vmovq %rdx, %xmm9 9239; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm11[0],xmm9[0] 9240; AVX512DQ-NEXT: vucomisd %xmm4, %xmm0 9241; AVX512DQ-NEXT: movl $0, %edx 9242; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9243; AVX512DQ-NEXT: vmovq %rdx, %xmm10 9244; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9245; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 9246; AVX512DQ-NEXT: vucomisd %xmm4, %xmm0 9247; AVX512DQ-NEXT: movl $0, %edx 9248; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9249; AVX512DQ-NEXT: vmovq %rdx, %xmm0 9250; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm10[0],xmm0[0] 9251; AVX512DQ-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm0 9252; AVX512DQ-NEXT: vinserti64x4 $1, %ymm8, %zmm0, %zmm0 9253; AVX512DQ-NEXT: vpmovqd %zmm0, %ymm8 9254; AVX512DQ-NEXT: vextractf64x2 $3, %zmm5, %xmm4 9255; AVX512DQ-NEXT: vextractf64x2 $3, %zmm1, %xmm0 9256; AVX512DQ-NEXT: vucomisd %xmm4, %xmm0 9257; AVX512DQ-NEXT: movl $0, %edx 9258; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9259; AVX512DQ-NEXT: vmovq %rdx, %xmm9 9260; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9261; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 9262; AVX512DQ-NEXT: vucomisd %xmm4, %xmm0 9263; AVX512DQ-NEXT: movl $0, %edx 9264; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9265; AVX512DQ-NEXT: vmovq %rdx, %xmm0 9266; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm0[0] 9267; AVX512DQ-NEXT: vextractf64x2 $2, %zmm5, %xmm4 9268; AVX512DQ-NEXT: vextractf64x2 $2, %zmm1, %xmm0 9269; AVX512DQ-NEXT: vucomisd %xmm4, %xmm0 9270; AVX512DQ-NEXT: movl $0, %edx 9271; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9272; AVX512DQ-NEXT: vmovq %rdx, %xmm10 9273; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9274; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 9275; AVX512DQ-NEXT: vucomisd %xmm4, %xmm0 9276; AVX512DQ-NEXT: movl $0, %edx 9277; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9278; AVX512DQ-NEXT: vmovq %rdx, %xmm0 9279; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm10[0],xmm0[0] 9280; AVX512DQ-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm9 9281; AVX512DQ-NEXT: vextractf64x2 $1, %zmm5, %xmm4 9282; AVX512DQ-NEXT: vextractf64x2 $1, %zmm1, %xmm0 9283; AVX512DQ-NEXT: vucomisd %xmm4, %xmm0 9284; AVX512DQ-NEXT: movl $0, %edx 9285; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9286; AVX512DQ-NEXT: vmovq %rdx, %xmm10 9287; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9288; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 9289; AVX512DQ-NEXT: vucomisd %xmm4, %xmm0 9290; AVX512DQ-NEXT: movl $0, %edx 9291; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9292; AVX512DQ-NEXT: vmovq %rdx, %xmm0 9293; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm10[0],xmm0[0] 9294; AVX512DQ-NEXT: vucomisd %xmm5, %xmm1 9295; AVX512DQ-NEXT: movl $0, %edx 9296; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9297; AVX512DQ-NEXT: vmovq %rdx, %xmm4 9298; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 9299; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 9300; AVX512DQ-NEXT: vucomisd %xmm5, %xmm1 9301; AVX512DQ-NEXT: movl $0, %edx 9302; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9303; AVX512DQ-NEXT: vmovq %rdx, %xmm1 9304; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm4[0],xmm1[0] 9305; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 9306; AVX512DQ-NEXT: vinserti64x4 $1, %ymm9, %zmm0, %zmm0 9307; AVX512DQ-NEXT: vpmovqd %zmm0, %ymm0 9308; AVX512DQ-NEXT: vinserti32x8 $1, %ymm0, %zmm8, %zmm0 9309; AVX512DQ-NEXT: vpmovdb %zmm0, %xmm8 9310; AVX512DQ-NEXT: vextractf64x2 $3, %zmm6, %xmm1 9311; AVX512DQ-NEXT: vextractf64x2 $3, %zmm2, %xmm4 9312; AVX512DQ-NEXT: vucomisd %xmm1, %xmm4 9313; AVX512DQ-NEXT: movl $0, %edx 9314; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9315; AVX512DQ-NEXT: vmovq %rdx, %xmm5 9316; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 9317; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9318; AVX512DQ-NEXT: vucomisd %xmm1, %xmm4 9319; AVX512DQ-NEXT: movl $0, %edx 9320; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9321; AVX512DQ-NEXT: vmovq %rdx, %xmm1 9322; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm5[0],xmm1[0] 9323; AVX512DQ-NEXT: vextractf64x2 $2, %zmm6, %xmm4 9324; AVX512DQ-NEXT: vextractf64x2 $2, %zmm2, %xmm5 9325; AVX512DQ-NEXT: vucomisd %xmm4, %xmm5 9326; AVX512DQ-NEXT: movl $0, %edx 9327; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9328; AVX512DQ-NEXT: vmovq %rdx, %xmm0 9329; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9330; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 9331; AVX512DQ-NEXT: vucomisd %xmm4, %xmm5 9332; AVX512DQ-NEXT: movl $0, %edx 9333; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9334; AVX512DQ-NEXT: vmovq %rdx, %xmm4 9335; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm4[0] 9336; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 9337; AVX512DQ-NEXT: vextractf64x2 $1, %zmm6, %xmm1 9338; AVX512DQ-NEXT: vextractf64x2 $1, %zmm2, %xmm4 9339; AVX512DQ-NEXT: vucomisd %xmm1, %xmm4 9340; AVX512DQ-NEXT: movl $0, %edx 9341; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9342; AVX512DQ-NEXT: vmovq %rdx, %xmm5 9343; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 9344; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9345; AVX512DQ-NEXT: vucomisd %xmm1, %xmm4 9346; AVX512DQ-NEXT: movl $0, %edx 9347; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9348; AVX512DQ-NEXT: vmovq %rdx, %xmm1 9349; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm5[0],xmm1[0] 9350; AVX512DQ-NEXT: vucomisd %xmm6, %xmm2 9351; AVX512DQ-NEXT: movl $0, %edx 9352; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9353; AVX512DQ-NEXT: vmovq %rdx, %xmm4 9354; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm5 = xmm6[1,0] 9355; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 9356; AVX512DQ-NEXT: vucomisd %xmm5, %xmm2 9357; AVX512DQ-NEXT: movl $0, %edx 9358; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9359; AVX512DQ-NEXT: vmovq %rdx, %xmm2 9360; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm4[0],xmm2[0] 9361; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm2, %ymm1 9362; AVX512DQ-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm0 9363; AVX512DQ-NEXT: vpmovqd %zmm0, %ymm0 9364; AVX512DQ-NEXT: vextractf64x2 $3, %zmm7, %xmm1 9365; AVX512DQ-NEXT: vextractf64x2 $3, %zmm3, %xmm2 9366; AVX512DQ-NEXT: vucomisd %xmm1, %xmm2 9367; AVX512DQ-NEXT: movl $0, %edx 9368; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9369; AVX512DQ-NEXT: vmovq %rdx, %xmm4 9370; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 9371; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 9372; AVX512DQ-NEXT: vucomisd %xmm1, %xmm2 9373; AVX512DQ-NEXT: movl $0, %edx 9374; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9375; AVX512DQ-NEXT: vmovq %rdx, %xmm1 9376; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm4[0],xmm1[0] 9377; AVX512DQ-NEXT: vextractf64x2 $2, %zmm7, %xmm2 9378; AVX512DQ-NEXT: vextractf64x2 $2, %zmm3, %xmm4 9379; AVX512DQ-NEXT: vucomisd %xmm2, %xmm4 9380; AVX512DQ-NEXT: movl $0, %edx 9381; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9382; AVX512DQ-NEXT: vmovq %rdx, %xmm5 9383; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 9384; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9385; AVX512DQ-NEXT: vucomisd %xmm2, %xmm4 9386; AVX512DQ-NEXT: movl $0, %edx 9387; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9388; AVX512DQ-NEXT: vmovq %rdx, %xmm2 9389; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm5[0],xmm2[0] 9390; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm2, %ymm1 9391; AVX512DQ-NEXT: vextractf64x2 $1, %zmm7, %xmm2 9392; AVX512DQ-NEXT: vextractf64x2 $1, %zmm3, %xmm4 9393; AVX512DQ-NEXT: vucomisd %xmm2, %xmm4 9394; AVX512DQ-NEXT: movl $0, %edx 9395; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9396; AVX512DQ-NEXT: vmovq %rdx, %xmm5 9397; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 9398; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9399; AVX512DQ-NEXT: vucomisd %xmm2, %xmm4 9400; AVX512DQ-NEXT: movl $0, %edx 9401; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9402; AVX512DQ-NEXT: vmovq %rdx, %xmm2 9403; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm5[0],xmm2[0] 9404; AVX512DQ-NEXT: vucomisd %xmm7, %xmm3 9405; AVX512DQ-NEXT: movl $0, %edx 9406; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9407; AVX512DQ-NEXT: vmovq %rdx, %xmm4 9408; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm5 = xmm7[1,0] 9409; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm3 = xmm3[1,0] 9410; AVX512DQ-NEXT: vucomisd %xmm5, %xmm3 9411; AVX512DQ-NEXT: cmovaq %rcx, %rax 9412; AVX512DQ-NEXT: vmovq %rax, %xmm3 9413; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm4[0],xmm3[0] 9414; AVX512DQ-NEXT: vinserti128 $1, %xmm2, %ymm3, %ymm2 9415; AVX512DQ-NEXT: vinserti64x4 $1, %ymm1, %zmm2, %zmm1 9416; AVX512DQ-NEXT: vpmovqd %zmm1, %ymm1 9417; AVX512DQ-NEXT: vinserti32x8 $1, %ymm1, %zmm0, %zmm0 9418; AVX512DQ-NEXT: vpmovdb %zmm0, %xmm0 9419; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm8, %ymm0 9420; AVX512DQ-NEXT: retq 9421; 9422; AVX512BW-LABEL: test_cmp_v32f64: 9423; AVX512BW: # BB#0: 9424; AVX512BW-NEXT: vextractf32x4 $3, %zmm4, %xmm8 9425; AVX512BW-NEXT: vextractf32x4 $3, %zmm0, %xmm9 9426; AVX512BW-NEXT: xorl %eax, %eax 9427; AVX512BW-NEXT: vucomisd %xmm8, %xmm9 9428; AVX512BW-NEXT: movq $-1, %rcx 9429; AVX512BW-NEXT: movl $0, %edx 9430; AVX512BW-NEXT: cmovaq %rcx, %rdx 9431; AVX512BW-NEXT: vmovq %rdx, %xmm10 9432; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm8 = xmm8[1,0] 9433; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm9 = xmm9[1,0] 9434; AVX512BW-NEXT: vucomisd %xmm8, %xmm9 9435; AVX512BW-NEXT: movl $0, %edx 9436; AVX512BW-NEXT: cmovaq %rcx, %rdx 9437; AVX512BW-NEXT: vmovq %rdx, %xmm8 9438; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm8 = xmm10[0],xmm8[0] 9439; AVX512BW-NEXT: vextractf32x4 $2, %zmm4, %xmm9 9440; AVX512BW-NEXT: vextractf32x4 $2, %zmm0, %xmm10 9441; AVX512BW-NEXT: vucomisd %xmm9, %xmm10 9442; AVX512BW-NEXT: movl $0, %edx 9443; AVX512BW-NEXT: cmovaq %rcx, %rdx 9444; AVX512BW-NEXT: vmovq %rdx, %xmm11 9445; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm9 = xmm9[1,0] 9446; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm10 = xmm10[1,0] 9447; AVX512BW-NEXT: vucomisd %xmm9, %xmm10 9448; AVX512BW-NEXT: movl $0, %edx 9449; AVX512BW-NEXT: cmovaq %rcx, %rdx 9450; AVX512BW-NEXT: vmovq %rdx, %xmm9 9451; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm11[0],xmm9[0] 9452; AVX512BW-NEXT: vinserti128 $1, %xmm8, %ymm9, %ymm8 9453; AVX512BW-NEXT: vextractf32x4 $1, %zmm4, %xmm9 9454; AVX512BW-NEXT: vextractf32x4 $1, %zmm0, %xmm10 9455; AVX512BW-NEXT: vucomisd %xmm9, %xmm10 9456; AVX512BW-NEXT: movl $0, %edx 9457; AVX512BW-NEXT: cmovaq %rcx, %rdx 9458; AVX512BW-NEXT: vmovq %rdx, %xmm11 9459; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm9 = xmm9[1,0] 9460; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm10 = xmm10[1,0] 9461; AVX512BW-NEXT: vucomisd %xmm9, %xmm10 9462; AVX512BW-NEXT: movl $0, %edx 9463; AVX512BW-NEXT: cmovaq %rcx, %rdx 9464; AVX512BW-NEXT: vmovq %rdx, %xmm9 9465; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm11[0],xmm9[0] 9466; AVX512BW-NEXT: vucomisd %xmm4, %xmm0 9467; AVX512BW-NEXT: movl $0, %edx 9468; AVX512BW-NEXT: cmovaq %rcx, %rdx 9469; AVX512BW-NEXT: vmovq %rdx, %xmm10 9470; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9471; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 9472; AVX512BW-NEXT: vucomisd %xmm4, %xmm0 9473; AVX512BW-NEXT: movl $0, %edx 9474; AVX512BW-NEXT: cmovaq %rcx, %rdx 9475; AVX512BW-NEXT: vmovq %rdx, %xmm0 9476; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm10[0],xmm0[0] 9477; AVX512BW-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm0 9478; AVX512BW-NEXT: vinserti64x4 $1, %ymm8, %zmm0, %zmm0 9479; AVX512BW-NEXT: vpmovqd %zmm0, %ymm8 9480; AVX512BW-NEXT: vextractf32x4 $3, %zmm5, %xmm4 9481; AVX512BW-NEXT: vextractf32x4 $3, %zmm1, %xmm0 9482; AVX512BW-NEXT: vucomisd %xmm4, %xmm0 9483; AVX512BW-NEXT: movl $0, %edx 9484; AVX512BW-NEXT: cmovaq %rcx, %rdx 9485; AVX512BW-NEXT: vmovq %rdx, %xmm9 9486; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9487; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 9488; AVX512BW-NEXT: vucomisd %xmm4, %xmm0 9489; AVX512BW-NEXT: movl $0, %edx 9490; AVX512BW-NEXT: cmovaq %rcx, %rdx 9491; AVX512BW-NEXT: vmovq %rdx, %xmm0 9492; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm0[0] 9493; AVX512BW-NEXT: vextractf32x4 $2, %zmm5, %xmm4 9494; AVX512BW-NEXT: vextractf32x4 $2, %zmm1, %xmm0 9495; AVX512BW-NEXT: vucomisd %xmm4, %xmm0 9496; AVX512BW-NEXT: movl $0, %edx 9497; AVX512BW-NEXT: cmovaq %rcx, %rdx 9498; AVX512BW-NEXT: vmovq %rdx, %xmm10 9499; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9500; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 9501; AVX512BW-NEXT: vucomisd %xmm4, %xmm0 9502; AVX512BW-NEXT: movl $0, %edx 9503; AVX512BW-NEXT: cmovaq %rcx, %rdx 9504; AVX512BW-NEXT: vmovq %rdx, %xmm0 9505; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm10[0],xmm0[0] 9506; AVX512BW-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm9 9507; AVX512BW-NEXT: vextractf32x4 $1, %zmm5, %xmm4 9508; AVX512BW-NEXT: vextractf32x4 $1, %zmm1, %xmm0 9509; AVX512BW-NEXT: vucomisd %xmm4, %xmm0 9510; AVX512BW-NEXT: movl $0, %edx 9511; AVX512BW-NEXT: cmovaq %rcx, %rdx 9512; AVX512BW-NEXT: vmovq %rdx, %xmm10 9513; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9514; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 9515; AVX512BW-NEXT: vucomisd %xmm4, %xmm0 9516; AVX512BW-NEXT: movl $0, %edx 9517; AVX512BW-NEXT: cmovaq %rcx, %rdx 9518; AVX512BW-NEXT: vmovq %rdx, %xmm0 9519; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm10[0],xmm0[0] 9520; AVX512BW-NEXT: vucomisd %xmm5, %xmm1 9521; AVX512BW-NEXT: movl $0, %edx 9522; AVX512BW-NEXT: cmovaq %rcx, %rdx 9523; AVX512BW-NEXT: vmovq %rdx, %xmm4 9524; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 9525; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 9526; AVX512BW-NEXT: vucomisd %xmm5, %xmm1 9527; AVX512BW-NEXT: movl $0, %edx 9528; AVX512BW-NEXT: cmovaq %rcx, %rdx 9529; AVX512BW-NEXT: vmovq %rdx, %xmm1 9530; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm4[0],xmm1[0] 9531; AVX512BW-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 9532; AVX512BW-NEXT: vinserti64x4 $1, %ymm9, %zmm0, %zmm0 9533; AVX512BW-NEXT: vpmovqd %zmm0, %ymm0 9534; AVX512BW-NEXT: vinserti64x4 $1, %ymm0, %zmm8, %zmm0 9535; AVX512BW-NEXT: vpmovdw %zmm0, %ymm8 9536; AVX512BW-NEXT: vextractf32x4 $3, %zmm6, %xmm1 9537; AVX512BW-NEXT: vextractf32x4 $3, %zmm2, %xmm4 9538; AVX512BW-NEXT: vucomisd %xmm1, %xmm4 9539; AVX512BW-NEXT: movl $0, %edx 9540; AVX512BW-NEXT: cmovaq %rcx, %rdx 9541; AVX512BW-NEXT: vmovq %rdx, %xmm5 9542; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 9543; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9544; AVX512BW-NEXT: vucomisd %xmm1, %xmm4 9545; AVX512BW-NEXT: movl $0, %edx 9546; AVX512BW-NEXT: cmovaq %rcx, %rdx 9547; AVX512BW-NEXT: vmovq %rdx, %xmm1 9548; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm5[0],xmm1[0] 9549; AVX512BW-NEXT: vextractf32x4 $2, %zmm6, %xmm4 9550; AVX512BW-NEXT: vextractf32x4 $2, %zmm2, %xmm5 9551; AVX512BW-NEXT: vucomisd %xmm4, %xmm5 9552; AVX512BW-NEXT: movl $0, %edx 9553; AVX512BW-NEXT: cmovaq %rcx, %rdx 9554; AVX512BW-NEXT: vmovq %rdx, %xmm0 9555; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9556; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 9557; AVX512BW-NEXT: vucomisd %xmm4, %xmm5 9558; AVX512BW-NEXT: movl $0, %edx 9559; AVX512BW-NEXT: cmovaq %rcx, %rdx 9560; AVX512BW-NEXT: vmovq %rdx, %xmm4 9561; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm4[0] 9562; AVX512BW-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 9563; AVX512BW-NEXT: vextractf32x4 $1, %zmm6, %xmm1 9564; AVX512BW-NEXT: vextractf32x4 $1, %zmm2, %xmm4 9565; AVX512BW-NEXT: vucomisd %xmm1, %xmm4 9566; AVX512BW-NEXT: movl $0, %edx 9567; AVX512BW-NEXT: cmovaq %rcx, %rdx 9568; AVX512BW-NEXT: vmovq %rdx, %xmm5 9569; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 9570; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9571; AVX512BW-NEXT: vucomisd %xmm1, %xmm4 9572; AVX512BW-NEXT: movl $0, %edx 9573; AVX512BW-NEXT: cmovaq %rcx, %rdx 9574; AVX512BW-NEXT: vmovq %rdx, %xmm1 9575; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm5[0],xmm1[0] 9576; AVX512BW-NEXT: vucomisd %xmm6, %xmm2 9577; AVX512BW-NEXT: movl $0, %edx 9578; AVX512BW-NEXT: cmovaq %rcx, %rdx 9579; AVX512BW-NEXT: vmovq %rdx, %xmm4 9580; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm5 = xmm6[1,0] 9581; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 9582; AVX512BW-NEXT: vucomisd %xmm5, %xmm2 9583; AVX512BW-NEXT: movl $0, %edx 9584; AVX512BW-NEXT: cmovaq %rcx, %rdx 9585; AVX512BW-NEXT: vmovq %rdx, %xmm2 9586; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm4[0],xmm2[0] 9587; AVX512BW-NEXT: vinserti128 $1, %xmm1, %ymm2, %ymm1 9588; AVX512BW-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm0 9589; AVX512BW-NEXT: vpmovqd %zmm0, %ymm0 9590; AVX512BW-NEXT: vextractf32x4 $3, %zmm7, %xmm1 9591; AVX512BW-NEXT: vextractf32x4 $3, %zmm3, %xmm2 9592; AVX512BW-NEXT: vucomisd %xmm1, %xmm2 9593; AVX512BW-NEXT: movl $0, %edx 9594; AVX512BW-NEXT: cmovaq %rcx, %rdx 9595; AVX512BW-NEXT: vmovq %rdx, %xmm4 9596; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 9597; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 9598; AVX512BW-NEXT: vucomisd %xmm1, %xmm2 9599; AVX512BW-NEXT: movl $0, %edx 9600; AVX512BW-NEXT: cmovaq %rcx, %rdx 9601; AVX512BW-NEXT: vmovq %rdx, %xmm1 9602; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm4[0],xmm1[0] 9603; AVX512BW-NEXT: vextractf32x4 $2, %zmm7, %xmm2 9604; AVX512BW-NEXT: vextractf32x4 $2, %zmm3, %xmm4 9605; AVX512BW-NEXT: vucomisd %xmm2, %xmm4 9606; AVX512BW-NEXT: movl $0, %edx 9607; AVX512BW-NEXT: cmovaq %rcx, %rdx 9608; AVX512BW-NEXT: vmovq %rdx, %xmm5 9609; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 9610; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9611; AVX512BW-NEXT: vucomisd %xmm2, %xmm4 9612; AVX512BW-NEXT: movl $0, %edx 9613; AVX512BW-NEXT: cmovaq %rcx, %rdx 9614; AVX512BW-NEXT: vmovq %rdx, %xmm2 9615; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm5[0],xmm2[0] 9616; AVX512BW-NEXT: vinserti128 $1, %xmm1, %ymm2, %ymm1 9617; AVX512BW-NEXT: vextractf32x4 $1, %zmm7, %xmm2 9618; AVX512BW-NEXT: vextractf32x4 $1, %zmm3, %xmm4 9619; AVX512BW-NEXT: vucomisd %xmm2, %xmm4 9620; AVX512BW-NEXT: movl $0, %edx 9621; AVX512BW-NEXT: cmovaq %rcx, %rdx 9622; AVX512BW-NEXT: vmovq %rdx, %xmm5 9623; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 9624; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9625; AVX512BW-NEXT: vucomisd %xmm2, %xmm4 9626; AVX512BW-NEXT: movl $0, %edx 9627; AVX512BW-NEXT: cmovaq %rcx, %rdx 9628; AVX512BW-NEXT: vmovq %rdx, %xmm2 9629; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm5[0],xmm2[0] 9630; AVX512BW-NEXT: vucomisd %xmm7, %xmm3 9631; AVX512BW-NEXT: movl $0, %edx 9632; AVX512BW-NEXT: cmovaq %rcx, %rdx 9633; AVX512BW-NEXT: vmovq %rdx, %xmm4 9634; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm5 = xmm7[1,0] 9635; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm3 = xmm3[1,0] 9636; AVX512BW-NEXT: vucomisd %xmm5, %xmm3 9637; AVX512BW-NEXT: cmovaq %rcx, %rax 9638; AVX512BW-NEXT: vmovq %rax, %xmm3 9639; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm4[0],xmm3[0] 9640; AVX512BW-NEXT: vinserti128 $1, %xmm2, %ymm3, %ymm2 9641; AVX512BW-NEXT: vinserti64x4 $1, %ymm1, %zmm2, %zmm1 9642; AVX512BW-NEXT: vpmovqd %zmm1, %ymm1 9643; AVX512BW-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 9644; AVX512BW-NEXT: vpmovdw %zmm0, %ymm0 9645; AVX512BW-NEXT: vinserti64x4 $1, %ymm0, %zmm8, %zmm0 9646; AVX512BW-NEXT: vpmovwb %zmm0, %ymm0 9647; AVX512BW-NEXT: retq 9648 %1 = fcmp ogt <32 x double> %a0, %a1 9649 ret <32 x i1> %1 9650} 9651 9652define <32 x i1> @test_cmp_v32i64(<32 x i64> %a0, <32 x i64> %a1) nounwind { 9653; SSE2-LABEL: test_cmp_v32i64: 9654; SSE2: # BB#0: 9655; SSE2-NEXT: movdqa {{.*#+}} xmm8 = [2147483648,0,2147483648,0] 9656; SSE2-NEXT: pxor %xmm8, %xmm7 9657; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm9 9658; SSE2-NEXT: pxor %xmm8, %xmm9 9659; SSE2-NEXT: movdqa %xmm7, %xmm10 9660; SSE2-NEXT: pcmpgtd %xmm9, %xmm10 9661; SSE2-NEXT: pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2] 9662; SSE2-NEXT: pcmpeqd %xmm7, %xmm9 9663; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm9[1,1,3,3] 9664; SSE2-NEXT: pand %xmm11, %xmm7 9665; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3] 9666; SSE2-NEXT: por %xmm7, %xmm9 9667; SSE2-NEXT: pxor %xmm8, %xmm6 9668; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm7 9669; SSE2-NEXT: pxor %xmm8, %xmm7 9670; SSE2-NEXT: movdqa %xmm6, %xmm10 9671; SSE2-NEXT: pcmpgtd %xmm7, %xmm10 9672; SSE2-NEXT: pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2] 9673; SSE2-NEXT: pcmpeqd %xmm6, %xmm7 9674; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm7[1,1,3,3] 9675; SSE2-NEXT: pand %xmm11, %xmm6 9676; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm10[1,1,3,3] 9677; SSE2-NEXT: por %xmm6, %xmm7 9678; SSE2-NEXT: shufps {{.*#+}} xmm7 = xmm7[0,2],xmm9[0,2] 9679; SSE2-NEXT: pslld $31, %xmm7 9680; SSE2-NEXT: psrad $31, %xmm7 9681; SSE2-NEXT: pshuflw {{.*#+}} xmm6 = xmm7[0,2,2,3,4,5,6,7] 9682; SSE2-NEXT: pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,6,6,7] 9683; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm6[0,2,2,3] 9684; SSE2-NEXT: pxor %xmm8, %xmm5 9685; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm7 9686; SSE2-NEXT: pxor %xmm8, %xmm7 9687; SSE2-NEXT: movdqa %xmm5, %xmm6 9688; SSE2-NEXT: pcmpgtd %xmm7, %xmm6 9689; SSE2-NEXT: pshufd {{.*#+}} xmm10 = xmm6[0,0,2,2] 9690; SSE2-NEXT: pcmpeqd %xmm5, %xmm7 9691; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3] 9692; SSE2-NEXT: pand %xmm10, %xmm5 9693; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3] 9694; SSE2-NEXT: por %xmm5, %xmm6 9695; SSE2-NEXT: pxor %xmm8, %xmm4 9696; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm5 9697; SSE2-NEXT: pxor %xmm8, %xmm5 9698; SSE2-NEXT: movdqa %xmm4, %xmm7 9699; SSE2-NEXT: pcmpgtd %xmm5, %xmm7 9700; SSE2-NEXT: pshufd {{.*#+}} xmm10 = xmm7[0,0,2,2] 9701; SSE2-NEXT: pcmpeqd %xmm4, %xmm5 9702; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3] 9703; SSE2-NEXT: pand %xmm10, %xmm4 9704; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3] 9705; SSE2-NEXT: por %xmm4, %xmm5 9706; SSE2-NEXT: shufps {{.*#+}} xmm5 = xmm5[0,2],xmm6[0,2] 9707; SSE2-NEXT: pslld $31, %xmm5 9708; SSE2-NEXT: psrad $31, %xmm5 9709; SSE2-NEXT: pshuflw {{.*#+}} xmm4 = xmm5[0,2,2,3,4,5,6,7] 9710; SSE2-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,6,6,7] 9711; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,2,2,3] 9712; SSE2-NEXT: punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm9[0] 9713; SSE2-NEXT: psllw $15, %xmm5 9714; SSE2-NEXT: psraw $15, %xmm5 9715; SSE2-NEXT: movdqa {{.*#+}} xmm9 = [255,255,255,255,255,255,255,255] 9716; SSE2-NEXT: pand %xmm9, %xmm5 9717; SSE2-NEXT: pxor %xmm8, %xmm3 9718; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm6 9719; SSE2-NEXT: pxor %xmm8, %xmm6 9720; SSE2-NEXT: movdqa %xmm3, %xmm7 9721; SSE2-NEXT: pcmpgtd %xmm6, %xmm7 9722; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2] 9723; SSE2-NEXT: pcmpeqd %xmm3, %xmm6 9724; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm6[1,1,3,3] 9725; SSE2-NEXT: pand %xmm4, %xmm3 9726; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm7[1,1,3,3] 9727; SSE2-NEXT: por %xmm3, %xmm4 9728; SSE2-NEXT: pxor %xmm8, %xmm2 9729; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 9730; SSE2-NEXT: pxor %xmm8, %xmm3 9731; SSE2-NEXT: movdqa %xmm2, %xmm6 9732; SSE2-NEXT: pcmpgtd %xmm3, %xmm6 9733; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2] 9734; SSE2-NEXT: pcmpeqd %xmm2, %xmm3 9735; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm3[1,1,3,3] 9736; SSE2-NEXT: pand %xmm7, %xmm2 9737; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm6[1,1,3,3] 9738; SSE2-NEXT: por %xmm2, %xmm3 9739; SSE2-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,2],xmm4[0,2] 9740; SSE2-NEXT: pslld $31, %xmm3 9741; SSE2-NEXT: psrad $31, %xmm3 9742; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm3[0,2,2,3,4,5,6,7] 9743; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7] 9744; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] 9745; SSE2-NEXT: pxor %xmm8, %xmm1 9746; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 9747; SSE2-NEXT: pxor %xmm8, %xmm3 9748; SSE2-NEXT: movdqa %xmm1, %xmm4 9749; SSE2-NEXT: pcmpgtd %xmm3, %xmm4 9750; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,0,2,2] 9751; SSE2-NEXT: pcmpeqd %xmm1, %xmm3 9752; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm3[1,1,3,3] 9753; SSE2-NEXT: pand %xmm6, %xmm1 9754; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3] 9755; SSE2-NEXT: por %xmm1, %xmm3 9756; SSE2-NEXT: pxor %xmm8, %xmm0 9757; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm1 9758; SSE2-NEXT: pxor %xmm8, %xmm1 9759; SSE2-NEXT: movdqa %xmm0, %xmm4 9760; SSE2-NEXT: pcmpgtd %xmm1, %xmm4 9761; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,0,2,2] 9762; SSE2-NEXT: pcmpeqd %xmm0, %xmm1 9763; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3] 9764; SSE2-NEXT: pand %xmm6, %xmm0 9765; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm4[1,1,3,3] 9766; SSE2-NEXT: por %xmm0, %xmm1 9767; SSE2-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,2],xmm3[0,2] 9768; SSE2-NEXT: pslld $31, %xmm1 9769; SSE2-NEXT: psrad $31, %xmm1 9770; SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm1[0,2,2,3,4,5,6,7] 9771; SSE2-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,6,7] 9772; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3] 9773; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0] 9774; SSE2-NEXT: psllw $15, %xmm0 9775; SSE2-NEXT: psraw $15, %xmm0 9776; SSE2-NEXT: pand %xmm9, %xmm0 9777; SSE2-NEXT: packuswb %xmm5, %xmm0 9778; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm1 9779; SSE2-NEXT: pxor %xmm8, %xmm1 9780; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm2 9781; SSE2-NEXT: pxor %xmm8, %xmm2 9782; SSE2-NEXT: movdqa %xmm2, %xmm3 9783; SSE2-NEXT: pcmpgtd %xmm1, %xmm3 9784; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm3[0,0,2,2] 9785; SSE2-NEXT: pcmpeqd %xmm1, %xmm2 9786; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,1,3,3] 9787; SSE2-NEXT: pand %xmm4, %xmm1 9788; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm3[1,1,3,3] 9789; SSE2-NEXT: por %xmm1, %xmm2 9790; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm1 9791; SSE2-NEXT: pxor %xmm8, %xmm1 9792; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 9793; SSE2-NEXT: pxor %xmm8, %xmm3 9794; SSE2-NEXT: movdqa %xmm3, %xmm4 9795; SSE2-NEXT: pcmpgtd %xmm1, %xmm4 9796; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2] 9797; SSE2-NEXT: pcmpeqd %xmm1, %xmm3 9798; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm3[1,1,3,3] 9799; SSE2-NEXT: pand %xmm5, %xmm1 9800; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3] 9801; SSE2-NEXT: por %xmm1, %xmm3 9802; SSE2-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,2],xmm2[0,2] 9803; SSE2-NEXT: pslld $31, %xmm3 9804; SSE2-NEXT: psrad $31, %xmm3 9805; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm3[0,2,2,3,4,5,6,7] 9806; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 9807; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm1[0,2,2,3] 9808; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm1 9809; SSE2-NEXT: pxor %xmm8, %xmm1 9810; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 9811; SSE2-NEXT: pxor %xmm8, %xmm3 9812; SSE2-NEXT: movdqa %xmm3, %xmm4 9813; SSE2-NEXT: pcmpgtd %xmm1, %xmm4 9814; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2] 9815; SSE2-NEXT: pcmpeqd %xmm1, %xmm3 9816; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm3[1,1,3,3] 9817; SSE2-NEXT: pand %xmm5, %xmm1 9818; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3] 9819; SSE2-NEXT: por %xmm1, %xmm3 9820; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm1 9821; SSE2-NEXT: pxor %xmm8, %xmm1 9822; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm4 9823; SSE2-NEXT: pxor %xmm8, %xmm4 9824; SSE2-NEXT: movdqa %xmm4, %xmm5 9825; SSE2-NEXT: pcmpgtd %xmm1, %xmm5 9826; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2] 9827; SSE2-NEXT: pcmpeqd %xmm1, %xmm4 9828; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm4[1,1,3,3] 9829; SSE2-NEXT: pand %xmm6, %xmm1 9830; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3] 9831; SSE2-NEXT: por %xmm1, %xmm4 9832; SSE2-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,2],xmm3[0,2] 9833; SSE2-NEXT: pslld $31, %xmm4 9834; SSE2-NEXT: psrad $31, %xmm4 9835; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm4[0,2,2,3,4,5,6,7] 9836; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 9837; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 9838; SSE2-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0] 9839; SSE2-NEXT: psllw $15, %xmm1 9840; SSE2-NEXT: psraw $15, %xmm1 9841; SSE2-NEXT: pand %xmm9, %xmm1 9842; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm2 9843; SSE2-NEXT: pxor %xmm8, %xmm2 9844; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 9845; SSE2-NEXT: pxor %xmm8, %xmm3 9846; SSE2-NEXT: movdqa %xmm3, %xmm4 9847; SSE2-NEXT: pcmpgtd %xmm2, %xmm4 9848; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2] 9849; SSE2-NEXT: pcmpeqd %xmm2, %xmm3 9850; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm3[1,1,3,3] 9851; SSE2-NEXT: pand %xmm5, %xmm2 9852; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3] 9853; SSE2-NEXT: por %xmm2, %xmm3 9854; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm2 9855; SSE2-NEXT: pxor %xmm8, %xmm2 9856; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm4 9857; SSE2-NEXT: pxor %xmm8, %xmm4 9858; SSE2-NEXT: movdqa %xmm4, %xmm5 9859; SSE2-NEXT: pcmpgtd %xmm2, %xmm5 9860; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2] 9861; SSE2-NEXT: pcmpeqd %xmm2, %xmm4 9862; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3] 9863; SSE2-NEXT: pand %xmm6, %xmm2 9864; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3] 9865; SSE2-NEXT: por %xmm2, %xmm4 9866; SSE2-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,2],xmm3[0,2] 9867; SSE2-NEXT: pslld $31, %xmm4 9868; SSE2-NEXT: psrad $31, %xmm4 9869; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm4[0,2,2,3,4,5,6,7] 9870; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7] 9871; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] 9872; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 9873; SSE2-NEXT: pxor %xmm8, %xmm3 9874; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm4 9875; SSE2-NEXT: pxor %xmm8, %xmm4 9876; SSE2-NEXT: movdqa %xmm4, %xmm5 9877; SSE2-NEXT: pcmpgtd %xmm3, %xmm5 9878; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2] 9879; SSE2-NEXT: pcmpeqd %xmm3, %xmm4 9880; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3] 9881; SSE2-NEXT: pand %xmm6, %xmm3 9882; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3] 9883; SSE2-NEXT: por %xmm3, %xmm4 9884; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 9885; SSE2-NEXT: pxor %xmm8, %xmm3 9886; SSE2-NEXT: pxor {{[0-9]+}}(%rsp), %xmm8 9887; SSE2-NEXT: movdqa %xmm8, %xmm5 9888; SSE2-NEXT: pcmpgtd %xmm3, %xmm5 9889; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2] 9890; SSE2-NEXT: pcmpeqd %xmm3, %xmm8 9891; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm8[1,1,3,3] 9892; SSE2-NEXT: pand %xmm6, %xmm3 9893; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3] 9894; SSE2-NEXT: por %xmm3, %xmm5 9895; SSE2-NEXT: shufps {{.*#+}} xmm5 = xmm5[0,2],xmm4[0,2] 9896; SSE2-NEXT: pslld $31, %xmm5 9897; SSE2-NEXT: psrad $31, %xmm5 9898; SSE2-NEXT: pshuflw {{.*#+}} xmm3 = xmm5[0,2,2,3,4,5,6,7] 9899; SSE2-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,6,6,7] 9900; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3] 9901; SSE2-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm2[0] 9902; SSE2-NEXT: psllw $15, %xmm3 9903; SSE2-NEXT: psraw $15, %xmm3 9904; SSE2-NEXT: pand %xmm9, %xmm3 9905; SSE2-NEXT: packuswb %xmm1, %xmm3 9906; SSE2-NEXT: movdqa %xmm3, -{{[0-9]+}}(%rsp) 9907; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9908; SSE2-NEXT: andb $1, %al 9909; SSE2-NEXT: movb %al, 2(%rdi) 9910; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 9911; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9912; SSE2-NEXT: andb $1, %al 9913; SSE2-NEXT: movb %al, (%rdi) 9914; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9915; SSE2-NEXT: andb $1, %al 9916; SSE2-NEXT: movb %al, 2(%rdi) 9917; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9918; SSE2-NEXT: andb $1, %al 9919; SSE2-NEXT: movb %al, (%rdi) 9920; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9921; SSE2-NEXT: andb $1, %al 9922; SSE2-NEXT: movb %al, 2(%rdi) 9923; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9924; SSE2-NEXT: andb $1, %al 9925; SSE2-NEXT: movb %al, (%rdi) 9926; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9927; SSE2-NEXT: andb $1, %al 9928; SSE2-NEXT: movb %al, 2(%rdi) 9929; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9930; SSE2-NEXT: andb $1, %al 9931; SSE2-NEXT: movb %al, (%rdi) 9932; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9933; SSE2-NEXT: andb $1, %al 9934; SSE2-NEXT: movb %al, 2(%rdi) 9935; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9936; SSE2-NEXT: andb $1, %al 9937; SSE2-NEXT: movb %al, (%rdi) 9938; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9939; SSE2-NEXT: andb $1, %al 9940; SSE2-NEXT: movb %al, 2(%rdi) 9941; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9942; SSE2-NEXT: andb $1, %al 9943; SSE2-NEXT: movb %al, (%rdi) 9944; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9945; SSE2-NEXT: andb $1, %al 9946; SSE2-NEXT: movb %al, 2(%rdi) 9947; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9948; SSE2-NEXT: andb $1, %al 9949; SSE2-NEXT: movb %al, (%rdi) 9950; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9951; SSE2-NEXT: andb $1, %al 9952; SSE2-NEXT: movb %al, 2(%rdi) 9953; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9954; SSE2-NEXT: andb $1, %al 9955; SSE2-NEXT: movb %al, (%rdi) 9956; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9957; SSE2-NEXT: andb $1, %al 9958; SSE2-NEXT: movb %al, 2(%rdi) 9959; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9960; SSE2-NEXT: andb $1, %al 9961; SSE2-NEXT: movb %al, (%rdi) 9962; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9963; SSE2-NEXT: andb $1, %al 9964; SSE2-NEXT: movb %al, 2(%rdi) 9965; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9966; SSE2-NEXT: andb $1, %al 9967; SSE2-NEXT: movb %al, (%rdi) 9968; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9969; SSE2-NEXT: andb $1, %al 9970; SSE2-NEXT: movb %al, 2(%rdi) 9971; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9972; SSE2-NEXT: andb $1, %al 9973; SSE2-NEXT: movb %al, (%rdi) 9974; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9975; SSE2-NEXT: andb $1, %al 9976; SSE2-NEXT: movb %al, 2(%rdi) 9977; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9978; SSE2-NEXT: andb $1, %al 9979; SSE2-NEXT: movb %al, (%rdi) 9980; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9981; SSE2-NEXT: andb $1, %al 9982; SSE2-NEXT: movb %al, 2(%rdi) 9983; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9984; SSE2-NEXT: andb $1, %al 9985; SSE2-NEXT: movb %al, (%rdi) 9986; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9987; SSE2-NEXT: andb $1, %al 9988; SSE2-NEXT: movb %al, 2(%rdi) 9989; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9990; SSE2-NEXT: andb $1, %al 9991; SSE2-NEXT: movb %al, (%rdi) 9992; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9993; SSE2-NEXT: andb $1, %al 9994; SSE2-NEXT: movb %al, 2(%rdi) 9995; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9996; SSE2-NEXT: andb $1, %al 9997; SSE2-NEXT: movb %al, (%rdi) 9998; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9999; SSE2-NEXT: andb $1, %al 10000; SSE2-NEXT: movb %al, 2(%rdi) 10001; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 10002; SSE2-NEXT: andb $1, %al 10003; SSE2-NEXT: movb %al, (%rdi) 10004; SSE2-NEXT: movq %rdi, %rax 10005; SSE2-NEXT: retq 10006; 10007; SSE42-LABEL: test_cmp_v32i64: 10008; SSE42: # BB#0: 10009; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm8 10010; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm11 10011; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm10 10012; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm12 10013; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm9 10014; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm14 10015; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm13 10016; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm15 10017; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm7 10018; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm6 10019; SSE42-NEXT: shufps {{.*#+}} xmm6 = xmm6[0,2],xmm7[0,2] 10020; SSE42-NEXT: pslld $31, %xmm6 10021; SSE42-NEXT: psrad $31, %xmm6 10022; SSE42-NEXT: movdqa {{.*#+}} xmm7 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15] 10023; SSE42-NEXT: pshufb %xmm7, %xmm6 10024; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm5 10025; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm4 10026; SSE42-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,2],xmm5[0,2] 10027; SSE42-NEXT: pslld $31, %xmm4 10028; SSE42-NEXT: psrad $31, %xmm4 10029; SSE42-NEXT: pshufb %xmm7, %xmm4 10030; SSE42-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 10031; SSE42-NEXT: psllw $15, %xmm4 10032; SSE42-NEXT: psraw $15, %xmm4 10033; SSE42-NEXT: movdqa {{.*#+}} xmm5 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u> 10034; SSE42-NEXT: pshufb %xmm5, %xmm4 10035; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm3 10036; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm2 10037; SSE42-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,2],xmm3[0,2] 10038; SSE42-NEXT: pslld $31, %xmm2 10039; SSE42-NEXT: psrad $31, %xmm2 10040; SSE42-NEXT: pshufb %xmm7, %xmm2 10041; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm1 10042; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm0 10043; SSE42-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,2],xmm1[0,2] 10044; SSE42-NEXT: pslld $31, %xmm0 10045; SSE42-NEXT: psrad $31, %xmm0 10046; SSE42-NEXT: pshufb %xmm7, %xmm0 10047; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0] 10048; SSE42-NEXT: psllw $15, %xmm0 10049; SSE42-NEXT: psraw $15, %xmm0 10050; SSE42-NEXT: pshufb %xmm5, %xmm0 10051; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm4[0] 10052; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm15 10053; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm13 10054; SSE42-NEXT: shufps {{.*#+}} xmm13 = xmm13[0,2],xmm15[0,2] 10055; SSE42-NEXT: pslld $31, %xmm13 10056; SSE42-NEXT: psrad $31, %xmm13 10057; SSE42-NEXT: pshufb %xmm7, %xmm13 10058; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm14 10059; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm9 10060; SSE42-NEXT: shufps {{.*#+}} xmm9 = xmm9[0,2],xmm14[0,2] 10061; SSE42-NEXT: pslld $31, %xmm9 10062; SSE42-NEXT: psrad $31, %xmm9 10063; SSE42-NEXT: pshufb %xmm7, %xmm9 10064; SSE42-NEXT: punpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm13[0] 10065; SSE42-NEXT: psllw $15, %xmm9 10066; SSE42-NEXT: psraw $15, %xmm9 10067; SSE42-NEXT: pshufb %xmm5, %xmm9 10068; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm12 10069; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm10 10070; SSE42-NEXT: shufps {{.*#+}} xmm10 = xmm10[0,2],xmm12[0,2] 10071; SSE42-NEXT: pslld $31, %xmm10 10072; SSE42-NEXT: psrad $31, %xmm10 10073; SSE42-NEXT: pshufb %xmm7, %xmm10 10074; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm11 10075; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm8 10076; SSE42-NEXT: shufps {{.*#+}} xmm8 = xmm8[0,2],xmm11[0,2] 10077; SSE42-NEXT: pslld $31, %xmm8 10078; SSE42-NEXT: psrad $31, %xmm8 10079; SSE42-NEXT: pshufb %xmm7, %xmm8 10080; SSE42-NEXT: punpcklqdq {{.*#+}} xmm8 = xmm8[0],xmm10[0] 10081; SSE42-NEXT: psllw $15, %xmm8 10082; SSE42-NEXT: psraw $15, %xmm8 10083; SSE42-NEXT: pshufb %xmm5, %xmm8 10084; SSE42-NEXT: punpcklqdq {{.*#+}} xmm8 = xmm8[0],xmm9[0] 10085; SSE42-NEXT: pextrb $15, %xmm8, %eax 10086; SSE42-NEXT: andb $1, %al 10087; SSE42-NEXT: movb %al, 2(%rdi) 10088; SSE42-NEXT: pextrb $14, %xmm8, %eax 10089; SSE42-NEXT: andb $1, %al 10090; SSE42-NEXT: movb %al, 2(%rdi) 10091; SSE42-NEXT: pextrb $13, %xmm8, %eax 10092; SSE42-NEXT: andb $1, %al 10093; SSE42-NEXT: movb %al, 2(%rdi) 10094; SSE42-NEXT: pextrb $12, %xmm8, %eax 10095; SSE42-NEXT: andb $1, %al 10096; SSE42-NEXT: movb %al, 2(%rdi) 10097; SSE42-NEXT: pextrb $11, %xmm8, %eax 10098; SSE42-NEXT: andb $1, %al 10099; SSE42-NEXT: movb %al, 2(%rdi) 10100; SSE42-NEXT: pextrb $10, %xmm8, %eax 10101; SSE42-NEXT: andb $1, %al 10102; SSE42-NEXT: movb %al, 2(%rdi) 10103; SSE42-NEXT: pextrb $9, %xmm8, %eax 10104; SSE42-NEXT: andb $1, %al 10105; SSE42-NEXT: movb %al, 2(%rdi) 10106; SSE42-NEXT: pextrb $8, %xmm8, %eax 10107; SSE42-NEXT: andb $1, %al 10108; SSE42-NEXT: movb %al, 2(%rdi) 10109; SSE42-NEXT: pextrb $7, %xmm8, %eax 10110; SSE42-NEXT: andb $1, %al 10111; SSE42-NEXT: movb %al, 2(%rdi) 10112; SSE42-NEXT: pextrb $6, %xmm8, %eax 10113; SSE42-NEXT: andb $1, %al 10114; SSE42-NEXT: movb %al, 2(%rdi) 10115; SSE42-NEXT: pextrb $5, %xmm8, %eax 10116; SSE42-NEXT: andb $1, %al 10117; SSE42-NEXT: movb %al, 2(%rdi) 10118; SSE42-NEXT: pextrb $4, %xmm8, %eax 10119; SSE42-NEXT: andb $1, %al 10120; SSE42-NEXT: movb %al, 2(%rdi) 10121; SSE42-NEXT: pextrb $3, %xmm8, %eax 10122; SSE42-NEXT: andb $1, %al 10123; SSE42-NEXT: movb %al, 2(%rdi) 10124; SSE42-NEXT: pextrb $2, %xmm8, %eax 10125; SSE42-NEXT: andb $1, %al 10126; SSE42-NEXT: movb %al, 2(%rdi) 10127; SSE42-NEXT: pextrb $1, %xmm8, %eax 10128; SSE42-NEXT: andb $1, %al 10129; SSE42-NEXT: movb %al, 2(%rdi) 10130; SSE42-NEXT: pextrb $0, %xmm8, %eax 10131; SSE42-NEXT: andb $1, %al 10132; SSE42-NEXT: movb %al, 2(%rdi) 10133; SSE42-NEXT: pextrb $15, %xmm0, %eax 10134; SSE42-NEXT: andb $1, %al 10135; SSE42-NEXT: movb %al, (%rdi) 10136; SSE42-NEXT: pextrb $14, %xmm0, %eax 10137; SSE42-NEXT: andb $1, %al 10138; SSE42-NEXT: movb %al, (%rdi) 10139; SSE42-NEXT: pextrb $13, %xmm0, %eax 10140; SSE42-NEXT: andb $1, %al 10141; SSE42-NEXT: movb %al, (%rdi) 10142; SSE42-NEXT: pextrb $12, %xmm0, %eax 10143; SSE42-NEXT: andb $1, %al 10144; SSE42-NEXT: movb %al, (%rdi) 10145; SSE42-NEXT: pextrb $11, %xmm0, %eax 10146; SSE42-NEXT: andb $1, %al 10147; SSE42-NEXT: movb %al, (%rdi) 10148; SSE42-NEXT: pextrb $10, %xmm0, %eax 10149; SSE42-NEXT: andb $1, %al 10150; SSE42-NEXT: movb %al, (%rdi) 10151; SSE42-NEXT: pextrb $9, %xmm0, %eax 10152; SSE42-NEXT: andb $1, %al 10153; SSE42-NEXT: movb %al, (%rdi) 10154; SSE42-NEXT: pextrb $8, %xmm0, %eax 10155; SSE42-NEXT: andb $1, %al 10156; SSE42-NEXT: movb %al, (%rdi) 10157; SSE42-NEXT: pextrb $7, %xmm0, %eax 10158; SSE42-NEXT: andb $1, %al 10159; SSE42-NEXT: movb %al, (%rdi) 10160; SSE42-NEXT: pextrb $6, %xmm0, %eax 10161; SSE42-NEXT: andb $1, %al 10162; SSE42-NEXT: movb %al, (%rdi) 10163; SSE42-NEXT: pextrb $5, %xmm0, %eax 10164; SSE42-NEXT: andb $1, %al 10165; SSE42-NEXT: movb %al, (%rdi) 10166; SSE42-NEXT: pextrb $4, %xmm0, %eax 10167; SSE42-NEXT: andb $1, %al 10168; SSE42-NEXT: movb %al, (%rdi) 10169; SSE42-NEXT: pextrb $3, %xmm0, %eax 10170; SSE42-NEXT: andb $1, %al 10171; SSE42-NEXT: movb %al, (%rdi) 10172; SSE42-NEXT: pextrb $2, %xmm0, %eax 10173; SSE42-NEXT: andb $1, %al 10174; SSE42-NEXT: movb %al, (%rdi) 10175; SSE42-NEXT: pextrb $1, %xmm0, %eax 10176; SSE42-NEXT: andb $1, %al 10177; SSE42-NEXT: movb %al, (%rdi) 10178; SSE42-NEXT: pextrb $0, %xmm0, %eax 10179; SSE42-NEXT: andb $1, %al 10180; SSE42-NEXT: movb %al, (%rdi) 10181; SSE42-NEXT: movq %rdi, %rax 10182; SSE42-NEXT: retq 10183; 10184; AVX1-LABEL: test_cmp_v32i64: 10185; AVX1: # BB#0: 10186; AVX1-NEXT: pushq %rbp 10187; AVX1-NEXT: movq %rsp, %rbp 10188; AVX1-NEXT: andq $-32, %rsp 10189; AVX1-NEXT: subq $32, %rsp 10190; AVX1-NEXT: vmovaps 240(%rbp), %ymm8 10191; AVX1-NEXT: vextractf128 $1, %ymm8, %xmm9 10192; AVX1-NEXT: vextractf128 $1, %ymm7, %xmm10 10193; AVX1-NEXT: vpcmpgtq %xmm9, %xmm10, %xmm9 10194; AVX1-NEXT: vmovaps 208(%rbp), %ymm10 10195; AVX1-NEXT: vpcmpgtq %xmm8, %xmm7, %xmm7 10196; AVX1-NEXT: vpacksswb %xmm9, %xmm7, %xmm8 10197; AVX1-NEXT: vextractf128 $1, %ymm10, %xmm9 10198; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm7 10199; AVX1-NEXT: vpcmpgtq %xmm9, %xmm7, %xmm7 10200; AVX1-NEXT: vpcmpgtq %xmm10, %xmm6, %xmm6 10201; AVX1-NEXT: vmovaps 176(%rbp), %ymm9 10202; AVX1-NEXT: vpacksswb %xmm7, %xmm6, %xmm6 10203; AVX1-NEXT: vpacksswb %xmm8, %xmm6, %xmm8 10204; AVX1-NEXT: vextractf128 $1, %ymm9, %xmm7 10205; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm6 10206; AVX1-NEXT: vpcmpgtq %xmm7, %xmm6, %xmm6 10207; AVX1-NEXT: vmovaps 144(%rbp), %ymm10 10208; AVX1-NEXT: vpcmpgtq %xmm9, %xmm5, %xmm5 10209; AVX1-NEXT: vpacksswb %xmm6, %xmm5, %xmm5 10210; AVX1-NEXT: vextractf128 $1, %ymm10, %xmm6 10211; AVX1-NEXT: vextractf128 $1, %ymm4, %xmm7 10212; AVX1-NEXT: vpcmpgtq %xmm6, %xmm7, %xmm6 10213; AVX1-NEXT: vpcmpgtq %xmm10, %xmm4, %xmm4 10214; AVX1-NEXT: vpacksswb %xmm6, %xmm4, %xmm4 10215; AVX1-NEXT: vmovaps 112(%rbp), %ymm6 10216; AVX1-NEXT: vpacksswb %xmm5, %xmm4, %xmm4 10217; AVX1-NEXT: vpacksswb %xmm8, %xmm4, %xmm4 10218; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm5 10219; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm7 10220; AVX1-NEXT: vpcmpgtq %xmm5, %xmm7, %xmm5 10221; AVX1-NEXT: vmovaps 80(%rbp), %ymm7 10222; AVX1-NEXT: vpcmpgtq %xmm6, %xmm3, %xmm3 10223; AVX1-NEXT: vpacksswb %xmm5, %xmm3, %xmm3 10224; AVX1-NEXT: vextractf128 $1, %ymm7, %xmm5 10225; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm6 10226; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm5 10227; AVX1-NEXT: vpcmpgtq %xmm7, %xmm2, %xmm2 10228; AVX1-NEXT: vmovaps 48(%rbp), %ymm6 10229; AVX1-NEXT: vpacksswb %xmm5, %xmm2, %xmm2 10230; AVX1-NEXT: vpacksswb %xmm3, %xmm2, %xmm2 10231; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm3 10232; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5 10233; AVX1-NEXT: vpcmpgtq %xmm3, %xmm5, %xmm3 10234; AVX1-NEXT: vmovaps 16(%rbp), %ymm5 10235; AVX1-NEXT: vpcmpgtq %xmm6, %xmm1, %xmm1 10236; AVX1-NEXT: vpacksswb %xmm3, %xmm1, %xmm1 10237; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm3 10238; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm6 10239; AVX1-NEXT: vpcmpgtq %xmm3, %xmm6, %xmm3 10240; AVX1-NEXT: vpcmpgtq %xmm5, %xmm0, %xmm0 10241; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 10242; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 10243; AVX1-NEXT: vpacksswb %xmm2, %xmm0, %xmm0 10244; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm0 10245; AVX1-NEXT: movq %rbp, %rsp 10246; AVX1-NEXT: popq %rbp 10247; AVX1-NEXT: retq 10248; 10249; AVX2-LABEL: test_cmp_v32i64: 10250; AVX2: # BB#0: 10251; AVX2-NEXT: pushq %rbp 10252; AVX2-NEXT: movq %rsp, %rbp 10253; AVX2-NEXT: andq $-32, %rsp 10254; AVX2-NEXT: subq $32, %rsp 10255; AVX2-NEXT: vpcmpgtq 240(%rbp), %ymm7, %ymm7 10256; AVX2-NEXT: vpcmpgtq 208(%rbp), %ymm6, %ymm6 10257; AVX2-NEXT: vpacksswb %ymm7, %ymm6, %ymm6 10258; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,2,1,3] 10259; AVX2-NEXT: vpcmpgtq 176(%rbp), %ymm5, %ymm5 10260; AVX2-NEXT: vpcmpgtq 144(%rbp), %ymm4, %ymm4 10261; AVX2-NEXT: vpacksswb %ymm5, %ymm4, %ymm4 10262; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,2,1,3] 10263; AVX2-NEXT: vpacksswb %ymm6, %ymm4, %ymm4 10264; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,2,1,3] 10265; AVX2-NEXT: vpcmpgtq 112(%rbp), %ymm3, %ymm3 10266; AVX2-NEXT: vpcmpgtq 80(%rbp), %ymm2, %ymm2 10267; AVX2-NEXT: vpacksswb %ymm3, %ymm2, %ymm2 10268; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,1,3] 10269; AVX2-NEXT: vpcmpgtq 48(%rbp), %ymm1, %ymm1 10270; AVX2-NEXT: vpcmpgtq 16(%rbp), %ymm0, %ymm0 10271; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 10272; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 10273; AVX2-NEXT: vpacksswb %ymm2, %ymm0, %ymm0 10274; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 10275; AVX2-NEXT: vpacksswb %ymm4, %ymm0, %ymm0 10276; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 10277; AVX2-NEXT: movq %rbp, %rsp 10278; AVX2-NEXT: popq %rbp 10279; AVX2-NEXT: retq 10280; 10281; AVX512F-LABEL: test_cmp_v32i64: 10282; AVX512F: # BB#0: 10283; AVX512F-NEXT: vextracti32x4 $3, %zmm4, %xmm8 10284; AVX512F-NEXT: vpextrq $1, %xmm8, %rcx 10285; AVX512F-NEXT: vextracti32x4 $3, %zmm0, %xmm9 10286; AVX512F-NEXT: vpextrq $1, %xmm9, %rdx 10287; AVX512F-NEXT: xorl %eax, %eax 10288; AVX512F-NEXT: cmpq %rcx, %rdx 10289; AVX512F-NEXT: movq $-1, %rcx 10290; AVX512F-NEXT: movl $0, %edx 10291; AVX512F-NEXT: cmovgq %rcx, %rdx 10292; AVX512F-NEXT: vmovq %rdx, %xmm10 10293; AVX512F-NEXT: vmovq %xmm8, %rdx 10294; AVX512F-NEXT: vmovq %xmm9, %rsi 10295; AVX512F-NEXT: cmpq %rdx, %rsi 10296; AVX512F-NEXT: movl $0, %edx 10297; AVX512F-NEXT: cmovgq %rcx, %rdx 10298; AVX512F-NEXT: vmovq %rdx, %xmm8 10299; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm8 = xmm8[0],xmm10[0] 10300; AVX512F-NEXT: vextracti32x4 $2, %zmm4, %xmm9 10301; AVX512F-NEXT: vpextrq $1, %xmm9, %rdx 10302; AVX512F-NEXT: vextracti32x4 $2, %zmm0, %xmm10 10303; AVX512F-NEXT: vpextrq $1, %xmm10, %rsi 10304; AVX512F-NEXT: cmpq %rdx, %rsi 10305; AVX512F-NEXT: movl $0, %edx 10306; AVX512F-NEXT: cmovgq %rcx, %rdx 10307; AVX512F-NEXT: vmovq %rdx, %xmm11 10308; AVX512F-NEXT: vmovq %xmm9, %rdx 10309; AVX512F-NEXT: vmovq %xmm10, %rsi 10310; AVX512F-NEXT: cmpq %rdx, %rsi 10311; AVX512F-NEXT: movl $0, %edx 10312; AVX512F-NEXT: cmovgq %rcx, %rdx 10313; AVX512F-NEXT: vmovq %rdx, %xmm9 10314; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm11[0] 10315; AVX512F-NEXT: vinserti128 $1, %xmm8, %ymm9, %ymm8 10316; AVX512F-NEXT: vextracti32x4 $1, %zmm4, %xmm9 10317; AVX512F-NEXT: vpextrq $1, %xmm9, %rdx 10318; AVX512F-NEXT: vextracti32x4 $1, %zmm0, %xmm10 10319; AVX512F-NEXT: vpextrq $1, %xmm10, %rsi 10320; AVX512F-NEXT: cmpq %rdx, %rsi 10321; AVX512F-NEXT: movl $0, %edx 10322; AVX512F-NEXT: cmovgq %rcx, %rdx 10323; AVX512F-NEXT: vmovq %rdx, %xmm11 10324; AVX512F-NEXT: vmovq %xmm9, %rdx 10325; AVX512F-NEXT: vmovq %xmm10, %rsi 10326; AVX512F-NEXT: cmpq %rdx, %rsi 10327; AVX512F-NEXT: movl $0, %edx 10328; AVX512F-NEXT: cmovgq %rcx, %rdx 10329; AVX512F-NEXT: vmovq %rdx, %xmm9 10330; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm11[0] 10331; AVX512F-NEXT: vpextrq $1, %xmm4, %rdx 10332; AVX512F-NEXT: vpextrq $1, %xmm0, %rsi 10333; AVX512F-NEXT: cmpq %rdx, %rsi 10334; AVX512F-NEXT: movl $0, %edx 10335; AVX512F-NEXT: cmovgq %rcx, %rdx 10336; AVX512F-NEXT: vmovq %rdx, %xmm10 10337; AVX512F-NEXT: vmovq %xmm4, %rdx 10338; AVX512F-NEXT: vmovq %xmm0, %rsi 10339; AVX512F-NEXT: cmpq %rdx, %rsi 10340; AVX512F-NEXT: movl $0, %edx 10341; AVX512F-NEXT: cmovgq %rcx, %rdx 10342; AVX512F-NEXT: vmovq %rdx, %xmm0 10343; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm10[0] 10344; AVX512F-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm0 10345; AVX512F-NEXT: vinserti64x4 $1, %ymm8, %zmm0, %zmm0 10346; AVX512F-NEXT: vpmovqd %zmm0, %ymm8 10347; AVX512F-NEXT: vextracti32x4 $3, %zmm5, %xmm4 10348; AVX512F-NEXT: vpextrq $1, %xmm4, %rdx 10349; AVX512F-NEXT: vextracti32x4 $3, %zmm1, %xmm0 10350; AVX512F-NEXT: vpextrq $1, %xmm0, %rsi 10351; AVX512F-NEXT: cmpq %rdx, %rsi 10352; AVX512F-NEXT: movl $0, %edx 10353; AVX512F-NEXT: cmovgq %rcx, %rdx 10354; AVX512F-NEXT: vmovq %rdx, %xmm9 10355; AVX512F-NEXT: vmovq %xmm4, %rdx 10356; AVX512F-NEXT: vmovq %xmm0, %rsi 10357; AVX512F-NEXT: cmpq %rdx, %rsi 10358; AVX512F-NEXT: movl $0, %edx 10359; AVX512F-NEXT: cmovgq %rcx, %rdx 10360; AVX512F-NEXT: vmovq %rdx, %xmm0 10361; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm0[0],xmm9[0] 10362; AVX512F-NEXT: vextracti32x4 $2, %zmm5, %xmm4 10363; AVX512F-NEXT: vpextrq $1, %xmm4, %rdx 10364; AVX512F-NEXT: vextracti32x4 $2, %zmm1, %xmm0 10365; AVX512F-NEXT: vpextrq $1, %xmm0, %rsi 10366; AVX512F-NEXT: cmpq %rdx, %rsi 10367; AVX512F-NEXT: movl $0, %edx 10368; AVX512F-NEXT: cmovgq %rcx, %rdx 10369; AVX512F-NEXT: vmovq %rdx, %xmm10 10370; AVX512F-NEXT: vmovq %xmm4, %rdx 10371; AVX512F-NEXT: vmovq %xmm0, %rsi 10372; AVX512F-NEXT: cmpq %rdx, %rsi 10373; AVX512F-NEXT: movl $0, %edx 10374; AVX512F-NEXT: cmovgq %rcx, %rdx 10375; AVX512F-NEXT: vmovq %rdx, %xmm0 10376; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm10[0] 10377; AVX512F-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm9 10378; AVX512F-NEXT: vextracti32x4 $1, %zmm5, %xmm0 10379; AVX512F-NEXT: vpextrq $1, %xmm0, %rdx 10380; AVX512F-NEXT: vextracti32x4 $1, %zmm1, %xmm4 10381; AVX512F-NEXT: vpextrq $1, %xmm4, %rsi 10382; AVX512F-NEXT: cmpq %rdx, %rsi 10383; AVX512F-NEXT: movl $0, %edx 10384; AVX512F-NEXT: cmovgq %rcx, %rdx 10385; AVX512F-NEXT: vmovq %rdx, %xmm10 10386; AVX512F-NEXT: vmovq %xmm0, %rdx 10387; AVX512F-NEXT: vmovq %xmm4, %rsi 10388; AVX512F-NEXT: cmpq %rdx, %rsi 10389; AVX512F-NEXT: movl $0, %edx 10390; AVX512F-NEXT: cmovgq %rcx, %rdx 10391; AVX512F-NEXT: vmovq %rdx, %xmm0 10392; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm10[0] 10393; AVX512F-NEXT: vpextrq $1, %xmm5, %rdx 10394; AVX512F-NEXT: vpextrq $1, %xmm1, %rsi 10395; AVX512F-NEXT: cmpq %rdx, %rsi 10396; AVX512F-NEXT: movl $0, %edx 10397; AVX512F-NEXT: cmovgq %rcx, %rdx 10398; AVX512F-NEXT: vmovq %rdx, %xmm4 10399; AVX512F-NEXT: vmovq %xmm5, %rdx 10400; AVX512F-NEXT: vmovq %xmm1, %rsi 10401; AVX512F-NEXT: cmpq %rdx, %rsi 10402; AVX512F-NEXT: movl $0, %edx 10403; AVX512F-NEXT: cmovgq %rcx, %rdx 10404; AVX512F-NEXT: vmovq %rdx, %xmm1 10405; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm4[0] 10406; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 10407; AVX512F-NEXT: vinserti64x4 $1, %ymm9, %zmm0, %zmm0 10408; AVX512F-NEXT: vpmovqd %zmm0, %ymm0 10409; AVX512F-NEXT: vinserti64x4 $1, %ymm0, %zmm8, %zmm0 10410; AVX512F-NEXT: vpmovdb %zmm0, %xmm8 10411; AVX512F-NEXT: vextracti32x4 $3, %zmm6, %xmm1 10412; AVX512F-NEXT: vpextrq $1, %xmm1, %rdx 10413; AVX512F-NEXT: vextracti32x4 $3, %zmm2, %xmm4 10414; AVX512F-NEXT: vpextrq $1, %xmm4, %rsi 10415; AVX512F-NEXT: cmpq %rdx, %rsi 10416; AVX512F-NEXT: movl $0, %edx 10417; AVX512F-NEXT: cmovgq %rcx, %rdx 10418; AVX512F-NEXT: vmovq %rdx, %xmm5 10419; AVX512F-NEXT: vmovq %xmm1, %rdx 10420; AVX512F-NEXT: vmovq %xmm4, %rsi 10421; AVX512F-NEXT: cmpq %rdx, %rsi 10422; AVX512F-NEXT: movl $0, %edx 10423; AVX512F-NEXT: cmovgq %rcx, %rdx 10424; AVX512F-NEXT: vmovq %rdx, %xmm1 10425; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm5[0] 10426; AVX512F-NEXT: vextracti32x4 $2, %zmm6, %xmm4 10427; AVX512F-NEXT: vpextrq $1, %xmm4, %rdx 10428; AVX512F-NEXT: vextracti32x4 $2, %zmm2, %xmm5 10429; AVX512F-NEXT: vpextrq $1, %xmm5, %rsi 10430; AVX512F-NEXT: cmpq %rdx, %rsi 10431; AVX512F-NEXT: movl $0, %edx 10432; AVX512F-NEXT: cmovgq %rcx, %rdx 10433; AVX512F-NEXT: vmovq %rdx, %xmm0 10434; AVX512F-NEXT: vmovq %xmm4, %rdx 10435; AVX512F-NEXT: vmovq %xmm5, %rsi 10436; AVX512F-NEXT: cmpq %rdx, %rsi 10437; AVX512F-NEXT: movl $0, %edx 10438; AVX512F-NEXT: cmovgq %rcx, %rdx 10439; AVX512F-NEXT: vmovq %rdx, %xmm4 10440; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm4[0],xmm0[0] 10441; AVX512F-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm1 10442; AVX512F-NEXT: vextracti32x4 $1, %zmm6, %xmm0 10443; AVX512F-NEXT: vpextrq $1, %xmm0, %rdx 10444; AVX512F-NEXT: vextracti32x4 $1, %zmm2, %xmm4 10445; AVX512F-NEXT: vpextrq $1, %xmm4, %rsi 10446; AVX512F-NEXT: cmpq %rdx, %rsi 10447; AVX512F-NEXT: movl $0, %edx 10448; AVX512F-NEXT: cmovgq %rcx, %rdx 10449; AVX512F-NEXT: vmovq %rdx, %xmm5 10450; AVX512F-NEXT: vmovq %xmm0, %rdx 10451; AVX512F-NEXT: vmovq %xmm4, %rsi 10452; AVX512F-NEXT: cmpq %rdx, %rsi 10453; AVX512F-NEXT: movl $0, %edx 10454; AVX512F-NEXT: cmovgq %rcx, %rdx 10455; AVX512F-NEXT: vmovq %rdx, %xmm0 10456; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm5[0] 10457; AVX512F-NEXT: vpextrq $1, %xmm6, %rdx 10458; AVX512F-NEXT: vpextrq $1, %xmm2, %rsi 10459; AVX512F-NEXT: cmpq %rdx, %rsi 10460; AVX512F-NEXT: movl $0, %edx 10461; AVX512F-NEXT: cmovgq %rcx, %rdx 10462; AVX512F-NEXT: vmovq %rdx, %xmm4 10463; AVX512F-NEXT: vmovq %xmm6, %rdx 10464; AVX512F-NEXT: vmovq %xmm2, %rsi 10465; AVX512F-NEXT: cmpq %rdx, %rsi 10466; AVX512F-NEXT: movl $0, %edx 10467; AVX512F-NEXT: cmovgq %rcx, %rdx 10468; AVX512F-NEXT: vmovq %rdx, %xmm2 10469; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm4[0] 10470; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm2, %ymm0 10471; AVX512F-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 10472; AVX512F-NEXT: vpmovqd %zmm0, %ymm1 10473; AVX512F-NEXT: vextracti32x4 $3, %zmm7, %xmm0 10474; AVX512F-NEXT: vpextrq $1, %xmm0, %rdx 10475; AVX512F-NEXT: vextracti32x4 $3, %zmm3, %xmm2 10476; AVX512F-NEXT: vpextrq $1, %xmm2, %rsi 10477; AVX512F-NEXT: cmpq %rdx, %rsi 10478; AVX512F-NEXT: movl $0, %edx 10479; AVX512F-NEXT: cmovgq %rcx, %rdx 10480; AVX512F-NEXT: vmovq %rdx, %xmm4 10481; AVX512F-NEXT: vmovq %xmm0, %rdx 10482; AVX512F-NEXT: vmovq %xmm2, %rsi 10483; AVX512F-NEXT: cmpq %rdx, %rsi 10484; AVX512F-NEXT: movl $0, %edx 10485; AVX512F-NEXT: cmovgq %rcx, %rdx 10486; AVX512F-NEXT: vmovq %rdx, %xmm0 10487; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm4[0] 10488; AVX512F-NEXT: vextracti32x4 $2, %zmm7, %xmm2 10489; AVX512F-NEXT: vpextrq $1, %xmm2, %rdx 10490; AVX512F-NEXT: vextracti32x4 $2, %zmm3, %xmm4 10491; AVX512F-NEXT: vpextrq $1, %xmm4, %rsi 10492; AVX512F-NEXT: cmpq %rdx, %rsi 10493; AVX512F-NEXT: movl $0, %edx 10494; AVX512F-NEXT: cmovgq %rcx, %rdx 10495; AVX512F-NEXT: vmovq %rdx, %xmm5 10496; AVX512F-NEXT: vmovq %xmm2, %rdx 10497; AVX512F-NEXT: vmovq %xmm4, %rsi 10498; AVX512F-NEXT: cmpq %rdx, %rsi 10499; AVX512F-NEXT: movl $0, %edx 10500; AVX512F-NEXT: cmovgq %rcx, %rdx 10501; AVX512F-NEXT: vmovq %rdx, %xmm2 10502; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm5[0] 10503; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm2, %ymm2 10504; AVX512F-NEXT: vextracti32x4 $1, %zmm7, %xmm0 10505; AVX512F-NEXT: vpextrq $1, %xmm0, %rdx 10506; AVX512F-NEXT: vextracti32x4 $1, %zmm3, %xmm4 10507; AVX512F-NEXT: vpextrq $1, %xmm4, %rsi 10508; AVX512F-NEXT: cmpq %rdx, %rsi 10509; AVX512F-NEXT: movl $0, %edx 10510; AVX512F-NEXT: cmovgq %rcx, %rdx 10511; AVX512F-NEXT: vmovq %rdx, %xmm5 10512; AVX512F-NEXT: vmovq %xmm0, %rdx 10513; AVX512F-NEXT: vmovq %xmm4, %rsi 10514; AVX512F-NEXT: cmpq %rdx, %rsi 10515; AVX512F-NEXT: movl $0, %edx 10516; AVX512F-NEXT: cmovgq %rcx, %rdx 10517; AVX512F-NEXT: vmovq %rdx, %xmm0 10518; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm5[0] 10519; AVX512F-NEXT: vpextrq $1, %xmm7, %rdx 10520; AVX512F-NEXT: vpextrq $1, %xmm3, %rsi 10521; AVX512F-NEXT: cmpq %rdx, %rsi 10522; AVX512F-NEXT: movl $0, %edx 10523; AVX512F-NEXT: cmovgq %rcx, %rdx 10524; AVX512F-NEXT: vmovq %rdx, %xmm4 10525; AVX512F-NEXT: vmovq %xmm7, %rdx 10526; AVX512F-NEXT: vmovq %xmm3, %rsi 10527; AVX512F-NEXT: cmpq %rdx, %rsi 10528; AVX512F-NEXT: cmovgq %rcx, %rax 10529; AVX512F-NEXT: vmovq %rax, %xmm3 10530; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm4[0] 10531; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm3, %ymm0 10532; AVX512F-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm0 10533; AVX512F-NEXT: vpmovqd %zmm0, %ymm0 10534; AVX512F-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm0 10535; AVX512F-NEXT: vpmovdb %zmm0, %xmm0 10536; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm8, %ymm0 10537; AVX512F-NEXT: retq 10538; 10539; AVX512DQ-LABEL: test_cmp_v32i64: 10540; AVX512DQ: # BB#0: 10541; AVX512DQ-NEXT: vextracti64x2 $3, %zmm4, %xmm8 10542; AVX512DQ-NEXT: vpextrq $1, %xmm8, %rcx 10543; AVX512DQ-NEXT: vextracti64x2 $3, %zmm0, %xmm9 10544; AVX512DQ-NEXT: vpextrq $1, %xmm9, %rdx 10545; AVX512DQ-NEXT: xorl %eax, %eax 10546; AVX512DQ-NEXT: cmpq %rcx, %rdx 10547; AVX512DQ-NEXT: movq $-1, %rcx 10548; AVX512DQ-NEXT: movl $0, %edx 10549; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10550; AVX512DQ-NEXT: vmovq %rdx, %xmm10 10551; AVX512DQ-NEXT: vmovq %xmm8, %rdx 10552; AVX512DQ-NEXT: vmovq %xmm9, %rsi 10553; AVX512DQ-NEXT: cmpq %rdx, %rsi 10554; AVX512DQ-NEXT: movl $0, %edx 10555; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10556; AVX512DQ-NEXT: vmovq %rdx, %xmm8 10557; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm8 = xmm8[0],xmm10[0] 10558; AVX512DQ-NEXT: vextracti64x2 $2, %zmm4, %xmm9 10559; AVX512DQ-NEXT: vpextrq $1, %xmm9, %rdx 10560; AVX512DQ-NEXT: vextracti64x2 $2, %zmm0, %xmm10 10561; AVX512DQ-NEXT: vpextrq $1, %xmm10, %rsi 10562; AVX512DQ-NEXT: cmpq %rdx, %rsi 10563; AVX512DQ-NEXT: movl $0, %edx 10564; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10565; AVX512DQ-NEXT: vmovq %rdx, %xmm11 10566; AVX512DQ-NEXT: vmovq %xmm9, %rdx 10567; AVX512DQ-NEXT: vmovq %xmm10, %rsi 10568; AVX512DQ-NEXT: cmpq %rdx, %rsi 10569; AVX512DQ-NEXT: movl $0, %edx 10570; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10571; AVX512DQ-NEXT: vmovq %rdx, %xmm9 10572; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm11[0] 10573; AVX512DQ-NEXT: vinserti128 $1, %xmm8, %ymm9, %ymm8 10574; AVX512DQ-NEXT: vextracti64x2 $1, %zmm4, %xmm9 10575; AVX512DQ-NEXT: vpextrq $1, %xmm9, %rdx 10576; AVX512DQ-NEXT: vextracti64x2 $1, %zmm0, %xmm10 10577; AVX512DQ-NEXT: vpextrq $1, %xmm10, %rsi 10578; AVX512DQ-NEXT: cmpq %rdx, %rsi 10579; AVX512DQ-NEXT: movl $0, %edx 10580; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10581; AVX512DQ-NEXT: vmovq %rdx, %xmm11 10582; AVX512DQ-NEXT: vmovq %xmm9, %rdx 10583; AVX512DQ-NEXT: vmovq %xmm10, %rsi 10584; AVX512DQ-NEXT: cmpq %rdx, %rsi 10585; AVX512DQ-NEXT: movl $0, %edx 10586; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10587; AVX512DQ-NEXT: vmovq %rdx, %xmm9 10588; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm11[0] 10589; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rdx 10590; AVX512DQ-NEXT: vpextrq $1, %xmm0, %rsi 10591; AVX512DQ-NEXT: cmpq %rdx, %rsi 10592; AVX512DQ-NEXT: movl $0, %edx 10593; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10594; AVX512DQ-NEXT: vmovq %rdx, %xmm10 10595; AVX512DQ-NEXT: vmovq %xmm4, %rdx 10596; AVX512DQ-NEXT: vmovq %xmm0, %rsi 10597; AVX512DQ-NEXT: cmpq %rdx, %rsi 10598; AVX512DQ-NEXT: movl $0, %edx 10599; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10600; AVX512DQ-NEXT: vmovq %rdx, %xmm0 10601; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm10[0] 10602; AVX512DQ-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm0 10603; AVX512DQ-NEXT: vinserti64x4 $1, %ymm8, %zmm0, %zmm0 10604; AVX512DQ-NEXT: vpmovqd %zmm0, %ymm8 10605; AVX512DQ-NEXT: vextracti64x2 $3, %zmm5, %xmm4 10606; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rdx 10607; AVX512DQ-NEXT: vextracti64x2 $3, %zmm1, %xmm0 10608; AVX512DQ-NEXT: vpextrq $1, %xmm0, %rsi 10609; AVX512DQ-NEXT: cmpq %rdx, %rsi 10610; AVX512DQ-NEXT: movl $0, %edx 10611; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10612; AVX512DQ-NEXT: vmovq %rdx, %xmm9 10613; AVX512DQ-NEXT: vmovq %xmm4, %rdx 10614; AVX512DQ-NEXT: vmovq %xmm0, %rsi 10615; AVX512DQ-NEXT: cmpq %rdx, %rsi 10616; AVX512DQ-NEXT: movl $0, %edx 10617; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10618; AVX512DQ-NEXT: vmovq %rdx, %xmm0 10619; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm0[0],xmm9[0] 10620; AVX512DQ-NEXT: vextracti64x2 $2, %zmm5, %xmm4 10621; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rdx 10622; AVX512DQ-NEXT: vextracti64x2 $2, %zmm1, %xmm0 10623; AVX512DQ-NEXT: vpextrq $1, %xmm0, %rsi 10624; AVX512DQ-NEXT: cmpq %rdx, %rsi 10625; AVX512DQ-NEXT: movl $0, %edx 10626; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10627; AVX512DQ-NEXT: vmovq %rdx, %xmm10 10628; AVX512DQ-NEXT: vmovq %xmm4, %rdx 10629; AVX512DQ-NEXT: vmovq %xmm0, %rsi 10630; AVX512DQ-NEXT: cmpq %rdx, %rsi 10631; AVX512DQ-NEXT: movl $0, %edx 10632; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10633; AVX512DQ-NEXT: vmovq %rdx, %xmm0 10634; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm10[0] 10635; AVX512DQ-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm9 10636; AVX512DQ-NEXT: vextracti64x2 $1, %zmm5, %xmm0 10637; AVX512DQ-NEXT: vpextrq $1, %xmm0, %rdx 10638; AVX512DQ-NEXT: vextracti64x2 $1, %zmm1, %xmm4 10639; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rsi 10640; AVX512DQ-NEXT: cmpq %rdx, %rsi 10641; AVX512DQ-NEXT: movl $0, %edx 10642; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10643; AVX512DQ-NEXT: vmovq %rdx, %xmm10 10644; AVX512DQ-NEXT: vmovq %xmm0, %rdx 10645; AVX512DQ-NEXT: vmovq %xmm4, %rsi 10646; AVX512DQ-NEXT: cmpq %rdx, %rsi 10647; AVX512DQ-NEXT: movl $0, %edx 10648; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10649; AVX512DQ-NEXT: vmovq %rdx, %xmm0 10650; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm10[0] 10651; AVX512DQ-NEXT: vpextrq $1, %xmm5, %rdx 10652; AVX512DQ-NEXT: vpextrq $1, %xmm1, %rsi 10653; AVX512DQ-NEXT: cmpq %rdx, %rsi 10654; AVX512DQ-NEXT: movl $0, %edx 10655; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10656; AVX512DQ-NEXT: vmovq %rdx, %xmm4 10657; AVX512DQ-NEXT: vmovq %xmm5, %rdx 10658; AVX512DQ-NEXT: vmovq %xmm1, %rsi 10659; AVX512DQ-NEXT: cmpq %rdx, %rsi 10660; AVX512DQ-NEXT: movl $0, %edx 10661; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10662; AVX512DQ-NEXT: vmovq %rdx, %xmm1 10663; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm4[0] 10664; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 10665; AVX512DQ-NEXT: vinserti64x4 $1, %ymm9, %zmm0, %zmm0 10666; AVX512DQ-NEXT: vpmovqd %zmm0, %ymm0 10667; AVX512DQ-NEXT: vinserti32x8 $1, %ymm0, %zmm8, %zmm0 10668; AVX512DQ-NEXT: vpmovdb %zmm0, %xmm8 10669; AVX512DQ-NEXT: vextracti64x2 $3, %zmm6, %xmm1 10670; AVX512DQ-NEXT: vpextrq $1, %xmm1, %rdx 10671; AVX512DQ-NEXT: vextracti64x2 $3, %zmm2, %xmm4 10672; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rsi 10673; AVX512DQ-NEXT: cmpq %rdx, %rsi 10674; AVX512DQ-NEXT: movl $0, %edx 10675; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10676; AVX512DQ-NEXT: vmovq %rdx, %xmm5 10677; AVX512DQ-NEXT: vmovq %xmm1, %rdx 10678; AVX512DQ-NEXT: vmovq %xmm4, %rsi 10679; AVX512DQ-NEXT: cmpq %rdx, %rsi 10680; AVX512DQ-NEXT: movl $0, %edx 10681; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10682; AVX512DQ-NEXT: vmovq %rdx, %xmm1 10683; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm5[0] 10684; AVX512DQ-NEXT: vextracti64x2 $2, %zmm6, %xmm4 10685; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rdx 10686; AVX512DQ-NEXT: vextracti64x2 $2, %zmm2, %xmm5 10687; AVX512DQ-NEXT: vpextrq $1, %xmm5, %rsi 10688; AVX512DQ-NEXT: cmpq %rdx, %rsi 10689; AVX512DQ-NEXT: movl $0, %edx 10690; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10691; AVX512DQ-NEXT: vmovq %rdx, %xmm0 10692; AVX512DQ-NEXT: vmovq %xmm4, %rdx 10693; AVX512DQ-NEXT: vmovq %xmm5, %rsi 10694; AVX512DQ-NEXT: cmpq %rdx, %rsi 10695; AVX512DQ-NEXT: movl $0, %edx 10696; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10697; AVX512DQ-NEXT: vmovq %rdx, %xmm4 10698; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm4[0],xmm0[0] 10699; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm1 10700; AVX512DQ-NEXT: vextracti64x2 $1, %zmm6, %xmm0 10701; AVX512DQ-NEXT: vpextrq $1, %xmm0, %rdx 10702; AVX512DQ-NEXT: vextracti64x2 $1, %zmm2, %xmm4 10703; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rsi 10704; AVX512DQ-NEXT: cmpq %rdx, %rsi 10705; AVX512DQ-NEXT: movl $0, %edx 10706; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10707; AVX512DQ-NEXT: vmovq %rdx, %xmm5 10708; AVX512DQ-NEXT: vmovq %xmm0, %rdx 10709; AVX512DQ-NEXT: vmovq %xmm4, %rsi 10710; AVX512DQ-NEXT: cmpq %rdx, %rsi 10711; AVX512DQ-NEXT: movl $0, %edx 10712; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10713; AVX512DQ-NEXT: vmovq %rdx, %xmm0 10714; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm5[0] 10715; AVX512DQ-NEXT: vpextrq $1, %xmm6, %rdx 10716; AVX512DQ-NEXT: vpextrq $1, %xmm2, %rsi 10717; AVX512DQ-NEXT: cmpq %rdx, %rsi 10718; AVX512DQ-NEXT: movl $0, %edx 10719; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10720; AVX512DQ-NEXT: vmovq %rdx, %xmm4 10721; AVX512DQ-NEXT: vmovq %xmm6, %rdx 10722; AVX512DQ-NEXT: vmovq %xmm2, %rsi 10723; AVX512DQ-NEXT: cmpq %rdx, %rsi 10724; AVX512DQ-NEXT: movl $0, %edx 10725; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10726; AVX512DQ-NEXT: vmovq %rdx, %xmm2 10727; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm4[0] 10728; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm2, %ymm0 10729; AVX512DQ-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 10730; AVX512DQ-NEXT: vpmovqd %zmm0, %ymm1 10731; AVX512DQ-NEXT: vextracti64x2 $3, %zmm7, %xmm0 10732; AVX512DQ-NEXT: vpextrq $1, %xmm0, %rdx 10733; AVX512DQ-NEXT: vextracti64x2 $3, %zmm3, %xmm2 10734; AVX512DQ-NEXT: vpextrq $1, %xmm2, %rsi 10735; AVX512DQ-NEXT: cmpq %rdx, %rsi 10736; AVX512DQ-NEXT: movl $0, %edx 10737; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10738; AVX512DQ-NEXT: vmovq %rdx, %xmm4 10739; AVX512DQ-NEXT: vmovq %xmm0, %rdx 10740; AVX512DQ-NEXT: vmovq %xmm2, %rsi 10741; AVX512DQ-NEXT: cmpq %rdx, %rsi 10742; AVX512DQ-NEXT: movl $0, %edx 10743; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10744; AVX512DQ-NEXT: vmovq %rdx, %xmm0 10745; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm4[0] 10746; AVX512DQ-NEXT: vextracti64x2 $2, %zmm7, %xmm2 10747; AVX512DQ-NEXT: vpextrq $1, %xmm2, %rdx 10748; AVX512DQ-NEXT: vextracti64x2 $2, %zmm3, %xmm4 10749; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rsi 10750; AVX512DQ-NEXT: cmpq %rdx, %rsi 10751; AVX512DQ-NEXT: movl $0, %edx 10752; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10753; AVX512DQ-NEXT: vmovq %rdx, %xmm5 10754; AVX512DQ-NEXT: vmovq %xmm2, %rdx 10755; AVX512DQ-NEXT: vmovq %xmm4, %rsi 10756; AVX512DQ-NEXT: cmpq %rdx, %rsi 10757; AVX512DQ-NEXT: movl $0, %edx 10758; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10759; AVX512DQ-NEXT: vmovq %rdx, %xmm2 10760; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm5[0] 10761; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm2, %ymm2 10762; AVX512DQ-NEXT: vextracti64x2 $1, %zmm7, %xmm0 10763; AVX512DQ-NEXT: vpextrq $1, %xmm0, %rdx 10764; AVX512DQ-NEXT: vextracti64x2 $1, %zmm3, %xmm4 10765; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rsi 10766; AVX512DQ-NEXT: cmpq %rdx, %rsi 10767; AVX512DQ-NEXT: movl $0, %edx 10768; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10769; AVX512DQ-NEXT: vmovq %rdx, %xmm5 10770; AVX512DQ-NEXT: vmovq %xmm0, %rdx 10771; AVX512DQ-NEXT: vmovq %xmm4, %rsi 10772; AVX512DQ-NEXT: cmpq %rdx, %rsi 10773; AVX512DQ-NEXT: movl $0, %edx 10774; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10775; AVX512DQ-NEXT: vmovq %rdx, %xmm0 10776; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm5[0] 10777; AVX512DQ-NEXT: vpextrq $1, %xmm7, %rdx 10778; AVX512DQ-NEXT: vpextrq $1, %xmm3, %rsi 10779; AVX512DQ-NEXT: cmpq %rdx, %rsi 10780; AVX512DQ-NEXT: movl $0, %edx 10781; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10782; AVX512DQ-NEXT: vmovq %rdx, %xmm4 10783; AVX512DQ-NEXT: vmovq %xmm7, %rdx 10784; AVX512DQ-NEXT: vmovq %xmm3, %rsi 10785; AVX512DQ-NEXT: cmpq %rdx, %rsi 10786; AVX512DQ-NEXT: cmovgq %rcx, %rax 10787; AVX512DQ-NEXT: vmovq %rax, %xmm3 10788; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm4[0] 10789; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm3, %ymm0 10790; AVX512DQ-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm0 10791; AVX512DQ-NEXT: vpmovqd %zmm0, %ymm0 10792; AVX512DQ-NEXT: vinserti32x8 $1, %ymm0, %zmm1, %zmm0 10793; AVX512DQ-NEXT: vpmovdb %zmm0, %xmm0 10794; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm8, %ymm0 10795; AVX512DQ-NEXT: retq 10796; 10797; AVX512BW-LABEL: test_cmp_v32i64: 10798; AVX512BW: # BB#0: 10799; AVX512BW-NEXT: vextracti32x4 $3, %zmm4, %xmm8 10800; AVX512BW-NEXT: vpextrq $1, %xmm8, %rcx 10801; AVX512BW-NEXT: vextracti32x4 $3, %zmm0, %xmm9 10802; AVX512BW-NEXT: vpextrq $1, %xmm9, %rdx 10803; AVX512BW-NEXT: xorl %eax, %eax 10804; AVX512BW-NEXT: cmpq %rcx, %rdx 10805; AVX512BW-NEXT: movq $-1, %rcx 10806; AVX512BW-NEXT: movl $0, %edx 10807; AVX512BW-NEXT: cmovgq %rcx, %rdx 10808; AVX512BW-NEXT: vmovq %rdx, %xmm10 10809; AVX512BW-NEXT: vmovq %xmm8, %rdx 10810; AVX512BW-NEXT: vmovq %xmm9, %rsi 10811; AVX512BW-NEXT: cmpq %rdx, %rsi 10812; AVX512BW-NEXT: movl $0, %edx 10813; AVX512BW-NEXT: cmovgq %rcx, %rdx 10814; AVX512BW-NEXT: vmovq %rdx, %xmm8 10815; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm8 = xmm8[0],xmm10[0] 10816; AVX512BW-NEXT: vextracti32x4 $2, %zmm4, %xmm9 10817; AVX512BW-NEXT: vpextrq $1, %xmm9, %rdx 10818; AVX512BW-NEXT: vextracti32x4 $2, %zmm0, %xmm10 10819; AVX512BW-NEXT: vpextrq $1, %xmm10, %rsi 10820; AVX512BW-NEXT: cmpq %rdx, %rsi 10821; AVX512BW-NEXT: movl $0, %edx 10822; AVX512BW-NEXT: cmovgq %rcx, %rdx 10823; AVX512BW-NEXT: vmovq %rdx, %xmm11 10824; AVX512BW-NEXT: vmovq %xmm9, %rdx 10825; AVX512BW-NEXT: vmovq %xmm10, %rsi 10826; AVX512BW-NEXT: cmpq %rdx, %rsi 10827; AVX512BW-NEXT: movl $0, %edx 10828; AVX512BW-NEXT: cmovgq %rcx, %rdx 10829; AVX512BW-NEXT: vmovq %rdx, %xmm9 10830; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm11[0] 10831; AVX512BW-NEXT: vinserti128 $1, %xmm8, %ymm9, %ymm8 10832; AVX512BW-NEXT: vextracti32x4 $1, %zmm4, %xmm9 10833; AVX512BW-NEXT: vpextrq $1, %xmm9, %rdx 10834; AVX512BW-NEXT: vextracti32x4 $1, %zmm0, %xmm10 10835; AVX512BW-NEXT: vpextrq $1, %xmm10, %rsi 10836; AVX512BW-NEXT: cmpq %rdx, %rsi 10837; AVX512BW-NEXT: movl $0, %edx 10838; AVX512BW-NEXT: cmovgq %rcx, %rdx 10839; AVX512BW-NEXT: vmovq %rdx, %xmm11 10840; AVX512BW-NEXT: vmovq %xmm9, %rdx 10841; AVX512BW-NEXT: vmovq %xmm10, %rsi 10842; AVX512BW-NEXT: cmpq %rdx, %rsi 10843; AVX512BW-NEXT: movl $0, %edx 10844; AVX512BW-NEXT: cmovgq %rcx, %rdx 10845; AVX512BW-NEXT: vmovq %rdx, %xmm9 10846; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm11[0] 10847; AVX512BW-NEXT: vpextrq $1, %xmm4, %rdx 10848; AVX512BW-NEXT: vpextrq $1, %xmm0, %rsi 10849; AVX512BW-NEXT: cmpq %rdx, %rsi 10850; AVX512BW-NEXT: movl $0, %edx 10851; AVX512BW-NEXT: cmovgq %rcx, %rdx 10852; AVX512BW-NEXT: vmovq %rdx, %xmm10 10853; AVX512BW-NEXT: vmovq %xmm4, %rdx 10854; AVX512BW-NEXT: vmovq %xmm0, %rsi 10855; AVX512BW-NEXT: cmpq %rdx, %rsi 10856; AVX512BW-NEXT: movl $0, %edx 10857; AVX512BW-NEXT: cmovgq %rcx, %rdx 10858; AVX512BW-NEXT: vmovq %rdx, %xmm0 10859; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm10[0] 10860; AVX512BW-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm0 10861; AVX512BW-NEXT: vinserti64x4 $1, %ymm8, %zmm0, %zmm0 10862; AVX512BW-NEXT: vpmovqd %zmm0, %ymm8 10863; AVX512BW-NEXT: vextracti32x4 $3, %zmm5, %xmm4 10864; AVX512BW-NEXT: vpextrq $1, %xmm4, %rdx 10865; AVX512BW-NEXT: vextracti32x4 $3, %zmm1, %xmm0 10866; AVX512BW-NEXT: vpextrq $1, %xmm0, %rsi 10867; AVX512BW-NEXT: cmpq %rdx, %rsi 10868; AVX512BW-NEXT: movl $0, %edx 10869; AVX512BW-NEXT: cmovgq %rcx, %rdx 10870; AVX512BW-NEXT: vmovq %rdx, %xmm9 10871; AVX512BW-NEXT: vmovq %xmm4, %rdx 10872; AVX512BW-NEXT: vmovq %xmm0, %rsi 10873; AVX512BW-NEXT: cmpq %rdx, %rsi 10874; AVX512BW-NEXT: movl $0, %edx 10875; AVX512BW-NEXT: cmovgq %rcx, %rdx 10876; AVX512BW-NEXT: vmovq %rdx, %xmm0 10877; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm0[0],xmm9[0] 10878; AVX512BW-NEXT: vextracti32x4 $2, %zmm5, %xmm4 10879; AVX512BW-NEXT: vpextrq $1, %xmm4, %rdx 10880; AVX512BW-NEXT: vextracti32x4 $2, %zmm1, %xmm0 10881; AVX512BW-NEXT: vpextrq $1, %xmm0, %rsi 10882; AVX512BW-NEXT: cmpq %rdx, %rsi 10883; AVX512BW-NEXT: movl $0, %edx 10884; AVX512BW-NEXT: cmovgq %rcx, %rdx 10885; AVX512BW-NEXT: vmovq %rdx, %xmm10 10886; AVX512BW-NEXT: vmovq %xmm4, %rdx 10887; AVX512BW-NEXT: vmovq %xmm0, %rsi 10888; AVX512BW-NEXT: cmpq %rdx, %rsi 10889; AVX512BW-NEXT: movl $0, %edx 10890; AVX512BW-NEXT: cmovgq %rcx, %rdx 10891; AVX512BW-NEXT: vmovq %rdx, %xmm0 10892; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm10[0] 10893; AVX512BW-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm9 10894; AVX512BW-NEXT: vextracti32x4 $1, %zmm5, %xmm0 10895; AVX512BW-NEXT: vpextrq $1, %xmm0, %rdx 10896; AVX512BW-NEXT: vextracti32x4 $1, %zmm1, %xmm4 10897; AVX512BW-NEXT: vpextrq $1, %xmm4, %rsi 10898; AVX512BW-NEXT: cmpq %rdx, %rsi 10899; AVX512BW-NEXT: movl $0, %edx 10900; AVX512BW-NEXT: cmovgq %rcx, %rdx 10901; AVX512BW-NEXT: vmovq %rdx, %xmm10 10902; AVX512BW-NEXT: vmovq %xmm0, %rdx 10903; AVX512BW-NEXT: vmovq %xmm4, %rsi 10904; AVX512BW-NEXT: cmpq %rdx, %rsi 10905; AVX512BW-NEXT: movl $0, %edx 10906; AVX512BW-NEXT: cmovgq %rcx, %rdx 10907; AVX512BW-NEXT: vmovq %rdx, %xmm0 10908; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm10[0] 10909; AVX512BW-NEXT: vpextrq $1, %xmm5, %rdx 10910; AVX512BW-NEXT: vpextrq $1, %xmm1, %rsi 10911; AVX512BW-NEXT: cmpq %rdx, %rsi 10912; AVX512BW-NEXT: movl $0, %edx 10913; AVX512BW-NEXT: cmovgq %rcx, %rdx 10914; AVX512BW-NEXT: vmovq %rdx, %xmm4 10915; AVX512BW-NEXT: vmovq %xmm5, %rdx 10916; AVX512BW-NEXT: vmovq %xmm1, %rsi 10917; AVX512BW-NEXT: cmpq %rdx, %rsi 10918; AVX512BW-NEXT: movl $0, %edx 10919; AVX512BW-NEXT: cmovgq %rcx, %rdx 10920; AVX512BW-NEXT: vmovq %rdx, %xmm1 10921; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm4[0] 10922; AVX512BW-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 10923; AVX512BW-NEXT: vinserti64x4 $1, %ymm9, %zmm0, %zmm0 10924; AVX512BW-NEXT: vpmovqd %zmm0, %ymm0 10925; AVX512BW-NEXT: vinserti64x4 $1, %ymm0, %zmm8, %zmm0 10926; AVX512BW-NEXT: vpmovdw %zmm0, %ymm8 10927; AVX512BW-NEXT: vextracti32x4 $3, %zmm6, %xmm1 10928; AVX512BW-NEXT: vpextrq $1, %xmm1, %rdx 10929; AVX512BW-NEXT: vextracti32x4 $3, %zmm2, %xmm4 10930; AVX512BW-NEXT: vpextrq $1, %xmm4, %rsi 10931; AVX512BW-NEXT: cmpq %rdx, %rsi 10932; AVX512BW-NEXT: movl $0, %edx 10933; AVX512BW-NEXT: cmovgq %rcx, %rdx 10934; AVX512BW-NEXT: vmovq %rdx, %xmm5 10935; AVX512BW-NEXT: vmovq %xmm1, %rdx 10936; AVX512BW-NEXT: vmovq %xmm4, %rsi 10937; AVX512BW-NEXT: cmpq %rdx, %rsi 10938; AVX512BW-NEXT: movl $0, %edx 10939; AVX512BW-NEXT: cmovgq %rcx, %rdx 10940; AVX512BW-NEXT: vmovq %rdx, %xmm1 10941; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm5[0] 10942; AVX512BW-NEXT: vextracti32x4 $2, %zmm6, %xmm4 10943; AVX512BW-NEXT: vpextrq $1, %xmm4, %rdx 10944; AVX512BW-NEXT: vextracti32x4 $2, %zmm2, %xmm5 10945; AVX512BW-NEXT: vpextrq $1, %xmm5, %rsi 10946; AVX512BW-NEXT: cmpq %rdx, %rsi 10947; AVX512BW-NEXT: movl $0, %edx 10948; AVX512BW-NEXT: cmovgq %rcx, %rdx 10949; AVX512BW-NEXT: vmovq %rdx, %xmm0 10950; AVX512BW-NEXT: vmovq %xmm4, %rdx 10951; AVX512BW-NEXT: vmovq %xmm5, %rsi 10952; AVX512BW-NEXT: cmpq %rdx, %rsi 10953; AVX512BW-NEXT: movl $0, %edx 10954; AVX512BW-NEXT: cmovgq %rcx, %rdx 10955; AVX512BW-NEXT: vmovq %rdx, %xmm4 10956; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm4[0],xmm0[0] 10957; AVX512BW-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm1 10958; AVX512BW-NEXT: vextracti32x4 $1, %zmm6, %xmm0 10959; AVX512BW-NEXT: vpextrq $1, %xmm0, %rdx 10960; AVX512BW-NEXT: vextracti32x4 $1, %zmm2, %xmm4 10961; AVX512BW-NEXT: vpextrq $1, %xmm4, %rsi 10962; AVX512BW-NEXT: cmpq %rdx, %rsi 10963; AVX512BW-NEXT: movl $0, %edx 10964; AVX512BW-NEXT: cmovgq %rcx, %rdx 10965; AVX512BW-NEXT: vmovq %rdx, %xmm5 10966; AVX512BW-NEXT: vmovq %xmm0, %rdx 10967; AVX512BW-NEXT: vmovq %xmm4, %rsi 10968; AVX512BW-NEXT: cmpq %rdx, %rsi 10969; AVX512BW-NEXT: movl $0, %edx 10970; AVX512BW-NEXT: cmovgq %rcx, %rdx 10971; AVX512BW-NEXT: vmovq %rdx, %xmm0 10972; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm5[0] 10973; AVX512BW-NEXT: vpextrq $1, %xmm6, %rdx 10974; AVX512BW-NEXT: vpextrq $1, %xmm2, %rsi 10975; AVX512BW-NEXT: cmpq %rdx, %rsi 10976; AVX512BW-NEXT: movl $0, %edx 10977; AVX512BW-NEXT: cmovgq %rcx, %rdx 10978; AVX512BW-NEXT: vmovq %rdx, %xmm4 10979; AVX512BW-NEXT: vmovq %xmm6, %rdx 10980; AVX512BW-NEXT: vmovq %xmm2, %rsi 10981; AVX512BW-NEXT: cmpq %rdx, %rsi 10982; AVX512BW-NEXT: movl $0, %edx 10983; AVX512BW-NEXT: cmovgq %rcx, %rdx 10984; AVX512BW-NEXT: vmovq %rdx, %xmm2 10985; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm4[0] 10986; AVX512BW-NEXT: vinserti128 $1, %xmm0, %ymm2, %ymm0 10987; AVX512BW-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 10988; AVX512BW-NEXT: vpmovqd %zmm0, %ymm1 10989; AVX512BW-NEXT: vextracti32x4 $3, %zmm7, %xmm0 10990; AVX512BW-NEXT: vpextrq $1, %xmm0, %rdx 10991; AVX512BW-NEXT: vextracti32x4 $3, %zmm3, %xmm2 10992; AVX512BW-NEXT: vpextrq $1, %xmm2, %rsi 10993; AVX512BW-NEXT: cmpq %rdx, %rsi 10994; AVX512BW-NEXT: movl $0, %edx 10995; AVX512BW-NEXT: cmovgq %rcx, %rdx 10996; AVX512BW-NEXT: vmovq %rdx, %xmm4 10997; AVX512BW-NEXT: vmovq %xmm0, %rdx 10998; AVX512BW-NEXT: vmovq %xmm2, %rsi 10999; AVX512BW-NEXT: cmpq %rdx, %rsi 11000; AVX512BW-NEXT: movl $0, %edx 11001; AVX512BW-NEXT: cmovgq %rcx, %rdx 11002; AVX512BW-NEXT: vmovq %rdx, %xmm0 11003; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm4[0] 11004; AVX512BW-NEXT: vextracti32x4 $2, %zmm7, %xmm2 11005; AVX512BW-NEXT: vpextrq $1, %xmm2, %rdx 11006; AVX512BW-NEXT: vextracti32x4 $2, %zmm3, %xmm4 11007; AVX512BW-NEXT: vpextrq $1, %xmm4, %rsi 11008; AVX512BW-NEXT: cmpq %rdx, %rsi 11009; AVX512BW-NEXT: movl $0, %edx 11010; AVX512BW-NEXT: cmovgq %rcx, %rdx 11011; AVX512BW-NEXT: vmovq %rdx, %xmm5 11012; AVX512BW-NEXT: vmovq %xmm2, %rdx 11013; AVX512BW-NEXT: vmovq %xmm4, %rsi 11014; AVX512BW-NEXT: cmpq %rdx, %rsi 11015; AVX512BW-NEXT: movl $0, %edx 11016; AVX512BW-NEXT: cmovgq %rcx, %rdx 11017; AVX512BW-NEXT: vmovq %rdx, %xmm2 11018; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm5[0] 11019; AVX512BW-NEXT: vinserti128 $1, %xmm0, %ymm2, %ymm2 11020; AVX512BW-NEXT: vextracti32x4 $1, %zmm7, %xmm0 11021; AVX512BW-NEXT: vpextrq $1, %xmm0, %rdx 11022; AVX512BW-NEXT: vextracti32x4 $1, %zmm3, %xmm4 11023; AVX512BW-NEXT: vpextrq $1, %xmm4, %rsi 11024; AVX512BW-NEXT: cmpq %rdx, %rsi 11025; AVX512BW-NEXT: movl $0, %edx 11026; AVX512BW-NEXT: cmovgq %rcx, %rdx 11027; AVX512BW-NEXT: vmovq %rdx, %xmm5 11028; AVX512BW-NEXT: vmovq %xmm0, %rdx 11029; AVX512BW-NEXT: vmovq %xmm4, %rsi 11030; AVX512BW-NEXT: cmpq %rdx, %rsi 11031; AVX512BW-NEXT: movl $0, %edx 11032; AVX512BW-NEXT: cmovgq %rcx, %rdx 11033; AVX512BW-NEXT: vmovq %rdx, %xmm0 11034; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm5[0] 11035; AVX512BW-NEXT: vpextrq $1, %xmm7, %rdx 11036; AVX512BW-NEXT: vpextrq $1, %xmm3, %rsi 11037; AVX512BW-NEXT: cmpq %rdx, %rsi 11038; AVX512BW-NEXT: movl $0, %edx 11039; AVX512BW-NEXT: cmovgq %rcx, %rdx 11040; AVX512BW-NEXT: vmovq %rdx, %xmm4 11041; AVX512BW-NEXT: vmovq %xmm7, %rdx 11042; AVX512BW-NEXT: vmovq %xmm3, %rsi 11043; AVX512BW-NEXT: cmpq %rdx, %rsi 11044; AVX512BW-NEXT: cmovgq %rcx, %rax 11045; AVX512BW-NEXT: vmovq %rax, %xmm3 11046; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm4[0] 11047; AVX512BW-NEXT: vinserti128 $1, %xmm0, %ymm3, %ymm0 11048; AVX512BW-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm0 11049; AVX512BW-NEXT: vpmovqd %zmm0, %ymm0 11050; AVX512BW-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm0 11051; AVX512BW-NEXT: vpmovdw %zmm0, %ymm0 11052; AVX512BW-NEXT: vinserti64x4 $1, %ymm0, %zmm8, %zmm0 11053; AVX512BW-NEXT: vpmovwb %zmm0, %ymm0 11054; AVX512BW-NEXT: retq 11055 %1 = icmp sgt <32 x i64> %a0, %a1 11056 ret <32 x i1> %1 11057} 11058