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 %xmm4, %xmm0 984; SSE42-NEXT: pcmpgtw %xmm5, %xmm1 985; SSE42-NEXT: pcmpgtw %xmm6, %xmm2 986; SSE42-NEXT: pcmpgtw %xmm7, %xmm3 987; SSE42-NEXT: pextrb $14, %xmm3, %eax 988; SSE42-NEXT: andb $1, %al 989; SSE42-NEXT: movb %al, 2(%rdi) 990; SSE42-NEXT: pextrb $12, %xmm3, %eax 991; SSE42-NEXT: andb $1, %al 992; SSE42-NEXT: movb %al, 2(%rdi) 993; SSE42-NEXT: pextrb $10, %xmm3, %eax 994; SSE42-NEXT: andb $1, %al 995; SSE42-NEXT: movb %al, 2(%rdi) 996; SSE42-NEXT: pextrb $8, %xmm3, %eax 997; SSE42-NEXT: andb $1, %al 998; SSE42-NEXT: movb %al, 2(%rdi) 999; SSE42-NEXT: pextrb $6, %xmm3, %eax 1000; SSE42-NEXT: andb $1, %al 1001; SSE42-NEXT: movb %al, 2(%rdi) 1002; SSE42-NEXT: pextrb $4, %xmm3, %eax 1003; SSE42-NEXT: andb $1, %al 1004; SSE42-NEXT: movb %al, 2(%rdi) 1005; SSE42-NEXT: pextrb $2, %xmm3, %eax 1006; SSE42-NEXT: andb $1, %al 1007; SSE42-NEXT: movb %al, 2(%rdi) 1008; SSE42-NEXT: pextrb $0, %xmm3, %eax 1009; SSE42-NEXT: andb $1, %al 1010; SSE42-NEXT: movb %al, 2(%rdi) 1011; SSE42-NEXT: pextrb $14, %xmm2, %eax 1012; SSE42-NEXT: andb $1, %al 1013; SSE42-NEXT: movb %al, 2(%rdi) 1014; SSE42-NEXT: pextrb $12, %xmm2, %eax 1015; SSE42-NEXT: andb $1, %al 1016; SSE42-NEXT: movb %al, 2(%rdi) 1017; SSE42-NEXT: pextrb $10, %xmm2, %eax 1018; SSE42-NEXT: andb $1, %al 1019; SSE42-NEXT: movb %al, 2(%rdi) 1020; SSE42-NEXT: pextrb $8, %xmm2, %eax 1021; SSE42-NEXT: andb $1, %al 1022; SSE42-NEXT: movb %al, 2(%rdi) 1023; SSE42-NEXT: pextrb $6, %xmm2, %eax 1024; SSE42-NEXT: andb $1, %al 1025; SSE42-NEXT: movb %al, 2(%rdi) 1026; SSE42-NEXT: pextrb $4, %xmm2, %eax 1027; SSE42-NEXT: andb $1, %al 1028; SSE42-NEXT: movb %al, 2(%rdi) 1029; SSE42-NEXT: pextrb $2, %xmm2, %eax 1030; SSE42-NEXT: andb $1, %al 1031; SSE42-NEXT: movb %al, 2(%rdi) 1032; SSE42-NEXT: pextrb $0, %xmm2, %eax 1033; SSE42-NEXT: andb $1, %al 1034; SSE42-NEXT: movb %al, 2(%rdi) 1035; SSE42-NEXT: pextrb $14, %xmm1, %eax 1036; SSE42-NEXT: andb $1, %al 1037; SSE42-NEXT: movb %al, (%rdi) 1038; SSE42-NEXT: pextrb $12, %xmm1, %eax 1039; SSE42-NEXT: andb $1, %al 1040; SSE42-NEXT: movb %al, (%rdi) 1041; SSE42-NEXT: pextrb $10, %xmm1, %eax 1042; SSE42-NEXT: andb $1, %al 1043; SSE42-NEXT: movb %al, (%rdi) 1044; SSE42-NEXT: pextrb $8, %xmm1, %eax 1045; SSE42-NEXT: andb $1, %al 1046; SSE42-NEXT: movb %al, (%rdi) 1047; SSE42-NEXT: pextrb $6, %xmm1, %eax 1048; SSE42-NEXT: andb $1, %al 1049; SSE42-NEXT: movb %al, (%rdi) 1050; SSE42-NEXT: pextrb $4, %xmm1, %eax 1051; SSE42-NEXT: andb $1, %al 1052; SSE42-NEXT: movb %al, (%rdi) 1053; SSE42-NEXT: pextrb $2, %xmm1, %eax 1054; SSE42-NEXT: andb $1, %al 1055; SSE42-NEXT: movb %al, (%rdi) 1056; SSE42-NEXT: pextrb $0, %xmm1, %eax 1057; SSE42-NEXT: andb $1, %al 1058; SSE42-NEXT: movb %al, (%rdi) 1059; SSE42-NEXT: pextrb $14, %xmm0, %eax 1060; SSE42-NEXT: andb $1, %al 1061; SSE42-NEXT: movb %al, (%rdi) 1062; SSE42-NEXT: pextrb $12, %xmm0, %eax 1063; SSE42-NEXT: andb $1, %al 1064; SSE42-NEXT: movb %al, (%rdi) 1065; SSE42-NEXT: pextrb $10, %xmm0, %eax 1066; SSE42-NEXT: andb $1, %al 1067; SSE42-NEXT: movb %al, (%rdi) 1068; SSE42-NEXT: pextrb $8, %xmm0, %eax 1069; SSE42-NEXT: andb $1, %al 1070; SSE42-NEXT: movb %al, (%rdi) 1071; SSE42-NEXT: pextrb $6, %xmm0, %eax 1072; SSE42-NEXT: andb $1, %al 1073; SSE42-NEXT: movb %al, (%rdi) 1074; SSE42-NEXT: pextrb $4, %xmm0, %eax 1075; SSE42-NEXT: andb $1, %al 1076; SSE42-NEXT: movb %al, (%rdi) 1077; SSE42-NEXT: pextrb $2, %xmm0, %eax 1078; SSE42-NEXT: andb $1, %al 1079; SSE42-NEXT: movb %al, (%rdi) 1080; SSE42-NEXT: pextrb $0, %xmm0, %eax 1081; SSE42-NEXT: andb $1, %al 1082; SSE42-NEXT: movb %al, (%rdi) 1083; SSE42-NEXT: movq %rdi, %rax 1084; SSE42-NEXT: retq 1085; 1086; AVX1-LABEL: test_cmp_v32i16: 1087; AVX1: # BB#0: 1088; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4 1089; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5 1090; AVX1-NEXT: vpcmpgtw %xmm4, %xmm5, %xmm4 1091; AVX1-NEXT: vpcmpgtw %xmm3, %xmm1, %xmm1 1092; AVX1-NEXT: vpacksswb %xmm4, %xmm1, %xmm1 1093; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm3 1094; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4 1095; AVX1-NEXT: vpcmpgtw %xmm3, %xmm4, %xmm3 1096; AVX1-NEXT: vpcmpgtw %xmm2, %xmm0, %xmm0 1097; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 1098; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1099; AVX1-NEXT: retq 1100; 1101; AVX2-LABEL: test_cmp_v32i16: 1102; AVX2: # BB#0: 1103; AVX2-NEXT: vpcmpgtw %ymm3, %ymm1, %ymm1 1104; AVX2-NEXT: vpcmpgtw %ymm2, %ymm0, %ymm0 1105; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 1106; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 1107; AVX2-NEXT: retq 1108; 1109; AVX512F-LABEL: test_cmp_v32i16: 1110; AVX512F: # BB#0: 1111; AVX512F-NEXT: vpcmpgtw %ymm2, %ymm0, %ymm0 1112; AVX512F-NEXT: vpmovsxwd %ymm0, %zmm0 1113; AVX512F-NEXT: vpmovdb %zmm0, %xmm0 1114; AVX512F-NEXT: vpcmpgtw %ymm3, %ymm1, %ymm1 1115; AVX512F-NEXT: vpmovsxwd %ymm1, %zmm1 1116; AVX512F-NEXT: vpmovdb %zmm1, %xmm1 1117; AVX512F-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 1118; AVX512F-NEXT: retq 1119; 1120; AVX512DQ-LABEL: test_cmp_v32i16: 1121; AVX512DQ: # BB#0: 1122; AVX512DQ-NEXT: vpcmpgtw %ymm2, %ymm0, %ymm0 1123; AVX512DQ-NEXT: vpmovsxwd %ymm0, %zmm0 1124; AVX512DQ-NEXT: vpmovdb %zmm0, %xmm0 1125; AVX512DQ-NEXT: vpcmpgtw %ymm3, %ymm1, %ymm1 1126; AVX512DQ-NEXT: vpmovsxwd %ymm1, %zmm1 1127; AVX512DQ-NEXT: vpmovdb %zmm1, %xmm1 1128; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 1129; AVX512DQ-NEXT: retq 1130; 1131; AVX512BW-LABEL: test_cmp_v32i16: 1132; AVX512BW: # BB#0: 1133; AVX512BW-NEXT: vpcmpgtw %zmm1, %zmm0, %k1 1134; AVX512BW-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 1135; AVX512BW-NEXT: vmovdqu16 %zmm0, %zmm0 {%k1} {z} 1136; AVX512BW-NEXT: vpmovwb %zmm0, %ymm0 1137; AVX512BW-NEXT: retq 1138 %1 = icmp sgt <32 x i16> %a0, %a1 1139 ret <32 x i1> %1 1140} 1141 1142define <64 x i1> @test_cmp_v64i8(<64 x i8> %a0, <64 x i8> %a1) nounwind { 1143; SSE2-LABEL: test_cmp_v64i8: 1144; SSE2: # BB#0: 1145; SSE2-NEXT: pcmpgtb %xmm4, %xmm0 1146; SSE2-NEXT: pcmpgtb %xmm5, %xmm1 1147; SSE2-NEXT: pcmpgtb %xmm6, %xmm2 1148; SSE2-NEXT: pcmpgtb %xmm7, %xmm3 1149; SSE2-NEXT: movdqa %xmm3, -{{[0-9]+}}(%rsp) 1150; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1151; SSE2-NEXT: andb $1, %al 1152; SSE2-NEXT: movb %al, 6(%rdi) 1153; SSE2-NEXT: movdqa %xmm2, -{{[0-9]+}}(%rsp) 1154; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1155; SSE2-NEXT: andb $1, %al 1156; SSE2-NEXT: movb %al, 4(%rdi) 1157; SSE2-NEXT: movdqa %xmm1, -{{[0-9]+}}(%rsp) 1158; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1159; SSE2-NEXT: andb $1, %al 1160; SSE2-NEXT: movb %al, 2(%rdi) 1161; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 1162; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1163; SSE2-NEXT: andb $1, %al 1164; SSE2-NEXT: movb %al, (%rdi) 1165; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1166; SSE2-NEXT: andb $1, %al 1167; SSE2-NEXT: movb %al, 6(%rdi) 1168; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1169; SSE2-NEXT: andb $1, %al 1170; SSE2-NEXT: movb %al, 4(%rdi) 1171; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1172; SSE2-NEXT: andb $1, %al 1173; SSE2-NEXT: movb %al, 2(%rdi) 1174; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1175; SSE2-NEXT: andb $1, %al 1176; SSE2-NEXT: movb %al, (%rdi) 1177; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1178; SSE2-NEXT: andb $1, %al 1179; SSE2-NEXT: movb %al, 6(%rdi) 1180; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1181; SSE2-NEXT: andb $1, %al 1182; SSE2-NEXT: movb %al, 4(%rdi) 1183; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1184; SSE2-NEXT: andb $1, %al 1185; SSE2-NEXT: movb %al, 2(%rdi) 1186; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1187; SSE2-NEXT: andb $1, %al 1188; SSE2-NEXT: movb %al, (%rdi) 1189; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1190; SSE2-NEXT: andb $1, %al 1191; SSE2-NEXT: movb %al, 6(%rdi) 1192; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1193; SSE2-NEXT: andb $1, %al 1194; SSE2-NEXT: movb %al, 4(%rdi) 1195; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1196; SSE2-NEXT: andb $1, %al 1197; SSE2-NEXT: movb %al, 2(%rdi) 1198; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1199; SSE2-NEXT: andb $1, %al 1200; SSE2-NEXT: movb %al, (%rdi) 1201; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1202; SSE2-NEXT: andb $1, %al 1203; SSE2-NEXT: movb %al, 6(%rdi) 1204; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1205; SSE2-NEXT: andb $1, %al 1206; SSE2-NEXT: movb %al, 4(%rdi) 1207; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1208; SSE2-NEXT: andb $1, %al 1209; SSE2-NEXT: movb %al, 2(%rdi) 1210; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1211; SSE2-NEXT: andb $1, %al 1212; SSE2-NEXT: movb %al, (%rdi) 1213; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1214; SSE2-NEXT: andb $1, %al 1215; SSE2-NEXT: movb %al, 6(%rdi) 1216; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1217; SSE2-NEXT: andb $1, %al 1218; SSE2-NEXT: movb %al, 4(%rdi) 1219; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1220; SSE2-NEXT: andb $1, %al 1221; SSE2-NEXT: movb %al, 2(%rdi) 1222; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1223; SSE2-NEXT: andb $1, %al 1224; SSE2-NEXT: movb %al, (%rdi) 1225; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1226; SSE2-NEXT: andb $1, %al 1227; SSE2-NEXT: movb %al, 6(%rdi) 1228; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1229; SSE2-NEXT: andb $1, %al 1230; SSE2-NEXT: movb %al, 4(%rdi) 1231; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1232; SSE2-NEXT: andb $1, %al 1233; SSE2-NEXT: movb %al, 2(%rdi) 1234; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1235; SSE2-NEXT: andb $1, %al 1236; SSE2-NEXT: movb %al, (%rdi) 1237; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1238; SSE2-NEXT: andb $1, %al 1239; SSE2-NEXT: movb %al, 6(%rdi) 1240; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1241; SSE2-NEXT: andb $1, %al 1242; SSE2-NEXT: movb %al, 4(%rdi) 1243; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1244; SSE2-NEXT: andb $1, %al 1245; SSE2-NEXT: movb %al, 2(%rdi) 1246; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1247; SSE2-NEXT: andb $1, %al 1248; SSE2-NEXT: movb %al, (%rdi) 1249; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1250; SSE2-NEXT: andb $1, %al 1251; SSE2-NEXT: movb %al, 6(%rdi) 1252; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1253; SSE2-NEXT: andb $1, %al 1254; SSE2-NEXT: movb %al, 4(%rdi) 1255; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1256; SSE2-NEXT: andb $1, %al 1257; SSE2-NEXT: movb %al, 2(%rdi) 1258; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1259; SSE2-NEXT: andb $1, %al 1260; SSE2-NEXT: movb %al, (%rdi) 1261; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1262; SSE2-NEXT: andb $1, %al 1263; SSE2-NEXT: movb %al, 6(%rdi) 1264; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1265; SSE2-NEXT: andb $1, %al 1266; SSE2-NEXT: movb %al, 4(%rdi) 1267; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1268; SSE2-NEXT: andb $1, %al 1269; SSE2-NEXT: movb %al, 2(%rdi) 1270; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1271; SSE2-NEXT: andb $1, %al 1272; SSE2-NEXT: movb %al, (%rdi) 1273; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1274; SSE2-NEXT: andb $1, %al 1275; SSE2-NEXT: movb %al, 6(%rdi) 1276; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1277; SSE2-NEXT: andb $1, %al 1278; SSE2-NEXT: movb %al, 4(%rdi) 1279; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1280; SSE2-NEXT: andb $1, %al 1281; SSE2-NEXT: movb %al, 2(%rdi) 1282; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1283; SSE2-NEXT: andb $1, %al 1284; SSE2-NEXT: movb %al, (%rdi) 1285; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1286; SSE2-NEXT: andb $1, %al 1287; SSE2-NEXT: movb %al, 6(%rdi) 1288; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1289; SSE2-NEXT: andb $1, %al 1290; SSE2-NEXT: movb %al, 4(%rdi) 1291; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1292; SSE2-NEXT: andb $1, %al 1293; SSE2-NEXT: movb %al, 2(%rdi) 1294; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1295; SSE2-NEXT: andb $1, %al 1296; SSE2-NEXT: movb %al, (%rdi) 1297; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1298; SSE2-NEXT: andb $1, %al 1299; SSE2-NEXT: movb %al, 6(%rdi) 1300; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1301; SSE2-NEXT: andb $1, %al 1302; SSE2-NEXT: movb %al, 4(%rdi) 1303; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1304; SSE2-NEXT: andb $1, %al 1305; SSE2-NEXT: movb %al, 2(%rdi) 1306; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1307; SSE2-NEXT: andb $1, %al 1308; SSE2-NEXT: movb %al, (%rdi) 1309; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1310; SSE2-NEXT: andb $1, %al 1311; SSE2-NEXT: movb %al, 6(%rdi) 1312; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1313; SSE2-NEXT: andb $1, %al 1314; SSE2-NEXT: movb %al, 4(%rdi) 1315; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1316; SSE2-NEXT: andb $1, %al 1317; SSE2-NEXT: movb %al, 2(%rdi) 1318; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1319; SSE2-NEXT: andb $1, %al 1320; SSE2-NEXT: movb %al, (%rdi) 1321; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1322; SSE2-NEXT: andb $1, %al 1323; SSE2-NEXT: movb %al, 6(%rdi) 1324; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1325; SSE2-NEXT: andb $1, %al 1326; SSE2-NEXT: movb %al, 4(%rdi) 1327; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1328; SSE2-NEXT: andb $1, %al 1329; SSE2-NEXT: movb %al, 2(%rdi) 1330; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1331; SSE2-NEXT: andb $1, %al 1332; SSE2-NEXT: movb %al, (%rdi) 1333; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1334; SSE2-NEXT: andb $1, %al 1335; SSE2-NEXT: movb %al, 6(%rdi) 1336; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1337; SSE2-NEXT: andb $1, %al 1338; SSE2-NEXT: movb %al, 4(%rdi) 1339; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1340; SSE2-NEXT: andb $1, %al 1341; SSE2-NEXT: movb %al, 2(%rdi) 1342; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1343; SSE2-NEXT: andb $1, %al 1344; SSE2-NEXT: movb %al, (%rdi) 1345; SSE2-NEXT: movq %rdi, %rax 1346; SSE2-NEXT: retq 1347; 1348; SSE42-LABEL: test_cmp_v64i8: 1349; SSE42: # BB#0: 1350; SSE42-NEXT: pcmpgtb %xmm4, %xmm0 1351; SSE42-NEXT: pcmpgtb %xmm5, %xmm1 1352; SSE42-NEXT: pcmpgtb %xmm6, %xmm2 1353; SSE42-NEXT: pcmpgtb %xmm7, %xmm3 1354; SSE42-NEXT: pextrb $15, %xmm3, %eax 1355; SSE42-NEXT: andb $1, %al 1356; SSE42-NEXT: movb %al, 6(%rdi) 1357; SSE42-NEXT: pextrb $14, %xmm3, %eax 1358; SSE42-NEXT: andb $1, %al 1359; SSE42-NEXT: movb %al, 6(%rdi) 1360; SSE42-NEXT: pextrb $13, %xmm3, %eax 1361; SSE42-NEXT: andb $1, %al 1362; SSE42-NEXT: movb %al, 6(%rdi) 1363; SSE42-NEXT: pextrb $12, %xmm3, %eax 1364; SSE42-NEXT: andb $1, %al 1365; SSE42-NEXT: movb %al, 6(%rdi) 1366; SSE42-NEXT: pextrb $11, %xmm3, %eax 1367; SSE42-NEXT: andb $1, %al 1368; SSE42-NEXT: movb %al, 6(%rdi) 1369; SSE42-NEXT: pextrb $10, %xmm3, %eax 1370; SSE42-NEXT: andb $1, %al 1371; SSE42-NEXT: movb %al, 6(%rdi) 1372; SSE42-NEXT: pextrb $9, %xmm3, %eax 1373; SSE42-NEXT: andb $1, %al 1374; SSE42-NEXT: movb %al, 6(%rdi) 1375; SSE42-NEXT: pextrb $8, %xmm3, %eax 1376; SSE42-NEXT: andb $1, %al 1377; SSE42-NEXT: movb %al, 6(%rdi) 1378; SSE42-NEXT: pextrb $7, %xmm3, %eax 1379; SSE42-NEXT: andb $1, %al 1380; SSE42-NEXT: movb %al, 6(%rdi) 1381; SSE42-NEXT: pextrb $6, %xmm3, %eax 1382; SSE42-NEXT: andb $1, %al 1383; SSE42-NEXT: movb %al, 6(%rdi) 1384; SSE42-NEXT: pextrb $5, %xmm3, %eax 1385; SSE42-NEXT: andb $1, %al 1386; SSE42-NEXT: movb %al, 6(%rdi) 1387; SSE42-NEXT: pextrb $4, %xmm3, %eax 1388; SSE42-NEXT: andb $1, %al 1389; SSE42-NEXT: movb %al, 6(%rdi) 1390; SSE42-NEXT: pextrb $3, %xmm3, %eax 1391; SSE42-NEXT: andb $1, %al 1392; SSE42-NEXT: movb %al, 6(%rdi) 1393; SSE42-NEXT: pextrb $2, %xmm3, %eax 1394; SSE42-NEXT: andb $1, %al 1395; SSE42-NEXT: movb %al, 6(%rdi) 1396; SSE42-NEXT: pextrb $1, %xmm3, %eax 1397; SSE42-NEXT: andb $1, %al 1398; SSE42-NEXT: movb %al, 6(%rdi) 1399; SSE42-NEXT: pextrb $0, %xmm3, %eax 1400; SSE42-NEXT: andb $1, %al 1401; SSE42-NEXT: movb %al, 6(%rdi) 1402; SSE42-NEXT: pextrb $15, %xmm2, %eax 1403; SSE42-NEXT: andb $1, %al 1404; SSE42-NEXT: movb %al, 4(%rdi) 1405; SSE42-NEXT: pextrb $14, %xmm2, %eax 1406; SSE42-NEXT: andb $1, %al 1407; SSE42-NEXT: movb %al, 4(%rdi) 1408; SSE42-NEXT: pextrb $13, %xmm2, %eax 1409; SSE42-NEXT: andb $1, %al 1410; SSE42-NEXT: movb %al, 4(%rdi) 1411; SSE42-NEXT: pextrb $12, %xmm2, %eax 1412; SSE42-NEXT: andb $1, %al 1413; SSE42-NEXT: movb %al, 4(%rdi) 1414; SSE42-NEXT: pextrb $11, %xmm2, %eax 1415; SSE42-NEXT: andb $1, %al 1416; SSE42-NEXT: movb %al, 4(%rdi) 1417; SSE42-NEXT: pextrb $10, %xmm2, %eax 1418; SSE42-NEXT: andb $1, %al 1419; SSE42-NEXT: movb %al, 4(%rdi) 1420; SSE42-NEXT: pextrb $9, %xmm2, %eax 1421; SSE42-NEXT: andb $1, %al 1422; SSE42-NEXT: movb %al, 4(%rdi) 1423; SSE42-NEXT: pextrb $8, %xmm2, %eax 1424; SSE42-NEXT: andb $1, %al 1425; SSE42-NEXT: movb %al, 4(%rdi) 1426; SSE42-NEXT: pextrb $7, %xmm2, %eax 1427; SSE42-NEXT: andb $1, %al 1428; SSE42-NEXT: movb %al, 4(%rdi) 1429; SSE42-NEXT: pextrb $6, %xmm2, %eax 1430; SSE42-NEXT: andb $1, %al 1431; SSE42-NEXT: movb %al, 4(%rdi) 1432; SSE42-NEXT: pextrb $5, %xmm2, %eax 1433; SSE42-NEXT: andb $1, %al 1434; SSE42-NEXT: movb %al, 4(%rdi) 1435; SSE42-NEXT: pextrb $4, %xmm2, %eax 1436; SSE42-NEXT: andb $1, %al 1437; SSE42-NEXT: movb %al, 4(%rdi) 1438; SSE42-NEXT: pextrb $3, %xmm2, %eax 1439; SSE42-NEXT: andb $1, %al 1440; SSE42-NEXT: movb %al, 4(%rdi) 1441; SSE42-NEXT: pextrb $2, %xmm2, %eax 1442; SSE42-NEXT: andb $1, %al 1443; SSE42-NEXT: movb %al, 4(%rdi) 1444; SSE42-NEXT: pextrb $1, %xmm2, %eax 1445; SSE42-NEXT: andb $1, %al 1446; SSE42-NEXT: movb %al, 4(%rdi) 1447; SSE42-NEXT: pextrb $0, %xmm2, %eax 1448; SSE42-NEXT: andb $1, %al 1449; SSE42-NEXT: movb %al, 4(%rdi) 1450; SSE42-NEXT: pextrb $15, %xmm1, %eax 1451; SSE42-NEXT: andb $1, %al 1452; SSE42-NEXT: movb %al, 2(%rdi) 1453; SSE42-NEXT: pextrb $14, %xmm1, %eax 1454; SSE42-NEXT: andb $1, %al 1455; SSE42-NEXT: movb %al, 2(%rdi) 1456; SSE42-NEXT: pextrb $13, %xmm1, %eax 1457; SSE42-NEXT: andb $1, %al 1458; SSE42-NEXT: movb %al, 2(%rdi) 1459; SSE42-NEXT: pextrb $12, %xmm1, %eax 1460; SSE42-NEXT: andb $1, %al 1461; SSE42-NEXT: movb %al, 2(%rdi) 1462; SSE42-NEXT: pextrb $11, %xmm1, %eax 1463; SSE42-NEXT: andb $1, %al 1464; SSE42-NEXT: movb %al, 2(%rdi) 1465; SSE42-NEXT: pextrb $10, %xmm1, %eax 1466; SSE42-NEXT: andb $1, %al 1467; SSE42-NEXT: movb %al, 2(%rdi) 1468; SSE42-NEXT: pextrb $9, %xmm1, %eax 1469; SSE42-NEXT: andb $1, %al 1470; SSE42-NEXT: movb %al, 2(%rdi) 1471; SSE42-NEXT: pextrb $8, %xmm1, %eax 1472; SSE42-NEXT: andb $1, %al 1473; SSE42-NEXT: movb %al, 2(%rdi) 1474; SSE42-NEXT: pextrb $7, %xmm1, %eax 1475; SSE42-NEXT: andb $1, %al 1476; SSE42-NEXT: movb %al, 2(%rdi) 1477; SSE42-NEXT: pextrb $6, %xmm1, %eax 1478; SSE42-NEXT: andb $1, %al 1479; SSE42-NEXT: movb %al, 2(%rdi) 1480; SSE42-NEXT: pextrb $5, %xmm1, %eax 1481; SSE42-NEXT: andb $1, %al 1482; SSE42-NEXT: movb %al, 2(%rdi) 1483; SSE42-NEXT: pextrb $4, %xmm1, %eax 1484; SSE42-NEXT: andb $1, %al 1485; SSE42-NEXT: movb %al, 2(%rdi) 1486; SSE42-NEXT: pextrb $3, %xmm1, %eax 1487; SSE42-NEXT: andb $1, %al 1488; SSE42-NEXT: movb %al, 2(%rdi) 1489; SSE42-NEXT: pextrb $2, %xmm1, %eax 1490; SSE42-NEXT: andb $1, %al 1491; SSE42-NEXT: movb %al, 2(%rdi) 1492; SSE42-NEXT: pextrb $1, %xmm1, %eax 1493; SSE42-NEXT: andb $1, %al 1494; SSE42-NEXT: movb %al, 2(%rdi) 1495; SSE42-NEXT: pextrb $0, %xmm1, %eax 1496; SSE42-NEXT: andb $1, %al 1497; SSE42-NEXT: movb %al, 2(%rdi) 1498; SSE42-NEXT: pextrb $15, %xmm0, %eax 1499; SSE42-NEXT: andb $1, %al 1500; SSE42-NEXT: movb %al, (%rdi) 1501; SSE42-NEXT: pextrb $14, %xmm0, %eax 1502; SSE42-NEXT: andb $1, %al 1503; SSE42-NEXT: movb %al, (%rdi) 1504; SSE42-NEXT: pextrb $13, %xmm0, %eax 1505; SSE42-NEXT: andb $1, %al 1506; SSE42-NEXT: movb %al, (%rdi) 1507; SSE42-NEXT: pextrb $12, %xmm0, %eax 1508; SSE42-NEXT: andb $1, %al 1509; SSE42-NEXT: movb %al, (%rdi) 1510; SSE42-NEXT: pextrb $11, %xmm0, %eax 1511; SSE42-NEXT: andb $1, %al 1512; SSE42-NEXT: movb %al, (%rdi) 1513; SSE42-NEXT: pextrb $10, %xmm0, %eax 1514; SSE42-NEXT: andb $1, %al 1515; SSE42-NEXT: movb %al, (%rdi) 1516; SSE42-NEXT: pextrb $9, %xmm0, %eax 1517; SSE42-NEXT: andb $1, %al 1518; SSE42-NEXT: movb %al, (%rdi) 1519; SSE42-NEXT: pextrb $8, %xmm0, %eax 1520; SSE42-NEXT: andb $1, %al 1521; SSE42-NEXT: movb %al, (%rdi) 1522; SSE42-NEXT: pextrb $7, %xmm0, %eax 1523; SSE42-NEXT: andb $1, %al 1524; SSE42-NEXT: movb %al, (%rdi) 1525; SSE42-NEXT: pextrb $6, %xmm0, %eax 1526; SSE42-NEXT: andb $1, %al 1527; SSE42-NEXT: movb %al, (%rdi) 1528; SSE42-NEXT: pextrb $5, %xmm0, %eax 1529; SSE42-NEXT: andb $1, %al 1530; SSE42-NEXT: movb %al, (%rdi) 1531; SSE42-NEXT: pextrb $4, %xmm0, %eax 1532; SSE42-NEXT: andb $1, %al 1533; SSE42-NEXT: movb %al, (%rdi) 1534; SSE42-NEXT: pextrb $3, %xmm0, %eax 1535; SSE42-NEXT: andb $1, %al 1536; SSE42-NEXT: movb %al, (%rdi) 1537; SSE42-NEXT: pextrb $2, %xmm0, %eax 1538; SSE42-NEXT: andb $1, %al 1539; SSE42-NEXT: movb %al, (%rdi) 1540; SSE42-NEXT: pextrb $1, %xmm0, %eax 1541; SSE42-NEXT: andb $1, %al 1542; SSE42-NEXT: movb %al, (%rdi) 1543; SSE42-NEXT: pextrb $0, %xmm0, %eax 1544; SSE42-NEXT: andb $1, %al 1545; SSE42-NEXT: movb %al, (%rdi) 1546; SSE42-NEXT: movq %rdi, %rax 1547; SSE42-NEXT: retq 1548; 1549; AVX1-LABEL: test_cmp_v64i8: 1550; AVX1: # BB#0: 1551; AVX1-NEXT: vpcmpgtb %xmm2, %xmm0, %xmm4 1552; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm2 1553; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 1554; AVX1-NEXT: vpcmpgtb %xmm2, %xmm0, %xmm0 1555; AVX1-NEXT: vpcmpgtb %xmm3, %xmm1, %xmm2 1556; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm3 1557; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1 1558; AVX1-NEXT: vpcmpgtb %xmm3, %xmm1, %xmm1 1559; AVX1-NEXT: vpextrb $15, %xmm1, %eax 1560; AVX1-NEXT: andb $1, %al 1561; AVX1-NEXT: movb %al, 4(%rdi) 1562; AVX1-NEXT: vpextrb $14, %xmm1, %eax 1563; AVX1-NEXT: andb $1, %al 1564; AVX1-NEXT: movb %al, 4(%rdi) 1565; AVX1-NEXT: vpextrb $13, %xmm1, %eax 1566; AVX1-NEXT: andb $1, %al 1567; AVX1-NEXT: movb %al, 4(%rdi) 1568; AVX1-NEXT: vpextrb $12, %xmm1, %eax 1569; AVX1-NEXT: andb $1, %al 1570; AVX1-NEXT: movb %al, 4(%rdi) 1571; AVX1-NEXT: vpextrb $11, %xmm1, %eax 1572; AVX1-NEXT: andb $1, %al 1573; AVX1-NEXT: movb %al, 4(%rdi) 1574; AVX1-NEXT: vpextrb $10, %xmm1, %eax 1575; AVX1-NEXT: andb $1, %al 1576; AVX1-NEXT: movb %al, 4(%rdi) 1577; AVX1-NEXT: vpextrb $9, %xmm1, %eax 1578; AVX1-NEXT: andb $1, %al 1579; AVX1-NEXT: movb %al, 4(%rdi) 1580; AVX1-NEXT: vpextrb $8, %xmm1, %eax 1581; AVX1-NEXT: andb $1, %al 1582; AVX1-NEXT: movb %al, 4(%rdi) 1583; AVX1-NEXT: vpextrb $7, %xmm1, %eax 1584; AVX1-NEXT: andb $1, %al 1585; AVX1-NEXT: movb %al, 4(%rdi) 1586; AVX1-NEXT: vpextrb $6, %xmm1, %eax 1587; AVX1-NEXT: andb $1, %al 1588; AVX1-NEXT: movb %al, 4(%rdi) 1589; AVX1-NEXT: vpextrb $5, %xmm1, %eax 1590; AVX1-NEXT: andb $1, %al 1591; AVX1-NEXT: movb %al, 4(%rdi) 1592; AVX1-NEXT: vpextrb $4, %xmm1, %eax 1593; AVX1-NEXT: andb $1, %al 1594; AVX1-NEXT: movb %al, 4(%rdi) 1595; AVX1-NEXT: vpextrb $3, %xmm1, %eax 1596; AVX1-NEXT: andb $1, %al 1597; AVX1-NEXT: movb %al, 4(%rdi) 1598; AVX1-NEXT: vpextrb $2, %xmm1, %eax 1599; AVX1-NEXT: andb $1, %al 1600; AVX1-NEXT: movb %al, 4(%rdi) 1601; AVX1-NEXT: vpextrb $1, %xmm1, %eax 1602; AVX1-NEXT: andb $1, %al 1603; AVX1-NEXT: movb %al, 4(%rdi) 1604; AVX1-NEXT: vpextrb $0, %xmm1, %eax 1605; AVX1-NEXT: andb $1, %al 1606; AVX1-NEXT: movb %al, 4(%rdi) 1607; AVX1-NEXT: vpextrb $15, %xmm2, %eax 1608; AVX1-NEXT: andb $1, %al 1609; AVX1-NEXT: movb %al, 4(%rdi) 1610; AVX1-NEXT: vpextrb $14, %xmm2, %eax 1611; AVX1-NEXT: andb $1, %al 1612; AVX1-NEXT: movb %al, 4(%rdi) 1613; AVX1-NEXT: vpextrb $13, %xmm2, %eax 1614; AVX1-NEXT: andb $1, %al 1615; AVX1-NEXT: movb %al, 4(%rdi) 1616; AVX1-NEXT: vpextrb $12, %xmm2, %eax 1617; AVX1-NEXT: andb $1, %al 1618; AVX1-NEXT: movb %al, 4(%rdi) 1619; AVX1-NEXT: vpextrb $11, %xmm2, %eax 1620; AVX1-NEXT: andb $1, %al 1621; AVX1-NEXT: movb %al, 4(%rdi) 1622; AVX1-NEXT: vpextrb $10, %xmm2, %eax 1623; AVX1-NEXT: andb $1, %al 1624; AVX1-NEXT: movb %al, 4(%rdi) 1625; AVX1-NEXT: vpextrb $9, %xmm2, %eax 1626; AVX1-NEXT: andb $1, %al 1627; AVX1-NEXT: movb %al, 4(%rdi) 1628; AVX1-NEXT: vpextrb $8, %xmm2, %eax 1629; AVX1-NEXT: andb $1, %al 1630; AVX1-NEXT: movb %al, 4(%rdi) 1631; AVX1-NEXT: vpextrb $7, %xmm2, %eax 1632; AVX1-NEXT: andb $1, %al 1633; AVX1-NEXT: movb %al, 4(%rdi) 1634; AVX1-NEXT: vpextrb $6, %xmm2, %eax 1635; AVX1-NEXT: andb $1, %al 1636; AVX1-NEXT: movb %al, 4(%rdi) 1637; AVX1-NEXT: vpextrb $5, %xmm2, %eax 1638; AVX1-NEXT: andb $1, %al 1639; AVX1-NEXT: movb %al, 4(%rdi) 1640; AVX1-NEXT: vpextrb $4, %xmm2, %eax 1641; AVX1-NEXT: andb $1, %al 1642; AVX1-NEXT: movb %al, 4(%rdi) 1643; AVX1-NEXT: vpextrb $3, %xmm2, %eax 1644; AVX1-NEXT: andb $1, %al 1645; AVX1-NEXT: movb %al, 4(%rdi) 1646; AVX1-NEXT: vpextrb $2, %xmm2, %eax 1647; AVX1-NEXT: andb $1, %al 1648; AVX1-NEXT: movb %al, 4(%rdi) 1649; AVX1-NEXT: vpextrb $1, %xmm2, %eax 1650; AVX1-NEXT: andb $1, %al 1651; AVX1-NEXT: movb %al, 4(%rdi) 1652; AVX1-NEXT: vpextrb $0, %xmm2, %eax 1653; AVX1-NEXT: andb $1, %al 1654; AVX1-NEXT: movb %al, 4(%rdi) 1655; AVX1-NEXT: vpextrb $15, %xmm0, %eax 1656; AVX1-NEXT: andb $1, %al 1657; AVX1-NEXT: movb %al, (%rdi) 1658; AVX1-NEXT: vpextrb $14, %xmm0, %eax 1659; AVX1-NEXT: andb $1, %al 1660; AVX1-NEXT: movb %al, (%rdi) 1661; AVX1-NEXT: vpextrb $13, %xmm0, %eax 1662; AVX1-NEXT: andb $1, %al 1663; AVX1-NEXT: movb %al, (%rdi) 1664; AVX1-NEXT: vpextrb $12, %xmm0, %eax 1665; AVX1-NEXT: andb $1, %al 1666; AVX1-NEXT: movb %al, (%rdi) 1667; AVX1-NEXT: vpextrb $11, %xmm0, %eax 1668; AVX1-NEXT: andb $1, %al 1669; AVX1-NEXT: movb %al, (%rdi) 1670; AVX1-NEXT: vpextrb $10, %xmm0, %eax 1671; AVX1-NEXT: andb $1, %al 1672; AVX1-NEXT: movb %al, (%rdi) 1673; AVX1-NEXT: vpextrb $9, %xmm0, %eax 1674; AVX1-NEXT: andb $1, %al 1675; AVX1-NEXT: movb %al, (%rdi) 1676; AVX1-NEXT: vpextrb $8, %xmm0, %eax 1677; AVX1-NEXT: andb $1, %al 1678; AVX1-NEXT: movb %al, (%rdi) 1679; AVX1-NEXT: vpextrb $7, %xmm0, %eax 1680; AVX1-NEXT: andb $1, %al 1681; AVX1-NEXT: movb %al, (%rdi) 1682; AVX1-NEXT: vpextrb $6, %xmm0, %eax 1683; AVX1-NEXT: andb $1, %al 1684; AVX1-NEXT: movb %al, (%rdi) 1685; AVX1-NEXT: vpextrb $5, %xmm0, %eax 1686; AVX1-NEXT: andb $1, %al 1687; AVX1-NEXT: movb %al, (%rdi) 1688; AVX1-NEXT: vpextrb $4, %xmm0, %eax 1689; AVX1-NEXT: andb $1, %al 1690; AVX1-NEXT: movb %al, (%rdi) 1691; AVX1-NEXT: vpextrb $3, %xmm0, %eax 1692; AVX1-NEXT: andb $1, %al 1693; AVX1-NEXT: movb %al, (%rdi) 1694; AVX1-NEXT: vpextrb $2, %xmm0, %eax 1695; AVX1-NEXT: andb $1, %al 1696; AVX1-NEXT: movb %al, (%rdi) 1697; AVX1-NEXT: vpextrb $1, %xmm0, %eax 1698; AVX1-NEXT: andb $1, %al 1699; AVX1-NEXT: movb %al, (%rdi) 1700; AVX1-NEXT: vpextrb $0, %xmm0, %eax 1701; AVX1-NEXT: andb $1, %al 1702; AVX1-NEXT: movb %al, (%rdi) 1703; AVX1-NEXT: vpextrb $15, %xmm4, %eax 1704; AVX1-NEXT: andb $1, %al 1705; AVX1-NEXT: movb %al, (%rdi) 1706; AVX1-NEXT: vpextrb $14, %xmm4, %eax 1707; AVX1-NEXT: andb $1, %al 1708; AVX1-NEXT: movb %al, (%rdi) 1709; AVX1-NEXT: vpextrb $13, %xmm4, %eax 1710; AVX1-NEXT: andb $1, %al 1711; AVX1-NEXT: movb %al, (%rdi) 1712; AVX1-NEXT: vpextrb $12, %xmm4, %eax 1713; AVX1-NEXT: andb $1, %al 1714; AVX1-NEXT: movb %al, (%rdi) 1715; AVX1-NEXT: vpextrb $11, %xmm4, %eax 1716; AVX1-NEXT: andb $1, %al 1717; AVX1-NEXT: movb %al, (%rdi) 1718; AVX1-NEXT: vpextrb $10, %xmm4, %eax 1719; AVX1-NEXT: andb $1, %al 1720; AVX1-NEXT: movb %al, (%rdi) 1721; AVX1-NEXT: vpextrb $9, %xmm4, %eax 1722; AVX1-NEXT: andb $1, %al 1723; AVX1-NEXT: movb %al, (%rdi) 1724; AVX1-NEXT: vpextrb $8, %xmm4, %eax 1725; AVX1-NEXT: andb $1, %al 1726; AVX1-NEXT: movb %al, (%rdi) 1727; AVX1-NEXT: vpextrb $7, %xmm4, %eax 1728; AVX1-NEXT: andb $1, %al 1729; AVX1-NEXT: movb %al, (%rdi) 1730; AVX1-NEXT: vpextrb $6, %xmm4, %eax 1731; AVX1-NEXT: andb $1, %al 1732; AVX1-NEXT: movb %al, (%rdi) 1733; AVX1-NEXT: vpextrb $5, %xmm4, %eax 1734; AVX1-NEXT: andb $1, %al 1735; AVX1-NEXT: movb %al, (%rdi) 1736; AVX1-NEXT: vpextrb $4, %xmm4, %eax 1737; AVX1-NEXT: andb $1, %al 1738; AVX1-NEXT: movb %al, (%rdi) 1739; AVX1-NEXT: vpextrb $3, %xmm4, %eax 1740; AVX1-NEXT: andb $1, %al 1741; AVX1-NEXT: movb %al, (%rdi) 1742; AVX1-NEXT: vpextrb $2, %xmm4, %eax 1743; AVX1-NEXT: andb $1, %al 1744; AVX1-NEXT: movb %al, (%rdi) 1745; AVX1-NEXT: vpextrb $1, %xmm4, %eax 1746; AVX1-NEXT: andb $1, %al 1747; AVX1-NEXT: movb %al, (%rdi) 1748; AVX1-NEXT: vpextrb $0, %xmm4, %eax 1749; AVX1-NEXT: andb $1, %al 1750; AVX1-NEXT: movb %al, (%rdi) 1751; AVX1-NEXT: movq %rdi, %rax 1752; AVX1-NEXT: vzeroupper 1753; AVX1-NEXT: retq 1754; 1755; AVX2-LABEL: test_cmp_v64i8: 1756; AVX2: # BB#0: 1757; AVX2-NEXT: vpcmpgtb %ymm2, %ymm0, %ymm0 1758; AVX2-NEXT: vpcmpgtb %ymm3, %ymm1, %ymm1 1759; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2 1760; AVX2-NEXT: vpextrb $15, %xmm2, %eax 1761; AVX2-NEXT: andb $1, %al 1762; AVX2-NEXT: movb %al, 4(%rdi) 1763; AVX2-NEXT: vpextrb $14, %xmm2, %eax 1764; AVX2-NEXT: andb $1, %al 1765; AVX2-NEXT: movb %al, 4(%rdi) 1766; AVX2-NEXT: vpextrb $13, %xmm2, %eax 1767; AVX2-NEXT: andb $1, %al 1768; AVX2-NEXT: movb %al, 4(%rdi) 1769; AVX2-NEXT: vpextrb $12, %xmm2, %eax 1770; AVX2-NEXT: andb $1, %al 1771; AVX2-NEXT: movb %al, 4(%rdi) 1772; AVX2-NEXT: vpextrb $11, %xmm2, %eax 1773; AVX2-NEXT: andb $1, %al 1774; AVX2-NEXT: movb %al, 4(%rdi) 1775; AVX2-NEXT: vpextrb $10, %xmm2, %eax 1776; AVX2-NEXT: andb $1, %al 1777; AVX2-NEXT: movb %al, 4(%rdi) 1778; AVX2-NEXT: vpextrb $9, %xmm2, %eax 1779; AVX2-NEXT: andb $1, %al 1780; AVX2-NEXT: movb %al, 4(%rdi) 1781; AVX2-NEXT: vpextrb $8, %xmm2, %eax 1782; AVX2-NEXT: andb $1, %al 1783; AVX2-NEXT: movb %al, 4(%rdi) 1784; AVX2-NEXT: vpextrb $7, %xmm2, %eax 1785; AVX2-NEXT: andb $1, %al 1786; AVX2-NEXT: movb %al, 4(%rdi) 1787; AVX2-NEXT: vpextrb $6, %xmm2, %eax 1788; AVX2-NEXT: andb $1, %al 1789; AVX2-NEXT: movb %al, 4(%rdi) 1790; AVX2-NEXT: vpextrb $5, %xmm2, %eax 1791; AVX2-NEXT: andb $1, %al 1792; AVX2-NEXT: movb %al, 4(%rdi) 1793; AVX2-NEXT: vpextrb $4, %xmm2, %eax 1794; AVX2-NEXT: andb $1, %al 1795; AVX2-NEXT: movb %al, 4(%rdi) 1796; AVX2-NEXT: vpextrb $3, %xmm2, %eax 1797; AVX2-NEXT: andb $1, %al 1798; AVX2-NEXT: movb %al, 4(%rdi) 1799; AVX2-NEXT: vpextrb $2, %xmm2, %eax 1800; AVX2-NEXT: andb $1, %al 1801; AVX2-NEXT: movb %al, 4(%rdi) 1802; AVX2-NEXT: vpextrb $1, %xmm2, %eax 1803; AVX2-NEXT: andb $1, %al 1804; AVX2-NEXT: movb %al, 4(%rdi) 1805; AVX2-NEXT: vpextrb $0, %xmm2, %eax 1806; AVX2-NEXT: andb $1, %al 1807; AVX2-NEXT: movb %al, 4(%rdi) 1808; AVX2-NEXT: vpextrb $15, %xmm1, %eax 1809; AVX2-NEXT: andb $1, %al 1810; AVX2-NEXT: movb %al, 4(%rdi) 1811; AVX2-NEXT: vpextrb $14, %xmm1, %eax 1812; AVX2-NEXT: andb $1, %al 1813; AVX2-NEXT: movb %al, 4(%rdi) 1814; AVX2-NEXT: vpextrb $13, %xmm1, %eax 1815; AVX2-NEXT: andb $1, %al 1816; AVX2-NEXT: movb %al, 4(%rdi) 1817; AVX2-NEXT: vpextrb $12, %xmm1, %eax 1818; AVX2-NEXT: andb $1, %al 1819; AVX2-NEXT: movb %al, 4(%rdi) 1820; AVX2-NEXT: vpextrb $11, %xmm1, %eax 1821; AVX2-NEXT: andb $1, %al 1822; AVX2-NEXT: movb %al, 4(%rdi) 1823; AVX2-NEXT: vpextrb $10, %xmm1, %eax 1824; AVX2-NEXT: andb $1, %al 1825; AVX2-NEXT: movb %al, 4(%rdi) 1826; AVX2-NEXT: vpextrb $9, %xmm1, %eax 1827; AVX2-NEXT: andb $1, %al 1828; AVX2-NEXT: movb %al, 4(%rdi) 1829; AVX2-NEXT: vpextrb $8, %xmm1, %eax 1830; AVX2-NEXT: andb $1, %al 1831; AVX2-NEXT: movb %al, 4(%rdi) 1832; AVX2-NEXT: vpextrb $7, %xmm1, %eax 1833; AVX2-NEXT: andb $1, %al 1834; AVX2-NEXT: movb %al, 4(%rdi) 1835; AVX2-NEXT: vpextrb $6, %xmm1, %eax 1836; AVX2-NEXT: andb $1, %al 1837; AVX2-NEXT: movb %al, 4(%rdi) 1838; AVX2-NEXT: vpextrb $5, %xmm1, %eax 1839; AVX2-NEXT: andb $1, %al 1840; AVX2-NEXT: movb %al, 4(%rdi) 1841; AVX2-NEXT: vpextrb $4, %xmm1, %eax 1842; AVX2-NEXT: andb $1, %al 1843; AVX2-NEXT: movb %al, 4(%rdi) 1844; AVX2-NEXT: vpextrb $3, %xmm1, %eax 1845; AVX2-NEXT: andb $1, %al 1846; AVX2-NEXT: movb %al, 4(%rdi) 1847; AVX2-NEXT: vpextrb $2, %xmm1, %eax 1848; AVX2-NEXT: andb $1, %al 1849; AVX2-NEXT: movb %al, 4(%rdi) 1850; AVX2-NEXT: vpextrb $1, %xmm1, %eax 1851; AVX2-NEXT: andb $1, %al 1852; AVX2-NEXT: movb %al, 4(%rdi) 1853; AVX2-NEXT: vpextrb $0, %xmm1, %eax 1854; AVX2-NEXT: andb $1, %al 1855; AVX2-NEXT: movb %al, 4(%rdi) 1856; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 1857; AVX2-NEXT: vpextrb $15, %xmm1, %eax 1858; AVX2-NEXT: andb $1, %al 1859; AVX2-NEXT: movb %al, (%rdi) 1860; AVX2-NEXT: vpextrb $14, %xmm1, %eax 1861; AVX2-NEXT: andb $1, %al 1862; AVX2-NEXT: movb %al, (%rdi) 1863; AVX2-NEXT: vpextrb $13, %xmm1, %eax 1864; AVX2-NEXT: andb $1, %al 1865; AVX2-NEXT: movb %al, (%rdi) 1866; AVX2-NEXT: vpextrb $12, %xmm1, %eax 1867; AVX2-NEXT: andb $1, %al 1868; AVX2-NEXT: movb %al, (%rdi) 1869; AVX2-NEXT: vpextrb $11, %xmm1, %eax 1870; AVX2-NEXT: andb $1, %al 1871; AVX2-NEXT: movb %al, (%rdi) 1872; AVX2-NEXT: vpextrb $10, %xmm1, %eax 1873; AVX2-NEXT: andb $1, %al 1874; AVX2-NEXT: movb %al, (%rdi) 1875; AVX2-NEXT: vpextrb $9, %xmm1, %eax 1876; AVX2-NEXT: andb $1, %al 1877; AVX2-NEXT: movb %al, (%rdi) 1878; AVX2-NEXT: vpextrb $8, %xmm1, %eax 1879; AVX2-NEXT: andb $1, %al 1880; AVX2-NEXT: movb %al, (%rdi) 1881; AVX2-NEXT: vpextrb $7, %xmm1, %eax 1882; AVX2-NEXT: andb $1, %al 1883; AVX2-NEXT: movb %al, (%rdi) 1884; AVX2-NEXT: vpextrb $6, %xmm1, %eax 1885; AVX2-NEXT: andb $1, %al 1886; AVX2-NEXT: movb %al, (%rdi) 1887; AVX2-NEXT: vpextrb $5, %xmm1, %eax 1888; AVX2-NEXT: andb $1, %al 1889; AVX2-NEXT: movb %al, (%rdi) 1890; AVX2-NEXT: vpextrb $4, %xmm1, %eax 1891; AVX2-NEXT: andb $1, %al 1892; AVX2-NEXT: movb %al, (%rdi) 1893; AVX2-NEXT: vpextrb $3, %xmm1, %eax 1894; AVX2-NEXT: andb $1, %al 1895; AVX2-NEXT: movb %al, (%rdi) 1896; AVX2-NEXT: vpextrb $2, %xmm1, %eax 1897; AVX2-NEXT: andb $1, %al 1898; AVX2-NEXT: movb %al, (%rdi) 1899; AVX2-NEXT: vpextrb $1, %xmm1, %eax 1900; AVX2-NEXT: andb $1, %al 1901; AVX2-NEXT: movb %al, (%rdi) 1902; AVX2-NEXT: vpextrb $0, %xmm1, %eax 1903; AVX2-NEXT: andb $1, %al 1904; AVX2-NEXT: movb %al, (%rdi) 1905; AVX2-NEXT: vpextrb $15, %xmm0, %eax 1906; AVX2-NEXT: andb $1, %al 1907; AVX2-NEXT: movb %al, (%rdi) 1908; AVX2-NEXT: vpextrb $14, %xmm0, %eax 1909; AVX2-NEXT: andb $1, %al 1910; AVX2-NEXT: movb %al, (%rdi) 1911; AVX2-NEXT: vpextrb $13, %xmm0, %eax 1912; AVX2-NEXT: andb $1, %al 1913; AVX2-NEXT: movb %al, (%rdi) 1914; AVX2-NEXT: vpextrb $12, %xmm0, %eax 1915; AVX2-NEXT: andb $1, %al 1916; AVX2-NEXT: movb %al, (%rdi) 1917; AVX2-NEXT: vpextrb $11, %xmm0, %eax 1918; AVX2-NEXT: andb $1, %al 1919; AVX2-NEXT: movb %al, (%rdi) 1920; AVX2-NEXT: vpextrb $10, %xmm0, %eax 1921; AVX2-NEXT: andb $1, %al 1922; AVX2-NEXT: movb %al, (%rdi) 1923; AVX2-NEXT: vpextrb $9, %xmm0, %eax 1924; AVX2-NEXT: andb $1, %al 1925; AVX2-NEXT: movb %al, (%rdi) 1926; AVX2-NEXT: vpextrb $8, %xmm0, %eax 1927; AVX2-NEXT: andb $1, %al 1928; AVX2-NEXT: movb %al, (%rdi) 1929; AVX2-NEXT: vpextrb $7, %xmm0, %eax 1930; AVX2-NEXT: andb $1, %al 1931; AVX2-NEXT: movb %al, (%rdi) 1932; AVX2-NEXT: vpextrb $6, %xmm0, %eax 1933; AVX2-NEXT: andb $1, %al 1934; AVX2-NEXT: movb %al, (%rdi) 1935; AVX2-NEXT: vpextrb $5, %xmm0, %eax 1936; AVX2-NEXT: andb $1, %al 1937; AVX2-NEXT: movb %al, (%rdi) 1938; AVX2-NEXT: vpextrb $4, %xmm0, %eax 1939; AVX2-NEXT: andb $1, %al 1940; AVX2-NEXT: movb %al, (%rdi) 1941; AVX2-NEXT: vpextrb $3, %xmm0, %eax 1942; AVX2-NEXT: andb $1, %al 1943; AVX2-NEXT: movb %al, (%rdi) 1944; AVX2-NEXT: vpextrb $2, %xmm0, %eax 1945; AVX2-NEXT: andb $1, %al 1946; AVX2-NEXT: movb %al, (%rdi) 1947; AVX2-NEXT: vpextrb $1, %xmm0, %eax 1948; AVX2-NEXT: andb $1, %al 1949; AVX2-NEXT: movb %al, (%rdi) 1950; AVX2-NEXT: vpextrb $0, %xmm0, %eax 1951; AVX2-NEXT: andb $1, %al 1952; AVX2-NEXT: movb %al, (%rdi) 1953; AVX2-NEXT: movq %rdi, %rax 1954; AVX2-NEXT: vzeroupper 1955; AVX2-NEXT: retq 1956; 1957; AVX512F-LABEL: test_cmp_v64i8: 1958; AVX512F: # BB#0: 1959; AVX512F-NEXT: vpcmpgtb %ymm3, %ymm1, %ymm4 1960; AVX512F-NEXT: vpcmpgtb %ymm2, %ymm0, %ymm0 1961; AVX512F-NEXT: vextracti128 $1, %ymm0, %xmm1 1962; AVX512F-NEXT: vextracti128 $1, %ymm4, %xmm3 1963; AVX512F-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill> 1964; AVX512F-NEXT: vmovdqa %xmm4, %xmm2 1965; AVX512F-NEXT: retq 1966; 1967; AVX512DQ-LABEL: test_cmp_v64i8: 1968; AVX512DQ: # BB#0: 1969; AVX512DQ-NEXT: vpcmpgtb %ymm3, %ymm1, %ymm4 1970; AVX512DQ-NEXT: vpcmpgtb %ymm2, %ymm0, %ymm0 1971; AVX512DQ-NEXT: vextracti128 $1, %ymm0, %xmm1 1972; AVX512DQ-NEXT: vextracti128 $1, %ymm4, %xmm3 1973; AVX512DQ-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill> 1974; AVX512DQ-NEXT: vmovdqa %xmm4, %xmm2 1975; AVX512DQ-NEXT: retq 1976; 1977; AVX512BW-LABEL: test_cmp_v64i8: 1978; AVX512BW: # BB#0: 1979; AVX512BW-NEXT: vpcmpgtb %zmm1, %zmm0, %k0 1980; AVX512BW-NEXT: vpmovm2b %k0, %zmm0 1981; AVX512BW-NEXT: retq 1982 %1 = icmp sgt <64 x i8> %a0, %a1 1983 ret <64 x i1> %1 1984} 1985 1986; 1987; 1024-bit vector comparisons 1988; 1989 1990define <16 x i1> @test_cmp_v16f64(<16 x double> %a0, <16 x double> %a1) nounwind { 1991; SSE-LABEL: test_cmp_v16f64: 1992; SSE: # BB#0: 1993; SSE-NEXT: movapd %xmm0, %xmm8 1994; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm0 1995; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm11 1996; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm10 1997; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm12 1998; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm9 1999; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm13 2000; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm14 2001; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm15 2002; SSE-NEXT: cmpltpd %xmm7, %xmm15 2003; SSE-NEXT: cmpltpd %xmm6, %xmm14 2004; SSE-NEXT: packsswb %xmm15, %xmm14 2005; SSE-NEXT: cmpltpd %xmm5, %xmm13 2006; SSE-NEXT: cmpltpd %xmm4, %xmm9 2007; SSE-NEXT: packsswb %xmm13, %xmm9 2008; SSE-NEXT: packsswb %xmm14, %xmm9 2009; SSE-NEXT: cmpltpd %xmm3, %xmm12 2010; SSE-NEXT: cmpltpd %xmm2, %xmm10 2011; SSE-NEXT: packsswb %xmm12, %xmm10 2012; SSE-NEXT: cmpltpd %xmm1, %xmm11 2013; SSE-NEXT: cmpltpd %xmm8, %xmm0 2014; SSE-NEXT: packsswb %xmm11, %xmm0 2015; SSE-NEXT: packsswb %xmm10, %xmm0 2016; SSE-NEXT: packsswb %xmm9, %xmm0 2017; SSE-NEXT: retq 2018; 2019; AVX1-LABEL: test_cmp_v16f64: 2020; AVX1: # BB#0: 2021; AVX1-NEXT: vcmpltpd %ymm3, %ymm7, %ymm3 2022; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm7 2023; AVX1-NEXT: vpacksswb %xmm7, %xmm3, %xmm3 2024; AVX1-NEXT: vcmpltpd %ymm2, %ymm6, %ymm2 2025; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm6 2026; AVX1-NEXT: vpacksswb %xmm6, %xmm2, %xmm2 2027; AVX1-NEXT: vpacksswb %xmm3, %xmm2, %xmm2 2028; AVX1-NEXT: vcmpltpd %ymm1, %ymm5, %ymm1 2029; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 2030; AVX1-NEXT: vpacksswb %xmm3, %xmm1, %xmm1 2031; AVX1-NEXT: vcmpltpd %ymm0, %ymm4, %ymm0 2032; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 2033; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 2034; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 2035; AVX1-NEXT: vpacksswb %xmm2, %xmm0, %xmm0 2036; AVX1-NEXT: vzeroupper 2037; AVX1-NEXT: retq 2038; 2039; AVX2-LABEL: test_cmp_v16f64: 2040; AVX2: # BB#0: 2041; AVX2-NEXT: vcmpltpd %ymm3, %ymm7, %ymm3 2042; AVX2-NEXT: vcmpltpd %ymm2, %ymm6, %ymm2 2043; AVX2-NEXT: vpacksswb %ymm3, %ymm2, %ymm2 2044; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,1,3] 2045; AVX2-NEXT: vcmpltpd %ymm1, %ymm5, %ymm1 2046; AVX2-NEXT: vcmpltpd %ymm0, %ymm4, %ymm0 2047; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 2048; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 2049; AVX2-NEXT: vpacksswb %ymm2, %ymm0, %ymm0 2050; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 2051; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 2052; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 2053; AVX2-NEXT: vzeroupper 2054; AVX2-NEXT: retq 2055; 2056; AVX512F-LABEL: test_cmp_v16f64: 2057; AVX512F: # BB#0: 2058; AVX512F-NEXT: vextractf32x4 $3, %zmm2, %xmm4 2059; AVX512F-NEXT: vextractf32x4 $3, %zmm0, %xmm5 2060; AVX512F-NEXT: xorl %eax, %eax 2061; AVX512F-NEXT: vucomisd %xmm4, %xmm5 2062; AVX512F-NEXT: movq $-1, %rcx 2063; AVX512F-NEXT: movl $0, %edx 2064; AVX512F-NEXT: cmovaq %rcx, %rdx 2065; AVX512F-NEXT: vmovq %rdx, %xmm6 2066; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2067; AVX512F-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2068; AVX512F-NEXT: vucomisd %xmm4, %xmm5 2069; AVX512F-NEXT: movl $0, %edx 2070; AVX512F-NEXT: cmovaq %rcx, %rdx 2071; AVX512F-NEXT: vmovq %rdx, %xmm4 2072; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0] 2073; AVX512F-NEXT: vextractf32x4 $2, %zmm2, %xmm5 2074; AVX512F-NEXT: vextractf32x4 $2, %zmm0, %xmm6 2075; AVX512F-NEXT: vucomisd %xmm5, %xmm6 2076; AVX512F-NEXT: movl $0, %edx 2077; AVX512F-NEXT: cmovaq %rcx, %rdx 2078; AVX512F-NEXT: vmovq %rdx, %xmm7 2079; AVX512F-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2080; AVX512F-NEXT: vpermilpd {{.*#+}} xmm6 = xmm6[1,0] 2081; AVX512F-NEXT: vucomisd %xmm5, %xmm6 2082; AVX512F-NEXT: movl $0, %edx 2083; AVX512F-NEXT: cmovaq %rcx, %rdx 2084; AVX512F-NEXT: vmovq %rdx, %xmm5 2085; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm7[0],xmm5[0] 2086; AVX512F-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4 2087; AVX512F-NEXT: vextractf32x4 $1, %zmm2, %xmm5 2088; AVX512F-NEXT: vextractf32x4 $1, %zmm0, %xmm6 2089; AVX512F-NEXT: vucomisd %xmm5, %xmm6 2090; AVX512F-NEXT: movl $0, %edx 2091; AVX512F-NEXT: cmovaq %rcx, %rdx 2092; AVX512F-NEXT: vmovq %rdx, %xmm7 2093; AVX512F-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2094; AVX512F-NEXT: vpermilpd {{.*#+}} xmm6 = xmm6[1,0] 2095; AVX512F-NEXT: vucomisd %xmm5, %xmm6 2096; AVX512F-NEXT: movl $0, %edx 2097; AVX512F-NEXT: cmovaq %rcx, %rdx 2098; AVX512F-NEXT: vmovq %rdx, %xmm5 2099; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm7[0],xmm5[0] 2100; AVX512F-NEXT: vucomisd %xmm2, %xmm0 2101; AVX512F-NEXT: movl $0, %edx 2102; AVX512F-NEXT: cmovaq %rcx, %rdx 2103; AVX512F-NEXT: vmovq %rdx, %xmm6 2104; AVX512F-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 2105; AVX512F-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 2106; AVX512F-NEXT: vucomisd %xmm2, %xmm0 2107; AVX512F-NEXT: movl $0, %edx 2108; AVX512F-NEXT: cmovaq %rcx, %rdx 2109; AVX512F-NEXT: vmovq %rdx, %xmm0 2110; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm6[0],xmm0[0] 2111; AVX512F-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0 2112; AVX512F-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm0 2113; AVX512F-NEXT: vpmovqd %zmm0, %ymm0 2114; AVX512F-NEXT: vextractf32x4 $3, %zmm3, %xmm2 2115; AVX512F-NEXT: vextractf32x4 $3, %zmm1, %xmm4 2116; AVX512F-NEXT: vucomisd %xmm2, %xmm4 2117; AVX512F-NEXT: movl $0, %edx 2118; AVX512F-NEXT: cmovaq %rcx, %rdx 2119; AVX512F-NEXT: vmovq %rdx, %xmm5 2120; AVX512F-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 2121; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2122; AVX512F-NEXT: vucomisd %xmm2, %xmm4 2123; AVX512F-NEXT: movl $0, %edx 2124; AVX512F-NEXT: cmovaq %rcx, %rdx 2125; AVX512F-NEXT: vmovq %rdx, %xmm2 2126; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm5[0],xmm2[0] 2127; AVX512F-NEXT: vextractf32x4 $2, %zmm3, %xmm4 2128; AVX512F-NEXT: vextractf32x4 $2, %zmm1, %xmm5 2129; AVX512F-NEXT: vucomisd %xmm4, %xmm5 2130; AVX512F-NEXT: movl $0, %edx 2131; AVX512F-NEXT: cmovaq %rcx, %rdx 2132; AVX512F-NEXT: vmovq %rdx, %xmm6 2133; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2134; AVX512F-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2135; AVX512F-NEXT: vucomisd %xmm4, %xmm5 2136; AVX512F-NEXT: movl $0, %edx 2137; AVX512F-NEXT: cmovaq %rcx, %rdx 2138; AVX512F-NEXT: vmovq %rdx, %xmm4 2139; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0] 2140; AVX512F-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2 2141; AVX512F-NEXT: vextractf32x4 $1, %zmm3, %xmm4 2142; AVX512F-NEXT: vextractf32x4 $1, %zmm1, %xmm5 2143; AVX512F-NEXT: vucomisd %xmm4, %xmm5 2144; AVX512F-NEXT: movl $0, %edx 2145; AVX512F-NEXT: cmovaq %rcx, %rdx 2146; AVX512F-NEXT: vmovq %rdx, %xmm6 2147; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2148; AVX512F-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2149; AVX512F-NEXT: vucomisd %xmm4, %xmm5 2150; AVX512F-NEXT: movl $0, %edx 2151; AVX512F-NEXT: cmovaq %rcx, %rdx 2152; AVX512F-NEXT: vmovq %rdx, %xmm4 2153; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0] 2154; AVX512F-NEXT: vucomisd %xmm3, %xmm1 2155; AVX512F-NEXT: movl $0, %edx 2156; AVX512F-NEXT: cmovaq %rcx, %rdx 2157; AVX512F-NEXT: vmovq %rdx, %xmm5 2158; AVX512F-NEXT: vpermilpd {{.*#+}} xmm3 = xmm3[1,0] 2159; AVX512F-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 2160; AVX512F-NEXT: vucomisd %xmm3, %xmm1 2161; AVX512F-NEXT: cmovaq %rcx, %rax 2162; AVX512F-NEXT: vmovq %rax, %xmm1 2163; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm5[0],xmm1[0] 2164; AVX512F-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1 2165; AVX512F-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1 2166; AVX512F-NEXT: vpmovqd %zmm1, %ymm1 2167; AVX512F-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 2168; AVX512F-NEXT: vpmovdb %zmm0, %xmm0 2169; AVX512F-NEXT: retq 2170; 2171; AVX512DQ-LABEL: test_cmp_v16f64: 2172; AVX512DQ: # BB#0: 2173; AVX512DQ-NEXT: vextractf64x2 $3, %zmm2, %xmm4 2174; AVX512DQ-NEXT: vextractf64x2 $3, %zmm0, %xmm5 2175; AVX512DQ-NEXT: xorl %eax, %eax 2176; AVX512DQ-NEXT: vucomisd %xmm4, %xmm5 2177; AVX512DQ-NEXT: movq $-1, %rcx 2178; AVX512DQ-NEXT: movl $0, %edx 2179; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2180; AVX512DQ-NEXT: vmovq %rdx, %xmm6 2181; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2182; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2183; AVX512DQ-NEXT: vucomisd %xmm4, %xmm5 2184; AVX512DQ-NEXT: movl $0, %edx 2185; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2186; AVX512DQ-NEXT: vmovq %rdx, %xmm4 2187; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0] 2188; AVX512DQ-NEXT: vextractf64x2 $2, %zmm2, %xmm5 2189; AVX512DQ-NEXT: vextractf64x2 $2, %zmm0, %xmm6 2190; AVX512DQ-NEXT: vucomisd %xmm5, %xmm6 2191; AVX512DQ-NEXT: movl $0, %edx 2192; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2193; AVX512DQ-NEXT: vmovq %rdx, %xmm7 2194; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2195; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm6 = xmm6[1,0] 2196; AVX512DQ-NEXT: vucomisd %xmm5, %xmm6 2197; AVX512DQ-NEXT: movl $0, %edx 2198; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2199; AVX512DQ-NEXT: vmovq %rdx, %xmm5 2200; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm7[0],xmm5[0] 2201; AVX512DQ-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4 2202; AVX512DQ-NEXT: vextractf64x2 $1, %zmm2, %xmm5 2203; AVX512DQ-NEXT: vextractf64x2 $1, %zmm0, %xmm6 2204; AVX512DQ-NEXT: vucomisd %xmm5, %xmm6 2205; AVX512DQ-NEXT: movl $0, %edx 2206; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2207; AVX512DQ-NEXT: vmovq %rdx, %xmm7 2208; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2209; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm6 = xmm6[1,0] 2210; AVX512DQ-NEXT: vucomisd %xmm5, %xmm6 2211; AVX512DQ-NEXT: movl $0, %edx 2212; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2213; AVX512DQ-NEXT: vmovq %rdx, %xmm5 2214; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm7[0],xmm5[0] 2215; AVX512DQ-NEXT: vucomisd %xmm2, %xmm0 2216; AVX512DQ-NEXT: movl $0, %edx 2217; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2218; AVX512DQ-NEXT: vmovq %rdx, %xmm6 2219; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 2220; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 2221; AVX512DQ-NEXT: vucomisd %xmm2, %xmm0 2222; AVX512DQ-NEXT: movl $0, %edx 2223; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2224; AVX512DQ-NEXT: vmovq %rdx, %xmm0 2225; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm6[0],xmm0[0] 2226; AVX512DQ-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0 2227; AVX512DQ-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm0 2228; AVX512DQ-NEXT: vpmovqd %zmm0, %ymm0 2229; AVX512DQ-NEXT: vextractf64x2 $3, %zmm3, %xmm2 2230; AVX512DQ-NEXT: vextractf64x2 $3, %zmm1, %xmm4 2231; AVX512DQ-NEXT: vucomisd %xmm2, %xmm4 2232; AVX512DQ-NEXT: movl $0, %edx 2233; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2234; AVX512DQ-NEXT: vmovq %rdx, %xmm5 2235; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 2236; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2237; AVX512DQ-NEXT: vucomisd %xmm2, %xmm4 2238; AVX512DQ-NEXT: movl $0, %edx 2239; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2240; AVX512DQ-NEXT: vmovq %rdx, %xmm2 2241; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm5[0],xmm2[0] 2242; AVX512DQ-NEXT: vextractf64x2 $2, %zmm3, %xmm4 2243; AVX512DQ-NEXT: vextractf64x2 $2, %zmm1, %xmm5 2244; AVX512DQ-NEXT: vucomisd %xmm4, %xmm5 2245; AVX512DQ-NEXT: movl $0, %edx 2246; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2247; AVX512DQ-NEXT: vmovq %rdx, %xmm6 2248; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2249; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2250; AVX512DQ-NEXT: vucomisd %xmm4, %xmm5 2251; AVX512DQ-NEXT: movl $0, %edx 2252; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2253; AVX512DQ-NEXT: vmovq %rdx, %xmm4 2254; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0] 2255; AVX512DQ-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2 2256; AVX512DQ-NEXT: vextractf64x2 $1, %zmm3, %xmm4 2257; AVX512DQ-NEXT: vextractf64x2 $1, %zmm1, %xmm5 2258; AVX512DQ-NEXT: vucomisd %xmm4, %xmm5 2259; AVX512DQ-NEXT: movl $0, %edx 2260; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2261; AVX512DQ-NEXT: vmovq %rdx, %xmm6 2262; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2263; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2264; AVX512DQ-NEXT: vucomisd %xmm4, %xmm5 2265; AVX512DQ-NEXT: movl $0, %edx 2266; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2267; AVX512DQ-NEXT: vmovq %rdx, %xmm4 2268; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0] 2269; AVX512DQ-NEXT: vucomisd %xmm3, %xmm1 2270; AVX512DQ-NEXT: movl $0, %edx 2271; AVX512DQ-NEXT: cmovaq %rcx, %rdx 2272; AVX512DQ-NEXT: vmovq %rdx, %xmm5 2273; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm3 = xmm3[1,0] 2274; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 2275; AVX512DQ-NEXT: vucomisd %xmm3, %xmm1 2276; AVX512DQ-NEXT: cmovaq %rcx, %rax 2277; AVX512DQ-NEXT: vmovq %rax, %xmm1 2278; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm5[0],xmm1[0] 2279; AVX512DQ-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1 2280; AVX512DQ-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1 2281; AVX512DQ-NEXT: vpmovqd %zmm1, %ymm1 2282; AVX512DQ-NEXT: vinserti32x8 $1, %ymm1, %zmm0, %zmm0 2283; AVX512DQ-NEXT: vpmovdb %zmm0, %xmm0 2284; AVX512DQ-NEXT: retq 2285; 2286; AVX512BW-LABEL: test_cmp_v16f64: 2287; AVX512BW: # BB#0: 2288; AVX512BW-NEXT: vextractf32x4 $3, %zmm2, %xmm4 2289; AVX512BW-NEXT: vextractf32x4 $3, %zmm0, %xmm5 2290; AVX512BW-NEXT: xorl %eax, %eax 2291; AVX512BW-NEXT: vucomisd %xmm4, %xmm5 2292; AVX512BW-NEXT: movq $-1, %rcx 2293; AVX512BW-NEXT: movl $0, %edx 2294; AVX512BW-NEXT: cmovaq %rcx, %rdx 2295; AVX512BW-NEXT: vmovq %rdx, %xmm6 2296; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2297; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2298; AVX512BW-NEXT: vucomisd %xmm4, %xmm5 2299; AVX512BW-NEXT: movl $0, %edx 2300; AVX512BW-NEXT: cmovaq %rcx, %rdx 2301; AVX512BW-NEXT: vmovq %rdx, %xmm4 2302; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0] 2303; AVX512BW-NEXT: vextractf32x4 $2, %zmm2, %xmm5 2304; AVX512BW-NEXT: vextractf32x4 $2, %zmm0, %xmm6 2305; AVX512BW-NEXT: vucomisd %xmm5, %xmm6 2306; AVX512BW-NEXT: movl $0, %edx 2307; AVX512BW-NEXT: cmovaq %rcx, %rdx 2308; AVX512BW-NEXT: vmovq %rdx, %xmm7 2309; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2310; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm6 = xmm6[1,0] 2311; AVX512BW-NEXT: vucomisd %xmm5, %xmm6 2312; AVX512BW-NEXT: movl $0, %edx 2313; AVX512BW-NEXT: cmovaq %rcx, %rdx 2314; AVX512BW-NEXT: vmovq %rdx, %xmm5 2315; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm7[0],xmm5[0] 2316; AVX512BW-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4 2317; AVX512BW-NEXT: vextractf32x4 $1, %zmm2, %xmm5 2318; AVX512BW-NEXT: vextractf32x4 $1, %zmm0, %xmm6 2319; AVX512BW-NEXT: vucomisd %xmm5, %xmm6 2320; AVX512BW-NEXT: movl $0, %edx 2321; AVX512BW-NEXT: cmovaq %rcx, %rdx 2322; AVX512BW-NEXT: vmovq %rdx, %xmm7 2323; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2324; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm6 = xmm6[1,0] 2325; AVX512BW-NEXT: vucomisd %xmm5, %xmm6 2326; AVX512BW-NEXT: movl $0, %edx 2327; AVX512BW-NEXT: cmovaq %rcx, %rdx 2328; AVX512BW-NEXT: vmovq %rdx, %xmm5 2329; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm7[0],xmm5[0] 2330; AVX512BW-NEXT: vucomisd %xmm2, %xmm0 2331; AVX512BW-NEXT: movl $0, %edx 2332; AVX512BW-NEXT: cmovaq %rcx, %rdx 2333; AVX512BW-NEXT: vmovq %rdx, %xmm6 2334; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 2335; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 2336; AVX512BW-NEXT: vucomisd %xmm2, %xmm0 2337; AVX512BW-NEXT: movl $0, %edx 2338; AVX512BW-NEXT: cmovaq %rcx, %rdx 2339; AVX512BW-NEXT: vmovq %rdx, %xmm0 2340; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm6[0],xmm0[0] 2341; AVX512BW-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0 2342; AVX512BW-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm0 2343; AVX512BW-NEXT: vpmovqd %zmm0, %ymm0 2344; AVX512BW-NEXT: vextractf32x4 $3, %zmm3, %xmm2 2345; AVX512BW-NEXT: vextractf32x4 $3, %zmm1, %xmm4 2346; AVX512BW-NEXT: vucomisd %xmm2, %xmm4 2347; AVX512BW-NEXT: movl $0, %edx 2348; AVX512BW-NEXT: cmovaq %rcx, %rdx 2349; AVX512BW-NEXT: vmovq %rdx, %xmm5 2350; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 2351; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2352; AVX512BW-NEXT: vucomisd %xmm2, %xmm4 2353; AVX512BW-NEXT: movl $0, %edx 2354; AVX512BW-NEXT: cmovaq %rcx, %rdx 2355; AVX512BW-NEXT: vmovq %rdx, %xmm2 2356; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm5[0],xmm2[0] 2357; AVX512BW-NEXT: vextractf32x4 $2, %zmm3, %xmm4 2358; AVX512BW-NEXT: vextractf32x4 $2, %zmm1, %xmm5 2359; AVX512BW-NEXT: vucomisd %xmm4, %xmm5 2360; AVX512BW-NEXT: movl $0, %edx 2361; AVX512BW-NEXT: cmovaq %rcx, %rdx 2362; AVX512BW-NEXT: vmovq %rdx, %xmm6 2363; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2364; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2365; AVX512BW-NEXT: vucomisd %xmm4, %xmm5 2366; AVX512BW-NEXT: movl $0, %edx 2367; AVX512BW-NEXT: cmovaq %rcx, %rdx 2368; AVX512BW-NEXT: vmovq %rdx, %xmm4 2369; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0] 2370; AVX512BW-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2 2371; AVX512BW-NEXT: vextractf32x4 $1, %zmm3, %xmm4 2372; AVX512BW-NEXT: vextractf32x4 $1, %zmm1, %xmm5 2373; AVX512BW-NEXT: vucomisd %xmm4, %xmm5 2374; AVX512BW-NEXT: movl $0, %edx 2375; AVX512BW-NEXT: cmovaq %rcx, %rdx 2376; AVX512BW-NEXT: vmovq %rdx, %xmm6 2377; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2378; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2379; AVX512BW-NEXT: vucomisd %xmm4, %xmm5 2380; AVX512BW-NEXT: movl $0, %edx 2381; AVX512BW-NEXT: cmovaq %rcx, %rdx 2382; AVX512BW-NEXT: vmovq %rdx, %xmm4 2383; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0] 2384; AVX512BW-NEXT: vucomisd %xmm3, %xmm1 2385; AVX512BW-NEXT: movl $0, %edx 2386; AVX512BW-NEXT: cmovaq %rcx, %rdx 2387; AVX512BW-NEXT: vmovq %rdx, %xmm5 2388; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm3 = xmm3[1,0] 2389; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 2390; AVX512BW-NEXT: vucomisd %xmm3, %xmm1 2391; AVX512BW-NEXT: cmovaq %rcx, %rax 2392; AVX512BW-NEXT: vmovq %rax, %xmm1 2393; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm5[0],xmm1[0] 2394; AVX512BW-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1 2395; AVX512BW-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1 2396; AVX512BW-NEXT: vpmovqd %zmm1, %ymm1 2397; AVX512BW-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 2398; AVX512BW-NEXT: vpmovdb %zmm0, %xmm0 2399; AVX512BW-NEXT: retq 2400 %1 = fcmp ogt <16 x double> %a0, %a1 2401 ret <16 x i1> %1 2402} 2403 2404define <32 x i1> @test_cmp_v32f32(<32 x float> %a0, <32 x float> %a1) nounwind { 2405; SSE2-LABEL: test_cmp_v32f32: 2406; SSE2: # BB#0: 2407; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm8 2408; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm9 2409; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm10 2410; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm11 2411; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm12 2412; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm13 2413; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm14 2414; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm15 2415; SSE2-NEXT: cmpltps %xmm3, %xmm15 2416; SSE2-NEXT: pshuflw {{.*#+}} xmm3 = xmm15[0,2,2,3,4,5,6,7] 2417; SSE2-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,6,6,7] 2418; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3] 2419; SSE2-NEXT: cmpltps %xmm2, %xmm14 2420; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm14[0,2,2,3,4,5,6,7] 2421; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7] 2422; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] 2423; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0] 2424; SSE2-NEXT: psllw $15, %xmm2 2425; SSE2-NEXT: psraw $15, %xmm2 2426; SSE2-NEXT: movdqa {{.*#+}} xmm3 = [255,255,255,255,255,255,255,255] 2427; SSE2-NEXT: pand %xmm3, %xmm2 2428; SSE2-NEXT: cmpltps %xmm1, %xmm13 2429; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm13[0,2,2,3,4,5,6,7] 2430; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 2431; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 2432; SSE2-NEXT: cmpltps %xmm0, %xmm12 2433; SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm12[0,2,2,3,4,5,6,7] 2434; SSE2-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,6,7] 2435; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3] 2436; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 2437; SSE2-NEXT: psllw $15, %xmm0 2438; SSE2-NEXT: psraw $15, %xmm0 2439; SSE2-NEXT: pand %xmm3, %xmm0 2440; SSE2-NEXT: packuswb %xmm2, %xmm0 2441; SSE2-NEXT: cmpltps %xmm7, %xmm11 2442; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm11[0,2,2,3,4,5,6,7] 2443; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 2444; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 2445; SSE2-NEXT: cmpltps %xmm6, %xmm10 2446; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm10[0,2,2,3,4,5,6,7] 2447; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7] 2448; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] 2449; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm1[0] 2450; SSE2-NEXT: psllw $15, %xmm2 2451; SSE2-NEXT: psraw $15, %xmm2 2452; SSE2-NEXT: pand %xmm3, %xmm2 2453; SSE2-NEXT: cmpltps %xmm5, %xmm9 2454; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm9[0,2,2,3,4,5,6,7] 2455; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 2456; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 2457; SSE2-NEXT: cmpltps %xmm4, %xmm8 2458; SSE2-NEXT: pshuflw {{.*#+}} xmm4 = xmm8[0,2,2,3,4,5,6,7] 2459; SSE2-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,6,6,7] 2460; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3] 2461; SSE2-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm1[0] 2462; SSE2-NEXT: psllw $15, %xmm4 2463; SSE2-NEXT: psraw $15, %xmm4 2464; SSE2-NEXT: pand %xmm3, %xmm4 2465; SSE2-NEXT: packuswb %xmm2, %xmm4 2466; SSE2-NEXT: movdqa %xmm4, -{{[0-9]+}}(%rsp) 2467; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2468; SSE2-NEXT: andb $1, %al 2469; SSE2-NEXT: movb %al, 2(%rdi) 2470; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 2471; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2472; SSE2-NEXT: andb $1, %al 2473; SSE2-NEXT: movb %al, (%rdi) 2474; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2475; SSE2-NEXT: andb $1, %al 2476; SSE2-NEXT: movb %al, 2(%rdi) 2477; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2478; SSE2-NEXT: andb $1, %al 2479; SSE2-NEXT: movb %al, (%rdi) 2480; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2481; SSE2-NEXT: andb $1, %al 2482; SSE2-NEXT: movb %al, 2(%rdi) 2483; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2484; SSE2-NEXT: andb $1, %al 2485; SSE2-NEXT: movb %al, (%rdi) 2486; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2487; SSE2-NEXT: andb $1, %al 2488; SSE2-NEXT: movb %al, 2(%rdi) 2489; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2490; SSE2-NEXT: andb $1, %al 2491; SSE2-NEXT: movb %al, (%rdi) 2492; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2493; SSE2-NEXT: andb $1, %al 2494; SSE2-NEXT: movb %al, 2(%rdi) 2495; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2496; SSE2-NEXT: andb $1, %al 2497; SSE2-NEXT: movb %al, (%rdi) 2498; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2499; SSE2-NEXT: andb $1, %al 2500; SSE2-NEXT: movb %al, 2(%rdi) 2501; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2502; SSE2-NEXT: andb $1, %al 2503; SSE2-NEXT: movb %al, (%rdi) 2504; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2505; SSE2-NEXT: andb $1, %al 2506; SSE2-NEXT: movb %al, 2(%rdi) 2507; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2508; SSE2-NEXT: andb $1, %al 2509; SSE2-NEXT: movb %al, (%rdi) 2510; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2511; SSE2-NEXT: andb $1, %al 2512; SSE2-NEXT: movb %al, 2(%rdi) 2513; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2514; SSE2-NEXT: andb $1, %al 2515; SSE2-NEXT: movb %al, (%rdi) 2516; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2517; SSE2-NEXT: andb $1, %al 2518; SSE2-NEXT: movb %al, 2(%rdi) 2519; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2520; SSE2-NEXT: andb $1, %al 2521; SSE2-NEXT: movb %al, (%rdi) 2522; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2523; SSE2-NEXT: andb $1, %al 2524; SSE2-NEXT: movb %al, 2(%rdi) 2525; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2526; SSE2-NEXT: andb $1, %al 2527; SSE2-NEXT: movb %al, (%rdi) 2528; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2529; SSE2-NEXT: andb $1, %al 2530; SSE2-NEXT: movb %al, 2(%rdi) 2531; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2532; SSE2-NEXT: andb $1, %al 2533; SSE2-NEXT: movb %al, (%rdi) 2534; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2535; SSE2-NEXT: andb $1, %al 2536; SSE2-NEXT: movb %al, 2(%rdi) 2537; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2538; SSE2-NEXT: andb $1, %al 2539; SSE2-NEXT: movb %al, (%rdi) 2540; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2541; SSE2-NEXT: andb $1, %al 2542; SSE2-NEXT: movb %al, 2(%rdi) 2543; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2544; SSE2-NEXT: andb $1, %al 2545; SSE2-NEXT: movb %al, (%rdi) 2546; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2547; SSE2-NEXT: andb $1, %al 2548; SSE2-NEXT: movb %al, 2(%rdi) 2549; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2550; SSE2-NEXT: andb $1, %al 2551; SSE2-NEXT: movb %al, (%rdi) 2552; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2553; SSE2-NEXT: andb $1, %al 2554; SSE2-NEXT: movb %al, 2(%rdi) 2555; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2556; SSE2-NEXT: andb $1, %al 2557; SSE2-NEXT: movb %al, (%rdi) 2558; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2559; SSE2-NEXT: andb $1, %al 2560; SSE2-NEXT: movb %al, 2(%rdi) 2561; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2562; SSE2-NEXT: andb $1, %al 2563; SSE2-NEXT: movb %al, (%rdi) 2564; SSE2-NEXT: movq %rdi, %rax 2565; SSE2-NEXT: retq 2566; 2567; SSE42-LABEL: test_cmp_v32f32: 2568; SSE42: # BB#0: 2569; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm11 2570; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm12 2571; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm10 2572; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm13 2573; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm9 2574; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm14 2575; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm8 2576; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm15 2577; SSE42-NEXT: cmpltps %xmm1, %xmm15 2578; SSE42-NEXT: movdqa {{.*#+}} xmm1 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15] 2579; SSE42-NEXT: pshufb %xmm1, %xmm15 2580; SSE42-NEXT: cmpltps %xmm0, %xmm8 2581; SSE42-NEXT: pshufb %xmm1, %xmm8 2582; SSE42-NEXT: punpcklqdq {{.*#+}} xmm8 = xmm8[0],xmm15[0] 2583; SSE42-NEXT: psllw $15, %xmm8 2584; SSE42-NEXT: psraw $15, %xmm8 2585; SSE42-NEXT: cmpltps %xmm3, %xmm14 2586; SSE42-NEXT: pshufb %xmm1, %xmm14 2587; SSE42-NEXT: cmpltps %xmm2, %xmm9 2588; SSE42-NEXT: pshufb %xmm1, %xmm9 2589; SSE42-NEXT: punpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm14[0] 2590; SSE42-NEXT: psllw $15, %xmm9 2591; SSE42-NEXT: psraw $15, %xmm9 2592; SSE42-NEXT: cmpltps %xmm5, %xmm13 2593; SSE42-NEXT: pshufb %xmm1, %xmm13 2594; SSE42-NEXT: cmpltps %xmm4, %xmm10 2595; SSE42-NEXT: pshufb %xmm1, %xmm10 2596; SSE42-NEXT: punpcklqdq {{.*#+}} xmm10 = xmm10[0],xmm13[0] 2597; SSE42-NEXT: psllw $15, %xmm10 2598; SSE42-NEXT: psraw $15, %xmm10 2599; SSE42-NEXT: cmpltps %xmm7, %xmm12 2600; SSE42-NEXT: pshufb %xmm1, %xmm12 2601; SSE42-NEXT: cmpltps %xmm6, %xmm11 2602; SSE42-NEXT: pshufb %xmm1, %xmm11 2603; SSE42-NEXT: punpcklqdq {{.*#+}} xmm11 = xmm11[0],xmm12[0] 2604; SSE42-NEXT: psllw $15, %xmm11 2605; SSE42-NEXT: psraw $15, %xmm11 2606; SSE42-NEXT: pextrb $14, %xmm11, %eax 2607; SSE42-NEXT: andb $1, %al 2608; SSE42-NEXT: movb %al, 2(%rdi) 2609; SSE42-NEXT: pextrb $12, %xmm11, %eax 2610; SSE42-NEXT: andb $1, %al 2611; SSE42-NEXT: movb %al, 2(%rdi) 2612; SSE42-NEXT: pextrb $10, %xmm11, %eax 2613; SSE42-NEXT: andb $1, %al 2614; SSE42-NEXT: movb %al, 2(%rdi) 2615; SSE42-NEXT: pextrb $8, %xmm11, %eax 2616; SSE42-NEXT: andb $1, %al 2617; SSE42-NEXT: movb %al, 2(%rdi) 2618; SSE42-NEXT: pextrb $6, %xmm11, %eax 2619; SSE42-NEXT: andb $1, %al 2620; SSE42-NEXT: movb %al, 2(%rdi) 2621; SSE42-NEXT: pextrb $4, %xmm11, %eax 2622; SSE42-NEXT: andb $1, %al 2623; SSE42-NEXT: movb %al, 2(%rdi) 2624; SSE42-NEXT: pextrb $2, %xmm11, %eax 2625; SSE42-NEXT: andb $1, %al 2626; SSE42-NEXT: movb %al, 2(%rdi) 2627; SSE42-NEXT: pextrb $0, %xmm11, %eax 2628; SSE42-NEXT: andb $1, %al 2629; SSE42-NEXT: movb %al, 2(%rdi) 2630; SSE42-NEXT: pextrb $14, %xmm10, %eax 2631; SSE42-NEXT: andb $1, %al 2632; SSE42-NEXT: movb %al, 2(%rdi) 2633; SSE42-NEXT: pextrb $12, %xmm10, %eax 2634; SSE42-NEXT: andb $1, %al 2635; SSE42-NEXT: movb %al, 2(%rdi) 2636; SSE42-NEXT: pextrb $10, %xmm10, %eax 2637; SSE42-NEXT: andb $1, %al 2638; SSE42-NEXT: movb %al, 2(%rdi) 2639; SSE42-NEXT: pextrb $8, %xmm10, %eax 2640; SSE42-NEXT: andb $1, %al 2641; SSE42-NEXT: movb %al, 2(%rdi) 2642; SSE42-NEXT: pextrb $6, %xmm10, %eax 2643; SSE42-NEXT: andb $1, %al 2644; SSE42-NEXT: movb %al, 2(%rdi) 2645; SSE42-NEXT: pextrb $4, %xmm10, %eax 2646; SSE42-NEXT: andb $1, %al 2647; SSE42-NEXT: movb %al, 2(%rdi) 2648; SSE42-NEXT: pextrb $2, %xmm10, %eax 2649; SSE42-NEXT: andb $1, %al 2650; SSE42-NEXT: movb %al, 2(%rdi) 2651; SSE42-NEXT: pextrb $0, %xmm10, %eax 2652; SSE42-NEXT: andb $1, %al 2653; SSE42-NEXT: movb %al, 2(%rdi) 2654; SSE42-NEXT: pextrb $14, %xmm9, %eax 2655; SSE42-NEXT: andb $1, %al 2656; SSE42-NEXT: movb %al, (%rdi) 2657; SSE42-NEXT: pextrb $12, %xmm9, %eax 2658; SSE42-NEXT: andb $1, %al 2659; SSE42-NEXT: movb %al, (%rdi) 2660; SSE42-NEXT: pextrb $10, %xmm9, %eax 2661; SSE42-NEXT: andb $1, %al 2662; SSE42-NEXT: movb %al, (%rdi) 2663; SSE42-NEXT: pextrb $8, %xmm9, %eax 2664; SSE42-NEXT: andb $1, %al 2665; SSE42-NEXT: movb %al, (%rdi) 2666; SSE42-NEXT: pextrb $6, %xmm9, %eax 2667; SSE42-NEXT: andb $1, %al 2668; SSE42-NEXT: movb %al, (%rdi) 2669; SSE42-NEXT: pextrb $4, %xmm9, %eax 2670; SSE42-NEXT: andb $1, %al 2671; SSE42-NEXT: movb %al, (%rdi) 2672; SSE42-NEXT: pextrb $2, %xmm9, %eax 2673; SSE42-NEXT: andb $1, %al 2674; SSE42-NEXT: movb %al, (%rdi) 2675; SSE42-NEXT: pextrb $0, %xmm9, %eax 2676; SSE42-NEXT: andb $1, %al 2677; SSE42-NEXT: movb %al, (%rdi) 2678; SSE42-NEXT: pextrb $14, %xmm8, %eax 2679; SSE42-NEXT: andb $1, %al 2680; SSE42-NEXT: movb %al, (%rdi) 2681; SSE42-NEXT: pextrb $12, %xmm8, %eax 2682; SSE42-NEXT: andb $1, %al 2683; SSE42-NEXT: movb %al, (%rdi) 2684; SSE42-NEXT: pextrb $10, %xmm8, %eax 2685; SSE42-NEXT: andb $1, %al 2686; SSE42-NEXT: movb %al, (%rdi) 2687; SSE42-NEXT: pextrb $8, %xmm8, %eax 2688; SSE42-NEXT: andb $1, %al 2689; SSE42-NEXT: movb %al, (%rdi) 2690; SSE42-NEXT: pextrb $6, %xmm8, %eax 2691; SSE42-NEXT: andb $1, %al 2692; SSE42-NEXT: movb %al, (%rdi) 2693; SSE42-NEXT: pextrb $4, %xmm8, %eax 2694; SSE42-NEXT: andb $1, %al 2695; SSE42-NEXT: movb %al, (%rdi) 2696; SSE42-NEXT: pextrb $2, %xmm8, %eax 2697; SSE42-NEXT: andb $1, %al 2698; SSE42-NEXT: movb %al, (%rdi) 2699; SSE42-NEXT: pextrb $0, %xmm8, %eax 2700; SSE42-NEXT: andb $1, %al 2701; SSE42-NEXT: movb %al, (%rdi) 2702; SSE42-NEXT: movq %rdi, %rax 2703; SSE42-NEXT: retq 2704; 2705; AVX1-LABEL: test_cmp_v32f32: 2706; AVX1: # BB#0: 2707; AVX1-NEXT: vcmpltps %ymm3, %ymm7, %ymm3 2708; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm7 2709; AVX1-NEXT: vpacksswb %xmm7, %xmm3, %xmm3 2710; AVX1-NEXT: vcmpltps %ymm2, %ymm6, %ymm2 2711; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm6 2712; AVX1-NEXT: vpacksswb %xmm6, %xmm2, %xmm2 2713; AVX1-NEXT: vpacksswb %xmm3, %xmm2, %xmm2 2714; AVX1-NEXT: vcmpltps %ymm1, %ymm5, %ymm1 2715; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 2716; AVX1-NEXT: vpacksswb %xmm3, %xmm1, %xmm1 2717; AVX1-NEXT: vcmpltps %ymm0, %ymm4, %ymm0 2718; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 2719; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 2720; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 2721; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 2722; AVX1-NEXT: retq 2723; 2724; AVX2-LABEL: test_cmp_v32f32: 2725; AVX2: # BB#0: 2726; AVX2-NEXT: vcmpltps %ymm3, %ymm7, %ymm3 2727; AVX2-NEXT: vcmpltps %ymm2, %ymm6, %ymm2 2728; AVX2-NEXT: vpacksswb %ymm3, %ymm2, %ymm2 2729; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,1,3] 2730; AVX2-NEXT: vcmpltps %ymm1, %ymm5, %ymm1 2731; AVX2-NEXT: vcmpltps %ymm0, %ymm4, %ymm0 2732; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 2733; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 2734; AVX2-NEXT: vpacksswb %ymm2, %ymm0, %ymm0 2735; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 2736; AVX2-NEXT: retq 2737; 2738; AVX512F-LABEL: test_cmp_v32f32: 2739; AVX512F: # BB#0: 2740; AVX512F-NEXT: vextractf32x4 $3, %zmm2, %xmm4 2741; AVX512F-NEXT: vmovshdup {{.*#+}} xmm5 = xmm4[1,1,3,3] 2742; AVX512F-NEXT: vextractf32x4 $3, %zmm0, %xmm6 2743; AVX512F-NEXT: vmovshdup {{.*#+}} xmm7 = xmm6[1,1,3,3] 2744; AVX512F-NEXT: xorl %eax, %eax 2745; AVX512F-NEXT: vucomiss %xmm5, %xmm7 2746; AVX512F-NEXT: movl $-1, %ecx 2747; AVX512F-NEXT: movl $0, %edx 2748; AVX512F-NEXT: cmoval %ecx, %edx 2749; AVX512F-NEXT: vucomiss %xmm4, %xmm6 2750; AVX512F-NEXT: movl $0, %esi 2751; AVX512F-NEXT: cmoval %ecx, %esi 2752; AVX512F-NEXT: vmovd %esi, %xmm5 2753; AVX512F-NEXT: vpinsrd $1, %edx, %xmm5, %xmm8 2754; AVX512F-NEXT: vpermilpd {{.*#+}} xmm7 = xmm4[1,0] 2755; AVX512F-NEXT: vpermilpd {{.*#+}} xmm5 = xmm6[1,0] 2756; AVX512F-NEXT: vucomiss %xmm7, %xmm5 2757; AVX512F-NEXT: movl $0, %edx 2758; AVX512F-NEXT: cmoval %ecx, %edx 2759; AVX512F-NEXT: vpinsrd $2, %edx, %xmm8, %xmm5 2760; AVX512F-NEXT: vpermilps {{.*#+}} xmm4 = xmm4[3,1,2,3] 2761; AVX512F-NEXT: vpermilps {{.*#+}} xmm6 = xmm6[3,1,2,3] 2762; AVX512F-NEXT: vucomiss %xmm4, %xmm6 2763; AVX512F-NEXT: movl $0, %edx 2764; AVX512F-NEXT: cmoval %ecx, %edx 2765; AVX512F-NEXT: vpinsrd $3, %edx, %xmm5, %xmm8 2766; AVX512F-NEXT: vextractf32x4 $2, %zmm2, %xmm5 2767; AVX512F-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 2768; AVX512F-NEXT: vextractf32x4 $2, %zmm0, %xmm7 2769; AVX512F-NEXT: vmovshdup {{.*#+}} xmm4 = xmm7[1,1,3,3] 2770; AVX512F-NEXT: vucomiss %xmm6, %xmm4 2771; AVX512F-NEXT: movl $0, %edx 2772; AVX512F-NEXT: cmoval %ecx, %edx 2773; AVX512F-NEXT: vucomiss %xmm5, %xmm7 2774; AVX512F-NEXT: movl $0, %esi 2775; AVX512F-NEXT: cmoval %ecx, %esi 2776; AVX512F-NEXT: vmovd %esi, %xmm4 2777; AVX512F-NEXT: vpinsrd $1, %edx, %xmm4, %xmm9 2778; AVX512F-NEXT: vpermilpd {{.*#+}} xmm6 = xmm5[1,0] 2779; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm7[1,0] 2780; AVX512F-NEXT: vucomiss %xmm6, %xmm4 2781; AVX512F-NEXT: movl $0, %edx 2782; AVX512F-NEXT: cmoval %ecx, %edx 2783; AVX512F-NEXT: vpinsrd $2, %edx, %xmm9, %xmm4 2784; AVX512F-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 2785; AVX512F-NEXT: vpermilps {{.*#+}} xmm6 = xmm7[3,1,2,3] 2786; AVX512F-NEXT: vucomiss %xmm5, %xmm6 2787; AVX512F-NEXT: movl $0, %edx 2788; AVX512F-NEXT: cmoval %ecx, %edx 2789; AVX512F-NEXT: vpinsrd $3, %edx, %xmm4, %xmm4 2790; AVX512F-NEXT: vinserti128 $1, %xmm8, %ymm4, %ymm8 2791; AVX512F-NEXT: vextractf32x4 $1, %zmm2, %xmm5 2792; AVX512F-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 2793; AVX512F-NEXT: vextractf32x4 $1, %zmm0, %xmm7 2794; AVX512F-NEXT: vmovshdup {{.*#+}} xmm4 = xmm7[1,1,3,3] 2795; AVX512F-NEXT: vucomiss %xmm6, %xmm4 2796; AVX512F-NEXT: movl $0, %edx 2797; AVX512F-NEXT: cmoval %ecx, %edx 2798; AVX512F-NEXT: vucomiss %xmm5, %xmm7 2799; AVX512F-NEXT: movl $0, %esi 2800; AVX512F-NEXT: cmoval %ecx, %esi 2801; AVX512F-NEXT: vmovd %esi, %xmm4 2802; AVX512F-NEXT: vpinsrd $1, %edx, %xmm4, %xmm9 2803; AVX512F-NEXT: vpermilpd {{.*#+}} xmm6 = xmm5[1,0] 2804; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm7[1,0] 2805; AVX512F-NEXT: vucomiss %xmm6, %xmm4 2806; AVX512F-NEXT: movl $0, %edx 2807; AVX512F-NEXT: cmoval %ecx, %edx 2808; AVX512F-NEXT: vpinsrd $2, %edx, %xmm9, %xmm4 2809; AVX512F-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 2810; AVX512F-NEXT: vpermilps {{.*#+}} xmm6 = xmm7[3,1,2,3] 2811; AVX512F-NEXT: vucomiss %xmm5, %xmm6 2812; AVX512F-NEXT: movl $0, %edx 2813; AVX512F-NEXT: cmoval %ecx, %edx 2814; AVX512F-NEXT: vpinsrd $3, %edx, %xmm4, %xmm4 2815; AVX512F-NEXT: vmovshdup {{.*#+}} xmm5 = xmm2[1,1,3,3] 2816; AVX512F-NEXT: vmovshdup {{.*#+}} xmm6 = xmm0[1,1,3,3] 2817; AVX512F-NEXT: vucomiss %xmm5, %xmm6 2818; AVX512F-NEXT: movl $0, %edx 2819; AVX512F-NEXT: cmoval %ecx, %edx 2820; AVX512F-NEXT: vucomiss %xmm2, %xmm0 2821; AVX512F-NEXT: movl $0, %esi 2822; AVX512F-NEXT: cmoval %ecx, %esi 2823; AVX512F-NEXT: vmovd %esi, %xmm5 2824; AVX512F-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 2825; AVX512F-NEXT: vpermilpd {{.*#+}} xmm6 = xmm2[1,0] 2826; AVX512F-NEXT: vpermilpd {{.*#+}} xmm7 = xmm0[1,0] 2827; AVX512F-NEXT: vucomiss %xmm6, %xmm7 2828; AVX512F-NEXT: movl $0, %edx 2829; AVX512F-NEXT: cmoval %ecx, %edx 2830; AVX512F-NEXT: vpinsrd $2, %edx, %xmm5, %xmm5 2831; AVX512F-NEXT: vpermilps {{.*#+}} xmm2 = xmm2[3,1,2,3] 2832; AVX512F-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,1,2,3] 2833; AVX512F-NEXT: vucomiss %xmm2, %xmm0 2834; AVX512F-NEXT: movl $0, %edx 2835; AVX512F-NEXT: cmoval %ecx, %edx 2836; AVX512F-NEXT: vpinsrd $3, %edx, %xmm5, %xmm0 2837; AVX512F-NEXT: vinserti128 $1, %xmm4, %ymm0, %ymm0 2838; AVX512F-NEXT: vinserti64x4 $1, %ymm8, %zmm0, %zmm0 2839; AVX512F-NEXT: vpmovdb %zmm0, %xmm8 2840; AVX512F-NEXT: vextractf32x4 $3, %zmm3, %xmm2 2841; AVX512F-NEXT: vmovshdup {{.*#+}} xmm4 = xmm2[1,1,3,3] 2842; AVX512F-NEXT: vextractf32x4 $3, %zmm1, %xmm5 2843; AVX512F-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 2844; AVX512F-NEXT: vucomiss %xmm4, %xmm6 2845; AVX512F-NEXT: movl $0, %edx 2846; AVX512F-NEXT: cmoval %ecx, %edx 2847; AVX512F-NEXT: vucomiss %xmm2, %xmm5 2848; AVX512F-NEXT: movl $0, %esi 2849; AVX512F-NEXT: cmoval %ecx, %esi 2850; AVX512F-NEXT: vmovd %esi, %xmm4 2851; AVX512F-NEXT: vpinsrd $1, %edx, %xmm4, %xmm4 2852; AVX512F-NEXT: vpermilpd {{.*#+}} xmm6 = xmm2[1,0] 2853; AVX512F-NEXT: vpermilpd {{.*#+}} xmm7 = xmm5[1,0] 2854; AVX512F-NEXT: vucomiss %xmm6, %xmm7 2855; AVX512F-NEXT: movl $0, %edx 2856; AVX512F-NEXT: cmoval %ecx, %edx 2857; AVX512F-NEXT: vpinsrd $2, %edx, %xmm4, %xmm4 2858; AVX512F-NEXT: vpermilps {{.*#+}} xmm2 = xmm2[3,1,2,3] 2859; AVX512F-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 2860; AVX512F-NEXT: vucomiss %xmm2, %xmm5 2861; AVX512F-NEXT: movl $0, %edx 2862; AVX512F-NEXT: cmoval %ecx, %edx 2863; AVX512F-NEXT: vpinsrd $3, %edx, %xmm4, %xmm2 2864; AVX512F-NEXT: vextractf32x4 $2, %zmm3, %xmm4 2865; AVX512F-NEXT: vmovshdup {{.*#+}} xmm5 = xmm4[1,1,3,3] 2866; AVX512F-NEXT: vextractf32x4 $2, %zmm1, %xmm6 2867; AVX512F-NEXT: vmovshdup {{.*#+}} xmm7 = xmm6[1,1,3,3] 2868; AVX512F-NEXT: vucomiss %xmm5, %xmm7 2869; AVX512F-NEXT: movl $0, %edx 2870; AVX512F-NEXT: cmoval %ecx, %edx 2871; AVX512F-NEXT: vucomiss %xmm4, %xmm6 2872; AVX512F-NEXT: movl $0, %esi 2873; AVX512F-NEXT: cmoval %ecx, %esi 2874; AVX512F-NEXT: vmovd %esi, %xmm5 2875; AVX512F-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 2876; AVX512F-NEXT: vpermilpd {{.*#+}} xmm7 = xmm4[1,0] 2877; AVX512F-NEXT: vpermilpd {{.*#+}} xmm0 = xmm6[1,0] 2878; AVX512F-NEXT: vucomiss %xmm7, %xmm0 2879; AVX512F-NEXT: movl $0, %edx 2880; AVX512F-NEXT: cmoval %ecx, %edx 2881; AVX512F-NEXT: vpinsrd $2, %edx, %xmm5, %xmm0 2882; AVX512F-NEXT: vpermilps {{.*#+}} xmm4 = xmm4[3,1,2,3] 2883; AVX512F-NEXT: vpermilps {{.*#+}} xmm5 = xmm6[3,1,2,3] 2884; AVX512F-NEXT: vucomiss %xmm4, %xmm5 2885; AVX512F-NEXT: movl $0, %edx 2886; AVX512F-NEXT: cmoval %ecx, %edx 2887; AVX512F-NEXT: vpinsrd $3, %edx, %xmm0, %xmm0 2888; AVX512F-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm2 2889; AVX512F-NEXT: vextractf32x4 $1, %zmm3, %xmm0 2890; AVX512F-NEXT: vmovshdup {{.*#+}} xmm4 = xmm0[1,1,3,3] 2891; AVX512F-NEXT: vextractf32x4 $1, %zmm1, %xmm5 2892; AVX512F-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 2893; AVX512F-NEXT: vucomiss %xmm4, %xmm6 2894; AVX512F-NEXT: movl $0, %edx 2895; AVX512F-NEXT: cmoval %ecx, %edx 2896; AVX512F-NEXT: vucomiss %xmm0, %xmm5 2897; AVX512F-NEXT: movl $0, %esi 2898; AVX512F-NEXT: cmoval %ecx, %esi 2899; AVX512F-NEXT: vmovd %esi, %xmm4 2900; AVX512F-NEXT: vpinsrd $1, %edx, %xmm4, %xmm4 2901; AVX512F-NEXT: vpermilpd {{.*#+}} xmm6 = xmm0[1,0] 2902; AVX512F-NEXT: vpermilpd {{.*#+}} xmm7 = xmm5[1,0] 2903; AVX512F-NEXT: vucomiss %xmm6, %xmm7 2904; AVX512F-NEXT: movl $0, %edx 2905; AVX512F-NEXT: cmoval %ecx, %edx 2906; AVX512F-NEXT: vpinsrd $2, %edx, %xmm4, %xmm4 2907; AVX512F-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,1,2,3] 2908; AVX512F-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 2909; AVX512F-NEXT: vucomiss %xmm0, %xmm5 2910; AVX512F-NEXT: movl $0, %edx 2911; AVX512F-NEXT: cmoval %ecx, %edx 2912; AVX512F-NEXT: vpinsrd $3, %edx, %xmm4, %xmm0 2913; AVX512F-NEXT: vmovshdup {{.*#+}} xmm4 = xmm3[1,1,3,3] 2914; AVX512F-NEXT: vmovshdup {{.*#+}} xmm5 = xmm1[1,1,3,3] 2915; AVX512F-NEXT: vucomiss %xmm4, %xmm5 2916; AVX512F-NEXT: movl $0, %edx 2917; AVX512F-NEXT: cmoval %ecx, %edx 2918; AVX512F-NEXT: vucomiss %xmm3, %xmm1 2919; AVX512F-NEXT: movl $0, %esi 2920; AVX512F-NEXT: cmoval %ecx, %esi 2921; AVX512F-NEXT: vmovd %esi, %xmm4 2922; AVX512F-NEXT: vpinsrd $1, %edx, %xmm4, %xmm4 2923; AVX512F-NEXT: vpermilpd {{.*#+}} xmm5 = xmm3[1,0] 2924; AVX512F-NEXT: vpermilpd {{.*#+}} xmm6 = xmm1[1,0] 2925; AVX512F-NEXT: vucomiss %xmm5, %xmm6 2926; AVX512F-NEXT: movl $0, %edx 2927; AVX512F-NEXT: cmoval %ecx, %edx 2928; AVX512F-NEXT: vpinsrd $2, %edx, %xmm4, %xmm4 2929; AVX512F-NEXT: vpermilps {{.*#+}} xmm3 = xmm3[3,1,2,3] 2930; AVX512F-NEXT: vpermilps {{.*#+}} xmm1 = xmm1[3,1,2,3] 2931; AVX512F-NEXT: vucomiss %xmm3, %xmm1 2932; AVX512F-NEXT: cmoval %ecx, %eax 2933; AVX512F-NEXT: vpinsrd $3, %eax, %xmm4, %xmm1 2934; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 2935; AVX512F-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm0 2936; AVX512F-NEXT: vpmovdb %zmm0, %xmm0 2937; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm8, %ymm0 2938; AVX512F-NEXT: retq 2939; 2940; AVX512DQ-LABEL: test_cmp_v32f32: 2941; AVX512DQ: # BB#0: 2942; AVX512DQ-NEXT: vextractf32x4 $3, %zmm2, %xmm4 2943; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm5 = xmm4[1,1,3,3] 2944; AVX512DQ-NEXT: vextractf32x4 $3, %zmm0, %xmm6 2945; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm7 = xmm6[1,1,3,3] 2946; AVX512DQ-NEXT: xorl %eax, %eax 2947; AVX512DQ-NEXT: vucomiss %xmm5, %xmm7 2948; AVX512DQ-NEXT: movl $-1, %ecx 2949; AVX512DQ-NEXT: movl $0, %edx 2950; AVX512DQ-NEXT: cmoval %ecx, %edx 2951; AVX512DQ-NEXT: vucomiss %xmm4, %xmm6 2952; AVX512DQ-NEXT: movl $0, %esi 2953; AVX512DQ-NEXT: cmoval %ecx, %esi 2954; AVX512DQ-NEXT: vmovd %esi, %xmm5 2955; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm5, %xmm8 2956; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm7 = xmm4[1,0] 2957; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm5 = xmm6[1,0] 2958; AVX512DQ-NEXT: vucomiss %xmm7, %xmm5 2959; AVX512DQ-NEXT: movl $0, %edx 2960; AVX512DQ-NEXT: cmoval %ecx, %edx 2961; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm8, %xmm5 2962; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm4 = xmm4[3,1,2,3] 2963; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm6 = xmm6[3,1,2,3] 2964; AVX512DQ-NEXT: vucomiss %xmm4, %xmm6 2965; AVX512DQ-NEXT: movl $0, %edx 2966; AVX512DQ-NEXT: cmoval %ecx, %edx 2967; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm5, %xmm8 2968; AVX512DQ-NEXT: vextractf32x4 $2, %zmm2, %xmm5 2969; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 2970; AVX512DQ-NEXT: vextractf32x4 $2, %zmm0, %xmm7 2971; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm4 = xmm7[1,1,3,3] 2972; AVX512DQ-NEXT: vucomiss %xmm6, %xmm4 2973; AVX512DQ-NEXT: movl $0, %edx 2974; AVX512DQ-NEXT: cmoval %ecx, %edx 2975; AVX512DQ-NEXT: vucomiss %xmm5, %xmm7 2976; AVX512DQ-NEXT: movl $0, %esi 2977; AVX512DQ-NEXT: cmoval %ecx, %esi 2978; AVX512DQ-NEXT: vmovd %esi, %xmm4 2979; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm4, %xmm9 2980; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm6 = xmm5[1,0] 2981; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm7[1,0] 2982; AVX512DQ-NEXT: vucomiss %xmm6, %xmm4 2983; AVX512DQ-NEXT: movl $0, %edx 2984; AVX512DQ-NEXT: cmoval %ecx, %edx 2985; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm9, %xmm4 2986; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 2987; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm6 = xmm7[3,1,2,3] 2988; AVX512DQ-NEXT: vucomiss %xmm5, %xmm6 2989; AVX512DQ-NEXT: movl $0, %edx 2990; AVX512DQ-NEXT: cmoval %ecx, %edx 2991; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm4, %xmm4 2992; AVX512DQ-NEXT: vinserti128 $1, %xmm8, %ymm4, %ymm8 2993; AVX512DQ-NEXT: vextractf32x4 $1, %zmm2, %xmm5 2994; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 2995; AVX512DQ-NEXT: vextractf32x4 $1, %zmm0, %xmm7 2996; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm4 = xmm7[1,1,3,3] 2997; AVX512DQ-NEXT: vucomiss %xmm6, %xmm4 2998; AVX512DQ-NEXT: movl $0, %edx 2999; AVX512DQ-NEXT: cmoval %ecx, %edx 3000; AVX512DQ-NEXT: vucomiss %xmm5, %xmm7 3001; AVX512DQ-NEXT: movl $0, %esi 3002; AVX512DQ-NEXT: cmoval %ecx, %esi 3003; AVX512DQ-NEXT: vmovd %esi, %xmm4 3004; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm4, %xmm9 3005; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm6 = xmm5[1,0] 3006; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm7[1,0] 3007; AVX512DQ-NEXT: vucomiss %xmm6, %xmm4 3008; AVX512DQ-NEXT: movl $0, %edx 3009; AVX512DQ-NEXT: cmoval %ecx, %edx 3010; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm9, %xmm4 3011; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 3012; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm6 = xmm7[3,1,2,3] 3013; AVX512DQ-NEXT: vucomiss %xmm5, %xmm6 3014; AVX512DQ-NEXT: movl $0, %edx 3015; AVX512DQ-NEXT: cmoval %ecx, %edx 3016; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm4, %xmm4 3017; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm5 = xmm2[1,1,3,3] 3018; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm6 = xmm0[1,1,3,3] 3019; AVX512DQ-NEXT: vucomiss %xmm5, %xmm6 3020; AVX512DQ-NEXT: movl $0, %edx 3021; AVX512DQ-NEXT: cmoval %ecx, %edx 3022; AVX512DQ-NEXT: vucomiss %xmm2, %xmm0 3023; AVX512DQ-NEXT: movl $0, %esi 3024; AVX512DQ-NEXT: cmoval %ecx, %esi 3025; AVX512DQ-NEXT: vmovd %esi, %xmm5 3026; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 3027; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm6 = xmm2[1,0] 3028; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm7 = xmm0[1,0] 3029; AVX512DQ-NEXT: vucomiss %xmm6, %xmm7 3030; AVX512DQ-NEXT: movl $0, %edx 3031; AVX512DQ-NEXT: cmoval %ecx, %edx 3032; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm5, %xmm5 3033; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm2 = xmm2[3,1,2,3] 3034; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,1,2,3] 3035; AVX512DQ-NEXT: vucomiss %xmm2, %xmm0 3036; AVX512DQ-NEXT: movl $0, %edx 3037; AVX512DQ-NEXT: cmoval %ecx, %edx 3038; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm5, %xmm0 3039; AVX512DQ-NEXT: vinserti128 $1, %xmm4, %ymm0, %ymm0 3040; AVX512DQ-NEXT: vinserti32x8 $1, %ymm8, %zmm0, %zmm0 3041; AVX512DQ-NEXT: vpmovdb %zmm0, %xmm8 3042; AVX512DQ-NEXT: vextractf32x4 $3, %zmm3, %xmm2 3043; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm4 = xmm2[1,1,3,3] 3044; AVX512DQ-NEXT: vextractf32x4 $3, %zmm1, %xmm5 3045; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 3046; AVX512DQ-NEXT: vucomiss %xmm4, %xmm6 3047; AVX512DQ-NEXT: movl $0, %edx 3048; AVX512DQ-NEXT: cmoval %ecx, %edx 3049; AVX512DQ-NEXT: vucomiss %xmm2, %xmm5 3050; AVX512DQ-NEXT: movl $0, %esi 3051; AVX512DQ-NEXT: cmoval %ecx, %esi 3052; AVX512DQ-NEXT: vmovd %esi, %xmm4 3053; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm4, %xmm4 3054; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm6 = xmm2[1,0] 3055; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm7 = xmm5[1,0] 3056; AVX512DQ-NEXT: vucomiss %xmm6, %xmm7 3057; AVX512DQ-NEXT: movl $0, %edx 3058; AVX512DQ-NEXT: cmoval %ecx, %edx 3059; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm4, %xmm4 3060; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm2 = xmm2[3,1,2,3] 3061; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 3062; AVX512DQ-NEXT: vucomiss %xmm2, %xmm5 3063; AVX512DQ-NEXT: movl $0, %edx 3064; AVX512DQ-NEXT: cmoval %ecx, %edx 3065; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm4, %xmm2 3066; AVX512DQ-NEXT: vextractf32x4 $2, %zmm3, %xmm4 3067; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm5 = xmm4[1,1,3,3] 3068; AVX512DQ-NEXT: vextractf32x4 $2, %zmm1, %xmm6 3069; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm7 = xmm6[1,1,3,3] 3070; AVX512DQ-NEXT: vucomiss %xmm5, %xmm7 3071; AVX512DQ-NEXT: movl $0, %edx 3072; AVX512DQ-NEXT: cmoval %ecx, %edx 3073; AVX512DQ-NEXT: vucomiss %xmm4, %xmm6 3074; AVX512DQ-NEXT: movl $0, %esi 3075; AVX512DQ-NEXT: cmoval %ecx, %esi 3076; AVX512DQ-NEXT: vmovd %esi, %xmm5 3077; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 3078; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm7 = xmm4[1,0] 3079; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm0 = xmm6[1,0] 3080; AVX512DQ-NEXT: vucomiss %xmm7, %xmm0 3081; AVX512DQ-NEXT: movl $0, %edx 3082; AVX512DQ-NEXT: cmoval %ecx, %edx 3083; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm5, %xmm0 3084; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm4 = xmm4[3,1,2,3] 3085; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm5 = xmm6[3,1,2,3] 3086; AVX512DQ-NEXT: vucomiss %xmm4, %xmm5 3087; AVX512DQ-NEXT: movl $0, %edx 3088; AVX512DQ-NEXT: cmoval %ecx, %edx 3089; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm0, %xmm0 3090; AVX512DQ-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm2 3091; AVX512DQ-NEXT: vextractf32x4 $1, %zmm3, %xmm0 3092; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm4 = xmm0[1,1,3,3] 3093; AVX512DQ-NEXT: vextractf32x4 $1, %zmm1, %xmm5 3094; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 3095; AVX512DQ-NEXT: vucomiss %xmm4, %xmm6 3096; AVX512DQ-NEXT: movl $0, %edx 3097; AVX512DQ-NEXT: cmoval %ecx, %edx 3098; AVX512DQ-NEXT: vucomiss %xmm0, %xmm5 3099; AVX512DQ-NEXT: movl $0, %esi 3100; AVX512DQ-NEXT: cmoval %ecx, %esi 3101; AVX512DQ-NEXT: vmovd %esi, %xmm4 3102; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm4, %xmm4 3103; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm6 = xmm0[1,0] 3104; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm7 = xmm5[1,0] 3105; AVX512DQ-NEXT: vucomiss %xmm6, %xmm7 3106; AVX512DQ-NEXT: movl $0, %edx 3107; AVX512DQ-NEXT: cmoval %ecx, %edx 3108; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm4, %xmm4 3109; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,1,2,3] 3110; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 3111; AVX512DQ-NEXT: vucomiss %xmm0, %xmm5 3112; AVX512DQ-NEXT: movl $0, %edx 3113; AVX512DQ-NEXT: cmoval %ecx, %edx 3114; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm4, %xmm0 3115; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm4 = xmm3[1,1,3,3] 3116; AVX512DQ-NEXT: vmovshdup {{.*#+}} xmm5 = xmm1[1,1,3,3] 3117; AVX512DQ-NEXT: vucomiss %xmm4, %xmm5 3118; AVX512DQ-NEXT: movl $0, %edx 3119; AVX512DQ-NEXT: cmoval %ecx, %edx 3120; AVX512DQ-NEXT: vucomiss %xmm3, %xmm1 3121; AVX512DQ-NEXT: movl $0, %esi 3122; AVX512DQ-NEXT: cmoval %ecx, %esi 3123; AVX512DQ-NEXT: vmovd %esi, %xmm4 3124; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm4, %xmm4 3125; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm5 = xmm3[1,0] 3126; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm6 = xmm1[1,0] 3127; AVX512DQ-NEXT: vucomiss %xmm5, %xmm6 3128; AVX512DQ-NEXT: movl $0, %edx 3129; AVX512DQ-NEXT: cmoval %ecx, %edx 3130; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm4, %xmm4 3131; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm3 = xmm3[3,1,2,3] 3132; AVX512DQ-NEXT: vpermilps {{.*#+}} xmm1 = xmm1[3,1,2,3] 3133; AVX512DQ-NEXT: vucomiss %xmm3, %xmm1 3134; AVX512DQ-NEXT: cmoval %ecx, %eax 3135; AVX512DQ-NEXT: vpinsrd $3, %eax, %xmm4, %xmm1 3136; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 3137; AVX512DQ-NEXT: vinserti32x8 $1, %ymm2, %zmm0, %zmm0 3138; AVX512DQ-NEXT: vpmovdb %zmm0, %xmm0 3139; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm8, %ymm0 3140; AVX512DQ-NEXT: retq 3141; 3142; AVX512BW-LABEL: test_cmp_v32f32: 3143; AVX512BW: # BB#0: 3144; AVX512BW-NEXT: vextractf32x4 $3, %zmm2, %xmm4 3145; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm5 = xmm4[1,1,3,3] 3146; AVX512BW-NEXT: vextractf32x4 $3, %zmm0, %xmm6 3147; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm7 = xmm6[1,1,3,3] 3148; AVX512BW-NEXT: xorl %eax, %eax 3149; AVX512BW-NEXT: vucomiss %xmm5, %xmm7 3150; AVX512BW-NEXT: movl $-1, %ecx 3151; AVX512BW-NEXT: movl $0, %edx 3152; AVX512BW-NEXT: cmoval %ecx, %edx 3153; AVX512BW-NEXT: vucomiss %xmm4, %xmm6 3154; AVX512BW-NEXT: movl $0, %esi 3155; AVX512BW-NEXT: cmoval %ecx, %esi 3156; AVX512BW-NEXT: vmovd %esi, %xmm5 3157; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm5, %xmm8 3158; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm7 = xmm4[1,0] 3159; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm5 = xmm6[1,0] 3160; AVX512BW-NEXT: vucomiss %xmm7, %xmm5 3161; AVX512BW-NEXT: movl $0, %edx 3162; AVX512BW-NEXT: cmoval %ecx, %edx 3163; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm8, %xmm5 3164; AVX512BW-NEXT: vpermilps {{.*#+}} xmm4 = xmm4[3,1,2,3] 3165; AVX512BW-NEXT: vpermilps {{.*#+}} xmm6 = xmm6[3,1,2,3] 3166; AVX512BW-NEXT: vucomiss %xmm4, %xmm6 3167; AVX512BW-NEXT: movl $0, %edx 3168; AVX512BW-NEXT: cmoval %ecx, %edx 3169; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm5, %xmm8 3170; AVX512BW-NEXT: vextractf32x4 $2, %zmm2, %xmm5 3171; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 3172; AVX512BW-NEXT: vextractf32x4 $2, %zmm0, %xmm7 3173; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm4 = xmm7[1,1,3,3] 3174; AVX512BW-NEXT: vucomiss %xmm6, %xmm4 3175; AVX512BW-NEXT: movl $0, %edx 3176; AVX512BW-NEXT: cmoval %ecx, %edx 3177; AVX512BW-NEXT: vucomiss %xmm5, %xmm7 3178; AVX512BW-NEXT: movl $0, %esi 3179; AVX512BW-NEXT: cmoval %ecx, %esi 3180; AVX512BW-NEXT: vmovd %esi, %xmm4 3181; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm4, %xmm9 3182; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm6 = xmm5[1,0] 3183; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm7[1,0] 3184; AVX512BW-NEXT: vucomiss %xmm6, %xmm4 3185; AVX512BW-NEXT: movl $0, %edx 3186; AVX512BW-NEXT: cmoval %ecx, %edx 3187; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm9, %xmm4 3188; AVX512BW-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 3189; AVX512BW-NEXT: vpermilps {{.*#+}} xmm6 = xmm7[3,1,2,3] 3190; AVX512BW-NEXT: vucomiss %xmm5, %xmm6 3191; AVX512BW-NEXT: movl $0, %edx 3192; AVX512BW-NEXT: cmoval %ecx, %edx 3193; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm4, %xmm4 3194; AVX512BW-NEXT: vinserti128 $1, %xmm8, %ymm4, %ymm8 3195; AVX512BW-NEXT: vextractf32x4 $1, %zmm2, %xmm5 3196; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 3197; AVX512BW-NEXT: vextractf32x4 $1, %zmm0, %xmm7 3198; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm4 = xmm7[1,1,3,3] 3199; AVX512BW-NEXT: vucomiss %xmm6, %xmm4 3200; AVX512BW-NEXT: movl $0, %edx 3201; AVX512BW-NEXT: cmoval %ecx, %edx 3202; AVX512BW-NEXT: vucomiss %xmm5, %xmm7 3203; AVX512BW-NEXT: movl $0, %esi 3204; AVX512BW-NEXT: cmoval %ecx, %esi 3205; AVX512BW-NEXT: vmovd %esi, %xmm4 3206; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm4, %xmm9 3207; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm6 = xmm5[1,0] 3208; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm7[1,0] 3209; AVX512BW-NEXT: vucomiss %xmm6, %xmm4 3210; AVX512BW-NEXT: movl $0, %edx 3211; AVX512BW-NEXT: cmoval %ecx, %edx 3212; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm9, %xmm4 3213; AVX512BW-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 3214; AVX512BW-NEXT: vpermilps {{.*#+}} xmm6 = xmm7[3,1,2,3] 3215; AVX512BW-NEXT: vucomiss %xmm5, %xmm6 3216; AVX512BW-NEXT: movl $0, %edx 3217; AVX512BW-NEXT: cmoval %ecx, %edx 3218; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm4, %xmm4 3219; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm5 = xmm2[1,1,3,3] 3220; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm6 = xmm0[1,1,3,3] 3221; AVX512BW-NEXT: vucomiss %xmm5, %xmm6 3222; AVX512BW-NEXT: movl $0, %edx 3223; AVX512BW-NEXT: cmoval %ecx, %edx 3224; AVX512BW-NEXT: vucomiss %xmm2, %xmm0 3225; AVX512BW-NEXT: movl $0, %esi 3226; AVX512BW-NEXT: cmoval %ecx, %esi 3227; AVX512BW-NEXT: vmovd %esi, %xmm5 3228; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 3229; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm6 = xmm2[1,0] 3230; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm7 = xmm0[1,0] 3231; AVX512BW-NEXT: vucomiss %xmm6, %xmm7 3232; AVX512BW-NEXT: movl $0, %edx 3233; AVX512BW-NEXT: cmoval %ecx, %edx 3234; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm5, %xmm5 3235; AVX512BW-NEXT: vpermilps {{.*#+}} xmm2 = xmm2[3,1,2,3] 3236; AVX512BW-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,1,2,3] 3237; AVX512BW-NEXT: vucomiss %xmm2, %xmm0 3238; AVX512BW-NEXT: movl $0, %edx 3239; AVX512BW-NEXT: cmoval %ecx, %edx 3240; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm5, %xmm0 3241; AVX512BW-NEXT: vinserti128 $1, %xmm4, %ymm0, %ymm0 3242; AVX512BW-NEXT: vinserti64x4 $1, %ymm8, %zmm0, %zmm0 3243; AVX512BW-NEXT: vpmovdw %zmm0, %ymm8 3244; AVX512BW-NEXT: vextractf32x4 $3, %zmm3, %xmm2 3245; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm4 = xmm2[1,1,3,3] 3246; AVX512BW-NEXT: vextractf32x4 $3, %zmm1, %xmm5 3247; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 3248; AVX512BW-NEXT: vucomiss %xmm4, %xmm6 3249; AVX512BW-NEXT: movl $0, %edx 3250; AVX512BW-NEXT: cmoval %ecx, %edx 3251; AVX512BW-NEXT: vucomiss %xmm2, %xmm5 3252; AVX512BW-NEXT: movl $0, %esi 3253; AVX512BW-NEXT: cmoval %ecx, %esi 3254; AVX512BW-NEXT: vmovd %esi, %xmm4 3255; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm4, %xmm4 3256; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm6 = xmm2[1,0] 3257; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm7 = xmm5[1,0] 3258; AVX512BW-NEXT: vucomiss %xmm6, %xmm7 3259; AVX512BW-NEXT: movl $0, %edx 3260; AVX512BW-NEXT: cmoval %ecx, %edx 3261; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm4, %xmm4 3262; AVX512BW-NEXT: vpermilps {{.*#+}} xmm2 = xmm2[3,1,2,3] 3263; AVX512BW-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 3264; AVX512BW-NEXT: vucomiss %xmm2, %xmm5 3265; AVX512BW-NEXT: movl $0, %edx 3266; AVX512BW-NEXT: cmoval %ecx, %edx 3267; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm4, %xmm2 3268; AVX512BW-NEXT: vextractf32x4 $2, %zmm3, %xmm4 3269; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm5 = xmm4[1,1,3,3] 3270; AVX512BW-NEXT: vextractf32x4 $2, %zmm1, %xmm6 3271; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm7 = xmm6[1,1,3,3] 3272; AVX512BW-NEXT: vucomiss %xmm5, %xmm7 3273; AVX512BW-NEXT: movl $0, %edx 3274; AVX512BW-NEXT: cmoval %ecx, %edx 3275; AVX512BW-NEXT: vucomiss %xmm4, %xmm6 3276; AVX512BW-NEXT: movl $0, %esi 3277; AVX512BW-NEXT: cmoval %ecx, %esi 3278; AVX512BW-NEXT: vmovd %esi, %xmm5 3279; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 3280; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm7 = xmm4[1,0] 3281; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm0 = xmm6[1,0] 3282; AVX512BW-NEXT: vucomiss %xmm7, %xmm0 3283; AVX512BW-NEXT: movl $0, %edx 3284; AVX512BW-NEXT: cmoval %ecx, %edx 3285; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm5, %xmm0 3286; AVX512BW-NEXT: vpermilps {{.*#+}} xmm4 = xmm4[3,1,2,3] 3287; AVX512BW-NEXT: vpermilps {{.*#+}} xmm5 = xmm6[3,1,2,3] 3288; AVX512BW-NEXT: vucomiss %xmm4, %xmm5 3289; AVX512BW-NEXT: movl $0, %edx 3290; AVX512BW-NEXT: cmoval %ecx, %edx 3291; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm0, %xmm0 3292; AVX512BW-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm2 3293; AVX512BW-NEXT: vextractf32x4 $1, %zmm3, %xmm0 3294; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm4 = xmm0[1,1,3,3] 3295; AVX512BW-NEXT: vextractf32x4 $1, %zmm1, %xmm5 3296; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 3297; AVX512BW-NEXT: vucomiss %xmm4, %xmm6 3298; AVX512BW-NEXT: movl $0, %edx 3299; AVX512BW-NEXT: cmoval %ecx, %edx 3300; AVX512BW-NEXT: vucomiss %xmm0, %xmm5 3301; AVX512BW-NEXT: movl $0, %esi 3302; AVX512BW-NEXT: cmoval %ecx, %esi 3303; AVX512BW-NEXT: vmovd %esi, %xmm4 3304; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm4, %xmm4 3305; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm6 = xmm0[1,0] 3306; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm7 = xmm5[1,0] 3307; AVX512BW-NEXT: vucomiss %xmm6, %xmm7 3308; AVX512BW-NEXT: movl $0, %edx 3309; AVX512BW-NEXT: cmoval %ecx, %edx 3310; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm4, %xmm4 3311; AVX512BW-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,1,2,3] 3312; AVX512BW-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 3313; AVX512BW-NEXT: vucomiss %xmm0, %xmm5 3314; AVX512BW-NEXT: movl $0, %edx 3315; AVX512BW-NEXT: cmoval %ecx, %edx 3316; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm4, %xmm0 3317; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm4 = xmm3[1,1,3,3] 3318; AVX512BW-NEXT: vmovshdup {{.*#+}} xmm5 = xmm1[1,1,3,3] 3319; AVX512BW-NEXT: vucomiss %xmm4, %xmm5 3320; AVX512BW-NEXT: movl $0, %edx 3321; AVX512BW-NEXT: cmoval %ecx, %edx 3322; AVX512BW-NEXT: vucomiss %xmm3, %xmm1 3323; AVX512BW-NEXT: movl $0, %esi 3324; AVX512BW-NEXT: cmoval %ecx, %esi 3325; AVX512BW-NEXT: vmovd %esi, %xmm4 3326; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm4, %xmm4 3327; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm5 = xmm3[1,0] 3328; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm6 = xmm1[1,0] 3329; AVX512BW-NEXT: vucomiss %xmm5, %xmm6 3330; AVX512BW-NEXT: movl $0, %edx 3331; AVX512BW-NEXT: cmoval %ecx, %edx 3332; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm4, %xmm4 3333; AVX512BW-NEXT: vpermilps {{.*#+}} xmm3 = xmm3[3,1,2,3] 3334; AVX512BW-NEXT: vpermilps {{.*#+}} xmm1 = xmm1[3,1,2,3] 3335; AVX512BW-NEXT: vucomiss %xmm3, %xmm1 3336; AVX512BW-NEXT: cmoval %ecx, %eax 3337; AVX512BW-NEXT: vpinsrd $3, %eax, %xmm4, %xmm1 3338; AVX512BW-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 3339; AVX512BW-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm0 3340; AVX512BW-NEXT: vpmovdw %zmm0, %ymm0 3341; AVX512BW-NEXT: vinserti64x4 $1, %ymm0, %zmm8, %zmm0 3342; AVX512BW-NEXT: vpmovwb %zmm0, %ymm0 3343; AVX512BW-NEXT: retq 3344 %1 = fcmp ogt <32 x float> %a0, %a1 3345 ret <32 x i1> %1 3346} 3347 3348define <16 x i1> @test_cmp_v16i64(<16 x i64> %a0, <16 x i64> %a1) nounwind { 3349; SSE2-LABEL: test_cmp_v16i64: 3350; SSE2: # BB#0: 3351; SSE2-NEXT: movdqa {{.*#+}} xmm8 = [2147483648,0,2147483648,0] 3352; SSE2-NEXT: pxor %xmm8, %xmm7 3353; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm9 3354; SSE2-NEXT: pxor %xmm8, %xmm9 3355; SSE2-NEXT: movdqa %xmm7, %xmm10 3356; SSE2-NEXT: pcmpgtd %xmm9, %xmm10 3357; SSE2-NEXT: pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2] 3358; SSE2-NEXT: pcmpeqd %xmm7, %xmm9 3359; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm9[1,1,3,3] 3360; SSE2-NEXT: pand %xmm11, %xmm7 3361; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3] 3362; SSE2-NEXT: por %xmm7, %xmm9 3363; SSE2-NEXT: pxor %xmm8, %xmm6 3364; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm7 3365; SSE2-NEXT: pxor %xmm8, %xmm7 3366; SSE2-NEXT: movdqa %xmm6, %xmm10 3367; SSE2-NEXT: pcmpgtd %xmm7, %xmm10 3368; SSE2-NEXT: pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2] 3369; SSE2-NEXT: pcmpeqd %xmm6, %xmm7 3370; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm7[1,1,3,3] 3371; SSE2-NEXT: pand %xmm11, %xmm7 3372; SSE2-NEXT: pshufd {{.*#+}} xmm10 = xmm10[1,1,3,3] 3373; SSE2-NEXT: por %xmm7, %xmm10 3374; SSE2-NEXT: packsswb %xmm9, %xmm10 3375; SSE2-NEXT: pxor %xmm8, %xmm5 3376; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm7 3377; SSE2-NEXT: pxor %xmm8, %xmm7 3378; SSE2-NEXT: movdqa %xmm5, %xmm6 3379; SSE2-NEXT: pcmpgtd %xmm7, %xmm6 3380; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm6[0,0,2,2] 3381; SSE2-NEXT: pcmpeqd %xmm5, %xmm7 3382; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3] 3383; SSE2-NEXT: pand %xmm9, %xmm5 3384; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3] 3385; SSE2-NEXT: por %xmm5, %xmm6 3386; SSE2-NEXT: pxor %xmm8, %xmm4 3387; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm5 3388; SSE2-NEXT: pxor %xmm8, %xmm5 3389; SSE2-NEXT: movdqa %xmm4, %xmm7 3390; SSE2-NEXT: pcmpgtd %xmm5, %xmm7 3391; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm7[0,0,2,2] 3392; SSE2-NEXT: pcmpeqd %xmm4, %xmm5 3393; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3] 3394; SSE2-NEXT: pand %xmm9, %xmm5 3395; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm7[1,1,3,3] 3396; SSE2-NEXT: por %xmm5, %xmm4 3397; SSE2-NEXT: packsswb %xmm6, %xmm4 3398; SSE2-NEXT: packsswb %xmm10, %xmm4 3399; SSE2-NEXT: pxor %xmm8, %xmm3 3400; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm5 3401; SSE2-NEXT: pxor %xmm8, %xmm5 3402; SSE2-NEXT: movdqa %xmm3, %xmm6 3403; SSE2-NEXT: pcmpgtd %xmm5, %xmm6 3404; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2] 3405; SSE2-NEXT: pcmpeqd %xmm3, %xmm5 3406; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm5[1,1,3,3] 3407; SSE2-NEXT: pand %xmm7, %xmm3 3408; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3] 3409; SSE2-NEXT: por %xmm3, %xmm5 3410; SSE2-NEXT: pxor %xmm8, %xmm2 3411; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 3412; SSE2-NEXT: pxor %xmm8, %xmm3 3413; SSE2-NEXT: movdqa %xmm2, %xmm6 3414; SSE2-NEXT: pcmpgtd %xmm3, %xmm6 3415; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2] 3416; SSE2-NEXT: pcmpeqd %xmm2, %xmm3 3417; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3] 3418; SSE2-NEXT: pand %xmm7, %xmm3 3419; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm6[1,1,3,3] 3420; SSE2-NEXT: por %xmm3, %xmm2 3421; SSE2-NEXT: packsswb %xmm5, %xmm2 3422; SSE2-NEXT: pxor %xmm8, %xmm1 3423; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 3424; SSE2-NEXT: pxor %xmm8, %xmm3 3425; SSE2-NEXT: movdqa %xmm1, %xmm5 3426; SSE2-NEXT: pcmpgtd %xmm3, %xmm5 3427; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2] 3428; SSE2-NEXT: pcmpeqd %xmm1, %xmm3 3429; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm3[1,1,3,3] 3430; SSE2-NEXT: pand %xmm6, %xmm1 3431; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm5[1,1,3,3] 3432; SSE2-NEXT: por %xmm1, %xmm3 3433; SSE2-NEXT: pxor %xmm8, %xmm0 3434; SSE2-NEXT: pxor {{[0-9]+}}(%rsp), %xmm8 3435; SSE2-NEXT: movdqa %xmm0, %xmm1 3436; SSE2-NEXT: pcmpgtd %xmm8, %xmm1 3437; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm1[0,0,2,2] 3438; SSE2-NEXT: pcmpeqd %xmm0, %xmm8 3439; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm8[1,1,3,3] 3440; SSE2-NEXT: pand %xmm5, %xmm6 3441; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3] 3442; SSE2-NEXT: por %xmm6, %xmm0 3443; SSE2-NEXT: packsswb %xmm3, %xmm0 3444; SSE2-NEXT: packsswb %xmm2, %xmm0 3445; SSE2-NEXT: packsswb %xmm4, %xmm0 3446; SSE2-NEXT: retq 3447; 3448; SSE42-LABEL: test_cmp_v16i64: 3449; SSE42: # BB#0: 3450; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm7 3451; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm6 3452; SSE42-NEXT: packsswb %xmm7, %xmm6 3453; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm5 3454; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm4 3455; SSE42-NEXT: packsswb %xmm5, %xmm4 3456; SSE42-NEXT: packsswb %xmm6, %xmm4 3457; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm3 3458; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm2 3459; SSE42-NEXT: packsswb %xmm3, %xmm2 3460; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm1 3461; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm0 3462; SSE42-NEXT: packsswb %xmm1, %xmm0 3463; SSE42-NEXT: packsswb %xmm2, %xmm0 3464; SSE42-NEXT: packsswb %xmm4, %xmm0 3465; SSE42-NEXT: retq 3466; 3467; AVX1-LABEL: test_cmp_v16i64: 3468; AVX1: # BB#0: 3469; AVX1-NEXT: vextractf128 $1, %ymm7, %xmm8 3470; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm9 3471; AVX1-NEXT: vpcmpgtq %xmm8, %xmm9, %xmm8 3472; AVX1-NEXT: vpcmpgtq %xmm7, %xmm3, %xmm3 3473; AVX1-NEXT: vpacksswb %xmm8, %xmm3, %xmm8 3474; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm7 3475; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm3 3476; AVX1-NEXT: vpcmpgtq %xmm7, %xmm3, %xmm3 3477; AVX1-NEXT: vpcmpgtq %xmm6, %xmm2, %xmm2 3478; AVX1-NEXT: vpacksswb %xmm3, %xmm2, %xmm2 3479; AVX1-NEXT: vpacksswb %xmm8, %xmm2, %xmm2 3480; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm3 3481; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm6 3482; AVX1-NEXT: vpcmpgtq %xmm3, %xmm6, %xmm3 3483; AVX1-NEXT: vpcmpgtq %xmm5, %xmm1, %xmm1 3484; AVX1-NEXT: vpacksswb %xmm3, %xmm1, %xmm1 3485; AVX1-NEXT: vextractf128 $1, %ymm4, %xmm3 3486; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5 3487; AVX1-NEXT: vpcmpgtq %xmm3, %xmm5, %xmm3 3488; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm0 3489; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 3490; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 3491; AVX1-NEXT: vpacksswb %xmm2, %xmm0, %xmm0 3492; AVX1-NEXT: vzeroupper 3493; AVX1-NEXT: retq 3494; 3495; AVX2-LABEL: test_cmp_v16i64: 3496; AVX2: # BB#0: 3497; AVX2-NEXT: vpcmpgtq %ymm7, %ymm3, %ymm3 3498; AVX2-NEXT: vpcmpgtq %ymm6, %ymm2, %ymm2 3499; AVX2-NEXT: vpacksswb %ymm3, %ymm2, %ymm2 3500; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,1,3] 3501; AVX2-NEXT: vpcmpgtq %ymm5, %ymm1, %ymm1 3502; AVX2-NEXT: vpcmpgtq %ymm4, %ymm0, %ymm0 3503; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 3504; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 3505; AVX2-NEXT: vpacksswb %ymm2, %ymm0, %ymm0 3506; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 3507; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 3508; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 3509; AVX2-NEXT: vzeroupper 3510; AVX2-NEXT: retq 3511; 3512; AVX512F-LABEL: test_cmp_v16i64: 3513; AVX512F: # BB#0: 3514; AVX512F-NEXT: vextracti32x4 $3, %zmm2, %xmm4 3515; AVX512F-NEXT: vpextrq $1, %xmm4, %rcx 3516; AVX512F-NEXT: vextracti32x4 $3, %zmm0, %xmm5 3517; AVX512F-NEXT: vpextrq $1, %xmm5, %rdx 3518; AVX512F-NEXT: xorl %eax, %eax 3519; AVX512F-NEXT: cmpq %rcx, %rdx 3520; AVX512F-NEXT: movq $-1, %rcx 3521; AVX512F-NEXT: movl $0, %edx 3522; AVX512F-NEXT: cmovgq %rcx, %rdx 3523; AVX512F-NEXT: vmovq %rdx, %xmm6 3524; AVX512F-NEXT: vmovq %xmm4, %rdx 3525; AVX512F-NEXT: vmovq %xmm5, %rsi 3526; AVX512F-NEXT: cmpq %rdx, %rsi 3527; AVX512F-NEXT: movl $0, %edx 3528; AVX512F-NEXT: cmovgq %rcx, %rdx 3529; AVX512F-NEXT: vmovq %rdx, %xmm4 3530; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 3531; AVX512F-NEXT: vextracti32x4 $2, %zmm2, %xmm5 3532; AVX512F-NEXT: vpextrq $1, %xmm5, %rdx 3533; AVX512F-NEXT: vextracti32x4 $2, %zmm0, %xmm6 3534; AVX512F-NEXT: vpextrq $1, %xmm6, %rsi 3535; AVX512F-NEXT: cmpq %rdx, %rsi 3536; AVX512F-NEXT: movl $0, %edx 3537; AVX512F-NEXT: cmovgq %rcx, %rdx 3538; AVX512F-NEXT: vmovq %rdx, %xmm7 3539; AVX512F-NEXT: vmovq %xmm5, %rdx 3540; AVX512F-NEXT: vmovq %xmm6, %rsi 3541; AVX512F-NEXT: cmpq %rdx, %rsi 3542; AVX512F-NEXT: movl $0, %edx 3543; AVX512F-NEXT: cmovgq %rcx, %rdx 3544; AVX512F-NEXT: vmovq %rdx, %xmm5 3545; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm7[0] 3546; AVX512F-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4 3547; AVX512F-NEXT: vextracti32x4 $1, %zmm2, %xmm5 3548; AVX512F-NEXT: vpextrq $1, %xmm5, %rdx 3549; AVX512F-NEXT: vextracti32x4 $1, %zmm0, %xmm6 3550; AVX512F-NEXT: vpextrq $1, %xmm6, %rsi 3551; AVX512F-NEXT: cmpq %rdx, %rsi 3552; AVX512F-NEXT: movl $0, %edx 3553; AVX512F-NEXT: cmovgq %rcx, %rdx 3554; AVX512F-NEXT: vmovq %rdx, %xmm7 3555; AVX512F-NEXT: vmovq %xmm5, %rdx 3556; AVX512F-NEXT: vmovq %xmm6, %rsi 3557; AVX512F-NEXT: cmpq %rdx, %rsi 3558; AVX512F-NEXT: movl $0, %edx 3559; AVX512F-NEXT: cmovgq %rcx, %rdx 3560; AVX512F-NEXT: vmovq %rdx, %xmm5 3561; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm7[0] 3562; AVX512F-NEXT: vpextrq $1, %xmm2, %rdx 3563; AVX512F-NEXT: vpextrq $1, %xmm0, %rsi 3564; AVX512F-NEXT: cmpq %rdx, %rsi 3565; AVX512F-NEXT: movl $0, %edx 3566; AVX512F-NEXT: cmovgq %rcx, %rdx 3567; AVX512F-NEXT: vmovq %rdx, %xmm6 3568; AVX512F-NEXT: vmovq %xmm2, %rdx 3569; AVX512F-NEXT: vmovq %xmm0, %rsi 3570; AVX512F-NEXT: cmpq %rdx, %rsi 3571; AVX512F-NEXT: movl $0, %edx 3572; AVX512F-NEXT: cmovgq %rcx, %rdx 3573; AVX512F-NEXT: vmovq %rdx, %xmm0 3574; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm6[0] 3575; AVX512F-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0 3576; AVX512F-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm0 3577; AVX512F-NEXT: vpmovqd %zmm0, %ymm0 3578; AVX512F-NEXT: vextracti32x4 $3, %zmm3, %xmm2 3579; AVX512F-NEXT: vpextrq $1, %xmm2, %rdx 3580; AVX512F-NEXT: vextracti32x4 $3, %zmm1, %xmm4 3581; AVX512F-NEXT: vpextrq $1, %xmm4, %rsi 3582; AVX512F-NEXT: cmpq %rdx, %rsi 3583; AVX512F-NEXT: movl $0, %edx 3584; AVX512F-NEXT: cmovgq %rcx, %rdx 3585; AVX512F-NEXT: vmovq %rdx, %xmm5 3586; AVX512F-NEXT: vmovq %xmm2, %rdx 3587; AVX512F-NEXT: vmovq %xmm4, %rsi 3588; AVX512F-NEXT: cmpq %rdx, %rsi 3589; AVX512F-NEXT: movl $0, %edx 3590; AVX512F-NEXT: cmovgq %rcx, %rdx 3591; AVX512F-NEXT: vmovq %rdx, %xmm2 3592; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm5[0] 3593; AVX512F-NEXT: vextracti32x4 $2, %zmm3, %xmm4 3594; AVX512F-NEXT: vpextrq $1, %xmm4, %rdx 3595; AVX512F-NEXT: vextracti32x4 $2, %zmm1, %xmm5 3596; AVX512F-NEXT: vpextrq $1, %xmm5, %rsi 3597; AVX512F-NEXT: cmpq %rdx, %rsi 3598; AVX512F-NEXT: movl $0, %edx 3599; AVX512F-NEXT: cmovgq %rcx, %rdx 3600; AVX512F-NEXT: vmovq %rdx, %xmm6 3601; AVX512F-NEXT: vmovq %xmm4, %rdx 3602; AVX512F-NEXT: vmovq %xmm5, %rsi 3603; AVX512F-NEXT: cmpq %rdx, %rsi 3604; AVX512F-NEXT: movl $0, %edx 3605; AVX512F-NEXT: cmovgq %rcx, %rdx 3606; AVX512F-NEXT: vmovq %rdx, %xmm4 3607; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 3608; AVX512F-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2 3609; AVX512F-NEXT: vextracti32x4 $1, %zmm3, %xmm4 3610; AVX512F-NEXT: vpextrq $1, %xmm4, %rdx 3611; AVX512F-NEXT: vextracti32x4 $1, %zmm1, %xmm5 3612; AVX512F-NEXT: vpextrq $1, %xmm5, %rsi 3613; AVX512F-NEXT: cmpq %rdx, %rsi 3614; AVX512F-NEXT: movl $0, %edx 3615; AVX512F-NEXT: cmovgq %rcx, %rdx 3616; AVX512F-NEXT: vmovq %rdx, %xmm6 3617; AVX512F-NEXT: vmovq %xmm4, %rdx 3618; AVX512F-NEXT: vmovq %xmm5, %rsi 3619; AVX512F-NEXT: cmpq %rdx, %rsi 3620; AVX512F-NEXT: movl $0, %edx 3621; AVX512F-NEXT: cmovgq %rcx, %rdx 3622; AVX512F-NEXT: vmovq %rdx, %xmm4 3623; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 3624; AVX512F-NEXT: vpextrq $1, %xmm3, %rdx 3625; AVX512F-NEXT: vpextrq $1, %xmm1, %rsi 3626; AVX512F-NEXT: cmpq %rdx, %rsi 3627; AVX512F-NEXT: movl $0, %edx 3628; AVX512F-NEXT: cmovgq %rcx, %rdx 3629; AVX512F-NEXT: vmovq %rdx, %xmm5 3630; AVX512F-NEXT: vmovq %xmm3, %rdx 3631; AVX512F-NEXT: vmovq %xmm1, %rsi 3632; AVX512F-NEXT: cmpq %rdx, %rsi 3633; AVX512F-NEXT: cmovgq %rcx, %rax 3634; AVX512F-NEXT: vmovq %rax, %xmm1 3635; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm5[0] 3636; AVX512F-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1 3637; AVX512F-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1 3638; AVX512F-NEXT: vpmovqd %zmm1, %ymm1 3639; AVX512F-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 3640; AVX512F-NEXT: vpmovdb %zmm0, %xmm0 3641; AVX512F-NEXT: retq 3642; 3643; AVX512DQ-LABEL: test_cmp_v16i64: 3644; AVX512DQ: # BB#0: 3645; AVX512DQ-NEXT: vextracti64x2 $3, %zmm2, %xmm4 3646; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rcx 3647; AVX512DQ-NEXT: vextracti64x2 $3, %zmm0, %xmm5 3648; AVX512DQ-NEXT: vpextrq $1, %xmm5, %rdx 3649; AVX512DQ-NEXT: xorl %eax, %eax 3650; AVX512DQ-NEXT: cmpq %rcx, %rdx 3651; AVX512DQ-NEXT: movq $-1, %rcx 3652; AVX512DQ-NEXT: movl $0, %edx 3653; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3654; AVX512DQ-NEXT: vmovq %rdx, %xmm6 3655; AVX512DQ-NEXT: vmovq %xmm4, %rdx 3656; AVX512DQ-NEXT: vmovq %xmm5, %rsi 3657; AVX512DQ-NEXT: cmpq %rdx, %rsi 3658; AVX512DQ-NEXT: movl $0, %edx 3659; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3660; AVX512DQ-NEXT: vmovq %rdx, %xmm4 3661; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 3662; AVX512DQ-NEXT: vextracti64x2 $2, %zmm2, %xmm5 3663; AVX512DQ-NEXT: vpextrq $1, %xmm5, %rdx 3664; AVX512DQ-NEXT: vextracti64x2 $2, %zmm0, %xmm6 3665; AVX512DQ-NEXT: vpextrq $1, %xmm6, %rsi 3666; AVX512DQ-NEXT: cmpq %rdx, %rsi 3667; AVX512DQ-NEXT: movl $0, %edx 3668; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3669; AVX512DQ-NEXT: vmovq %rdx, %xmm7 3670; AVX512DQ-NEXT: vmovq %xmm5, %rdx 3671; AVX512DQ-NEXT: vmovq %xmm6, %rsi 3672; AVX512DQ-NEXT: cmpq %rdx, %rsi 3673; AVX512DQ-NEXT: movl $0, %edx 3674; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3675; AVX512DQ-NEXT: vmovq %rdx, %xmm5 3676; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm7[0] 3677; AVX512DQ-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4 3678; AVX512DQ-NEXT: vextracti64x2 $1, %zmm2, %xmm5 3679; AVX512DQ-NEXT: vpextrq $1, %xmm5, %rdx 3680; AVX512DQ-NEXT: vextracti64x2 $1, %zmm0, %xmm6 3681; AVX512DQ-NEXT: vpextrq $1, %xmm6, %rsi 3682; AVX512DQ-NEXT: cmpq %rdx, %rsi 3683; AVX512DQ-NEXT: movl $0, %edx 3684; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3685; AVX512DQ-NEXT: vmovq %rdx, %xmm7 3686; AVX512DQ-NEXT: vmovq %xmm5, %rdx 3687; AVX512DQ-NEXT: vmovq %xmm6, %rsi 3688; AVX512DQ-NEXT: cmpq %rdx, %rsi 3689; AVX512DQ-NEXT: movl $0, %edx 3690; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3691; AVX512DQ-NEXT: vmovq %rdx, %xmm5 3692; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm7[0] 3693; AVX512DQ-NEXT: vpextrq $1, %xmm2, %rdx 3694; AVX512DQ-NEXT: vpextrq $1, %xmm0, %rsi 3695; AVX512DQ-NEXT: cmpq %rdx, %rsi 3696; AVX512DQ-NEXT: movl $0, %edx 3697; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3698; AVX512DQ-NEXT: vmovq %rdx, %xmm6 3699; AVX512DQ-NEXT: vmovq %xmm2, %rdx 3700; AVX512DQ-NEXT: vmovq %xmm0, %rsi 3701; AVX512DQ-NEXT: cmpq %rdx, %rsi 3702; AVX512DQ-NEXT: movl $0, %edx 3703; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3704; AVX512DQ-NEXT: vmovq %rdx, %xmm0 3705; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm6[0] 3706; AVX512DQ-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0 3707; AVX512DQ-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm0 3708; AVX512DQ-NEXT: vpmovqd %zmm0, %ymm0 3709; AVX512DQ-NEXT: vextracti64x2 $3, %zmm3, %xmm2 3710; AVX512DQ-NEXT: vpextrq $1, %xmm2, %rdx 3711; AVX512DQ-NEXT: vextracti64x2 $3, %zmm1, %xmm4 3712; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rsi 3713; AVX512DQ-NEXT: cmpq %rdx, %rsi 3714; AVX512DQ-NEXT: movl $0, %edx 3715; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3716; AVX512DQ-NEXT: vmovq %rdx, %xmm5 3717; AVX512DQ-NEXT: vmovq %xmm2, %rdx 3718; AVX512DQ-NEXT: vmovq %xmm4, %rsi 3719; AVX512DQ-NEXT: cmpq %rdx, %rsi 3720; AVX512DQ-NEXT: movl $0, %edx 3721; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3722; AVX512DQ-NEXT: vmovq %rdx, %xmm2 3723; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm5[0] 3724; AVX512DQ-NEXT: vextracti64x2 $2, %zmm3, %xmm4 3725; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rdx 3726; AVX512DQ-NEXT: vextracti64x2 $2, %zmm1, %xmm5 3727; AVX512DQ-NEXT: vpextrq $1, %xmm5, %rsi 3728; AVX512DQ-NEXT: cmpq %rdx, %rsi 3729; AVX512DQ-NEXT: movl $0, %edx 3730; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3731; AVX512DQ-NEXT: vmovq %rdx, %xmm6 3732; AVX512DQ-NEXT: vmovq %xmm4, %rdx 3733; AVX512DQ-NEXT: vmovq %xmm5, %rsi 3734; AVX512DQ-NEXT: cmpq %rdx, %rsi 3735; AVX512DQ-NEXT: movl $0, %edx 3736; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3737; AVX512DQ-NEXT: vmovq %rdx, %xmm4 3738; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 3739; AVX512DQ-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2 3740; AVX512DQ-NEXT: vextracti64x2 $1, %zmm3, %xmm4 3741; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rdx 3742; AVX512DQ-NEXT: vextracti64x2 $1, %zmm1, %xmm5 3743; AVX512DQ-NEXT: vpextrq $1, %xmm5, %rsi 3744; AVX512DQ-NEXT: cmpq %rdx, %rsi 3745; AVX512DQ-NEXT: movl $0, %edx 3746; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3747; AVX512DQ-NEXT: vmovq %rdx, %xmm6 3748; AVX512DQ-NEXT: vmovq %xmm4, %rdx 3749; AVX512DQ-NEXT: vmovq %xmm5, %rsi 3750; AVX512DQ-NEXT: cmpq %rdx, %rsi 3751; AVX512DQ-NEXT: movl $0, %edx 3752; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3753; AVX512DQ-NEXT: vmovq %rdx, %xmm4 3754; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 3755; AVX512DQ-NEXT: vpextrq $1, %xmm3, %rdx 3756; AVX512DQ-NEXT: vpextrq $1, %xmm1, %rsi 3757; AVX512DQ-NEXT: cmpq %rdx, %rsi 3758; AVX512DQ-NEXT: movl $0, %edx 3759; AVX512DQ-NEXT: cmovgq %rcx, %rdx 3760; AVX512DQ-NEXT: vmovq %rdx, %xmm5 3761; AVX512DQ-NEXT: vmovq %xmm3, %rdx 3762; AVX512DQ-NEXT: vmovq %xmm1, %rsi 3763; AVX512DQ-NEXT: cmpq %rdx, %rsi 3764; AVX512DQ-NEXT: cmovgq %rcx, %rax 3765; AVX512DQ-NEXT: vmovq %rax, %xmm1 3766; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm5[0] 3767; AVX512DQ-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1 3768; AVX512DQ-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1 3769; AVX512DQ-NEXT: vpmovqd %zmm1, %ymm1 3770; AVX512DQ-NEXT: vinserti32x8 $1, %ymm1, %zmm0, %zmm0 3771; AVX512DQ-NEXT: vpmovdb %zmm0, %xmm0 3772; AVX512DQ-NEXT: retq 3773; 3774; AVX512BW-LABEL: test_cmp_v16i64: 3775; AVX512BW: # BB#0: 3776; AVX512BW-NEXT: vextracti32x4 $3, %zmm2, %xmm4 3777; AVX512BW-NEXT: vpextrq $1, %xmm4, %rcx 3778; AVX512BW-NEXT: vextracti32x4 $3, %zmm0, %xmm5 3779; AVX512BW-NEXT: vpextrq $1, %xmm5, %rdx 3780; AVX512BW-NEXT: xorl %eax, %eax 3781; AVX512BW-NEXT: cmpq %rcx, %rdx 3782; AVX512BW-NEXT: movq $-1, %rcx 3783; AVX512BW-NEXT: movl $0, %edx 3784; AVX512BW-NEXT: cmovgq %rcx, %rdx 3785; AVX512BW-NEXT: vmovq %rdx, %xmm6 3786; AVX512BW-NEXT: vmovq %xmm4, %rdx 3787; AVX512BW-NEXT: vmovq %xmm5, %rsi 3788; AVX512BW-NEXT: cmpq %rdx, %rsi 3789; AVX512BW-NEXT: movl $0, %edx 3790; AVX512BW-NEXT: cmovgq %rcx, %rdx 3791; AVX512BW-NEXT: vmovq %rdx, %xmm4 3792; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 3793; AVX512BW-NEXT: vextracti32x4 $2, %zmm2, %xmm5 3794; AVX512BW-NEXT: vpextrq $1, %xmm5, %rdx 3795; AVX512BW-NEXT: vextracti32x4 $2, %zmm0, %xmm6 3796; AVX512BW-NEXT: vpextrq $1, %xmm6, %rsi 3797; AVX512BW-NEXT: cmpq %rdx, %rsi 3798; AVX512BW-NEXT: movl $0, %edx 3799; AVX512BW-NEXT: cmovgq %rcx, %rdx 3800; AVX512BW-NEXT: vmovq %rdx, %xmm7 3801; AVX512BW-NEXT: vmovq %xmm5, %rdx 3802; AVX512BW-NEXT: vmovq %xmm6, %rsi 3803; AVX512BW-NEXT: cmpq %rdx, %rsi 3804; AVX512BW-NEXT: movl $0, %edx 3805; AVX512BW-NEXT: cmovgq %rcx, %rdx 3806; AVX512BW-NEXT: vmovq %rdx, %xmm5 3807; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm7[0] 3808; AVX512BW-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4 3809; AVX512BW-NEXT: vextracti32x4 $1, %zmm2, %xmm5 3810; AVX512BW-NEXT: vpextrq $1, %xmm5, %rdx 3811; AVX512BW-NEXT: vextracti32x4 $1, %zmm0, %xmm6 3812; AVX512BW-NEXT: vpextrq $1, %xmm6, %rsi 3813; AVX512BW-NEXT: cmpq %rdx, %rsi 3814; AVX512BW-NEXT: movl $0, %edx 3815; AVX512BW-NEXT: cmovgq %rcx, %rdx 3816; AVX512BW-NEXT: vmovq %rdx, %xmm7 3817; AVX512BW-NEXT: vmovq %xmm5, %rdx 3818; AVX512BW-NEXT: vmovq %xmm6, %rsi 3819; AVX512BW-NEXT: cmpq %rdx, %rsi 3820; AVX512BW-NEXT: movl $0, %edx 3821; AVX512BW-NEXT: cmovgq %rcx, %rdx 3822; AVX512BW-NEXT: vmovq %rdx, %xmm5 3823; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm7[0] 3824; AVX512BW-NEXT: vpextrq $1, %xmm2, %rdx 3825; AVX512BW-NEXT: vpextrq $1, %xmm0, %rsi 3826; AVX512BW-NEXT: cmpq %rdx, %rsi 3827; AVX512BW-NEXT: movl $0, %edx 3828; AVX512BW-NEXT: cmovgq %rcx, %rdx 3829; AVX512BW-NEXT: vmovq %rdx, %xmm6 3830; AVX512BW-NEXT: vmovq %xmm2, %rdx 3831; AVX512BW-NEXT: vmovq %xmm0, %rsi 3832; AVX512BW-NEXT: cmpq %rdx, %rsi 3833; AVX512BW-NEXT: movl $0, %edx 3834; AVX512BW-NEXT: cmovgq %rcx, %rdx 3835; AVX512BW-NEXT: vmovq %rdx, %xmm0 3836; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm6[0] 3837; AVX512BW-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0 3838; AVX512BW-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm0 3839; AVX512BW-NEXT: vpmovqd %zmm0, %ymm0 3840; AVX512BW-NEXT: vextracti32x4 $3, %zmm3, %xmm2 3841; AVX512BW-NEXT: vpextrq $1, %xmm2, %rdx 3842; AVX512BW-NEXT: vextracti32x4 $3, %zmm1, %xmm4 3843; AVX512BW-NEXT: vpextrq $1, %xmm4, %rsi 3844; AVX512BW-NEXT: cmpq %rdx, %rsi 3845; AVX512BW-NEXT: movl $0, %edx 3846; AVX512BW-NEXT: cmovgq %rcx, %rdx 3847; AVX512BW-NEXT: vmovq %rdx, %xmm5 3848; AVX512BW-NEXT: vmovq %xmm2, %rdx 3849; AVX512BW-NEXT: vmovq %xmm4, %rsi 3850; AVX512BW-NEXT: cmpq %rdx, %rsi 3851; AVX512BW-NEXT: movl $0, %edx 3852; AVX512BW-NEXT: cmovgq %rcx, %rdx 3853; AVX512BW-NEXT: vmovq %rdx, %xmm2 3854; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm5[0] 3855; AVX512BW-NEXT: vextracti32x4 $2, %zmm3, %xmm4 3856; AVX512BW-NEXT: vpextrq $1, %xmm4, %rdx 3857; AVX512BW-NEXT: vextracti32x4 $2, %zmm1, %xmm5 3858; AVX512BW-NEXT: vpextrq $1, %xmm5, %rsi 3859; AVX512BW-NEXT: cmpq %rdx, %rsi 3860; AVX512BW-NEXT: movl $0, %edx 3861; AVX512BW-NEXT: cmovgq %rcx, %rdx 3862; AVX512BW-NEXT: vmovq %rdx, %xmm6 3863; AVX512BW-NEXT: vmovq %xmm4, %rdx 3864; AVX512BW-NEXT: vmovq %xmm5, %rsi 3865; AVX512BW-NEXT: cmpq %rdx, %rsi 3866; AVX512BW-NEXT: movl $0, %edx 3867; AVX512BW-NEXT: cmovgq %rcx, %rdx 3868; AVX512BW-NEXT: vmovq %rdx, %xmm4 3869; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 3870; AVX512BW-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2 3871; AVX512BW-NEXT: vextracti32x4 $1, %zmm3, %xmm4 3872; AVX512BW-NEXT: vpextrq $1, %xmm4, %rdx 3873; AVX512BW-NEXT: vextracti32x4 $1, %zmm1, %xmm5 3874; AVX512BW-NEXT: vpextrq $1, %xmm5, %rsi 3875; AVX512BW-NEXT: cmpq %rdx, %rsi 3876; AVX512BW-NEXT: movl $0, %edx 3877; AVX512BW-NEXT: cmovgq %rcx, %rdx 3878; AVX512BW-NEXT: vmovq %rdx, %xmm6 3879; AVX512BW-NEXT: vmovq %xmm4, %rdx 3880; AVX512BW-NEXT: vmovq %xmm5, %rsi 3881; AVX512BW-NEXT: cmpq %rdx, %rsi 3882; AVX512BW-NEXT: movl $0, %edx 3883; AVX512BW-NEXT: cmovgq %rcx, %rdx 3884; AVX512BW-NEXT: vmovq %rdx, %xmm4 3885; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 3886; AVX512BW-NEXT: vpextrq $1, %xmm3, %rdx 3887; AVX512BW-NEXT: vpextrq $1, %xmm1, %rsi 3888; AVX512BW-NEXT: cmpq %rdx, %rsi 3889; AVX512BW-NEXT: movl $0, %edx 3890; AVX512BW-NEXT: cmovgq %rcx, %rdx 3891; AVX512BW-NEXT: vmovq %rdx, %xmm5 3892; AVX512BW-NEXT: vmovq %xmm3, %rdx 3893; AVX512BW-NEXT: vmovq %xmm1, %rsi 3894; AVX512BW-NEXT: cmpq %rdx, %rsi 3895; AVX512BW-NEXT: cmovgq %rcx, %rax 3896; AVX512BW-NEXT: vmovq %rax, %xmm1 3897; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm5[0] 3898; AVX512BW-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1 3899; AVX512BW-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1 3900; AVX512BW-NEXT: vpmovqd %zmm1, %ymm1 3901; AVX512BW-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 3902; AVX512BW-NEXT: vpmovdb %zmm0, %xmm0 3903; AVX512BW-NEXT: retq 3904 %1 = icmp sgt <16 x i64> %a0, %a1 3905 ret <16 x i1> %1 3906} 3907 3908define <32 x i1> @test_cmp_v32i32(<32 x i32> %a0, <32 x i32> %a1) nounwind { 3909; SSE2-LABEL: test_cmp_v32i32: 3910; SSE2: # BB#0: 3911; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm3 3912; SSE2-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[0,2,2,3,4,5,6,7] 3913; SSE2-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,6,6,7] 3914; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3] 3915; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm2 3916; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[0,2,2,3,4,5,6,7] 3917; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7] 3918; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] 3919; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0] 3920; SSE2-NEXT: psllw $15, %xmm2 3921; SSE2-NEXT: psraw $15, %xmm2 3922; SSE2-NEXT: movdqa {{.*#+}} xmm3 = [255,255,255,255,255,255,255,255] 3923; SSE2-NEXT: pand %xmm3, %xmm2 3924; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm1 3925; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,2,2,3,4,5,6,7] 3926; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 3927; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 3928; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm0 3929; SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7] 3930; SSE2-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,6,7] 3931; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3] 3932; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 3933; SSE2-NEXT: psllw $15, %xmm0 3934; SSE2-NEXT: psraw $15, %xmm0 3935; SSE2-NEXT: pand %xmm3, %xmm0 3936; SSE2-NEXT: packuswb %xmm2, %xmm0 3937; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm7 3938; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm7[0,2,2,3,4,5,6,7] 3939; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 3940; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 3941; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm6 3942; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm6[0,2,2,3,4,5,6,7] 3943; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7] 3944; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] 3945; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm1[0] 3946; SSE2-NEXT: psllw $15, %xmm2 3947; SSE2-NEXT: psraw $15, %xmm2 3948; SSE2-NEXT: pand %xmm3, %xmm2 3949; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm5 3950; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm5[0,2,2,3,4,5,6,7] 3951; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 3952; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 3953; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm4 3954; SSE2-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,2,2,3,4,5,6,7] 3955; SSE2-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,6,6,7] 3956; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3] 3957; SSE2-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm1[0] 3958; SSE2-NEXT: psllw $15, %xmm4 3959; SSE2-NEXT: psraw $15, %xmm4 3960; SSE2-NEXT: pand %xmm3, %xmm4 3961; SSE2-NEXT: packuswb %xmm2, %xmm4 3962; SSE2-NEXT: movdqa %xmm4, -{{[0-9]+}}(%rsp) 3963; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3964; SSE2-NEXT: andb $1, %al 3965; SSE2-NEXT: movb %al, 2(%rdi) 3966; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 3967; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3968; SSE2-NEXT: andb $1, %al 3969; SSE2-NEXT: movb %al, (%rdi) 3970; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3971; SSE2-NEXT: andb $1, %al 3972; SSE2-NEXT: movb %al, 2(%rdi) 3973; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3974; SSE2-NEXT: andb $1, %al 3975; SSE2-NEXT: movb %al, (%rdi) 3976; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3977; SSE2-NEXT: andb $1, %al 3978; SSE2-NEXT: movb %al, 2(%rdi) 3979; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3980; SSE2-NEXT: andb $1, %al 3981; SSE2-NEXT: movb %al, (%rdi) 3982; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3983; SSE2-NEXT: andb $1, %al 3984; SSE2-NEXT: movb %al, 2(%rdi) 3985; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3986; SSE2-NEXT: andb $1, %al 3987; SSE2-NEXT: movb %al, (%rdi) 3988; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3989; SSE2-NEXT: andb $1, %al 3990; SSE2-NEXT: movb %al, 2(%rdi) 3991; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3992; SSE2-NEXT: andb $1, %al 3993; SSE2-NEXT: movb %al, (%rdi) 3994; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3995; SSE2-NEXT: andb $1, %al 3996; SSE2-NEXT: movb %al, 2(%rdi) 3997; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3998; SSE2-NEXT: andb $1, %al 3999; SSE2-NEXT: movb %al, (%rdi) 4000; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4001; SSE2-NEXT: andb $1, %al 4002; SSE2-NEXT: movb %al, 2(%rdi) 4003; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4004; SSE2-NEXT: andb $1, %al 4005; SSE2-NEXT: movb %al, (%rdi) 4006; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4007; SSE2-NEXT: andb $1, %al 4008; SSE2-NEXT: movb %al, 2(%rdi) 4009; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4010; SSE2-NEXT: andb $1, %al 4011; SSE2-NEXT: movb %al, (%rdi) 4012; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4013; SSE2-NEXT: andb $1, %al 4014; SSE2-NEXT: movb %al, 2(%rdi) 4015; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4016; SSE2-NEXT: andb $1, %al 4017; SSE2-NEXT: movb %al, (%rdi) 4018; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4019; SSE2-NEXT: andb $1, %al 4020; SSE2-NEXT: movb %al, 2(%rdi) 4021; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4022; SSE2-NEXT: andb $1, %al 4023; SSE2-NEXT: movb %al, (%rdi) 4024; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4025; SSE2-NEXT: andb $1, %al 4026; SSE2-NEXT: movb %al, 2(%rdi) 4027; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4028; SSE2-NEXT: andb $1, %al 4029; SSE2-NEXT: movb %al, (%rdi) 4030; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4031; SSE2-NEXT: andb $1, %al 4032; SSE2-NEXT: movb %al, 2(%rdi) 4033; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4034; SSE2-NEXT: andb $1, %al 4035; SSE2-NEXT: movb %al, (%rdi) 4036; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4037; SSE2-NEXT: andb $1, %al 4038; SSE2-NEXT: movb %al, 2(%rdi) 4039; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4040; SSE2-NEXT: andb $1, %al 4041; SSE2-NEXT: movb %al, (%rdi) 4042; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4043; SSE2-NEXT: andb $1, %al 4044; SSE2-NEXT: movb %al, 2(%rdi) 4045; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4046; SSE2-NEXT: andb $1, %al 4047; SSE2-NEXT: movb %al, (%rdi) 4048; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4049; SSE2-NEXT: andb $1, %al 4050; SSE2-NEXT: movb %al, 2(%rdi) 4051; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4052; SSE2-NEXT: andb $1, %al 4053; SSE2-NEXT: movb %al, (%rdi) 4054; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4055; SSE2-NEXT: andb $1, %al 4056; SSE2-NEXT: movb %al, 2(%rdi) 4057; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4058; SSE2-NEXT: andb $1, %al 4059; SSE2-NEXT: movb %al, (%rdi) 4060; SSE2-NEXT: movq %rdi, %rax 4061; SSE2-NEXT: retq 4062; 4063; SSE42-LABEL: test_cmp_v32i32: 4064; SSE42: # BB#0: 4065; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm1 4066; SSE42-NEXT: movdqa {{.*#+}} xmm8 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15] 4067; SSE42-NEXT: pshufb %xmm8, %xmm1 4068; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm0 4069; SSE42-NEXT: pshufb %xmm8, %xmm0 4070; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 4071; SSE42-NEXT: psllw $15, %xmm0 4072; SSE42-NEXT: psraw $15, %xmm0 4073; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm3 4074; SSE42-NEXT: pshufb %xmm8, %xmm3 4075; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm2 4076; SSE42-NEXT: pshufb %xmm8, %xmm2 4077; SSE42-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0] 4078; SSE42-NEXT: psllw $15, %xmm2 4079; SSE42-NEXT: psraw $15, %xmm2 4080; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm5 4081; SSE42-NEXT: pshufb %xmm8, %xmm5 4082; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm4 4083; SSE42-NEXT: pshufb %xmm8, %xmm4 4084; SSE42-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0] 4085; SSE42-NEXT: psllw $15, %xmm4 4086; SSE42-NEXT: psraw $15, %xmm4 4087; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm7 4088; SSE42-NEXT: pshufb %xmm8, %xmm7 4089; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm6 4090; SSE42-NEXT: pshufb %xmm8, %xmm6 4091; SSE42-NEXT: punpcklqdq {{.*#+}} xmm6 = xmm6[0],xmm7[0] 4092; SSE42-NEXT: psllw $15, %xmm6 4093; SSE42-NEXT: psraw $15, %xmm6 4094; SSE42-NEXT: pextrb $14, %xmm6, %eax 4095; SSE42-NEXT: andb $1, %al 4096; SSE42-NEXT: movb %al, 2(%rdi) 4097; SSE42-NEXT: pextrb $12, %xmm6, %eax 4098; SSE42-NEXT: andb $1, %al 4099; SSE42-NEXT: movb %al, 2(%rdi) 4100; SSE42-NEXT: pextrb $10, %xmm6, %eax 4101; SSE42-NEXT: andb $1, %al 4102; SSE42-NEXT: movb %al, 2(%rdi) 4103; SSE42-NEXT: pextrb $8, %xmm6, %eax 4104; SSE42-NEXT: andb $1, %al 4105; SSE42-NEXT: movb %al, 2(%rdi) 4106; SSE42-NEXT: pextrb $6, %xmm6, %eax 4107; SSE42-NEXT: andb $1, %al 4108; SSE42-NEXT: movb %al, 2(%rdi) 4109; SSE42-NEXT: pextrb $4, %xmm6, %eax 4110; SSE42-NEXT: andb $1, %al 4111; SSE42-NEXT: movb %al, 2(%rdi) 4112; SSE42-NEXT: pextrb $2, %xmm6, %eax 4113; SSE42-NEXT: andb $1, %al 4114; SSE42-NEXT: movb %al, 2(%rdi) 4115; SSE42-NEXT: pextrb $0, %xmm6, %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 $12, %xmm4, %eax 4122; SSE42-NEXT: andb $1, %al 4123; SSE42-NEXT: movb %al, 2(%rdi) 4124; SSE42-NEXT: pextrb $10, %xmm4, %eax 4125; SSE42-NEXT: andb $1, %al 4126; SSE42-NEXT: movb %al, 2(%rdi) 4127; SSE42-NEXT: pextrb $8, %xmm4, %eax 4128; SSE42-NEXT: andb $1, %al 4129; SSE42-NEXT: movb %al, 2(%rdi) 4130; SSE42-NEXT: pextrb $6, %xmm4, %eax 4131; SSE42-NEXT: andb $1, %al 4132; SSE42-NEXT: movb %al, 2(%rdi) 4133; SSE42-NEXT: pextrb $4, %xmm4, %eax 4134; SSE42-NEXT: andb $1, %al 4135; SSE42-NEXT: movb %al, 2(%rdi) 4136; SSE42-NEXT: pextrb $2, %xmm4, %eax 4137; SSE42-NEXT: andb $1, %al 4138; SSE42-NEXT: movb %al, 2(%rdi) 4139; SSE42-NEXT: pextrb $0, %xmm4, %eax 4140; SSE42-NEXT: andb $1, %al 4141; SSE42-NEXT: movb %al, 2(%rdi) 4142; SSE42-NEXT: pextrb $14, %xmm2, %eax 4143; SSE42-NEXT: andb $1, %al 4144; SSE42-NEXT: movb %al, (%rdi) 4145; SSE42-NEXT: pextrb $12, %xmm2, %eax 4146; SSE42-NEXT: andb $1, %al 4147; SSE42-NEXT: movb %al, (%rdi) 4148; SSE42-NEXT: pextrb $10, %xmm2, %eax 4149; SSE42-NEXT: andb $1, %al 4150; SSE42-NEXT: movb %al, (%rdi) 4151; SSE42-NEXT: pextrb $8, %xmm2, %eax 4152; SSE42-NEXT: andb $1, %al 4153; SSE42-NEXT: movb %al, (%rdi) 4154; SSE42-NEXT: pextrb $6, %xmm2, %eax 4155; SSE42-NEXT: andb $1, %al 4156; SSE42-NEXT: movb %al, (%rdi) 4157; SSE42-NEXT: pextrb $4, %xmm2, %eax 4158; SSE42-NEXT: andb $1, %al 4159; SSE42-NEXT: movb %al, (%rdi) 4160; SSE42-NEXT: pextrb $2, %xmm2, %eax 4161; SSE42-NEXT: andb $1, %al 4162; SSE42-NEXT: movb %al, (%rdi) 4163; SSE42-NEXT: pextrb $0, %xmm2, %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 $12, %xmm0, %eax 4170; SSE42-NEXT: andb $1, %al 4171; SSE42-NEXT: movb %al, (%rdi) 4172; SSE42-NEXT: pextrb $10, %xmm0, %eax 4173; SSE42-NEXT: andb $1, %al 4174; SSE42-NEXT: movb %al, (%rdi) 4175; SSE42-NEXT: pextrb $8, %xmm0, %eax 4176; SSE42-NEXT: andb $1, %al 4177; SSE42-NEXT: movb %al, (%rdi) 4178; SSE42-NEXT: pextrb $6, %xmm0, %eax 4179; SSE42-NEXT: andb $1, %al 4180; SSE42-NEXT: movb %al, (%rdi) 4181; SSE42-NEXT: pextrb $4, %xmm0, %eax 4182; SSE42-NEXT: andb $1, %al 4183; SSE42-NEXT: movb %al, (%rdi) 4184; SSE42-NEXT: pextrb $2, %xmm0, %eax 4185; SSE42-NEXT: andb $1, %al 4186; SSE42-NEXT: movb %al, (%rdi) 4187; SSE42-NEXT: pextrb $0, %xmm0, %eax 4188; SSE42-NEXT: andb $1, %al 4189; SSE42-NEXT: movb %al, (%rdi) 4190; SSE42-NEXT: movq %rdi, %rax 4191; SSE42-NEXT: retq 4192; 4193; AVX1-LABEL: test_cmp_v32i32: 4194; AVX1: # BB#0: 4195; AVX1-NEXT: vextractf128 $1, %ymm7, %xmm8 4196; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm9 4197; AVX1-NEXT: vpcmpgtd %xmm8, %xmm9, %xmm8 4198; AVX1-NEXT: vpcmpgtd %xmm7, %xmm3, %xmm3 4199; AVX1-NEXT: vpacksswb %xmm8, %xmm3, %xmm8 4200; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm7 4201; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm3 4202; AVX1-NEXT: vpcmpgtd %xmm7, %xmm3, %xmm3 4203; AVX1-NEXT: vpcmpgtd %xmm6, %xmm2, %xmm2 4204; AVX1-NEXT: vpacksswb %xmm3, %xmm2, %xmm2 4205; AVX1-NEXT: vpacksswb %xmm8, %xmm2, %xmm2 4206; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm3 4207; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm6 4208; AVX1-NEXT: vpcmpgtd %xmm3, %xmm6, %xmm3 4209; AVX1-NEXT: vpcmpgtd %xmm5, %xmm1, %xmm1 4210; AVX1-NEXT: vpacksswb %xmm3, %xmm1, %xmm1 4211; AVX1-NEXT: vextractf128 $1, %ymm4, %xmm3 4212; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5 4213; AVX1-NEXT: vpcmpgtd %xmm3, %xmm5, %xmm3 4214; AVX1-NEXT: vpcmpgtd %xmm4, %xmm0, %xmm0 4215; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 4216; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 4217; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 4218; AVX1-NEXT: retq 4219; 4220; AVX2-LABEL: test_cmp_v32i32: 4221; AVX2: # BB#0: 4222; AVX2-NEXT: vpcmpgtd %ymm7, %ymm3, %ymm3 4223; AVX2-NEXT: vpcmpgtd %ymm6, %ymm2, %ymm2 4224; AVX2-NEXT: vpacksswb %ymm3, %ymm2, %ymm2 4225; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,1,3] 4226; AVX2-NEXT: vpcmpgtd %ymm5, %ymm1, %ymm1 4227; AVX2-NEXT: vpcmpgtd %ymm4, %ymm0, %ymm0 4228; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 4229; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 4230; AVX2-NEXT: vpacksswb %ymm2, %ymm0, %ymm0 4231; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 4232; AVX2-NEXT: retq 4233; 4234; AVX512F-LABEL: test_cmp_v32i32: 4235; AVX512F: # BB#0: 4236; AVX512F-NEXT: vextracti32x4 $3, %zmm2, %xmm4 4237; AVX512F-NEXT: vpextrd $1, %xmm4, %ecx 4238; AVX512F-NEXT: vextracti32x4 $3, %zmm0, %xmm5 4239; AVX512F-NEXT: vpextrd $1, %xmm5, %edx 4240; AVX512F-NEXT: xorl %eax, %eax 4241; AVX512F-NEXT: cmpl %ecx, %edx 4242; AVX512F-NEXT: movl $-1, %ecx 4243; AVX512F-NEXT: movl $0, %edx 4244; AVX512F-NEXT: cmovgl %ecx, %edx 4245; AVX512F-NEXT: vmovd %xmm4, %esi 4246; AVX512F-NEXT: vmovd %xmm5, %edi 4247; AVX512F-NEXT: cmpl %esi, %edi 4248; AVX512F-NEXT: movl $0, %esi 4249; AVX512F-NEXT: cmovgl %ecx, %esi 4250; AVX512F-NEXT: vmovd %esi, %xmm6 4251; AVX512F-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 4252; AVX512F-NEXT: vpextrd $2, %xmm4, %edx 4253; AVX512F-NEXT: vpextrd $2, %xmm5, %esi 4254; AVX512F-NEXT: cmpl %edx, %esi 4255; AVX512F-NEXT: movl $0, %edx 4256; AVX512F-NEXT: cmovgl %ecx, %edx 4257; AVX512F-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 4258; AVX512F-NEXT: vpextrd $3, %xmm4, %edx 4259; AVX512F-NEXT: vpextrd $3, %xmm5, %esi 4260; AVX512F-NEXT: cmpl %edx, %esi 4261; AVX512F-NEXT: movl $0, %edx 4262; AVX512F-NEXT: cmovgl %ecx, %edx 4263; AVX512F-NEXT: vpinsrd $3, %edx, %xmm6, %xmm4 4264; AVX512F-NEXT: vextracti32x4 $2, %zmm2, %xmm5 4265; AVX512F-NEXT: vpextrd $1, %xmm5, %edx 4266; AVX512F-NEXT: vextracti32x4 $2, %zmm0, %xmm6 4267; AVX512F-NEXT: vpextrd $1, %xmm6, %esi 4268; AVX512F-NEXT: cmpl %edx, %esi 4269; AVX512F-NEXT: movl $0, %edx 4270; AVX512F-NEXT: cmovgl %ecx, %edx 4271; AVX512F-NEXT: vmovd %xmm5, %esi 4272; AVX512F-NEXT: vmovd %xmm6, %edi 4273; AVX512F-NEXT: cmpl %esi, %edi 4274; AVX512F-NEXT: movl $0, %esi 4275; AVX512F-NEXT: cmovgl %ecx, %esi 4276; AVX512F-NEXT: vmovd %esi, %xmm7 4277; AVX512F-NEXT: vpinsrd $1, %edx, %xmm7, %xmm7 4278; AVX512F-NEXT: vpextrd $2, %xmm5, %edx 4279; AVX512F-NEXT: vpextrd $2, %xmm6, %esi 4280; AVX512F-NEXT: cmpl %edx, %esi 4281; AVX512F-NEXT: movl $0, %edx 4282; AVX512F-NEXT: cmovgl %ecx, %edx 4283; AVX512F-NEXT: vpinsrd $2, %edx, %xmm7, %xmm7 4284; AVX512F-NEXT: vpextrd $3, %xmm5, %edx 4285; AVX512F-NEXT: vpextrd $3, %xmm6, %esi 4286; AVX512F-NEXT: cmpl %edx, %esi 4287; AVX512F-NEXT: movl $0, %edx 4288; AVX512F-NEXT: cmovgl %ecx, %edx 4289; AVX512F-NEXT: vpinsrd $3, %edx, %xmm7, %xmm5 4290; AVX512F-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4 4291; AVX512F-NEXT: vextracti32x4 $1, %zmm2, %xmm5 4292; AVX512F-NEXT: vpextrd $1, %xmm5, %edx 4293; AVX512F-NEXT: vextracti32x4 $1, %zmm0, %xmm6 4294; AVX512F-NEXT: vpextrd $1, %xmm6, %esi 4295; AVX512F-NEXT: cmpl %edx, %esi 4296; AVX512F-NEXT: movl $0, %edx 4297; AVX512F-NEXT: cmovgl %ecx, %edx 4298; AVX512F-NEXT: vmovd %xmm5, %esi 4299; AVX512F-NEXT: vmovd %xmm6, %edi 4300; AVX512F-NEXT: cmpl %esi, %edi 4301; AVX512F-NEXT: movl $0, %esi 4302; AVX512F-NEXT: cmovgl %ecx, %esi 4303; AVX512F-NEXT: vmovd %esi, %xmm7 4304; AVX512F-NEXT: vpinsrd $1, %edx, %xmm7, %xmm7 4305; AVX512F-NEXT: vpextrd $2, %xmm5, %edx 4306; AVX512F-NEXT: vpextrd $2, %xmm6, %esi 4307; AVX512F-NEXT: cmpl %edx, %esi 4308; AVX512F-NEXT: movl $0, %edx 4309; AVX512F-NEXT: cmovgl %ecx, %edx 4310; AVX512F-NEXT: vpinsrd $2, %edx, %xmm7, %xmm7 4311; AVX512F-NEXT: vpextrd $3, %xmm5, %edx 4312; AVX512F-NEXT: vpextrd $3, %xmm6, %esi 4313; AVX512F-NEXT: cmpl %edx, %esi 4314; AVX512F-NEXT: movl $0, %edx 4315; AVX512F-NEXT: cmovgl %ecx, %edx 4316; AVX512F-NEXT: vpinsrd $3, %edx, %xmm7, %xmm5 4317; AVX512F-NEXT: vpextrd $1, %xmm2, %edx 4318; AVX512F-NEXT: vpextrd $1, %xmm0, %esi 4319; AVX512F-NEXT: cmpl %edx, %esi 4320; AVX512F-NEXT: movl $0, %edx 4321; AVX512F-NEXT: cmovgl %ecx, %edx 4322; AVX512F-NEXT: vmovd %xmm2, %esi 4323; AVX512F-NEXT: vmovd %xmm0, %edi 4324; AVX512F-NEXT: cmpl %esi, %edi 4325; AVX512F-NEXT: movl $0, %esi 4326; AVX512F-NEXT: cmovgl %ecx, %esi 4327; AVX512F-NEXT: vmovd %esi, %xmm6 4328; AVX512F-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 4329; AVX512F-NEXT: vpextrd $2, %xmm2, %edx 4330; AVX512F-NEXT: vpextrd $2, %xmm0, %esi 4331; AVX512F-NEXT: cmpl %edx, %esi 4332; AVX512F-NEXT: movl $0, %edx 4333; AVX512F-NEXT: cmovgl %ecx, %edx 4334; AVX512F-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 4335; AVX512F-NEXT: vpextrd $3, %xmm2, %edx 4336; AVX512F-NEXT: vpextrd $3, %xmm0, %esi 4337; AVX512F-NEXT: cmpl %edx, %esi 4338; AVX512F-NEXT: movl $0, %edx 4339; AVX512F-NEXT: cmovgl %ecx, %edx 4340; AVX512F-NEXT: vpinsrd $3, %edx, %xmm6, %xmm0 4341; AVX512F-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0 4342; AVX512F-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm0 4343; AVX512F-NEXT: vpmovdb %zmm0, %xmm0 4344; AVX512F-NEXT: vextracti32x4 $3, %zmm3, %xmm2 4345; AVX512F-NEXT: vpextrd $1, %xmm2, %edx 4346; AVX512F-NEXT: vextracti32x4 $3, %zmm1, %xmm4 4347; AVX512F-NEXT: vpextrd $1, %xmm4, %esi 4348; AVX512F-NEXT: cmpl %edx, %esi 4349; AVX512F-NEXT: movl $0, %edx 4350; AVX512F-NEXT: cmovgl %ecx, %edx 4351; AVX512F-NEXT: vmovd %xmm2, %esi 4352; AVX512F-NEXT: vmovd %xmm4, %edi 4353; AVX512F-NEXT: cmpl %esi, %edi 4354; AVX512F-NEXT: movl $0, %esi 4355; AVX512F-NEXT: cmovgl %ecx, %esi 4356; AVX512F-NEXT: vmovd %esi, %xmm5 4357; AVX512F-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 4358; AVX512F-NEXT: vpextrd $2, %xmm2, %edx 4359; AVX512F-NEXT: vpextrd $2, %xmm4, %esi 4360; AVX512F-NEXT: cmpl %edx, %esi 4361; AVX512F-NEXT: movl $0, %edx 4362; AVX512F-NEXT: cmovgl %ecx, %edx 4363; AVX512F-NEXT: vpinsrd $2, %edx, %xmm5, %xmm5 4364; AVX512F-NEXT: vpextrd $3, %xmm2, %edx 4365; AVX512F-NEXT: vpextrd $3, %xmm4, %esi 4366; AVX512F-NEXT: cmpl %edx, %esi 4367; AVX512F-NEXT: movl $0, %edx 4368; AVX512F-NEXT: cmovgl %ecx, %edx 4369; AVX512F-NEXT: vpinsrd $3, %edx, %xmm5, %xmm2 4370; AVX512F-NEXT: vextracti32x4 $2, %zmm3, %xmm4 4371; AVX512F-NEXT: vpextrd $1, %xmm4, %edx 4372; AVX512F-NEXT: vextracti32x4 $2, %zmm1, %xmm5 4373; AVX512F-NEXT: vpextrd $1, %xmm5, %esi 4374; AVX512F-NEXT: cmpl %edx, %esi 4375; AVX512F-NEXT: movl $0, %edx 4376; AVX512F-NEXT: cmovgl %ecx, %edx 4377; AVX512F-NEXT: vmovd %xmm4, %esi 4378; AVX512F-NEXT: vmovd %xmm5, %edi 4379; AVX512F-NEXT: cmpl %esi, %edi 4380; AVX512F-NEXT: movl $0, %esi 4381; AVX512F-NEXT: cmovgl %ecx, %esi 4382; AVX512F-NEXT: vmovd %esi, %xmm6 4383; AVX512F-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 4384; AVX512F-NEXT: vpextrd $2, %xmm4, %edx 4385; AVX512F-NEXT: vpextrd $2, %xmm5, %esi 4386; AVX512F-NEXT: cmpl %edx, %esi 4387; AVX512F-NEXT: movl $0, %edx 4388; AVX512F-NEXT: cmovgl %ecx, %edx 4389; AVX512F-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 4390; AVX512F-NEXT: vpextrd $3, %xmm4, %edx 4391; AVX512F-NEXT: vpextrd $3, %xmm5, %esi 4392; AVX512F-NEXT: cmpl %edx, %esi 4393; AVX512F-NEXT: movl $0, %edx 4394; AVX512F-NEXT: cmovgl %ecx, %edx 4395; AVX512F-NEXT: vpinsrd $3, %edx, %xmm6, %xmm4 4396; AVX512F-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2 4397; AVX512F-NEXT: vextracti32x4 $1, %zmm3, %xmm4 4398; AVX512F-NEXT: vpextrd $1, %xmm4, %edx 4399; AVX512F-NEXT: vextracti32x4 $1, %zmm1, %xmm5 4400; AVX512F-NEXT: vpextrd $1, %xmm5, %esi 4401; AVX512F-NEXT: cmpl %edx, %esi 4402; AVX512F-NEXT: movl $0, %edx 4403; AVX512F-NEXT: cmovgl %ecx, %edx 4404; AVX512F-NEXT: vmovd %xmm4, %esi 4405; AVX512F-NEXT: vmovd %xmm5, %edi 4406; AVX512F-NEXT: cmpl %esi, %edi 4407; AVX512F-NEXT: movl $0, %esi 4408; AVX512F-NEXT: cmovgl %ecx, %esi 4409; AVX512F-NEXT: vmovd %esi, %xmm6 4410; AVX512F-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 4411; AVX512F-NEXT: vpextrd $2, %xmm4, %edx 4412; AVX512F-NEXT: vpextrd $2, %xmm5, %esi 4413; AVX512F-NEXT: cmpl %edx, %esi 4414; AVX512F-NEXT: movl $0, %edx 4415; AVX512F-NEXT: cmovgl %ecx, %edx 4416; AVX512F-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 4417; AVX512F-NEXT: vpextrd $3, %xmm4, %edx 4418; AVX512F-NEXT: vpextrd $3, %xmm5, %esi 4419; AVX512F-NEXT: cmpl %edx, %esi 4420; AVX512F-NEXT: movl $0, %edx 4421; AVX512F-NEXT: cmovgl %ecx, %edx 4422; AVX512F-NEXT: vpinsrd $3, %edx, %xmm6, %xmm4 4423; AVX512F-NEXT: vpextrd $1, %xmm3, %edx 4424; AVX512F-NEXT: vpextrd $1, %xmm1, %esi 4425; AVX512F-NEXT: cmpl %edx, %esi 4426; AVX512F-NEXT: movl $0, %edx 4427; AVX512F-NEXT: cmovgl %ecx, %edx 4428; AVX512F-NEXT: vmovd %xmm3, %esi 4429; AVX512F-NEXT: vmovd %xmm1, %edi 4430; AVX512F-NEXT: cmpl %esi, %edi 4431; AVX512F-NEXT: movl $0, %esi 4432; AVX512F-NEXT: cmovgl %ecx, %esi 4433; AVX512F-NEXT: vmovd %esi, %xmm5 4434; AVX512F-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 4435; AVX512F-NEXT: vpextrd $2, %xmm3, %edx 4436; AVX512F-NEXT: vpextrd $2, %xmm1, %esi 4437; AVX512F-NEXT: cmpl %edx, %esi 4438; AVX512F-NEXT: movl $0, %edx 4439; AVX512F-NEXT: cmovgl %ecx, %edx 4440; AVX512F-NEXT: vpinsrd $2, %edx, %xmm5, %xmm5 4441; AVX512F-NEXT: vpextrd $3, %xmm3, %edx 4442; AVX512F-NEXT: vpextrd $3, %xmm1, %esi 4443; AVX512F-NEXT: cmpl %edx, %esi 4444; AVX512F-NEXT: cmovgl %ecx, %eax 4445; AVX512F-NEXT: vpinsrd $3, %eax, %xmm5, %xmm1 4446; AVX512F-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1 4447; AVX512F-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1 4448; AVX512F-NEXT: vpmovdb %zmm1, %xmm1 4449; AVX512F-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 4450; AVX512F-NEXT: retq 4451; 4452; AVX512DQ-LABEL: test_cmp_v32i32: 4453; AVX512DQ: # BB#0: 4454; AVX512DQ-NEXT: vextracti32x4 $3, %zmm2, %xmm4 4455; AVX512DQ-NEXT: vpextrd $1, %xmm4, %ecx 4456; AVX512DQ-NEXT: vextracti32x4 $3, %zmm0, %xmm5 4457; AVX512DQ-NEXT: vpextrd $1, %xmm5, %edx 4458; AVX512DQ-NEXT: xorl %eax, %eax 4459; AVX512DQ-NEXT: cmpl %ecx, %edx 4460; AVX512DQ-NEXT: movl $-1, %ecx 4461; AVX512DQ-NEXT: movl $0, %edx 4462; AVX512DQ-NEXT: cmovgl %ecx, %edx 4463; AVX512DQ-NEXT: vmovd %xmm4, %esi 4464; AVX512DQ-NEXT: vmovd %xmm5, %edi 4465; AVX512DQ-NEXT: cmpl %esi, %edi 4466; AVX512DQ-NEXT: movl $0, %esi 4467; AVX512DQ-NEXT: cmovgl %ecx, %esi 4468; AVX512DQ-NEXT: vmovd %esi, %xmm6 4469; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 4470; AVX512DQ-NEXT: vpextrd $2, %xmm4, %edx 4471; AVX512DQ-NEXT: vpextrd $2, %xmm5, %esi 4472; AVX512DQ-NEXT: cmpl %edx, %esi 4473; AVX512DQ-NEXT: movl $0, %edx 4474; AVX512DQ-NEXT: cmovgl %ecx, %edx 4475; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 4476; AVX512DQ-NEXT: vpextrd $3, %xmm4, %edx 4477; AVX512DQ-NEXT: vpextrd $3, %xmm5, %esi 4478; AVX512DQ-NEXT: cmpl %edx, %esi 4479; AVX512DQ-NEXT: movl $0, %edx 4480; AVX512DQ-NEXT: cmovgl %ecx, %edx 4481; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm6, %xmm4 4482; AVX512DQ-NEXT: vextracti32x4 $2, %zmm2, %xmm5 4483; AVX512DQ-NEXT: vpextrd $1, %xmm5, %edx 4484; AVX512DQ-NEXT: vextracti32x4 $2, %zmm0, %xmm6 4485; AVX512DQ-NEXT: vpextrd $1, %xmm6, %esi 4486; AVX512DQ-NEXT: cmpl %edx, %esi 4487; AVX512DQ-NEXT: movl $0, %edx 4488; AVX512DQ-NEXT: cmovgl %ecx, %edx 4489; AVX512DQ-NEXT: vmovd %xmm5, %esi 4490; AVX512DQ-NEXT: vmovd %xmm6, %edi 4491; AVX512DQ-NEXT: cmpl %esi, %edi 4492; AVX512DQ-NEXT: movl $0, %esi 4493; AVX512DQ-NEXT: cmovgl %ecx, %esi 4494; AVX512DQ-NEXT: vmovd %esi, %xmm7 4495; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm7, %xmm7 4496; AVX512DQ-NEXT: vpextrd $2, %xmm5, %edx 4497; AVX512DQ-NEXT: vpextrd $2, %xmm6, %esi 4498; AVX512DQ-NEXT: cmpl %edx, %esi 4499; AVX512DQ-NEXT: movl $0, %edx 4500; AVX512DQ-NEXT: cmovgl %ecx, %edx 4501; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm7, %xmm7 4502; AVX512DQ-NEXT: vpextrd $3, %xmm5, %edx 4503; AVX512DQ-NEXT: vpextrd $3, %xmm6, %esi 4504; AVX512DQ-NEXT: cmpl %edx, %esi 4505; AVX512DQ-NEXT: movl $0, %edx 4506; AVX512DQ-NEXT: cmovgl %ecx, %edx 4507; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm7, %xmm5 4508; AVX512DQ-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4 4509; AVX512DQ-NEXT: vextracti32x4 $1, %zmm2, %xmm5 4510; AVX512DQ-NEXT: vpextrd $1, %xmm5, %edx 4511; AVX512DQ-NEXT: vextracti32x4 $1, %zmm0, %xmm6 4512; AVX512DQ-NEXT: vpextrd $1, %xmm6, %esi 4513; AVX512DQ-NEXT: cmpl %edx, %esi 4514; AVX512DQ-NEXT: movl $0, %edx 4515; AVX512DQ-NEXT: cmovgl %ecx, %edx 4516; AVX512DQ-NEXT: vmovd %xmm5, %esi 4517; AVX512DQ-NEXT: vmovd %xmm6, %edi 4518; AVX512DQ-NEXT: cmpl %esi, %edi 4519; AVX512DQ-NEXT: movl $0, %esi 4520; AVX512DQ-NEXT: cmovgl %ecx, %esi 4521; AVX512DQ-NEXT: vmovd %esi, %xmm7 4522; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm7, %xmm7 4523; AVX512DQ-NEXT: vpextrd $2, %xmm5, %edx 4524; AVX512DQ-NEXT: vpextrd $2, %xmm6, %esi 4525; AVX512DQ-NEXT: cmpl %edx, %esi 4526; AVX512DQ-NEXT: movl $0, %edx 4527; AVX512DQ-NEXT: cmovgl %ecx, %edx 4528; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm7, %xmm7 4529; AVX512DQ-NEXT: vpextrd $3, %xmm5, %edx 4530; AVX512DQ-NEXT: vpextrd $3, %xmm6, %esi 4531; AVX512DQ-NEXT: cmpl %edx, %esi 4532; AVX512DQ-NEXT: movl $0, %edx 4533; AVX512DQ-NEXT: cmovgl %ecx, %edx 4534; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm7, %xmm5 4535; AVX512DQ-NEXT: vpextrd $1, %xmm2, %edx 4536; AVX512DQ-NEXT: vpextrd $1, %xmm0, %esi 4537; AVX512DQ-NEXT: cmpl %edx, %esi 4538; AVX512DQ-NEXT: movl $0, %edx 4539; AVX512DQ-NEXT: cmovgl %ecx, %edx 4540; AVX512DQ-NEXT: vmovd %xmm2, %esi 4541; AVX512DQ-NEXT: vmovd %xmm0, %edi 4542; AVX512DQ-NEXT: cmpl %esi, %edi 4543; AVX512DQ-NEXT: movl $0, %esi 4544; AVX512DQ-NEXT: cmovgl %ecx, %esi 4545; AVX512DQ-NEXT: vmovd %esi, %xmm6 4546; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 4547; AVX512DQ-NEXT: vpextrd $2, %xmm2, %edx 4548; AVX512DQ-NEXT: vpextrd $2, %xmm0, %esi 4549; AVX512DQ-NEXT: cmpl %edx, %esi 4550; AVX512DQ-NEXT: movl $0, %edx 4551; AVX512DQ-NEXT: cmovgl %ecx, %edx 4552; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 4553; AVX512DQ-NEXT: vpextrd $3, %xmm2, %edx 4554; AVX512DQ-NEXT: vpextrd $3, %xmm0, %esi 4555; AVX512DQ-NEXT: cmpl %edx, %esi 4556; AVX512DQ-NEXT: movl $0, %edx 4557; AVX512DQ-NEXT: cmovgl %ecx, %edx 4558; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm6, %xmm0 4559; AVX512DQ-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0 4560; AVX512DQ-NEXT: vinserti32x8 $1, %ymm4, %zmm0, %zmm0 4561; AVX512DQ-NEXT: vpmovdb %zmm0, %xmm0 4562; AVX512DQ-NEXT: vextracti32x4 $3, %zmm3, %xmm2 4563; AVX512DQ-NEXT: vpextrd $1, %xmm2, %edx 4564; AVX512DQ-NEXT: vextracti32x4 $3, %zmm1, %xmm4 4565; AVX512DQ-NEXT: vpextrd $1, %xmm4, %esi 4566; AVX512DQ-NEXT: cmpl %edx, %esi 4567; AVX512DQ-NEXT: movl $0, %edx 4568; AVX512DQ-NEXT: cmovgl %ecx, %edx 4569; AVX512DQ-NEXT: vmovd %xmm2, %esi 4570; AVX512DQ-NEXT: vmovd %xmm4, %edi 4571; AVX512DQ-NEXT: cmpl %esi, %edi 4572; AVX512DQ-NEXT: movl $0, %esi 4573; AVX512DQ-NEXT: cmovgl %ecx, %esi 4574; AVX512DQ-NEXT: vmovd %esi, %xmm5 4575; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 4576; AVX512DQ-NEXT: vpextrd $2, %xmm2, %edx 4577; AVX512DQ-NEXT: vpextrd $2, %xmm4, %esi 4578; AVX512DQ-NEXT: cmpl %edx, %esi 4579; AVX512DQ-NEXT: movl $0, %edx 4580; AVX512DQ-NEXT: cmovgl %ecx, %edx 4581; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm5, %xmm5 4582; AVX512DQ-NEXT: vpextrd $3, %xmm2, %edx 4583; AVX512DQ-NEXT: vpextrd $3, %xmm4, %esi 4584; AVX512DQ-NEXT: cmpl %edx, %esi 4585; AVX512DQ-NEXT: movl $0, %edx 4586; AVX512DQ-NEXT: cmovgl %ecx, %edx 4587; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm5, %xmm2 4588; AVX512DQ-NEXT: vextracti32x4 $2, %zmm3, %xmm4 4589; AVX512DQ-NEXT: vpextrd $1, %xmm4, %edx 4590; AVX512DQ-NEXT: vextracti32x4 $2, %zmm1, %xmm5 4591; AVX512DQ-NEXT: vpextrd $1, %xmm5, %esi 4592; AVX512DQ-NEXT: cmpl %edx, %esi 4593; AVX512DQ-NEXT: movl $0, %edx 4594; AVX512DQ-NEXT: cmovgl %ecx, %edx 4595; AVX512DQ-NEXT: vmovd %xmm4, %esi 4596; AVX512DQ-NEXT: vmovd %xmm5, %edi 4597; AVX512DQ-NEXT: cmpl %esi, %edi 4598; AVX512DQ-NEXT: movl $0, %esi 4599; AVX512DQ-NEXT: cmovgl %ecx, %esi 4600; AVX512DQ-NEXT: vmovd %esi, %xmm6 4601; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 4602; AVX512DQ-NEXT: vpextrd $2, %xmm4, %edx 4603; AVX512DQ-NEXT: vpextrd $2, %xmm5, %esi 4604; AVX512DQ-NEXT: cmpl %edx, %esi 4605; AVX512DQ-NEXT: movl $0, %edx 4606; AVX512DQ-NEXT: cmovgl %ecx, %edx 4607; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 4608; AVX512DQ-NEXT: vpextrd $3, %xmm4, %edx 4609; AVX512DQ-NEXT: vpextrd $3, %xmm5, %esi 4610; AVX512DQ-NEXT: cmpl %edx, %esi 4611; AVX512DQ-NEXT: movl $0, %edx 4612; AVX512DQ-NEXT: cmovgl %ecx, %edx 4613; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm6, %xmm4 4614; AVX512DQ-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2 4615; AVX512DQ-NEXT: vextracti32x4 $1, %zmm3, %xmm4 4616; AVX512DQ-NEXT: vpextrd $1, %xmm4, %edx 4617; AVX512DQ-NEXT: vextracti32x4 $1, %zmm1, %xmm5 4618; AVX512DQ-NEXT: vpextrd $1, %xmm5, %esi 4619; AVX512DQ-NEXT: cmpl %edx, %esi 4620; AVX512DQ-NEXT: movl $0, %edx 4621; AVX512DQ-NEXT: cmovgl %ecx, %edx 4622; AVX512DQ-NEXT: vmovd %xmm4, %esi 4623; AVX512DQ-NEXT: vmovd %xmm5, %edi 4624; AVX512DQ-NEXT: cmpl %esi, %edi 4625; AVX512DQ-NEXT: movl $0, %esi 4626; AVX512DQ-NEXT: cmovgl %ecx, %esi 4627; AVX512DQ-NEXT: vmovd %esi, %xmm6 4628; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 4629; AVX512DQ-NEXT: vpextrd $2, %xmm4, %edx 4630; AVX512DQ-NEXT: vpextrd $2, %xmm5, %esi 4631; AVX512DQ-NEXT: cmpl %edx, %esi 4632; AVX512DQ-NEXT: movl $0, %edx 4633; AVX512DQ-NEXT: cmovgl %ecx, %edx 4634; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 4635; AVX512DQ-NEXT: vpextrd $3, %xmm4, %edx 4636; AVX512DQ-NEXT: vpextrd $3, %xmm5, %esi 4637; AVX512DQ-NEXT: cmpl %edx, %esi 4638; AVX512DQ-NEXT: movl $0, %edx 4639; AVX512DQ-NEXT: cmovgl %ecx, %edx 4640; AVX512DQ-NEXT: vpinsrd $3, %edx, %xmm6, %xmm4 4641; AVX512DQ-NEXT: vpextrd $1, %xmm3, %edx 4642; AVX512DQ-NEXT: vpextrd $1, %xmm1, %esi 4643; AVX512DQ-NEXT: cmpl %edx, %esi 4644; AVX512DQ-NEXT: movl $0, %edx 4645; AVX512DQ-NEXT: cmovgl %ecx, %edx 4646; AVX512DQ-NEXT: vmovd %xmm3, %esi 4647; AVX512DQ-NEXT: vmovd %xmm1, %edi 4648; AVX512DQ-NEXT: cmpl %esi, %edi 4649; AVX512DQ-NEXT: movl $0, %esi 4650; AVX512DQ-NEXT: cmovgl %ecx, %esi 4651; AVX512DQ-NEXT: vmovd %esi, %xmm5 4652; AVX512DQ-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 4653; AVX512DQ-NEXT: vpextrd $2, %xmm3, %edx 4654; AVX512DQ-NEXT: vpextrd $2, %xmm1, %esi 4655; AVX512DQ-NEXT: cmpl %edx, %esi 4656; AVX512DQ-NEXT: movl $0, %edx 4657; AVX512DQ-NEXT: cmovgl %ecx, %edx 4658; AVX512DQ-NEXT: vpinsrd $2, %edx, %xmm5, %xmm5 4659; AVX512DQ-NEXT: vpextrd $3, %xmm3, %edx 4660; AVX512DQ-NEXT: vpextrd $3, %xmm1, %esi 4661; AVX512DQ-NEXT: cmpl %edx, %esi 4662; AVX512DQ-NEXT: cmovgl %ecx, %eax 4663; AVX512DQ-NEXT: vpinsrd $3, %eax, %xmm5, %xmm1 4664; AVX512DQ-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1 4665; AVX512DQ-NEXT: vinserti32x8 $1, %ymm2, %zmm1, %zmm1 4666; AVX512DQ-NEXT: vpmovdb %zmm1, %xmm1 4667; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 4668; AVX512DQ-NEXT: retq 4669; 4670; AVX512BW-LABEL: test_cmp_v32i32: 4671; AVX512BW: # BB#0: 4672; AVX512BW-NEXT: vextracti32x4 $3, %zmm2, %xmm4 4673; AVX512BW-NEXT: vpextrd $1, %xmm4, %ecx 4674; AVX512BW-NEXT: vextracti32x4 $3, %zmm0, %xmm5 4675; AVX512BW-NEXT: vpextrd $1, %xmm5, %edx 4676; AVX512BW-NEXT: xorl %eax, %eax 4677; AVX512BW-NEXT: cmpl %ecx, %edx 4678; AVX512BW-NEXT: movl $-1, %ecx 4679; AVX512BW-NEXT: movl $0, %edx 4680; AVX512BW-NEXT: cmovgl %ecx, %edx 4681; AVX512BW-NEXT: vmovd %xmm4, %esi 4682; AVX512BW-NEXT: vmovd %xmm5, %edi 4683; AVX512BW-NEXT: cmpl %esi, %edi 4684; AVX512BW-NEXT: movl $0, %esi 4685; AVX512BW-NEXT: cmovgl %ecx, %esi 4686; AVX512BW-NEXT: vmovd %esi, %xmm6 4687; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 4688; AVX512BW-NEXT: vpextrd $2, %xmm4, %edx 4689; AVX512BW-NEXT: vpextrd $2, %xmm5, %esi 4690; AVX512BW-NEXT: cmpl %edx, %esi 4691; AVX512BW-NEXT: movl $0, %edx 4692; AVX512BW-NEXT: cmovgl %ecx, %edx 4693; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 4694; AVX512BW-NEXT: vpextrd $3, %xmm4, %edx 4695; AVX512BW-NEXT: vpextrd $3, %xmm5, %esi 4696; AVX512BW-NEXT: cmpl %edx, %esi 4697; AVX512BW-NEXT: movl $0, %edx 4698; AVX512BW-NEXT: cmovgl %ecx, %edx 4699; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm6, %xmm4 4700; AVX512BW-NEXT: vextracti32x4 $2, %zmm2, %xmm5 4701; AVX512BW-NEXT: vpextrd $1, %xmm5, %edx 4702; AVX512BW-NEXT: vextracti32x4 $2, %zmm0, %xmm6 4703; AVX512BW-NEXT: vpextrd $1, %xmm6, %esi 4704; AVX512BW-NEXT: cmpl %edx, %esi 4705; AVX512BW-NEXT: movl $0, %edx 4706; AVX512BW-NEXT: cmovgl %ecx, %edx 4707; AVX512BW-NEXT: vmovd %xmm5, %esi 4708; AVX512BW-NEXT: vmovd %xmm6, %edi 4709; AVX512BW-NEXT: cmpl %esi, %edi 4710; AVX512BW-NEXT: movl $0, %esi 4711; AVX512BW-NEXT: cmovgl %ecx, %esi 4712; AVX512BW-NEXT: vmovd %esi, %xmm7 4713; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm7, %xmm7 4714; AVX512BW-NEXT: vpextrd $2, %xmm5, %edx 4715; AVX512BW-NEXT: vpextrd $2, %xmm6, %esi 4716; AVX512BW-NEXT: cmpl %edx, %esi 4717; AVX512BW-NEXT: movl $0, %edx 4718; AVX512BW-NEXT: cmovgl %ecx, %edx 4719; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm7, %xmm7 4720; AVX512BW-NEXT: vpextrd $3, %xmm5, %edx 4721; AVX512BW-NEXT: vpextrd $3, %xmm6, %esi 4722; AVX512BW-NEXT: cmpl %edx, %esi 4723; AVX512BW-NEXT: movl $0, %edx 4724; AVX512BW-NEXT: cmovgl %ecx, %edx 4725; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm7, %xmm5 4726; AVX512BW-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4 4727; AVX512BW-NEXT: vextracti32x4 $1, %zmm2, %xmm5 4728; AVX512BW-NEXT: vpextrd $1, %xmm5, %edx 4729; AVX512BW-NEXT: vextracti32x4 $1, %zmm0, %xmm6 4730; AVX512BW-NEXT: vpextrd $1, %xmm6, %esi 4731; AVX512BW-NEXT: cmpl %edx, %esi 4732; AVX512BW-NEXT: movl $0, %edx 4733; AVX512BW-NEXT: cmovgl %ecx, %edx 4734; AVX512BW-NEXT: vmovd %xmm5, %esi 4735; AVX512BW-NEXT: vmovd %xmm6, %edi 4736; AVX512BW-NEXT: cmpl %esi, %edi 4737; AVX512BW-NEXT: movl $0, %esi 4738; AVX512BW-NEXT: cmovgl %ecx, %esi 4739; AVX512BW-NEXT: vmovd %esi, %xmm7 4740; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm7, %xmm7 4741; AVX512BW-NEXT: vpextrd $2, %xmm5, %edx 4742; AVX512BW-NEXT: vpextrd $2, %xmm6, %esi 4743; AVX512BW-NEXT: cmpl %edx, %esi 4744; AVX512BW-NEXT: movl $0, %edx 4745; AVX512BW-NEXT: cmovgl %ecx, %edx 4746; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm7, %xmm7 4747; AVX512BW-NEXT: vpextrd $3, %xmm5, %edx 4748; AVX512BW-NEXT: vpextrd $3, %xmm6, %esi 4749; AVX512BW-NEXT: cmpl %edx, %esi 4750; AVX512BW-NEXT: movl $0, %edx 4751; AVX512BW-NEXT: cmovgl %ecx, %edx 4752; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm7, %xmm5 4753; AVX512BW-NEXT: vpextrd $1, %xmm2, %edx 4754; AVX512BW-NEXT: vpextrd $1, %xmm0, %esi 4755; AVX512BW-NEXT: cmpl %edx, %esi 4756; AVX512BW-NEXT: movl $0, %edx 4757; AVX512BW-NEXT: cmovgl %ecx, %edx 4758; AVX512BW-NEXT: vmovd %xmm2, %esi 4759; AVX512BW-NEXT: vmovd %xmm0, %edi 4760; AVX512BW-NEXT: cmpl %esi, %edi 4761; AVX512BW-NEXT: movl $0, %esi 4762; AVX512BW-NEXT: cmovgl %ecx, %esi 4763; AVX512BW-NEXT: vmovd %esi, %xmm6 4764; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 4765; AVX512BW-NEXT: vpextrd $2, %xmm2, %edx 4766; AVX512BW-NEXT: vpextrd $2, %xmm0, %esi 4767; AVX512BW-NEXT: cmpl %edx, %esi 4768; AVX512BW-NEXT: movl $0, %edx 4769; AVX512BW-NEXT: cmovgl %ecx, %edx 4770; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 4771; AVX512BW-NEXT: vpextrd $3, %xmm2, %edx 4772; AVX512BW-NEXT: vpextrd $3, %xmm0, %esi 4773; AVX512BW-NEXT: cmpl %edx, %esi 4774; AVX512BW-NEXT: movl $0, %edx 4775; AVX512BW-NEXT: cmovgl %ecx, %edx 4776; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm6, %xmm0 4777; AVX512BW-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0 4778; AVX512BW-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm0 4779; AVX512BW-NEXT: vpmovdw %zmm0, %ymm0 4780; AVX512BW-NEXT: vextracti32x4 $3, %zmm3, %xmm2 4781; AVX512BW-NEXT: vpextrd $1, %xmm2, %edx 4782; AVX512BW-NEXT: vextracti32x4 $3, %zmm1, %xmm4 4783; AVX512BW-NEXT: vpextrd $1, %xmm4, %esi 4784; AVX512BW-NEXT: cmpl %edx, %esi 4785; AVX512BW-NEXT: movl $0, %edx 4786; AVX512BW-NEXT: cmovgl %ecx, %edx 4787; AVX512BW-NEXT: vmovd %xmm2, %esi 4788; AVX512BW-NEXT: vmovd %xmm4, %edi 4789; AVX512BW-NEXT: cmpl %esi, %edi 4790; AVX512BW-NEXT: movl $0, %esi 4791; AVX512BW-NEXT: cmovgl %ecx, %esi 4792; AVX512BW-NEXT: vmovd %esi, %xmm5 4793; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 4794; AVX512BW-NEXT: vpextrd $2, %xmm2, %edx 4795; AVX512BW-NEXT: vpextrd $2, %xmm4, %esi 4796; AVX512BW-NEXT: cmpl %edx, %esi 4797; AVX512BW-NEXT: movl $0, %edx 4798; AVX512BW-NEXT: cmovgl %ecx, %edx 4799; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm5, %xmm5 4800; AVX512BW-NEXT: vpextrd $3, %xmm2, %edx 4801; AVX512BW-NEXT: vpextrd $3, %xmm4, %esi 4802; AVX512BW-NEXT: cmpl %edx, %esi 4803; AVX512BW-NEXT: movl $0, %edx 4804; AVX512BW-NEXT: cmovgl %ecx, %edx 4805; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm5, %xmm2 4806; AVX512BW-NEXT: vextracti32x4 $2, %zmm3, %xmm4 4807; AVX512BW-NEXT: vpextrd $1, %xmm4, %edx 4808; AVX512BW-NEXT: vextracti32x4 $2, %zmm1, %xmm5 4809; AVX512BW-NEXT: vpextrd $1, %xmm5, %esi 4810; AVX512BW-NEXT: cmpl %edx, %esi 4811; AVX512BW-NEXT: movl $0, %edx 4812; AVX512BW-NEXT: cmovgl %ecx, %edx 4813; AVX512BW-NEXT: vmovd %xmm4, %esi 4814; AVX512BW-NEXT: vmovd %xmm5, %edi 4815; AVX512BW-NEXT: cmpl %esi, %edi 4816; AVX512BW-NEXT: movl $0, %esi 4817; AVX512BW-NEXT: cmovgl %ecx, %esi 4818; AVX512BW-NEXT: vmovd %esi, %xmm6 4819; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 4820; AVX512BW-NEXT: vpextrd $2, %xmm4, %edx 4821; AVX512BW-NEXT: vpextrd $2, %xmm5, %esi 4822; AVX512BW-NEXT: cmpl %edx, %esi 4823; AVX512BW-NEXT: movl $0, %edx 4824; AVX512BW-NEXT: cmovgl %ecx, %edx 4825; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 4826; AVX512BW-NEXT: vpextrd $3, %xmm4, %edx 4827; AVX512BW-NEXT: vpextrd $3, %xmm5, %esi 4828; AVX512BW-NEXT: cmpl %edx, %esi 4829; AVX512BW-NEXT: movl $0, %edx 4830; AVX512BW-NEXT: cmovgl %ecx, %edx 4831; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm6, %xmm4 4832; AVX512BW-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2 4833; AVX512BW-NEXT: vextracti32x4 $1, %zmm3, %xmm4 4834; AVX512BW-NEXT: vpextrd $1, %xmm4, %edx 4835; AVX512BW-NEXT: vextracti32x4 $1, %zmm1, %xmm5 4836; AVX512BW-NEXT: vpextrd $1, %xmm5, %esi 4837; AVX512BW-NEXT: cmpl %edx, %esi 4838; AVX512BW-NEXT: movl $0, %edx 4839; AVX512BW-NEXT: cmovgl %ecx, %edx 4840; AVX512BW-NEXT: vmovd %xmm4, %esi 4841; AVX512BW-NEXT: vmovd %xmm5, %edi 4842; AVX512BW-NEXT: cmpl %esi, %edi 4843; AVX512BW-NEXT: movl $0, %esi 4844; AVX512BW-NEXT: cmovgl %ecx, %esi 4845; AVX512BW-NEXT: vmovd %esi, %xmm6 4846; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 4847; AVX512BW-NEXT: vpextrd $2, %xmm4, %edx 4848; AVX512BW-NEXT: vpextrd $2, %xmm5, %esi 4849; AVX512BW-NEXT: cmpl %edx, %esi 4850; AVX512BW-NEXT: movl $0, %edx 4851; AVX512BW-NEXT: cmovgl %ecx, %edx 4852; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 4853; AVX512BW-NEXT: vpextrd $3, %xmm4, %edx 4854; AVX512BW-NEXT: vpextrd $3, %xmm5, %esi 4855; AVX512BW-NEXT: cmpl %edx, %esi 4856; AVX512BW-NEXT: movl $0, %edx 4857; AVX512BW-NEXT: cmovgl %ecx, %edx 4858; AVX512BW-NEXT: vpinsrd $3, %edx, %xmm6, %xmm4 4859; AVX512BW-NEXT: vpextrd $1, %xmm3, %edx 4860; AVX512BW-NEXT: vpextrd $1, %xmm1, %esi 4861; AVX512BW-NEXT: cmpl %edx, %esi 4862; AVX512BW-NEXT: movl $0, %edx 4863; AVX512BW-NEXT: cmovgl %ecx, %edx 4864; AVX512BW-NEXT: vmovd %xmm3, %esi 4865; AVX512BW-NEXT: vmovd %xmm1, %edi 4866; AVX512BW-NEXT: cmpl %esi, %edi 4867; AVX512BW-NEXT: movl $0, %esi 4868; AVX512BW-NEXT: cmovgl %ecx, %esi 4869; AVX512BW-NEXT: vmovd %esi, %xmm5 4870; AVX512BW-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 4871; AVX512BW-NEXT: vpextrd $2, %xmm3, %edx 4872; AVX512BW-NEXT: vpextrd $2, %xmm1, %esi 4873; AVX512BW-NEXT: cmpl %edx, %esi 4874; AVX512BW-NEXT: movl $0, %edx 4875; AVX512BW-NEXT: cmovgl %ecx, %edx 4876; AVX512BW-NEXT: vpinsrd $2, %edx, %xmm5, %xmm5 4877; AVX512BW-NEXT: vpextrd $3, %xmm3, %edx 4878; AVX512BW-NEXT: vpextrd $3, %xmm1, %esi 4879; AVX512BW-NEXT: cmpl %edx, %esi 4880; AVX512BW-NEXT: cmovgl %ecx, %eax 4881; AVX512BW-NEXT: vpinsrd $3, %eax, %xmm5, %xmm1 4882; AVX512BW-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1 4883; AVX512BW-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1 4884; AVX512BW-NEXT: vpmovdw %zmm1, %ymm1 4885; AVX512BW-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 4886; AVX512BW-NEXT: vpmovwb %zmm0, %ymm0 4887; AVX512BW-NEXT: retq 4888 %1 = icmp sgt <32 x i32> %a0, %a1 4889 ret <32 x i1> %1 4890} 4891 4892define <64 x i1> @test_cmp_v64i16(<64 x i16> %a0, <64 x i16> %a1) nounwind { 4893; SSE2-LABEL: test_cmp_v64i16: 4894; SSE2: # BB#0: 4895; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm1 4896; SSE2-NEXT: movdqa {{.*#+}} xmm8 = [255,255,255,255,255,255,255,255] 4897; SSE2-NEXT: pand %xmm8, %xmm1 4898; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm0 4899; SSE2-NEXT: pand %xmm8, %xmm0 4900; SSE2-NEXT: packuswb %xmm1, %xmm0 4901; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm3 4902; SSE2-NEXT: pand %xmm8, %xmm3 4903; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm2 4904; SSE2-NEXT: pand %xmm8, %xmm2 4905; SSE2-NEXT: packuswb %xmm3, %xmm2 4906; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm5 4907; SSE2-NEXT: pand %xmm8, %xmm5 4908; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm4 4909; SSE2-NEXT: pand %xmm8, %xmm4 4910; SSE2-NEXT: packuswb %xmm5, %xmm4 4911; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm7 4912; SSE2-NEXT: pand %xmm8, %xmm7 4913; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm6 4914; SSE2-NEXT: pand %xmm8, %xmm6 4915; SSE2-NEXT: packuswb %xmm7, %xmm6 4916; SSE2-NEXT: movdqa %xmm6, -{{[0-9]+}}(%rsp) 4917; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4918; SSE2-NEXT: andb $1, %al 4919; SSE2-NEXT: movb %al, 6(%rdi) 4920; SSE2-NEXT: movdqa %xmm4, -{{[0-9]+}}(%rsp) 4921; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4922; SSE2-NEXT: andb $1, %al 4923; SSE2-NEXT: movb %al, 4(%rdi) 4924; SSE2-NEXT: movdqa %xmm2, -{{[0-9]+}}(%rsp) 4925; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4926; SSE2-NEXT: andb $1, %al 4927; SSE2-NEXT: movb %al, 2(%rdi) 4928; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 4929; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4930; SSE2-NEXT: andb $1, %al 4931; SSE2-NEXT: movb %al, (%rdi) 4932; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4933; SSE2-NEXT: andb $1, %al 4934; SSE2-NEXT: movb %al, 6(%rdi) 4935; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4936; SSE2-NEXT: andb $1, %al 4937; SSE2-NEXT: movb %al, 4(%rdi) 4938; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4939; SSE2-NEXT: andb $1, %al 4940; SSE2-NEXT: movb %al, 2(%rdi) 4941; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4942; SSE2-NEXT: andb $1, %al 4943; SSE2-NEXT: movb %al, (%rdi) 4944; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4945; SSE2-NEXT: andb $1, %al 4946; SSE2-NEXT: movb %al, 6(%rdi) 4947; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4948; SSE2-NEXT: andb $1, %al 4949; SSE2-NEXT: movb %al, 4(%rdi) 4950; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4951; SSE2-NEXT: andb $1, %al 4952; SSE2-NEXT: movb %al, 2(%rdi) 4953; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4954; SSE2-NEXT: andb $1, %al 4955; SSE2-NEXT: movb %al, (%rdi) 4956; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4957; SSE2-NEXT: andb $1, %al 4958; SSE2-NEXT: movb %al, 6(%rdi) 4959; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4960; SSE2-NEXT: andb $1, %al 4961; SSE2-NEXT: movb %al, 4(%rdi) 4962; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4963; SSE2-NEXT: andb $1, %al 4964; SSE2-NEXT: movb %al, 2(%rdi) 4965; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4966; SSE2-NEXT: andb $1, %al 4967; SSE2-NEXT: movb %al, (%rdi) 4968; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4969; SSE2-NEXT: andb $1, %al 4970; SSE2-NEXT: movb %al, 6(%rdi) 4971; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4972; SSE2-NEXT: andb $1, %al 4973; SSE2-NEXT: movb %al, 4(%rdi) 4974; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4975; SSE2-NEXT: andb $1, %al 4976; SSE2-NEXT: movb %al, 2(%rdi) 4977; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4978; SSE2-NEXT: andb $1, %al 4979; SSE2-NEXT: movb %al, (%rdi) 4980; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4981; SSE2-NEXT: andb $1, %al 4982; SSE2-NEXT: movb %al, 6(%rdi) 4983; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4984; SSE2-NEXT: andb $1, %al 4985; SSE2-NEXT: movb %al, 4(%rdi) 4986; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4987; SSE2-NEXT: andb $1, %al 4988; SSE2-NEXT: movb %al, 2(%rdi) 4989; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4990; SSE2-NEXT: andb $1, %al 4991; SSE2-NEXT: movb %al, (%rdi) 4992; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4993; SSE2-NEXT: andb $1, %al 4994; SSE2-NEXT: movb %al, 6(%rdi) 4995; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4996; SSE2-NEXT: andb $1, %al 4997; SSE2-NEXT: movb %al, 4(%rdi) 4998; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4999; SSE2-NEXT: andb $1, %al 5000; SSE2-NEXT: movb %al, 2(%rdi) 5001; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5002; SSE2-NEXT: andb $1, %al 5003; SSE2-NEXT: movb %al, (%rdi) 5004; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5005; SSE2-NEXT: andb $1, %al 5006; SSE2-NEXT: movb %al, 6(%rdi) 5007; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5008; SSE2-NEXT: andb $1, %al 5009; SSE2-NEXT: movb %al, 4(%rdi) 5010; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5011; SSE2-NEXT: andb $1, %al 5012; SSE2-NEXT: movb %al, 2(%rdi) 5013; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5014; SSE2-NEXT: andb $1, %al 5015; SSE2-NEXT: movb %al, (%rdi) 5016; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5017; SSE2-NEXT: andb $1, %al 5018; SSE2-NEXT: movb %al, 6(%rdi) 5019; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5020; SSE2-NEXT: andb $1, %al 5021; SSE2-NEXT: movb %al, 4(%rdi) 5022; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5023; SSE2-NEXT: andb $1, %al 5024; SSE2-NEXT: movb %al, 2(%rdi) 5025; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5026; SSE2-NEXT: andb $1, %al 5027; SSE2-NEXT: movb %al, (%rdi) 5028; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5029; SSE2-NEXT: andb $1, %al 5030; SSE2-NEXT: movb %al, 6(%rdi) 5031; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5032; SSE2-NEXT: andb $1, %al 5033; SSE2-NEXT: movb %al, 4(%rdi) 5034; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5035; SSE2-NEXT: andb $1, %al 5036; SSE2-NEXT: movb %al, 2(%rdi) 5037; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5038; SSE2-NEXT: andb $1, %al 5039; SSE2-NEXT: movb %al, (%rdi) 5040; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5041; SSE2-NEXT: andb $1, %al 5042; SSE2-NEXT: movb %al, 6(%rdi) 5043; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5044; SSE2-NEXT: andb $1, %al 5045; SSE2-NEXT: movb %al, 4(%rdi) 5046; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5047; SSE2-NEXT: andb $1, %al 5048; SSE2-NEXT: movb %al, 2(%rdi) 5049; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5050; SSE2-NEXT: andb $1, %al 5051; SSE2-NEXT: movb %al, (%rdi) 5052; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5053; SSE2-NEXT: andb $1, %al 5054; SSE2-NEXT: movb %al, 6(%rdi) 5055; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5056; SSE2-NEXT: andb $1, %al 5057; SSE2-NEXT: movb %al, 4(%rdi) 5058; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5059; SSE2-NEXT: andb $1, %al 5060; SSE2-NEXT: movb %al, 2(%rdi) 5061; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5062; SSE2-NEXT: andb $1, %al 5063; SSE2-NEXT: movb %al, (%rdi) 5064; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5065; SSE2-NEXT: andb $1, %al 5066; SSE2-NEXT: movb %al, 6(%rdi) 5067; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5068; SSE2-NEXT: andb $1, %al 5069; SSE2-NEXT: movb %al, 4(%rdi) 5070; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5071; SSE2-NEXT: andb $1, %al 5072; SSE2-NEXT: movb %al, 2(%rdi) 5073; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5074; SSE2-NEXT: andb $1, %al 5075; SSE2-NEXT: movb %al, (%rdi) 5076; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5077; SSE2-NEXT: andb $1, %al 5078; SSE2-NEXT: movb %al, 6(%rdi) 5079; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5080; SSE2-NEXT: andb $1, %al 5081; SSE2-NEXT: movb %al, 4(%rdi) 5082; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5083; SSE2-NEXT: andb $1, %al 5084; SSE2-NEXT: movb %al, 2(%rdi) 5085; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5086; SSE2-NEXT: andb $1, %al 5087; SSE2-NEXT: movb %al, (%rdi) 5088; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5089; SSE2-NEXT: andb $1, %al 5090; SSE2-NEXT: movb %al, 6(%rdi) 5091; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5092; SSE2-NEXT: andb $1, %al 5093; SSE2-NEXT: movb %al, 4(%rdi) 5094; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5095; SSE2-NEXT: andb $1, %al 5096; SSE2-NEXT: movb %al, 2(%rdi) 5097; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5098; SSE2-NEXT: andb $1, %al 5099; SSE2-NEXT: movb %al, (%rdi) 5100; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5101; SSE2-NEXT: andb $1, %al 5102; SSE2-NEXT: movb %al, 6(%rdi) 5103; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5104; SSE2-NEXT: andb $1, %al 5105; SSE2-NEXT: movb %al, 4(%rdi) 5106; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5107; SSE2-NEXT: andb $1, %al 5108; SSE2-NEXT: movb %al, 2(%rdi) 5109; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5110; SSE2-NEXT: andb $1, %al 5111; SSE2-NEXT: movb %al, (%rdi) 5112; SSE2-NEXT: movq %rdi, %rax 5113; SSE2-NEXT: retq 5114; 5115; SSE42-LABEL: test_cmp_v64i16: 5116; SSE42: # BB#0: 5117; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm0 5118; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm1 5119; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm2 5120; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm3 5121; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm4 5122; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm5 5123; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm6 5124; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm7 5125; SSE42-NEXT: pextrb $14, %xmm7, %eax 5126; SSE42-NEXT: andb $1, %al 5127; SSE42-NEXT: movb %al, 6(%rdi) 5128; SSE42-NEXT: pextrb $12, %xmm7, %eax 5129; SSE42-NEXT: andb $1, %al 5130; SSE42-NEXT: movb %al, 6(%rdi) 5131; SSE42-NEXT: pextrb $10, %xmm7, %eax 5132; SSE42-NEXT: andb $1, %al 5133; SSE42-NEXT: movb %al, 6(%rdi) 5134; SSE42-NEXT: pextrb $8, %xmm7, %eax 5135; SSE42-NEXT: andb $1, %al 5136; SSE42-NEXT: movb %al, 6(%rdi) 5137; SSE42-NEXT: pextrb $6, %xmm7, %eax 5138; SSE42-NEXT: andb $1, %al 5139; SSE42-NEXT: movb %al, 6(%rdi) 5140; SSE42-NEXT: pextrb $4, %xmm7, %eax 5141; SSE42-NEXT: andb $1, %al 5142; SSE42-NEXT: movb %al, 6(%rdi) 5143; SSE42-NEXT: pextrb $2, %xmm7, %eax 5144; SSE42-NEXT: andb $1, %al 5145; SSE42-NEXT: movb %al, 6(%rdi) 5146; SSE42-NEXT: pextrb $0, %xmm7, %eax 5147; SSE42-NEXT: andb $1, %al 5148; SSE42-NEXT: movb %al, 6(%rdi) 5149; SSE42-NEXT: pextrb $14, %xmm6, %eax 5150; SSE42-NEXT: andb $1, %al 5151; SSE42-NEXT: movb %al, 6(%rdi) 5152; SSE42-NEXT: pextrb $12, %xmm6, %eax 5153; SSE42-NEXT: andb $1, %al 5154; SSE42-NEXT: movb %al, 6(%rdi) 5155; SSE42-NEXT: pextrb $10, %xmm6, %eax 5156; SSE42-NEXT: andb $1, %al 5157; SSE42-NEXT: movb %al, 6(%rdi) 5158; SSE42-NEXT: pextrb $8, %xmm6, %eax 5159; SSE42-NEXT: andb $1, %al 5160; SSE42-NEXT: movb %al, 6(%rdi) 5161; SSE42-NEXT: pextrb $6, %xmm6, %eax 5162; SSE42-NEXT: andb $1, %al 5163; SSE42-NEXT: movb %al, 6(%rdi) 5164; SSE42-NEXT: pextrb $4, %xmm6, %eax 5165; SSE42-NEXT: andb $1, %al 5166; SSE42-NEXT: movb %al, 6(%rdi) 5167; SSE42-NEXT: pextrb $2, %xmm6, %eax 5168; SSE42-NEXT: andb $1, %al 5169; SSE42-NEXT: movb %al, 6(%rdi) 5170; SSE42-NEXT: pextrb $0, %xmm6, %eax 5171; SSE42-NEXT: andb $1, %al 5172; SSE42-NEXT: movb %al, 6(%rdi) 5173; SSE42-NEXT: pextrb $14, %xmm5, %eax 5174; SSE42-NEXT: andb $1, %al 5175; SSE42-NEXT: movb %al, 4(%rdi) 5176; SSE42-NEXT: pextrb $12, %xmm5, %eax 5177; SSE42-NEXT: andb $1, %al 5178; SSE42-NEXT: movb %al, 4(%rdi) 5179; SSE42-NEXT: pextrb $10, %xmm5, %eax 5180; SSE42-NEXT: andb $1, %al 5181; SSE42-NEXT: movb %al, 4(%rdi) 5182; SSE42-NEXT: pextrb $8, %xmm5, %eax 5183; SSE42-NEXT: andb $1, %al 5184; SSE42-NEXT: movb %al, 4(%rdi) 5185; SSE42-NEXT: pextrb $6, %xmm5, %eax 5186; SSE42-NEXT: andb $1, %al 5187; SSE42-NEXT: movb %al, 4(%rdi) 5188; SSE42-NEXT: pextrb $4, %xmm5, %eax 5189; SSE42-NEXT: andb $1, %al 5190; SSE42-NEXT: movb %al, 4(%rdi) 5191; SSE42-NEXT: pextrb $2, %xmm5, %eax 5192; SSE42-NEXT: andb $1, %al 5193; SSE42-NEXT: movb %al, 4(%rdi) 5194; SSE42-NEXT: pextrb $0, %xmm5, %eax 5195; SSE42-NEXT: andb $1, %al 5196; SSE42-NEXT: movb %al, 4(%rdi) 5197; SSE42-NEXT: pextrb $14, %xmm4, %eax 5198; SSE42-NEXT: andb $1, %al 5199; SSE42-NEXT: movb %al, 4(%rdi) 5200; SSE42-NEXT: pextrb $12, %xmm4, %eax 5201; SSE42-NEXT: andb $1, %al 5202; SSE42-NEXT: movb %al, 4(%rdi) 5203; SSE42-NEXT: pextrb $10, %xmm4, %eax 5204; SSE42-NEXT: andb $1, %al 5205; SSE42-NEXT: movb %al, 4(%rdi) 5206; SSE42-NEXT: pextrb $8, %xmm4, %eax 5207; SSE42-NEXT: andb $1, %al 5208; SSE42-NEXT: movb %al, 4(%rdi) 5209; SSE42-NEXT: pextrb $6, %xmm4, %eax 5210; SSE42-NEXT: andb $1, %al 5211; SSE42-NEXT: movb %al, 4(%rdi) 5212; SSE42-NEXT: pextrb $4, %xmm4, %eax 5213; SSE42-NEXT: andb $1, %al 5214; SSE42-NEXT: movb %al, 4(%rdi) 5215; SSE42-NEXT: pextrb $2, %xmm4, %eax 5216; SSE42-NEXT: andb $1, %al 5217; SSE42-NEXT: movb %al, 4(%rdi) 5218; SSE42-NEXT: pextrb $0, %xmm4, %eax 5219; SSE42-NEXT: andb $1, %al 5220; SSE42-NEXT: movb %al, 4(%rdi) 5221; SSE42-NEXT: pextrb $14, %xmm3, %eax 5222; SSE42-NEXT: andb $1, %al 5223; SSE42-NEXT: movb %al, 2(%rdi) 5224; SSE42-NEXT: pextrb $12, %xmm3, %eax 5225; SSE42-NEXT: andb $1, %al 5226; SSE42-NEXT: movb %al, 2(%rdi) 5227; SSE42-NEXT: pextrb $10, %xmm3, %eax 5228; SSE42-NEXT: andb $1, %al 5229; SSE42-NEXT: movb %al, 2(%rdi) 5230; SSE42-NEXT: pextrb $8, %xmm3, %eax 5231; SSE42-NEXT: andb $1, %al 5232; SSE42-NEXT: movb %al, 2(%rdi) 5233; SSE42-NEXT: pextrb $6, %xmm3, %eax 5234; SSE42-NEXT: andb $1, %al 5235; SSE42-NEXT: movb %al, 2(%rdi) 5236; SSE42-NEXT: pextrb $4, %xmm3, %eax 5237; SSE42-NEXT: andb $1, %al 5238; SSE42-NEXT: movb %al, 2(%rdi) 5239; SSE42-NEXT: pextrb $2, %xmm3, %eax 5240; SSE42-NEXT: andb $1, %al 5241; SSE42-NEXT: movb %al, 2(%rdi) 5242; SSE42-NEXT: pextrb $0, %xmm3, %eax 5243; SSE42-NEXT: andb $1, %al 5244; SSE42-NEXT: movb %al, 2(%rdi) 5245; SSE42-NEXT: pextrb $14, %xmm2, %eax 5246; SSE42-NEXT: andb $1, %al 5247; SSE42-NEXT: movb %al, 2(%rdi) 5248; SSE42-NEXT: pextrb $12, %xmm2, %eax 5249; SSE42-NEXT: andb $1, %al 5250; SSE42-NEXT: movb %al, 2(%rdi) 5251; SSE42-NEXT: pextrb $10, %xmm2, %eax 5252; SSE42-NEXT: andb $1, %al 5253; SSE42-NEXT: movb %al, 2(%rdi) 5254; SSE42-NEXT: pextrb $8, %xmm2, %eax 5255; SSE42-NEXT: andb $1, %al 5256; SSE42-NEXT: movb %al, 2(%rdi) 5257; SSE42-NEXT: pextrb $6, %xmm2, %eax 5258; SSE42-NEXT: andb $1, %al 5259; SSE42-NEXT: movb %al, 2(%rdi) 5260; SSE42-NEXT: pextrb $4, %xmm2, %eax 5261; SSE42-NEXT: andb $1, %al 5262; SSE42-NEXT: movb %al, 2(%rdi) 5263; SSE42-NEXT: pextrb $2, %xmm2, %eax 5264; SSE42-NEXT: andb $1, %al 5265; SSE42-NEXT: movb %al, 2(%rdi) 5266; SSE42-NEXT: pextrb $0, %xmm2, %eax 5267; SSE42-NEXT: andb $1, %al 5268; SSE42-NEXT: movb %al, 2(%rdi) 5269; SSE42-NEXT: pextrb $14, %xmm1, %eax 5270; SSE42-NEXT: andb $1, %al 5271; SSE42-NEXT: movb %al, (%rdi) 5272; SSE42-NEXT: pextrb $12, %xmm1, %eax 5273; SSE42-NEXT: andb $1, %al 5274; SSE42-NEXT: movb %al, (%rdi) 5275; SSE42-NEXT: pextrb $10, %xmm1, %eax 5276; SSE42-NEXT: andb $1, %al 5277; SSE42-NEXT: movb %al, (%rdi) 5278; SSE42-NEXT: pextrb $8, %xmm1, %eax 5279; SSE42-NEXT: andb $1, %al 5280; SSE42-NEXT: movb %al, (%rdi) 5281; SSE42-NEXT: pextrb $6, %xmm1, %eax 5282; SSE42-NEXT: andb $1, %al 5283; SSE42-NEXT: movb %al, (%rdi) 5284; SSE42-NEXT: pextrb $4, %xmm1, %eax 5285; SSE42-NEXT: andb $1, %al 5286; SSE42-NEXT: movb %al, (%rdi) 5287; SSE42-NEXT: pextrb $2, %xmm1, %eax 5288; SSE42-NEXT: andb $1, %al 5289; SSE42-NEXT: movb %al, (%rdi) 5290; SSE42-NEXT: pextrb $0, %xmm1, %eax 5291; SSE42-NEXT: andb $1, %al 5292; SSE42-NEXT: movb %al, (%rdi) 5293; SSE42-NEXT: pextrb $14, %xmm0, %eax 5294; SSE42-NEXT: andb $1, %al 5295; SSE42-NEXT: movb %al, (%rdi) 5296; SSE42-NEXT: pextrb $12, %xmm0, %eax 5297; SSE42-NEXT: andb $1, %al 5298; SSE42-NEXT: movb %al, (%rdi) 5299; SSE42-NEXT: pextrb $10, %xmm0, %eax 5300; SSE42-NEXT: andb $1, %al 5301; SSE42-NEXT: movb %al, (%rdi) 5302; SSE42-NEXT: pextrb $8, %xmm0, %eax 5303; SSE42-NEXT: andb $1, %al 5304; SSE42-NEXT: movb %al, (%rdi) 5305; SSE42-NEXT: pextrb $6, %xmm0, %eax 5306; SSE42-NEXT: andb $1, %al 5307; SSE42-NEXT: movb %al, (%rdi) 5308; SSE42-NEXT: pextrb $4, %xmm0, %eax 5309; SSE42-NEXT: andb $1, %al 5310; SSE42-NEXT: movb %al, (%rdi) 5311; SSE42-NEXT: pextrb $2, %xmm0, %eax 5312; SSE42-NEXT: andb $1, %al 5313; SSE42-NEXT: movb %al, (%rdi) 5314; SSE42-NEXT: pextrb $0, %xmm0, %eax 5315; SSE42-NEXT: andb $1, %al 5316; SSE42-NEXT: movb %al, (%rdi) 5317; SSE42-NEXT: movq %rdi, %rax 5318; SSE42-NEXT: retq 5319; 5320; AVX1-LABEL: test_cmp_v64i16: 5321; AVX1: # BB#0: 5322; AVX1-NEXT: vextractf128 $1, %ymm4, %xmm8 5323; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm9 5324; AVX1-NEXT: vpcmpgtw %xmm8, %xmm9, %xmm8 5325; AVX1-NEXT: vpcmpgtw %xmm4, %xmm0, %xmm0 5326; AVX1-NEXT: vpacksswb %xmm8, %xmm0, %xmm8 5327; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm4 5328; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm0 5329; AVX1-NEXT: vpcmpgtw %xmm4, %xmm0, %xmm0 5330; AVX1-NEXT: vpcmpgtw %xmm5, %xmm1, %xmm1 5331; AVX1-NEXT: vpacksswb %xmm0, %xmm1, %xmm1 5332; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm0 5333; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm4 5334; AVX1-NEXT: vpcmpgtw %xmm0, %xmm4, %xmm0 5335; AVX1-NEXT: vpcmpgtw %xmm6, %xmm2, %xmm2 5336; AVX1-NEXT: vpacksswb %xmm0, %xmm2, %xmm2 5337; AVX1-NEXT: vextractf128 $1, %ymm7, %xmm0 5338; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4 5339; AVX1-NEXT: vpcmpgtw %xmm0, %xmm4, %xmm0 5340; AVX1-NEXT: vpcmpgtw %xmm7, %xmm3, %xmm3 5341; AVX1-NEXT: vpacksswb %xmm0, %xmm3, %xmm3 5342; AVX1-NEXT: vpextrb $15, %xmm3, %eax 5343; AVX1-NEXT: andb $1, %al 5344; AVX1-NEXT: movb %al, 4(%rdi) 5345; AVX1-NEXT: vpextrb $14, %xmm3, %eax 5346; AVX1-NEXT: andb $1, %al 5347; AVX1-NEXT: movb %al, 4(%rdi) 5348; AVX1-NEXT: vpextrb $13, %xmm3, %eax 5349; AVX1-NEXT: andb $1, %al 5350; AVX1-NEXT: movb %al, 4(%rdi) 5351; AVX1-NEXT: vpextrb $12, %xmm3, %eax 5352; AVX1-NEXT: andb $1, %al 5353; AVX1-NEXT: movb %al, 4(%rdi) 5354; AVX1-NEXT: vpextrb $11, %xmm3, %eax 5355; AVX1-NEXT: andb $1, %al 5356; AVX1-NEXT: movb %al, 4(%rdi) 5357; AVX1-NEXT: vpextrb $10, %xmm3, %eax 5358; AVX1-NEXT: andb $1, %al 5359; AVX1-NEXT: movb %al, 4(%rdi) 5360; AVX1-NEXT: vpextrb $9, %xmm3, %eax 5361; AVX1-NEXT: andb $1, %al 5362; AVX1-NEXT: movb %al, 4(%rdi) 5363; AVX1-NEXT: vpextrb $8, %xmm3, %eax 5364; AVX1-NEXT: andb $1, %al 5365; AVX1-NEXT: movb %al, 4(%rdi) 5366; AVX1-NEXT: vpextrb $7, %xmm3, %eax 5367; AVX1-NEXT: andb $1, %al 5368; AVX1-NEXT: movb %al, 4(%rdi) 5369; AVX1-NEXT: vpextrb $6, %xmm3, %eax 5370; AVX1-NEXT: andb $1, %al 5371; AVX1-NEXT: movb %al, 4(%rdi) 5372; AVX1-NEXT: vpextrb $5, %xmm3, %eax 5373; AVX1-NEXT: andb $1, %al 5374; AVX1-NEXT: movb %al, 4(%rdi) 5375; AVX1-NEXT: vpextrb $4, %xmm3, %eax 5376; AVX1-NEXT: andb $1, %al 5377; AVX1-NEXT: movb %al, 4(%rdi) 5378; AVX1-NEXT: vpextrb $3, %xmm3, %eax 5379; AVX1-NEXT: andb $1, %al 5380; AVX1-NEXT: movb %al, 4(%rdi) 5381; AVX1-NEXT: vpextrb $2, %xmm3, %eax 5382; AVX1-NEXT: andb $1, %al 5383; AVX1-NEXT: movb %al, 4(%rdi) 5384; AVX1-NEXT: vpextrb $1, %xmm3, %eax 5385; AVX1-NEXT: andb $1, %al 5386; AVX1-NEXT: movb %al, 4(%rdi) 5387; AVX1-NEXT: vpextrb $0, %xmm3, %eax 5388; AVX1-NEXT: andb $1, %al 5389; AVX1-NEXT: movb %al, 4(%rdi) 5390; AVX1-NEXT: vpextrb $15, %xmm2, %eax 5391; AVX1-NEXT: andb $1, %al 5392; AVX1-NEXT: movb %al, 4(%rdi) 5393; AVX1-NEXT: vpextrb $14, %xmm2, %eax 5394; AVX1-NEXT: andb $1, %al 5395; AVX1-NEXT: movb %al, 4(%rdi) 5396; AVX1-NEXT: vpextrb $13, %xmm2, %eax 5397; AVX1-NEXT: andb $1, %al 5398; AVX1-NEXT: movb %al, 4(%rdi) 5399; AVX1-NEXT: vpextrb $12, %xmm2, %eax 5400; AVX1-NEXT: andb $1, %al 5401; AVX1-NEXT: movb %al, 4(%rdi) 5402; AVX1-NEXT: vpextrb $11, %xmm2, %eax 5403; AVX1-NEXT: andb $1, %al 5404; AVX1-NEXT: movb %al, 4(%rdi) 5405; AVX1-NEXT: vpextrb $10, %xmm2, %eax 5406; AVX1-NEXT: andb $1, %al 5407; AVX1-NEXT: movb %al, 4(%rdi) 5408; AVX1-NEXT: vpextrb $9, %xmm2, %eax 5409; AVX1-NEXT: andb $1, %al 5410; AVX1-NEXT: movb %al, 4(%rdi) 5411; AVX1-NEXT: vpextrb $8, %xmm2, %eax 5412; AVX1-NEXT: andb $1, %al 5413; AVX1-NEXT: movb %al, 4(%rdi) 5414; AVX1-NEXT: vpextrb $7, %xmm2, %eax 5415; AVX1-NEXT: andb $1, %al 5416; AVX1-NEXT: movb %al, 4(%rdi) 5417; AVX1-NEXT: vpextrb $6, %xmm2, %eax 5418; AVX1-NEXT: andb $1, %al 5419; AVX1-NEXT: movb %al, 4(%rdi) 5420; AVX1-NEXT: vpextrb $5, %xmm2, %eax 5421; AVX1-NEXT: andb $1, %al 5422; AVX1-NEXT: movb %al, 4(%rdi) 5423; AVX1-NEXT: vpextrb $4, %xmm2, %eax 5424; AVX1-NEXT: andb $1, %al 5425; AVX1-NEXT: movb %al, 4(%rdi) 5426; AVX1-NEXT: vpextrb $3, %xmm2, %eax 5427; AVX1-NEXT: andb $1, %al 5428; AVX1-NEXT: movb %al, 4(%rdi) 5429; AVX1-NEXT: vpextrb $2, %xmm2, %eax 5430; AVX1-NEXT: andb $1, %al 5431; AVX1-NEXT: movb %al, 4(%rdi) 5432; AVX1-NEXT: vpextrb $1, %xmm2, %eax 5433; AVX1-NEXT: andb $1, %al 5434; AVX1-NEXT: movb %al, 4(%rdi) 5435; AVX1-NEXT: vpextrb $0, %xmm2, %eax 5436; AVX1-NEXT: andb $1, %al 5437; AVX1-NEXT: movb %al, 4(%rdi) 5438; AVX1-NEXT: vpextrb $15, %xmm1, %eax 5439; AVX1-NEXT: andb $1, %al 5440; AVX1-NEXT: movb %al, (%rdi) 5441; AVX1-NEXT: vpextrb $14, %xmm1, %eax 5442; AVX1-NEXT: andb $1, %al 5443; AVX1-NEXT: movb %al, (%rdi) 5444; AVX1-NEXT: vpextrb $13, %xmm1, %eax 5445; AVX1-NEXT: andb $1, %al 5446; AVX1-NEXT: movb %al, (%rdi) 5447; AVX1-NEXT: vpextrb $12, %xmm1, %eax 5448; AVX1-NEXT: andb $1, %al 5449; AVX1-NEXT: movb %al, (%rdi) 5450; AVX1-NEXT: vpextrb $11, %xmm1, %eax 5451; AVX1-NEXT: andb $1, %al 5452; AVX1-NEXT: movb %al, (%rdi) 5453; AVX1-NEXT: vpextrb $10, %xmm1, %eax 5454; AVX1-NEXT: andb $1, %al 5455; AVX1-NEXT: movb %al, (%rdi) 5456; AVX1-NEXT: vpextrb $9, %xmm1, %eax 5457; AVX1-NEXT: andb $1, %al 5458; AVX1-NEXT: movb %al, (%rdi) 5459; AVX1-NEXT: vpextrb $8, %xmm1, %eax 5460; AVX1-NEXT: andb $1, %al 5461; AVX1-NEXT: movb %al, (%rdi) 5462; AVX1-NEXT: vpextrb $7, %xmm1, %eax 5463; AVX1-NEXT: andb $1, %al 5464; AVX1-NEXT: movb %al, (%rdi) 5465; AVX1-NEXT: vpextrb $6, %xmm1, %eax 5466; AVX1-NEXT: andb $1, %al 5467; AVX1-NEXT: movb %al, (%rdi) 5468; AVX1-NEXT: vpextrb $5, %xmm1, %eax 5469; AVX1-NEXT: andb $1, %al 5470; AVX1-NEXT: movb %al, (%rdi) 5471; AVX1-NEXT: vpextrb $4, %xmm1, %eax 5472; AVX1-NEXT: andb $1, %al 5473; AVX1-NEXT: movb %al, (%rdi) 5474; AVX1-NEXT: vpextrb $3, %xmm1, %eax 5475; AVX1-NEXT: andb $1, %al 5476; AVX1-NEXT: movb %al, (%rdi) 5477; AVX1-NEXT: vpextrb $2, %xmm1, %eax 5478; AVX1-NEXT: andb $1, %al 5479; AVX1-NEXT: movb %al, (%rdi) 5480; AVX1-NEXT: vpextrb $1, %xmm1, %eax 5481; AVX1-NEXT: andb $1, %al 5482; AVX1-NEXT: movb %al, (%rdi) 5483; AVX1-NEXT: vpextrb $0, %xmm1, %eax 5484; AVX1-NEXT: andb $1, %al 5485; AVX1-NEXT: movb %al, (%rdi) 5486; AVX1-NEXT: vpextrb $15, %xmm8, %eax 5487; AVX1-NEXT: andb $1, %al 5488; AVX1-NEXT: movb %al, (%rdi) 5489; AVX1-NEXT: vpextrb $14, %xmm8, %eax 5490; AVX1-NEXT: andb $1, %al 5491; AVX1-NEXT: movb %al, (%rdi) 5492; AVX1-NEXT: vpextrb $13, %xmm8, %eax 5493; AVX1-NEXT: andb $1, %al 5494; AVX1-NEXT: movb %al, (%rdi) 5495; AVX1-NEXT: vpextrb $12, %xmm8, %eax 5496; AVX1-NEXT: andb $1, %al 5497; AVX1-NEXT: movb %al, (%rdi) 5498; AVX1-NEXT: vpextrb $11, %xmm8, %eax 5499; AVX1-NEXT: andb $1, %al 5500; AVX1-NEXT: movb %al, (%rdi) 5501; AVX1-NEXT: vpextrb $10, %xmm8, %eax 5502; AVX1-NEXT: andb $1, %al 5503; AVX1-NEXT: movb %al, (%rdi) 5504; AVX1-NEXT: vpextrb $9, %xmm8, %eax 5505; AVX1-NEXT: andb $1, %al 5506; AVX1-NEXT: movb %al, (%rdi) 5507; AVX1-NEXT: vpextrb $8, %xmm8, %eax 5508; AVX1-NEXT: andb $1, %al 5509; AVX1-NEXT: movb %al, (%rdi) 5510; AVX1-NEXT: vpextrb $7, %xmm8, %eax 5511; AVX1-NEXT: andb $1, %al 5512; AVX1-NEXT: movb %al, (%rdi) 5513; AVX1-NEXT: vpextrb $6, %xmm8, %eax 5514; AVX1-NEXT: andb $1, %al 5515; AVX1-NEXT: movb %al, (%rdi) 5516; AVX1-NEXT: vpextrb $5, %xmm8, %eax 5517; AVX1-NEXT: andb $1, %al 5518; AVX1-NEXT: movb %al, (%rdi) 5519; AVX1-NEXT: vpextrb $4, %xmm8, %eax 5520; AVX1-NEXT: andb $1, %al 5521; AVX1-NEXT: movb %al, (%rdi) 5522; AVX1-NEXT: vpextrb $3, %xmm8, %eax 5523; AVX1-NEXT: andb $1, %al 5524; AVX1-NEXT: movb %al, (%rdi) 5525; AVX1-NEXT: vpextrb $2, %xmm8, %eax 5526; AVX1-NEXT: andb $1, %al 5527; AVX1-NEXT: movb %al, (%rdi) 5528; AVX1-NEXT: vpextrb $1, %xmm8, %eax 5529; AVX1-NEXT: andb $1, %al 5530; AVX1-NEXT: movb %al, (%rdi) 5531; AVX1-NEXT: vpextrb $0, %xmm8, %eax 5532; AVX1-NEXT: andb $1, %al 5533; AVX1-NEXT: movb %al, (%rdi) 5534; AVX1-NEXT: movq %rdi, %rax 5535; AVX1-NEXT: vzeroupper 5536; AVX1-NEXT: retq 5537; 5538; AVX2-LABEL: test_cmp_v64i16: 5539; AVX2: # BB#0: 5540; AVX2-NEXT: vpcmpgtw %ymm4, %ymm0, %ymm0 5541; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm4 5542; AVX2-NEXT: vpacksswb %xmm4, %xmm0, %xmm0 5543; AVX2-NEXT: vpcmpgtw %ymm5, %ymm1, %ymm1 5544; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm4 5545; AVX2-NEXT: vpacksswb %xmm4, %xmm1, %xmm1 5546; AVX2-NEXT: vpcmpgtw %ymm6, %ymm2, %ymm2 5547; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm4 5548; AVX2-NEXT: vpacksswb %xmm4, %xmm2, %xmm2 5549; AVX2-NEXT: vpcmpgtw %ymm7, %ymm3, %ymm3 5550; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4 5551; AVX2-NEXT: vpacksswb %xmm4, %xmm3, %xmm3 5552; AVX2-NEXT: vpextrb $15, %xmm3, %eax 5553; AVX2-NEXT: andb $1, %al 5554; AVX2-NEXT: movb %al, 4(%rdi) 5555; AVX2-NEXT: vpextrb $14, %xmm3, %eax 5556; AVX2-NEXT: andb $1, %al 5557; AVX2-NEXT: movb %al, 4(%rdi) 5558; AVX2-NEXT: vpextrb $13, %xmm3, %eax 5559; AVX2-NEXT: andb $1, %al 5560; AVX2-NEXT: movb %al, 4(%rdi) 5561; AVX2-NEXT: vpextrb $12, %xmm3, %eax 5562; AVX2-NEXT: andb $1, %al 5563; AVX2-NEXT: movb %al, 4(%rdi) 5564; AVX2-NEXT: vpextrb $11, %xmm3, %eax 5565; AVX2-NEXT: andb $1, %al 5566; AVX2-NEXT: movb %al, 4(%rdi) 5567; AVX2-NEXT: vpextrb $10, %xmm3, %eax 5568; AVX2-NEXT: andb $1, %al 5569; AVX2-NEXT: movb %al, 4(%rdi) 5570; AVX2-NEXT: vpextrb $9, %xmm3, %eax 5571; AVX2-NEXT: andb $1, %al 5572; AVX2-NEXT: movb %al, 4(%rdi) 5573; AVX2-NEXT: vpextrb $8, %xmm3, %eax 5574; AVX2-NEXT: andb $1, %al 5575; AVX2-NEXT: movb %al, 4(%rdi) 5576; AVX2-NEXT: vpextrb $7, %xmm3, %eax 5577; AVX2-NEXT: andb $1, %al 5578; AVX2-NEXT: movb %al, 4(%rdi) 5579; AVX2-NEXT: vpextrb $6, %xmm3, %eax 5580; AVX2-NEXT: andb $1, %al 5581; AVX2-NEXT: movb %al, 4(%rdi) 5582; AVX2-NEXT: vpextrb $5, %xmm3, %eax 5583; AVX2-NEXT: andb $1, %al 5584; AVX2-NEXT: movb %al, 4(%rdi) 5585; AVX2-NEXT: vpextrb $4, %xmm3, %eax 5586; AVX2-NEXT: andb $1, %al 5587; AVX2-NEXT: movb %al, 4(%rdi) 5588; AVX2-NEXT: vpextrb $3, %xmm3, %eax 5589; AVX2-NEXT: andb $1, %al 5590; AVX2-NEXT: movb %al, 4(%rdi) 5591; AVX2-NEXT: vpextrb $2, %xmm3, %eax 5592; AVX2-NEXT: andb $1, %al 5593; AVX2-NEXT: movb %al, 4(%rdi) 5594; AVX2-NEXT: vpextrb $1, %xmm3, %eax 5595; AVX2-NEXT: andb $1, %al 5596; AVX2-NEXT: movb %al, 4(%rdi) 5597; AVX2-NEXT: vpextrb $0, %xmm3, %eax 5598; AVX2-NEXT: andb $1, %al 5599; AVX2-NEXT: movb %al, 4(%rdi) 5600; AVX2-NEXT: vpextrb $15, %xmm2, %eax 5601; AVX2-NEXT: andb $1, %al 5602; AVX2-NEXT: movb %al, 4(%rdi) 5603; AVX2-NEXT: vpextrb $14, %xmm2, %eax 5604; AVX2-NEXT: andb $1, %al 5605; AVX2-NEXT: movb %al, 4(%rdi) 5606; AVX2-NEXT: vpextrb $13, %xmm2, %eax 5607; AVX2-NEXT: andb $1, %al 5608; AVX2-NEXT: movb %al, 4(%rdi) 5609; AVX2-NEXT: vpextrb $12, %xmm2, %eax 5610; AVX2-NEXT: andb $1, %al 5611; AVX2-NEXT: movb %al, 4(%rdi) 5612; AVX2-NEXT: vpextrb $11, %xmm2, %eax 5613; AVX2-NEXT: andb $1, %al 5614; AVX2-NEXT: movb %al, 4(%rdi) 5615; AVX2-NEXT: vpextrb $10, %xmm2, %eax 5616; AVX2-NEXT: andb $1, %al 5617; AVX2-NEXT: movb %al, 4(%rdi) 5618; AVX2-NEXT: vpextrb $9, %xmm2, %eax 5619; AVX2-NEXT: andb $1, %al 5620; AVX2-NEXT: movb %al, 4(%rdi) 5621; AVX2-NEXT: vpextrb $8, %xmm2, %eax 5622; AVX2-NEXT: andb $1, %al 5623; AVX2-NEXT: movb %al, 4(%rdi) 5624; AVX2-NEXT: vpextrb $7, %xmm2, %eax 5625; AVX2-NEXT: andb $1, %al 5626; AVX2-NEXT: movb %al, 4(%rdi) 5627; AVX2-NEXT: vpextrb $6, %xmm2, %eax 5628; AVX2-NEXT: andb $1, %al 5629; AVX2-NEXT: movb %al, 4(%rdi) 5630; AVX2-NEXT: vpextrb $5, %xmm2, %eax 5631; AVX2-NEXT: andb $1, %al 5632; AVX2-NEXT: movb %al, 4(%rdi) 5633; AVX2-NEXT: vpextrb $4, %xmm2, %eax 5634; AVX2-NEXT: andb $1, %al 5635; AVX2-NEXT: movb %al, 4(%rdi) 5636; AVX2-NEXT: vpextrb $3, %xmm2, %eax 5637; AVX2-NEXT: andb $1, %al 5638; AVX2-NEXT: movb %al, 4(%rdi) 5639; AVX2-NEXT: vpextrb $2, %xmm2, %eax 5640; AVX2-NEXT: andb $1, %al 5641; AVX2-NEXT: movb %al, 4(%rdi) 5642; AVX2-NEXT: vpextrb $1, %xmm2, %eax 5643; AVX2-NEXT: andb $1, %al 5644; AVX2-NEXT: movb %al, 4(%rdi) 5645; AVX2-NEXT: vpextrb $0, %xmm2, %eax 5646; AVX2-NEXT: andb $1, %al 5647; AVX2-NEXT: movb %al, 4(%rdi) 5648; AVX2-NEXT: vpextrb $15, %xmm1, %eax 5649; AVX2-NEXT: andb $1, %al 5650; AVX2-NEXT: movb %al, (%rdi) 5651; AVX2-NEXT: vpextrb $14, %xmm1, %eax 5652; AVX2-NEXT: andb $1, %al 5653; AVX2-NEXT: movb %al, (%rdi) 5654; AVX2-NEXT: vpextrb $13, %xmm1, %eax 5655; AVX2-NEXT: andb $1, %al 5656; AVX2-NEXT: movb %al, (%rdi) 5657; AVX2-NEXT: vpextrb $12, %xmm1, %eax 5658; AVX2-NEXT: andb $1, %al 5659; AVX2-NEXT: movb %al, (%rdi) 5660; AVX2-NEXT: vpextrb $11, %xmm1, %eax 5661; AVX2-NEXT: andb $1, %al 5662; AVX2-NEXT: movb %al, (%rdi) 5663; AVX2-NEXT: vpextrb $10, %xmm1, %eax 5664; AVX2-NEXT: andb $1, %al 5665; AVX2-NEXT: movb %al, (%rdi) 5666; AVX2-NEXT: vpextrb $9, %xmm1, %eax 5667; AVX2-NEXT: andb $1, %al 5668; AVX2-NEXT: movb %al, (%rdi) 5669; AVX2-NEXT: vpextrb $8, %xmm1, %eax 5670; AVX2-NEXT: andb $1, %al 5671; AVX2-NEXT: movb %al, (%rdi) 5672; AVX2-NEXT: vpextrb $7, %xmm1, %eax 5673; AVX2-NEXT: andb $1, %al 5674; AVX2-NEXT: movb %al, (%rdi) 5675; AVX2-NEXT: vpextrb $6, %xmm1, %eax 5676; AVX2-NEXT: andb $1, %al 5677; AVX2-NEXT: movb %al, (%rdi) 5678; AVX2-NEXT: vpextrb $5, %xmm1, %eax 5679; AVX2-NEXT: andb $1, %al 5680; AVX2-NEXT: movb %al, (%rdi) 5681; AVX2-NEXT: vpextrb $4, %xmm1, %eax 5682; AVX2-NEXT: andb $1, %al 5683; AVX2-NEXT: movb %al, (%rdi) 5684; AVX2-NEXT: vpextrb $3, %xmm1, %eax 5685; AVX2-NEXT: andb $1, %al 5686; AVX2-NEXT: movb %al, (%rdi) 5687; AVX2-NEXT: vpextrb $2, %xmm1, %eax 5688; AVX2-NEXT: andb $1, %al 5689; AVX2-NEXT: movb %al, (%rdi) 5690; AVX2-NEXT: vpextrb $1, %xmm1, %eax 5691; AVX2-NEXT: andb $1, %al 5692; AVX2-NEXT: movb %al, (%rdi) 5693; AVX2-NEXT: vpextrb $0, %xmm1, %eax 5694; AVX2-NEXT: andb $1, %al 5695; AVX2-NEXT: movb %al, (%rdi) 5696; AVX2-NEXT: vpextrb $15, %xmm0, %eax 5697; AVX2-NEXT: andb $1, %al 5698; AVX2-NEXT: movb %al, (%rdi) 5699; AVX2-NEXT: vpextrb $14, %xmm0, %eax 5700; AVX2-NEXT: andb $1, %al 5701; AVX2-NEXT: movb %al, (%rdi) 5702; AVX2-NEXT: vpextrb $13, %xmm0, %eax 5703; AVX2-NEXT: andb $1, %al 5704; AVX2-NEXT: movb %al, (%rdi) 5705; AVX2-NEXT: vpextrb $12, %xmm0, %eax 5706; AVX2-NEXT: andb $1, %al 5707; AVX2-NEXT: movb %al, (%rdi) 5708; AVX2-NEXT: vpextrb $11, %xmm0, %eax 5709; AVX2-NEXT: andb $1, %al 5710; AVX2-NEXT: movb %al, (%rdi) 5711; AVX2-NEXT: vpextrb $10, %xmm0, %eax 5712; AVX2-NEXT: andb $1, %al 5713; AVX2-NEXT: movb %al, (%rdi) 5714; AVX2-NEXT: vpextrb $9, %xmm0, %eax 5715; AVX2-NEXT: andb $1, %al 5716; AVX2-NEXT: movb %al, (%rdi) 5717; AVX2-NEXT: vpextrb $8, %xmm0, %eax 5718; AVX2-NEXT: andb $1, %al 5719; AVX2-NEXT: movb %al, (%rdi) 5720; AVX2-NEXT: vpextrb $7, %xmm0, %eax 5721; AVX2-NEXT: andb $1, %al 5722; AVX2-NEXT: movb %al, (%rdi) 5723; AVX2-NEXT: vpextrb $6, %xmm0, %eax 5724; AVX2-NEXT: andb $1, %al 5725; AVX2-NEXT: movb %al, (%rdi) 5726; AVX2-NEXT: vpextrb $5, %xmm0, %eax 5727; AVX2-NEXT: andb $1, %al 5728; AVX2-NEXT: movb %al, (%rdi) 5729; AVX2-NEXT: vpextrb $4, %xmm0, %eax 5730; AVX2-NEXT: andb $1, %al 5731; AVX2-NEXT: movb %al, (%rdi) 5732; AVX2-NEXT: vpextrb $3, %xmm0, %eax 5733; AVX2-NEXT: andb $1, %al 5734; AVX2-NEXT: movb %al, (%rdi) 5735; AVX2-NEXT: vpextrb $2, %xmm0, %eax 5736; AVX2-NEXT: andb $1, %al 5737; AVX2-NEXT: movb %al, (%rdi) 5738; AVX2-NEXT: vpextrb $1, %xmm0, %eax 5739; AVX2-NEXT: andb $1, %al 5740; AVX2-NEXT: movb %al, (%rdi) 5741; AVX2-NEXT: vpextrb $0, %xmm0, %eax 5742; AVX2-NEXT: andb $1, %al 5743; AVX2-NEXT: movb %al, (%rdi) 5744; AVX2-NEXT: movq %rdi, %rax 5745; AVX2-NEXT: vzeroupper 5746; AVX2-NEXT: retq 5747; 5748; AVX512F-LABEL: test_cmp_v64i16: 5749; AVX512F: # BB#0: 5750; AVX512F-NEXT: vpcmpgtw %ymm7, %ymm3, %ymm3 5751; AVX512F-NEXT: vpmovsxwd %ymm3, %zmm3 5752; AVX512F-NEXT: vpslld $31, %zmm3, %zmm3 5753; AVX512F-NEXT: vptestmd %zmm3, %zmm3, %k0 5754; AVX512F-NEXT: kshiftlw $14, %k0, %k1 5755; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5756; AVX512F-NEXT: kmovw %k1, %eax 5757; AVX512F-NEXT: kshiftlw $15, %k0, %k1 5758; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5759; AVX512F-NEXT: kmovw %k1, %ecx 5760; AVX512F-NEXT: vmovd %ecx, %xmm3 5761; AVX512F-NEXT: vpinsrb $1, %eax, %xmm3, %xmm3 5762; AVX512F-NEXT: kshiftlw $13, %k0, %k1 5763; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5764; AVX512F-NEXT: kmovw %k1, %eax 5765; AVX512F-NEXT: vpinsrb $2, %eax, %xmm3, %xmm3 5766; AVX512F-NEXT: kshiftlw $12, %k0, %k1 5767; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5768; AVX512F-NEXT: kmovw %k1, %eax 5769; AVX512F-NEXT: vpinsrb $3, %eax, %xmm3, %xmm3 5770; AVX512F-NEXT: kshiftlw $11, %k0, %k1 5771; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5772; AVX512F-NEXT: kmovw %k1, %eax 5773; AVX512F-NEXT: vpinsrb $4, %eax, %xmm3, %xmm3 5774; AVX512F-NEXT: kshiftlw $10, %k0, %k1 5775; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5776; AVX512F-NEXT: kmovw %k1, %eax 5777; AVX512F-NEXT: vpinsrb $5, %eax, %xmm3, %xmm3 5778; AVX512F-NEXT: kshiftlw $9, %k0, %k1 5779; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5780; AVX512F-NEXT: kmovw %k1, %eax 5781; AVX512F-NEXT: vpinsrb $6, %eax, %xmm3, %xmm3 5782; AVX512F-NEXT: kshiftlw $8, %k0, %k1 5783; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5784; AVX512F-NEXT: kmovw %k1, %eax 5785; AVX512F-NEXT: vpinsrb $7, %eax, %xmm3, %xmm3 5786; AVX512F-NEXT: kshiftlw $7, %k0, %k1 5787; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5788; AVX512F-NEXT: kmovw %k1, %eax 5789; AVX512F-NEXT: vpinsrb $8, %eax, %xmm3, %xmm3 5790; AVX512F-NEXT: kshiftlw $6, %k0, %k1 5791; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5792; AVX512F-NEXT: kmovw %k1, %eax 5793; AVX512F-NEXT: vpinsrb $9, %eax, %xmm3, %xmm3 5794; AVX512F-NEXT: kshiftlw $5, %k0, %k1 5795; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5796; AVX512F-NEXT: kmovw %k1, %eax 5797; AVX512F-NEXT: vpinsrb $10, %eax, %xmm3, %xmm3 5798; AVX512F-NEXT: kshiftlw $4, %k0, %k1 5799; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5800; AVX512F-NEXT: kmovw %k1, %eax 5801; AVX512F-NEXT: vpinsrb $11, %eax, %xmm3, %xmm3 5802; AVX512F-NEXT: kshiftlw $3, %k0, %k1 5803; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5804; AVX512F-NEXT: kmovw %k1, %eax 5805; AVX512F-NEXT: vpinsrb $12, %eax, %xmm3, %xmm3 5806; AVX512F-NEXT: kshiftlw $2, %k0, %k1 5807; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5808; AVX512F-NEXT: kmovw %k1, %eax 5809; AVX512F-NEXT: vpinsrb $13, %eax, %xmm3, %xmm3 5810; AVX512F-NEXT: kshiftlw $1, %k0, %k1 5811; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5812; AVX512F-NEXT: kmovw %k1, %eax 5813; AVX512F-NEXT: vpinsrb $14, %eax, %xmm3, %xmm3 5814; AVX512F-NEXT: kshiftrw $15, %k0, %k0 5815; AVX512F-NEXT: kmovw %k0, %eax 5816; AVX512F-NEXT: vpinsrb $15, %eax, %xmm3, %xmm3 5817; AVX512F-NEXT: vpcmpgtw %ymm6, %ymm2, %ymm2 5818; AVX512F-NEXT: vpmovsxwd %ymm2, %zmm2 5819; AVX512F-NEXT: vpslld $31, %zmm2, %zmm2 5820; AVX512F-NEXT: vptestmd %zmm2, %zmm2, %k0 5821; AVX512F-NEXT: kshiftlw $14, %k0, %k1 5822; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5823; AVX512F-NEXT: kmovw %k1, %eax 5824; AVX512F-NEXT: kshiftlw $15, %k0, %k1 5825; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5826; AVX512F-NEXT: kmovw %k1, %ecx 5827; AVX512F-NEXT: vmovd %ecx, %xmm2 5828; AVX512F-NEXT: vpinsrb $1, %eax, %xmm2, %xmm2 5829; AVX512F-NEXT: kshiftlw $13, %k0, %k1 5830; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5831; AVX512F-NEXT: kmovw %k1, %eax 5832; AVX512F-NEXT: vpinsrb $2, %eax, %xmm2, %xmm2 5833; AVX512F-NEXT: kshiftlw $12, %k0, %k1 5834; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5835; AVX512F-NEXT: kmovw %k1, %eax 5836; AVX512F-NEXT: vpinsrb $3, %eax, %xmm2, %xmm2 5837; AVX512F-NEXT: kshiftlw $11, %k0, %k1 5838; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5839; AVX512F-NEXT: kmovw %k1, %eax 5840; AVX512F-NEXT: vpinsrb $4, %eax, %xmm2, %xmm2 5841; AVX512F-NEXT: kshiftlw $10, %k0, %k1 5842; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5843; AVX512F-NEXT: kmovw %k1, %eax 5844; AVX512F-NEXT: vpinsrb $5, %eax, %xmm2, %xmm2 5845; AVX512F-NEXT: kshiftlw $9, %k0, %k1 5846; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5847; AVX512F-NEXT: kmovw %k1, %eax 5848; AVX512F-NEXT: vpinsrb $6, %eax, %xmm2, %xmm2 5849; AVX512F-NEXT: kshiftlw $8, %k0, %k1 5850; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5851; AVX512F-NEXT: kmovw %k1, %eax 5852; AVX512F-NEXT: vpinsrb $7, %eax, %xmm2, %xmm2 5853; AVX512F-NEXT: kshiftlw $7, %k0, %k1 5854; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5855; AVX512F-NEXT: kmovw %k1, %eax 5856; AVX512F-NEXT: vpinsrb $8, %eax, %xmm2, %xmm2 5857; AVX512F-NEXT: kshiftlw $6, %k0, %k1 5858; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5859; AVX512F-NEXT: kmovw %k1, %eax 5860; AVX512F-NEXT: vpinsrb $9, %eax, %xmm2, %xmm2 5861; AVX512F-NEXT: kshiftlw $5, %k0, %k1 5862; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5863; AVX512F-NEXT: kmovw %k1, %eax 5864; AVX512F-NEXT: vpinsrb $10, %eax, %xmm2, %xmm2 5865; AVX512F-NEXT: kshiftlw $4, %k0, %k1 5866; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5867; AVX512F-NEXT: kmovw %k1, %eax 5868; AVX512F-NEXT: vpinsrb $11, %eax, %xmm2, %xmm2 5869; AVX512F-NEXT: kshiftlw $3, %k0, %k1 5870; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5871; AVX512F-NEXT: kmovw %k1, %eax 5872; AVX512F-NEXT: vpinsrb $12, %eax, %xmm2, %xmm2 5873; AVX512F-NEXT: kshiftlw $2, %k0, %k1 5874; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5875; AVX512F-NEXT: kmovw %k1, %eax 5876; AVX512F-NEXT: vpinsrb $13, %eax, %xmm2, %xmm2 5877; AVX512F-NEXT: kshiftlw $1, %k0, %k1 5878; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5879; AVX512F-NEXT: kmovw %k1, %eax 5880; AVX512F-NEXT: vpinsrb $14, %eax, %xmm2, %xmm2 5881; AVX512F-NEXT: kshiftrw $15, %k0, %k0 5882; AVX512F-NEXT: kmovw %k0, %eax 5883; AVX512F-NEXT: vpinsrb $15, %eax, %xmm2, %xmm2 5884; AVX512F-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2 5885; AVX512F-NEXT: vpsllw $7, %ymm2, %ymm2 5886; 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] 5887; AVX512F-NEXT: vpand %ymm3, %ymm2, %ymm2 5888; AVX512F-NEXT: vpxor %ymm6, %ymm6, %ymm6 5889; AVX512F-NEXT: vpcmpgtb %ymm2, %ymm6, %ymm2 5890; AVX512F-NEXT: vpcmpgtw %ymm5, %ymm1, %ymm1 5891; AVX512F-NEXT: vpmovsxwd %ymm1, %zmm1 5892; AVX512F-NEXT: vpslld $31, %zmm1, %zmm1 5893; AVX512F-NEXT: vptestmd %zmm1, %zmm1, %k0 5894; AVX512F-NEXT: kshiftlw $14, %k0, %k1 5895; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5896; AVX512F-NEXT: kmovw %k1, %eax 5897; AVX512F-NEXT: kshiftlw $15, %k0, %k1 5898; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5899; AVX512F-NEXT: kmovw %k1, %ecx 5900; AVX512F-NEXT: vmovd %ecx, %xmm1 5901; AVX512F-NEXT: vpinsrb $1, %eax, %xmm1, %xmm1 5902; AVX512F-NEXT: kshiftlw $13, %k0, %k1 5903; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5904; AVX512F-NEXT: kmovw %k1, %eax 5905; AVX512F-NEXT: vpinsrb $2, %eax, %xmm1, %xmm1 5906; AVX512F-NEXT: kshiftlw $12, %k0, %k1 5907; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5908; AVX512F-NEXT: kmovw %k1, %eax 5909; AVX512F-NEXT: vpinsrb $3, %eax, %xmm1, %xmm1 5910; AVX512F-NEXT: kshiftlw $11, %k0, %k1 5911; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5912; AVX512F-NEXT: kmovw %k1, %eax 5913; AVX512F-NEXT: vpinsrb $4, %eax, %xmm1, %xmm1 5914; AVX512F-NEXT: kshiftlw $10, %k0, %k1 5915; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5916; AVX512F-NEXT: kmovw %k1, %eax 5917; AVX512F-NEXT: vpinsrb $5, %eax, %xmm1, %xmm1 5918; AVX512F-NEXT: kshiftlw $9, %k0, %k1 5919; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5920; AVX512F-NEXT: kmovw %k1, %eax 5921; AVX512F-NEXT: vpinsrb $6, %eax, %xmm1, %xmm1 5922; AVX512F-NEXT: kshiftlw $8, %k0, %k1 5923; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5924; AVX512F-NEXT: kmovw %k1, %eax 5925; AVX512F-NEXT: vpinsrb $7, %eax, %xmm1, %xmm1 5926; AVX512F-NEXT: kshiftlw $7, %k0, %k1 5927; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5928; AVX512F-NEXT: kmovw %k1, %eax 5929; AVX512F-NEXT: vpinsrb $8, %eax, %xmm1, %xmm1 5930; AVX512F-NEXT: kshiftlw $6, %k0, %k1 5931; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5932; AVX512F-NEXT: kmovw %k1, %eax 5933; AVX512F-NEXT: vpinsrb $9, %eax, %xmm1, %xmm1 5934; AVX512F-NEXT: kshiftlw $5, %k0, %k1 5935; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5936; AVX512F-NEXT: kmovw %k1, %eax 5937; AVX512F-NEXT: vpinsrb $10, %eax, %xmm1, %xmm1 5938; AVX512F-NEXT: kshiftlw $4, %k0, %k1 5939; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5940; AVX512F-NEXT: kmovw %k1, %eax 5941; AVX512F-NEXT: vpinsrb $11, %eax, %xmm1, %xmm1 5942; AVX512F-NEXT: kshiftlw $3, %k0, %k1 5943; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5944; AVX512F-NEXT: kmovw %k1, %eax 5945; AVX512F-NEXT: vpinsrb $12, %eax, %xmm1, %xmm1 5946; AVX512F-NEXT: kshiftlw $2, %k0, %k1 5947; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5948; AVX512F-NEXT: kmovw %k1, %eax 5949; AVX512F-NEXT: vpinsrb $13, %eax, %xmm1, %xmm1 5950; AVX512F-NEXT: kshiftlw $1, %k0, %k1 5951; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5952; AVX512F-NEXT: kmovw %k1, %eax 5953; AVX512F-NEXT: vpinsrb $14, %eax, %xmm1, %xmm1 5954; AVX512F-NEXT: kshiftrw $15, %k0, %k0 5955; AVX512F-NEXT: kmovw %k0, %eax 5956; AVX512F-NEXT: vpinsrb $15, %eax, %xmm1, %xmm1 5957; AVX512F-NEXT: vpcmpgtw %ymm4, %ymm0, %ymm0 5958; AVX512F-NEXT: vpmovsxwd %ymm0, %zmm0 5959; AVX512F-NEXT: vpslld $31, %zmm0, %zmm0 5960; AVX512F-NEXT: vptestmd %zmm0, %zmm0, %k0 5961; AVX512F-NEXT: kshiftlw $14, %k0, %k1 5962; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5963; AVX512F-NEXT: kmovw %k1, %eax 5964; AVX512F-NEXT: kshiftlw $15, %k0, %k1 5965; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5966; AVX512F-NEXT: kmovw %k1, %ecx 5967; AVX512F-NEXT: vmovd %ecx, %xmm0 5968; AVX512F-NEXT: vpinsrb $1, %eax, %xmm0, %xmm0 5969; AVX512F-NEXT: kshiftlw $13, %k0, %k1 5970; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5971; AVX512F-NEXT: kmovw %k1, %eax 5972; AVX512F-NEXT: vpinsrb $2, %eax, %xmm0, %xmm0 5973; AVX512F-NEXT: kshiftlw $12, %k0, %k1 5974; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5975; AVX512F-NEXT: kmovw %k1, %eax 5976; AVX512F-NEXT: vpinsrb $3, %eax, %xmm0, %xmm0 5977; AVX512F-NEXT: kshiftlw $11, %k0, %k1 5978; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5979; AVX512F-NEXT: kmovw %k1, %eax 5980; AVX512F-NEXT: vpinsrb $4, %eax, %xmm0, %xmm0 5981; AVX512F-NEXT: kshiftlw $10, %k0, %k1 5982; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5983; AVX512F-NEXT: kmovw %k1, %eax 5984; AVX512F-NEXT: vpinsrb $5, %eax, %xmm0, %xmm0 5985; AVX512F-NEXT: kshiftlw $9, %k0, %k1 5986; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5987; AVX512F-NEXT: kmovw %k1, %eax 5988; AVX512F-NEXT: vpinsrb $6, %eax, %xmm0, %xmm0 5989; AVX512F-NEXT: kshiftlw $8, %k0, %k1 5990; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5991; AVX512F-NEXT: kmovw %k1, %eax 5992; AVX512F-NEXT: vpinsrb $7, %eax, %xmm0, %xmm0 5993; AVX512F-NEXT: kshiftlw $7, %k0, %k1 5994; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5995; AVX512F-NEXT: kmovw %k1, %eax 5996; AVX512F-NEXT: vpinsrb $8, %eax, %xmm0, %xmm0 5997; AVX512F-NEXT: kshiftlw $6, %k0, %k1 5998; AVX512F-NEXT: kshiftrw $15, %k1, %k1 5999; AVX512F-NEXT: kmovw %k1, %eax 6000; AVX512F-NEXT: vpinsrb $9, %eax, %xmm0, %xmm0 6001; AVX512F-NEXT: kshiftlw $5, %k0, %k1 6002; AVX512F-NEXT: kshiftrw $15, %k1, %k1 6003; AVX512F-NEXT: kmovw %k1, %eax 6004; AVX512F-NEXT: vpinsrb $10, %eax, %xmm0, %xmm0 6005; AVX512F-NEXT: kshiftlw $4, %k0, %k1 6006; AVX512F-NEXT: kshiftrw $15, %k1, %k1 6007; AVX512F-NEXT: kmovw %k1, %eax 6008; AVX512F-NEXT: vpinsrb $11, %eax, %xmm0, %xmm0 6009; AVX512F-NEXT: kshiftlw $3, %k0, %k1 6010; AVX512F-NEXT: kshiftrw $15, %k1, %k1 6011; AVX512F-NEXT: kmovw %k1, %eax 6012; AVX512F-NEXT: vpinsrb $12, %eax, %xmm0, %xmm0 6013; AVX512F-NEXT: kshiftlw $2, %k0, %k1 6014; AVX512F-NEXT: kshiftrw $15, %k1, %k1 6015; AVX512F-NEXT: kmovw %k1, %eax 6016; AVX512F-NEXT: vpinsrb $13, %eax, %xmm0, %xmm0 6017; AVX512F-NEXT: kshiftlw $1, %k0, %k1 6018; AVX512F-NEXT: kshiftrw $15, %k1, %k1 6019; AVX512F-NEXT: kmovw %k1, %eax 6020; AVX512F-NEXT: vpinsrb $14, %eax, %xmm0, %xmm0 6021; AVX512F-NEXT: kshiftrw $15, %k0, %k0 6022; AVX512F-NEXT: kmovw %k0, %eax 6023; AVX512F-NEXT: vpinsrb $15, %eax, %xmm0, %xmm0 6024; AVX512F-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 6025; AVX512F-NEXT: vpsllw $7, %ymm0, %ymm0 6026; AVX512F-NEXT: vpand %ymm3, %ymm0, %ymm0 6027; AVX512F-NEXT: vpcmpgtb %ymm0, %ymm6, %ymm0 6028; AVX512F-NEXT: vextracti128 $1, %ymm0, %xmm1 6029; AVX512F-NEXT: vextracti128 $1, %ymm2, %xmm3 6030; AVX512F-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill> 6031; AVX512F-NEXT: # kill: %XMM2<def> %XMM2<kill> %YMM2<kill> 6032; AVX512F-NEXT: retq 6033; 6034; AVX512DQ-LABEL: test_cmp_v64i16: 6035; AVX512DQ: # BB#0: 6036; AVX512DQ-NEXT: vpcmpgtw %ymm7, %ymm3, %ymm3 6037; AVX512DQ-NEXT: vpmovsxwd %ymm3, %zmm3 6038; AVX512DQ-NEXT: vpslld $31, %zmm3, %zmm3 6039; AVX512DQ-NEXT: vptestmd %zmm3, %zmm3, %k0 6040; AVX512DQ-NEXT: kshiftlw $14, %k0, %k1 6041; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6042; AVX512DQ-NEXT: kmovw %k1, %eax 6043; AVX512DQ-NEXT: kshiftlw $15, %k0, %k1 6044; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6045; AVX512DQ-NEXT: kmovw %k1, %ecx 6046; AVX512DQ-NEXT: vmovd %ecx, %xmm3 6047; AVX512DQ-NEXT: vpinsrb $1, %eax, %xmm3, %xmm3 6048; AVX512DQ-NEXT: kshiftlw $13, %k0, %k1 6049; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6050; AVX512DQ-NEXT: kmovw %k1, %eax 6051; AVX512DQ-NEXT: vpinsrb $2, %eax, %xmm3, %xmm3 6052; AVX512DQ-NEXT: kshiftlw $12, %k0, %k1 6053; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6054; AVX512DQ-NEXT: kmovw %k1, %eax 6055; AVX512DQ-NEXT: vpinsrb $3, %eax, %xmm3, %xmm3 6056; AVX512DQ-NEXT: kshiftlw $11, %k0, %k1 6057; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6058; AVX512DQ-NEXT: kmovw %k1, %eax 6059; AVX512DQ-NEXT: vpinsrb $4, %eax, %xmm3, %xmm3 6060; AVX512DQ-NEXT: kshiftlw $10, %k0, %k1 6061; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6062; AVX512DQ-NEXT: kmovw %k1, %eax 6063; AVX512DQ-NEXT: vpinsrb $5, %eax, %xmm3, %xmm3 6064; AVX512DQ-NEXT: kshiftlw $9, %k0, %k1 6065; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6066; AVX512DQ-NEXT: kmovw %k1, %eax 6067; AVX512DQ-NEXT: vpinsrb $6, %eax, %xmm3, %xmm3 6068; AVX512DQ-NEXT: kshiftlw $8, %k0, %k1 6069; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6070; AVX512DQ-NEXT: kmovw %k1, %eax 6071; AVX512DQ-NEXT: vpinsrb $7, %eax, %xmm3, %xmm3 6072; AVX512DQ-NEXT: kshiftlw $7, %k0, %k1 6073; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6074; AVX512DQ-NEXT: kmovw %k1, %eax 6075; AVX512DQ-NEXT: vpinsrb $8, %eax, %xmm3, %xmm3 6076; AVX512DQ-NEXT: kshiftlw $6, %k0, %k1 6077; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6078; AVX512DQ-NEXT: kmovw %k1, %eax 6079; AVX512DQ-NEXT: vpinsrb $9, %eax, %xmm3, %xmm3 6080; AVX512DQ-NEXT: kshiftlw $5, %k0, %k1 6081; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6082; AVX512DQ-NEXT: kmovw %k1, %eax 6083; AVX512DQ-NEXT: vpinsrb $10, %eax, %xmm3, %xmm3 6084; AVX512DQ-NEXT: kshiftlw $4, %k0, %k1 6085; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6086; AVX512DQ-NEXT: kmovw %k1, %eax 6087; AVX512DQ-NEXT: vpinsrb $11, %eax, %xmm3, %xmm3 6088; AVX512DQ-NEXT: kshiftlw $3, %k0, %k1 6089; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6090; AVX512DQ-NEXT: kmovw %k1, %eax 6091; AVX512DQ-NEXT: vpinsrb $12, %eax, %xmm3, %xmm3 6092; AVX512DQ-NEXT: kshiftlw $2, %k0, %k1 6093; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6094; AVX512DQ-NEXT: kmovw %k1, %eax 6095; AVX512DQ-NEXT: vpinsrb $13, %eax, %xmm3, %xmm3 6096; AVX512DQ-NEXT: kshiftlw $1, %k0, %k1 6097; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6098; AVX512DQ-NEXT: kmovw %k1, %eax 6099; AVX512DQ-NEXT: vpinsrb $14, %eax, %xmm3, %xmm3 6100; AVX512DQ-NEXT: kshiftrw $15, %k0, %k0 6101; AVX512DQ-NEXT: kmovw %k0, %eax 6102; AVX512DQ-NEXT: vpinsrb $15, %eax, %xmm3, %xmm3 6103; AVX512DQ-NEXT: vpcmpgtw %ymm6, %ymm2, %ymm2 6104; AVX512DQ-NEXT: vpmovsxwd %ymm2, %zmm2 6105; AVX512DQ-NEXT: vpslld $31, %zmm2, %zmm2 6106; AVX512DQ-NEXT: vptestmd %zmm2, %zmm2, %k0 6107; AVX512DQ-NEXT: kshiftlw $14, %k0, %k1 6108; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6109; AVX512DQ-NEXT: kmovw %k1, %eax 6110; AVX512DQ-NEXT: kshiftlw $15, %k0, %k1 6111; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6112; AVX512DQ-NEXT: kmovw %k1, %ecx 6113; AVX512DQ-NEXT: vmovd %ecx, %xmm2 6114; AVX512DQ-NEXT: vpinsrb $1, %eax, %xmm2, %xmm2 6115; AVX512DQ-NEXT: kshiftlw $13, %k0, %k1 6116; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6117; AVX512DQ-NEXT: kmovw %k1, %eax 6118; AVX512DQ-NEXT: vpinsrb $2, %eax, %xmm2, %xmm2 6119; AVX512DQ-NEXT: kshiftlw $12, %k0, %k1 6120; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6121; AVX512DQ-NEXT: kmovw %k1, %eax 6122; AVX512DQ-NEXT: vpinsrb $3, %eax, %xmm2, %xmm2 6123; AVX512DQ-NEXT: kshiftlw $11, %k0, %k1 6124; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6125; AVX512DQ-NEXT: kmovw %k1, %eax 6126; AVX512DQ-NEXT: vpinsrb $4, %eax, %xmm2, %xmm2 6127; AVX512DQ-NEXT: kshiftlw $10, %k0, %k1 6128; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6129; AVX512DQ-NEXT: kmovw %k1, %eax 6130; AVX512DQ-NEXT: vpinsrb $5, %eax, %xmm2, %xmm2 6131; AVX512DQ-NEXT: kshiftlw $9, %k0, %k1 6132; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6133; AVX512DQ-NEXT: kmovw %k1, %eax 6134; AVX512DQ-NEXT: vpinsrb $6, %eax, %xmm2, %xmm2 6135; AVX512DQ-NEXT: kshiftlw $8, %k0, %k1 6136; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6137; AVX512DQ-NEXT: kmovw %k1, %eax 6138; AVX512DQ-NEXT: vpinsrb $7, %eax, %xmm2, %xmm2 6139; AVX512DQ-NEXT: kshiftlw $7, %k0, %k1 6140; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6141; AVX512DQ-NEXT: kmovw %k1, %eax 6142; AVX512DQ-NEXT: vpinsrb $8, %eax, %xmm2, %xmm2 6143; AVX512DQ-NEXT: kshiftlw $6, %k0, %k1 6144; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6145; AVX512DQ-NEXT: kmovw %k1, %eax 6146; AVX512DQ-NEXT: vpinsrb $9, %eax, %xmm2, %xmm2 6147; AVX512DQ-NEXT: kshiftlw $5, %k0, %k1 6148; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6149; AVX512DQ-NEXT: kmovw %k1, %eax 6150; AVX512DQ-NEXT: vpinsrb $10, %eax, %xmm2, %xmm2 6151; AVX512DQ-NEXT: kshiftlw $4, %k0, %k1 6152; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6153; AVX512DQ-NEXT: kmovw %k1, %eax 6154; AVX512DQ-NEXT: vpinsrb $11, %eax, %xmm2, %xmm2 6155; AVX512DQ-NEXT: kshiftlw $3, %k0, %k1 6156; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6157; AVX512DQ-NEXT: kmovw %k1, %eax 6158; AVX512DQ-NEXT: vpinsrb $12, %eax, %xmm2, %xmm2 6159; AVX512DQ-NEXT: kshiftlw $2, %k0, %k1 6160; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6161; AVX512DQ-NEXT: kmovw %k1, %eax 6162; AVX512DQ-NEXT: vpinsrb $13, %eax, %xmm2, %xmm2 6163; AVX512DQ-NEXT: kshiftlw $1, %k0, %k1 6164; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6165; AVX512DQ-NEXT: kmovw %k1, %eax 6166; AVX512DQ-NEXT: vpinsrb $14, %eax, %xmm2, %xmm2 6167; AVX512DQ-NEXT: kshiftrw $15, %k0, %k0 6168; AVX512DQ-NEXT: kmovw %k0, %eax 6169; AVX512DQ-NEXT: vpinsrb $15, %eax, %xmm2, %xmm2 6170; AVX512DQ-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2 6171; AVX512DQ-NEXT: vpsllw $7, %ymm2, %ymm2 6172; 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] 6173; AVX512DQ-NEXT: vpand %ymm3, %ymm2, %ymm2 6174; AVX512DQ-NEXT: vpxor %ymm6, %ymm6, %ymm6 6175; AVX512DQ-NEXT: vpcmpgtb %ymm2, %ymm6, %ymm2 6176; AVX512DQ-NEXT: vpcmpgtw %ymm5, %ymm1, %ymm1 6177; AVX512DQ-NEXT: vpmovsxwd %ymm1, %zmm1 6178; AVX512DQ-NEXT: vpslld $31, %zmm1, %zmm1 6179; AVX512DQ-NEXT: vptestmd %zmm1, %zmm1, %k0 6180; AVX512DQ-NEXT: kshiftlw $14, %k0, %k1 6181; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6182; AVX512DQ-NEXT: kmovw %k1, %eax 6183; AVX512DQ-NEXT: kshiftlw $15, %k0, %k1 6184; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6185; AVX512DQ-NEXT: kmovw %k1, %ecx 6186; AVX512DQ-NEXT: vmovd %ecx, %xmm1 6187; AVX512DQ-NEXT: vpinsrb $1, %eax, %xmm1, %xmm1 6188; AVX512DQ-NEXT: kshiftlw $13, %k0, %k1 6189; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6190; AVX512DQ-NEXT: kmovw %k1, %eax 6191; AVX512DQ-NEXT: vpinsrb $2, %eax, %xmm1, %xmm1 6192; AVX512DQ-NEXT: kshiftlw $12, %k0, %k1 6193; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6194; AVX512DQ-NEXT: kmovw %k1, %eax 6195; AVX512DQ-NEXT: vpinsrb $3, %eax, %xmm1, %xmm1 6196; AVX512DQ-NEXT: kshiftlw $11, %k0, %k1 6197; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6198; AVX512DQ-NEXT: kmovw %k1, %eax 6199; AVX512DQ-NEXT: vpinsrb $4, %eax, %xmm1, %xmm1 6200; AVX512DQ-NEXT: kshiftlw $10, %k0, %k1 6201; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6202; AVX512DQ-NEXT: kmovw %k1, %eax 6203; AVX512DQ-NEXT: vpinsrb $5, %eax, %xmm1, %xmm1 6204; AVX512DQ-NEXT: kshiftlw $9, %k0, %k1 6205; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6206; AVX512DQ-NEXT: kmovw %k1, %eax 6207; AVX512DQ-NEXT: vpinsrb $6, %eax, %xmm1, %xmm1 6208; AVX512DQ-NEXT: kshiftlw $8, %k0, %k1 6209; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6210; AVX512DQ-NEXT: kmovw %k1, %eax 6211; AVX512DQ-NEXT: vpinsrb $7, %eax, %xmm1, %xmm1 6212; AVX512DQ-NEXT: kshiftlw $7, %k0, %k1 6213; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6214; AVX512DQ-NEXT: kmovw %k1, %eax 6215; AVX512DQ-NEXT: vpinsrb $8, %eax, %xmm1, %xmm1 6216; AVX512DQ-NEXT: kshiftlw $6, %k0, %k1 6217; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6218; AVX512DQ-NEXT: kmovw %k1, %eax 6219; AVX512DQ-NEXT: vpinsrb $9, %eax, %xmm1, %xmm1 6220; AVX512DQ-NEXT: kshiftlw $5, %k0, %k1 6221; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6222; AVX512DQ-NEXT: kmovw %k1, %eax 6223; AVX512DQ-NEXT: vpinsrb $10, %eax, %xmm1, %xmm1 6224; AVX512DQ-NEXT: kshiftlw $4, %k0, %k1 6225; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6226; AVX512DQ-NEXT: kmovw %k1, %eax 6227; AVX512DQ-NEXT: vpinsrb $11, %eax, %xmm1, %xmm1 6228; AVX512DQ-NEXT: kshiftlw $3, %k0, %k1 6229; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6230; AVX512DQ-NEXT: kmovw %k1, %eax 6231; AVX512DQ-NEXT: vpinsrb $12, %eax, %xmm1, %xmm1 6232; AVX512DQ-NEXT: kshiftlw $2, %k0, %k1 6233; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6234; AVX512DQ-NEXT: kmovw %k1, %eax 6235; AVX512DQ-NEXT: vpinsrb $13, %eax, %xmm1, %xmm1 6236; AVX512DQ-NEXT: kshiftlw $1, %k0, %k1 6237; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6238; AVX512DQ-NEXT: kmovw %k1, %eax 6239; AVX512DQ-NEXT: vpinsrb $14, %eax, %xmm1, %xmm1 6240; AVX512DQ-NEXT: kshiftrw $15, %k0, %k0 6241; AVX512DQ-NEXT: kmovw %k0, %eax 6242; AVX512DQ-NEXT: vpinsrb $15, %eax, %xmm1, %xmm1 6243; AVX512DQ-NEXT: vpcmpgtw %ymm4, %ymm0, %ymm0 6244; AVX512DQ-NEXT: vpmovsxwd %ymm0, %zmm0 6245; AVX512DQ-NEXT: vpslld $31, %zmm0, %zmm0 6246; AVX512DQ-NEXT: vptestmd %zmm0, %zmm0, %k0 6247; AVX512DQ-NEXT: kshiftlw $14, %k0, %k1 6248; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6249; AVX512DQ-NEXT: kmovw %k1, %eax 6250; AVX512DQ-NEXT: kshiftlw $15, %k0, %k1 6251; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6252; AVX512DQ-NEXT: kmovw %k1, %ecx 6253; AVX512DQ-NEXT: vmovd %ecx, %xmm0 6254; AVX512DQ-NEXT: vpinsrb $1, %eax, %xmm0, %xmm0 6255; AVX512DQ-NEXT: kshiftlw $13, %k0, %k1 6256; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6257; AVX512DQ-NEXT: kmovw %k1, %eax 6258; AVX512DQ-NEXT: vpinsrb $2, %eax, %xmm0, %xmm0 6259; AVX512DQ-NEXT: kshiftlw $12, %k0, %k1 6260; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6261; AVX512DQ-NEXT: kmovw %k1, %eax 6262; AVX512DQ-NEXT: vpinsrb $3, %eax, %xmm0, %xmm0 6263; AVX512DQ-NEXT: kshiftlw $11, %k0, %k1 6264; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6265; AVX512DQ-NEXT: kmovw %k1, %eax 6266; AVX512DQ-NEXT: vpinsrb $4, %eax, %xmm0, %xmm0 6267; AVX512DQ-NEXT: kshiftlw $10, %k0, %k1 6268; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6269; AVX512DQ-NEXT: kmovw %k1, %eax 6270; AVX512DQ-NEXT: vpinsrb $5, %eax, %xmm0, %xmm0 6271; AVX512DQ-NEXT: kshiftlw $9, %k0, %k1 6272; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6273; AVX512DQ-NEXT: kmovw %k1, %eax 6274; AVX512DQ-NEXT: vpinsrb $6, %eax, %xmm0, %xmm0 6275; AVX512DQ-NEXT: kshiftlw $8, %k0, %k1 6276; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6277; AVX512DQ-NEXT: kmovw %k1, %eax 6278; AVX512DQ-NEXT: vpinsrb $7, %eax, %xmm0, %xmm0 6279; AVX512DQ-NEXT: kshiftlw $7, %k0, %k1 6280; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6281; AVX512DQ-NEXT: kmovw %k1, %eax 6282; AVX512DQ-NEXT: vpinsrb $8, %eax, %xmm0, %xmm0 6283; AVX512DQ-NEXT: kshiftlw $6, %k0, %k1 6284; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6285; AVX512DQ-NEXT: kmovw %k1, %eax 6286; AVX512DQ-NEXT: vpinsrb $9, %eax, %xmm0, %xmm0 6287; AVX512DQ-NEXT: kshiftlw $5, %k0, %k1 6288; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6289; AVX512DQ-NEXT: kmovw %k1, %eax 6290; AVX512DQ-NEXT: vpinsrb $10, %eax, %xmm0, %xmm0 6291; AVX512DQ-NEXT: kshiftlw $4, %k0, %k1 6292; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6293; AVX512DQ-NEXT: kmovw %k1, %eax 6294; AVX512DQ-NEXT: vpinsrb $11, %eax, %xmm0, %xmm0 6295; AVX512DQ-NEXT: kshiftlw $3, %k0, %k1 6296; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6297; AVX512DQ-NEXT: kmovw %k1, %eax 6298; AVX512DQ-NEXT: vpinsrb $12, %eax, %xmm0, %xmm0 6299; AVX512DQ-NEXT: kshiftlw $2, %k0, %k1 6300; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6301; AVX512DQ-NEXT: kmovw %k1, %eax 6302; AVX512DQ-NEXT: vpinsrb $13, %eax, %xmm0, %xmm0 6303; AVX512DQ-NEXT: kshiftlw $1, %k0, %k1 6304; AVX512DQ-NEXT: kshiftrw $15, %k1, %k1 6305; AVX512DQ-NEXT: kmovw %k1, %eax 6306; AVX512DQ-NEXT: vpinsrb $14, %eax, %xmm0, %xmm0 6307; AVX512DQ-NEXT: kshiftrw $15, %k0, %k0 6308; AVX512DQ-NEXT: kmovw %k0, %eax 6309; AVX512DQ-NEXT: vpinsrb $15, %eax, %xmm0, %xmm0 6310; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 6311; AVX512DQ-NEXT: vpsllw $7, %ymm0, %ymm0 6312; AVX512DQ-NEXT: vpand %ymm3, %ymm0, %ymm0 6313; AVX512DQ-NEXT: vpcmpgtb %ymm0, %ymm6, %ymm0 6314; AVX512DQ-NEXT: vextracti128 $1, %ymm0, %xmm1 6315; AVX512DQ-NEXT: vextracti128 $1, %ymm2, %xmm3 6316; AVX512DQ-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill> 6317; AVX512DQ-NEXT: # kill: %XMM2<def> %XMM2<kill> %YMM2<kill> 6318; AVX512DQ-NEXT: retq 6319; 6320; AVX512BW-LABEL: test_cmp_v64i16: 6321; AVX512BW: # BB#0: 6322; AVX512BW-NEXT: vextracti32x4 $3, %zmm2, %xmm4 6323; AVX512BW-NEXT: vpextrw $1, %xmm4, %ecx 6324; AVX512BW-NEXT: vextracti32x4 $3, %zmm0, %xmm5 6325; AVX512BW-NEXT: vpextrw $1, %xmm5, %edx 6326; AVX512BW-NEXT: xorl %eax, %eax 6327; AVX512BW-NEXT: cmpw %cx, %dx 6328; AVX512BW-NEXT: movw $-1, %cx 6329; AVX512BW-NEXT: movl $0, %edx 6330; AVX512BW-NEXT: cmovgw %cx, %dx 6331; AVX512BW-NEXT: vmovd %xmm4, %esi 6332; AVX512BW-NEXT: vmovd %xmm5, %edi 6333; AVX512BW-NEXT: cmpw %si, %di 6334; AVX512BW-NEXT: movl $0, %esi 6335; AVX512BW-NEXT: cmovgw %cx, %si 6336; AVX512BW-NEXT: vmovd %esi, %xmm6 6337; AVX512BW-NEXT: vpinsrw $1, %edx, %xmm6, %xmm6 6338; AVX512BW-NEXT: vpextrw $2, %xmm4, %edx 6339; AVX512BW-NEXT: vpextrw $2, %xmm5, %esi 6340; AVX512BW-NEXT: cmpw %dx, %si 6341; AVX512BW-NEXT: movl $0, %edx 6342; AVX512BW-NEXT: cmovgw %cx, %dx 6343; AVX512BW-NEXT: vpinsrw $2, %edx, %xmm6, %xmm6 6344; AVX512BW-NEXT: vpextrw $3, %xmm4, %edx 6345; AVX512BW-NEXT: vpextrw $3, %xmm5, %esi 6346; AVX512BW-NEXT: cmpw %dx, %si 6347; AVX512BW-NEXT: movl $0, %edx 6348; AVX512BW-NEXT: cmovgw %cx, %dx 6349; AVX512BW-NEXT: vpinsrw $3, %edx, %xmm6, %xmm6 6350; AVX512BW-NEXT: vpextrw $4, %xmm4, %edx 6351; AVX512BW-NEXT: vpextrw $4, %xmm5, %esi 6352; AVX512BW-NEXT: cmpw %dx, %si 6353; AVX512BW-NEXT: movl $0, %edx 6354; AVX512BW-NEXT: cmovgw %cx, %dx 6355; AVX512BW-NEXT: vpinsrw $4, %edx, %xmm6, %xmm6 6356; AVX512BW-NEXT: vpextrw $5, %xmm4, %edx 6357; AVX512BW-NEXT: vpextrw $5, %xmm5, %esi 6358; AVX512BW-NEXT: cmpw %dx, %si 6359; AVX512BW-NEXT: movl $0, %edx 6360; AVX512BW-NEXT: cmovgw %cx, %dx 6361; AVX512BW-NEXT: vpinsrw $5, %edx, %xmm6, %xmm6 6362; AVX512BW-NEXT: vpextrw $6, %xmm4, %edx 6363; AVX512BW-NEXT: vpextrw $6, %xmm5, %esi 6364; AVX512BW-NEXT: cmpw %dx, %si 6365; AVX512BW-NEXT: movl $0, %edx 6366; AVX512BW-NEXT: cmovgw %cx, %dx 6367; AVX512BW-NEXT: vpinsrw $6, %edx, %xmm6, %xmm6 6368; AVX512BW-NEXT: vpextrw $7, %xmm4, %edx 6369; AVX512BW-NEXT: vpextrw $7, %xmm5, %esi 6370; AVX512BW-NEXT: cmpw %dx, %si 6371; AVX512BW-NEXT: movl $0, %edx 6372; AVX512BW-NEXT: cmovgw %cx, %dx 6373; AVX512BW-NEXT: vpinsrw $7, %edx, %xmm6, %xmm4 6374; AVX512BW-NEXT: vextracti32x4 $2, %zmm2, %xmm5 6375; AVX512BW-NEXT: vpextrw $1, %xmm5, %edx 6376; AVX512BW-NEXT: vextracti32x4 $2, %zmm0, %xmm6 6377; AVX512BW-NEXT: vpextrw $1, %xmm6, %esi 6378; AVX512BW-NEXT: cmpw %dx, %si 6379; AVX512BW-NEXT: movl $0, %edx 6380; AVX512BW-NEXT: cmovgw %cx, %dx 6381; AVX512BW-NEXT: vmovd %xmm5, %esi 6382; AVX512BW-NEXT: vmovd %xmm6, %edi 6383; AVX512BW-NEXT: cmpw %si, %di 6384; AVX512BW-NEXT: movl $0, %esi 6385; AVX512BW-NEXT: cmovgw %cx, %si 6386; AVX512BW-NEXT: vmovd %esi, %xmm7 6387; AVX512BW-NEXT: vpinsrw $1, %edx, %xmm7, %xmm7 6388; AVX512BW-NEXT: vpextrw $2, %xmm5, %edx 6389; AVX512BW-NEXT: vpextrw $2, %xmm6, %esi 6390; AVX512BW-NEXT: cmpw %dx, %si 6391; AVX512BW-NEXT: movl $0, %edx 6392; AVX512BW-NEXT: cmovgw %cx, %dx 6393; AVX512BW-NEXT: vpinsrw $2, %edx, %xmm7, %xmm7 6394; AVX512BW-NEXT: vpextrw $3, %xmm5, %edx 6395; AVX512BW-NEXT: vpextrw $3, %xmm6, %esi 6396; AVX512BW-NEXT: cmpw %dx, %si 6397; AVX512BW-NEXT: movl $0, %edx 6398; AVX512BW-NEXT: cmovgw %cx, %dx 6399; AVX512BW-NEXT: vpinsrw $3, %edx, %xmm7, %xmm7 6400; AVX512BW-NEXT: vpextrw $4, %xmm5, %edx 6401; AVX512BW-NEXT: vpextrw $4, %xmm6, %esi 6402; AVX512BW-NEXT: cmpw %dx, %si 6403; AVX512BW-NEXT: movl $0, %edx 6404; AVX512BW-NEXT: cmovgw %cx, %dx 6405; AVX512BW-NEXT: vpinsrw $4, %edx, %xmm7, %xmm7 6406; AVX512BW-NEXT: vpextrw $5, %xmm5, %edx 6407; AVX512BW-NEXT: vpextrw $5, %xmm6, %esi 6408; AVX512BW-NEXT: cmpw %dx, %si 6409; AVX512BW-NEXT: movl $0, %edx 6410; AVX512BW-NEXT: cmovgw %cx, %dx 6411; AVX512BW-NEXT: vpinsrw $5, %edx, %xmm7, %xmm7 6412; AVX512BW-NEXT: vpextrw $6, %xmm5, %edx 6413; AVX512BW-NEXT: vpextrw $6, %xmm6, %esi 6414; AVX512BW-NEXT: cmpw %dx, %si 6415; AVX512BW-NEXT: movl $0, %edx 6416; AVX512BW-NEXT: cmovgw %cx, %dx 6417; AVX512BW-NEXT: vpinsrw $6, %edx, %xmm7, %xmm7 6418; AVX512BW-NEXT: vpextrw $7, %xmm5, %edx 6419; AVX512BW-NEXT: vpextrw $7, %xmm6, %esi 6420; AVX512BW-NEXT: cmpw %dx, %si 6421; AVX512BW-NEXT: movl $0, %edx 6422; AVX512BW-NEXT: cmovgw %cx, %dx 6423; AVX512BW-NEXT: vpinsrw $7, %edx, %xmm7, %xmm5 6424; AVX512BW-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4 6425; AVX512BW-NEXT: vextracti32x4 $1, %zmm2, %xmm5 6426; AVX512BW-NEXT: vpextrw $1, %xmm5, %edx 6427; AVX512BW-NEXT: vextracti32x4 $1, %zmm0, %xmm6 6428; AVX512BW-NEXT: vpextrw $1, %xmm6, %esi 6429; AVX512BW-NEXT: cmpw %dx, %si 6430; AVX512BW-NEXT: movl $0, %edx 6431; AVX512BW-NEXT: cmovgw %cx, %dx 6432; AVX512BW-NEXT: vmovd %xmm5, %esi 6433; AVX512BW-NEXT: vmovd %xmm6, %edi 6434; AVX512BW-NEXT: cmpw %si, %di 6435; AVX512BW-NEXT: movl $0, %esi 6436; AVX512BW-NEXT: cmovgw %cx, %si 6437; AVX512BW-NEXT: vmovd %esi, %xmm7 6438; AVX512BW-NEXT: vpinsrw $1, %edx, %xmm7, %xmm7 6439; AVX512BW-NEXT: vpextrw $2, %xmm5, %edx 6440; AVX512BW-NEXT: vpextrw $2, %xmm6, %esi 6441; AVX512BW-NEXT: cmpw %dx, %si 6442; AVX512BW-NEXT: movl $0, %edx 6443; AVX512BW-NEXT: cmovgw %cx, %dx 6444; AVX512BW-NEXT: vpinsrw $2, %edx, %xmm7, %xmm7 6445; AVX512BW-NEXT: vpextrw $3, %xmm5, %edx 6446; AVX512BW-NEXT: vpextrw $3, %xmm6, %esi 6447; AVX512BW-NEXT: cmpw %dx, %si 6448; AVX512BW-NEXT: movl $0, %edx 6449; AVX512BW-NEXT: cmovgw %cx, %dx 6450; AVX512BW-NEXT: vpinsrw $3, %edx, %xmm7, %xmm7 6451; AVX512BW-NEXT: vpextrw $4, %xmm5, %edx 6452; AVX512BW-NEXT: vpextrw $4, %xmm6, %esi 6453; AVX512BW-NEXT: cmpw %dx, %si 6454; AVX512BW-NEXT: movl $0, %edx 6455; AVX512BW-NEXT: cmovgw %cx, %dx 6456; AVX512BW-NEXT: vpinsrw $4, %edx, %xmm7, %xmm7 6457; AVX512BW-NEXT: vpextrw $5, %xmm5, %edx 6458; AVX512BW-NEXT: vpextrw $5, %xmm6, %esi 6459; AVX512BW-NEXT: cmpw %dx, %si 6460; AVX512BW-NEXT: movl $0, %edx 6461; AVX512BW-NEXT: cmovgw %cx, %dx 6462; AVX512BW-NEXT: vpinsrw $5, %edx, %xmm7, %xmm7 6463; AVX512BW-NEXT: vpextrw $6, %xmm5, %edx 6464; AVX512BW-NEXT: vpextrw $6, %xmm6, %esi 6465; AVX512BW-NEXT: cmpw %dx, %si 6466; AVX512BW-NEXT: movl $0, %edx 6467; AVX512BW-NEXT: cmovgw %cx, %dx 6468; AVX512BW-NEXT: vpinsrw $6, %edx, %xmm7, %xmm7 6469; AVX512BW-NEXT: vpextrw $7, %xmm5, %edx 6470; AVX512BW-NEXT: vpextrw $7, %xmm6, %esi 6471; AVX512BW-NEXT: cmpw %dx, %si 6472; AVX512BW-NEXT: movl $0, %edx 6473; AVX512BW-NEXT: cmovgw %cx, %dx 6474; AVX512BW-NEXT: vpinsrw $7, %edx, %xmm7, %xmm5 6475; AVX512BW-NEXT: vpextrw $1, %xmm2, %edx 6476; AVX512BW-NEXT: vpextrw $1, %xmm0, %esi 6477; AVX512BW-NEXT: cmpw %dx, %si 6478; AVX512BW-NEXT: movl $0, %edx 6479; AVX512BW-NEXT: cmovgw %cx, %dx 6480; AVX512BW-NEXT: vmovd %xmm2, %esi 6481; AVX512BW-NEXT: vmovd %xmm0, %edi 6482; AVX512BW-NEXT: cmpw %si, %di 6483; AVX512BW-NEXT: movl $0, %esi 6484; AVX512BW-NEXT: cmovgw %cx, %si 6485; AVX512BW-NEXT: vmovd %esi, %xmm6 6486; AVX512BW-NEXT: vpinsrw $1, %edx, %xmm6, %xmm6 6487; AVX512BW-NEXT: vpextrw $2, %xmm2, %edx 6488; AVX512BW-NEXT: vpextrw $2, %xmm0, %esi 6489; AVX512BW-NEXT: cmpw %dx, %si 6490; AVX512BW-NEXT: movl $0, %edx 6491; AVX512BW-NEXT: cmovgw %cx, %dx 6492; AVX512BW-NEXT: vpinsrw $2, %edx, %xmm6, %xmm6 6493; AVX512BW-NEXT: vpextrw $3, %xmm2, %edx 6494; AVX512BW-NEXT: vpextrw $3, %xmm0, %esi 6495; AVX512BW-NEXT: cmpw %dx, %si 6496; AVX512BW-NEXT: movl $0, %edx 6497; AVX512BW-NEXT: cmovgw %cx, %dx 6498; AVX512BW-NEXT: vpinsrw $3, %edx, %xmm6, %xmm6 6499; AVX512BW-NEXT: vpextrw $4, %xmm2, %edx 6500; AVX512BW-NEXT: vpextrw $4, %xmm0, %esi 6501; AVX512BW-NEXT: cmpw %dx, %si 6502; AVX512BW-NEXT: movl $0, %edx 6503; AVX512BW-NEXT: cmovgw %cx, %dx 6504; AVX512BW-NEXT: vpinsrw $4, %edx, %xmm6, %xmm6 6505; AVX512BW-NEXT: vpextrw $5, %xmm2, %edx 6506; AVX512BW-NEXT: vpextrw $5, %xmm0, %esi 6507; AVX512BW-NEXT: cmpw %dx, %si 6508; AVX512BW-NEXT: movl $0, %edx 6509; AVX512BW-NEXT: cmovgw %cx, %dx 6510; AVX512BW-NEXT: vpinsrw $5, %edx, %xmm6, %xmm6 6511; AVX512BW-NEXT: vpextrw $6, %xmm2, %edx 6512; AVX512BW-NEXT: vpextrw $6, %xmm0, %esi 6513; AVX512BW-NEXT: cmpw %dx, %si 6514; AVX512BW-NEXT: movl $0, %edx 6515; AVX512BW-NEXT: cmovgw %cx, %dx 6516; AVX512BW-NEXT: vpinsrw $6, %edx, %xmm6, %xmm6 6517; AVX512BW-NEXT: vpextrw $7, %xmm2, %edx 6518; AVX512BW-NEXT: vpextrw $7, %xmm0, %esi 6519; AVX512BW-NEXT: cmpw %dx, %si 6520; AVX512BW-NEXT: movl $0, %edx 6521; AVX512BW-NEXT: cmovgw %cx, %dx 6522; AVX512BW-NEXT: vpinsrw $7, %edx, %xmm6, %xmm0 6523; AVX512BW-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0 6524; AVX512BW-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm0 6525; AVX512BW-NEXT: vpmovwb %zmm0, %ymm0 6526; AVX512BW-NEXT: vextracti32x4 $3, %zmm3, %xmm2 6527; AVX512BW-NEXT: vpextrw $1, %xmm2, %edx 6528; AVX512BW-NEXT: vextracti32x4 $3, %zmm1, %xmm4 6529; AVX512BW-NEXT: vpextrw $1, %xmm4, %esi 6530; AVX512BW-NEXT: cmpw %dx, %si 6531; AVX512BW-NEXT: movl $0, %edx 6532; AVX512BW-NEXT: cmovgw %cx, %dx 6533; AVX512BW-NEXT: vmovd %xmm2, %esi 6534; AVX512BW-NEXT: vmovd %xmm4, %edi 6535; AVX512BW-NEXT: cmpw %si, %di 6536; AVX512BW-NEXT: movl $0, %esi 6537; AVX512BW-NEXT: cmovgw %cx, %si 6538; AVX512BW-NEXT: vmovd %esi, %xmm5 6539; AVX512BW-NEXT: vpinsrw $1, %edx, %xmm5, %xmm5 6540; AVX512BW-NEXT: vpextrw $2, %xmm2, %edx 6541; AVX512BW-NEXT: vpextrw $2, %xmm4, %esi 6542; AVX512BW-NEXT: cmpw %dx, %si 6543; AVX512BW-NEXT: movl $0, %edx 6544; AVX512BW-NEXT: cmovgw %cx, %dx 6545; AVX512BW-NEXT: vpinsrw $2, %edx, %xmm5, %xmm5 6546; AVX512BW-NEXT: vpextrw $3, %xmm2, %edx 6547; AVX512BW-NEXT: vpextrw $3, %xmm4, %esi 6548; AVX512BW-NEXT: cmpw %dx, %si 6549; AVX512BW-NEXT: movl $0, %edx 6550; AVX512BW-NEXT: cmovgw %cx, %dx 6551; AVX512BW-NEXT: vpinsrw $3, %edx, %xmm5, %xmm5 6552; AVX512BW-NEXT: vpextrw $4, %xmm2, %edx 6553; AVX512BW-NEXT: vpextrw $4, %xmm4, %esi 6554; AVX512BW-NEXT: cmpw %dx, %si 6555; AVX512BW-NEXT: movl $0, %edx 6556; AVX512BW-NEXT: cmovgw %cx, %dx 6557; AVX512BW-NEXT: vpinsrw $4, %edx, %xmm5, %xmm5 6558; AVX512BW-NEXT: vpextrw $5, %xmm2, %edx 6559; AVX512BW-NEXT: vpextrw $5, %xmm4, %esi 6560; AVX512BW-NEXT: cmpw %dx, %si 6561; AVX512BW-NEXT: movl $0, %edx 6562; AVX512BW-NEXT: cmovgw %cx, %dx 6563; AVX512BW-NEXT: vpinsrw $5, %edx, %xmm5, %xmm5 6564; AVX512BW-NEXT: vpextrw $6, %xmm2, %edx 6565; AVX512BW-NEXT: vpextrw $6, %xmm4, %esi 6566; AVX512BW-NEXT: cmpw %dx, %si 6567; AVX512BW-NEXT: movl $0, %edx 6568; AVX512BW-NEXT: cmovgw %cx, %dx 6569; AVX512BW-NEXT: vpinsrw $6, %edx, %xmm5, %xmm5 6570; AVX512BW-NEXT: vpextrw $7, %xmm2, %edx 6571; AVX512BW-NEXT: vpextrw $7, %xmm4, %esi 6572; AVX512BW-NEXT: cmpw %dx, %si 6573; AVX512BW-NEXT: movl $0, %edx 6574; AVX512BW-NEXT: cmovgw %cx, %dx 6575; AVX512BW-NEXT: vpinsrw $7, %edx, %xmm5, %xmm2 6576; AVX512BW-NEXT: vextracti32x4 $2, %zmm3, %xmm4 6577; AVX512BW-NEXT: vpextrw $1, %xmm4, %edx 6578; AVX512BW-NEXT: vextracti32x4 $2, %zmm1, %xmm5 6579; AVX512BW-NEXT: vpextrw $1, %xmm5, %esi 6580; AVX512BW-NEXT: cmpw %dx, %si 6581; AVX512BW-NEXT: movl $0, %edx 6582; AVX512BW-NEXT: cmovgw %cx, %dx 6583; AVX512BW-NEXT: vmovd %xmm4, %esi 6584; AVX512BW-NEXT: vmovd %xmm5, %edi 6585; AVX512BW-NEXT: cmpw %si, %di 6586; AVX512BW-NEXT: movl $0, %esi 6587; AVX512BW-NEXT: cmovgw %cx, %si 6588; AVX512BW-NEXT: vmovd %esi, %xmm6 6589; AVX512BW-NEXT: vpinsrw $1, %edx, %xmm6, %xmm6 6590; AVX512BW-NEXT: vpextrw $2, %xmm4, %edx 6591; AVX512BW-NEXT: vpextrw $2, %xmm5, %esi 6592; AVX512BW-NEXT: cmpw %dx, %si 6593; AVX512BW-NEXT: movl $0, %edx 6594; AVX512BW-NEXT: cmovgw %cx, %dx 6595; AVX512BW-NEXT: vpinsrw $2, %edx, %xmm6, %xmm6 6596; AVX512BW-NEXT: vpextrw $3, %xmm4, %edx 6597; AVX512BW-NEXT: vpextrw $3, %xmm5, %esi 6598; AVX512BW-NEXT: cmpw %dx, %si 6599; AVX512BW-NEXT: movl $0, %edx 6600; AVX512BW-NEXT: cmovgw %cx, %dx 6601; AVX512BW-NEXT: vpinsrw $3, %edx, %xmm6, %xmm6 6602; AVX512BW-NEXT: vpextrw $4, %xmm4, %edx 6603; AVX512BW-NEXT: vpextrw $4, %xmm5, %esi 6604; AVX512BW-NEXT: cmpw %dx, %si 6605; AVX512BW-NEXT: movl $0, %edx 6606; AVX512BW-NEXT: cmovgw %cx, %dx 6607; AVX512BW-NEXT: vpinsrw $4, %edx, %xmm6, %xmm6 6608; AVX512BW-NEXT: vpextrw $5, %xmm4, %edx 6609; AVX512BW-NEXT: vpextrw $5, %xmm5, %esi 6610; AVX512BW-NEXT: cmpw %dx, %si 6611; AVX512BW-NEXT: movl $0, %edx 6612; AVX512BW-NEXT: cmovgw %cx, %dx 6613; AVX512BW-NEXT: vpinsrw $5, %edx, %xmm6, %xmm6 6614; AVX512BW-NEXT: vpextrw $6, %xmm4, %edx 6615; AVX512BW-NEXT: vpextrw $6, %xmm5, %esi 6616; AVX512BW-NEXT: cmpw %dx, %si 6617; AVX512BW-NEXT: movl $0, %edx 6618; AVX512BW-NEXT: cmovgw %cx, %dx 6619; AVX512BW-NEXT: vpinsrw $6, %edx, %xmm6, %xmm6 6620; AVX512BW-NEXT: vpextrw $7, %xmm4, %edx 6621; AVX512BW-NEXT: vpextrw $7, %xmm5, %esi 6622; AVX512BW-NEXT: cmpw %dx, %si 6623; AVX512BW-NEXT: movl $0, %edx 6624; AVX512BW-NEXT: cmovgw %cx, %dx 6625; AVX512BW-NEXT: vpinsrw $7, %edx, %xmm6, %xmm4 6626; AVX512BW-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2 6627; AVX512BW-NEXT: vextracti32x4 $1, %zmm3, %xmm4 6628; AVX512BW-NEXT: vpextrw $1, %xmm4, %edx 6629; AVX512BW-NEXT: vextracti32x4 $1, %zmm1, %xmm5 6630; AVX512BW-NEXT: vpextrw $1, %xmm5, %esi 6631; AVX512BW-NEXT: cmpw %dx, %si 6632; AVX512BW-NEXT: movl $0, %edx 6633; AVX512BW-NEXT: cmovgw %cx, %dx 6634; AVX512BW-NEXT: vmovd %xmm4, %esi 6635; AVX512BW-NEXT: vmovd %xmm5, %edi 6636; AVX512BW-NEXT: cmpw %si, %di 6637; AVX512BW-NEXT: movl $0, %esi 6638; AVX512BW-NEXT: cmovgw %cx, %si 6639; AVX512BW-NEXT: vmovd %esi, %xmm6 6640; AVX512BW-NEXT: vpinsrw $1, %edx, %xmm6, %xmm6 6641; AVX512BW-NEXT: vpextrw $2, %xmm4, %edx 6642; AVX512BW-NEXT: vpextrw $2, %xmm5, %esi 6643; AVX512BW-NEXT: cmpw %dx, %si 6644; AVX512BW-NEXT: movl $0, %edx 6645; AVX512BW-NEXT: cmovgw %cx, %dx 6646; AVX512BW-NEXT: vpinsrw $2, %edx, %xmm6, %xmm6 6647; AVX512BW-NEXT: vpextrw $3, %xmm4, %edx 6648; AVX512BW-NEXT: vpextrw $3, %xmm5, %esi 6649; AVX512BW-NEXT: cmpw %dx, %si 6650; AVX512BW-NEXT: movl $0, %edx 6651; AVX512BW-NEXT: cmovgw %cx, %dx 6652; AVX512BW-NEXT: vpinsrw $3, %edx, %xmm6, %xmm6 6653; AVX512BW-NEXT: vpextrw $4, %xmm4, %edx 6654; AVX512BW-NEXT: vpextrw $4, %xmm5, %esi 6655; AVX512BW-NEXT: cmpw %dx, %si 6656; AVX512BW-NEXT: movl $0, %edx 6657; AVX512BW-NEXT: cmovgw %cx, %dx 6658; AVX512BW-NEXT: vpinsrw $4, %edx, %xmm6, %xmm6 6659; AVX512BW-NEXT: vpextrw $5, %xmm4, %edx 6660; AVX512BW-NEXT: vpextrw $5, %xmm5, %esi 6661; AVX512BW-NEXT: cmpw %dx, %si 6662; AVX512BW-NEXT: movl $0, %edx 6663; AVX512BW-NEXT: cmovgw %cx, %dx 6664; AVX512BW-NEXT: vpinsrw $5, %edx, %xmm6, %xmm6 6665; AVX512BW-NEXT: vpextrw $6, %xmm4, %edx 6666; AVX512BW-NEXT: vpextrw $6, %xmm5, %esi 6667; AVX512BW-NEXT: cmpw %dx, %si 6668; AVX512BW-NEXT: movl $0, %edx 6669; AVX512BW-NEXT: cmovgw %cx, %dx 6670; AVX512BW-NEXT: vpinsrw $6, %edx, %xmm6, %xmm6 6671; AVX512BW-NEXT: vpextrw $7, %xmm4, %edx 6672; AVX512BW-NEXT: vpextrw $7, %xmm5, %esi 6673; AVX512BW-NEXT: cmpw %dx, %si 6674; AVX512BW-NEXT: movl $0, %edx 6675; AVX512BW-NEXT: cmovgw %cx, %dx 6676; AVX512BW-NEXT: vpinsrw $7, %edx, %xmm6, %xmm4 6677; AVX512BW-NEXT: vpextrw $1, %xmm3, %edx 6678; AVX512BW-NEXT: vpextrw $1, %xmm1, %esi 6679; AVX512BW-NEXT: cmpw %dx, %si 6680; AVX512BW-NEXT: movl $0, %edx 6681; AVX512BW-NEXT: cmovgw %cx, %dx 6682; AVX512BW-NEXT: vmovd %xmm3, %esi 6683; AVX512BW-NEXT: vmovd %xmm1, %edi 6684; AVX512BW-NEXT: cmpw %si, %di 6685; AVX512BW-NEXT: movl $0, %esi 6686; AVX512BW-NEXT: cmovgw %cx, %si 6687; AVX512BW-NEXT: vmovd %esi, %xmm5 6688; AVX512BW-NEXT: vpinsrw $1, %edx, %xmm5, %xmm5 6689; AVX512BW-NEXT: vpextrw $2, %xmm3, %edx 6690; AVX512BW-NEXT: vpextrw $2, %xmm1, %esi 6691; AVX512BW-NEXT: cmpw %dx, %si 6692; AVX512BW-NEXT: movl $0, %edx 6693; AVX512BW-NEXT: cmovgw %cx, %dx 6694; AVX512BW-NEXT: vpinsrw $2, %edx, %xmm5, %xmm5 6695; AVX512BW-NEXT: vpextrw $3, %xmm3, %edx 6696; AVX512BW-NEXT: vpextrw $3, %xmm1, %esi 6697; AVX512BW-NEXT: cmpw %dx, %si 6698; AVX512BW-NEXT: movl $0, %edx 6699; AVX512BW-NEXT: cmovgw %cx, %dx 6700; AVX512BW-NEXT: vpinsrw $3, %edx, %xmm5, %xmm5 6701; AVX512BW-NEXT: vpextrw $4, %xmm3, %edx 6702; AVX512BW-NEXT: vpextrw $4, %xmm1, %esi 6703; AVX512BW-NEXT: cmpw %dx, %si 6704; AVX512BW-NEXT: movl $0, %edx 6705; AVX512BW-NEXT: cmovgw %cx, %dx 6706; AVX512BW-NEXT: vpinsrw $4, %edx, %xmm5, %xmm5 6707; AVX512BW-NEXT: vpextrw $5, %xmm3, %edx 6708; AVX512BW-NEXT: vpextrw $5, %xmm1, %esi 6709; AVX512BW-NEXT: cmpw %dx, %si 6710; AVX512BW-NEXT: movl $0, %edx 6711; AVX512BW-NEXT: cmovgw %cx, %dx 6712; AVX512BW-NEXT: vpinsrw $5, %edx, %xmm5, %xmm5 6713; AVX512BW-NEXT: vpextrw $6, %xmm3, %edx 6714; AVX512BW-NEXT: vpextrw $6, %xmm1, %esi 6715; AVX512BW-NEXT: cmpw %dx, %si 6716; AVX512BW-NEXT: movl $0, %edx 6717; AVX512BW-NEXT: cmovgw %cx, %dx 6718; AVX512BW-NEXT: vpinsrw $6, %edx, %xmm5, %xmm5 6719; AVX512BW-NEXT: vpextrw $7, %xmm3, %edx 6720; AVX512BW-NEXT: vpextrw $7, %xmm1, %esi 6721; AVX512BW-NEXT: cmpw %dx, %si 6722; AVX512BW-NEXT: cmovgw %cx, %ax 6723; AVX512BW-NEXT: vpinsrw $7, %eax, %xmm5, %xmm1 6724; AVX512BW-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1 6725; AVX512BW-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1 6726; AVX512BW-NEXT: vpmovwb %zmm1, %ymm1 6727; AVX512BW-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 6728; AVX512BW-NEXT: retq 6729 %1 = icmp sgt <64 x i16> %a0, %a1 6730 ret <64 x i1> %1 6731} 6732 6733define <128 x i1> @test_cmp_v128i8(<128 x i8> %a0, <128 x i8> %a1) nounwind { 6734; SSE2-LABEL: test_cmp_v128i8: 6735; SSE2: # BB#0: 6736; SSE2-NEXT: pushq %rax 6737; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm0 6738; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm1 6739; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm2 6740; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm3 6741; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm4 6742; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm5 6743; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm6 6744; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm7 6745; SSE2-NEXT: movdqa %xmm7, -{{[0-9]+}}(%rsp) 6746; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6747; SSE2-NEXT: andb $1, %al 6748; SSE2-NEXT: movb %al, 14(%rdi) 6749; SSE2-NEXT: movdqa %xmm6, -{{[0-9]+}}(%rsp) 6750; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6751; SSE2-NEXT: andb $1, %al 6752; SSE2-NEXT: movb %al, 12(%rdi) 6753; SSE2-NEXT: movdqa %xmm5, -{{[0-9]+}}(%rsp) 6754; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6755; SSE2-NEXT: andb $1, %al 6756; SSE2-NEXT: movb %al, 10(%rdi) 6757; SSE2-NEXT: movdqa %xmm4, -{{[0-9]+}}(%rsp) 6758; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6759; SSE2-NEXT: andb $1, %al 6760; SSE2-NEXT: movb %al, 8(%rdi) 6761; SSE2-NEXT: movdqa %xmm3, -{{[0-9]+}}(%rsp) 6762; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6763; SSE2-NEXT: andb $1, %al 6764; SSE2-NEXT: movb %al, 6(%rdi) 6765; SSE2-NEXT: movdqa %xmm2, -{{[0-9]+}}(%rsp) 6766; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6767; SSE2-NEXT: andb $1, %al 6768; SSE2-NEXT: movb %al, 4(%rdi) 6769; SSE2-NEXT: movdqa %xmm1, -{{[0-9]+}}(%rsp) 6770; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6771; SSE2-NEXT: andb $1, %al 6772; SSE2-NEXT: movb %al, 2(%rdi) 6773; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 6774; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6775; SSE2-NEXT: andb $1, %al 6776; SSE2-NEXT: movb %al, (%rdi) 6777; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6778; SSE2-NEXT: andb $1, %al 6779; SSE2-NEXT: movb %al, 14(%rdi) 6780; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6781; SSE2-NEXT: andb $1, %al 6782; SSE2-NEXT: movb %al, 12(%rdi) 6783; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6784; SSE2-NEXT: andb $1, %al 6785; SSE2-NEXT: movb %al, 10(%rdi) 6786; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6787; SSE2-NEXT: andb $1, %al 6788; SSE2-NEXT: movb %al, 8(%rdi) 6789; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6790; SSE2-NEXT: andb $1, %al 6791; SSE2-NEXT: movb %al, 6(%rdi) 6792; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6793; SSE2-NEXT: andb $1, %al 6794; SSE2-NEXT: movb %al, 4(%rdi) 6795; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6796; SSE2-NEXT: andb $1, %al 6797; SSE2-NEXT: movb %al, 2(%rdi) 6798; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6799; SSE2-NEXT: andb $1, %al 6800; SSE2-NEXT: movb %al, (%rdi) 6801; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6802; SSE2-NEXT: andb $1, %al 6803; SSE2-NEXT: movb %al, 14(%rdi) 6804; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6805; SSE2-NEXT: andb $1, %al 6806; SSE2-NEXT: movb %al, 12(%rdi) 6807; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6808; SSE2-NEXT: andb $1, %al 6809; SSE2-NEXT: movb %al, 10(%rdi) 6810; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6811; SSE2-NEXT: andb $1, %al 6812; SSE2-NEXT: movb %al, 8(%rdi) 6813; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6814; SSE2-NEXT: andb $1, %al 6815; SSE2-NEXT: movb %al, 6(%rdi) 6816; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6817; SSE2-NEXT: andb $1, %al 6818; SSE2-NEXT: movb %al, 4(%rdi) 6819; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6820; SSE2-NEXT: andb $1, %al 6821; SSE2-NEXT: movb %al, 2(%rdi) 6822; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6823; SSE2-NEXT: andb $1, %al 6824; SSE2-NEXT: movb %al, (%rdi) 6825; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6826; SSE2-NEXT: andb $1, %al 6827; SSE2-NEXT: movb %al, 14(%rdi) 6828; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6829; SSE2-NEXT: andb $1, %al 6830; SSE2-NEXT: movb %al, 12(%rdi) 6831; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6832; SSE2-NEXT: andb $1, %al 6833; SSE2-NEXT: movb %al, 10(%rdi) 6834; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6835; SSE2-NEXT: andb $1, %al 6836; SSE2-NEXT: movb %al, 8(%rdi) 6837; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6838; SSE2-NEXT: andb $1, %al 6839; SSE2-NEXT: movb %al, 6(%rdi) 6840; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6841; SSE2-NEXT: andb $1, %al 6842; SSE2-NEXT: movb %al, 4(%rdi) 6843; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6844; SSE2-NEXT: andb $1, %al 6845; SSE2-NEXT: movb %al, 2(%rdi) 6846; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6847; SSE2-NEXT: andb $1, %al 6848; SSE2-NEXT: movb %al, (%rdi) 6849; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6850; SSE2-NEXT: andb $1, %al 6851; SSE2-NEXT: movb %al, 14(%rdi) 6852; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6853; SSE2-NEXT: andb $1, %al 6854; SSE2-NEXT: movb %al, 12(%rdi) 6855; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6856; SSE2-NEXT: andb $1, %al 6857; SSE2-NEXT: movb %al, 10(%rdi) 6858; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6859; SSE2-NEXT: andb $1, %al 6860; SSE2-NEXT: movb %al, 8(%rdi) 6861; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6862; SSE2-NEXT: andb $1, %al 6863; SSE2-NEXT: movb %al, 6(%rdi) 6864; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6865; SSE2-NEXT: andb $1, %al 6866; SSE2-NEXT: movb %al, 4(%rdi) 6867; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6868; SSE2-NEXT: andb $1, %al 6869; SSE2-NEXT: movb %al, 2(%rdi) 6870; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6871; SSE2-NEXT: andb $1, %al 6872; SSE2-NEXT: movb %al, (%rdi) 6873; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6874; SSE2-NEXT: andb $1, %al 6875; SSE2-NEXT: movb %al, 14(%rdi) 6876; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6877; SSE2-NEXT: andb $1, %al 6878; SSE2-NEXT: movb %al, 12(%rdi) 6879; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6880; SSE2-NEXT: andb $1, %al 6881; SSE2-NEXT: movb %al, 10(%rdi) 6882; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6883; SSE2-NEXT: andb $1, %al 6884; SSE2-NEXT: movb %al, 8(%rdi) 6885; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6886; SSE2-NEXT: andb $1, %al 6887; SSE2-NEXT: movb %al, 6(%rdi) 6888; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6889; SSE2-NEXT: andb $1, %al 6890; SSE2-NEXT: movb %al, 4(%rdi) 6891; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6892; SSE2-NEXT: andb $1, %al 6893; SSE2-NEXT: movb %al, 2(%rdi) 6894; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6895; SSE2-NEXT: andb $1, %al 6896; SSE2-NEXT: movb %al, (%rdi) 6897; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6898; SSE2-NEXT: andb $1, %al 6899; SSE2-NEXT: movb %al, 14(%rdi) 6900; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6901; SSE2-NEXT: andb $1, %al 6902; SSE2-NEXT: movb %al, 12(%rdi) 6903; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6904; SSE2-NEXT: andb $1, %al 6905; SSE2-NEXT: movb %al, 10(%rdi) 6906; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6907; SSE2-NEXT: andb $1, %al 6908; SSE2-NEXT: movb %al, 8(%rdi) 6909; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6910; SSE2-NEXT: andb $1, %al 6911; SSE2-NEXT: movb %al, 6(%rdi) 6912; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6913; SSE2-NEXT: andb $1, %al 6914; SSE2-NEXT: movb %al, 4(%rdi) 6915; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6916; SSE2-NEXT: andb $1, %al 6917; SSE2-NEXT: movb %al, 2(%rdi) 6918; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6919; SSE2-NEXT: andb $1, %al 6920; SSE2-NEXT: movb %al, (%rdi) 6921; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6922; SSE2-NEXT: andb $1, %al 6923; SSE2-NEXT: movb %al, 14(%rdi) 6924; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6925; SSE2-NEXT: andb $1, %al 6926; SSE2-NEXT: movb %al, 12(%rdi) 6927; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6928; SSE2-NEXT: andb $1, %al 6929; SSE2-NEXT: movb %al, 10(%rdi) 6930; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6931; SSE2-NEXT: andb $1, %al 6932; SSE2-NEXT: movb %al, 8(%rdi) 6933; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6934; SSE2-NEXT: andb $1, %al 6935; SSE2-NEXT: movb %al, 6(%rdi) 6936; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6937; SSE2-NEXT: andb $1, %al 6938; SSE2-NEXT: movb %al, 4(%rdi) 6939; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6940; SSE2-NEXT: andb $1, %al 6941; SSE2-NEXT: movb %al, 2(%rdi) 6942; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6943; SSE2-NEXT: andb $1, %al 6944; SSE2-NEXT: movb %al, (%rdi) 6945; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6946; SSE2-NEXT: andb $1, %al 6947; SSE2-NEXT: movb %al, 14(%rdi) 6948; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6949; SSE2-NEXT: andb $1, %al 6950; SSE2-NEXT: movb %al, 12(%rdi) 6951; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6952; SSE2-NEXT: andb $1, %al 6953; SSE2-NEXT: movb %al, 10(%rdi) 6954; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6955; SSE2-NEXT: andb $1, %al 6956; SSE2-NEXT: movb %al, 8(%rdi) 6957; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6958; SSE2-NEXT: andb $1, %al 6959; SSE2-NEXT: movb %al, 6(%rdi) 6960; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6961; SSE2-NEXT: andb $1, %al 6962; SSE2-NEXT: movb %al, 4(%rdi) 6963; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6964; SSE2-NEXT: andb $1, %al 6965; SSE2-NEXT: movb %al, 2(%rdi) 6966; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6967; SSE2-NEXT: andb $1, %al 6968; SSE2-NEXT: movb %al, (%rdi) 6969; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6970; SSE2-NEXT: andb $1, %al 6971; SSE2-NEXT: movb %al, 14(%rdi) 6972; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6973; SSE2-NEXT: andb $1, %al 6974; SSE2-NEXT: movb %al, 12(%rdi) 6975; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6976; SSE2-NEXT: andb $1, %al 6977; SSE2-NEXT: movb %al, 10(%rdi) 6978; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6979; SSE2-NEXT: andb $1, %al 6980; SSE2-NEXT: movb %al, 8(%rdi) 6981; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6982; SSE2-NEXT: andb $1, %al 6983; SSE2-NEXT: movb %al, 6(%rdi) 6984; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6985; SSE2-NEXT: andb $1, %al 6986; SSE2-NEXT: movb %al, 4(%rdi) 6987; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6988; SSE2-NEXT: andb $1, %al 6989; SSE2-NEXT: movb %al, 2(%rdi) 6990; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6991; SSE2-NEXT: andb $1, %al 6992; SSE2-NEXT: movb %al, (%rdi) 6993; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6994; SSE2-NEXT: andb $1, %al 6995; SSE2-NEXT: movb %al, 14(%rdi) 6996; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6997; SSE2-NEXT: andb $1, %al 6998; SSE2-NEXT: movb %al, 12(%rdi) 6999; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7000; SSE2-NEXT: andb $1, %al 7001; SSE2-NEXT: movb %al, 10(%rdi) 7002; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7003; SSE2-NEXT: andb $1, %al 7004; SSE2-NEXT: movb %al, 8(%rdi) 7005; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7006; SSE2-NEXT: andb $1, %al 7007; SSE2-NEXT: movb %al, 6(%rdi) 7008; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7009; SSE2-NEXT: andb $1, %al 7010; SSE2-NEXT: movb %al, 4(%rdi) 7011; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7012; SSE2-NEXT: andb $1, %al 7013; SSE2-NEXT: movb %al, 2(%rdi) 7014; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7015; SSE2-NEXT: andb $1, %al 7016; SSE2-NEXT: movb %al, (%rdi) 7017; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7018; SSE2-NEXT: andb $1, %al 7019; SSE2-NEXT: movb %al, 14(%rdi) 7020; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7021; SSE2-NEXT: andb $1, %al 7022; SSE2-NEXT: movb %al, 12(%rdi) 7023; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7024; SSE2-NEXT: andb $1, %al 7025; SSE2-NEXT: movb %al, 10(%rdi) 7026; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7027; SSE2-NEXT: andb $1, %al 7028; SSE2-NEXT: movb %al, 8(%rdi) 7029; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7030; SSE2-NEXT: andb $1, %al 7031; SSE2-NEXT: movb %al, 6(%rdi) 7032; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7033; SSE2-NEXT: andb $1, %al 7034; SSE2-NEXT: movb %al, 4(%rdi) 7035; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7036; SSE2-NEXT: andb $1, %al 7037; SSE2-NEXT: movb %al, 2(%rdi) 7038; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7039; SSE2-NEXT: andb $1, %al 7040; SSE2-NEXT: movb %al, (%rdi) 7041; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7042; SSE2-NEXT: andb $1, %al 7043; SSE2-NEXT: movb %al, 14(%rdi) 7044; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7045; SSE2-NEXT: andb $1, %al 7046; SSE2-NEXT: movb %al, 12(%rdi) 7047; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7048; SSE2-NEXT: andb $1, %al 7049; SSE2-NEXT: movb %al, 10(%rdi) 7050; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7051; SSE2-NEXT: andb $1, %al 7052; SSE2-NEXT: movb %al, 8(%rdi) 7053; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7054; SSE2-NEXT: andb $1, %al 7055; SSE2-NEXT: movb %al, 6(%rdi) 7056; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7057; SSE2-NEXT: andb $1, %al 7058; SSE2-NEXT: movb %al, 4(%rdi) 7059; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7060; SSE2-NEXT: andb $1, %al 7061; SSE2-NEXT: movb %al, 2(%rdi) 7062; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7063; SSE2-NEXT: andb $1, %al 7064; SSE2-NEXT: movb %al, (%rdi) 7065; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7066; SSE2-NEXT: andb $1, %al 7067; SSE2-NEXT: movb %al, 14(%rdi) 7068; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7069; SSE2-NEXT: andb $1, %al 7070; SSE2-NEXT: movb %al, 12(%rdi) 7071; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7072; SSE2-NEXT: andb $1, %al 7073; SSE2-NEXT: movb %al, 10(%rdi) 7074; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7075; SSE2-NEXT: andb $1, %al 7076; SSE2-NEXT: movb %al, 8(%rdi) 7077; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7078; SSE2-NEXT: andb $1, %al 7079; SSE2-NEXT: movb %al, 6(%rdi) 7080; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7081; SSE2-NEXT: andb $1, %al 7082; SSE2-NEXT: movb %al, 4(%rdi) 7083; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7084; SSE2-NEXT: andb $1, %al 7085; SSE2-NEXT: movb %al, 2(%rdi) 7086; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7087; SSE2-NEXT: andb $1, %al 7088; SSE2-NEXT: movb %al, (%rdi) 7089; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7090; SSE2-NEXT: andb $1, %al 7091; SSE2-NEXT: movb %al, 14(%rdi) 7092; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7093; SSE2-NEXT: andb $1, %al 7094; SSE2-NEXT: movb %al, 12(%rdi) 7095; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7096; SSE2-NEXT: andb $1, %al 7097; SSE2-NEXT: movb %al, 10(%rdi) 7098; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7099; SSE2-NEXT: andb $1, %al 7100; SSE2-NEXT: movb %al, 8(%rdi) 7101; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7102; SSE2-NEXT: andb $1, %al 7103; SSE2-NEXT: movb %al, 6(%rdi) 7104; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7105; SSE2-NEXT: andb $1, %al 7106; SSE2-NEXT: movb %al, 4(%rdi) 7107; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7108; SSE2-NEXT: andb $1, %al 7109; SSE2-NEXT: movb %al, 2(%rdi) 7110; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7111; SSE2-NEXT: andb $1, %al 7112; SSE2-NEXT: movb %al, (%rdi) 7113; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7114; SSE2-NEXT: andb $1, %al 7115; SSE2-NEXT: movb %al, 14(%rdi) 7116; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7117; SSE2-NEXT: andb $1, %al 7118; SSE2-NEXT: movb %al, 12(%rdi) 7119; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7120; SSE2-NEXT: andb $1, %al 7121; SSE2-NEXT: movb %al, 10(%rdi) 7122; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7123; SSE2-NEXT: andb $1, %al 7124; SSE2-NEXT: movb %al, 8(%rdi) 7125; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7126; SSE2-NEXT: andb $1, %al 7127; SSE2-NEXT: movb %al, 6(%rdi) 7128; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7129; SSE2-NEXT: andb $1, %al 7130; SSE2-NEXT: movb %al, 4(%rdi) 7131; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7132; SSE2-NEXT: andb $1, %al 7133; SSE2-NEXT: movb %al, 2(%rdi) 7134; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7135; SSE2-NEXT: andb $1, %al 7136; SSE2-NEXT: movb %al, (%rdi) 7137; SSE2-NEXT: movq %rdi, %rax 7138; SSE2-NEXT: popq %rcx 7139; SSE2-NEXT: retq 7140; 7141; SSE42-LABEL: test_cmp_v128i8: 7142; SSE42: # BB#0: 7143; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm0 7144; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm1 7145; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm2 7146; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm3 7147; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm4 7148; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm5 7149; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm6 7150; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm7 7151; SSE42-NEXT: pextrb $15, %xmm7, %eax 7152; SSE42-NEXT: andb $1, %al 7153; SSE42-NEXT: movb %al, 14(%rdi) 7154; SSE42-NEXT: pextrb $14, %xmm7, %eax 7155; SSE42-NEXT: andb $1, %al 7156; SSE42-NEXT: movb %al, 14(%rdi) 7157; SSE42-NEXT: pextrb $13, %xmm7, %eax 7158; SSE42-NEXT: andb $1, %al 7159; SSE42-NEXT: movb %al, 14(%rdi) 7160; SSE42-NEXT: pextrb $12, %xmm7, %eax 7161; SSE42-NEXT: andb $1, %al 7162; SSE42-NEXT: movb %al, 14(%rdi) 7163; SSE42-NEXT: pextrb $11, %xmm7, %eax 7164; SSE42-NEXT: andb $1, %al 7165; SSE42-NEXT: movb %al, 14(%rdi) 7166; SSE42-NEXT: pextrb $10, %xmm7, %eax 7167; SSE42-NEXT: andb $1, %al 7168; SSE42-NEXT: movb %al, 14(%rdi) 7169; SSE42-NEXT: pextrb $9, %xmm7, %eax 7170; SSE42-NEXT: andb $1, %al 7171; SSE42-NEXT: movb %al, 14(%rdi) 7172; SSE42-NEXT: pextrb $8, %xmm7, %eax 7173; SSE42-NEXT: andb $1, %al 7174; SSE42-NEXT: movb %al, 14(%rdi) 7175; SSE42-NEXT: pextrb $7, %xmm7, %eax 7176; SSE42-NEXT: andb $1, %al 7177; SSE42-NEXT: movb %al, 14(%rdi) 7178; SSE42-NEXT: pextrb $6, %xmm7, %eax 7179; SSE42-NEXT: andb $1, %al 7180; SSE42-NEXT: movb %al, 14(%rdi) 7181; SSE42-NEXT: pextrb $5, %xmm7, %eax 7182; SSE42-NEXT: andb $1, %al 7183; SSE42-NEXT: movb %al, 14(%rdi) 7184; SSE42-NEXT: pextrb $4, %xmm7, %eax 7185; SSE42-NEXT: andb $1, %al 7186; SSE42-NEXT: movb %al, 14(%rdi) 7187; SSE42-NEXT: pextrb $3, %xmm7, %eax 7188; SSE42-NEXT: andb $1, %al 7189; SSE42-NEXT: movb %al, 14(%rdi) 7190; SSE42-NEXT: pextrb $2, %xmm7, %eax 7191; SSE42-NEXT: andb $1, %al 7192; SSE42-NEXT: movb %al, 14(%rdi) 7193; SSE42-NEXT: pextrb $1, %xmm7, %eax 7194; SSE42-NEXT: andb $1, %al 7195; SSE42-NEXT: movb %al, 14(%rdi) 7196; SSE42-NEXT: pextrb $0, %xmm7, %eax 7197; SSE42-NEXT: andb $1, %al 7198; SSE42-NEXT: movb %al, 14(%rdi) 7199; SSE42-NEXT: pextrb $15, %xmm6, %eax 7200; SSE42-NEXT: andb $1, %al 7201; SSE42-NEXT: movb %al, 12(%rdi) 7202; SSE42-NEXT: pextrb $14, %xmm6, %eax 7203; SSE42-NEXT: andb $1, %al 7204; SSE42-NEXT: movb %al, 12(%rdi) 7205; SSE42-NEXT: pextrb $13, %xmm6, %eax 7206; SSE42-NEXT: andb $1, %al 7207; SSE42-NEXT: movb %al, 12(%rdi) 7208; SSE42-NEXT: pextrb $12, %xmm6, %eax 7209; SSE42-NEXT: andb $1, %al 7210; SSE42-NEXT: movb %al, 12(%rdi) 7211; SSE42-NEXT: pextrb $11, %xmm6, %eax 7212; SSE42-NEXT: andb $1, %al 7213; SSE42-NEXT: movb %al, 12(%rdi) 7214; SSE42-NEXT: pextrb $10, %xmm6, %eax 7215; SSE42-NEXT: andb $1, %al 7216; SSE42-NEXT: movb %al, 12(%rdi) 7217; SSE42-NEXT: pextrb $9, %xmm6, %eax 7218; SSE42-NEXT: andb $1, %al 7219; SSE42-NEXT: movb %al, 12(%rdi) 7220; SSE42-NEXT: pextrb $8, %xmm6, %eax 7221; SSE42-NEXT: andb $1, %al 7222; SSE42-NEXT: movb %al, 12(%rdi) 7223; SSE42-NEXT: pextrb $7, %xmm6, %eax 7224; SSE42-NEXT: andb $1, %al 7225; SSE42-NEXT: movb %al, 12(%rdi) 7226; SSE42-NEXT: pextrb $6, %xmm6, %eax 7227; SSE42-NEXT: andb $1, %al 7228; SSE42-NEXT: movb %al, 12(%rdi) 7229; SSE42-NEXT: pextrb $5, %xmm6, %eax 7230; SSE42-NEXT: andb $1, %al 7231; SSE42-NEXT: movb %al, 12(%rdi) 7232; SSE42-NEXT: pextrb $4, %xmm6, %eax 7233; SSE42-NEXT: andb $1, %al 7234; SSE42-NEXT: movb %al, 12(%rdi) 7235; SSE42-NEXT: pextrb $3, %xmm6, %eax 7236; SSE42-NEXT: andb $1, %al 7237; SSE42-NEXT: movb %al, 12(%rdi) 7238; SSE42-NEXT: pextrb $2, %xmm6, %eax 7239; SSE42-NEXT: andb $1, %al 7240; SSE42-NEXT: movb %al, 12(%rdi) 7241; SSE42-NEXT: pextrb $1, %xmm6, %eax 7242; SSE42-NEXT: andb $1, %al 7243; SSE42-NEXT: movb %al, 12(%rdi) 7244; SSE42-NEXT: pextrb $0, %xmm6, %eax 7245; SSE42-NEXT: andb $1, %al 7246; SSE42-NEXT: movb %al, 12(%rdi) 7247; SSE42-NEXT: pextrb $15, %xmm5, %eax 7248; SSE42-NEXT: andb $1, %al 7249; SSE42-NEXT: movb %al, 10(%rdi) 7250; SSE42-NEXT: pextrb $14, %xmm5, %eax 7251; SSE42-NEXT: andb $1, %al 7252; SSE42-NEXT: movb %al, 10(%rdi) 7253; SSE42-NEXT: pextrb $13, %xmm5, %eax 7254; SSE42-NEXT: andb $1, %al 7255; SSE42-NEXT: movb %al, 10(%rdi) 7256; SSE42-NEXT: pextrb $12, %xmm5, %eax 7257; SSE42-NEXT: andb $1, %al 7258; SSE42-NEXT: movb %al, 10(%rdi) 7259; SSE42-NEXT: pextrb $11, %xmm5, %eax 7260; SSE42-NEXT: andb $1, %al 7261; SSE42-NEXT: movb %al, 10(%rdi) 7262; SSE42-NEXT: pextrb $10, %xmm5, %eax 7263; SSE42-NEXT: andb $1, %al 7264; SSE42-NEXT: movb %al, 10(%rdi) 7265; SSE42-NEXT: pextrb $9, %xmm5, %eax 7266; SSE42-NEXT: andb $1, %al 7267; SSE42-NEXT: movb %al, 10(%rdi) 7268; SSE42-NEXT: pextrb $8, %xmm5, %eax 7269; SSE42-NEXT: andb $1, %al 7270; SSE42-NEXT: movb %al, 10(%rdi) 7271; SSE42-NEXT: pextrb $7, %xmm5, %eax 7272; SSE42-NEXT: andb $1, %al 7273; SSE42-NEXT: movb %al, 10(%rdi) 7274; SSE42-NEXT: pextrb $6, %xmm5, %eax 7275; SSE42-NEXT: andb $1, %al 7276; SSE42-NEXT: movb %al, 10(%rdi) 7277; SSE42-NEXT: pextrb $5, %xmm5, %eax 7278; SSE42-NEXT: andb $1, %al 7279; SSE42-NEXT: movb %al, 10(%rdi) 7280; SSE42-NEXT: pextrb $4, %xmm5, %eax 7281; SSE42-NEXT: andb $1, %al 7282; SSE42-NEXT: movb %al, 10(%rdi) 7283; SSE42-NEXT: pextrb $3, %xmm5, %eax 7284; SSE42-NEXT: andb $1, %al 7285; SSE42-NEXT: movb %al, 10(%rdi) 7286; SSE42-NEXT: pextrb $2, %xmm5, %eax 7287; SSE42-NEXT: andb $1, %al 7288; SSE42-NEXT: movb %al, 10(%rdi) 7289; SSE42-NEXT: pextrb $1, %xmm5, %eax 7290; SSE42-NEXT: andb $1, %al 7291; SSE42-NEXT: movb %al, 10(%rdi) 7292; SSE42-NEXT: pextrb $0, %xmm5, %eax 7293; SSE42-NEXT: andb $1, %al 7294; SSE42-NEXT: movb %al, 10(%rdi) 7295; SSE42-NEXT: pextrb $15, %xmm4, %eax 7296; SSE42-NEXT: andb $1, %al 7297; SSE42-NEXT: movb %al, 8(%rdi) 7298; SSE42-NEXT: pextrb $14, %xmm4, %eax 7299; SSE42-NEXT: andb $1, %al 7300; SSE42-NEXT: movb %al, 8(%rdi) 7301; SSE42-NEXT: pextrb $13, %xmm4, %eax 7302; SSE42-NEXT: andb $1, %al 7303; SSE42-NEXT: movb %al, 8(%rdi) 7304; SSE42-NEXT: pextrb $12, %xmm4, %eax 7305; SSE42-NEXT: andb $1, %al 7306; SSE42-NEXT: movb %al, 8(%rdi) 7307; SSE42-NEXT: pextrb $11, %xmm4, %eax 7308; SSE42-NEXT: andb $1, %al 7309; SSE42-NEXT: movb %al, 8(%rdi) 7310; SSE42-NEXT: pextrb $10, %xmm4, %eax 7311; SSE42-NEXT: andb $1, %al 7312; SSE42-NEXT: movb %al, 8(%rdi) 7313; SSE42-NEXT: pextrb $9, %xmm4, %eax 7314; SSE42-NEXT: andb $1, %al 7315; SSE42-NEXT: movb %al, 8(%rdi) 7316; SSE42-NEXT: pextrb $8, %xmm4, %eax 7317; SSE42-NEXT: andb $1, %al 7318; SSE42-NEXT: movb %al, 8(%rdi) 7319; SSE42-NEXT: pextrb $7, %xmm4, %eax 7320; SSE42-NEXT: andb $1, %al 7321; SSE42-NEXT: movb %al, 8(%rdi) 7322; SSE42-NEXT: pextrb $6, %xmm4, %eax 7323; SSE42-NEXT: andb $1, %al 7324; SSE42-NEXT: movb %al, 8(%rdi) 7325; SSE42-NEXT: pextrb $5, %xmm4, %eax 7326; SSE42-NEXT: andb $1, %al 7327; SSE42-NEXT: movb %al, 8(%rdi) 7328; SSE42-NEXT: pextrb $4, %xmm4, %eax 7329; SSE42-NEXT: andb $1, %al 7330; SSE42-NEXT: movb %al, 8(%rdi) 7331; SSE42-NEXT: pextrb $3, %xmm4, %eax 7332; SSE42-NEXT: andb $1, %al 7333; SSE42-NEXT: movb %al, 8(%rdi) 7334; SSE42-NEXT: pextrb $2, %xmm4, %eax 7335; SSE42-NEXT: andb $1, %al 7336; SSE42-NEXT: movb %al, 8(%rdi) 7337; SSE42-NEXT: pextrb $1, %xmm4, %eax 7338; SSE42-NEXT: andb $1, %al 7339; SSE42-NEXT: movb %al, 8(%rdi) 7340; SSE42-NEXT: pextrb $0, %xmm4, %eax 7341; SSE42-NEXT: andb $1, %al 7342; SSE42-NEXT: movb %al, 8(%rdi) 7343; SSE42-NEXT: pextrb $15, %xmm3, %eax 7344; SSE42-NEXT: andb $1, %al 7345; SSE42-NEXT: movb %al, 6(%rdi) 7346; SSE42-NEXT: pextrb $14, %xmm3, %eax 7347; SSE42-NEXT: andb $1, %al 7348; SSE42-NEXT: movb %al, 6(%rdi) 7349; SSE42-NEXT: pextrb $13, %xmm3, %eax 7350; SSE42-NEXT: andb $1, %al 7351; SSE42-NEXT: movb %al, 6(%rdi) 7352; SSE42-NEXT: pextrb $12, %xmm3, %eax 7353; SSE42-NEXT: andb $1, %al 7354; SSE42-NEXT: movb %al, 6(%rdi) 7355; SSE42-NEXT: pextrb $11, %xmm3, %eax 7356; SSE42-NEXT: andb $1, %al 7357; SSE42-NEXT: movb %al, 6(%rdi) 7358; SSE42-NEXT: pextrb $10, %xmm3, %eax 7359; SSE42-NEXT: andb $1, %al 7360; SSE42-NEXT: movb %al, 6(%rdi) 7361; SSE42-NEXT: pextrb $9, %xmm3, %eax 7362; SSE42-NEXT: andb $1, %al 7363; SSE42-NEXT: movb %al, 6(%rdi) 7364; SSE42-NEXT: pextrb $8, %xmm3, %eax 7365; SSE42-NEXT: andb $1, %al 7366; SSE42-NEXT: movb %al, 6(%rdi) 7367; SSE42-NEXT: pextrb $7, %xmm3, %eax 7368; SSE42-NEXT: andb $1, %al 7369; SSE42-NEXT: movb %al, 6(%rdi) 7370; SSE42-NEXT: pextrb $6, %xmm3, %eax 7371; SSE42-NEXT: andb $1, %al 7372; SSE42-NEXT: movb %al, 6(%rdi) 7373; SSE42-NEXT: pextrb $5, %xmm3, %eax 7374; SSE42-NEXT: andb $1, %al 7375; SSE42-NEXT: movb %al, 6(%rdi) 7376; SSE42-NEXT: pextrb $4, %xmm3, %eax 7377; SSE42-NEXT: andb $1, %al 7378; SSE42-NEXT: movb %al, 6(%rdi) 7379; SSE42-NEXT: pextrb $3, %xmm3, %eax 7380; SSE42-NEXT: andb $1, %al 7381; SSE42-NEXT: movb %al, 6(%rdi) 7382; SSE42-NEXT: pextrb $2, %xmm3, %eax 7383; SSE42-NEXT: andb $1, %al 7384; SSE42-NEXT: movb %al, 6(%rdi) 7385; SSE42-NEXT: pextrb $1, %xmm3, %eax 7386; SSE42-NEXT: andb $1, %al 7387; SSE42-NEXT: movb %al, 6(%rdi) 7388; SSE42-NEXT: pextrb $0, %xmm3, %eax 7389; SSE42-NEXT: andb $1, %al 7390; SSE42-NEXT: movb %al, 6(%rdi) 7391; SSE42-NEXT: pextrb $15, %xmm2, %eax 7392; SSE42-NEXT: andb $1, %al 7393; SSE42-NEXT: movb %al, 4(%rdi) 7394; SSE42-NEXT: pextrb $14, %xmm2, %eax 7395; SSE42-NEXT: andb $1, %al 7396; SSE42-NEXT: movb %al, 4(%rdi) 7397; SSE42-NEXT: pextrb $13, %xmm2, %eax 7398; SSE42-NEXT: andb $1, %al 7399; SSE42-NEXT: movb %al, 4(%rdi) 7400; SSE42-NEXT: pextrb $12, %xmm2, %eax 7401; SSE42-NEXT: andb $1, %al 7402; SSE42-NEXT: movb %al, 4(%rdi) 7403; SSE42-NEXT: pextrb $11, %xmm2, %eax 7404; SSE42-NEXT: andb $1, %al 7405; SSE42-NEXT: movb %al, 4(%rdi) 7406; SSE42-NEXT: pextrb $10, %xmm2, %eax 7407; SSE42-NEXT: andb $1, %al 7408; SSE42-NEXT: movb %al, 4(%rdi) 7409; SSE42-NEXT: pextrb $9, %xmm2, %eax 7410; SSE42-NEXT: andb $1, %al 7411; SSE42-NEXT: movb %al, 4(%rdi) 7412; SSE42-NEXT: pextrb $8, %xmm2, %eax 7413; SSE42-NEXT: andb $1, %al 7414; SSE42-NEXT: movb %al, 4(%rdi) 7415; SSE42-NEXT: pextrb $7, %xmm2, %eax 7416; SSE42-NEXT: andb $1, %al 7417; SSE42-NEXT: movb %al, 4(%rdi) 7418; SSE42-NEXT: pextrb $6, %xmm2, %eax 7419; SSE42-NEXT: andb $1, %al 7420; SSE42-NEXT: movb %al, 4(%rdi) 7421; SSE42-NEXT: pextrb $5, %xmm2, %eax 7422; SSE42-NEXT: andb $1, %al 7423; SSE42-NEXT: movb %al, 4(%rdi) 7424; SSE42-NEXT: pextrb $4, %xmm2, %eax 7425; SSE42-NEXT: andb $1, %al 7426; SSE42-NEXT: movb %al, 4(%rdi) 7427; SSE42-NEXT: pextrb $3, %xmm2, %eax 7428; SSE42-NEXT: andb $1, %al 7429; SSE42-NEXT: movb %al, 4(%rdi) 7430; SSE42-NEXT: pextrb $2, %xmm2, %eax 7431; SSE42-NEXT: andb $1, %al 7432; SSE42-NEXT: movb %al, 4(%rdi) 7433; SSE42-NEXT: pextrb $1, %xmm2, %eax 7434; SSE42-NEXT: andb $1, %al 7435; SSE42-NEXT: movb %al, 4(%rdi) 7436; SSE42-NEXT: pextrb $0, %xmm2, %eax 7437; SSE42-NEXT: andb $1, %al 7438; SSE42-NEXT: movb %al, 4(%rdi) 7439; SSE42-NEXT: pextrb $15, %xmm1, %eax 7440; SSE42-NEXT: andb $1, %al 7441; SSE42-NEXT: movb %al, 2(%rdi) 7442; SSE42-NEXT: pextrb $14, %xmm1, %eax 7443; SSE42-NEXT: andb $1, %al 7444; SSE42-NEXT: movb %al, 2(%rdi) 7445; SSE42-NEXT: pextrb $13, %xmm1, %eax 7446; SSE42-NEXT: andb $1, %al 7447; SSE42-NEXT: movb %al, 2(%rdi) 7448; SSE42-NEXT: pextrb $12, %xmm1, %eax 7449; SSE42-NEXT: andb $1, %al 7450; SSE42-NEXT: movb %al, 2(%rdi) 7451; SSE42-NEXT: pextrb $11, %xmm1, %eax 7452; SSE42-NEXT: andb $1, %al 7453; SSE42-NEXT: movb %al, 2(%rdi) 7454; SSE42-NEXT: pextrb $10, %xmm1, %eax 7455; SSE42-NEXT: andb $1, %al 7456; SSE42-NEXT: movb %al, 2(%rdi) 7457; SSE42-NEXT: pextrb $9, %xmm1, %eax 7458; SSE42-NEXT: andb $1, %al 7459; SSE42-NEXT: movb %al, 2(%rdi) 7460; SSE42-NEXT: pextrb $8, %xmm1, %eax 7461; SSE42-NEXT: andb $1, %al 7462; SSE42-NEXT: movb %al, 2(%rdi) 7463; SSE42-NEXT: pextrb $7, %xmm1, %eax 7464; SSE42-NEXT: andb $1, %al 7465; SSE42-NEXT: movb %al, 2(%rdi) 7466; SSE42-NEXT: pextrb $6, %xmm1, %eax 7467; SSE42-NEXT: andb $1, %al 7468; SSE42-NEXT: movb %al, 2(%rdi) 7469; SSE42-NEXT: pextrb $5, %xmm1, %eax 7470; SSE42-NEXT: andb $1, %al 7471; SSE42-NEXT: movb %al, 2(%rdi) 7472; SSE42-NEXT: pextrb $4, %xmm1, %eax 7473; SSE42-NEXT: andb $1, %al 7474; SSE42-NEXT: movb %al, 2(%rdi) 7475; SSE42-NEXT: pextrb $3, %xmm1, %eax 7476; SSE42-NEXT: andb $1, %al 7477; SSE42-NEXT: movb %al, 2(%rdi) 7478; SSE42-NEXT: pextrb $2, %xmm1, %eax 7479; SSE42-NEXT: andb $1, %al 7480; SSE42-NEXT: movb %al, 2(%rdi) 7481; SSE42-NEXT: pextrb $1, %xmm1, %eax 7482; SSE42-NEXT: andb $1, %al 7483; SSE42-NEXT: movb %al, 2(%rdi) 7484; SSE42-NEXT: pextrb $0, %xmm1, %eax 7485; SSE42-NEXT: andb $1, %al 7486; SSE42-NEXT: movb %al, 2(%rdi) 7487; SSE42-NEXT: pextrb $15, %xmm0, %eax 7488; SSE42-NEXT: andb $1, %al 7489; SSE42-NEXT: movb %al, (%rdi) 7490; SSE42-NEXT: pextrb $14, %xmm0, %eax 7491; SSE42-NEXT: andb $1, %al 7492; SSE42-NEXT: movb %al, (%rdi) 7493; SSE42-NEXT: pextrb $13, %xmm0, %eax 7494; SSE42-NEXT: andb $1, %al 7495; SSE42-NEXT: movb %al, (%rdi) 7496; SSE42-NEXT: pextrb $12, %xmm0, %eax 7497; SSE42-NEXT: andb $1, %al 7498; SSE42-NEXT: movb %al, (%rdi) 7499; SSE42-NEXT: pextrb $11, %xmm0, %eax 7500; SSE42-NEXT: andb $1, %al 7501; SSE42-NEXT: movb %al, (%rdi) 7502; SSE42-NEXT: pextrb $10, %xmm0, %eax 7503; SSE42-NEXT: andb $1, %al 7504; SSE42-NEXT: movb %al, (%rdi) 7505; SSE42-NEXT: pextrb $9, %xmm0, %eax 7506; SSE42-NEXT: andb $1, %al 7507; SSE42-NEXT: movb %al, (%rdi) 7508; SSE42-NEXT: pextrb $8, %xmm0, %eax 7509; SSE42-NEXT: andb $1, %al 7510; SSE42-NEXT: movb %al, (%rdi) 7511; SSE42-NEXT: pextrb $7, %xmm0, %eax 7512; SSE42-NEXT: andb $1, %al 7513; SSE42-NEXT: movb %al, (%rdi) 7514; SSE42-NEXT: pextrb $6, %xmm0, %eax 7515; SSE42-NEXT: andb $1, %al 7516; SSE42-NEXT: movb %al, (%rdi) 7517; SSE42-NEXT: pextrb $5, %xmm0, %eax 7518; SSE42-NEXT: andb $1, %al 7519; SSE42-NEXT: movb %al, (%rdi) 7520; SSE42-NEXT: pextrb $4, %xmm0, %eax 7521; SSE42-NEXT: andb $1, %al 7522; SSE42-NEXT: movb %al, (%rdi) 7523; SSE42-NEXT: pextrb $3, %xmm0, %eax 7524; SSE42-NEXT: andb $1, %al 7525; SSE42-NEXT: movb %al, (%rdi) 7526; SSE42-NEXT: pextrb $2, %xmm0, %eax 7527; SSE42-NEXT: andb $1, %al 7528; SSE42-NEXT: movb %al, (%rdi) 7529; SSE42-NEXT: pextrb $1, %xmm0, %eax 7530; SSE42-NEXT: andb $1, %al 7531; SSE42-NEXT: movb %al, (%rdi) 7532; SSE42-NEXT: pextrb $0, %xmm0, %eax 7533; SSE42-NEXT: andb $1, %al 7534; SSE42-NEXT: movb %al, (%rdi) 7535; SSE42-NEXT: movq %rdi, %rax 7536; SSE42-NEXT: retq 7537; 7538; AVX1-LABEL: test_cmp_v128i8: 7539; AVX1: # BB#0: 7540; AVX1-NEXT: vpcmpgtb %xmm4, %xmm0, %xmm8 7541; AVX1-NEXT: vextractf128 $1, %ymm4, %xmm4 7542; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 7543; AVX1-NEXT: vpcmpgtb %xmm4, %xmm0, %xmm0 7544; AVX1-NEXT: vpcmpgtb %xmm5, %xmm1, %xmm4 7545; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm5 7546; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1 7547; AVX1-NEXT: vpcmpgtb %xmm5, %xmm1, %xmm1 7548; AVX1-NEXT: vpcmpgtb %xmm6, %xmm2, %xmm5 7549; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm6 7550; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm2 7551; AVX1-NEXT: vpcmpgtb %xmm6, %xmm2, %xmm2 7552; AVX1-NEXT: vpcmpgtb %xmm7, %xmm3, %xmm6 7553; AVX1-NEXT: vextractf128 $1, %ymm7, %xmm7 7554; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm3 7555; AVX1-NEXT: vpcmpgtb %xmm7, %xmm3, %xmm3 7556; AVX1-NEXT: vpextrb $15, %xmm3, %eax 7557; AVX1-NEXT: andb $1, %al 7558; AVX1-NEXT: movb %al, 12(%rdi) 7559; AVX1-NEXT: vpextrb $14, %xmm3, %eax 7560; AVX1-NEXT: andb $1, %al 7561; AVX1-NEXT: movb %al, 12(%rdi) 7562; AVX1-NEXT: vpextrb $13, %xmm3, %eax 7563; AVX1-NEXT: andb $1, %al 7564; AVX1-NEXT: movb %al, 12(%rdi) 7565; AVX1-NEXT: vpextrb $12, %xmm3, %eax 7566; AVX1-NEXT: andb $1, %al 7567; AVX1-NEXT: movb %al, 12(%rdi) 7568; AVX1-NEXT: vpextrb $11, %xmm3, %eax 7569; AVX1-NEXT: andb $1, %al 7570; AVX1-NEXT: movb %al, 12(%rdi) 7571; AVX1-NEXT: vpextrb $10, %xmm3, %eax 7572; AVX1-NEXT: andb $1, %al 7573; AVX1-NEXT: movb %al, 12(%rdi) 7574; AVX1-NEXT: vpextrb $9, %xmm3, %eax 7575; AVX1-NEXT: andb $1, %al 7576; AVX1-NEXT: movb %al, 12(%rdi) 7577; AVX1-NEXT: vpextrb $8, %xmm3, %eax 7578; AVX1-NEXT: andb $1, %al 7579; AVX1-NEXT: movb %al, 12(%rdi) 7580; AVX1-NEXT: vpextrb $7, %xmm3, %eax 7581; AVX1-NEXT: andb $1, %al 7582; AVX1-NEXT: movb %al, 12(%rdi) 7583; AVX1-NEXT: vpextrb $6, %xmm3, %eax 7584; AVX1-NEXT: andb $1, %al 7585; AVX1-NEXT: movb %al, 12(%rdi) 7586; AVX1-NEXT: vpextrb $5, %xmm3, %eax 7587; AVX1-NEXT: andb $1, %al 7588; AVX1-NEXT: movb %al, 12(%rdi) 7589; AVX1-NEXT: vpextrb $4, %xmm3, %eax 7590; AVX1-NEXT: andb $1, %al 7591; AVX1-NEXT: movb %al, 12(%rdi) 7592; AVX1-NEXT: vpextrb $3, %xmm3, %eax 7593; AVX1-NEXT: andb $1, %al 7594; AVX1-NEXT: movb %al, 12(%rdi) 7595; AVX1-NEXT: vpextrb $2, %xmm3, %eax 7596; AVX1-NEXT: andb $1, %al 7597; AVX1-NEXT: movb %al, 12(%rdi) 7598; AVX1-NEXT: vpextrb $1, %xmm3, %eax 7599; AVX1-NEXT: andb $1, %al 7600; AVX1-NEXT: movb %al, 12(%rdi) 7601; AVX1-NEXT: vpextrb $0, %xmm3, %eax 7602; AVX1-NEXT: andb $1, %al 7603; AVX1-NEXT: movb %al, 12(%rdi) 7604; AVX1-NEXT: vpextrb $15, %xmm6, %eax 7605; AVX1-NEXT: andb $1, %al 7606; AVX1-NEXT: movb %al, 12(%rdi) 7607; AVX1-NEXT: vpextrb $14, %xmm6, %eax 7608; AVX1-NEXT: andb $1, %al 7609; AVX1-NEXT: movb %al, 12(%rdi) 7610; AVX1-NEXT: vpextrb $13, %xmm6, %eax 7611; AVX1-NEXT: andb $1, %al 7612; AVX1-NEXT: movb %al, 12(%rdi) 7613; AVX1-NEXT: vpextrb $12, %xmm6, %eax 7614; AVX1-NEXT: andb $1, %al 7615; AVX1-NEXT: movb %al, 12(%rdi) 7616; AVX1-NEXT: vpextrb $11, %xmm6, %eax 7617; AVX1-NEXT: andb $1, %al 7618; AVX1-NEXT: movb %al, 12(%rdi) 7619; AVX1-NEXT: vpextrb $10, %xmm6, %eax 7620; AVX1-NEXT: andb $1, %al 7621; AVX1-NEXT: movb %al, 12(%rdi) 7622; AVX1-NEXT: vpextrb $9, %xmm6, %eax 7623; AVX1-NEXT: andb $1, %al 7624; AVX1-NEXT: movb %al, 12(%rdi) 7625; AVX1-NEXT: vpextrb $8, %xmm6, %eax 7626; AVX1-NEXT: andb $1, %al 7627; AVX1-NEXT: movb %al, 12(%rdi) 7628; AVX1-NEXT: vpextrb $7, %xmm6, %eax 7629; AVX1-NEXT: andb $1, %al 7630; AVX1-NEXT: movb %al, 12(%rdi) 7631; AVX1-NEXT: vpextrb $6, %xmm6, %eax 7632; AVX1-NEXT: andb $1, %al 7633; AVX1-NEXT: movb %al, 12(%rdi) 7634; AVX1-NEXT: vpextrb $5, %xmm6, %eax 7635; AVX1-NEXT: andb $1, %al 7636; AVX1-NEXT: movb %al, 12(%rdi) 7637; AVX1-NEXT: vpextrb $4, %xmm6, %eax 7638; AVX1-NEXT: andb $1, %al 7639; AVX1-NEXT: movb %al, 12(%rdi) 7640; AVX1-NEXT: vpextrb $3, %xmm6, %eax 7641; AVX1-NEXT: andb $1, %al 7642; AVX1-NEXT: movb %al, 12(%rdi) 7643; AVX1-NEXT: vpextrb $2, %xmm6, %eax 7644; AVX1-NEXT: andb $1, %al 7645; AVX1-NEXT: movb %al, 12(%rdi) 7646; AVX1-NEXT: vpextrb $1, %xmm6, %eax 7647; AVX1-NEXT: andb $1, %al 7648; AVX1-NEXT: movb %al, 12(%rdi) 7649; AVX1-NEXT: vpextrb $0, %xmm6, %eax 7650; AVX1-NEXT: andb $1, %al 7651; AVX1-NEXT: movb %al, 12(%rdi) 7652; AVX1-NEXT: vpextrb $15, %xmm2, %eax 7653; AVX1-NEXT: andb $1, %al 7654; AVX1-NEXT: movb %al, 8(%rdi) 7655; AVX1-NEXT: vpextrb $14, %xmm2, %eax 7656; AVX1-NEXT: andb $1, %al 7657; AVX1-NEXT: movb %al, 8(%rdi) 7658; AVX1-NEXT: vpextrb $13, %xmm2, %eax 7659; AVX1-NEXT: andb $1, %al 7660; AVX1-NEXT: movb %al, 8(%rdi) 7661; AVX1-NEXT: vpextrb $12, %xmm2, %eax 7662; AVX1-NEXT: andb $1, %al 7663; AVX1-NEXT: movb %al, 8(%rdi) 7664; AVX1-NEXT: vpextrb $11, %xmm2, %eax 7665; AVX1-NEXT: andb $1, %al 7666; AVX1-NEXT: movb %al, 8(%rdi) 7667; AVX1-NEXT: vpextrb $10, %xmm2, %eax 7668; AVX1-NEXT: andb $1, %al 7669; AVX1-NEXT: movb %al, 8(%rdi) 7670; AVX1-NEXT: vpextrb $9, %xmm2, %eax 7671; AVX1-NEXT: andb $1, %al 7672; AVX1-NEXT: movb %al, 8(%rdi) 7673; AVX1-NEXT: vpextrb $8, %xmm2, %eax 7674; AVX1-NEXT: andb $1, %al 7675; AVX1-NEXT: movb %al, 8(%rdi) 7676; AVX1-NEXT: vpextrb $7, %xmm2, %eax 7677; AVX1-NEXT: andb $1, %al 7678; AVX1-NEXT: movb %al, 8(%rdi) 7679; AVX1-NEXT: vpextrb $6, %xmm2, %eax 7680; AVX1-NEXT: andb $1, %al 7681; AVX1-NEXT: movb %al, 8(%rdi) 7682; AVX1-NEXT: vpextrb $5, %xmm2, %eax 7683; AVX1-NEXT: andb $1, %al 7684; AVX1-NEXT: movb %al, 8(%rdi) 7685; AVX1-NEXT: vpextrb $4, %xmm2, %eax 7686; AVX1-NEXT: andb $1, %al 7687; AVX1-NEXT: movb %al, 8(%rdi) 7688; AVX1-NEXT: vpextrb $3, %xmm2, %eax 7689; AVX1-NEXT: andb $1, %al 7690; AVX1-NEXT: movb %al, 8(%rdi) 7691; AVX1-NEXT: vpextrb $2, %xmm2, %eax 7692; AVX1-NEXT: andb $1, %al 7693; AVX1-NEXT: movb %al, 8(%rdi) 7694; AVX1-NEXT: vpextrb $1, %xmm2, %eax 7695; AVX1-NEXT: andb $1, %al 7696; AVX1-NEXT: movb %al, 8(%rdi) 7697; AVX1-NEXT: vpextrb $0, %xmm2, %eax 7698; AVX1-NEXT: andb $1, %al 7699; AVX1-NEXT: movb %al, 8(%rdi) 7700; AVX1-NEXT: vpextrb $15, %xmm5, %eax 7701; AVX1-NEXT: andb $1, %al 7702; AVX1-NEXT: movb %al, 8(%rdi) 7703; AVX1-NEXT: vpextrb $14, %xmm5, %eax 7704; AVX1-NEXT: andb $1, %al 7705; AVX1-NEXT: movb %al, 8(%rdi) 7706; AVX1-NEXT: vpextrb $13, %xmm5, %eax 7707; AVX1-NEXT: andb $1, %al 7708; AVX1-NEXT: movb %al, 8(%rdi) 7709; AVX1-NEXT: vpextrb $12, %xmm5, %eax 7710; AVX1-NEXT: andb $1, %al 7711; AVX1-NEXT: movb %al, 8(%rdi) 7712; AVX1-NEXT: vpextrb $11, %xmm5, %eax 7713; AVX1-NEXT: andb $1, %al 7714; AVX1-NEXT: movb %al, 8(%rdi) 7715; AVX1-NEXT: vpextrb $10, %xmm5, %eax 7716; AVX1-NEXT: andb $1, %al 7717; AVX1-NEXT: movb %al, 8(%rdi) 7718; AVX1-NEXT: vpextrb $9, %xmm5, %eax 7719; AVX1-NEXT: andb $1, %al 7720; AVX1-NEXT: movb %al, 8(%rdi) 7721; AVX1-NEXT: vpextrb $8, %xmm5, %eax 7722; AVX1-NEXT: andb $1, %al 7723; AVX1-NEXT: movb %al, 8(%rdi) 7724; AVX1-NEXT: vpextrb $7, %xmm5, %eax 7725; AVX1-NEXT: andb $1, %al 7726; AVX1-NEXT: movb %al, 8(%rdi) 7727; AVX1-NEXT: vpextrb $6, %xmm5, %eax 7728; AVX1-NEXT: andb $1, %al 7729; AVX1-NEXT: movb %al, 8(%rdi) 7730; AVX1-NEXT: vpextrb $5, %xmm5, %eax 7731; AVX1-NEXT: andb $1, %al 7732; AVX1-NEXT: movb %al, 8(%rdi) 7733; AVX1-NEXT: vpextrb $4, %xmm5, %eax 7734; AVX1-NEXT: andb $1, %al 7735; AVX1-NEXT: movb %al, 8(%rdi) 7736; AVX1-NEXT: vpextrb $3, %xmm5, %eax 7737; AVX1-NEXT: andb $1, %al 7738; AVX1-NEXT: movb %al, 8(%rdi) 7739; AVX1-NEXT: vpextrb $2, %xmm5, %eax 7740; AVX1-NEXT: andb $1, %al 7741; AVX1-NEXT: movb %al, 8(%rdi) 7742; AVX1-NEXT: vpextrb $1, %xmm5, %eax 7743; AVX1-NEXT: andb $1, %al 7744; AVX1-NEXT: movb %al, 8(%rdi) 7745; AVX1-NEXT: vpextrb $0, %xmm5, %eax 7746; AVX1-NEXT: andb $1, %al 7747; AVX1-NEXT: movb %al, 8(%rdi) 7748; AVX1-NEXT: vpextrb $15, %xmm1, %eax 7749; AVX1-NEXT: andb $1, %al 7750; AVX1-NEXT: movb %al, 4(%rdi) 7751; AVX1-NEXT: vpextrb $14, %xmm1, %eax 7752; AVX1-NEXT: andb $1, %al 7753; AVX1-NEXT: movb %al, 4(%rdi) 7754; AVX1-NEXT: vpextrb $13, %xmm1, %eax 7755; AVX1-NEXT: andb $1, %al 7756; AVX1-NEXT: movb %al, 4(%rdi) 7757; AVX1-NEXT: vpextrb $12, %xmm1, %eax 7758; AVX1-NEXT: andb $1, %al 7759; AVX1-NEXT: movb %al, 4(%rdi) 7760; AVX1-NEXT: vpextrb $11, %xmm1, %eax 7761; AVX1-NEXT: andb $1, %al 7762; AVX1-NEXT: movb %al, 4(%rdi) 7763; AVX1-NEXT: vpextrb $10, %xmm1, %eax 7764; AVX1-NEXT: andb $1, %al 7765; AVX1-NEXT: movb %al, 4(%rdi) 7766; AVX1-NEXT: vpextrb $9, %xmm1, %eax 7767; AVX1-NEXT: andb $1, %al 7768; AVX1-NEXT: movb %al, 4(%rdi) 7769; AVX1-NEXT: vpextrb $8, %xmm1, %eax 7770; AVX1-NEXT: andb $1, %al 7771; AVX1-NEXT: movb %al, 4(%rdi) 7772; AVX1-NEXT: vpextrb $7, %xmm1, %eax 7773; AVX1-NEXT: andb $1, %al 7774; AVX1-NEXT: movb %al, 4(%rdi) 7775; AVX1-NEXT: vpextrb $6, %xmm1, %eax 7776; AVX1-NEXT: andb $1, %al 7777; AVX1-NEXT: movb %al, 4(%rdi) 7778; AVX1-NEXT: vpextrb $5, %xmm1, %eax 7779; AVX1-NEXT: andb $1, %al 7780; AVX1-NEXT: movb %al, 4(%rdi) 7781; AVX1-NEXT: vpextrb $4, %xmm1, %eax 7782; AVX1-NEXT: andb $1, %al 7783; AVX1-NEXT: movb %al, 4(%rdi) 7784; AVX1-NEXT: vpextrb $3, %xmm1, %eax 7785; AVX1-NEXT: andb $1, %al 7786; AVX1-NEXT: movb %al, 4(%rdi) 7787; AVX1-NEXT: vpextrb $2, %xmm1, %eax 7788; AVX1-NEXT: andb $1, %al 7789; AVX1-NEXT: movb %al, 4(%rdi) 7790; AVX1-NEXT: vpextrb $1, %xmm1, %eax 7791; AVX1-NEXT: andb $1, %al 7792; AVX1-NEXT: movb %al, 4(%rdi) 7793; AVX1-NEXT: vpextrb $0, %xmm1, %eax 7794; AVX1-NEXT: andb $1, %al 7795; AVX1-NEXT: movb %al, 4(%rdi) 7796; AVX1-NEXT: vpextrb $15, %xmm4, %eax 7797; AVX1-NEXT: andb $1, %al 7798; AVX1-NEXT: movb %al, 4(%rdi) 7799; AVX1-NEXT: vpextrb $14, %xmm4, %eax 7800; AVX1-NEXT: andb $1, %al 7801; AVX1-NEXT: movb %al, 4(%rdi) 7802; AVX1-NEXT: vpextrb $13, %xmm4, %eax 7803; AVX1-NEXT: andb $1, %al 7804; AVX1-NEXT: movb %al, 4(%rdi) 7805; AVX1-NEXT: vpextrb $12, %xmm4, %eax 7806; AVX1-NEXT: andb $1, %al 7807; AVX1-NEXT: movb %al, 4(%rdi) 7808; AVX1-NEXT: vpextrb $11, %xmm4, %eax 7809; AVX1-NEXT: andb $1, %al 7810; AVX1-NEXT: movb %al, 4(%rdi) 7811; AVX1-NEXT: vpextrb $10, %xmm4, %eax 7812; AVX1-NEXT: andb $1, %al 7813; AVX1-NEXT: movb %al, 4(%rdi) 7814; AVX1-NEXT: vpextrb $9, %xmm4, %eax 7815; AVX1-NEXT: andb $1, %al 7816; AVX1-NEXT: movb %al, 4(%rdi) 7817; AVX1-NEXT: vpextrb $8, %xmm4, %eax 7818; AVX1-NEXT: andb $1, %al 7819; AVX1-NEXT: movb %al, 4(%rdi) 7820; AVX1-NEXT: vpextrb $7, %xmm4, %eax 7821; AVX1-NEXT: andb $1, %al 7822; AVX1-NEXT: movb %al, 4(%rdi) 7823; AVX1-NEXT: vpextrb $6, %xmm4, %eax 7824; AVX1-NEXT: andb $1, %al 7825; AVX1-NEXT: movb %al, 4(%rdi) 7826; AVX1-NEXT: vpextrb $5, %xmm4, %eax 7827; AVX1-NEXT: andb $1, %al 7828; AVX1-NEXT: movb %al, 4(%rdi) 7829; AVX1-NEXT: vpextrb $4, %xmm4, %eax 7830; AVX1-NEXT: andb $1, %al 7831; AVX1-NEXT: movb %al, 4(%rdi) 7832; AVX1-NEXT: vpextrb $3, %xmm4, %eax 7833; AVX1-NEXT: andb $1, %al 7834; AVX1-NEXT: movb %al, 4(%rdi) 7835; AVX1-NEXT: vpextrb $2, %xmm4, %eax 7836; AVX1-NEXT: andb $1, %al 7837; AVX1-NEXT: movb %al, 4(%rdi) 7838; AVX1-NEXT: vpextrb $1, %xmm4, %eax 7839; AVX1-NEXT: andb $1, %al 7840; AVX1-NEXT: movb %al, 4(%rdi) 7841; AVX1-NEXT: vpextrb $0, %xmm4, %eax 7842; AVX1-NEXT: andb $1, %al 7843; AVX1-NEXT: movb %al, 4(%rdi) 7844; AVX1-NEXT: vpextrb $15, %xmm0, %eax 7845; AVX1-NEXT: andb $1, %al 7846; AVX1-NEXT: movb %al, (%rdi) 7847; AVX1-NEXT: vpextrb $14, %xmm0, %eax 7848; AVX1-NEXT: andb $1, %al 7849; AVX1-NEXT: movb %al, (%rdi) 7850; AVX1-NEXT: vpextrb $13, %xmm0, %eax 7851; AVX1-NEXT: andb $1, %al 7852; AVX1-NEXT: movb %al, (%rdi) 7853; AVX1-NEXT: vpextrb $12, %xmm0, %eax 7854; AVX1-NEXT: andb $1, %al 7855; AVX1-NEXT: movb %al, (%rdi) 7856; AVX1-NEXT: vpextrb $11, %xmm0, %eax 7857; AVX1-NEXT: andb $1, %al 7858; AVX1-NEXT: movb %al, (%rdi) 7859; AVX1-NEXT: vpextrb $10, %xmm0, %eax 7860; AVX1-NEXT: andb $1, %al 7861; AVX1-NEXT: movb %al, (%rdi) 7862; AVX1-NEXT: vpextrb $9, %xmm0, %eax 7863; AVX1-NEXT: andb $1, %al 7864; AVX1-NEXT: movb %al, (%rdi) 7865; AVX1-NEXT: vpextrb $8, %xmm0, %eax 7866; AVX1-NEXT: andb $1, %al 7867; AVX1-NEXT: movb %al, (%rdi) 7868; AVX1-NEXT: vpextrb $7, %xmm0, %eax 7869; AVX1-NEXT: andb $1, %al 7870; AVX1-NEXT: movb %al, (%rdi) 7871; AVX1-NEXT: vpextrb $6, %xmm0, %eax 7872; AVX1-NEXT: andb $1, %al 7873; AVX1-NEXT: movb %al, (%rdi) 7874; AVX1-NEXT: vpextrb $5, %xmm0, %eax 7875; AVX1-NEXT: andb $1, %al 7876; AVX1-NEXT: movb %al, (%rdi) 7877; AVX1-NEXT: vpextrb $4, %xmm0, %eax 7878; AVX1-NEXT: andb $1, %al 7879; AVX1-NEXT: movb %al, (%rdi) 7880; AVX1-NEXT: vpextrb $3, %xmm0, %eax 7881; AVX1-NEXT: andb $1, %al 7882; AVX1-NEXT: movb %al, (%rdi) 7883; AVX1-NEXT: vpextrb $2, %xmm0, %eax 7884; AVX1-NEXT: andb $1, %al 7885; AVX1-NEXT: movb %al, (%rdi) 7886; AVX1-NEXT: vpextrb $1, %xmm0, %eax 7887; AVX1-NEXT: andb $1, %al 7888; AVX1-NEXT: movb %al, (%rdi) 7889; AVX1-NEXT: vpextrb $0, %xmm0, %eax 7890; AVX1-NEXT: andb $1, %al 7891; AVX1-NEXT: movb %al, (%rdi) 7892; AVX1-NEXT: vpextrb $15, %xmm8, %eax 7893; AVX1-NEXT: andb $1, %al 7894; AVX1-NEXT: movb %al, (%rdi) 7895; AVX1-NEXT: vpextrb $14, %xmm8, %eax 7896; AVX1-NEXT: andb $1, %al 7897; AVX1-NEXT: movb %al, (%rdi) 7898; AVX1-NEXT: vpextrb $13, %xmm8, %eax 7899; AVX1-NEXT: andb $1, %al 7900; AVX1-NEXT: movb %al, (%rdi) 7901; AVX1-NEXT: vpextrb $12, %xmm8, %eax 7902; AVX1-NEXT: andb $1, %al 7903; AVX1-NEXT: movb %al, (%rdi) 7904; AVX1-NEXT: vpextrb $11, %xmm8, %eax 7905; AVX1-NEXT: andb $1, %al 7906; AVX1-NEXT: movb %al, (%rdi) 7907; AVX1-NEXT: vpextrb $10, %xmm8, %eax 7908; AVX1-NEXT: andb $1, %al 7909; AVX1-NEXT: movb %al, (%rdi) 7910; AVX1-NEXT: vpextrb $9, %xmm8, %eax 7911; AVX1-NEXT: andb $1, %al 7912; AVX1-NEXT: movb %al, (%rdi) 7913; AVX1-NEXT: vpextrb $8, %xmm8, %eax 7914; AVX1-NEXT: andb $1, %al 7915; AVX1-NEXT: movb %al, (%rdi) 7916; AVX1-NEXT: vpextrb $7, %xmm8, %eax 7917; AVX1-NEXT: andb $1, %al 7918; AVX1-NEXT: movb %al, (%rdi) 7919; AVX1-NEXT: vpextrb $6, %xmm8, %eax 7920; AVX1-NEXT: andb $1, %al 7921; AVX1-NEXT: movb %al, (%rdi) 7922; AVX1-NEXT: vpextrb $5, %xmm8, %eax 7923; AVX1-NEXT: andb $1, %al 7924; AVX1-NEXT: movb %al, (%rdi) 7925; AVX1-NEXT: vpextrb $4, %xmm8, %eax 7926; AVX1-NEXT: andb $1, %al 7927; AVX1-NEXT: movb %al, (%rdi) 7928; AVX1-NEXT: vpextrb $3, %xmm8, %eax 7929; AVX1-NEXT: andb $1, %al 7930; AVX1-NEXT: movb %al, (%rdi) 7931; AVX1-NEXT: vpextrb $2, %xmm8, %eax 7932; AVX1-NEXT: andb $1, %al 7933; AVX1-NEXT: movb %al, (%rdi) 7934; AVX1-NEXT: vpextrb $1, %xmm8, %eax 7935; AVX1-NEXT: andb $1, %al 7936; AVX1-NEXT: movb %al, (%rdi) 7937; AVX1-NEXT: vpextrb $0, %xmm8, %eax 7938; AVX1-NEXT: andb $1, %al 7939; AVX1-NEXT: movb %al, (%rdi) 7940; AVX1-NEXT: movq %rdi, %rax 7941; AVX1-NEXT: vzeroupper 7942; AVX1-NEXT: retq 7943; 7944; AVX2-LABEL: test_cmp_v128i8: 7945; AVX2: # BB#0: 7946; AVX2-NEXT: vpcmpgtb %ymm4, %ymm0, %ymm0 7947; AVX2-NEXT: vpcmpgtb %ymm5, %ymm1, %ymm1 7948; AVX2-NEXT: vpcmpgtb %ymm6, %ymm2, %ymm2 7949; AVX2-NEXT: vpcmpgtb %ymm7, %ymm3, %ymm3 7950; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4 7951; AVX2-NEXT: vpextrb $15, %xmm4, %eax 7952; AVX2-NEXT: andb $1, %al 7953; AVX2-NEXT: movb %al, 12(%rdi) 7954; AVX2-NEXT: vpextrb $14, %xmm4, %eax 7955; AVX2-NEXT: andb $1, %al 7956; AVX2-NEXT: movb %al, 12(%rdi) 7957; AVX2-NEXT: vpextrb $13, %xmm4, %eax 7958; AVX2-NEXT: andb $1, %al 7959; AVX2-NEXT: movb %al, 12(%rdi) 7960; AVX2-NEXT: vpextrb $12, %xmm4, %eax 7961; AVX2-NEXT: andb $1, %al 7962; AVX2-NEXT: movb %al, 12(%rdi) 7963; AVX2-NEXT: vpextrb $11, %xmm4, %eax 7964; AVX2-NEXT: andb $1, %al 7965; AVX2-NEXT: movb %al, 12(%rdi) 7966; AVX2-NEXT: vpextrb $10, %xmm4, %eax 7967; AVX2-NEXT: andb $1, %al 7968; AVX2-NEXT: movb %al, 12(%rdi) 7969; AVX2-NEXT: vpextrb $9, %xmm4, %eax 7970; AVX2-NEXT: andb $1, %al 7971; AVX2-NEXT: movb %al, 12(%rdi) 7972; AVX2-NEXT: vpextrb $8, %xmm4, %eax 7973; AVX2-NEXT: andb $1, %al 7974; AVX2-NEXT: movb %al, 12(%rdi) 7975; AVX2-NEXT: vpextrb $7, %xmm4, %eax 7976; AVX2-NEXT: andb $1, %al 7977; AVX2-NEXT: movb %al, 12(%rdi) 7978; AVX2-NEXT: vpextrb $6, %xmm4, %eax 7979; AVX2-NEXT: andb $1, %al 7980; AVX2-NEXT: movb %al, 12(%rdi) 7981; AVX2-NEXT: vpextrb $5, %xmm4, %eax 7982; AVX2-NEXT: andb $1, %al 7983; AVX2-NEXT: movb %al, 12(%rdi) 7984; AVX2-NEXT: vpextrb $4, %xmm4, %eax 7985; AVX2-NEXT: andb $1, %al 7986; AVX2-NEXT: movb %al, 12(%rdi) 7987; AVX2-NEXT: vpextrb $3, %xmm4, %eax 7988; AVX2-NEXT: andb $1, %al 7989; AVX2-NEXT: movb %al, 12(%rdi) 7990; AVX2-NEXT: vpextrb $2, %xmm4, %eax 7991; AVX2-NEXT: andb $1, %al 7992; AVX2-NEXT: movb %al, 12(%rdi) 7993; AVX2-NEXT: vpextrb $1, %xmm4, %eax 7994; AVX2-NEXT: andb $1, %al 7995; AVX2-NEXT: movb %al, 12(%rdi) 7996; AVX2-NEXT: vpextrb $0, %xmm4, %eax 7997; AVX2-NEXT: andb $1, %al 7998; AVX2-NEXT: movb %al, 12(%rdi) 7999; AVX2-NEXT: vpextrb $15, %xmm3, %eax 8000; AVX2-NEXT: andb $1, %al 8001; AVX2-NEXT: movb %al, 12(%rdi) 8002; AVX2-NEXT: vpextrb $14, %xmm3, %eax 8003; AVX2-NEXT: andb $1, %al 8004; AVX2-NEXT: movb %al, 12(%rdi) 8005; AVX2-NEXT: vpextrb $13, %xmm3, %eax 8006; AVX2-NEXT: andb $1, %al 8007; AVX2-NEXT: movb %al, 12(%rdi) 8008; AVX2-NEXT: vpextrb $12, %xmm3, %eax 8009; AVX2-NEXT: andb $1, %al 8010; AVX2-NEXT: movb %al, 12(%rdi) 8011; AVX2-NEXT: vpextrb $11, %xmm3, %eax 8012; AVX2-NEXT: andb $1, %al 8013; AVX2-NEXT: movb %al, 12(%rdi) 8014; AVX2-NEXT: vpextrb $10, %xmm3, %eax 8015; AVX2-NEXT: andb $1, %al 8016; AVX2-NEXT: movb %al, 12(%rdi) 8017; AVX2-NEXT: vpextrb $9, %xmm3, %eax 8018; AVX2-NEXT: andb $1, %al 8019; AVX2-NEXT: movb %al, 12(%rdi) 8020; AVX2-NEXT: vpextrb $8, %xmm3, %eax 8021; AVX2-NEXT: andb $1, %al 8022; AVX2-NEXT: movb %al, 12(%rdi) 8023; AVX2-NEXT: vpextrb $7, %xmm3, %eax 8024; AVX2-NEXT: andb $1, %al 8025; AVX2-NEXT: movb %al, 12(%rdi) 8026; AVX2-NEXT: vpextrb $6, %xmm3, %eax 8027; AVX2-NEXT: andb $1, %al 8028; AVX2-NEXT: movb %al, 12(%rdi) 8029; AVX2-NEXT: vpextrb $5, %xmm3, %eax 8030; AVX2-NEXT: andb $1, %al 8031; AVX2-NEXT: movb %al, 12(%rdi) 8032; AVX2-NEXT: vpextrb $4, %xmm3, %eax 8033; AVX2-NEXT: andb $1, %al 8034; AVX2-NEXT: movb %al, 12(%rdi) 8035; AVX2-NEXT: vpextrb $3, %xmm3, %eax 8036; AVX2-NEXT: andb $1, %al 8037; AVX2-NEXT: movb %al, 12(%rdi) 8038; AVX2-NEXT: vpextrb $2, %xmm3, %eax 8039; AVX2-NEXT: andb $1, %al 8040; AVX2-NEXT: movb %al, 12(%rdi) 8041; AVX2-NEXT: vpextrb $1, %xmm3, %eax 8042; AVX2-NEXT: andb $1, %al 8043; AVX2-NEXT: movb %al, 12(%rdi) 8044; AVX2-NEXT: vpextrb $0, %xmm3, %eax 8045; AVX2-NEXT: andb $1, %al 8046; AVX2-NEXT: movb %al, 12(%rdi) 8047; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm3 8048; AVX2-NEXT: vpextrb $15, %xmm3, %eax 8049; AVX2-NEXT: andb $1, %al 8050; AVX2-NEXT: movb %al, 8(%rdi) 8051; AVX2-NEXT: vpextrb $14, %xmm3, %eax 8052; AVX2-NEXT: andb $1, %al 8053; AVX2-NEXT: movb %al, 8(%rdi) 8054; AVX2-NEXT: vpextrb $13, %xmm3, %eax 8055; AVX2-NEXT: andb $1, %al 8056; AVX2-NEXT: movb %al, 8(%rdi) 8057; AVX2-NEXT: vpextrb $12, %xmm3, %eax 8058; AVX2-NEXT: andb $1, %al 8059; AVX2-NEXT: movb %al, 8(%rdi) 8060; AVX2-NEXT: vpextrb $11, %xmm3, %eax 8061; AVX2-NEXT: andb $1, %al 8062; AVX2-NEXT: movb %al, 8(%rdi) 8063; AVX2-NEXT: vpextrb $10, %xmm3, %eax 8064; AVX2-NEXT: andb $1, %al 8065; AVX2-NEXT: movb %al, 8(%rdi) 8066; AVX2-NEXT: vpextrb $9, %xmm3, %eax 8067; AVX2-NEXT: andb $1, %al 8068; AVX2-NEXT: movb %al, 8(%rdi) 8069; AVX2-NEXT: vpextrb $8, %xmm3, %eax 8070; AVX2-NEXT: andb $1, %al 8071; AVX2-NEXT: movb %al, 8(%rdi) 8072; AVX2-NEXT: vpextrb $7, %xmm3, %eax 8073; AVX2-NEXT: andb $1, %al 8074; AVX2-NEXT: movb %al, 8(%rdi) 8075; AVX2-NEXT: vpextrb $6, %xmm3, %eax 8076; AVX2-NEXT: andb $1, %al 8077; AVX2-NEXT: movb %al, 8(%rdi) 8078; AVX2-NEXT: vpextrb $5, %xmm3, %eax 8079; AVX2-NEXT: andb $1, %al 8080; AVX2-NEXT: movb %al, 8(%rdi) 8081; AVX2-NEXT: vpextrb $4, %xmm3, %eax 8082; AVX2-NEXT: andb $1, %al 8083; AVX2-NEXT: movb %al, 8(%rdi) 8084; AVX2-NEXT: vpextrb $3, %xmm3, %eax 8085; AVX2-NEXT: andb $1, %al 8086; AVX2-NEXT: movb %al, 8(%rdi) 8087; AVX2-NEXT: vpextrb $2, %xmm3, %eax 8088; AVX2-NEXT: andb $1, %al 8089; AVX2-NEXT: movb %al, 8(%rdi) 8090; AVX2-NEXT: vpextrb $1, %xmm3, %eax 8091; AVX2-NEXT: andb $1, %al 8092; AVX2-NEXT: movb %al, 8(%rdi) 8093; AVX2-NEXT: vpextrb $0, %xmm3, %eax 8094; AVX2-NEXT: andb $1, %al 8095; AVX2-NEXT: movb %al, 8(%rdi) 8096; AVX2-NEXT: vpextrb $15, %xmm2, %eax 8097; AVX2-NEXT: andb $1, %al 8098; AVX2-NEXT: movb %al, 8(%rdi) 8099; AVX2-NEXT: vpextrb $14, %xmm2, %eax 8100; AVX2-NEXT: andb $1, %al 8101; AVX2-NEXT: movb %al, 8(%rdi) 8102; AVX2-NEXT: vpextrb $13, %xmm2, %eax 8103; AVX2-NEXT: andb $1, %al 8104; AVX2-NEXT: movb %al, 8(%rdi) 8105; AVX2-NEXT: vpextrb $12, %xmm2, %eax 8106; AVX2-NEXT: andb $1, %al 8107; AVX2-NEXT: movb %al, 8(%rdi) 8108; AVX2-NEXT: vpextrb $11, %xmm2, %eax 8109; AVX2-NEXT: andb $1, %al 8110; AVX2-NEXT: movb %al, 8(%rdi) 8111; AVX2-NEXT: vpextrb $10, %xmm2, %eax 8112; AVX2-NEXT: andb $1, %al 8113; AVX2-NEXT: movb %al, 8(%rdi) 8114; AVX2-NEXT: vpextrb $9, %xmm2, %eax 8115; AVX2-NEXT: andb $1, %al 8116; AVX2-NEXT: movb %al, 8(%rdi) 8117; AVX2-NEXT: vpextrb $8, %xmm2, %eax 8118; AVX2-NEXT: andb $1, %al 8119; AVX2-NEXT: movb %al, 8(%rdi) 8120; AVX2-NEXT: vpextrb $7, %xmm2, %eax 8121; AVX2-NEXT: andb $1, %al 8122; AVX2-NEXT: movb %al, 8(%rdi) 8123; AVX2-NEXT: vpextrb $6, %xmm2, %eax 8124; AVX2-NEXT: andb $1, %al 8125; AVX2-NEXT: movb %al, 8(%rdi) 8126; AVX2-NEXT: vpextrb $5, %xmm2, %eax 8127; AVX2-NEXT: andb $1, %al 8128; AVX2-NEXT: movb %al, 8(%rdi) 8129; AVX2-NEXT: vpextrb $4, %xmm2, %eax 8130; AVX2-NEXT: andb $1, %al 8131; AVX2-NEXT: movb %al, 8(%rdi) 8132; AVX2-NEXT: vpextrb $3, %xmm2, %eax 8133; AVX2-NEXT: andb $1, %al 8134; AVX2-NEXT: movb %al, 8(%rdi) 8135; AVX2-NEXT: vpextrb $2, %xmm2, %eax 8136; AVX2-NEXT: andb $1, %al 8137; AVX2-NEXT: movb %al, 8(%rdi) 8138; AVX2-NEXT: vpextrb $1, %xmm2, %eax 8139; AVX2-NEXT: andb $1, %al 8140; AVX2-NEXT: movb %al, 8(%rdi) 8141; AVX2-NEXT: vpextrb $0, %xmm2, %eax 8142; AVX2-NEXT: andb $1, %al 8143; AVX2-NEXT: movb %al, 8(%rdi) 8144; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2 8145; AVX2-NEXT: vpextrb $15, %xmm2, %eax 8146; AVX2-NEXT: andb $1, %al 8147; AVX2-NEXT: movb %al, 4(%rdi) 8148; AVX2-NEXT: vpextrb $14, %xmm2, %eax 8149; AVX2-NEXT: andb $1, %al 8150; AVX2-NEXT: movb %al, 4(%rdi) 8151; AVX2-NEXT: vpextrb $13, %xmm2, %eax 8152; AVX2-NEXT: andb $1, %al 8153; AVX2-NEXT: movb %al, 4(%rdi) 8154; AVX2-NEXT: vpextrb $12, %xmm2, %eax 8155; AVX2-NEXT: andb $1, %al 8156; AVX2-NEXT: movb %al, 4(%rdi) 8157; AVX2-NEXT: vpextrb $11, %xmm2, %eax 8158; AVX2-NEXT: andb $1, %al 8159; AVX2-NEXT: movb %al, 4(%rdi) 8160; AVX2-NEXT: vpextrb $10, %xmm2, %eax 8161; AVX2-NEXT: andb $1, %al 8162; AVX2-NEXT: movb %al, 4(%rdi) 8163; AVX2-NEXT: vpextrb $9, %xmm2, %eax 8164; AVX2-NEXT: andb $1, %al 8165; AVX2-NEXT: movb %al, 4(%rdi) 8166; AVX2-NEXT: vpextrb $8, %xmm2, %eax 8167; AVX2-NEXT: andb $1, %al 8168; AVX2-NEXT: movb %al, 4(%rdi) 8169; AVX2-NEXT: vpextrb $7, %xmm2, %eax 8170; AVX2-NEXT: andb $1, %al 8171; AVX2-NEXT: movb %al, 4(%rdi) 8172; AVX2-NEXT: vpextrb $6, %xmm2, %eax 8173; AVX2-NEXT: andb $1, %al 8174; AVX2-NEXT: movb %al, 4(%rdi) 8175; AVX2-NEXT: vpextrb $5, %xmm2, %eax 8176; AVX2-NEXT: andb $1, %al 8177; AVX2-NEXT: movb %al, 4(%rdi) 8178; AVX2-NEXT: vpextrb $4, %xmm2, %eax 8179; AVX2-NEXT: andb $1, %al 8180; AVX2-NEXT: movb %al, 4(%rdi) 8181; AVX2-NEXT: vpextrb $3, %xmm2, %eax 8182; AVX2-NEXT: andb $1, %al 8183; AVX2-NEXT: movb %al, 4(%rdi) 8184; AVX2-NEXT: vpextrb $2, %xmm2, %eax 8185; AVX2-NEXT: andb $1, %al 8186; AVX2-NEXT: movb %al, 4(%rdi) 8187; AVX2-NEXT: vpextrb $1, %xmm2, %eax 8188; AVX2-NEXT: andb $1, %al 8189; AVX2-NEXT: movb %al, 4(%rdi) 8190; AVX2-NEXT: vpextrb $0, %xmm2, %eax 8191; AVX2-NEXT: andb $1, %al 8192; AVX2-NEXT: movb %al, 4(%rdi) 8193; AVX2-NEXT: vpextrb $15, %xmm1, %eax 8194; AVX2-NEXT: andb $1, %al 8195; AVX2-NEXT: movb %al, 4(%rdi) 8196; AVX2-NEXT: vpextrb $14, %xmm1, %eax 8197; AVX2-NEXT: andb $1, %al 8198; AVX2-NEXT: movb %al, 4(%rdi) 8199; AVX2-NEXT: vpextrb $13, %xmm1, %eax 8200; AVX2-NEXT: andb $1, %al 8201; AVX2-NEXT: movb %al, 4(%rdi) 8202; AVX2-NEXT: vpextrb $12, %xmm1, %eax 8203; AVX2-NEXT: andb $1, %al 8204; AVX2-NEXT: movb %al, 4(%rdi) 8205; AVX2-NEXT: vpextrb $11, %xmm1, %eax 8206; AVX2-NEXT: andb $1, %al 8207; AVX2-NEXT: movb %al, 4(%rdi) 8208; AVX2-NEXT: vpextrb $10, %xmm1, %eax 8209; AVX2-NEXT: andb $1, %al 8210; AVX2-NEXT: movb %al, 4(%rdi) 8211; AVX2-NEXT: vpextrb $9, %xmm1, %eax 8212; AVX2-NEXT: andb $1, %al 8213; AVX2-NEXT: movb %al, 4(%rdi) 8214; AVX2-NEXT: vpextrb $8, %xmm1, %eax 8215; AVX2-NEXT: andb $1, %al 8216; AVX2-NEXT: movb %al, 4(%rdi) 8217; AVX2-NEXT: vpextrb $7, %xmm1, %eax 8218; AVX2-NEXT: andb $1, %al 8219; AVX2-NEXT: movb %al, 4(%rdi) 8220; AVX2-NEXT: vpextrb $6, %xmm1, %eax 8221; AVX2-NEXT: andb $1, %al 8222; AVX2-NEXT: movb %al, 4(%rdi) 8223; AVX2-NEXT: vpextrb $5, %xmm1, %eax 8224; AVX2-NEXT: andb $1, %al 8225; AVX2-NEXT: movb %al, 4(%rdi) 8226; AVX2-NEXT: vpextrb $4, %xmm1, %eax 8227; AVX2-NEXT: andb $1, %al 8228; AVX2-NEXT: movb %al, 4(%rdi) 8229; AVX2-NEXT: vpextrb $3, %xmm1, %eax 8230; AVX2-NEXT: andb $1, %al 8231; AVX2-NEXT: movb %al, 4(%rdi) 8232; AVX2-NEXT: vpextrb $2, %xmm1, %eax 8233; AVX2-NEXT: andb $1, %al 8234; AVX2-NEXT: movb %al, 4(%rdi) 8235; AVX2-NEXT: vpextrb $1, %xmm1, %eax 8236; AVX2-NEXT: andb $1, %al 8237; AVX2-NEXT: movb %al, 4(%rdi) 8238; AVX2-NEXT: vpextrb $0, %xmm1, %eax 8239; AVX2-NEXT: andb $1, %al 8240; AVX2-NEXT: movb %al, 4(%rdi) 8241; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 8242; AVX2-NEXT: vpextrb $15, %xmm1, %eax 8243; AVX2-NEXT: andb $1, %al 8244; AVX2-NEXT: movb %al, (%rdi) 8245; AVX2-NEXT: vpextrb $14, %xmm1, %eax 8246; AVX2-NEXT: andb $1, %al 8247; AVX2-NEXT: movb %al, (%rdi) 8248; AVX2-NEXT: vpextrb $13, %xmm1, %eax 8249; AVX2-NEXT: andb $1, %al 8250; AVX2-NEXT: movb %al, (%rdi) 8251; AVX2-NEXT: vpextrb $12, %xmm1, %eax 8252; AVX2-NEXT: andb $1, %al 8253; AVX2-NEXT: movb %al, (%rdi) 8254; AVX2-NEXT: vpextrb $11, %xmm1, %eax 8255; AVX2-NEXT: andb $1, %al 8256; AVX2-NEXT: movb %al, (%rdi) 8257; AVX2-NEXT: vpextrb $10, %xmm1, %eax 8258; AVX2-NEXT: andb $1, %al 8259; AVX2-NEXT: movb %al, (%rdi) 8260; AVX2-NEXT: vpextrb $9, %xmm1, %eax 8261; AVX2-NEXT: andb $1, %al 8262; AVX2-NEXT: movb %al, (%rdi) 8263; AVX2-NEXT: vpextrb $8, %xmm1, %eax 8264; AVX2-NEXT: andb $1, %al 8265; AVX2-NEXT: movb %al, (%rdi) 8266; AVX2-NEXT: vpextrb $7, %xmm1, %eax 8267; AVX2-NEXT: andb $1, %al 8268; AVX2-NEXT: movb %al, (%rdi) 8269; AVX2-NEXT: vpextrb $6, %xmm1, %eax 8270; AVX2-NEXT: andb $1, %al 8271; AVX2-NEXT: movb %al, (%rdi) 8272; AVX2-NEXT: vpextrb $5, %xmm1, %eax 8273; AVX2-NEXT: andb $1, %al 8274; AVX2-NEXT: movb %al, (%rdi) 8275; AVX2-NEXT: vpextrb $4, %xmm1, %eax 8276; AVX2-NEXT: andb $1, %al 8277; AVX2-NEXT: movb %al, (%rdi) 8278; AVX2-NEXT: vpextrb $3, %xmm1, %eax 8279; AVX2-NEXT: andb $1, %al 8280; AVX2-NEXT: movb %al, (%rdi) 8281; AVX2-NEXT: vpextrb $2, %xmm1, %eax 8282; AVX2-NEXT: andb $1, %al 8283; AVX2-NEXT: movb %al, (%rdi) 8284; AVX2-NEXT: vpextrb $1, %xmm1, %eax 8285; AVX2-NEXT: andb $1, %al 8286; AVX2-NEXT: movb %al, (%rdi) 8287; AVX2-NEXT: vpextrb $0, %xmm1, %eax 8288; AVX2-NEXT: andb $1, %al 8289; AVX2-NEXT: movb %al, (%rdi) 8290; AVX2-NEXT: vpextrb $15, %xmm0, %eax 8291; AVX2-NEXT: andb $1, %al 8292; AVX2-NEXT: movb %al, (%rdi) 8293; AVX2-NEXT: vpextrb $14, %xmm0, %eax 8294; AVX2-NEXT: andb $1, %al 8295; AVX2-NEXT: movb %al, (%rdi) 8296; AVX2-NEXT: vpextrb $13, %xmm0, %eax 8297; AVX2-NEXT: andb $1, %al 8298; AVX2-NEXT: movb %al, (%rdi) 8299; AVX2-NEXT: vpextrb $12, %xmm0, %eax 8300; AVX2-NEXT: andb $1, %al 8301; AVX2-NEXT: movb %al, (%rdi) 8302; AVX2-NEXT: vpextrb $11, %xmm0, %eax 8303; AVX2-NEXT: andb $1, %al 8304; AVX2-NEXT: movb %al, (%rdi) 8305; AVX2-NEXT: vpextrb $10, %xmm0, %eax 8306; AVX2-NEXT: andb $1, %al 8307; AVX2-NEXT: movb %al, (%rdi) 8308; AVX2-NEXT: vpextrb $9, %xmm0, %eax 8309; AVX2-NEXT: andb $1, %al 8310; AVX2-NEXT: movb %al, (%rdi) 8311; AVX2-NEXT: vpextrb $8, %xmm0, %eax 8312; AVX2-NEXT: andb $1, %al 8313; AVX2-NEXT: movb %al, (%rdi) 8314; AVX2-NEXT: vpextrb $7, %xmm0, %eax 8315; AVX2-NEXT: andb $1, %al 8316; AVX2-NEXT: movb %al, (%rdi) 8317; AVX2-NEXT: vpextrb $6, %xmm0, %eax 8318; AVX2-NEXT: andb $1, %al 8319; AVX2-NEXT: movb %al, (%rdi) 8320; AVX2-NEXT: vpextrb $5, %xmm0, %eax 8321; AVX2-NEXT: andb $1, %al 8322; AVX2-NEXT: movb %al, (%rdi) 8323; AVX2-NEXT: vpextrb $4, %xmm0, %eax 8324; AVX2-NEXT: andb $1, %al 8325; AVX2-NEXT: movb %al, (%rdi) 8326; AVX2-NEXT: vpextrb $3, %xmm0, %eax 8327; AVX2-NEXT: andb $1, %al 8328; AVX2-NEXT: movb %al, (%rdi) 8329; AVX2-NEXT: vpextrb $2, %xmm0, %eax 8330; AVX2-NEXT: andb $1, %al 8331; AVX2-NEXT: movb %al, (%rdi) 8332; AVX2-NEXT: vpextrb $1, %xmm0, %eax 8333; AVX2-NEXT: andb $1, %al 8334; AVX2-NEXT: movb %al, (%rdi) 8335; AVX2-NEXT: vpextrb $0, %xmm0, %eax 8336; AVX2-NEXT: andb $1, %al 8337; AVX2-NEXT: movb %al, (%rdi) 8338; AVX2-NEXT: movq %rdi, %rax 8339; AVX2-NEXT: vzeroupper 8340; AVX2-NEXT: retq 8341; 8342; AVX512F-LABEL: test_cmp_v128i8: 8343; AVX512F: # BB#0: 8344; AVX512F-NEXT: vpcmpgtb %ymm4, %ymm0, %ymm0 8345; AVX512F-NEXT: vpcmpgtb %ymm5, %ymm1, %ymm1 8346; AVX512F-NEXT: vpcmpgtb %ymm6, %ymm2, %ymm2 8347; AVX512F-NEXT: vpcmpgtb %ymm7, %ymm3, %ymm3 8348; AVX512F-NEXT: vextracti128 $1, %ymm3, %xmm4 8349; AVX512F-NEXT: vpmovsxbd %xmm4, %zmm4 8350; AVX512F-NEXT: vpslld $31, %zmm4, %zmm4 8351; AVX512F-NEXT: vptestmd %zmm4, %zmm4, %k0 8352; AVX512F-NEXT: kmovw %k0, 14(%rdi) 8353; AVX512F-NEXT: vpmovsxbd %xmm3, %zmm3 8354; AVX512F-NEXT: vpslld $31, %zmm3, %zmm3 8355; AVX512F-NEXT: vptestmd %zmm3, %zmm3, %k0 8356; AVX512F-NEXT: kmovw %k0, 12(%rdi) 8357; AVX512F-NEXT: vextracti128 $1, %ymm2, %xmm3 8358; AVX512F-NEXT: vpmovsxbd %xmm3, %zmm3 8359; AVX512F-NEXT: vpslld $31, %zmm3, %zmm3 8360; AVX512F-NEXT: vptestmd %zmm3, %zmm3, %k0 8361; AVX512F-NEXT: kmovw %k0, 10(%rdi) 8362; AVX512F-NEXT: vpmovsxbd %xmm2, %zmm2 8363; AVX512F-NEXT: vpslld $31, %zmm2, %zmm2 8364; AVX512F-NEXT: vptestmd %zmm2, %zmm2, %k0 8365; AVX512F-NEXT: kmovw %k0, 8(%rdi) 8366; AVX512F-NEXT: vextracti128 $1, %ymm1, %xmm2 8367; AVX512F-NEXT: vpmovsxbd %xmm2, %zmm2 8368; AVX512F-NEXT: vpslld $31, %zmm2, %zmm2 8369; AVX512F-NEXT: vptestmd %zmm2, %zmm2, %k0 8370; AVX512F-NEXT: kmovw %k0, 6(%rdi) 8371; AVX512F-NEXT: vpmovsxbd %xmm1, %zmm1 8372; AVX512F-NEXT: vpslld $31, %zmm1, %zmm1 8373; AVX512F-NEXT: vptestmd %zmm1, %zmm1, %k0 8374; AVX512F-NEXT: kmovw %k0, 4(%rdi) 8375; AVX512F-NEXT: vextracti128 $1, %ymm0, %xmm1 8376; AVX512F-NEXT: vpmovsxbd %xmm1, %zmm1 8377; AVX512F-NEXT: vpslld $31, %zmm1, %zmm1 8378; AVX512F-NEXT: vptestmd %zmm1, %zmm1, %k0 8379; AVX512F-NEXT: kmovw %k0, 2(%rdi) 8380; AVX512F-NEXT: vpmovsxbd %xmm0, %zmm0 8381; AVX512F-NEXT: vpslld $31, %zmm0, %zmm0 8382; AVX512F-NEXT: vptestmd %zmm0, %zmm0, %k0 8383; AVX512F-NEXT: kmovw %k0, (%rdi) 8384; AVX512F-NEXT: movq %rdi, %rax 8385; AVX512F-NEXT: retq 8386; 8387; AVX512DQ-LABEL: test_cmp_v128i8: 8388; AVX512DQ: # BB#0: 8389; AVX512DQ-NEXT: vpcmpgtb %ymm4, %ymm0, %ymm0 8390; AVX512DQ-NEXT: vpcmpgtb %ymm5, %ymm1, %ymm1 8391; AVX512DQ-NEXT: vpcmpgtb %ymm6, %ymm2, %ymm2 8392; AVX512DQ-NEXT: vpcmpgtb %ymm7, %ymm3, %ymm3 8393; AVX512DQ-NEXT: vextracti128 $1, %ymm3, %xmm4 8394; AVX512DQ-NEXT: vpmovsxbd %xmm4, %zmm4 8395; AVX512DQ-NEXT: vpslld $31, %zmm4, %zmm4 8396; AVX512DQ-NEXT: vptestmd %zmm4, %zmm4, %k0 8397; AVX512DQ-NEXT: kmovw %k0, 14(%rdi) 8398; AVX512DQ-NEXT: vpmovsxbd %xmm3, %zmm3 8399; AVX512DQ-NEXT: vpslld $31, %zmm3, %zmm3 8400; AVX512DQ-NEXT: vptestmd %zmm3, %zmm3, %k0 8401; AVX512DQ-NEXT: kmovw %k0, 12(%rdi) 8402; AVX512DQ-NEXT: vextracti128 $1, %ymm2, %xmm3 8403; AVX512DQ-NEXT: vpmovsxbd %xmm3, %zmm3 8404; AVX512DQ-NEXT: vpslld $31, %zmm3, %zmm3 8405; AVX512DQ-NEXT: vptestmd %zmm3, %zmm3, %k0 8406; AVX512DQ-NEXT: kmovw %k0, 10(%rdi) 8407; AVX512DQ-NEXT: vpmovsxbd %xmm2, %zmm2 8408; AVX512DQ-NEXT: vpslld $31, %zmm2, %zmm2 8409; AVX512DQ-NEXT: vptestmd %zmm2, %zmm2, %k0 8410; AVX512DQ-NEXT: kmovw %k0, 8(%rdi) 8411; AVX512DQ-NEXT: vextracti128 $1, %ymm1, %xmm2 8412; AVX512DQ-NEXT: vpmovsxbd %xmm2, %zmm2 8413; AVX512DQ-NEXT: vpslld $31, %zmm2, %zmm2 8414; AVX512DQ-NEXT: vptestmd %zmm2, %zmm2, %k0 8415; AVX512DQ-NEXT: kmovw %k0, 6(%rdi) 8416; AVX512DQ-NEXT: vpmovsxbd %xmm1, %zmm1 8417; AVX512DQ-NEXT: vpslld $31, %zmm1, %zmm1 8418; AVX512DQ-NEXT: vptestmd %zmm1, %zmm1, %k0 8419; AVX512DQ-NEXT: kmovw %k0, 4(%rdi) 8420; AVX512DQ-NEXT: vextracti128 $1, %ymm0, %xmm1 8421; AVX512DQ-NEXT: vpmovsxbd %xmm1, %zmm1 8422; AVX512DQ-NEXT: vpslld $31, %zmm1, %zmm1 8423; AVX512DQ-NEXT: vptestmd %zmm1, %zmm1, %k0 8424; AVX512DQ-NEXT: kmovw %k0, 2(%rdi) 8425; AVX512DQ-NEXT: vpmovsxbd %xmm0, %zmm0 8426; AVX512DQ-NEXT: vpslld $31, %zmm0, %zmm0 8427; AVX512DQ-NEXT: vptestmd %zmm0, %zmm0, %k0 8428; AVX512DQ-NEXT: kmovw %k0, (%rdi) 8429; AVX512DQ-NEXT: movq %rdi, %rax 8430; AVX512DQ-NEXT: retq 8431; 8432; AVX512BW-LABEL: test_cmp_v128i8: 8433; AVX512BW: # BB#0: 8434; AVX512BW-NEXT: vpcmpgtb %zmm3, %zmm1, %k0 8435; AVX512BW-NEXT: vpcmpgtb %zmm2, %zmm0, %k1 8436; AVX512BW-NEXT: vpmovm2b %k1, %zmm0 8437; AVX512BW-NEXT: vpmovm2b %k0, %zmm1 8438; AVX512BW-NEXT: retq 8439 %1 = icmp sgt <128 x i8> %a0, %a1 8440 ret <128 x i1> %1 8441} 8442 8443; 8444; 2048-bit vector comparisons 8445; 8446 8447define <32 x i1> @test_cmp_v32f64(<32 x double> %a0, <32 x double> %a1) nounwind { 8448; SSE2-LABEL: test_cmp_v32f64: 8449; SSE2: # BB#0: 8450; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm8 8451; SSE2-NEXT: cmpltpd %xmm7, %xmm8 8452; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm7 8453; SSE2-NEXT: cmpltpd %xmm6, %xmm7 8454; SSE2-NEXT: shufps {{.*#+}} xmm7 = xmm7[0,2],xmm8[0,2] 8455; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm6 8456; SSE2-NEXT: cmpltpd %xmm5, %xmm6 8457; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 8458; SSE2-NEXT: cmpltpd %xmm4, %xmm5 8459; SSE2-NEXT: shufps {{.*#+}} xmm5 = xmm5[0,2],xmm6[0,2] 8460; SSE2-NEXT: pslld $31, %xmm7 8461; SSE2-NEXT: psrad $31, %xmm7 8462; SSE2-NEXT: pshuflw {{.*#+}} xmm4 = xmm7[0,2,2,3,4,5,6,7] 8463; SSE2-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,6,6,7] 8464; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,2,2,3] 8465; SSE2-NEXT: pslld $31, %xmm5 8466; SSE2-NEXT: psrad $31, %xmm5 8467; SSE2-NEXT: pshuflw {{.*#+}} xmm4 = xmm5[0,2,2,3,4,5,6,7] 8468; SSE2-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,6,6,7] 8469; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3] 8470; SSE2-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 8471; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 8472; SSE2-NEXT: cmpltpd %xmm3, %xmm5 8473; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm6 8474; SSE2-NEXT: cmpltpd %xmm2, %xmm6 8475; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm2 8476; SSE2-NEXT: shufps {{.*#+}} xmm6 = xmm6[0,2],xmm5[0,2] 8477; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 8478; SSE2-NEXT: cmpltpd %xmm1, %xmm5 8479; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm1 8480; SSE2-NEXT: cmpltpd %xmm0, %xmm1 8481; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm3 8482; SSE2-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,2],xmm5[0,2] 8483; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 8484; SSE2-NEXT: psllw $15, %xmm4 8485; SSE2-NEXT: psraw $15, %xmm4 8486; SSE2-NEXT: pslld $31, %xmm6 8487; SSE2-NEXT: psrad $31, %xmm6 8488; SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm6[0,2,2,3,4,5,6,7] 8489; SSE2-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,6,7] 8490; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm0[0,2,2,3] 8491; SSE2-NEXT: pslld $31, %xmm1 8492; SSE2-NEXT: psrad $31, %xmm1 8493; SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm1[0,2,2,3,4,5,6,7] 8494; SSE2-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,6,7] 8495; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3] 8496; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm6[0] 8497; SSE2-NEXT: movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,255] 8498; SSE2-NEXT: pand %xmm1, %xmm4 8499; SSE2-NEXT: psllw $15, %xmm0 8500; SSE2-NEXT: psraw $15, %xmm0 8501; SSE2-NEXT: pand %xmm1, %xmm0 8502; SSE2-NEXT: packuswb %xmm4, %xmm0 8503; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm4 8504; SSE2-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm4 8505; SSE2-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm5 8506; SSE2-NEXT: shufps {{.*#+}} xmm5 = xmm5[0,2],xmm4[0,2] 8507; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm4 8508; SSE2-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm4 8509; SSE2-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm3 8510; SSE2-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,2],xmm4[0,2] 8511; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm4 8512; SSE2-NEXT: pslld $31, %xmm5 8513; SSE2-NEXT: psrad $31, %xmm5 8514; SSE2-NEXT: pshuflw {{.*#+}} xmm5 = xmm5[0,2,2,3,4,5,6,7] 8515; SSE2-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,6,6,7] 8516; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,2,2,3] 8517; SSE2-NEXT: pslld $31, %xmm3 8518; SSE2-NEXT: psrad $31, %xmm3 8519; SSE2-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[0,2,2,3,4,5,6,7] 8520; SSE2-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,6,6,7] 8521; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3] 8522; SSE2-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm5[0] 8523; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 8524; SSE2-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm5 8525; SSE2-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm4 8526; SSE2-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,2],xmm5[0,2] 8527; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 8528; SSE2-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm5 8529; SSE2-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm2 8530; SSE2-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,2],xmm5[0,2] 8531; SSE2-NEXT: pslld $31, %xmm4 8532; SSE2-NEXT: psrad $31, %xmm4 8533; SSE2-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,2,2,3,4,5,6,7] 8534; SSE2-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,6,6,7] 8535; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3] 8536; SSE2-NEXT: pslld $31, %xmm2 8537; SSE2-NEXT: psrad $31, %xmm2 8538; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[0,2,2,3,4,5,6,7] 8539; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7] 8540; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] 8541; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm4[0] 8542; SSE2-NEXT: psllw $15, %xmm3 8543; SSE2-NEXT: psraw $15, %xmm3 8544; SSE2-NEXT: pand %xmm1, %xmm3 8545; SSE2-NEXT: psllw $15, %xmm2 8546; SSE2-NEXT: psraw $15, %xmm2 8547; SSE2-NEXT: pand %xmm1, %xmm2 8548; SSE2-NEXT: packuswb %xmm3, %xmm2 8549; SSE2-NEXT: movdqa %xmm2, -{{[0-9]+}}(%rsp) 8550; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8551; SSE2-NEXT: andb $1, %al 8552; SSE2-NEXT: movb %al, 2(%rdi) 8553; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 8554; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8555; SSE2-NEXT: andb $1, %al 8556; SSE2-NEXT: movb %al, (%rdi) 8557; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8558; SSE2-NEXT: andb $1, %al 8559; SSE2-NEXT: movb %al, 2(%rdi) 8560; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8561; SSE2-NEXT: andb $1, %al 8562; SSE2-NEXT: movb %al, (%rdi) 8563; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8564; SSE2-NEXT: andb $1, %al 8565; SSE2-NEXT: movb %al, 2(%rdi) 8566; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8567; SSE2-NEXT: andb $1, %al 8568; SSE2-NEXT: movb %al, (%rdi) 8569; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8570; SSE2-NEXT: andb $1, %al 8571; SSE2-NEXT: movb %al, 2(%rdi) 8572; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8573; SSE2-NEXT: andb $1, %al 8574; SSE2-NEXT: movb %al, (%rdi) 8575; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8576; SSE2-NEXT: andb $1, %al 8577; SSE2-NEXT: movb %al, 2(%rdi) 8578; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8579; SSE2-NEXT: andb $1, %al 8580; SSE2-NEXT: movb %al, (%rdi) 8581; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8582; SSE2-NEXT: andb $1, %al 8583; SSE2-NEXT: movb %al, 2(%rdi) 8584; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8585; SSE2-NEXT: andb $1, %al 8586; SSE2-NEXT: movb %al, (%rdi) 8587; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8588; SSE2-NEXT: andb $1, %al 8589; SSE2-NEXT: movb %al, 2(%rdi) 8590; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8591; SSE2-NEXT: andb $1, %al 8592; SSE2-NEXT: movb %al, (%rdi) 8593; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8594; SSE2-NEXT: andb $1, %al 8595; SSE2-NEXT: movb %al, 2(%rdi) 8596; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8597; SSE2-NEXT: andb $1, %al 8598; SSE2-NEXT: movb %al, (%rdi) 8599; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8600; SSE2-NEXT: andb $1, %al 8601; SSE2-NEXT: movb %al, 2(%rdi) 8602; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8603; SSE2-NEXT: andb $1, %al 8604; SSE2-NEXT: movb %al, (%rdi) 8605; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8606; SSE2-NEXT: andb $1, %al 8607; SSE2-NEXT: movb %al, 2(%rdi) 8608; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8609; SSE2-NEXT: andb $1, %al 8610; SSE2-NEXT: movb %al, (%rdi) 8611; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8612; SSE2-NEXT: andb $1, %al 8613; SSE2-NEXT: movb %al, 2(%rdi) 8614; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8615; SSE2-NEXT: andb $1, %al 8616; SSE2-NEXT: movb %al, (%rdi) 8617; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8618; SSE2-NEXT: andb $1, %al 8619; SSE2-NEXT: movb %al, 2(%rdi) 8620; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8621; SSE2-NEXT: andb $1, %al 8622; SSE2-NEXT: movb %al, (%rdi) 8623; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8624; SSE2-NEXT: andb $1, %al 8625; SSE2-NEXT: movb %al, 2(%rdi) 8626; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8627; SSE2-NEXT: andb $1, %al 8628; SSE2-NEXT: movb %al, (%rdi) 8629; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8630; SSE2-NEXT: andb $1, %al 8631; SSE2-NEXT: movb %al, 2(%rdi) 8632; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8633; SSE2-NEXT: andb $1, %al 8634; SSE2-NEXT: movb %al, (%rdi) 8635; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8636; SSE2-NEXT: andb $1, %al 8637; SSE2-NEXT: movb %al, 2(%rdi) 8638; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8639; SSE2-NEXT: andb $1, %al 8640; SSE2-NEXT: movb %al, (%rdi) 8641; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8642; SSE2-NEXT: andb $1, %al 8643; SSE2-NEXT: movb %al, 2(%rdi) 8644; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 8645; SSE2-NEXT: andb $1, %al 8646; SSE2-NEXT: movb %al, (%rdi) 8647; SSE2-NEXT: movq %rdi, %rax 8648; SSE2-NEXT: retq 8649; 8650; SSE42-LABEL: test_cmp_v32f64: 8651; SSE42: # BB#0: 8652; SSE42-NEXT: pushq %rbp 8653; SSE42-NEXT: pushq %r15 8654; SSE42-NEXT: pushq %r14 8655; SSE42-NEXT: pushq %r13 8656; SSE42-NEXT: pushq %r12 8657; SSE42-NEXT: pushq %rbx 8658; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm8 8659; SSE42-NEXT: cmpltpd %xmm3, %xmm8 8660; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm3 8661; SSE42-NEXT: cmpltpd %xmm2, %xmm3 8662; SSE42-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,2],xmm8[0,2] 8663; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm2 8664; SSE42-NEXT: cmpltpd %xmm1, %xmm2 8665; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm1 8666; SSE42-NEXT: cmpltpd %xmm0, %xmm1 8667; SSE42-NEXT: pslld $31, %xmm3 8668; SSE42-NEXT: psrad $31, %xmm3 8669; SSE42-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,2],xmm2[0,2] 8670; SSE42-NEXT: movdqa {{.*#+}} xmm8 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15] 8671; SSE42-NEXT: pshufb %xmm8, %xmm3 8672; SSE42-NEXT: pslld $31, %xmm1 8673; SSE42-NEXT: psrad $31, %xmm1 8674; SSE42-NEXT: pshufb %xmm8, %xmm1 8675; SSE42-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm3[0] 8676; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm0 8677; SSE42-NEXT: cmpltpd %xmm7, %xmm0 8678; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm7 8679; SSE42-NEXT: cmpltpd %xmm6, %xmm7 8680; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm3 8681; SSE42-NEXT: shufps {{.*#+}} xmm7 = xmm7[0,2],xmm0[0,2] 8682; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm6 8683; SSE42-NEXT: cmpltpd %xmm5, %xmm6 8684; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm0 8685; SSE42-NEXT: cmpltpd %xmm4, %xmm0 8686; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm2 8687; SSE42-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,2],xmm6[0,2] 8688; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm4 8689; SSE42-NEXT: pslld $31, %xmm7 8690; SSE42-NEXT: psrad $31, %xmm7 8691; SSE42-NEXT: pshufb %xmm8, %xmm7 8692; SSE42-NEXT: pslld $31, %xmm0 8693; SSE42-NEXT: psrad $31, %xmm0 8694; SSE42-NEXT: pshufb %xmm8, %xmm0 8695; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm7[0] 8696; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 8697; SSE42-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm5 8698; SSE42-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm4 8699; SSE42-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,2],xmm5[0,2] 8700; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 8701; SSE42-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm5 8702; SSE42-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm2 8703; SSE42-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,2],xmm5[0,2] 8704; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 8705; SSE42-NEXT: pslld $31, %xmm4 8706; SSE42-NEXT: psrad $31, %xmm4 8707; SSE42-NEXT: pshufb %xmm8, %xmm4 8708; SSE42-NEXT: pslld $31, %xmm2 8709; SSE42-NEXT: psrad $31, %xmm2 8710; SSE42-NEXT: pshufb %xmm8, %xmm2 8711; SSE42-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm4[0] 8712; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm4 8713; SSE42-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm4 8714; SSE42-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm5 8715; SSE42-NEXT: shufps {{.*#+}} xmm5 = xmm5[0,2],xmm4[0,2] 8716; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm4 8717; SSE42-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm4 8718; SSE42-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm3 8719; SSE42-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,2],xmm4[0,2] 8720; SSE42-NEXT: pslld $31, %xmm5 8721; SSE42-NEXT: psrad $31, %xmm5 8722; SSE42-NEXT: pshufb %xmm8, %xmm5 8723; SSE42-NEXT: pslld $31, %xmm3 8724; SSE42-NEXT: psrad $31, %xmm3 8725; SSE42-NEXT: pshufb %xmm8, %xmm3 8726; SSE42-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm5[0] 8727; SSE42-NEXT: psllw $15, %xmm3 8728; SSE42-NEXT: psraw $15, %xmm3 8729; SSE42-NEXT: pextrb $14, %xmm3, %ecx 8730; SSE42-NEXT: pextrb $12, %xmm3, %edx 8731; SSE42-NEXT: pextrb $10, %xmm3, %r8d 8732; SSE42-NEXT: pextrb $8, %xmm3, %r10d 8733; SSE42-NEXT: pextrb $6, %xmm3, %r14d 8734; SSE42-NEXT: pextrb $4, %xmm3, %r12d 8735; SSE42-NEXT: pextrb $2, %xmm3, %ebx 8736; SSE42-NEXT: pextrb $0, %xmm3, %eax 8737; SSE42-NEXT: psllw $15, %xmm2 8738; SSE42-NEXT: psraw $15, %xmm2 8739; SSE42-NEXT: andb $1, %cl 8740; SSE42-NEXT: movb %cl, 2(%rdi) 8741; SSE42-NEXT: andb $1, %dl 8742; SSE42-NEXT: movb %dl, 2(%rdi) 8743; SSE42-NEXT: pextrb $14, %xmm2, %edx 8744; SSE42-NEXT: pextrb $12, %xmm2, %esi 8745; SSE42-NEXT: pextrb $10, %xmm2, %r9d 8746; SSE42-NEXT: pextrb $8, %xmm2, %r11d 8747; SSE42-NEXT: pextrb $6, %xmm2, %r15d 8748; SSE42-NEXT: pextrb $4, %xmm2, %r13d 8749; SSE42-NEXT: pextrb $2, %xmm2, %ebp 8750; SSE42-NEXT: pextrb $0, %xmm2, %ecx 8751; SSE42-NEXT: psllw $15, %xmm0 8752; SSE42-NEXT: psraw $15, %xmm0 8753; SSE42-NEXT: andb $1, %r8b 8754; SSE42-NEXT: movb %r8b, 2(%rdi) 8755; SSE42-NEXT: andb $1, %r10b 8756; SSE42-NEXT: movb %r10b, 2(%rdi) 8757; SSE42-NEXT: andb $1, %r14b 8758; SSE42-NEXT: movb %r14b, 2(%rdi) 8759; SSE42-NEXT: andb $1, %r12b 8760; SSE42-NEXT: movb %r12b, 2(%rdi) 8761; SSE42-NEXT: andb $1, %bl 8762; SSE42-NEXT: movb %bl, 2(%rdi) 8763; SSE42-NEXT: andb $1, %al 8764; SSE42-NEXT: movb %al, 2(%rdi) 8765; SSE42-NEXT: andb $1, %dl 8766; SSE42-NEXT: movb %dl, 2(%rdi) 8767; SSE42-NEXT: andb $1, %sil 8768; SSE42-NEXT: movb %sil, 2(%rdi) 8769; SSE42-NEXT: pextrb $14, %xmm0, %esi 8770; SSE42-NEXT: pextrb $12, %xmm0, %edx 8771; SSE42-NEXT: pextrb $10, %xmm0, %r8d 8772; SSE42-NEXT: pextrb $8, %xmm0, %r10d 8773; SSE42-NEXT: pextrb $6, %xmm0, %r14d 8774; SSE42-NEXT: pextrb $4, %xmm0, %r12d 8775; SSE42-NEXT: pextrb $2, %xmm0, %ebx 8776; SSE42-NEXT: pextrb $0, %xmm0, %eax 8777; SSE42-NEXT: psllw $15, %xmm1 8778; SSE42-NEXT: psraw $15, %xmm1 8779; SSE42-NEXT: andb $1, %r9b 8780; SSE42-NEXT: movb %r9b, 2(%rdi) 8781; SSE42-NEXT: andb $1, %r11b 8782; SSE42-NEXT: movb %r11b, 2(%rdi) 8783; SSE42-NEXT: andb $1, %r15b 8784; SSE42-NEXT: movb %r15b, 2(%rdi) 8785; SSE42-NEXT: andb $1, %r13b 8786; SSE42-NEXT: movb %r13b, 2(%rdi) 8787; SSE42-NEXT: andb $1, %bpl 8788; SSE42-NEXT: movb %bpl, 2(%rdi) 8789; SSE42-NEXT: andb $1, %cl 8790; SSE42-NEXT: movb %cl, 2(%rdi) 8791; SSE42-NEXT: andb $1, %sil 8792; SSE42-NEXT: movb %sil, (%rdi) 8793; SSE42-NEXT: andb $1, %dl 8794; SSE42-NEXT: movb %dl, (%rdi) 8795; SSE42-NEXT: pextrb $14, %xmm1, %r9d 8796; SSE42-NEXT: pextrb $12, %xmm1, %r11d 8797; SSE42-NEXT: pextrb $10, %xmm1, %r15d 8798; SSE42-NEXT: pextrb $8, %xmm1, %r13d 8799; SSE42-NEXT: pextrb $6, %xmm1, %ecx 8800; SSE42-NEXT: pextrb $4, %xmm1, %edx 8801; SSE42-NEXT: pextrb $2, %xmm1, %esi 8802; SSE42-NEXT: pextrb $0, %xmm1, %ebp 8803; SSE42-NEXT: andb $1, %r8b 8804; SSE42-NEXT: movb %r8b, (%rdi) 8805; SSE42-NEXT: andb $1, %r10b 8806; SSE42-NEXT: movb %r10b, (%rdi) 8807; SSE42-NEXT: andb $1, %r14b 8808; SSE42-NEXT: movb %r14b, (%rdi) 8809; SSE42-NEXT: andb $1, %r12b 8810; SSE42-NEXT: movb %r12b, (%rdi) 8811; SSE42-NEXT: andb $1, %bl 8812; SSE42-NEXT: movb %bl, (%rdi) 8813; SSE42-NEXT: andb $1, %al 8814; SSE42-NEXT: movb %al, (%rdi) 8815; SSE42-NEXT: andb $1, %r9b 8816; SSE42-NEXT: movb %r9b, (%rdi) 8817; SSE42-NEXT: andb $1, %r11b 8818; SSE42-NEXT: movb %r11b, (%rdi) 8819; SSE42-NEXT: andb $1, %r15b 8820; SSE42-NEXT: movb %r15b, (%rdi) 8821; SSE42-NEXT: andb $1, %r13b 8822; SSE42-NEXT: movb %r13b, (%rdi) 8823; SSE42-NEXT: andb $1, %cl 8824; SSE42-NEXT: movb %cl, (%rdi) 8825; SSE42-NEXT: andb $1, %dl 8826; SSE42-NEXT: movb %dl, (%rdi) 8827; SSE42-NEXT: andb $1, %sil 8828; SSE42-NEXT: movb %sil, (%rdi) 8829; SSE42-NEXT: andb $1, %bpl 8830; SSE42-NEXT: movb %bpl, (%rdi) 8831; SSE42-NEXT: movq %rdi, %rax 8832; SSE42-NEXT: popq %rbx 8833; SSE42-NEXT: popq %r12 8834; SSE42-NEXT: popq %r13 8835; SSE42-NEXT: popq %r14 8836; SSE42-NEXT: popq %r15 8837; SSE42-NEXT: popq %rbp 8838; SSE42-NEXT: retq 8839; 8840; AVX1-LABEL: test_cmp_v32f64: 8841; AVX1: # BB#0: 8842; AVX1-NEXT: pushq %rbp 8843; AVX1-NEXT: movq %rsp, %rbp 8844; AVX1-NEXT: andq $-32, %rsp 8845; AVX1-NEXT: subq $32, %rsp 8846; AVX1-NEXT: vmovapd 16(%rbp), %ymm8 8847; AVX1-NEXT: vmovapd 48(%rbp), %ymm9 8848; AVX1-NEXT: vmovapd 80(%rbp), %ymm10 8849; AVX1-NEXT: vmovapd 112(%rbp), %ymm11 8850; AVX1-NEXT: vmovapd 144(%rbp), %ymm12 8851; AVX1-NEXT: vmovapd 176(%rbp), %ymm13 8852; AVX1-NEXT: vmovapd 208(%rbp), %ymm14 8853; AVX1-NEXT: vmovapd 240(%rbp), %ymm15 8854; AVX1-NEXT: vcmpltpd %ymm7, %ymm15, %ymm15 8855; AVX1-NEXT: vextractf128 $1, %ymm15, %xmm7 8856; AVX1-NEXT: vpacksswb %xmm7, %xmm15, %xmm15 8857; AVX1-NEXT: vcmpltpd %ymm6, %ymm14, %ymm6 8858; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm7 8859; AVX1-NEXT: vpacksswb %xmm7, %xmm6, %xmm6 8860; AVX1-NEXT: vpacksswb %xmm15, %xmm6, %xmm6 8861; AVX1-NEXT: vcmpltpd %ymm5, %ymm13, %ymm5 8862; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm7 8863; AVX1-NEXT: vpacksswb %xmm7, %xmm5, %xmm5 8864; AVX1-NEXT: vcmpltpd %ymm4, %ymm12, %ymm4 8865; AVX1-NEXT: vextractf128 $1, %ymm4, %xmm7 8866; AVX1-NEXT: vpacksswb %xmm7, %xmm4, %xmm4 8867; AVX1-NEXT: vpacksswb %xmm5, %xmm4, %xmm4 8868; AVX1-NEXT: vpacksswb %xmm6, %xmm4, %xmm4 8869; AVX1-NEXT: vcmpltpd %ymm3, %ymm11, %ymm3 8870; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm5 8871; AVX1-NEXT: vpacksswb %xmm5, %xmm3, %xmm3 8872; AVX1-NEXT: vcmpltpd %ymm2, %ymm10, %ymm2 8873; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm5 8874; AVX1-NEXT: vpacksswb %xmm5, %xmm2, %xmm2 8875; AVX1-NEXT: vpacksswb %xmm3, %xmm2, %xmm2 8876; AVX1-NEXT: vcmpltpd %ymm1, %ymm9, %ymm1 8877; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 8878; AVX1-NEXT: vpacksswb %xmm3, %xmm1, %xmm1 8879; AVX1-NEXT: vcmpltpd %ymm0, %ymm8, %ymm0 8880; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 8881; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 8882; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 8883; AVX1-NEXT: vpacksswb %xmm2, %xmm0, %xmm0 8884; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm0 8885; AVX1-NEXT: movq %rbp, %rsp 8886; AVX1-NEXT: popq %rbp 8887; AVX1-NEXT: retq 8888; 8889; AVX2-LABEL: test_cmp_v32f64: 8890; AVX2: # BB#0: 8891; AVX2-NEXT: pushq %rbp 8892; AVX2-NEXT: movq %rsp, %rbp 8893; AVX2-NEXT: andq $-32, %rsp 8894; AVX2-NEXT: subq $32, %rsp 8895; AVX2-NEXT: vmovapd 16(%rbp), %ymm8 8896; AVX2-NEXT: vmovapd 48(%rbp), %ymm9 8897; AVX2-NEXT: vmovapd 80(%rbp), %ymm10 8898; AVX2-NEXT: vmovapd 112(%rbp), %ymm11 8899; AVX2-NEXT: vmovapd 144(%rbp), %ymm12 8900; AVX2-NEXT: vmovapd 176(%rbp), %ymm13 8901; AVX2-NEXT: vmovapd 208(%rbp), %ymm14 8902; AVX2-NEXT: vmovapd 240(%rbp), %ymm15 8903; AVX2-NEXT: vcmpltpd %ymm7, %ymm15, %ymm7 8904; AVX2-NEXT: vcmpltpd %ymm6, %ymm14, %ymm6 8905; AVX2-NEXT: vpacksswb %ymm7, %ymm6, %ymm6 8906; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,2,1,3] 8907; AVX2-NEXT: vcmpltpd %ymm5, %ymm13, %ymm5 8908; AVX2-NEXT: vcmpltpd %ymm4, %ymm12, %ymm4 8909; AVX2-NEXT: vpacksswb %ymm5, %ymm4, %ymm4 8910; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,2,1,3] 8911; AVX2-NEXT: vpacksswb %ymm6, %ymm4, %ymm4 8912; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,2,1,3] 8913; AVX2-NEXT: vcmpltpd %ymm3, %ymm11, %ymm3 8914; AVX2-NEXT: vcmpltpd %ymm2, %ymm10, %ymm2 8915; AVX2-NEXT: vpacksswb %ymm3, %ymm2, %ymm2 8916; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,1,3] 8917; AVX2-NEXT: vcmpltpd %ymm1, %ymm9, %ymm1 8918; AVX2-NEXT: vcmpltpd %ymm0, %ymm8, %ymm0 8919; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 8920; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 8921; AVX2-NEXT: vpacksswb %ymm2, %ymm0, %ymm0 8922; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 8923; AVX2-NEXT: vpacksswb %ymm4, %ymm0, %ymm0 8924; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 8925; AVX2-NEXT: movq %rbp, %rsp 8926; AVX2-NEXT: popq %rbp 8927; AVX2-NEXT: retq 8928; 8929; AVX512F-LABEL: test_cmp_v32f64: 8930; AVX512F: # BB#0: 8931; AVX512F-NEXT: vextractf32x4 $3, %zmm4, %xmm8 8932; AVX512F-NEXT: vextractf32x4 $3, %zmm0, %xmm9 8933; AVX512F-NEXT: xorl %eax, %eax 8934; AVX512F-NEXT: vucomisd %xmm8, %xmm9 8935; AVX512F-NEXT: movq $-1, %rcx 8936; AVX512F-NEXT: movl $0, %edx 8937; AVX512F-NEXT: cmovaq %rcx, %rdx 8938; AVX512F-NEXT: vmovq %rdx, %xmm10 8939; AVX512F-NEXT: vpermilpd {{.*#+}} xmm8 = xmm8[1,0] 8940; AVX512F-NEXT: vpermilpd {{.*#+}} xmm9 = xmm9[1,0] 8941; AVX512F-NEXT: vucomisd %xmm8, %xmm9 8942; AVX512F-NEXT: movl $0, %edx 8943; AVX512F-NEXT: cmovaq %rcx, %rdx 8944; AVX512F-NEXT: vmovq %rdx, %xmm8 8945; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm8 = xmm10[0],xmm8[0] 8946; AVX512F-NEXT: vextractf32x4 $2, %zmm4, %xmm9 8947; AVX512F-NEXT: vextractf32x4 $2, %zmm0, %xmm10 8948; AVX512F-NEXT: vucomisd %xmm9, %xmm10 8949; AVX512F-NEXT: movl $0, %edx 8950; AVX512F-NEXT: cmovaq %rcx, %rdx 8951; AVX512F-NEXT: vmovq %rdx, %xmm11 8952; AVX512F-NEXT: vpermilpd {{.*#+}} xmm9 = xmm9[1,0] 8953; AVX512F-NEXT: vpermilpd {{.*#+}} xmm10 = xmm10[1,0] 8954; AVX512F-NEXT: vucomisd %xmm9, %xmm10 8955; AVX512F-NEXT: movl $0, %edx 8956; AVX512F-NEXT: cmovaq %rcx, %rdx 8957; AVX512F-NEXT: vmovq %rdx, %xmm9 8958; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm11[0],xmm9[0] 8959; AVX512F-NEXT: vinserti128 $1, %xmm8, %ymm9, %ymm8 8960; AVX512F-NEXT: vextractf32x4 $1, %zmm4, %xmm9 8961; AVX512F-NEXT: vextractf32x4 $1, %zmm0, %xmm10 8962; AVX512F-NEXT: vucomisd %xmm9, %xmm10 8963; AVX512F-NEXT: movl $0, %edx 8964; AVX512F-NEXT: cmovaq %rcx, %rdx 8965; AVX512F-NEXT: vmovq %rdx, %xmm11 8966; AVX512F-NEXT: vpermilpd {{.*#+}} xmm9 = xmm9[1,0] 8967; AVX512F-NEXT: vpermilpd {{.*#+}} xmm10 = xmm10[1,0] 8968; AVX512F-NEXT: vucomisd %xmm9, %xmm10 8969; AVX512F-NEXT: movl $0, %edx 8970; AVX512F-NEXT: cmovaq %rcx, %rdx 8971; AVX512F-NEXT: vmovq %rdx, %xmm9 8972; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm11[0],xmm9[0] 8973; AVX512F-NEXT: vucomisd %xmm4, %xmm0 8974; AVX512F-NEXT: movl $0, %edx 8975; AVX512F-NEXT: cmovaq %rcx, %rdx 8976; AVX512F-NEXT: vmovq %rdx, %xmm10 8977; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 8978; AVX512F-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 8979; AVX512F-NEXT: vucomisd %xmm4, %xmm0 8980; AVX512F-NEXT: movl $0, %edx 8981; AVX512F-NEXT: cmovaq %rcx, %rdx 8982; AVX512F-NEXT: vmovq %rdx, %xmm0 8983; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm10[0],xmm0[0] 8984; AVX512F-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm0 8985; AVX512F-NEXT: vinserti64x4 $1, %ymm8, %zmm0, %zmm0 8986; AVX512F-NEXT: vpmovqd %zmm0, %ymm8 8987; AVX512F-NEXT: vextractf32x4 $3, %zmm5, %xmm4 8988; AVX512F-NEXT: vextractf32x4 $3, %zmm1, %xmm0 8989; AVX512F-NEXT: vucomisd %xmm4, %xmm0 8990; AVX512F-NEXT: movl $0, %edx 8991; AVX512F-NEXT: cmovaq %rcx, %rdx 8992; AVX512F-NEXT: vmovq %rdx, %xmm9 8993; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 8994; AVX512F-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 8995; AVX512F-NEXT: vucomisd %xmm4, %xmm0 8996; AVX512F-NEXT: movl $0, %edx 8997; AVX512F-NEXT: cmovaq %rcx, %rdx 8998; AVX512F-NEXT: vmovq %rdx, %xmm0 8999; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm0[0] 9000; AVX512F-NEXT: vextractf32x4 $2, %zmm5, %xmm4 9001; AVX512F-NEXT: vextractf32x4 $2, %zmm1, %xmm0 9002; AVX512F-NEXT: vucomisd %xmm4, %xmm0 9003; AVX512F-NEXT: movl $0, %edx 9004; AVX512F-NEXT: cmovaq %rcx, %rdx 9005; AVX512F-NEXT: vmovq %rdx, %xmm10 9006; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9007; AVX512F-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 9008; AVX512F-NEXT: vucomisd %xmm4, %xmm0 9009; AVX512F-NEXT: movl $0, %edx 9010; AVX512F-NEXT: cmovaq %rcx, %rdx 9011; AVX512F-NEXT: vmovq %rdx, %xmm0 9012; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm10[0],xmm0[0] 9013; AVX512F-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm9 9014; AVX512F-NEXT: vextractf32x4 $1, %zmm5, %xmm4 9015; AVX512F-NEXT: vextractf32x4 $1, %zmm1, %xmm0 9016; AVX512F-NEXT: vucomisd %xmm4, %xmm0 9017; AVX512F-NEXT: movl $0, %edx 9018; AVX512F-NEXT: cmovaq %rcx, %rdx 9019; AVX512F-NEXT: vmovq %rdx, %xmm10 9020; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9021; AVX512F-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 9022; AVX512F-NEXT: vucomisd %xmm4, %xmm0 9023; AVX512F-NEXT: movl $0, %edx 9024; AVX512F-NEXT: cmovaq %rcx, %rdx 9025; AVX512F-NEXT: vmovq %rdx, %xmm0 9026; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm10[0],xmm0[0] 9027; AVX512F-NEXT: vucomisd %xmm5, %xmm1 9028; AVX512F-NEXT: movl $0, %edx 9029; AVX512F-NEXT: cmovaq %rcx, %rdx 9030; AVX512F-NEXT: vmovq %rdx, %xmm4 9031; AVX512F-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 9032; AVX512F-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 9033; AVX512F-NEXT: vucomisd %xmm5, %xmm1 9034; AVX512F-NEXT: movl $0, %edx 9035; AVX512F-NEXT: cmovaq %rcx, %rdx 9036; AVX512F-NEXT: vmovq %rdx, %xmm1 9037; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm4[0],xmm1[0] 9038; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 9039; AVX512F-NEXT: vinserti64x4 $1, %ymm9, %zmm0, %zmm0 9040; AVX512F-NEXT: vpmovqd %zmm0, %ymm0 9041; AVX512F-NEXT: vinserti64x4 $1, %ymm0, %zmm8, %zmm0 9042; AVX512F-NEXT: vpmovdb %zmm0, %xmm8 9043; AVX512F-NEXT: vextractf32x4 $3, %zmm6, %xmm1 9044; AVX512F-NEXT: vextractf32x4 $3, %zmm2, %xmm4 9045; AVX512F-NEXT: vucomisd %xmm1, %xmm4 9046; AVX512F-NEXT: movl $0, %edx 9047; AVX512F-NEXT: cmovaq %rcx, %rdx 9048; AVX512F-NEXT: vmovq %rdx, %xmm5 9049; AVX512F-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 9050; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9051; AVX512F-NEXT: vucomisd %xmm1, %xmm4 9052; AVX512F-NEXT: movl $0, %edx 9053; AVX512F-NEXT: cmovaq %rcx, %rdx 9054; AVX512F-NEXT: vmovq %rdx, %xmm1 9055; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm5[0],xmm1[0] 9056; AVX512F-NEXT: vextractf32x4 $2, %zmm6, %xmm4 9057; AVX512F-NEXT: vextractf32x4 $2, %zmm2, %xmm5 9058; AVX512F-NEXT: vucomisd %xmm4, %xmm5 9059; AVX512F-NEXT: movl $0, %edx 9060; AVX512F-NEXT: cmovaq %rcx, %rdx 9061; AVX512F-NEXT: vmovq %rdx, %xmm0 9062; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9063; AVX512F-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 9064; AVX512F-NEXT: vucomisd %xmm4, %xmm5 9065; AVX512F-NEXT: movl $0, %edx 9066; AVX512F-NEXT: cmovaq %rcx, %rdx 9067; AVX512F-NEXT: vmovq %rdx, %xmm4 9068; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm4[0] 9069; AVX512F-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 9070; AVX512F-NEXT: vextractf32x4 $1, %zmm6, %xmm1 9071; AVX512F-NEXT: vextractf32x4 $1, %zmm2, %xmm4 9072; AVX512F-NEXT: vucomisd %xmm1, %xmm4 9073; AVX512F-NEXT: movl $0, %edx 9074; AVX512F-NEXT: cmovaq %rcx, %rdx 9075; AVX512F-NEXT: vmovq %rdx, %xmm5 9076; AVX512F-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 9077; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9078; AVX512F-NEXT: vucomisd %xmm1, %xmm4 9079; AVX512F-NEXT: movl $0, %edx 9080; AVX512F-NEXT: cmovaq %rcx, %rdx 9081; AVX512F-NEXT: vmovq %rdx, %xmm1 9082; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm5[0],xmm1[0] 9083; AVX512F-NEXT: vucomisd %xmm6, %xmm2 9084; AVX512F-NEXT: movl $0, %edx 9085; AVX512F-NEXT: cmovaq %rcx, %rdx 9086; AVX512F-NEXT: vmovq %rdx, %xmm4 9087; AVX512F-NEXT: vpermilpd {{.*#+}} xmm5 = xmm6[1,0] 9088; AVX512F-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 9089; AVX512F-NEXT: vucomisd %xmm5, %xmm2 9090; AVX512F-NEXT: movl $0, %edx 9091; AVX512F-NEXT: cmovaq %rcx, %rdx 9092; AVX512F-NEXT: vmovq %rdx, %xmm2 9093; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm4[0],xmm2[0] 9094; AVX512F-NEXT: vinserti128 $1, %xmm1, %ymm2, %ymm1 9095; AVX512F-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm0 9096; AVX512F-NEXT: vpmovqd %zmm0, %ymm0 9097; AVX512F-NEXT: vextractf32x4 $3, %zmm7, %xmm1 9098; AVX512F-NEXT: vextractf32x4 $3, %zmm3, %xmm2 9099; AVX512F-NEXT: vucomisd %xmm1, %xmm2 9100; AVX512F-NEXT: movl $0, %edx 9101; AVX512F-NEXT: cmovaq %rcx, %rdx 9102; AVX512F-NEXT: vmovq %rdx, %xmm4 9103; AVX512F-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 9104; AVX512F-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 9105; AVX512F-NEXT: vucomisd %xmm1, %xmm2 9106; AVX512F-NEXT: movl $0, %edx 9107; AVX512F-NEXT: cmovaq %rcx, %rdx 9108; AVX512F-NEXT: vmovq %rdx, %xmm1 9109; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm4[0],xmm1[0] 9110; AVX512F-NEXT: vextractf32x4 $2, %zmm7, %xmm2 9111; AVX512F-NEXT: vextractf32x4 $2, %zmm3, %xmm4 9112; AVX512F-NEXT: vucomisd %xmm2, %xmm4 9113; AVX512F-NEXT: movl $0, %edx 9114; AVX512F-NEXT: cmovaq %rcx, %rdx 9115; AVX512F-NEXT: vmovq %rdx, %xmm5 9116; AVX512F-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 9117; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9118; AVX512F-NEXT: vucomisd %xmm2, %xmm4 9119; AVX512F-NEXT: movl $0, %edx 9120; AVX512F-NEXT: cmovaq %rcx, %rdx 9121; AVX512F-NEXT: vmovq %rdx, %xmm2 9122; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm5[0],xmm2[0] 9123; AVX512F-NEXT: vinserti128 $1, %xmm1, %ymm2, %ymm1 9124; AVX512F-NEXT: vextractf32x4 $1, %zmm7, %xmm2 9125; AVX512F-NEXT: vextractf32x4 $1, %zmm3, %xmm4 9126; AVX512F-NEXT: vucomisd %xmm2, %xmm4 9127; AVX512F-NEXT: movl $0, %edx 9128; AVX512F-NEXT: cmovaq %rcx, %rdx 9129; AVX512F-NEXT: vmovq %rdx, %xmm5 9130; AVX512F-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 9131; AVX512F-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9132; AVX512F-NEXT: vucomisd %xmm2, %xmm4 9133; AVX512F-NEXT: movl $0, %edx 9134; AVX512F-NEXT: cmovaq %rcx, %rdx 9135; AVX512F-NEXT: vmovq %rdx, %xmm2 9136; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm5[0],xmm2[0] 9137; AVX512F-NEXT: vucomisd %xmm7, %xmm3 9138; AVX512F-NEXT: movl $0, %edx 9139; AVX512F-NEXT: cmovaq %rcx, %rdx 9140; AVX512F-NEXT: vmovq %rdx, %xmm4 9141; AVX512F-NEXT: vpermilpd {{.*#+}} xmm5 = xmm7[1,0] 9142; AVX512F-NEXT: vpermilpd {{.*#+}} xmm3 = xmm3[1,0] 9143; AVX512F-NEXT: vucomisd %xmm5, %xmm3 9144; AVX512F-NEXT: cmovaq %rcx, %rax 9145; AVX512F-NEXT: vmovq %rax, %xmm3 9146; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm4[0],xmm3[0] 9147; AVX512F-NEXT: vinserti128 $1, %xmm2, %ymm3, %ymm2 9148; AVX512F-NEXT: vinserti64x4 $1, %ymm1, %zmm2, %zmm1 9149; AVX512F-NEXT: vpmovqd %zmm1, %ymm1 9150; AVX512F-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 9151; AVX512F-NEXT: vpmovdb %zmm0, %xmm0 9152; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm8, %ymm0 9153; AVX512F-NEXT: retq 9154; 9155; AVX512DQ-LABEL: test_cmp_v32f64: 9156; AVX512DQ: # BB#0: 9157; AVX512DQ-NEXT: vextractf64x2 $3, %zmm4, %xmm8 9158; AVX512DQ-NEXT: vextractf64x2 $3, %zmm0, %xmm9 9159; AVX512DQ-NEXT: xorl %eax, %eax 9160; AVX512DQ-NEXT: vucomisd %xmm8, %xmm9 9161; AVX512DQ-NEXT: movq $-1, %rcx 9162; AVX512DQ-NEXT: movl $0, %edx 9163; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9164; AVX512DQ-NEXT: vmovq %rdx, %xmm10 9165; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm8 = xmm8[1,0] 9166; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm9 = xmm9[1,0] 9167; AVX512DQ-NEXT: vucomisd %xmm8, %xmm9 9168; AVX512DQ-NEXT: movl $0, %edx 9169; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9170; AVX512DQ-NEXT: vmovq %rdx, %xmm8 9171; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm8 = xmm10[0],xmm8[0] 9172; AVX512DQ-NEXT: vextractf64x2 $2, %zmm4, %xmm9 9173; AVX512DQ-NEXT: vextractf64x2 $2, %zmm0, %xmm10 9174; AVX512DQ-NEXT: vucomisd %xmm9, %xmm10 9175; AVX512DQ-NEXT: movl $0, %edx 9176; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9177; AVX512DQ-NEXT: vmovq %rdx, %xmm11 9178; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm9 = xmm9[1,0] 9179; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm10 = xmm10[1,0] 9180; AVX512DQ-NEXT: vucomisd %xmm9, %xmm10 9181; AVX512DQ-NEXT: movl $0, %edx 9182; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9183; AVX512DQ-NEXT: vmovq %rdx, %xmm9 9184; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm11[0],xmm9[0] 9185; AVX512DQ-NEXT: vinserti128 $1, %xmm8, %ymm9, %ymm8 9186; AVX512DQ-NEXT: vextractf64x2 $1, %zmm4, %xmm9 9187; AVX512DQ-NEXT: vextractf64x2 $1, %zmm0, %xmm10 9188; AVX512DQ-NEXT: vucomisd %xmm9, %xmm10 9189; AVX512DQ-NEXT: movl $0, %edx 9190; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9191; AVX512DQ-NEXT: vmovq %rdx, %xmm11 9192; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm9 = xmm9[1,0] 9193; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm10 = xmm10[1,0] 9194; AVX512DQ-NEXT: vucomisd %xmm9, %xmm10 9195; AVX512DQ-NEXT: movl $0, %edx 9196; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9197; AVX512DQ-NEXT: vmovq %rdx, %xmm9 9198; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm11[0],xmm9[0] 9199; AVX512DQ-NEXT: vucomisd %xmm4, %xmm0 9200; AVX512DQ-NEXT: movl $0, %edx 9201; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9202; AVX512DQ-NEXT: vmovq %rdx, %xmm10 9203; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9204; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 9205; AVX512DQ-NEXT: vucomisd %xmm4, %xmm0 9206; AVX512DQ-NEXT: movl $0, %edx 9207; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9208; AVX512DQ-NEXT: vmovq %rdx, %xmm0 9209; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm10[0],xmm0[0] 9210; AVX512DQ-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm0 9211; AVX512DQ-NEXT: vinserti64x4 $1, %ymm8, %zmm0, %zmm0 9212; AVX512DQ-NEXT: vpmovqd %zmm0, %ymm8 9213; AVX512DQ-NEXT: vextractf64x2 $3, %zmm5, %xmm4 9214; AVX512DQ-NEXT: vextractf64x2 $3, %zmm1, %xmm0 9215; AVX512DQ-NEXT: vucomisd %xmm4, %xmm0 9216; AVX512DQ-NEXT: movl $0, %edx 9217; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9218; AVX512DQ-NEXT: vmovq %rdx, %xmm9 9219; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9220; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 9221; AVX512DQ-NEXT: vucomisd %xmm4, %xmm0 9222; AVX512DQ-NEXT: movl $0, %edx 9223; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9224; AVX512DQ-NEXT: vmovq %rdx, %xmm0 9225; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm0[0] 9226; AVX512DQ-NEXT: vextractf64x2 $2, %zmm5, %xmm4 9227; AVX512DQ-NEXT: vextractf64x2 $2, %zmm1, %xmm0 9228; AVX512DQ-NEXT: vucomisd %xmm4, %xmm0 9229; AVX512DQ-NEXT: movl $0, %edx 9230; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9231; AVX512DQ-NEXT: vmovq %rdx, %xmm10 9232; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9233; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 9234; AVX512DQ-NEXT: vucomisd %xmm4, %xmm0 9235; AVX512DQ-NEXT: movl $0, %edx 9236; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9237; AVX512DQ-NEXT: vmovq %rdx, %xmm0 9238; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm10[0],xmm0[0] 9239; AVX512DQ-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm9 9240; AVX512DQ-NEXT: vextractf64x2 $1, %zmm5, %xmm4 9241; AVX512DQ-NEXT: vextractf64x2 $1, %zmm1, %xmm0 9242; AVX512DQ-NEXT: vucomisd %xmm4, %xmm0 9243; AVX512DQ-NEXT: movl $0, %edx 9244; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9245; AVX512DQ-NEXT: vmovq %rdx, %xmm10 9246; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9247; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 9248; AVX512DQ-NEXT: vucomisd %xmm4, %xmm0 9249; AVX512DQ-NEXT: movl $0, %edx 9250; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9251; AVX512DQ-NEXT: vmovq %rdx, %xmm0 9252; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm10[0],xmm0[0] 9253; AVX512DQ-NEXT: vucomisd %xmm5, %xmm1 9254; AVX512DQ-NEXT: movl $0, %edx 9255; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9256; AVX512DQ-NEXT: vmovq %rdx, %xmm4 9257; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 9258; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 9259; AVX512DQ-NEXT: vucomisd %xmm5, %xmm1 9260; AVX512DQ-NEXT: movl $0, %edx 9261; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9262; AVX512DQ-NEXT: vmovq %rdx, %xmm1 9263; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm4[0],xmm1[0] 9264; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 9265; AVX512DQ-NEXT: vinserti64x4 $1, %ymm9, %zmm0, %zmm0 9266; AVX512DQ-NEXT: vpmovqd %zmm0, %ymm0 9267; AVX512DQ-NEXT: vinserti32x8 $1, %ymm0, %zmm8, %zmm0 9268; AVX512DQ-NEXT: vpmovdb %zmm0, %xmm8 9269; AVX512DQ-NEXT: vextractf64x2 $3, %zmm6, %xmm1 9270; AVX512DQ-NEXT: vextractf64x2 $3, %zmm2, %xmm4 9271; AVX512DQ-NEXT: vucomisd %xmm1, %xmm4 9272; AVX512DQ-NEXT: movl $0, %edx 9273; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9274; AVX512DQ-NEXT: vmovq %rdx, %xmm5 9275; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 9276; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9277; AVX512DQ-NEXT: vucomisd %xmm1, %xmm4 9278; AVX512DQ-NEXT: movl $0, %edx 9279; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9280; AVX512DQ-NEXT: vmovq %rdx, %xmm1 9281; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm5[0],xmm1[0] 9282; AVX512DQ-NEXT: vextractf64x2 $2, %zmm6, %xmm4 9283; AVX512DQ-NEXT: vextractf64x2 $2, %zmm2, %xmm5 9284; AVX512DQ-NEXT: vucomisd %xmm4, %xmm5 9285; AVX512DQ-NEXT: movl $0, %edx 9286; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9287; AVX512DQ-NEXT: vmovq %rdx, %xmm0 9288; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9289; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 9290; AVX512DQ-NEXT: vucomisd %xmm4, %xmm5 9291; AVX512DQ-NEXT: movl $0, %edx 9292; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9293; AVX512DQ-NEXT: vmovq %rdx, %xmm4 9294; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm4[0] 9295; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 9296; AVX512DQ-NEXT: vextractf64x2 $1, %zmm6, %xmm1 9297; AVX512DQ-NEXT: vextractf64x2 $1, %zmm2, %xmm4 9298; AVX512DQ-NEXT: vucomisd %xmm1, %xmm4 9299; AVX512DQ-NEXT: movl $0, %edx 9300; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9301; AVX512DQ-NEXT: vmovq %rdx, %xmm5 9302; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 9303; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9304; AVX512DQ-NEXT: vucomisd %xmm1, %xmm4 9305; AVX512DQ-NEXT: movl $0, %edx 9306; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9307; AVX512DQ-NEXT: vmovq %rdx, %xmm1 9308; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm5[0],xmm1[0] 9309; AVX512DQ-NEXT: vucomisd %xmm6, %xmm2 9310; AVX512DQ-NEXT: movl $0, %edx 9311; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9312; AVX512DQ-NEXT: vmovq %rdx, %xmm4 9313; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm5 = xmm6[1,0] 9314; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 9315; AVX512DQ-NEXT: vucomisd %xmm5, %xmm2 9316; AVX512DQ-NEXT: movl $0, %edx 9317; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9318; AVX512DQ-NEXT: vmovq %rdx, %xmm2 9319; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm4[0],xmm2[0] 9320; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm2, %ymm1 9321; AVX512DQ-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm0 9322; AVX512DQ-NEXT: vpmovqd %zmm0, %ymm0 9323; AVX512DQ-NEXT: vextractf64x2 $3, %zmm7, %xmm1 9324; AVX512DQ-NEXT: vextractf64x2 $3, %zmm3, %xmm2 9325; AVX512DQ-NEXT: vucomisd %xmm1, %xmm2 9326; AVX512DQ-NEXT: movl $0, %edx 9327; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9328; AVX512DQ-NEXT: vmovq %rdx, %xmm4 9329; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 9330; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 9331; AVX512DQ-NEXT: vucomisd %xmm1, %xmm2 9332; AVX512DQ-NEXT: movl $0, %edx 9333; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9334; AVX512DQ-NEXT: vmovq %rdx, %xmm1 9335; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm4[0],xmm1[0] 9336; AVX512DQ-NEXT: vextractf64x2 $2, %zmm7, %xmm2 9337; AVX512DQ-NEXT: vextractf64x2 $2, %zmm3, %xmm4 9338; AVX512DQ-NEXT: vucomisd %xmm2, %xmm4 9339; AVX512DQ-NEXT: movl $0, %edx 9340; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9341; AVX512DQ-NEXT: vmovq %rdx, %xmm5 9342; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 9343; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9344; AVX512DQ-NEXT: vucomisd %xmm2, %xmm4 9345; AVX512DQ-NEXT: movl $0, %edx 9346; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9347; AVX512DQ-NEXT: vmovq %rdx, %xmm2 9348; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm5[0],xmm2[0] 9349; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm2, %ymm1 9350; AVX512DQ-NEXT: vextractf64x2 $1, %zmm7, %xmm2 9351; AVX512DQ-NEXT: vextractf64x2 $1, %zmm3, %xmm4 9352; AVX512DQ-NEXT: vucomisd %xmm2, %xmm4 9353; AVX512DQ-NEXT: movl $0, %edx 9354; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9355; AVX512DQ-NEXT: vmovq %rdx, %xmm5 9356; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 9357; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9358; AVX512DQ-NEXT: vucomisd %xmm2, %xmm4 9359; AVX512DQ-NEXT: movl $0, %edx 9360; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9361; AVX512DQ-NEXT: vmovq %rdx, %xmm2 9362; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm5[0],xmm2[0] 9363; AVX512DQ-NEXT: vucomisd %xmm7, %xmm3 9364; AVX512DQ-NEXT: movl $0, %edx 9365; AVX512DQ-NEXT: cmovaq %rcx, %rdx 9366; AVX512DQ-NEXT: vmovq %rdx, %xmm4 9367; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm5 = xmm7[1,0] 9368; AVX512DQ-NEXT: vpermilpd {{.*#+}} xmm3 = xmm3[1,0] 9369; AVX512DQ-NEXT: vucomisd %xmm5, %xmm3 9370; AVX512DQ-NEXT: cmovaq %rcx, %rax 9371; AVX512DQ-NEXT: vmovq %rax, %xmm3 9372; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm4[0],xmm3[0] 9373; AVX512DQ-NEXT: vinserti128 $1, %xmm2, %ymm3, %ymm2 9374; AVX512DQ-NEXT: vinserti64x4 $1, %ymm1, %zmm2, %zmm1 9375; AVX512DQ-NEXT: vpmovqd %zmm1, %ymm1 9376; AVX512DQ-NEXT: vinserti32x8 $1, %ymm1, %zmm0, %zmm0 9377; AVX512DQ-NEXT: vpmovdb %zmm0, %xmm0 9378; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm8, %ymm0 9379; AVX512DQ-NEXT: retq 9380; 9381; AVX512BW-LABEL: test_cmp_v32f64: 9382; AVX512BW: # BB#0: 9383; AVX512BW-NEXT: vextractf32x4 $3, %zmm4, %xmm8 9384; AVX512BW-NEXT: vextractf32x4 $3, %zmm0, %xmm9 9385; AVX512BW-NEXT: xorl %eax, %eax 9386; AVX512BW-NEXT: vucomisd %xmm8, %xmm9 9387; AVX512BW-NEXT: movq $-1, %rcx 9388; AVX512BW-NEXT: movl $0, %edx 9389; AVX512BW-NEXT: cmovaq %rcx, %rdx 9390; AVX512BW-NEXT: vmovq %rdx, %xmm10 9391; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm8 = xmm8[1,0] 9392; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm9 = xmm9[1,0] 9393; AVX512BW-NEXT: vucomisd %xmm8, %xmm9 9394; AVX512BW-NEXT: movl $0, %edx 9395; AVX512BW-NEXT: cmovaq %rcx, %rdx 9396; AVX512BW-NEXT: vmovq %rdx, %xmm8 9397; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm8 = xmm10[0],xmm8[0] 9398; AVX512BW-NEXT: vextractf32x4 $2, %zmm4, %xmm9 9399; AVX512BW-NEXT: vextractf32x4 $2, %zmm0, %xmm10 9400; AVX512BW-NEXT: vucomisd %xmm9, %xmm10 9401; AVX512BW-NEXT: movl $0, %edx 9402; AVX512BW-NEXT: cmovaq %rcx, %rdx 9403; AVX512BW-NEXT: vmovq %rdx, %xmm11 9404; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm9 = xmm9[1,0] 9405; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm10 = xmm10[1,0] 9406; AVX512BW-NEXT: vucomisd %xmm9, %xmm10 9407; AVX512BW-NEXT: movl $0, %edx 9408; AVX512BW-NEXT: cmovaq %rcx, %rdx 9409; AVX512BW-NEXT: vmovq %rdx, %xmm9 9410; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm11[0],xmm9[0] 9411; AVX512BW-NEXT: vinserti128 $1, %xmm8, %ymm9, %ymm8 9412; AVX512BW-NEXT: vextractf32x4 $1, %zmm4, %xmm9 9413; AVX512BW-NEXT: vextractf32x4 $1, %zmm0, %xmm10 9414; AVX512BW-NEXT: vucomisd %xmm9, %xmm10 9415; AVX512BW-NEXT: movl $0, %edx 9416; AVX512BW-NEXT: cmovaq %rcx, %rdx 9417; AVX512BW-NEXT: vmovq %rdx, %xmm11 9418; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm9 = xmm9[1,0] 9419; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm10 = xmm10[1,0] 9420; AVX512BW-NEXT: vucomisd %xmm9, %xmm10 9421; AVX512BW-NEXT: movl $0, %edx 9422; AVX512BW-NEXT: cmovaq %rcx, %rdx 9423; AVX512BW-NEXT: vmovq %rdx, %xmm9 9424; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm11[0],xmm9[0] 9425; AVX512BW-NEXT: vucomisd %xmm4, %xmm0 9426; AVX512BW-NEXT: movl $0, %edx 9427; AVX512BW-NEXT: cmovaq %rcx, %rdx 9428; AVX512BW-NEXT: vmovq %rdx, %xmm10 9429; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9430; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 9431; AVX512BW-NEXT: vucomisd %xmm4, %xmm0 9432; AVX512BW-NEXT: movl $0, %edx 9433; AVX512BW-NEXT: cmovaq %rcx, %rdx 9434; AVX512BW-NEXT: vmovq %rdx, %xmm0 9435; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm10[0],xmm0[0] 9436; AVX512BW-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm0 9437; AVX512BW-NEXT: vinserti64x4 $1, %ymm8, %zmm0, %zmm0 9438; AVX512BW-NEXT: vpmovqd %zmm0, %ymm8 9439; AVX512BW-NEXT: vextractf32x4 $3, %zmm5, %xmm4 9440; AVX512BW-NEXT: vextractf32x4 $3, %zmm1, %xmm0 9441; AVX512BW-NEXT: vucomisd %xmm4, %xmm0 9442; AVX512BW-NEXT: movl $0, %edx 9443; AVX512BW-NEXT: cmovaq %rcx, %rdx 9444; AVX512BW-NEXT: vmovq %rdx, %xmm9 9445; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9446; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 9447; AVX512BW-NEXT: vucomisd %xmm4, %xmm0 9448; AVX512BW-NEXT: movl $0, %edx 9449; AVX512BW-NEXT: cmovaq %rcx, %rdx 9450; AVX512BW-NEXT: vmovq %rdx, %xmm0 9451; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm0[0] 9452; AVX512BW-NEXT: vextractf32x4 $2, %zmm5, %xmm4 9453; AVX512BW-NEXT: vextractf32x4 $2, %zmm1, %xmm0 9454; AVX512BW-NEXT: vucomisd %xmm4, %xmm0 9455; AVX512BW-NEXT: movl $0, %edx 9456; AVX512BW-NEXT: cmovaq %rcx, %rdx 9457; AVX512BW-NEXT: vmovq %rdx, %xmm10 9458; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9459; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 9460; AVX512BW-NEXT: vucomisd %xmm4, %xmm0 9461; AVX512BW-NEXT: movl $0, %edx 9462; AVX512BW-NEXT: cmovaq %rcx, %rdx 9463; AVX512BW-NEXT: vmovq %rdx, %xmm0 9464; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm10[0],xmm0[0] 9465; AVX512BW-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm9 9466; AVX512BW-NEXT: vextractf32x4 $1, %zmm5, %xmm4 9467; AVX512BW-NEXT: vextractf32x4 $1, %zmm1, %xmm0 9468; AVX512BW-NEXT: vucomisd %xmm4, %xmm0 9469; AVX512BW-NEXT: movl $0, %edx 9470; AVX512BW-NEXT: cmovaq %rcx, %rdx 9471; AVX512BW-NEXT: vmovq %rdx, %xmm10 9472; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9473; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 9474; AVX512BW-NEXT: vucomisd %xmm4, %xmm0 9475; AVX512BW-NEXT: movl $0, %edx 9476; AVX512BW-NEXT: cmovaq %rcx, %rdx 9477; AVX512BW-NEXT: vmovq %rdx, %xmm0 9478; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm10[0],xmm0[0] 9479; AVX512BW-NEXT: vucomisd %xmm5, %xmm1 9480; AVX512BW-NEXT: movl $0, %edx 9481; AVX512BW-NEXT: cmovaq %rcx, %rdx 9482; AVX512BW-NEXT: vmovq %rdx, %xmm4 9483; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 9484; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 9485; AVX512BW-NEXT: vucomisd %xmm5, %xmm1 9486; AVX512BW-NEXT: movl $0, %edx 9487; AVX512BW-NEXT: cmovaq %rcx, %rdx 9488; AVX512BW-NEXT: vmovq %rdx, %xmm1 9489; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm4[0],xmm1[0] 9490; AVX512BW-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 9491; AVX512BW-NEXT: vinserti64x4 $1, %ymm9, %zmm0, %zmm0 9492; AVX512BW-NEXT: vpmovqd %zmm0, %ymm0 9493; AVX512BW-NEXT: vinserti64x4 $1, %ymm0, %zmm8, %zmm0 9494; AVX512BW-NEXT: vpmovdw %zmm0, %ymm8 9495; AVX512BW-NEXT: vextractf32x4 $3, %zmm6, %xmm1 9496; AVX512BW-NEXT: vextractf32x4 $3, %zmm2, %xmm4 9497; AVX512BW-NEXT: vucomisd %xmm1, %xmm4 9498; AVX512BW-NEXT: movl $0, %edx 9499; AVX512BW-NEXT: cmovaq %rcx, %rdx 9500; AVX512BW-NEXT: vmovq %rdx, %xmm5 9501; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 9502; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9503; AVX512BW-NEXT: vucomisd %xmm1, %xmm4 9504; AVX512BW-NEXT: movl $0, %edx 9505; AVX512BW-NEXT: cmovaq %rcx, %rdx 9506; AVX512BW-NEXT: vmovq %rdx, %xmm1 9507; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm5[0],xmm1[0] 9508; AVX512BW-NEXT: vextractf32x4 $2, %zmm6, %xmm4 9509; AVX512BW-NEXT: vextractf32x4 $2, %zmm2, %xmm5 9510; AVX512BW-NEXT: vucomisd %xmm4, %xmm5 9511; AVX512BW-NEXT: movl $0, %edx 9512; AVX512BW-NEXT: cmovaq %rcx, %rdx 9513; AVX512BW-NEXT: vmovq %rdx, %xmm0 9514; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9515; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 9516; AVX512BW-NEXT: vucomisd %xmm4, %xmm5 9517; AVX512BW-NEXT: movl $0, %edx 9518; AVX512BW-NEXT: cmovaq %rcx, %rdx 9519; AVX512BW-NEXT: vmovq %rdx, %xmm4 9520; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm4[0] 9521; AVX512BW-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 9522; AVX512BW-NEXT: vextractf32x4 $1, %zmm6, %xmm1 9523; AVX512BW-NEXT: vextractf32x4 $1, %zmm2, %xmm4 9524; AVX512BW-NEXT: vucomisd %xmm1, %xmm4 9525; AVX512BW-NEXT: movl $0, %edx 9526; AVX512BW-NEXT: cmovaq %rcx, %rdx 9527; AVX512BW-NEXT: vmovq %rdx, %xmm5 9528; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 9529; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9530; AVX512BW-NEXT: vucomisd %xmm1, %xmm4 9531; AVX512BW-NEXT: movl $0, %edx 9532; AVX512BW-NEXT: cmovaq %rcx, %rdx 9533; AVX512BW-NEXT: vmovq %rdx, %xmm1 9534; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm5[0],xmm1[0] 9535; AVX512BW-NEXT: vucomisd %xmm6, %xmm2 9536; AVX512BW-NEXT: movl $0, %edx 9537; AVX512BW-NEXT: cmovaq %rcx, %rdx 9538; AVX512BW-NEXT: vmovq %rdx, %xmm4 9539; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm5 = xmm6[1,0] 9540; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 9541; AVX512BW-NEXT: vucomisd %xmm5, %xmm2 9542; AVX512BW-NEXT: movl $0, %edx 9543; AVX512BW-NEXT: cmovaq %rcx, %rdx 9544; AVX512BW-NEXT: vmovq %rdx, %xmm2 9545; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm4[0],xmm2[0] 9546; AVX512BW-NEXT: vinserti128 $1, %xmm1, %ymm2, %ymm1 9547; AVX512BW-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm0 9548; AVX512BW-NEXT: vpmovqd %zmm0, %ymm0 9549; AVX512BW-NEXT: vextractf32x4 $3, %zmm7, %xmm1 9550; AVX512BW-NEXT: vextractf32x4 $3, %zmm3, %xmm2 9551; AVX512BW-NEXT: vucomisd %xmm1, %xmm2 9552; AVX512BW-NEXT: movl $0, %edx 9553; AVX512BW-NEXT: cmovaq %rcx, %rdx 9554; AVX512BW-NEXT: vmovq %rdx, %xmm4 9555; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 9556; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 9557; AVX512BW-NEXT: vucomisd %xmm1, %xmm2 9558; AVX512BW-NEXT: movl $0, %edx 9559; AVX512BW-NEXT: cmovaq %rcx, %rdx 9560; AVX512BW-NEXT: vmovq %rdx, %xmm1 9561; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm4[0],xmm1[0] 9562; AVX512BW-NEXT: vextractf32x4 $2, %zmm7, %xmm2 9563; AVX512BW-NEXT: vextractf32x4 $2, %zmm3, %xmm4 9564; AVX512BW-NEXT: vucomisd %xmm2, %xmm4 9565; AVX512BW-NEXT: movl $0, %edx 9566; AVX512BW-NEXT: cmovaq %rcx, %rdx 9567; AVX512BW-NEXT: vmovq %rdx, %xmm5 9568; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 9569; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9570; AVX512BW-NEXT: vucomisd %xmm2, %xmm4 9571; AVX512BW-NEXT: movl $0, %edx 9572; AVX512BW-NEXT: cmovaq %rcx, %rdx 9573; AVX512BW-NEXT: vmovq %rdx, %xmm2 9574; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm5[0],xmm2[0] 9575; AVX512BW-NEXT: vinserti128 $1, %xmm1, %ymm2, %ymm1 9576; AVX512BW-NEXT: vextractf32x4 $1, %zmm7, %xmm2 9577; AVX512BW-NEXT: vextractf32x4 $1, %zmm3, %xmm4 9578; AVX512BW-NEXT: vucomisd %xmm2, %xmm4 9579; AVX512BW-NEXT: movl $0, %edx 9580; AVX512BW-NEXT: cmovaq %rcx, %rdx 9581; AVX512BW-NEXT: vmovq %rdx, %xmm5 9582; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 9583; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 9584; AVX512BW-NEXT: vucomisd %xmm2, %xmm4 9585; AVX512BW-NEXT: movl $0, %edx 9586; AVX512BW-NEXT: cmovaq %rcx, %rdx 9587; AVX512BW-NEXT: vmovq %rdx, %xmm2 9588; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm5[0],xmm2[0] 9589; AVX512BW-NEXT: vucomisd %xmm7, %xmm3 9590; AVX512BW-NEXT: movl $0, %edx 9591; AVX512BW-NEXT: cmovaq %rcx, %rdx 9592; AVX512BW-NEXT: vmovq %rdx, %xmm4 9593; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm5 = xmm7[1,0] 9594; AVX512BW-NEXT: vpermilpd {{.*#+}} xmm3 = xmm3[1,0] 9595; AVX512BW-NEXT: vucomisd %xmm5, %xmm3 9596; AVX512BW-NEXT: cmovaq %rcx, %rax 9597; AVX512BW-NEXT: vmovq %rax, %xmm3 9598; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm4[0],xmm3[0] 9599; AVX512BW-NEXT: vinserti128 $1, %xmm2, %ymm3, %ymm2 9600; AVX512BW-NEXT: vinserti64x4 $1, %ymm1, %zmm2, %zmm1 9601; AVX512BW-NEXT: vpmovqd %zmm1, %ymm1 9602; AVX512BW-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 9603; AVX512BW-NEXT: vpmovdw %zmm0, %ymm0 9604; AVX512BW-NEXT: vinserti64x4 $1, %ymm0, %zmm8, %zmm0 9605; AVX512BW-NEXT: vpmovwb %zmm0, %ymm0 9606; AVX512BW-NEXT: retq 9607 %1 = fcmp ogt <32 x double> %a0, %a1 9608 ret <32 x i1> %1 9609} 9610 9611define <32 x i1> @test_cmp_v32i64(<32 x i64> %a0, <32 x i64> %a1) nounwind { 9612; SSE2-LABEL: test_cmp_v32i64: 9613; SSE2: # BB#0: 9614; SSE2-NEXT: movdqa {{.*#+}} xmm8 = [2147483648,0,2147483648,0] 9615; SSE2-NEXT: pxor %xmm8, %xmm7 9616; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm9 9617; SSE2-NEXT: pxor %xmm8, %xmm9 9618; SSE2-NEXT: movdqa %xmm7, %xmm10 9619; SSE2-NEXT: pcmpgtd %xmm9, %xmm10 9620; SSE2-NEXT: pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2] 9621; SSE2-NEXT: pcmpeqd %xmm7, %xmm9 9622; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm9[1,1,3,3] 9623; SSE2-NEXT: pand %xmm11, %xmm7 9624; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3] 9625; SSE2-NEXT: por %xmm7, %xmm9 9626; SSE2-NEXT: pxor %xmm8, %xmm6 9627; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm7 9628; SSE2-NEXT: pxor %xmm8, %xmm7 9629; SSE2-NEXT: movdqa %xmm6, %xmm10 9630; SSE2-NEXT: pcmpgtd %xmm7, %xmm10 9631; SSE2-NEXT: pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2] 9632; SSE2-NEXT: pcmpeqd %xmm6, %xmm7 9633; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm7[1,1,3,3] 9634; SSE2-NEXT: pand %xmm11, %xmm6 9635; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm10[1,1,3,3] 9636; SSE2-NEXT: por %xmm6, %xmm7 9637; SSE2-NEXT: shufps {{.*#+}} xmm7 = xmm7[0,2],xmm9[0,2] 9638; SSE2-NEXT: pslld $31, %xmm7 9639; SSE2-NEXT: psrad $31, %xmm7 9640; SSE2-NEXT: pshuflw {{.*#+}} xmm6 = xmm7[0,2,2,3,4,5,6,7] 9641; SSE2-NEXT: pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,6,6,7] 9642; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm6[0,2,2,3] 9643; SSE2-NEXT: pxor %xmm8, %xmm5 9644; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm7 9645; SSE2-NEXT: pxor %xmm8, %xmm7 9646; SSE2-NEXT: movdqa %xmm5, %xmm6 9647; SSE2-NEXT: pcmpgtd %xmm7, %xmm6 9648; SSE2-NEXT: pshufd {{.*#+}} xmm10 = xmm6[0,0,2,2] 9649; SSE2-NEXT: pcmpeqd %xmm5, %xmm7 9650; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3] 9651; SSE2-NEXT: pand %xmm10, %xmm5 9652; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3] 9653; SSE2-NEXT: por %xmm5, %xmm6 9654; SSE2-NEXT: pxor %xmm8, %xmm4 9655; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm5 9656; SSE2-NEXT: pxor %xmm8, %xmm5 9657; SSE2-NEXT: movdqa %xmm4, %xmm7 9658; SSE2-NEXT: pcmpgtd %xmm5, %xmm7 9659; SSE2-NEXT: pshufd {{.*#+}} xmm10 = xmm7[0,0,2,2] 9660; SSE2-NEXT: pcmpeqd %xmm4, %xmm5 9661; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3] 9662; SSE2-NEXT: pand %xmm10, %xmm4 9663; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3] 9664; SSE2-NEXT: por %xmm4, %xmm5 9665; SSE2-NEXT: shufps {{.*#+}} xmm5 = xmm5[0,2],xmm6[0,2] 9666; SSE2-NEXT: pslld $31, %xmm5 9667; SSE2-NEXT: psrad $31, %xmm5 9668; SSE2-NEXT: pshuflw {{.*#+}} xmm4 = xmm5[0,2,2,3,4,5,6,7] 9669; SSE2-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,6,6,7] 9670; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,2,2,3] 9671; SSE2-NEXT: punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm9[0] 9672; SSE2-NEXT: psllw $15, %xmm5 9673; SSE2-NEXT: psraw $15, %xmm5 9674; SSE2-NEXT: movdqa {{.*#+}} xmm9 = [255,255,255,255,255,255,255,255] 9675; SSE2-NEXT: pand %xmm9, %xmm5 9676; SSE2-NEXT: pxor %xmm8, %xmm3 9677; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm6 9678; SSE2-NEXT: pxor %xmm8, %xmm6 9679; SSE2-NEXT: movdqa %xmm3, %xmm7 9680; SSE2-NEXT: pcmpgtd %xmm6, %xmm7 9681; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2] 9682; SSE2-NEXT: pcmpeqd %xmm3, %xmm6 9683; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm6[1,1,3,3] 9684; SSE2-NEXT: pand %xmm4, %xmm3 9685; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm7[1,1,3,3] 9686; SSE2-NEXT: por %xmm3, %xmm4 9687; SSE2-NEXT: pxor %xmm8, %xmm2 9688; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 9689; SSE2-NEXT: pxor %xmm8, %xmm3 9690; SSE2-NEXT: movdqa %xmm2, %xmm6 9691; SSE2-NEXT: pcmpgtd %xmm3, %xmm6 9692; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2] 9693; SSE2-NEXT: pcmpeqd %xmm2, %xmm3 9694; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm3[1,1,3,3] 9695; SSE2-NEXT: pand %xmm7, %xmm2 9696; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm6[1,1,3,3] 9697; SSE2-NEXT: por %xmm2, %xmm3 9698; SSE2-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,2],xmm4[0,2] 9699; SSE2-NEXT: pslld $31, %xmm3 9700; SSE2-NEXT: psrad $31, %xmm3 9701; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm3[0,2,2,3,4,5,6,7] 9702; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7] 9703; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] 9704; SSE2-NEXT: pxor %xmm8, %xmm1 9705; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 9706; SSE2-NEXT: pxor %xmm8, %xmm3 9707; SSE2-NEXT: movdqa %xmm1, %xmm4 9708; SSE2-NEXT: pcmpgtd %xmm3, %xmm4 9709; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,0,2,2] 9710; SSE2-NEXT: pcmpeqd %xmm1, %xmm3 9711; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm3[1,1,3,3] 9712; SSE2-NEXT: pand %xmm6, %xmm1 9713; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3] 9714; SSE2-NEXT: por %xmm1, %xmm3 9715; SSE2-NEXT: pxor %xmm8, %xmm0 9716; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm1 9717; SSE2-NEXT: pxor %xmm8, %xmm1 9718; SSE2-NEXT: movdqa %xmm0, %xmm4 9719; SSE2-NEXT: pcmpgtd %xmm1, %xmm4 9720; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,0,2,2] 9721; SSE2-NEXT: pcmpeqd %xmm0, %xmm1 9722; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3] 9723; SSE2-NEXT: pand %xmm6, %xmm0 9724; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm4[1,1,3,3] 9725; SSE2-NEXT: por %xmm0, %xmm1 9726; SSE2-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,2],xmm3[0,2] 9727; SSE2-NEXT: pslld $31, %xmm1 9728; SSE2-NEXT: psrad $31, %xmm1 9729; SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm1[0,2,2,3,4,5,6,7] 9730; SSE2-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,6,7] 9731; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3] 9732; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0] 9733; SSE2-NEXT: psllw $15, %xmm0 9734; SSE2-NEXT: psraw $15, %xmm0 9735; SSE2-NEXT: pand %xmm9, %xmm0 9736; SSE2-NEXT: packuswb %xmm5, %xmm0 9737; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm1 9738; SSE2-NEXT: pxor %xmm8, %xmm1 9739; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm2 9740; SSE2-NEXT: pxor %xmm8, %xmm2 9741; SSE2-NEXT: movdqa %xmm2, %xmm3 9742; SSE2-NEXT: pcmpgtd %xmm1, %xmm3 9743; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm3[0,0,2,2] 9744; SSE2-NEXT: pcmpeqd %xmm1, %xmm2 9745; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,1,3,3] 9746; SSE2-NEXT: pand %xmm4, %xmm1 9747; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm3[1,1,3,3] 9748; SSE2-NEXT: por %xmm1, %xmm2 9749; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm1 9750; SSE2-NEXT: pxor %xmm8, %xmm1 9751; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 9752; SSE2-NEXT: pxor %xmm8, %xmm3 9753; SSE2-NEXT: movdqa %xmm3, %xmm4 9754; SSE2-NEXT: pcmpgtd %xmm1, %xmm4 9755; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2] 9756; SSE2-NEXT: pcmpeqd %xmm1, %xmm3 9757; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm3[1,1,3,3] 9758; SSE2-NEXT: pand %xmm5, %xmm1 9759; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3] 9760; SSE2-NEXT: por %xmm1, %xmm3 9761; SSE2-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,2],xmm2[0,2] 9762; SSE2-NEXT: pslld $31, %xmm3 9763; SSE2-NEXT: psrad $31, %xmm3 9764; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm3[0,2,2,3,4,5,6,7] 9765; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 9766; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm1[0,2,2,3] 9767; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm1 9768; SSE2-NEXT: pxor %xmm8, %xmm1 9769; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 9770; SSE2-NEXT: pxor %xmm8, %xmm3 9771; SSE2-NEXT: movdqa %xmm3, %xmm4 9772; SSE2-NEXT: pcmpgtd %xmm1, %xmm4 9773; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2] 9774; SSE2-NEXT: pcmpeqd %xmm1, %xmm3 9775; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm3[1,1,3,3] 9776; SSE2-NEXT: pand %xmm5, %xmm1 9777; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3] 9778; SSE2-NEXT: por %xmm1, %xmm3 9779; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm1 9780; SSE2-NEXT: pxor %xmm8, %xmm1 9781; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm4 9782; SSE2-NEXT: pxor %xmm8, %xmm4 9783; SSE2-NEXT: movdqa %xmm4, %xmm5 9784; SSE2-NEXT: pcmpgtd %xmm1, %xmm5 9785; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2] 9786; SSE2-NEXT: pcmpeqd %xmm1, %xmm4 9787; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm4[1,1,3,3] 9788; SSE2-NEXT: pand %xmm6, %xmm1 9789; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3] 9790; SSE2-NEXT: por %xmm1, %xmm4 9791; SSE2-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,2],xmm3[0,2] 9792; SSE2-NEXT: pslld $31, %xmm4 9793; SSE2-NEXT: psrad $31, %xmm4 9794; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm4[0,2,2,3,4,5,6,7] 9795; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 9796; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 9797; SSE2-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0] 9798; SSE2-NEXT: psllw $15, %xmm1 9799; SSE2-NEXT: psraw $15, %xmm1 9800; SSE2-NEXT: pand %xmm9, %xmm1 9801; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm2 9802; SSE2-NEXT: pxor %xmm8, %xmm2 9803; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 9804; SSE2-NEXT: pxor %xmm8, %xmm3 9805; SSE2-NEXT: movdqa %xmm3, %xmm4 9806; SSE2-NEXT: pcmpgtd %xmm2, %xmm4 9807; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2] 9808; SSE2-NEXT: pcmpeqd %xmm2, %xmm3 9809; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm3[1,1,3,3] 9810; SSE2-NEXT: pand %xmm5, %xmm2 9811; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3] 9812; SSE2-NEXT: por %xmm2, %xmm3 9813; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm2 9814; SSE2-NEXT: pxor %xmm8, %xmm2 9815; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm4 9816; SSE2-NEXT: pxor %xmm8, %xmm4 9817; SSE2-NEXT: movdqa %xmm4, %xmm5 9818; SSE2-NEXT: pcmpgtd %xmm2, %xmm5 9819; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2] 9820; SSE2-NEXT: pcmpeqd %xmm2, %xmm4 9821; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3] 9822; SSE2-NEXT: pand %xmm6, %xmm2 9823; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3] 9824; SSE2-NEXT: por %xmm2, %xmm4 9825; SSE2-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,2],xmm3[0,2] 9826; SSE2-NEXT: pslld $31, %xmm4 9827; SSE2-NEXT: psrad $31, %xmm4 9828; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm4[0,2,2,3,4,5,6,7] 9829; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7] 9830; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] 9831; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 9832; SSE2-NEXT: pxor %xmm8, %xmm3 9833; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm4 9834; SSE2-NEXT: pxor %xmm8, %xmm4 9835; SSE2-NEXT: movdqa %xmm4, %xmm5 9836; SSE2-NEXT: pcmpgtd %xmm3, %xmm5 9837; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2] 9838; SSE2-NEXT: pcmpeqd %xmm3, %xmm4 9839; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3] 9840; SSE2-NEXT: pand %xmm6, %xmm3 9841; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3] 9842; SSE2-NEXT: por %xmm3, %xmm4 9843; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 9844; SSE2-NEXT: pxor %xmm8, %xmm3 9845; SSE2-NEXT: pxor {{[0-9]+}}(%rsp), %xmm8 9846; SSE2-NEXT: movdqa %xmm8, %xmm5 9847; SSE2-NEXT: pcmpgtd %xmm3, %xmm5 9848; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2] 9849; SSE2-NEXT: pcmpeqd %xmm3, %xmm8 9850; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm8[1,1,3,3] 9851; SSE2-NEXT: pand %xmm6, %xmm3 9852; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3] 9853; SSE2-NEXT: por %xmm3, %xmm5 9854; SSE2-NEXT: shufps {{.*#+}} xmm5 = xmm5[0,2],xmm4[0,2] 9855; SSE2-NEXT: pslld $31, %xmm5 9856; SSE2-NEXT: psrad $31, %xmm5 9857; SSE2-NEXT: pshuflw {{.*#+}} xmm3 = xmm5[0,2,2,3,4,5,6,7] 9858; SSE2-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,6,6,7] 9859; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3] 9860; SSE2-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm2[0] 9861; SSE2-NEXT: psllw $15, %xmm3 9862; SSE2-NEXT: psraw $15, %xmm3 9863; SSE2-NEXT: pand %xmm9, %xmm3 9864; SSE2-NEXT: packuswb %xmm1, %xmm3 9865; SSE2-NEXT: movdqa %xmm3, -{{[0-9]+}}(%rsp) 9866; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9867; SSE2-NEXT: andb $1, %al 9868; SSE2-NEXT: movb %al, 2(%rdi) 9869; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 9870; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9871; SSE2-NEXT: andb $1, %al 9872; SSE2-NEXT: movb %al, (%rdi) 9873; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9874; SSE2-NEXT: andb $1, %al 9875; SSE2-NEXT: movb %al, 2(%rdi) 9876; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9877; SSE2-NEXT: andb $1, %al 9878; SSE2-NEXT: movb %al, (%rdi) 9879; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9880; SSE2-NEXT: andb $1, %al 9881; SSE2-NEXT: movb %al, 2(%rdi) 9882; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9883; SSE2-NEXT: andb $1, %al 9884; SSE2-NEXT: movb %al, (%rdi) 9885; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9886; SSE2-NEXT: andb $1, %al 9887; SSE2-NEXT: movb %al, 2(%rdi) 9888; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9889; SSE2-NEXT: andb $1, %al 9890; SSE2-NEXT: movb %al, (%rdi) 9891; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9892; SSE2-NEXT: andb $1, %al 9893; SSE2-NEXT: movb %al, 2(%rdi) 9894; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9895; SSE2-NEXT: andb $1, %al 9896; SSE2-NEXT: movb %al, (%rdi) 9897; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9898; SSE2-NEXT: andb $1, %al 9899; SSE2-NEXT: movb %al, 2(%rdi) 9900; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9901; SSE2-NEXT: andb $1, %al 9902; SSE2-NEXT: movb %al, (%rdi) 9903; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9904; SSE2-NEXT: andb $1, %al 9905; SSE2-NEXT: movb %al, 2(%rdi) 9906; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9907; SSE2-NEXT: andb $1, %al 9908; SSE2-NEXT: movb %al, (%rdi) 9909; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9910; SSE2-NEXT: andb $1, %al 9911; SSE2-NEXT: movb %al, 2(%rdi) 9912; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9913; SSE2-NEXT: andb $1, %al 9914; SSE2-NEXT: movb %al, (%rdi) 9915; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9916; SSE2-NEXT: andb $1, %al 9917; SSE2-NEXT: movb %al, 2(%rdi) 9918; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9919; SSE2-NEXT: andb $1, %al 9920; SSE2-NEXT: movb %al, (%rdi) 9921; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9922; SSE2-NEXT: andb $1, %al 9923; SSE2-NEXT: movb %al, 2(%rdi) 9924; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9925; SSE2-NEXT: andb $1, %al 9926; SSE2-NEXT: movb %al, (%rdi) 9927; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9928; SSE2-NEXT: andb $1, %al 9929; SSE2-NEXT: movb %al, 2(%rdi) 9930; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9931; SSE2-NEXT: andb $1, %al 9932; SSE2-NEXT: movb %al, (%rdi) 9933; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9934; SSE2-NEXT: andb $1, %al 9935; SSE2-NEXT: movb %al, 2(%rdi) 9936; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9937; SSE2-NEXT: andb $1, %al 9938; SSE2-NEXT: movb %al, (%rdi) 9939; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9940; SSE2-NEXT: andb $1, %al 9941; SSE2-NEXT: movb %al, 2(%rdi) 9942; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9943; SSE2-NEXT: andb $1, %al 9944; SSE2-NEXT: movb %al, (%rdi) 9945; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9946; SSE2-NEXT: andb $1, %al 9947; SSE2-NEXT: movb %al, 2(%rdi) 9948; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9949; SSE2-NEXT: andb $1, %al 9950; SSE2-NEXT: movb %al, (%rdi) 9951; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9952; SSE2-NEXT: andb $1, %al 9953; SSE2-NEXT: movb %al, 2(%rdi) 9954; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9955; SSE2-NEXT: andb $1, %al 9956; SSE2-NEXT: movb %al, (%rdi) 9957; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9958; SSE2-NEXT: andb $1, %al 9959; SSE2-NEXT: movb %al, 2(%rdi) 9960; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 9961; SSE2-NEXT: andb $1, %al 9962; SSE2-NEXT: movb %al, (%rdi) 9963; SSE2-NEXT: movq %rdi, %rax 9964; SSE2-NEXT: retq 9965; 9966; SSE42-LABEL: test_cmp_v32i64: 9967; SSE42: # BB#0: 9968; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm9 9969; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm11 9970; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm10 9971; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm12 9972; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm8 9973; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm14 9974; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm13 9975; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm15 9976; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm3 9977; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm2 9978; SSE42-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,2],xmm3[0,2] 9979; SSE42-NEXT: pslld $31, %xmm2 9980; SSE42-NEXT: psrad $31, %xmm2 9981; SSE42-NEXT: movdqa {{.*#+}} xmm3 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15] 9982; SSE42-NEXT: pshufb %xmm3, %xmm2 9983; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm1 9984; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm0 9985; SSE42-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,2],xmm1[0,2] 9986; SSE42-NEXT: pslld $31, %xmm0 9987; SSE42-NEXT: psrad $31, %xmm0 9988; SSE42-NEXT: pshufb %xmm3, %xmm0 9989; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0] 9990; SSE42-NEXT: psllw $15, %xmm0 9991; SSE42-NEXT: psraw $15, %xmm0 9992; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm7 9993; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm6 9994; SSE42-NEXT: shufps {{.*#+}} xmm6 = xmm6[0,2],xmm7[0,2] 9995; SSE42-NEXT: pslld $31, %xmm6 9996; SSE42-NEXT: psrad $31, %xmm6 9997; SSE42-NEXT: pshufb %xmm3, %xmm6 9998; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm5 9999; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm4 10000; SSE42-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,2],xmm5[0,2] 10001; SSE42-NEXT: pslld $31, %xmm4 10002; SSE42-NEXT: psrad $31, %xmm4 10003; SSE42-NEXT: pshufb %xmm3, %xmm4 10004; SSE42-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 10005; SSE42-NEXT: psllw $15, %xmm4 10006; SSE42-NEXT: psraw $15, %xmm4 10007; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm15 10008; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm13 10009; SSE42-NEXT: shufps {{.*#+}} xmm13 = xmm13[0,2],xmm15[0,2] 10010; SSE42-NEXT: pslld $31, %xmm13 10011; SSE42-NEXT: psrad $31, %xmm13 10012; SSE42-NEXT: pshufb %xmm3, %xmm13 10013; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm14 10014; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm8 10015; SSE42-NEXT: shufps {{.*#+}} xmm8 = xmm8[0,2],xmm14[0,2] 10016; SSE42-NEXT: pslld $31, %xmm8 10017; SSE42-NEXT: psrad $31, %xmm8 10018; SSE42-NEXT: pshufb %xmm3, %xmm8 10019; SSE42-NEXT: punpcklqdq {{.*#+}} xmm8 = xmm8[0],xmm13[0] 10020; SSE42-NEXT: psllw $15, %xmm8 10021; SSE42-NEXT: psraw $15, %xmm8 10022; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm12 10023; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm10 10024; SSE42-NEXT: shufps {{.*#+}} xmm10 = xmm10[0,2],xmm12[0,2] 10025; SSE42-NEXT: pslld $31, %xmm10 10026; SSE42-NEXT: psrad $31, %xmm10 10027; SSE42-NEXT: pshufb %xmm3, %xmm10 10028; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm11 10029; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm9 10030; SSE42-NEXT: shufps {{.*#+}} xmm9 = xmm9[0,2],xmm11[0,2] 10031; SSE42-NEXT: pslld $31, %xmm9 10032; SSE42-NEXT: psrad $31, %xmm9 10033; SSE42-NEXT: pshufb %xmm3, %xmm9 10034; SSE42-NEXT: punpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm10[0] 10035; SSE42-NEXT: psllw $15, %xmm9 10036; SSE42-NEXT: psraw $15, %xmm9 10037; SSE42-NEXT: pextrb $14, %xmm9, %eax 10038; SSE42-NEXT: andb $1, %al 10039; SSE42-NEXT: movb %al, 2(%rdi) 10040; SSE42-NEXT: pextrb $12, %xmm9, %eax 10041; SSE42-NEXT: andb $1, %al 10042; SSE42-NEXT: movb %al, 2(%rdi) 10043; SSE42-NEXT: pextrb $10, %xmm9, %eax 10044; SSE42-NEXT: andb $1, %al 10045; SSE42-NEXT: movb %al, 2(%rdi) 10046; SSE42-NEXT: pextrb $8, %xmm9, %eax 10047; SSE42-NEXT: andb $1, %al 10048; SSE42-NEXT: movb %al, 2(%rdi) 10049; SSE42-NEXT: pextrb $6, %xmm9, %eax 10050; SSE42-NEXT: andb $1, %al 10051; SSE42-NEXT: movb %al, 2(%rdi) 10052; SSE42-NEXT: pextrb $4, %xmm9, %eax 10053; SSE42-NEXT: andb $1, %al 10054; SSE42-NEXT: movb %al, 2(%rdi) 10055; SSE42-NEXT: pextrb $2, %xmm9, %eax 10056; SSE42-NEXT: andb $1, %al 10057; SSE42-NEXT: movb %al, 2(%rdi) 10058; SSE42-NEXT: pextrb $0, %xmm9, %eax 10059; SSE42-NEXT: andb $1, %al 10060; SSE42-NEXT: movb %al, 2(%rdi) 10061; SSE42-NEXT: pextrb $14, %xmm8, %eax 10062; SSE42-NEXT: andb $1, %al 10063; SSE42-NEXT: movb %al, 2(%rdi) 10064; SSE42-NEXT: pextrb $12, %xmm8, %eax 10065; SSE42-NEXT: andb $1, %al 10066; SSE42-NEXT: movb %al, 2(%rdi) 10067; SSE42-NEXT: pextrb $10, %xmm8, %eax 10068; SSE42-NEXT: andb $1, %al 10069; SSE42-NEXT: movb %al, 2(%rdi) 10070; SSE42-NEXT: pextrb $8, %xmm8, %eax 10071; SSE42-NEXT: andb $1, %al 10072; SSE42-NEXT: movb %al, 2(%rdi) 10073; SSE42-NEXT: pextrb $6, %xmm8, %eax 10074; SSE42-NEXT: andb $1, %al 10075; SSE42-NEXT: movb %al, 2(%rdi) 10076; SSE42-NEXT: pextrb $4, %xmm8, %eax 10077; SSE42-NEXT: andb $1, %al 10078; SSE42-NEXT: movb %al, 2(%rdi) 10079; SSE42-NEXT: pextrb $2, %xmm8, %eax 10080; SSE42-NEXT: andb $1, %al 10081; SSE42-NEXT: movb %al, 2(%rdi) 10082; SSE42-NEXT: pextrb $0, %xmm8, %eax 10083; SSE42-NEXT: andb $1, %al 10084; SSE42-NEXT: movb %al, 2(%rdi) 10085; SSE42-NEXT: pextrb $14, %xmm4, %eax 10086; SSE42-NEXT: andb $1, %al 10087; SSE42-NEXT: movb %al, (%rdi) 10088; SSE42-NEXT: pextrb $12, %xmm4, %eax 10089; SSE42-NEXT: andb $1, %al 10090; SSE42-NEXT: movb %al, (%rdi) 10091; SSE42-NEXT: pextrb $10, %xmm4, %eax 10092; SSE42-NEXT: andb $1, %al 10093; SSE42-NEXT: movb %al, (%rdi) 10094; SSE42-NEXT: pextrb $8, %xmm4, %eax 10095; SSE42-NEXT: andb $1, %al 10096; SSE42-NEXT: movb %al, (%rdi) 10097; SSE42-NEXT: pextrb $6, %xmm4, %eax 10098; SSE42-NEXT: andb $1, %al 10099; SSE42-NEXT: movb %al, (%rdi) 10100; SSE42-NEXT: pextrb $4, %xmm4, %eax 10101; SSE42-NEXT: andb $1, %al 10102; SSE42-NEXT: movb %al, (%rdi) 10103; SSE42-NEXT: pextrb $2, %xmm4, %eax 10104; SSE42-NEXT: andb $1, %al 10105; SSE42-NEXT: movb %al, (%rdi) 10106; SSE42-NEXT: pextrb $0, %xmm4, %eax 10107; SSE42-NEXT: andb $1, %al 10108; SSE42-NEXT: movb %al, (%rdi) 10109; SSE42-NEXT: pextrb $14, %xmm0, %eax 10110; SSE42-NEXT: andb $1, %al 10111; SSE42-NEXT: movb %al, (%rdi) 10112; SSE42-NEXT: pextrb $12, %xmm0, %eax 10113; SSE42-NEXT: andb $1, %al 10114; SSE42-NEXT: movb %al, (%rdi) 10115; SSE42-NEXT: pextrb $10, %xmm0, %eax 10116; SSE42-NEXT: andb $1, %al 10117; SSE42-NEXT: movb %al, (%rdi) 10118; SSE42-NEXT: pextrb $8, %xmm0, %eax 10119; SSE42-NEXT: andb $1, %al 10120; SSE42-NEXT: movb %al, (%rdi) 10121; SSE42-NEXT: pextrb $6, %xmm0, %eax 10122; SSE42-NEXT: andb $1, %al 10123; SSE42-NEXT: movb %al, (%rdi) 10124; SSE42-NEXT: pextrb $4, %xmm0, %eax 10125; SSE42-NEXT: andb $1, %al 10126; SSE42-NEXT: movb %al, (%rdi) 10127; SSE42-NEXT: pextrb $2, %xmm0, %eax 10128; SSE42-NEXT: andb $1, %al 10129; SSE42-NEXT: movb %al, (%rdi) 10130; SSE42-NEXT: pextrb $0, %xmm0, %eax 10131; SSE42-NEXT: andb $1, %al 10132; SSE42-NEXT: movb %al, (%rdi) 10133; SSE42-NEXT: movq %rdi, %rax 10134; SSE42-NEXT: retq 10135; 10136; AVX1-LABEL: test_cmp_v32i64: 10137; AVX1: # BB#0: 10138; AVX1-NEXT: pushq %rbp 10139; AVX1-NEXT: movq %rsp, %rbp 10140; AVX1-NEXT: andq $-32, %rsp 10141; AVX1-NEXT: subq $32, %rsp 10142; AVX1-NEXT: vmovdqa 240(%rbp), %ymm8 10143; AVX1-NEXT: vextractf128 $1, %ymm8, %xmm9 10144; AVX1-NEXT: vextractf128 $1, %ymm7, %xmm10 10145; AVX1-NEXT: vpcmpgtq %xmm9, %xmm10, %xmm9 10146; AVX1-NEXT: vmovdqa 208(%rbp), %ymm10 10147; AVX1-NEXT: vpcmpgtq %xmm8, %xmm7, %xmm7 10148; AVX1-NEXT: vpacksswb %xmm9, %xmm7, %xmm8 10149; AVX1-NEXT: vextractf128 $1, %ymm10, %xmm9 10150; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm7 10151; AVX1-NEXT: vpcmpgtq %xmm9, %xmm7, %xmm7 10152; AVX1-NEXT: vpcmpgtq %xmm10, %xmm6, %xmm6 10153; AVX1-NEXT: vmovdqa 176(%rbp), %ymm9 10154; AVX1-NEXT: vpacksswb %xmm7, %xmm6, %xmm6 10155; AVX1-NEXT: vpacksswb %xmm8, %xmm6, %xmm8 10156; AVX1-NEXT: vextractf128 $1, %ymm9, %xmm7 10157; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm6 10158; AVX1-NEXT: vpcmpgtq %xmm7, %xmm6, %xmm6 10159; AVX1-NEXT: vmovdqa 144(%rbp), %ymm10 10160; AVX1-NEXT: vpcmpgtq %xmm9, %xmm5, %xmm5 10161; AVX1-NEXT: vpacksswb %xmm6, %xmm5, %xmm5 10162; AVX1-NEXT: vextractf128 $1, %ymm10, %xmm6 10163; AVX1-NEXT: vextractf128 $1, %ymm4, %xmm7 10164; AVX1-NEXT: vpcmpgtq %xmm6, %xmm7, %xmm6 10165; AVX1-NEXT: vpcmpgtq %xmm10, %xmm4, %xmm4 10166; AVX1-NEXT: vpacksswb %xmm6, %xmm4, %xmm4 10167; AVX1-NEXT: vmovdqa 112(%rbp), %ymm6 10168; AVX1-NEXT: vpacksswb %xmm5, %xmm4, %xmm4 10169; AVX1-NEXT: vpacksswb %xmm8, %xmm4, %xmm4 10170; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm5 10171; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm7 10172; AVX1-NEXT: vpcmpgtq %xmm5, %xmm7, %xmm5 10173; AVX1-NEXT: vmovdqa 80(%rbp), %ymm7 10174; AVX1-NEXT: vpcmpgtq %xmm6, %xmm3, %xmm3 10175; AVX1-NEXT: vpacksswb %xmm5, %xmm3, %xmm3 10176; AVX1-NEXT: vextractf128 $1, %ymm7, %xmm5 10177; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm6 10178; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm5 10179; AVX1-NEXT: vpcmpgtq %xmm7, %xmm2, %xmm2 10180; AVX1-NEXT: vmovdqa 48(%rbp), %ymm6 10181; AVX1-NEXT: vpacksswb %xmm5, %xmm2, %xmm2 10182; AVX1-NEXT: vpacksswb %xmm3, %xmm2, %xmm2 10183; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm3 10184; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5 10185; AVX1-NEXT: vpcmpgtq %xmm3, %xmm5, %xmm3 10186; AVX1-NEXT: vmovdqa 16(%rbp), %ymm5 10187; AVX1-NEXT: vpcmpgtq %xmm6, %xmm1, %xmm1 10188; AVX1-NEXT: vpacksswb %xmm3, %xmm1, %xmm1 10189; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm3 10190; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm6 10191; AVX1-NEXT: vpcmpgtq %xmm3, %xmm6, %xmm3 10192; AVX1-NEXT: vpcmpgtq %xmm5, %xmm0, %xmm0 10193; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 10194; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 10195; AVX1-NEXT: vpacksswb %xmm2, %xmm0, %xmm0 10196; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm0 10197; AVX1-NEXT: movq %rbp, %rsp 10198; AVX1-NEXT: popq %rbp 10199; AVX1-NEXT: retq 10200; 10201; AVX2-LABEL: test_cmp_v32i64: 10202; AVX2: # BB#0: 10203; AVX2-NEXT: pushq %rbp 10204; AVX2-NEXT: movq %rsp, %rbp 10205; AVX2-NEXT: andq $-32, %rsp 10206; AVX2-NEXT: subq $32, %rsp 10207; AVX2-NEXT: vpcmpgtq 240(%rbp), %ymm7, %ymm7 10208; AVX2-NEXT: vpcmpgtq 208(%rbp), %ymm6, %ymm6 10209; AVX2-NEXT: vpacksswb %ymm7, %ymm6, %ymm6 10210; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,2,1,3] 10211; AVX2-NEXT: vpcmpgtq 176(%rbp), %ymm5, %ymm5 10212; AVX2-NEXT: vpcmpgtq 144(%rbp), %ymm4, %ymm4 10213; AVX2-NEXT: vpacksswb %ymm5, %ymm4, %ymm4 10214; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,2,1,3] 10215; AVX2-NEXT: vpacksswb %ymm6, %ymm4, %ymm4 10216; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,2,1,3] 10217; AVX2-NEXT: vpcmpgtq 112(%rbp), %ymm3, %ymm3 10218; AVX2-NEXT: vpcmpgtq 80(%rbp), %ymm2, %ymm2 10219; AVX2-NEXT: vpacksswb %ymm3, %ymm2, %ymm2 10220; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,1,3] 10221; AVX2-NEXT: vpcmpgtq 48(%rbp), %ymm1, %ymm1 10222; AVX2-NEXT: vpcmpgtq 16(%rbp), %ymm0, %ymm0 10223; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 10224; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 10225; AVX2-NEXT: vpacksswb %ymm2, %ymm0, %ymm0 10226; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 10227; AVX2-NEXT: vpacksswb %ymm4, %ymm0, %ymm0 10228; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 10229; AVX2-NEXT: movq %rbp, %rsp 10230; AVX2-NEXT: popq %rbp 10231; AVX2-NEXT: retq 10232; 10233; AVX512F-LABEL: test_cmp_v32i64: 10234; AVX512F: # BB#0: 10235; AVX512F-NEXT: vextracti32x4 $3, %zmm4, %xmm8 10236; AVX512F-NEXT: vpextrq $1, %xmm8, %rcx 10237; AVX512F-NEXT: vextracti32x4 $3, %zmm0, %xmm9 10238; AVX512F-NEXT: vpextrq $1, %xmm9, %rdx 10239; AVX512F-NEXT: xorl %eax, %eax 10240; AVX512F-NEXT: cmpq %rcx, %rdx 10241; AVX512F-NEXT: movq $-1, %rcx 10242; AVX512F-NEXT: movl $0, %edx 10243; AVX512F-NEXT: cmovgq %rcx, %rdx 10244; AVX512F-NEXT: vmovq %rdx, %xmm10 10245; AVX512F-NEXT: vmovq %xmm8, %rdx 10246; AVX512F-NEXT: vmovq %xmm9, %rsi 10247; AVX512F-NEXT: cmpq %rdx, %rsi 10248; AVX512F-NEXT: movl $0, %edx 10249; AVX512F-NEXT: cmovgq %rcx, %rdx 10250; AVX512F-NEXT: vmovq %rdx, %xmm8 10251; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm8 = xmm8[0],xmm10[0] 10252; AVX512F-NEXT: vextracti32x4 $2, %zmm4, %xmm9 10253; AVX512F-NEXT: vpextrq $1, %xmm9, %rdx 10254; AVX512F-NEXT: vextracti32x4 $2, %zmm0, %xmm10 10255; AVX512F-NEXT: vpextrq $1, %xmm10, %rsi 10256; AVX512F-NEXT: cmpq %rdx, %rsi 10257; AVX512F-NEXT: movl $0, %edx 10258; AVX512F-NEXT: cmovgq %rcx, %rdx 10259; AVX512F-NEXT: vmovq %rdx, %xmm11 10260; AVX512F-NEXT: vmovq %xmm9, %rdx 10261; AVX512F-NEXT: vmovq %xmm10, %rsi 10262; AVX512F-NEXT: cmpq %rdx, %rsi 10263; AVX512F-NEXT: movl $0, %edx 10264; AVX512F-NEXT: cmovgq %rcx, %rdx 10265; AVX512F-NEXT: vmovq %rdx, %xmm9 10266; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm11[0] 10267; AVX512F-NEXT: vinserti128 $1, %xmm8, %ymm9, %ymm8 10268; AVX512F-NEXT: vextracti32x4 $1, %zmm4, %xmm9 10269; AVX512F-NEXT: vpextrq $1, %xmm9, %rdx 10270; AVX512F-NEXT: vextracti32x4 $1, %zmm0, %xmm10 10271; AVX512F-NEXT: vpextrq $1, %xmm10, %rsi 10272; AVX512F-NEXT: cmpq %rdx, %rsi 10273; AVX512F-NEXT: movl $0, %edx 10274; AVX512F-NEXT: cmovgq %rcx, %rdx 10275; AVX512F-NEXT: vmovq %rdx, %xmm11 10276; AVX512F-NEXT: vmovq %xmm9, %rdx 10277; AVX512F-NEXT: vmovq %xmm10, %rsi 10278; AVX512F-NEXT: cmpq %rdx, %rsi 10279; AVX512F-NEXT: movl $0, %edx 10280; AVX512F-NEXT: cmovgq %rcx, %rdx 10281; AVX512F-NEXT: vmovq %rdx, %xmm9 10282; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm11[0] 10283; AVX512F-NEXT: vpextrq $1, %xmm4, %rdx 10284; AVX512F-NEXT: vpextrq $1, %xmm0, %rsi 10285; AVX512F-NEXT: cmpq %rdx, %rsi 10286; AVX512F-NEXT: movl $0, %edx 10287; AVX512F-NEXT: cmovgq %rcx, %rdx 10288; AVX512F-NEXT: vmovq %rdx, %xmm10 10289; AVX512F-NEXT: vmovq %xmm4, %rdx 10290; AVX512F-NEXT: vmovq %xmm0, %rsi 10291; AVX512F-NEXT: cmpq %rdx, %rsi 10292; AVX512F-NEXT: movl $0, %edx 10293; AVX512F-NEXT: cmovgq %rcx, %rdx 10294; AVX512F-NEXT: vmovq %rdx, %xmm0 10295; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm10[0] 10296; AVX512F-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm0 10297; AVX512F-NEXT: vinserti64x4 $1, %ymm8, %zmm0, %zmm0 10298; AVX512F-NEXT: vpmovqd %zmm0, %ymm8 10299; AVX512F-NEXT: vextracti32x4 $3, %zmm5, %xmm4 10300; AVX512F-NEXT: vpextrq $1, %xmm4, %rdx 10301; AVX512F-NEXT: vextracti32x4 $3, %zmm1, %xmm0 10302; AVX512F-NEXT: vpextrq $1, %xmm0, %rsi 10303; AVX512F-NEXT: cmpq %rdx, %rsi 10304; AVX512F-NEXT: movl $0, %edx 10305; AVX512F-NEXT: cmovgq %rcx, %rdx 10306; AVX512F-NEXT: vmovq %rdx, %xmm9 10307; AVX512F-NEXT: vmovq %xmm4, %rdx 10308; AVX512F-NEXT: vmovq %xmm0, %rsi 10309; AVX512F-NEXT: cmpq %rdx, %rsi 10310; AVX512F-NEXT: movl $0, %edx 10311; AVX512F-NEXT: cmovgq %rcx, %rdx 10312; AVX512F-NEXT: vmovq %rdx, %xmm0 10313; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm0[0],xmm9[0] 10314; AVX512F-NEXT: vextracti32x4 $2, %zmm5, %xmm4 10315; AVX512F-NEXT: vpextrq $1, %xmm4, %rdx 10316; AVX512F-NEXT: vextracti32x4 $2, %zmm1, %xmm0 10317; AVX512F-NEXT: vpextrq $1, %xmm0, %rsi 10318; AVX512F-NEXT: cmpq %rdx, %rsi 10319; AVX512F-NEXT: movl $0, %edx 10320; AVX512F-NEXT: cmovgq %rcx, %rdx 10321; AVX512F-NEXT: vmovq %rdx, %xmm10 10322; AVX512F-NEXT: vmovq %xmm4, %rdx 10323; AVX512F-NEXT: vmovq %xmm0, %rsi 10324; AVX512F-NEXT: cmpq %rdx, %rsi 10325; AVX512F-NEXT: movl $0, %edx 10326; AVX512F-NEXT: cmovgq %rcx, %rdx 10327; AVX512F-NEXT: vmovq %rdx, %xmm0 10328; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm10[0] 10329; AVX512F-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm9 10330; AVX512F-NEXT: vextracti32x4 $1, %zmm5, %xmm0 10331; AVX512F-NEXT: vpextrq $1, %xmm0, %rdx 10332; AVX512F-NEXT: vextracti32x4 $1, %zmm1, %xmm4 10333; AVX512F-NEXT: vpextrq $1, %xmm4, %rsi 10334; AVX512F-NEXT: cmpq %rdx, %rsi 10335; AVX512F-NEXT: movl $0, %edx 10336; AVX512F-NEXT: cmovgq %rcx, %rdx 10337; AVX512F-NEXT: vmovq %rdx, %xmm10 10338; AVX512F-NEXT: vmovq %xmm0, %rdx 10339; AVX512F-NEXT: vmovq %xmm4, %rsi 10340; AVX512F-NEXT: cmpq %rdx, %rsi 10341; AVX512F-NEXT: movl $0, %edx 10342; AVX512F-NEXT: cmovgq %rcx, %rdx 10343; AVX512F-NEXT: vmovq %rdx, %xmm0 10344; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm10[0] 10345; AVX512F-NEXT: vpextrq $1, %xmm5, %rdx 10346; AVX512F-NEXT: vpextrq $1, %xmm1, %rsi 10347; AVX512F-NEXT: cmpq %rdx, %rsi 10348; AVX512F-NEXT: movl $0, %edx 10349; AVX512F-NEXT: cmovgq %rcx, %rdx 10350; AVX512F-NEXT: vmovq %rdx, %xmm4 10351; AVX512F-NEXT: vmovq %xmm5, %rdx 10352; AVX512F-NEXT: vmovq %xmm1, %rsi 10353; AVX512F-NEXT: cmpq %rdx, %rsi 10354; AVX512F-NEXT: movl $0, %edx 10355; AVX512F-NEXT: cmovgq %rcx, %rdx 10356; AVX512F-NEXT: vmovq %rdx, %xmm1 10357; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm4[0] 10358; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 10359; AVX512F-NEXT: vinserti64x4 $1, %ymm9, %zmm0, %zmm0 10360; AVX512F-NEXT: vpmovqd %zmm0, %ymm0 10361; AVX512F-NEXT: vinserti64x4 $1, %ymm0, %zmm8, %zmm0 10362; AVX512F-NEXT: vpmovdb %zmm0, %xmm8 10363; AVX512F-NEXT: vextracti32x4 $3, %zmm6, %xmm1 10364; AVX512F-NEXT: vpextrq $1, %xmm1, %rdx 10365; AVX512F-NEXT: vextracti32x4 $3, %zmm2, %xmm4 10366; AVX512F-NEXT: vpextrq $1, %xmm4, %rsi 10367; AVX512F-NEXT: cmpq %rdx, %rsi 10368; AVX512F-NEXT: movl $0, %edx 10369; AVX512F-NEXT: cmovgq %rcx, %rdx 10370; AVX512F-NEXT: vmovq %rdx, %xmm5 10371; AVX512F-NEXT: vmovq %xmm1, %rdx 10372; AVX512F-NEXT: vmovq %xmm4, %rsi 10373; AVX512F-NEXT: cmpq %rdx, %rsi 10374; AVX512F-NEXT: movl $0, %edx 10375; AVX512F-NEXT: cmovgq %rcx, %rdx 10376; AVX512F-NEXT: vmovq %rdx, %xmm1 10377; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm5[0] 10378; AVX512F-NEXT: vextracti32x4 $2, %zmm6, %xmm4 10379; AVX512F-NEXT: vpextrq $1, %xmm4, %rdx 10380; AVX512F-NEXT: vextracti32x4 $2, %zmm2, %xmm5 10381; AVX512F-NEXT: vpextrq $1, %xmm5, %rsi 10382; AVX512F-NEXT: cmpq %rdx, %rsi 10383; AVX512F-NEXT: movl $0, %edx 10384; AVX512F-NEXT: cmovgq %rcx, %rdx 10385; AVX512F-NEXT: vmovq %rdx, %xmm0 10386; AVX512F-NEXT: vmovq %xmm4, %rdx 10387; AVX512F-NEXT: vmovq %xmm5, %rsi 10388; AVX512F-NEXT: cmpq %rdx, %rsi 10389; AVX512F-NEXT: movl $0, %edx 10390; AVX512F-NEXT: cmovgq %rcx, %rdx 10391; AVX512F-NEXT: vmovq %rdx, %xmm4 10392; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm4[0],xmm0[0] 10393; AVX512F-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm1 10394; AVX512F-NEXT: vextracti32x4 $1, %zmm6, %xmm0 10395; AVX512F-NEXT: vpextrq $1, %xmm0, %rdx 10396; AVX512F-NEXT: vextracti32x4 $1, %zmm2, %xmm4 10397; AVX512F-NEXT: vpextrq $1, %xmm4, %rsi 10398; AVX512F-NEXT: cmpq %rdx, %rsi 10399; AVX512F-NEXT: movl $0, %edx 10400; AVX512F-NEXT: cmovgq %rcx, %rdx 10401; AVX512F-NEXT: vmovq %rdx, %xmm5 10402; AVX512F-NEXT: vmovq %xmm0, %rdx 10403; AVX512F-NEXT: vmovq %xmm4, %rsi 10404; AVX512F-NEXT: cmpq %rdx, %rsi 10405; AVX512F-NEXT: movl $0, %edx 10406; AVX512F-NEXT: cmovgq %rcx, %rdx 10407; AVX512F-NEXT: vmovq %rdx, %xmm0 10408; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm5[0] 10409; AVX512F-NEXT: vpextrq $1, %xmm6, %rdx 10410; AVX512F-NEXT: vpextrq $1, %xmm2, %rsi 10411; AVX512F-NEXT: cmpq %rdx, %rsi 10412; AVX512F-NEXT: movl $0, %edx 10413; AVX512F-NEXT: cmovgq %rcx, %rdx 10414; AVX512F-NEXT: vmovq %rdx, %xmm4 10415; AVX512F-NEXT: vmovq %xmm6, %rdx 10416; AVX512F-NEXT: vmovq %xmm2, %rsi 10417; AVX512F-NEXT: cmpq %rdx, %rsi 10418; AVX512F-NEXT: movl $0, %edx 10419; AVX512F-NEXT: cmovgq %rcx, %rdx 10420; AVX512F-NEXT: vmovq %rdx, %xmm2 10421; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm4[0] 10422; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm2, %ymm0 10423; AVX512F-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 10424; AVX512F-NEXT: vpmovqd %zmm0, %ymm1 10425; AVX512F-NEXT: vextracti32x4 $3, %zmm7, %xmm0 10426; AVX512F-NEXT: vpextrq $1, %xmm0, %rdx 10427; AVX512F-NEXT: vextracti32x4 $3, %zmm3, %xmm2 10428; AVX512F-NEXT: vpextrq $1, %xmm2, %rsi 10429; AVX512F-NEXT: cmpq %rdx, %rsi 10430; AVX512F-NEXT: movl $0, %edx 10431; AVX512F-NEXT: cmovgq %rcx, %rdx 10432; AVX512F-NEXT: vmovq %rdx, %xmm4 10433; AVX512F-NEXT: vmovq %xmm0, %rdx 10434; AVX512F-NEXT: vmovq %xmm2, %rsi 10435; AVX512F-NEXT: cmpq %rdx, %rsi 10436; AVX512F-NEXT: movl $0, %edx 10437; AVX512F-NEXT: cmovgq %rcx, %rdx 10438; AVX512F-NEXT: vmovq %rdx, %xmm0 10439; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm4[0] 10440; AVX512F-NEXT: vextracti32x4 $2, %zmm7, %xmm2 10441; AVX512F-NEXT: vpextrq $1, %xmm2, %rdx 10442; AVX512F-NEXT: vextracti32x4 $2, %zmm3, %xmm4 10443; AVX512F-NEXT: vpextrq $1, %xmm4, %rsi 10444; AVX512F-NEXT: cmpq %rdx, %rsi 10445; AVX512F-NEXT: movl $0, %edx 10446; AVX512F-NEXT: cmovgq %rcx, %rdx 10447; AVX512F-NEXT: vmovq %rdx, %xmm5 10448; AVX512F-NEXT: vmovq %xmm2, %rdx 10449; AVX512F-NEXT: vmovq %xmm4, %rsi 10450; AVX512F-NEXT: cmpq %rdx, %rsi 10451; AVX512F-NEXT: movl $0, %edx 10452; AVX512F-NEXT: cmovgq %rcx, %rdx 10453; AVX512F-NEXT: vmovq %rdx, %xmm2 10454; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm5[0] 10455; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm2, %ymm2 10456; AVX512F-NEXT: vextracti32x4 $1, %zmm7, %xmm0 10457; AVX512F-NEXT: vpextrq $1, %xmm0, %rdx 10458; AVX512F-NEXT: vextracti32x4 $1, %zmm3, %xmm4 10459; AVX512F-NEXT: vpextrq $1, %xmm4, %rsi 10460; AVX512F-NEXT: cmpq %rdx, %rsi 10461; AVX512F-NEXT: movl $0, %edx 10462; AVX512F-NEXT: cmovgq %rcx, %rdx 10463; AVX512F-NEXT: vmovq %rdx, %xmm5 10464; AVX512F-NEXT: vmovq %xmm0, %rdx 10465; AVX512F-NEXT: vmovq %xmm4, %rsi 10466; AVX512F-NEXT: cmpq %rdx, %rsi 10467; AVX512F-NEXT: movl $0, %edx 10468; AVX512F-NEXT: cmovgq %rcx, %rdx 10469; AVX512F-NEXT: vmovq %rdx, %xmm0 10470; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm5[0] 10471; AVX512F-NEXT: vpextrq $1, %xmm7, %rdx 10472; AVX512F-NEXT: vpextrq $1, %xmm3, %rsi 10473; AVX512F-NEXT: cmpq %rdx, %rsi 10474; AVX512F-NEXT: movl $0, %edx 10475; AVX512F-NEXT: cmovgq %rcx, %rdx 10476; AVX512F-NEXT: vmovq %rdx, %xmm4 10477; AVX512F-NEXT: vmovq %xmm7, %rdx 10478; AVX512F-NEXT: vmovq %xmm3, %rsi 10479; AVX512F-NEXT: cmpq %rdx, %rsi 10480; AVX512F-NEXT: cmovgq %rcx, %rax 10481; AVX512F-NEXT: vmovq %rax, %xmm3 10482; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm4[0] 10483; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm3, %ymm0 10484; AVX512F-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm0 10485; AVX512F-NEXT: vpmovqd %zmm0, %ymm0 10486; AVX512F-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm0 10487; AVX512F-NEXT: vpmovdb %zmm0, %xmm0 10488; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm8, %ymm0 10489; AVX512F-NEXT: retq 10490; 10491; AVX512DQ-LABEL: test_cmp_v32i64: 10492; AVX512DQ: # BB#0: 10493; AVX512DQ-NEXT: vextracti64x2 $3, %zmm4, %xmm8 10494; AVX512DQ-NEXT: vpextrq $1, %xmm8, %rcx 10495; AVX512DQ-NEXT: vextracti64x2 $3, %zmm0, %xmm9 10496; AVX512DQ-NEXT: vpextrq $1, %xmm9, %rdx 10497; AVX512DQ-NEXT: xorl %eax, %eax 10498; AVX512DQ-NEXT: cmpq %rcx, %rdx 10499; AVX512DQ-NEXT: movq $-1, %rcx 10500; AVX512DQ-NEXT: movl $0, %edx 10501; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10502; AVX512DQ-NEXT: vmovq %rdx, %xmm10 10503; AVX512DQ-NEXT: vmovq %xmm8, %rdx 10504; AVX512DQ-NEXT: vmovq %xmm9, %rsi 10505; AVX512DQ-NEXT: cmpq %rdx, %rsi 10506; AVX512DQ-NEXT: movl $0, %edx 10507; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10508; AVX512DQ-NEXT: vmovq %rdx, %xmm8 10509; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm8 = xmm8[0],xmm10[0] 10510; AVX512DQ-NEXT: vextracti64x2 $2, %zmm4, %xmm9 10511; AVX512DQ-NEXT: vpextrq $1, %xmm9, %rdx 10512; AVX512DQ-NEXT: vextracti64x2 $2, %zmm0, %xmm10 10513; AVX512DQ-NEXT: vpextrq $1, %xmm10, %rsi 10514; AVX512DQ-NEXT: cmpq %rdx, %rsi 10515; AVX512DQ-NEXT: movl $0, %edx 10516; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10517; AVX512DQ-NEXT: vmovq %rdx, %xmm11 10518; AVX512DQ-NEXT: vmovq %xmm9, %rdx 10519; AVX512DQ-NEXT: vmovq %xmm10, %rsi 10520; AVX512DQ-NEXT: cmpq %rdx, %rsi 10521; AVX512DQ-NEXT: movl $0, %edx 10522; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10523; AVX512DQ-NEXT: vmovq %rdx, %xmm9 10524; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm11[0] 10525; AVX512DQ-NEXT: vinserti128 $1, %xmm8, %ymm9, %ymm8 10526; AVX512DQ-NEXT: vextracti64x2 $1, %zmm4, %xmm9 10527; AVX512DQ-NEXT: vpextrq $1, %xmm9, %rdx 10528; AVX512DQ-NEXT: vextracti64x2 $1, %zmm0, %xmm10 10529; AVX512DQ-NEXT: vpextrq $1, %xmm10, %rsi 10530; AVX512DQ-NEXT: cmpq %rdx, %rsi 10531; AVX512DQ-NEXT: movl $0, %edx 10532; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10533; AVX512DQ-NEXT: vmovq %rdx, %xmm11 10534; AVX512DQ-NEXT: vmovq %xmm9, %rdx 10535; AVX512DQ-NEXT: vmovq %xmm10, %rsi 10536; AVX512DQ-NEXT: cmpq %rdx, %rsi 10537; AVX512DQ-NEXT: movl $0, %edx 10538; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10539; AVX512DQ-NEXT: vmovq %rdx, %xmm9 10540; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm11[0] 10541; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rdx 10542; AVX512DQ-NEXT: vpextrq $1, %xmm0, %rsi 10543; AVX512DQ-NEXT: cmpq %rdx, %rsi 10544; AVX512DQ-NEXT: movl $0, %edx 10545; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10546; AVX512DQ-NEXT: vmovq %rdx, %xmm10 10547; AVX512DQ-NEXT: vmovq %xmm4, %rdx 10548; AVX512DQ-NEXT: vmovq %xmm0, %rsi 10549; AVX512DQ-NEXT: cmpq %rdx, %rsi 10550; AVX512DQ-NEXT: movl $0, %edx 10551; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10552; AVX512DQ-NEXT: vmovq %rdx, %xmm0 10553; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm10[0] 10554; AVX512DQ-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm0 10555; AVX512DQ-NEXT: vinserti64x4 $1, %ymm8, %zmm0, %zmm0 10556; AVX512DQ-NEXT: vpmovqd %zmm0, %ymm8 10557; AVX512DQ-NEXT: vextracti64x2 $3, %zmm5, %xmm4 10558; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rdx 10559; AVX512DQ-NEXT: vextracti64x2 $3, %zmm1, %xmm0 10560; AVX512DQ-NEXT: vpextrq $1, %xmm0, %rsi 10561; AVX512DQ-NEXT: cmpq %rdx, %rsi 10562; AVX512DQ-NEXT: movl $0, %edx 10563; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10564; AVX512DQ-NEXT: vmovq %rdx, %xmm9 10565; AVX512DQ-NEXT: vmovq %xmm4, %rdx 10566; AVX512DQ-NEXT: vmovq %xmm0, %rsi 10567; AVX512DQ-NEXT: cmpq %rdx, %rsi 10568; AVX512DQ-NEXT: movl $0, %edx 10569; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10570; AVX512DQ-NEXT: vmovq %rdx, %xmm0 10571; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm0[0],xmm9[0] 10572; AVX512DQ-NEXT: vextracti64x2 $2, %zmm5, %xmm4 10573; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rdx 10574; AVX512DQ-NEXT: vextracti64x2 $2, %zmm1, %xmm0 10575; AVX512DQ-NEXT: vpextrq $1, %xmm0, %rsi 10576; AVX512DQ-NEXT: cmpq %rdx, %rsi 10577; AVX512DQ-NEXT: movl $0, %edx 10578; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10579; AVX512DQ-NEXT: vmovq %rdx, %xmm10 10580; AVX512DQ-NEXT: vmovq %xmm4, %rdx 10581; AVX512DQ-NEXT: vmovq %xmm0, %rsi 10582; AVX512DQ-NEXT: cmpq %rdx, %rsi 10583; AVX512DQ-NEXT: movl $0, %edx 10584; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10585; AVX512DQ-NEXT: vmovq %rdx, %xmm0 10586; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm10[0] 10587; AVX512DQ-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm9 10588; AVX512DQ-NEXT: vextracti64x2 $1, %zmm5, %xmm0 10589; AVX512DQ-NEXT: vpextrq $1, %xmm0, %rdx 10590; AVX512DQ-NEXT: vextracti64x2 $1, %zmm1, %xmm4 10591; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rsi 10592; AVX512DQ-NEXT: cmpq %rdx, %rsi 10593; AVX512DQ-NEXT: movl $0, %edx 10594; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10595; AVX512DQ-NEXT: vmovq %rdx, %xmm10 10596; AVX512DQ-NEXT: vmovq %xmm0, %rdx 10597; AVX512DQ-NEXT: vmovq %xmm4, %rsi 10598; AVX512DQ-NEXT: cmpq %rdx, %rsi 10599; AVX512DQ-NEXT: movl $0, %edx 10600; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10601; AVX512DQ-NEXT: vmovq %rdx, %xmm0 10602; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm10[0] 10603; AVX512DQ-NEXT: vpextrq $1, %xmm5, %rdx 10604; AVX512DQ-NEXT: vpextrq $1, %xmm1, %rsi 10605; AVX512DQ-NEXT: cmpq %rdx, %rsi 10606; AVX512DQ-NEXT: movl $0, %edx 10607; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10608; AVX512DQ-NEXT: vmovq %rdx, %xmm4 10609; AVX512DQ-NEXT: vmovq %xmm5, %rdx 10610; AVX512DQ-NEXT: vmovq %xmm1, %rsi 10611; AVX512DQ-NEXT: cmpq %rdx, %rsi 10612; AVX512DQ-NEXT: movl $0, %edx 10613; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10614; AVX512DQ-NEXT: vmovq %rdx, %xmm1 10615; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm4[0] 10616; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 10617; AVX512DQ-NEXT: vinserti64x4 $1, %ymm9, %zmm0, %zmm0 10618; AVX512DQ-NEXT: vpmovqd %zmm0, %ymm0 10619; AVX512DQ-NEXT: vinserti32x8 $1, %ymm0, %zmm8, %zmm0 10620; AVX512DQ-NEXT: vpmovdb %zmm0, %xmm8 10621; AVX512DQ-NEXT: vextracti64x2 $3, %zmm6, %xmm1 10622; AVX512DQ-NEXT: vpextrq $1, %xmm1, %rdx 10623; AVX512DQ-NEXT: vextracti64x2 $3, %zmm2, %xmm4 10624; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rsi 10625; AVX512DQ-NEXT: cmpq %rdx, %rsi 10626; AVX512DQ-NEXT: movl $0, %edx 10627; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10628; AVX512DQ-NEXT: vmovq %rdx, %xmm5 10629; AVX512DQ-NEXT: vmovq %xmm1, %rdx 10630; AVX512DQ-NEXT: vmovq %xmm4, %rsi 10631; AVX512DQ-NEXT: cmpq %rdx, %rsi 10632; AVX512DQ-NEXT: movl $0, %edx 10633; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10634; AVX512DQ-NEXT: vmovq %rdx, %xmm1 10635; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm5[0] 10636; AVX512DQ-NEXT: vextracti64x2 $2, %zmm6, %xmm4 10637; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rdx 10638; AVX512DQ-NEXT: vextracti64x2 $2, %zmm2, %xmm5 10639; AVX512DQ-NEXT: vpextrq $1, %xmm5, %rsi 10640; AVX512DQ-NEXT: cmpq %rdx, %rsi 10641; AVX512DQ-NEXT: movl $0, %edx 10642; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10643; AVX512DQ-NEXT: vmovq %rdx, %xmm0 10644; AVX512DQ-NEXT: vmovq %xmm4, %rdx 10645; AVX512DQ-NEXT: vmovq %xmm5, %rsi 10646; AVX512DQ-NEXT: cmpq %rdx, %rsi 10647; AVX512DQ-NEXT: movl $0, %edx 10648; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10649; AVX512DQ-NEXT: vmovq %rdx, %xmm4 10650; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm4[0],xmm0[0] 10651; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm1 10652; AVX512DQ-NEXT: vextracti64x2 $1, %zmm6, %xmm0 10653; AVX512DQ-NEXT: vpextrq $1, %xmm0, %rdx 10654; AVX512DQ-NEXT: vextracti64x2 $1, %zmm2, %xmm4 10655; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rsi 10656; AVX512DQ-NEXT: cmpq %rdx, %rsi 10657; AVX512DQ-NEXT: movl $0, %edx 10658; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10659; AVX512DQ-NEXT: vmovq %rdx, %xmm5 10660; AVX512DQ-NEXT: vmovq %xmm0, %rdx 10661; AVX512DQ-NEXT: vmovq %xmm4, %rsi 10662; AVX512DQ-NEXT: cmpq %rdx, %rsi 10663; AVX512DQ-NEXT: movl $0, %edx 10664; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10665; AVX512DQ-NEXT: vmovq %rdx, %xmm0 10666; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm5[0] 10667; AVX512DQ-NEXT: vpextrq $1, %xmm6, %rdx 10668; AVX512DQ-NEXT: vpextrq $1, %xmm2, %rsi 10669; AVX512DQ-NEXT: cmpq %rdx, %rsi 10670; AVX512DQ-NEXT: movl $0, %edx 10671; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10672; AVX512DQ-NEXT: vmovq %rdx, %xmm4 10673; AVX512DQ-NEXT: vmovq %xmm6, %rdx 10674; AVX512DQ-NEXT: vmovq %xmm2, %rsi 10675; AVX512DQ-NEXT: cmpq %rdx, %rsi 10676; AVX512DQ-NEXT: movl $0, %edx 10677; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10678; AVX512DQ-NEXT: vmovq %rdx, %xmm2 10679; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm4[0] 10680; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm2, %ymm0 10681; AVX512DQ-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 10682; AVX512DQ-NEXT: vpmovqd %zmm0, %ymm1 10683; AVX512DQ-NEXT: vextracti64x2 $3, %zmm7, %xmm0 10684; AVX512DQ-NEXT: vpextrq $1, %xmm0, %rdx 10685; AVX512DQ-NEXT: vextracti64x2 $3, %zmm3, %xmm2 10686; AVX512DQ-NEXT: vpextrq $1, %xmm2, %rsi 10687; AVX512DQ-NEXT: cmpq %rdx, %rsi 10688; AVX512DQ-NEXT: movl $0, %edx 10689; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10690; AVX512DQ-NEXT: vmovq %rdx, %xmm4 10691; AVX512DQ-NEXT: vmovq %xmm0, %rdx 10692; AVX512DQ-NEXT: vmovq %xmm2, %rsi 10693; AVX512DQ-NEXT: cmpq %rdx, %rsi 10694; AVX512DQ-NEXT: movl $0, %edx 10695; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10696; AVX512DQ-NEXT: vmovq %rdx, %xmm0 10697; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm4[0] 10698; AVX512DQ-NEXT: vextracti64x2 $2, %zmm7, %xmm2 10699; AVX512DQ-NEXT: vpextrq $1, %xmm2, %rdx 10700; AVX512DQ-NEXT: vextracti64x2 $2, %zmm3, %xmm4 10701; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rsi 10702; AVX512DQ-NEXT: cmpq %rdx, %rsi 10703; AVX512DQ-NEXT: movl $0, %edx 10704; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10705; AVX512DQ-NEXT: vmovq %rdx, %xmm5 10706; AVX512DQ-NEXT: vmovq %xmm2, %rdx 10707; AVX512DQ-NEXT: vmovq %xmm4, %rsi 10708; AVX512DQ-NEXT: cmpq %rdx, %rsi 10709; AVX512DQ-NEXT: movl $0, %edx 10710; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10711; AVX512DQ-NEXT: vmovq %rdx, %xmm2 10712; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm5[0] 10713; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm2, %ymm2 10714; AVX512DQ-NEXT: vextracti64x2 $1, %zmm7, %xmm0 10715; AVX512DQ-NEXT: vpextrq $1, %xmm0, %rdx 10716; AVX512DQ-NEXT: vextracti64x2 $1, %zmm3, %xmm4 10717; AVX512DQ-NEXT: vpextrq $1, %xmm4, %rsi 10718; AVX512DQ-NEXT: cmpq %rdx, %rsi 10719; AVX512DQ-NEXT: movl $0, %edx 10720; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10721; AVX512DQ-NEXT: vmovq %rdx, %xmm5 10722; AVX512DQ-NEXT: vmovq %xmm0, %rdx 10723; AVX512DQ-NEXT: vmovq %xmm4, %rsi 10724; AVX512DQ-NEXT: cmpq %rdx, %rsi 10725; AVX512DQ-NEXT: movl $0, %edx 10726; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10727; AVX512DQ-NEXT: vmovq %rdx, %xmm0 10728; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm5[0] 10729; AVX512DQ-NEXT: vpextrq $1, %xmm7, %rdx 10730; AVX512DQ-NEXT: vpextrq $1, %xmm3, %rsi 10731; AVX512DQ-NEXT: cmpq %rdx, %rsi 10732; AVX512DQ-NEXT: movl $0, %edx 10733; AVX512DQ-NEXT: cmovgq %rcx, %rdx 10734; AVX512DQ-NEXT: vmovq %rdx, %xmm4 10735; AVX512DQ-NEXT: vmovq %xmm7, %rdx 10736; AVX512DQ-NEXT: vmovq %xmm3, %rsi 10737; AVX512DQ-NEXT: cmpq %rdx, %rsi 10738; AVX512DQ-NEXT: cmovgq %rcx, %rax 10739; AVX512DQ-NEXT: vmovq %rax, %xmm3 10740; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm4[0] 10741; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm3, %ymm0 10742; AVX512DQ-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm0 10743; AVX512DQ-NEXT: vpmovqd %zmm0, %ymm0 10744; AVX512DQ-NEXT: vinserti32x8 $1, %ymm0, %zmm1, %zmm0 10745; AVX512DQ-NEXT: vpmovdb %zmm0, %xmm0 10746; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm8, %ymm0 10747; AVX512DQ-NEXT: retq 10748; 10749; AVX512BW-LABEL: test_cmp_v32i64: 10750; AVX512BW: # BB#0: 10751; AVX512BW-NEXT: vextracti32x4 $3, %zmm4, %xmm8 10752; AVX512BW-NEXT: vpextrq $1, %xmm8, %rcx 10753; AVX512BW-NEXT: vextracti32x4 $3, %zmm0, %xmm9 10754; AVX512BW-NEXT: vpextrq $1, %xmm9, %rdx 10755; AVX512BW-NEXT: xorl %eax, %eax 10756; AVX512BW-NEXT: cmpq %rcx, %rdx 10757; AVX512BW-NEXT: movq $-1, %rcx 10758; AVX512BW-NEXT: movl $0, %edx 10759; AVX512BW-NEXT: cmovgq %rcx, %rdx 10760; AVX512BW-NEXT: vmovq %rdx, %xmm10 10761; AVX512BW-NEXT: vmovq %xmm8, %rdx 10762; AVX512BW-NEXT: vmovq %xmm9, %rsi 10763; AVX512BW-NEXT: cmpq %rdx, %rsi 10764; AVX512BW-NEXT: movl $0, %edx 10765; AVX512BW-NEXT: cmovgq %rcx, %rdx 10766; AVX512BW-NEXT: vmovq %rdx, %xmm8 10767; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm8 = xmm8[0],xmm10[0] 10768; AVX512BW-NEXT: vextracti32x4 $2, %zmm4, %xmm9 10769; AVX512BW-NEXT: vpextrq $1, %xmm9, %rdx 10770; AVX512BW-NEXT: vextracti32x4 $2, %zmm0, %xmm10 10771; AVX512BW-NEXT: vpextrq $1, %xmm10, %rsi 10772; AVX512BW-NEXT: cmpq %rdx, %rsi 10773; AVX512BW-NEXT: movl $0, %edx 10774; AVX512BW-NEXT: cmovgq %rcx, %rdx 10775; AVX512BW-NEXT: vmovq %rdx, %xmm11 10776; AVX512BW-NEXT: vmovq %xmm9, %rdx 10777; AVX512BW-NEXT: vmovq %xmm10, %rsi 10778; AVX512BW-NEXT: cmpq %rdx, %rsi 10779; AVX512BW-NEXT: movl $0, %edx 10780; AVX512BW-NEXT: cmovgq %rcx, %rdx 10781; AVX512BW-NEXT: vmovq %rdx, %xmm9 10782; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm11[0] 10783; AVX512BW-NEXT: vinserti128 $1, %xmm8, %ymm9, %ymm8 10784; AVX512BW-NEXT: vextracti32x4 $1, %zmm4, %xmm9 10785; AVX512BW-NEXT: vpextrq $1, %xmm9, %rdx 10786; AVX512BW-NEXT: vextracti32x4 $1, %zmm0, %xmm10 10787; AVX512BW-NEXT: vpextrq $1, %xmm10, %rsi 10788; AVX512BW-NEXT: cmpq %rdx, %rsi 10789; AVX512BW-NEXT: movl $0, %edx 10790; AVX512BW-NEXT: cmovgq %rcx, %rdx 10791; AVX512BW-NEXT: vmovq %rdx, %xmm11 10792; AVX512BW-NEXT: vmovq %xmm9, %rdx 10793; AVX512BW-NEXT: vmovq %xmm10, %rsi 10794; AVX512BW-NEXT: cmpq %rdx, %rsi 10795; AVX512BW-NEXT: movl $0, %edx 10796; AVX512BW-NEXT: cmovgq %rcx, %rdx 10797; AVX512BW-NEXT: vmovq %rdx, %xmm9 10798; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm11[0] 10799; AVX512BW-NEXT: vpextrq $1, %xmm4, %rdx 10800; AVX512BW-NEXT: vpextrq $1, %xmm0, %rsi 10801; AVX512BW-NEXT: cmpq %rdx, %rsi 10802; AVX512BW-NEXT: movl $0, %edx 10803; AVX512BW-NEXT: cmovgq %rcx, %rdx 10804; AVX512BW-NEXT: vmovq %rdx, %xmm10 10805; AVX512BW-NEXT: vmovq %xmm4, %rdx 10806; AVX512BW-NEXT: vmovq %xmm0, %rsi 10807; AVX512BW-NEXT: cmpq %rdx, %rsi 10808; AVX512BW-NEXT: movl $0, %edx 10809; AVX512BW-NEXT: cmovgq %rcx, %rdx 10810; AVX512BW-NEXT: vmovq %rdx, %xmm0 10811; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm10[0] 10812; AVX512BW-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm0 10813; AVX512BW-NEXT: vinserti64x4 $1, %ymm8, %zmm0, %zmm0 10814; AVX512BW-NEXT: vpmovqd %zmm0, %ymm8 10815; AVX512BW-NEXT: vextracti32x4 $3, %zmm5, %xmm4 10816; AVX512BW-NEXT: vpextrq $1, %xmm4, %rdx 10817; AVX512BW-NEXT: vextracti32x4 $3, %zmm1, %xmm0 10818; AVX512BW-NEXT: vpextrq $1, %xmm0, %rsi 10819; AVX512BW-NEXT: cmpq %rdx, %rsi 10820; AVX512BW-NEXT: movl $0, %edx 10821; AVX512BW-NEXT: cmovgq %rcx, %rdx 10822; AVX512BW-NEXT: vmovq %rdx, %xmm9 10823; AVX512BW-NEXT: vmovq %xmm4, %rdx 10824; AVX512BW-NEXT: vmovq %xmm0, %rsi 10825; AVX512BW-NEXT: cmpq %rdx, %rsi 10826; AVX512BW-NEXT: movl $0, %edx 10827; AVX512BW-NEXT: cmovgq %rcx, %rdx 10828; AVX512BW-NEXT: vmovq %rdx, %xmm0 10829; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm0[0],xmm9[0] 10830; AVX512BW-NEXT: vextracti32x4 $2, %zmm5, %xmm4 10831; AVX512BW-NEXT: vpextrq $1, %xmm4, %rdx 10832; AVX512BW-NEXT: vextracti32x4 $2, %zmm1, %xmm0 10833; AVX512BW-NEXT: vpextrq $1, %xmm0, %rsi 10834; AVX512BW-NEXT: cmpq %rdx, %rsi 10835; AVX512BW-NEXT: movl $0, %edx 10836; AVX512BW-NEXT: cmovgq %rcx, %rdx 10837; AVX512BW-NEXT: vmovq %rdx, %xmm10 10838; AVX512BW-NEXT: vmovq %xmm4, %rdx 10839; AVX512BW-NEXT: vmovq %xmm0, %rsi 10840; AVX512BW-NEXT: cmpq %rdx, %rsi 10841; AVX512BW-NEXT: movl $0, %edx 10842; AVX512BW-NEXT: cmovgq %rcx, %rdx 10843; AVX512BW-NEXT: vmovq %rdx, %xmm0 10844; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm10[0] 10845; AVX512BW-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm9 10846; AVX512BW-NEXT: vextracti32x4 $1, %zmm5, %xmm0 10847; AVX512BW-NEXT: vpextrq $1, %xmm0, %rdx 10848; AVX512BW-NEXT: vextracti32x4 $1, %zmm1, %xmm4 10849; AVX512BW-NEXT: vpextrq $1, %xmm4, %rsi 10850; AVX512BW-NEXT: cmpq %rdx, %rsi 10851; AVX512BW-NEXT: movl $0, %edx 10852; AVX512BW-NEXT: cmovgq %rcx, %rdx 10853; AVX512BW-NEXT: vmovq %rdx, %xmm10 10854; AVX512BW-NEXT: vmovq %xmm0, %rdx 10855; AVX512BW-NEXT: vmovq %xmm4, %rsi 10856; AVX512BW-NEXT: cmpq %rdx, %rsi 10857; AVX512BW-NEXT: movl $0, %edx 10858; AVX512BW-NEXT: cmovgq %rcx, %rdx 10859; AVX512BW-NEXT: vmovq %rdx, %xmm0 10860; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm10[0] 10861; AVX512BW-NEXT: vpextrq $1, %xmm5, %rdx 10862; AVX512BW-NEXT: vpextrq $1, %xmm1, %rsi 10863; AVX512BW-NEXT: cmpq %rdx, %rsi 10864; AVX512BW-NEXT: movl $0, %edx 10865; AVX512BW-NEXT: cmovgq %rcx, %rdx 10866; AVX512BW-NEXT: vmovq %rdx, %xmm4 10867; AVX512BW-NEXT: vmovq %xmm5, %rdx 10868; AVX512BW-NEXT: vmovq %xmm1, %rsi 10869; AVX512BW-NEXT: cmpq %rdx, %rsi 10870; AVX512BW-NEXT: movl $0, %edx 10871; AVX512BW-NEXT: cmovgq %rcx, %rdx 10872; AVX512BW-NEXT: vmovq %rdx, %xmm1 10873; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm4[0] 10874; AVX512BW-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 10875; AVX512BW-NEXT: vinserti64x4 $1, %ymm9, %zmm0, %zmm0 10876; AVX512BW-NEXT: vpmovqd %zmm0, %ymm0 10877; AVX512BW-NEXT: vinserti64x4 $1, %ymm0, %zmm8, %zmm0 10878; AVX512BW-NEXT: vpmovdw %zmm0, %ymm8 10879; AVX512BW-NEXT: vextracti32x4 $3, %zmm6, %xmm1 10880; AVX512BW-NEXT: vpextrq $1, %xmm1, %rdx 10881; AVX512BW-NEXT: vextracti32x4 $3, %zmm2, %xmm4 10882; AVX512BW-NEXT: vpextrq $1, %xmm4, %rsi 10883; AVX512BW-NEXT: cmpq %rdx, %rsi 10884; AVX512BW-NEXT: movl $0, %edx 10885; AVX512BW-NEXT: cmovgq %rcx, %rdx 10886; AVX512BW-NEXT: vmovq %rdx, %xmm5 10887; AVX512BW-NEXT: vmovq %xmm1, %rdx 10888; AVX512BW-NEXT: vmovq %xmm4, %rsi 10889; AVX512BW-NEXT: cmpq %rdx, %rsi 10890; AVX512BW-NEXT: movl $0, %edx 10891; AVX512BW-NEXT: cmovgq %rcx, %rdx 10892; AVX512BW-NEXT: vmovq %rdx, %xmm1 10893; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm5[0] 10894; AVX512BW-NEXT: vextracti32x4 $2, %zmm6, %xmm4 10895; AVX512BW-NEXT: vpextrq $1, %xmm4, %rdx 10896; AVX512BW-NEXT: vextracti32x4 $2, %zmm2, %xmm5 10897; AVX512BW-NEXT: vpextrq $1, %xmm5, %rsi 10898; AVX512BW-NEXT: cmpq %rdx, %rsi 10899; AVX512BW-NEXT: movl $0, %edx 10900; AVX512BW-NEXT: cmovgq %rcx, %rdx 10901; AVX512BW-NEXT: vmovq %rdx, %xmm0 10902; AVX512BW-NEXT: vmovq %xmm4, %rdx 10903; AVX512BW-NEXT: vmovq %xmm5, %rsi 10904; AVX512BW-NEXT: cmpq %rdx, %rsi 10905; AVX512BW-NEXT: movl $0, %edx 10906; AVX512BW-NEXT: cmovgq %rcx, %rdx 10907; AVX512BW-NEXT: vmovq %rdx, %xmm4 10908; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm4[0],xmm0[0] 10909; AVX512BW-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm1 10910; AVX512BW-NEXT: vextracti32x4 $1, %zmm6, %xmm0 10911; AVX512BW-NEXT: vpextrq $1, %xmm0, %rdx 10912; AVX512BW-NEXT: vextracti32x4 $1, %zmm2, %xmm4 10913; AVX512BW-NEXT: vpextrq $1, %xmm4, %rsi 10914; AVX512BW-NEXT: cmpq %rdx, %rsi 10915; AVX512BW-NEXT: movl $0, %edx 10916; AVX512BW-NEXT: cmovgq %rcx, %rdx 10917; AVX512BW-NEXT: vmovq %rdx, %xmm5 10918; AVX512BW-NEXT: vmovq %xmm0, %rdx 10919; AVX512BW-NEXT: vmovq %xmm4, %rsi 10920; AVX512BW-NEXT: cmpq %rdx, %rsi 10921; AVX512BW-NEXT: movl $0, %edx 10922; AVX512BW-NEXT: cmovgq %rcx, %rdx 10923; AVX512BW-NEXT: vmovq %rdx, %xmm0 10924; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm5[0] 10925; AVX512BW-NEXT: vpextrq $1, %xmm6, %rdx 10926; AVX512BW-NEXT: vpextrq $1, %xmm2, %rsi 10927; AVX512BW-NEXT: cmpq %rdx, %rsi 10928; AVX512BW-NEXT: movl $0, %edx 10929; AVX512BW-NEXT: cmovgq %rcx, %rdx 10930; AVX512BW-NEXT: vmovq %rdx, %xmm4 10931; AVX512BW-NEXT: vmovq %xmm6, %rdx 10932; AVX512BW-NEXT: vmovq %xmm2, %rsi 10933; AVX512BW-NEXT: cmpq %rdx, %rsi 10934; AVX512BW-NEXT: movl $0, %edx 10935; AVX512BW-NEXT: cmovgq %rcx, %rdx 10936; AVX512BW-NEXT: vmovq %rdx, %xmm2 10937; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm4[0] 10938; AVX512BW-NEXT: vinserti128 $1, %xmm0, %ymm2, %ymm0 10939; AVX512BW-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 10940; AVX512BW-NEXT: vpmovqd %zmm0, %ymm1 10941; AVX512BW-NEXT: vextracti32x4 $3, %zmm7, %xmm0 10942; AVX512BW-NEXT: vpextrq $1, %xmm0, %rdx 10943; AVX512BW-NEXT: vextracti32x4 $3, %zmm3, %xmm2 10944; AVX512BW-NEXT: vpextrq $1, %xmm2, %rsi 10945; AVX512BW-NEXT: cmpq %rdx, %rsi 10946; AVX512BW-NEXT: movl $0, %edx 10947; AVX512BW-NEXT: cmovgq %rcx, %rdx 10948; AVX512BW-NEXT: vmovq %rdx, %xmm4 10949; AVX512BW-NEXT: vmovq %xmm0, %rdx 10950; AVX512BW-NEXT: vmovq %xmm2, %rsi 10951; AVX512BW-NEXT: cmpq %rdx, %rsi 10952; AVX512BW-NEXT: movl $0, %edx 10953; AVX512BW-NEXT: cmovgq %rcx, %rdx 10954; AVX512BW-NEXT: vmovq %rdx, %xmm0 10955; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm4[0] 10956; AVX512BW-NEXT: vextracti32x4 $2, %zmm7, %xmm2 10957; AVX512BW-NEXT: vpextrq $1, %xmm2, %rdx 10958; AVX512BW-NEXT: vextracti32x4 $2, %zmm3, %xmm4 10959; AVX512BW-NEXT: vpextrq $1, %xmm4, %rsi 10960; AVX512BW-NEXT: cmpq %rdx, %rsi 10961; AVX512BW-NEXT: movl $0, %edx 10962; AVX512BW-NEXT: cmovgq %rcx, %rdx 10963; AVX512BW-NEXT: vmovq %rdx, %xmm5 10964; AVX512BW-NEXT: vmovq %xmm2, %rdx 10965; AVX512BW-NEXT: vmovq %xmm4, %rsi 10966; AVX512BW-NEXT: cmpq %rdx, %rsi 10967; AVX512BW-NEXT: movl $0, %edx 10968; AVX512BW-NEXT: cmovgq %rcx, %rdx 10969; AVX512BW-NEXT: vmovq %rdx, %xmm2 10970; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm5[0] 10971; AVX512BW-NEXT: vinserti128 $1, %xmm0, %ymm2, %ymm2 10972; AVX512BW-NEXT: vextracti32x4 $1, %zmm7, %xmm0 10973; AVX512BW-NEXT: vpextrq $1, %xmm0, %rdx 10974; AVX512BW-NEXT: vextracti32x4 $1, %zmm3, %xmm4 10975; AVX512BW-NEXT: vpextrq $1, %xmm4, %rsi 10976; AVX512BW-NEXT: cmpq %rdx, %rsi 10977; AVX512BW-NEXT: movl $0, %edx 10978; AVX512BW-NEXT: cmovgq %rcx, %rdx 10979; AVX512BW-NEXT: vmovq %rdx, %xmm5 10980; AVX512BW-NEXT: vmovq %xmm0, %rdx 10981; AVX512BW-NEXT: vmovq %xmm4, %rsi 10982; AVX512BW-NEXT: cmpq %rdx, %rsi 10983; AVX512BW-NEXT: movl $0, %edx 10984; AVX512BW-NEXT: cmovgq %rcx, %rdx 10985; AVX512BW-NEXT: vmovq %rdx, %xmm0 10986; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm5[0] 10987; AVX512BW-NEXT: vpextrq $1, %xmm7, %rdx 10988; AVX512BW-NEXT: vpextrq $1, %xmm3, %rsi 10989; AVX512BW-NEXT: cmpq %rdx, %rsi 10990; AVX512BW-NEXT: movl $0, %edx 10991; AVX512BW-NEXT: cmovgq %rcx, %rdx 10992; AVX512BW-NEXT: vmovq %rdx, %xmm4 10993; AVX512BW-NEXT: vmovq %xmm7, %rdx 10994; AVX512BW-NEXT: vmovq %xmm3, %rsi 10995; AVX512BW-NEXT: cmpq %rdx, %rsi 10996; AVX512BW-NEXT: cmovgq %rcx, %rax 10997; AVX512BW-NEXT: vmovq %rax, %xmm3 10998; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm4[0] 10999; AVX512BW-NEXT: vinserti128 $1, %xmm0, %ymm3, %ymm0 11000; AVX512BW-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm0 11001; AVX512BW-NEXT: vpmovqd %zmm0, %ymm0 11002; AVX512BW-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm0 11003; AVX512BW-NEXT: vpmovdw %zmm0, %ymm0 11004; AVX512BW-NEXT: vinserti64x4 $1, %ymm0, %zmm8, %zmm0 11005; AVX512BW-NEXT: vpmovwb %zmm0, %ymm0 11006; AVX512BW-NEXT: retq 11007 %1 = icmp sgt <32 x i64> %a0, %a1 11008 ret <32 x i1> %1 11009} 11010