1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefix=SSE --check-prefix=SSE2 3; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse4.2 | FileCheck %s --check-prefix=SSE --check-prefix=SSE42 4; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefix=AVX --check-prefix=AVX1 5; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefix=AVX --check-prefix=AVX2 6; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefix=AVX --check-prefix=AVX512 --check-prefix=AVX512F 7 8; 9; 128-bit vector comparisons 10; 11 12define <2 x i1> @test_cmp_v2f64(<2 x double> %a0, <2 x double> %a1) nounwind { 13; SSE-LABEL: test_cmp_v2f64: 14; SSE: # BB#0: 15; SSE-NEXT: cmpltpd %xmm0, %xmm1 16; SSE-NEXT: movapd %xmm1, %xmm0 17; SSE-NEXT: retq 18; 19; AVX-LABEL: test_cmp_v2f64: 20; AVX: # BB#0: 21; AVX-NEXT: vcmpltpd %xmm0, %xmm1, %xmm0 22; AVX-NEXT: retq 23 %1 = fcmp ogt <2 x double> %a0, %a1 24 ret <2 x i1> %1 25} 26 27define <4 x i1> @test_cmp_v4f32(<4 x float> %a0, <4 x float> %a1) nounwind { 28; SSE-LABEL: test_cmp_v4f32: 29; SSE: # BB#0: 30; SSE-NEXT: cmpltps %xmm0, %xmm1 31; SSE-NEXT: movaps %xmm1, %xmm0 32; SSE-NEXT: retq 33; 34; AVX-LABEL: test_cmp_v4f32: 35; AVX: # BB#0: 36; AVX-NEXT: vcmpltps %xmm0, %xmm1, %xmm0 37; AVX-NEXT: retq 38 %1 = fcmp ogt <4 x float> %a0, %a1 39 ret <4 x i1> %1 40} 41 42define <2 x i1> @test_cmp_v2i64(<2 x i64> %a0, <2 x i64> %a1) nounwind { 43; SSE2-LABEL: test_cmp_v2i64: 44; SSE2: # BB#0: 45; SSE2-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,0,2147483648,0] 46; SSE2-NEXT: pxor %xmm2, %xmm1 47; SSE2-NEXT: pxor %xmm2, %xmm0 48; SSE2-NEXT: movdqa %xmm0, %xmm2 49; SSE2-NEXT: pcmpgtd %xmm1, %xmm2 50; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm2[0,0,2,2] 51; SSE2-NEXT: pcmpeqd %xmm1, %xmm0 52; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,3,3] 53; SSE2-NEXT: pand %xmm3, %xmm1 54; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm2[1,1,3,3] 55; SSE2-NEXT: por %xmm1, %xmm0 56; SSE2-NEXT: retq 57; 58; SSE42-LABEL: test_cmp_v2i64: 59; SSE42: # BB#0: 60; SSE42-NEXT: pcmpgtq %xmm1, %xmm0 61; SSE42-NEXT: retq 62; 63; AVX-LABEL: test_cmp_v2i64: 64; AVX: # BB#0: 65; AVX-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm0 66; AVX-NEXT: retq 67 %1 = icmp sgt <2 x i64> %a0, %a1 68 ret <2 x i1> %1 69} 70 71define <4 x i1> @test_cmp_v4i32(<4 x i32> %a0, <4 x i32> %a1) nounwind { 72; SSE-LABEL: test_cmp_v4i32: 73; SSE: # BB#0: 74; SSE-NEXT: pcmpgtd %xmm1, %xmm0 75; SSE-NEXT: retq 76; 77; AVX-LABEL: test_cmp_v4i32: 78; AVX: # BB#0: 79; AVX-NEXT: vpcmpgtd %xmm1, %xmm0, %xmm0 80; AVX-NEXT: retq 81 %1 = icmp sgt <4 x i32> %a0, %a1 82 ret <4 x i1> %1 83} 84 85define <8 x i1> @test_cmp_v8i16(<8 x i16> %a0, <8 x i16> %a1) nounwind { 86; SSE-LABEL: test_cmp_v8i16: 87; SSE: # BB#0: 88; SSE-NEXT: pcmpgtw %xmm1, %xmm0 89; SSE-NEXT: retq 90; 91; AVX-LABEL: test_cmp_v8i16: 92; AVX: # BB#0: 93; AVX-NEXT: vpcmpgtw %xmm1, %xmm0, %xmm0 94; AVX-NEXT: retq 95 %1 = icmp sgt <8 x i16> %a0, %a1 96 ret <8 x i1> %1 97} 98 99define <16 x i1> @test_cmp_v16i8(<16 x i8> %a0, <16 x i8> %a1) nounwind { 100; SSE-LABEL: test_cmp_v16i8: 101; SSE: # BB#0: 102; SSE-NEXT: pcmpgtb %xmm1, %xmm0 103; SSE-NEXT: retq 104; 105; AVX-LABEL: test_cmp_v16i8: 106; AVX: # BB#0: 107; AVX-NEXT: vpcmpgtb %xmm1, %xmm0, %xmm0 108; AVX-NEXT: retq 109 %1 = icmp sgt <16 x i8> %a0, %a1 110 ret <16 x i1> %1 111} 112 113; 114; 256-bit vector comparisons 115; 116 117define <4 x i1> @test_cmp_v4f64(<4 x double> %a0, <4 x double> %a1) nounwind { 118; SSE-LABEL: test_cmp_v4f64: 119; SSE: # BB#0: 120; SSE-NEXT: cmpltpd %xmm1, %xmm3 121; SSE-NEXT: cmpltpd %xmm0, %xmm2 122; SSE-NEXT: packsswb %xmm3, %xmm2 123; SSE-NEXT: movdqa %xmm2, %xmm0 124; SSE-NEXT: retq 125; 126; AVX1-LABEL: test_cmp_v4f64: 127; AVX1: # BB#0: 128; AVX1-NEXT: vcmpltpd %ymm0, %ymm1, %ymm0 129; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 130; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 131; AVX1-NEXT: vzeroupper 132; AVX1-NEXT: retq 133; 134; AVX2-LABEL: test_cmp_v4f64: 135; AVX2: # BB#0: 136; AVX2-NEXT: vcmpltpd %ymm0, %ymm1, %ymm0 137; AVX2-NEXT: vextractf128 $1, %ymm0, %xmm1 138; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 139; AVX2-NEXT: vzeroupper 140; AVX2-NEXT: retq 141; 142; AVX512-LABEL: test_cmp_v4f64: 143; AVX512: # BB#0: 144; AVX512-NEXT: vcmpltpd %ymm0, %ymm1, %ymm0 145; AVX512-NEXT: vpmovqd %zmm0, %ymm0 146; AVX512-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill> 147; AVX512-NEXT: retq 148 %1 = fcmp ogt <4 x double> %a0, %a1 149 ret <4 x i1> %1 150} 151 152define <8 x i1> @test_cmp_v8f32(<8 x float> %a0, <8 x float> %a1) nounwind { 153; SSE-LABEL: test_cmp_v8f32: 154; SSE: # BB#0: 155; SSE-NEXT: cmpltps %xmm1, %xmm3 156; SSE-NEXT: cmpltps %xmm0, %xmm2 157; SSE-NEXT: packsswb %xmm3, %xmm2 158; SSE-NEXT: movdqa %xmm2, %xmm0 159; SSE-NEXT: retq 160; 161; AVX1-LABEL: test_cmp_v8f32: 162; AVX1: # BB#0: 163; AVX1-NEXT: vcmpltps %ymm0, %ymm1, %ymm0 164; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 165; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 166; AVX1-NEXT: vzeroupper 167; AVX1-NEXT: retq 168; 169; AVX2-LABEL: test_cmp_v8f32: 170; AVX2: # BB#0: 171; AVX2-NEXT: vcmpltps %ymm0, %ymm1, %ymm0 172; AVX2-NEXT: vextractf128 $1, %ymm0, %xmm1 173; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 174; AVX2-NEXT: vzeroupper 175; AVX2-NEXT: retq 176; 177; AVX512-LABEL: test_cmp_v8f32: 178; AVX512: # BB#0: 179; AVX512-NEXT: vcmpltps %ymm0, %ymm1, %ymm0 180; AVX512-NEXT: vpmovdw %zmm0, %ymm0 181; AVX512-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill> 182; AVX512-NEXT: retq 183 %1 = fcmp ogt <8 x float> %a0, %a1 184 ret <8 x i1> %1 185} 186 187define <4 x i1> @test_cmp_v4i64(<4 x i64> %a0, <4 x i64> %a1) nounwind { 188; SSE2-LABEL: test_cmp_v4i64: 189; SSE2: # BB#0: 190; SSE2-NEXT: movdqa {{.*#+}} xmm4 = [2147483648,0,2147483648,0] 191; SSE2-NEXT: pxor %xmm4, %xmm3 192; SSE2-NEXT: pxor %xmm4, %xmm1 193; SSE2-NEXT: movdqa %xmm1, %xmm5 194; SSE2-NEXT: pcmpgtd %xmm3, %xmm5 195; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2] 196; SSE2-NEXT: pcmpeqd %xmm3, %xmm1 197; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3] 198; SSE2-NEXT: pand %xmm6, %xmm1 199; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm5[1,1,3,3] 200; SSE2-NEXT: por %xmm1, %xmm3 201; SSE2-NEXT: pxor %xmm4, %xmm2 202; SSE2-NEXT: pxor %xmm4, %xmm0 203; SSE2-NEXT: movdqa %xmm0, %xmm1 204; SSE2-NEXT: pcmpgtd %xmm2, %xmm1 205; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm1[0,0,2,2] 206; SSE2-NEXT: pcmpeqd %xmm2, %xmm0 207; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,3,3] 208; SSE2-NEXT: pand %xmm4, %xmm2 209; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3] 210; SSE2-NEXT: por %xmm2, %xmm0 211; SSE2-NEXT: packsswb %xmm3, %xmm0 212; SSE2-NEXT: retq 213; 214; SSE42-LABEL: test_cmp_v4i64: 215; SSE42: # BB#0: 216; SSE42-NEXT: pcmpgtq %xmm3, %xmm1 217; SSE42-NEXT: pcmpgtq %xmm2, %xmm0 218; SSE42-NEXT: packsswb %xmm1, %xmm0 219; SSE42-NEXT: retq 220; 221; AVX1-LABEL: test_cmp_v4i64: 222; AVX1: # BB#0: 223; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 224; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 225; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2 226; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm0 227; AVX1-NEXT: vpacksswb %xmm2, %xmm0, %xmm0 228; AVX1-NEXT: vzeroupper 229; AVX1-NEXT: retq 230; 231; AVX2-LABEL: test_cmp_v4i64: 232; AVX2: # BB#0: 233; AVX2-NEXT: vpcmpgtq %ymm1, %ymm0, %ymm0 234; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 235; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 236; AVX2-NEXT: vzeroupper 237; AVX2-NEXT: retq 238; 239; AVX512-LABEL: test_cmp_v4i64: 240; AVX512: # BB#0: 241; AVX512-NEXT: vpcmpgtq %ymm1, %ymm0, %ymm0 242; AVX512-NEXT: vpmovqd %zmm0, %ymm0 243; AVX512-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill> 244; AVX512-NEXT: retq 245 %1 = icmp sgt <4 x i64> %a0, %a1 246 ret <4 x i1> %1 247} 248 249define <8 x i1> @test_cmp_v8i32(<8 x i32> %a0, <8 x i32> %a1) nounwind { 250; SSE-LABEL: test_cmp_v8i32: 251; SSE: # BB#0: 252; SSE-NEXT: pcmpgtd %xmm3, %xmm1 253; SSE-NEXT: pcmpgtd %xmm2, %xmm0 254; SSE-NEXT: packsswb %xmm1, %xmm0 255; SSE-NEXT: retq 256; 257; AVX1-LABEL: test_cmp_v8i32: 258; AVX1: # BB#0: 259; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 260; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 261; AVX1-NEXT: vpcmpgtd %xmm2, %xmm3, %xmm2 262; AVX1-NEXT: vpcmpgtd %xmm1, %xmm0, %xmm0 263; AVX1-NEXT: vpacksswb %xmm2, %xmm0, %xmm0 264; AVX1-NEXT: vzeroupper 265; AVX1-NEXT: retq 266; 267; AVX2-LABEL: test_cmp_v8i32: 268; AVX2: # BB#0: 269; AVX2-NEXT: vpcmpgtd %ymm1, %ymm0, %ymm0 270; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 271; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 272; AVX2-NEXT: vzeroupper 273; AVX2-NEXT: retq 274; 275; AVX512-LABEL: test_cmp_v8i32: 276; AVX512: # BB#0: 277; AVX512-NEXT: vpcmpgtd %ymm1, %ymm0, %ymm0 278; AVX512-NEXT: vpmovdw %zmm0, %ymm0 279; AVX512-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill> 280; AVX512-NEXT: retq 281 %1 = icmp sgt <8 x i32> %a0, %a1 282 ret <8 x i1> %1 283} 284 285define <16 x i1> @test_cmp_v16i16(<16 x i16> %a0, <16 x i16> %a1) nounwind { 286; SSE-LABEL: test_cmp_v16i16: 287; SSE: # BB#0: 288; SSE-NEXT: pcmpgtw %xmm3, %xmm1 289; SSE-NEXT: pcmpgtw %xmm2, %xmm0 290; SSE-NEXT: packsswb %xmm1, %xmm0 291; SSE-NEXT: retq 292; 293; AVX1-LABEL: test_cmp_v16i16: 294; AVX1: # BB#0: 295; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 296; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 297; AVX1-NEXT: vpcmpgtw %xmm2, %xmm3, %xmm2 298; AVX1-NEXT: vpcmpgtw %xmm1, %xmm0, %xmm0 299; AVX1-NEXT: vpacksswb %xmm2, %xmm0, %xmm0 300; AVX1-NEXT: vzeroupper 301; AVX1-NEXT: retq 302; 303; AVX2-LABEL: test_cmp_v16i16: 304; AVX2: # BB#0: 305; AVX2-NEXT: vpcmpgtw %ymm1, %ymm0, %ymm0 306; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 307; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 308; AVX2-NEXT: vzeroupper 309; AVX2-NEXT: retq 310; 311; AVX512-LABEL: test_cmp_v16i16: 312; AVX512: # BB#0: 313; AVX512-NEXT: vpcmpgtw %ymm1, %ymm0, %ymm0 314; AVX512-NEXT: vpmovsxwd %ymm0, %zmm0 315; AVX512-NEXT: vpmovdb %zmm0, %xmm0 316; AVX512-NEXT: retq 317 %1 = icmp sgt <16 x i16> %a0, %a1 318 ret <16 x i1> %1 319} 320 321define <32 x i1> @test_cmp_v32i8(<32 x i8> %a0, <32 x i8> %a1) nounwind { 322; SSE2-LABEL: test_cmp_v32i8: 323; SSE2: # BB#0: 324; SSE2-NEXT: pcmpgtb %xmm2, %xmm0 325; SSE2-NEXT: pcmpgtb %xmm3, %xmm1 326; SSE2-NEXT: movdqa %xmm1, -{{[0-9]+}}(%rsp) 327; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 328; SSE2-NEXT: andb $1, %al 329; SSE2-NEXT: movb %al, 2(%rdi) 330; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 331; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 332; SSE2-NEXT: andb $1, %al 333; SSE2-NEXT: movb %al, (%rdi) 334; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 335; SSE2-NEXT: andb $1, %al 336; SSE2-NEXT: movb %al, 2(%rdi) 337; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 338; SSE2-NEXT: andb $1, %al 339; SSE2-NEXT: movb %al, (%rdi) 340; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 341; SSE2-NEXT: andb $1, %al 342; SSE2-NEXT: movb %al, 2(%rdi) 343; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 344; SSE2-NEXT: andb $1, %al 345; SSE2-NEXT: movb %al, (%rdi) 346; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 347; SSE2-NEXT: andb $1, %al 348; SSE2-NEXT: movb %al, 2(%rdi) 349; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 350; SSE2-NEXT: andb $1, %al 351; SSE2-NEXT: movb %al, (%rdi) 352; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 353; SSE2-NEXT: andb $1, %al 354; SSE2-NEXT: movb %al, 2(%rdi) 355; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 356; SSE2-NEXT: andb $1, %al 357; SSE2-NEXT: movb %al, (%rdi) 358; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 359; SSE2-NEXT: andb $1, %al 360; SSE2-NEXT: movb %al, 2(%rdi) 361; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 362; SSE2-NEXT: andb $1, %al 363; SSE2-NEXT: movb %al, (%rdi) 364; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 365; SSE2-NEXT: andb $1, %al 366; SSE2-NEXT: movb %al, 2(%rdi) 367; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 368; SSE2-NEXT: andb $1, %al 369; SSE2-NEXT: movb %al, (%rdi) 370; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 371; SSE2-NEXT: andb $1, %al 372; SSE2-NEXT: movb %al, 2(%rdi) 373; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 374; SSE2-NEXT: andb $1, %al 375; SSE2-NEXT: movb %al, (%rdi) 376; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 377; SSE2-NEXT: andb $1, %al 378; SSE2-NEXT: movb %al, 2(%rdi) 379; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 380; SSE2-NEXT: andb $1, %al 381; SSE2-NEXT: movb %al, (%rdi) 382; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 383; SSE2-NEXT: andb $1, %al 384; SSE2-NEXT: movb %al, 2(%rdi) 385; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 386; SSE2-NEXT: andb $1, %al 387; SSE2-NEXT: movb %al, (%rdi) 388; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 389; SSE2-NEXT: andb $1, %al 390; SSE2-NEXT: movb %al, 2(%rdi) 391; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 392; SSE2-NEXT: andb $1, %al 393; SSE2-NEXT: movb %al, (%rdi) 394; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 395; SSE2-NEXT: andb $1, %al 396; SSE2-NEXT: movb %al, 2(%rdi) 397; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 398; SSE2-NEXT: andb $1, %al 399; SSE2-NEXT: movb %al, (%rdi) 400; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 401; SSE2-NEXT: andb $1, %al 402; SSE2-NEXT: movb %al, 2(%rdi) 403; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 404; SSE2-NEXT: andb $1, %al 405; SSE2-NEXT: movb %al, (%rdi) 406; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 407; SSE2-NEXT: andb $1, %al 408; SSE2-NEXT: movb %al, 2(%rdi) 409; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 410; SSE2-NEXT: andb $1, %al 411; SSE2-NEXT: movb %al, (%rdi) 412; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 413; SSE2-NEXT: andb $1, %al 414; SSE2-NEXT: movb %al, 2(%rdi) 415; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 416; SSE2-NEXT: andb $1, %al 417; SSE2-NEXT: movb %al, (%rdi) 418; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 419; SSE2-NEXT: andb $1, %al 420; SSE2-NEXT: movb %al, 2(%rdi) 421; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 422; SSE2-NEXT: andb $1, %al 423; SSE2-NEXT: movb %al, (%rdi) 424; SSE2-NEXT: movq %rdi, %rax 425; SSE2-NEXT: retq 426; 427; SSE42-LABEL: test_cmp_v32i8: 428; SSE42: # BB#0: 429; SSE42-NEXT: pcmpgtb %xmm2, %xmm0 430; SSE42-NEXT: pcmpgtb %xmm3, %xmm1 431; SSE42-NEXT: pextrb $15, %xmm1, %eax 432; SSE42-NEXT: andb $1, %al 433; SSE42-NEXT: movb %al, 2(%rdi) 434; SSE42-NEXT: pextrb $14, %xmm1, %eax 435; SSE42-NEXT: andb $1, %al 436; SSE42-NEXT: movb %al, 2(%rdi) 437; SSE42-NEXT: pextrb $13, %xmm1, %eax 438; SSE42-NEXT: andb $1, %al 439; SSE42-NEXT: movb %al, 2(%rdi) 440; SSE42-NEXT: pextrb $12, %xmm1, %eax 441; SSE42-NEXT: andb $1, %al 442; SSE42-NEXT: movb %al, 2(%rdi) 443; SSE42-NEXT: pextrb $11, %xmm1, %eax 444; SSE42-NEXT: andb $1, %al 445; SSE42-NEXT: movb %al, 2(%rdi) 446; SSE42-NEXT: pextrb $10, %xmm1, %eax 447; SSE42-NEXT: andb $1, %al 448; SSE42-NEXT: movb %al, 2(%rdi) 449; SSE42-NEXT: pextrb $9, %xmm1, %eax 450; SSE42-NEXT: andb $1, %al 451; SSE42-NEXT: movb %al, 2(%rdi) 452; SSE42-NEXT: pextrb $8, %xmm1, %eax 453; SSE42-NEXT: andb $1, %al 454; SSE42-NEXT: movb %al, 2(%rdi) 455; SSE42-NEXT: pextrb $7, %xmm1, %eax 456; SSE42-NEXT: andb $1, %al 457; SSE42-NEXT: movb %al, 2(%rdi) 458; SSE42-NEXT: pextrb $6, %xmm1, %eax 459; SSE42-NEXT: andb $1, %al 460; SSE42-NEXT: movb %al, 2(%rdi) 461; SSE42-NEXT: pextrb $5, %xmm1, %eax 462; SSE42-NEXT: andb $1, %al 463; SSE42-NEXT: movb %al, 2(%rdi) 464; SSE42-NEXT: pextrb $4, %xmm1, %eax 465; SSE42-NEXT: andb $1, %al 466; SSE42-NEXT: movb %al, 2(%rdi) 467; SSE42-NEXT: pextrb $3, %xmm1, %eax 468; SSE42-NEXT: andb $1, %al 469; SSE42-NEXT: movb %al, 2(%rdi) 470; SSE42-NEXT: pextrb $2, %xmm1, %eax 471; SSE42-NEXT: andb $1, %al 472; SSE42-NEXT: movb %al, 2(%rdi) 473; SSE42-NEXT: pextrb $1, %xmm1, %eax 474; SSE42-NEXT: andb $1, %al 475; SSE42-NEXT: movb %al, 2(%rdi) 476; SSE42-NEXT: pextrb $0, %xmm1, %eax 477; SSE42-NEXT: andb $1, %al 478; SSE42-NEXT: movb %al, 2(%rdi) 479; SSE42-NEXT: pextrb $15, %xmm0, %eax 480; SSE42-NEXT: andb $1, %al 481; SSE42-NEXT: movb %al, (%rdi) 482; SSE42-NEXT: pextrb $14, %xmm0, %eax 483; SSE42-NEXT: andb $1, %al 484; SSE42-NEXT: movb %al, (%rdi) 485; SSE42-NEXT: pextrb $13, %xmm0, %eax 486; SSE42-NEXT: andb $1, %al 487; SSE42-NEXT: movb %al, (%rdi) 488; SSE42-NEXT: pextrb $12, %xmm0, %eax 489; SSE42-NEXT: andb $1, %al 490; SSE42-NEXT: movb %al, (%rdi) 491; SSE42-NEXT: pextrb $11, %xmm0, %eax 492; SSE42-NEXT: andb $1, %al 493; SSE42-NEXT: movb %al, (%rdi) 494; SSE42-NEXT: pextrb $10, %xmm0, %eax 495; SSE42-NEXT: andb $1, %al 496; SSE42-NEXT: movb %al, (%rdi) 497; SSE42-NEXT: pextrb $9, %xmm0, %eax 498; SSE42-NEXT: andb $1, %al 499; SSE42-NEXT: movb %al, (%rdi) 500; SSE42-NEXT: pextrb $8, %xmm0, %eax 501; SSE42-NEXT: andb $1, %al 502; SSE42-NEXT: movb %al, (%rdi) 503; SSE42-NEXT: pextrb $7, %xmm0, %eax 504; SSE42-NEXT: andb $1, %al 505; SSE42-NEXT: movb %al, (%rdi) 506; SSE42-NEXT: pextrb $6, %xmm0, %eax 507; SSE42-NEXT: andb $1, %al 508; SSE42-NEXT: movb %al, (%rdi) 509; SSE42-NEXT: pextrb $5, %xmm0, %eax 510; SSE42-NEXT: andb $1, %al 511; SSE42-NEXT: movb %al, (%rdi) 512; SSE42-NEXT: pextrb $4, %xmm0, %eax 513; SSE42-NEXT: andb $1, %al 514; SSE42-NEXT: movb %al, (%rdi) 515; SSE42-NEXT: pextrb $3, %xmm0, %eax 516; SSE42-NEXT: andb $1, %al 517; SSE42-NEXT: movb %al, (%rdi) 518; SSE42-NEXT: pextrb $2, %xmm0, %eax 519; SSE42-NEXT: andb $1, %al 520; SSE42-NEXT: movb %al, (%rdi) 521; SSE42-NEXT: pextrb $1, %xmm0, %eax 522; SSE42-NEXT: andb $1, %al 523; SSE42-NEXT: movb %al, (%rdi) 524; SSE42-NEXT: pextrb $0, %xmm0, %eax 525; SSE42-NEXT: andb $1, %al 526; SSE42-NEXT: movb %al, (%rdi) 527; SSE42-NEXT: movq %rdi, %rax 528; SSE42-NEXT: retq 529; 530; AVX1-LABEL: test_cmp_v32i8: 531; AVX1: # BB#0: 532; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 533; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 534; AVX1-NEXT: vpcmpgtb %xmm2, %xmm3, %xmm2 535; AVX1-NEXT: vpcmpgtb %xmm1, %xmm0, %xmm0 536; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 537; AVX1-NEXT: retq 538; 539; AVX2-LABEL: test_cmp_v32i8: 540; AVX2: # BB#0: 541; AVX2-NEXT: vpcmpgtb %ymm1, %ymm0, %ymm0 542; AVX2-NEXT: retq 543; 544; AVX512-LABEL: test_cmp_v32i8: 545; AVX512: # BB#0: 546; AVX512-NEXT: vpcmpgtb %ymm1, %ymm0, %ymm0 547; AVX512-NEXT: retq 548 %1 = icmp sgt <32 x i8> %a0, %a1 549 ret <32 x i1> %1 550} 551 552; 553; 512-bit vector comparisons 554; 555 556define <8 x i1> @test_cmp_v8f64(<8 x double> %a0, <8 x double> %a1) nounwind { 557; SSE-LABEL: test_cmp_v8f64: 558; SSE: # BB#0: 559; SSE-NEXT: cmpltpd %xmm3, %xmm7 560; SSE-NEXT: cmpltpd %xmm2, %xmm6 561; SSE-NEXT: packsswb %xmm7, %xmm6 562; SSE-NEXT: cmpltpd %xmm1, %xmm5 563; SSE-NEXT: cmpltpd %xmm0, %xmm4 564; SSE-NEXT: packsswb %xmm5, %xmm4 565; SSE-NEXT: packsswb %xmm6, %xmm4 566; SSE-NEXT: movdqa %xmm4, %xmm0 567; SSE-NEXT: retq 568; 569; AVX1-LABEL: test_cmp_v8f64: 570; AVX1: # BB#0: 571; AVX1-NEXT: vcmpltpd %ymm1, %ymm3, %ymm1 572; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 573; AVX1-NEXT: vpacksswb %xmm3, %xmm1, %xmm1 574; AVX1-NEXT: vcmpltpd %ymm0, %ymm2, %ymm0 575; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 576; AVX1-NEXT: vpacksswb %xmm2, %xmm0, %xmm0 577; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 578; AVX1-NEXT: vzeroupper 579; AVX1-NEXT: retq 580; 581; AVX2-LABEL: test_cmp_v8f64: 582; AVX2: # BB#0: 583; AVX2-NEXT: vcmpltpd %ymm1, %ymm3, %ymm1 584; AVX2-NEXT: vcmpltpd %ymm0, %ymm2, %ymm0 585; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 586; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 587; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 588; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 589; AVX2-NEXT: vzeroupper 590; AVX2-NEXT: retq 591; 592; AVX512-LABEL: test_cmp_v8f64: 593; AVX512: # BB#0: 594; AVX512-NEXT: vcmpltpd %zmm0, %zmm1, %k1 595; AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 596; AVX512-NEXT: vmovdqa64 %zmm0, %zmm0 {%k1} {z} 597; AVX512-NEXT: vpmovqw %zmm0, %xmm0 598; AVX512-NEXT: retq 599 %1 = fcmp ogt <8 x double> %a0, %a1 600 ret <8 x i1> %1 601} 602 603define <16 x i1> @test_cmp_v16f32(<16 x float> %a0, <16 x float> %a1) nounwind { 604; SSE-LABEL: test_cmp_v16f32: 605; SSE: # BB#0: 606; SSE-NEXT: cmpltps %xmm3, %xmm7 607; SSE-NEXT: cmpltps %xmm2, %xmm6 608; SSE-NEXT: packsswb %xmm7, %xmm6 609; SSE-NEXT: cmpltps %xmm1, %xmm5 610; SSE-NEXT: cmpltps %xmm0, %xmm4 611; SSE-NEXT: packsswb %xmm5, %xmm4 612; SSE-NEXT: packsswb %xmm6, %xmm4 613; SSE-NEXT: movdqa %xmm4, %xmm0 614; SSE-NEXT: retq 615; 616; AVX1-LABEL: test_cmp_v16f32: 617; AVX1: # BB#0: 618; AVX1-NEXT: vcmpltps %ymm1, %ymm3, %ymm1 619; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 620; AVX1-NEXT: vpacksswb %xmm3, %xmm1, %xmm1 621; AVX1-NEXT: vcmpltps %ymm0, %ymm2, %ymm0 622; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 623; AVX1-NEXT: vpacksswb %xmm2, %xmm0, %xmm0 624; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 625; AVX1-NEXT: vzeroupper 626; AVX1-NEXT: retq 627; 628; AVX2-LABEL: test_cmp_v16f32: 629; AVX2: # BB#0: 630; AVX2-NEXT: vcmpltps %ymm1, %ymm3, %ymm1 631; AVX2-NEXT: vcmpltps %ymm0, %ymm2, %ymm0 632; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 633; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 634; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 635; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 636; AVX2-NEXT: vzeroupper 637; AVX2-NEXT: retq 638; 639; AVX512-LABEL: test_cmp_v16f32: 640; AVX512: # BB#0: 641; AVX512-NEXT: vcmpltps %zmm0, %zmm1, %k1 642; AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 643; AVX512-NEXT: vmovdqa32 %zmm0, %zmm0 {%k1} {z} 644; AVX512-NEXT: vpmovdb %zmm0, %xmm0 645; AVX512-NEXT: retq 646 %1 = fcmp ogt <16 x float> %a0, %a1 647 ret <16 x i1> %1 648} 649 650define <8 x i1> @test_cmp_v8i64(<8 x i64> %a0, <8 x i64> %a1) nounwind { 651; SSE2-LABEL: test_cmp_v8i64: 652; SSE2: # BB#0: 653; SSE2-NEXT: movdqa {{.*#+}} xmm8 = [2147483648,0,2147483648,0] 654; SSE2-NEXT: pxor %xmm8, %xmm7 655; SSE2-NEXT: pxor %xmm8, %xmm3 656; SSE2-NEXT: movdqa %xmm3, %xmm9 657; SSE2-NEXT: pcmpgtd %xmm7, %xmm9 658; SSE2-NEXT: pshufd {{.*#+}} xmm10 = xmm9[0,0,2,2] 659; SSE2-NEXT: pcmpeqd %xmm7, %xmm3 660; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3] 661; SSE2-NEXT: pand %xmm10, %xmm3 662; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm9[1,1,3,3] 663; SSE2-NEXT: por %xmm3, %xmm7 664; SSE2-NEXT: pxor %xmm8, %xmm6 665; SSE2-NEXT: pxor %xmm8, %xmm2 666; SSE2-NEXT: movdqa %xmm2, %xmm3 667; SSE2-NEXT: pcmpgtd %xmm6, %xmm3 668; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm3[0,0,2,2] 669; SSE2-NEXT: pcmpeqd %xmm6, %xmm2 670; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm2[1,1,3,3] 671; SSE2-NEXT: pand %xmm9, %xmm6 672; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm3[1,1,3,3] 673; SSE2-NEXT: por %xmm6, %xmm2 674; SSE2-NEXT: packsswb %xmm7, %xmm2 675; SSE2-NEXT: pxor %xmm8, %xmm5 676; SSE2-NEXT: pxor %xmm8, %xmm1 677; SSE2-NEXT: movdqa %xmm1, %xmm3 678; SSE2-NEXT: pcmpgtd %xmm5, %xmm3 679; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm3[0,0,2,2] 680; SSE2-NEXT: pcmpeqd %xmm5, %xmm1 681; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3] 682; SSE2-NEXT: pand %xmm6, %xmm1 683; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3] 684; SSE2-NEXT: por %xmm1, %xmm3 685; SSE2-NEXT: pxor %xmm8, %xmm4 686; SSE2-NEXT: pxor %xmm8, %xmm0 687; SSE2-NEXT: movdqa %xmm0, %xmm1 688; SSE2-NEXT: pcmpgtd %xmm4, %xmm1 689; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm1[0,0,2,2] 690; SSE2-NEXT: pcmpeqd %xmm4, %xmm0 691; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,1,3,3] 692; SSE2-NEXT: pand %xmm5, %xmm4 693; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3] 694; SSE2-NEXT: por %xmm4, %xmm0 695; SSE2-NEXT: packsswb %xmm3, %xmm0 696; SSE2-NEXT: packsswb %xmm2, %xmm0 697; SSE2-NEXT: retq 698; 699; SSE42-LABEL: test_cmp_v8i64: 700; SSE42: # BB#0: 701; SSE42-NEXT: pcmpgtq %xmm7, %xmm3 702; SSE42-NEXT: pcmpgtq %xmm6, %xmm2 703; SSE42-NEXT: packsswb %xmm3, %xmm2 704; SSE42-NEXT: pcmpgtq %xmm5, %xmm1 705; SSE42-NEXT: pcmpgtq %xmm4, %xmm0 706; SSE42-NEXT: packsswb %xmm1, %xmm0 707; SSE42-NEXT: packsswb %xmm2, %xmm0 708; SSE42-NEXT: retq 709; 710; AVX1-LABEL: test_cmp_v8i64: 711; AVX1: # BB#0: 712; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4 713; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5 714; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4 715; AVX1-NEXT: vpcmpgtq %xmm3, %xmm1, %xmm1 716; AVX1-NEXT: vpacksswb %xmm4, %xmm1, %xmm1 717; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm3 718; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4 719; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm3 720; AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm0 721; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 722; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 723; AVX1-NEXT: vzeroupper 724; AVX1-NEXT: retq 725; 726; AVX2-LABEL: test_cmp_v8i64: 727; AVX2: # BB#0: 728; AVX2-NEXT: vpcmpgtq %ymm3, %ymm1, %ymm1 729; AVX2-NEXT: vpcmpgtq %ymm2, %ymm0, %ymm0 730; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 731; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 732; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 733; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 734; AVX2-NEXT: vzeroupper 735; AVX2-NEXT: retq 736; 737; AVX512-LABEL: test_cmp_v8i64: 738; AVX512: # BB#0: 739; AVX512-NEXT: vpcmpgtq %zmm1, %zmm0, %k1 740; AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 741; AVX512-NEXT: vmovdqa64 %zmm0, %zmm0 {%k1} {z} 742; AVX512-NEXT: vpmovqw %zmm0, %xmm0 743; AVX512-NEXT: retq 744 %1 = icmp sgt <8 x i64> %a0, %a1 745 ret <8 x i1> %1 746} 747 748define <16 x i1> @test_cmp_v16i32(<16 x i32> %a0, <16 x i32> %a1) nounwind { 749; SSE-LABEL: test_cmp_v16i32: 750; SSE: # BB#0: 751; SSE-NEXT: pcmpgtd %xmm7, %xmm3 752; SSE-NEXT: pcmpgtd %xmm6, %xmm2 753; SSE-NEXT: packsswb %xmm3, %xmm2 754; SSE-NEXT: pcmpgtd %xmm5, %xmm1 755; SSE-NEXT: pcmpgtd %xmm4, %xmm0 756; SSE-NEXT: packsswb %xmm1, %xmm0 757; SSE-NEXT: packsswb %xmm2, %xmm0 758; SSE-NEXT: retq 759; 760; AVX1-LABEL: test_cmp_v16i32: 761; AVX1: # BB#0: 762; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4 763; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5 764; AVX1-NEXT: vpcmpgtd %xmm4, %xmm5, %xmm4 765; AVX1-NEXT: vpcmpgtd %xmm3, %xmm1, %xmm1 766; AVX1-NEXT: vpacksswb %xmm4, %xmm1, %xmm1 767; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm3 768; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4 769; AVX1-NEXT: vpcmpgtd %xmm3, %xmm4, %xmm3 770; AVX1-NEXT: vpcmpgtd %xmm2, %xmm0, %xmm0 771; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 772; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 773; AVX1-NEXT: vzeroupper 774; AVX1-NEXT: retq 775; 776; AVX2-LABEL: test_cmp_v16i32: 777; AVX2: # BB#0: 778; AVX2-NEXT: vpcmpgtd %ymm3, %ymm1, %ymm1 779; AVX2-NEXT: vpcmpgtd %ymm2, %ymm0, %ymm0 780; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 781; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 782; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 783; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 784; AVX2-NEXT: vzeroupper 785; AVX2-NEXT: retq 786; 787; AVX512-LABEL: test_cmp_v16i32: 788; AVX512: # BB#0: 789; AVX512-NEXT: vpcmpgtd %zmm1, %zmm0, %k1 790; AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 791; AVX512-NEXT: vmovdqa32 %zmm0, %zmm0 {%k1} {z} 792; AVX512-NEXT: vpmovdb %zmm0, %xmm0 793; AVX512-NEXT: retq 794 %1 = icmp sgt <16 x i32> %a0, %a1 795 ret <16 x i1> %1 796} 797 798define <32 x i1> @test_cmp_v32i16(<32 x i16> %a0, <32 x i16> %a1) nounwind { 799; SSE2-LABEL: test_cmp_v32i16: 800; SSE2: # BB#0: 801; SSE2-NEXT: pcmpgtw %xmm5, %xmm1 802; SSE2-NEXT: movdqa {{.*#+}} xmm5 = [255,255,255,255,255,255,255,255] 803; SSE2-NEXT: pand %xmm5, %xmm1 804; SSE2-NEXT: pcmpgtw %xmm4, %xmm0 805; SSE2-NEXT: pand %xmm5, %xmm0 806; SSE2-NEXT: packuswb %xmm1, %xmm0 807; SSE2-NEXT: pcmpgtw %xmm7, %xmm3 808; SSE2-NEXT: pand %xmm5, %xmm3 809; SSE2-NEXT: pcmpgtw %xmm6, %xmm2 810; SSE2-NEXT: pand %xmm5, %xmm2 811; SSE2-NEXT: packuswb %xmm3, %xmm2 812; SSE2-NEXT: movdqa %xmm2, -{{[0-9]+}}(%rsp) 813; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 814; SSE2-NEXT: andb $1, %al 815; SSE2-NEXT: movb %al, 2(%rdi) 816; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 817; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 818; SSE2-NEXT: andb $1, %al 819; SSE2-NEXT: movb %al, (%rdi) 820; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 821; SSE2-NEXT: andb $1, %al 822; SSE2-NEXT: movb %al, 2(%rdi) 823; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 824; SSE2-NEXT: andb $1, %al 825; SSE2-NEXT: movb %al, (%rdi) 826; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 827; SSE2-NEXT: andb $1, %al 828; SSE2-NEXT: movb %al, 2(%rdi) 829; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 830; SSE2-NEXT: andb $1, %al 831; SSE2-NEXT: movb %al, (%rdi) 832; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 833; SSE2-NEXT: andb $1, %al 834; SSE2-NEXT: movb %al, 2(%rdi) 835; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 836; SSE2-NEXT: andb $1, %al 837; SSE2-NEXT: movb %al, (%rdi) 838; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 839; SSE2-NEXT: andb $1, %al 840; SSE2-NEXT: movb %al, 2(%rdi) 841; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 842; SSE2-NEXT: andb $1, %al 843; SSE2-NEXT: movb %al, (%rdi) 844; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 845; SSE2-NEXT: andb $1, %al 846; SSE2-NEXT: movb %al, 2(%rdi) 847; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 848; SSE2-NEXT: andb $1, %al 849; SSE2-NEXT: movb %al, (%rdi) 850; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 851; SSE2-NEXT: andb $1, %al 852; SSE2-NEXT: movb %al, 2(%rdi) 853; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 854; SSE2-NEXT: andb $1, %al 855; SSE2-NEXT: movb %al, (%rdi) 856; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 857; SSE2-NEXT: andb $1, %al 858; SSE2-NEXT: movb %al, 2(%rdi) 859; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 860; SSE2-NEXT: andb $1, %al 861; SSE2-NEXT: movb %al, (%rdi) 862; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 863; SSE2-NEXT: andb $1, %al 864; SSE2-NEXT: movb %al, 2(%rdi) 865; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 866; SSE2-NEXT: andb $1, %al 867; SSE2-NEXT: movb %al, (%rdi) 868; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 869; SSE2-NEXT: andb $1, %al 870; SSE2-NEXT: movb %al, 2(%rdi) 871; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 872; SSE2-NEXT: andb $1, %al 873; SSE2-NEXT: movb %al, (%rdi) 874; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 875; SSE2-NEXT: andb $1, %al 876; SSE2-NEXT: movb %al, 2(%rdi) 877; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 878; SSE2-NEXT: andb $1, %al 879; SSE2-NEXT: movb %al, (%rdi) 880; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 881; SSE2-NEXT: andb $1, %al 882; SSE2-NEXT: movb %al, 2(%rdi) 883; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 884; SSE2-NEXT: andb $1, %al 885; SSE2-NEXT: movb %al, (%rdi) 886; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 887; SSE2-NEXT: andb $1, %al 888; SSE2-NEXT: movb %al, 2(%rdi) 889; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 890; SSE2-NEXT: andb $1, %al 891; SSE2-NEXT: movb %al, (%rdi) 892; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 893; SSE2-NEXT: andb $1, %al 894; SSE2-NEXT: movb %al, 2(%rdi) 895; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 896; SSE2-NEXT: andb $1, %al 897; SSE2-NEXT: movb %al, (%rdi) 898; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 899; SSE2-NEXT: andb $1, %al 900; SSE2-NEXT: movb %al, 2(%rdi) 901; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 902; SSE2-NEXT: andb $1, %al 903; SSE2-NEXT: movb %al, (%rdi) 904; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 905; SSE2-NEXT: andb $1, %al 906; SSE2-NEXT: movb %al, 2(%rdi) 907; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 908; SSE2-NEXT: andb $1, %al 909; SSE2-NEXT: movb %al, (%rdi) 910; SSE2-NEXT: movq %rdi, %rax 911; SSE2-NEXT: retq 912; 913; SSE42-LABEL: test_cmp_v32i16: 914; SSE42: # BB#0: 915; SSE42-NEXT: pcmpgtw %xmm5, %xmm1 916; SSE42-NEXT: movdqa {{.*#+}} xmm5 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u> 917; SSE42-NEXT: pshufb %xmm5, %xmm1 918; SSE42-NEXT: pcmpgtw %xmm4, %xmm0 919; SSE42-NEXT: pshufb %xmm5, %xmm0 920; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 921; SSE42-NEXT: pcmpgtw %xmm7, %xmm3 922; SSE42-NEXT: pshufb %xmm5, %xmm3 923; SSE42-NEXT: pcmpgtw %xmm6, %xmm2 924; SSE42-NEXT: pshufb %xmm5, %xmm2 925; SSE42-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0] 926; SSE42-NEXT: pextrb $15, %xmm2, %eax 927; SSE42-NEXT: andb $1, %al 928; SSE42-NEXT: movb %al, 2(%rdi) 929; SSE42-NEXT: pextrb $14, %xmm2, %eax 930; SSE42-NEXT: andb $1, %al 931; SSE42-NEXT: movb %al, 2(%rdi) 932; SSE42-NEXT: pextrb $13, %xmm2, %eax 933; SSE42-NEXT: andb $1, %al 934; SSE42-NEXT: movb %al, 2(%rdi) 935; SSE42-NEXT: pextrb $12, %xmm2, %eax 936; SSE42-NEXT: andb $1, %al 937; SSE42-NEXT: movb %al, 2(%rdi) 938; SSE42-NEXT: pextrb $11, %xmm2, %eax 939; SSE42-NEXT: andb $1, %al 940; SSE42-NEXT: movb %al, 2(%rdi) 941; SSE42-NEXT: pextrb $10, %xmm2, %eax 942; SSE42-NEXT: andb $1, %al 943; SSE42-NEXT: movb %al, 2(%rdi) 944; SSE42-NEXT: pextrb $9, %xmm2, %eax 945; SSE42-NEXT: andb $1, %al 946; SSE42-NEXT: movb %al, 2(%rdi) 947; SSE42-NEXT: pextrb $8, %xmm2, %eax 948; SSE42-NEXT: andb $1, %al 949; SSE42-NEXT: movb %al, 2(%rdi) 950; SSE42-NEXT: pextrb $7, %xmm2, %eax 951; SSE42-NEXT: andb $1, %al 952; SSE42-NEXT: movb %al, 2(%rdi) 953; SSE42-NEXT: pextrb $6, %xmm2, %eax 954; SSE42-NEXT: andb $1, %al 955; SSE42-NEXT: movb %al, 2(%rdi) 956; SSE42-NEXT: pextrb $5, %xmm2, %eax 957; SSE42-NEXT: andb $1, %al 958; SSE42-NEXT: movb %al, 2(%rdi) 959; SSE42-NEXT: pextrb $4, %xmm2, %eax 960; SSE42-NEXT: andb $1, %al 961; SSE42-NEXT: movb %al, 2(%rdi) 962; SSE42-NEXT: pextrb $3, %xmm2, %eax 963; SSE42-NEXT: andb $1, %al 964; SSE42-NEXT: movb %al, 2(%rdi) 965; SSE42-NEXT: pextrb $2, %xmm2, %eax 966; SSE42-NEXT: andb $1, %al 967; SSE42-NEXT: movb %al, 2(%rdi) 968; SSE42-NEXT: pextrb $1, %xmm2, %eax 969; SSE42-NEXT: andb $1, %al 970; SSE42-NEXT: movb %al, 2(%rdi) 971; SSE42-NEXT: pextrb $0, %xmm2, %eax 972; SSE42-NEXT: andb $1, %al 973; SSE42-NEXT: movb %al, 2(%rdi) 974; SSE42-NEXT: pextrb $15, %xmm0, %eax 975; SSE42-NEXT: andb $1, %al 976; SSE42-NEXT: movb %al, (%rdi) 977; SSE42-NEXT: pextrb $14, %xmm0, %eax 978; SSE42-NEXT: andb $1, %al 979; SSE42-NEXT: movb %al, (%rdi) 980; SSE42-NEXT: pextrb $13, %xmm0, %eax 981; SSE42-NEXT: andb $1, %al 982; SSE42-NEXT: movb %al, (%rdi) 983; SSE42-NEXT: pextrb $12, %xmm0, %eax 984; SSE42-NEXT: andb $1, %al 985; SSE42-NEXT: movb %al, (%rdi) 986; SSE42-NEXT: pextrb $11, %xmm0, %eax 987; SSE42-NEXT: andb $1, %al 988; SSE42-NEXT: movb %al, (%rdi) 989; SSE42-NEXT: pextrb $10, %xmm0, %eax 990; SSE42-NEXT: andb $1, %al 991; SSE42-NEXT: movb %al, (%rdi) 992; SSE42-NEXT: pextrb $9, %xmm0, %eax 993; SSE42-NEXT: andb $1, %al 994; SSE42-NEXT: movb %al, (%rdi) 995; SSE42-NEXT: pextrb $8, %xmm0, %eax 996; SSE42-NEXT: andb $1, %al 997; SSE42-NEXT: movb %al, (%rdi) 998; SSE42-NEXT: pextrb $7, %xmm0, %eax 999; SSE42-NEXT: andb $1, %al 1000; SSE42-NEXT: movb %al, (%rdi) 1001; SSE42-NEXT: pextrb $6, %xmm0, %eax 1002; SSE42-NEXT: andb $1, %al 1003; SSE42-NEXT: movb %al, (%rdi) 1004; SSE42-NEXT: pextrb $5, %xmm0, %eax 1005; SSE42-NEXT: andb $1, %al 1006; SSE42-NEXT: movb %al, (%rdi) 1007; SSE42-NEXT: pextrb $4, %xmm0, %eax 1008; SSE42-NEXT: andb $1, %al 1009; SSE42-NEXT: movb %al, (%rdi) 1010; SSE42-NEXT: pextrb $3, %xmm0, %eax 1011; SSE42-NEXT: andb $1, %al 1012; SSE42-NEXT: movb %al, (%rdi) 1013; SSE42-NEXT: pextrb $2, %xmm0, %eax 1014; SSE42-NEXT: andb $1, %al 1015; SSE42-NEXT: movb %al, (%rdi) 1016; SSE42-NEXT: pextrb $1, %xmm0, %eax 1017; SSE42-NEXT: andb $1, %al 1018; SSE42-NEXT: movb %al, (%rdi) 1019; SSE42-NEXT: pextrb $0, %xmm0, %eax 1020; SSE42-NEXT: andb $1, %al 1021; SSE42-NEXT: movb %al, (%rdi) 1022; SSE42-NEXT: movq %rdi, %rax 1023; SSE42-NEXT: retq 1024; 1025; AVX1-LABEL: test_cmp_v32i16: 1026; AVX1: # BB#0: 1027; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4 1028; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5 1029; AVX1-NEXT: vpcmpgtw %xmm4, %xmm5, %xmm4 1030; AVX1-NEXT: vpcmpgtw %xmm3, %xmm1, %xmm1 1031; AVX1-NEXT: vpacksswb %xmm4, %xmm1, %xmm1 1032; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm3 1033; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4 1034; AVX1-NEXT: vpcmpgtw %xmm3, %xmm4, %xmm3 1035; AVX1-NEXT: vpcmpgtw %xmm2, %xmm0, %xmm0 1036; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 1037; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 1038; AVX1-NEXT: retq 1039; 1040; AVX2-LABEL: test_cmp_v32i16: 1041; AVX2: # BB#0: 1042; AVX2-NEXT: vpcmpgtw %ymm3, %ymm1, %ymm1 1043; AVX2-NEXT: vpcmpgtw %ymm2, %ymm0, %ymm0 1044; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 1045; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 1046; AVX2-NEXT: retq 1047; 1048; AVX512-LABEL: test_cmp_v32i16: 1049; AVX512: # BB#0: 1050; AVX512-NEXT: vpcmpgtw %ymm2, %ymm0, %ymm0 1051; AVX512-NEXT: vpmovsxwd %ymm0, %zmm0 1052; AVX512-NEXT: vpmovdb %zmm0, %xmm0 1053; AVX512-NEXT: vpcmpgtw %ymm3, %ymm1, %ymm1 1054; AVX512-NEXT: vpmovsxwd %ymm1, %zmm1 1055; AVX512-NEXT: vpmovdb %zmm1, %xmm1 1056; AVX512-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 1057; AVX512-NEXT: retq 1058 %1 = icmp sgt <32 x i16> %a0, %a1 1059 ret <32 x i1> %1 1060} 1061 1062define <64 x i1> @test_cmp_v64i8(<64 x i8> %a0, <64 x i8> %a1) nounwind { 1063; SSE2-LABEL: test_cmp_v64i8: 1064; SSE2: # BB#0: 1065; SSE2-NEXT: pcmpgtb %xmm4, %xmm0 1066; SSE2-NEXT: pcmpgtb %xmm5, %xmm1 1067; SSE2-NEXT: pcmpgtb %xmm6, %xmm2 1068; SSE2-NEXT: pcmpgtb %xmm7, %xmm3 1069; SSE2-NEXT: movdqa %xmm3, -{{[0-9]+}}(%rsp) 1070; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1071; SSE2-NEXT: andb $1, %al 1072; SSE2-NEXT: movb %al, 6(%rdi) 1073; SSE2-NEXT: movdqa %xmm2, -{{[0-9]+}}(%rsp) 1074; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1075; SSE2-NEXT: andb $1, %al 1076; SSE2-NEXT: movb %al, 4(%rdi) 1077; SSE2-NEXT: movdqa %xmm1, -{{[0-9]+}}(%rsp) 1078; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1079; SSE2-NEXT: andb $1, %al 1080; SSE2-NEXT: movb %al, 2(%rdi) 1081; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 1082; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1083; SSE2-NEXT: andb $1, %al 1084; SSE2-NEXT: movb %al, (%rdi) 1085; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1086; SSE2-NEXT: andb $1, %al 1087; SSE2-NEXT: movb %al, 6(%rdi) 1088; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1089; SSE2-NEXT: andb $1, %al 1090; SSE2-NEXT: movb %al, 4(%rdi) 1091; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1092; SSE2-NEXT: andb $1, %al 1093; SSE2-NEXT: movb %al, 2(%rdi) 1094; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1095; SSE2-NEXT: andb $1, %al 1096; SSE2-NEXT: movb %al, (%rdi) 1097; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1098; SSE2-NEXT: andb $1, %al 1099; SSE2-NEXT: movb %al, 6(%rdi) 1100; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1101; SSE2-NEXT: andb $1, %al 1102; SSE2-NEXT: movb %al, 4(%rdi) 1103; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1104; SSE2-NEXT: andb $1, %al 1105; SSE2-NEXT: movb %al, 2(%rdi) 1106; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1107; SSE2-NEXT: andb $1, %al 1108; SSE2-NEXT: movb %al, (%rdi) 1109; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1110; SSE2-NEXT: andb $1, %al 1111; SSE2-NEXT: movb %al, 6(%rdi) 1112; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1113; SSE2-NEXT: andb $1, %al 1114; SSE2-NEXT: movb %al, 4(%rdi) 1115; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1116; SSE2-NEXT: andb $1, %al 1117; SSE2-NEXT: movb %al, 2(%rdi) 1118; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1119; SSE2-NEXT: andb $1, %al 1120; SSE2-NEXT: movb %al, (%rdi) 1121; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1122; SSE2-NEXT: andb $1, %al 1123; SSE2-NEXT: movb %al, 6(%rdi) 1124; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1125; SSE2-NEXT: andb $1, %al 1126; SSE2-NEXT: movb %al, 4(%rdi) 1127; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1128; SSE2-NEXT: andb $1, %al 1129; SSE2-NEXT: movb %al, 2(%rdi) 1130; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1131; SSE2-NEXT: andb $1, %al 1132; SSE2-NEXT: movb %al, (%rdi) 1133; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1134; SSE2-NEXT: andb $1, %al 1135; SSE2-NEXT: movb %al, 6(%rdi) 1136; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1137; SSE2-NEXT: andb $1, %al 1138; SSE2-NEXT: movb %al, 4(%rdi) 1139; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1140; SSE2-NEXT: andb $1, %al 1141; SSE2-NEXT: movb %al, 2(%rdi) 1142; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1143; SSE2-NEXT: andb $1, %al 1144; SSE2-NEXT: movb %al, (%rdi) 1145; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1146; SSE2-NEXT: andb $1, %al 1147; SSE2-NEXT: movb %al, 6(%rdi) 1148; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1149; SSE2-NEXT: andb $1, %al 1150; SSE2-NEXT: movb %al, 4(%rdi) 1151; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1152; SSE2-NEXT: andb $1, %al 1153; SSE2-NEXT: movb %al, 2(%rdi) 1154; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1155; SSE2-NEXT: andb $1, %al 1156; SSE2-NEXT: movb %al, (%rdi) 1157; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1158; SSE2-NEXT: andb $1, %al 1159; SSE2-NEXT: movb %al, 6(%rdi) 1160; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1161; SSE2-NEXT: andb $1, %al 1162; SSE2-NEXT: movb %al, 4(%rdi) 1163; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1164; SSE2-NEXT: andb $1, %al 1165; SSE2-NEXT: movb %al, 2(%rdi) 1166; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1167; SSE2-NEXT: andb $1, %al 1168; SSE2-NEXT: movb %al, (%rdi) 1169; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1170; SSE2-NEXT: andb $1, %al 1171; SSE2-NEXT: movb %al, 6(%rdi) 1172; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1173; SSE2-NEXT: andb $1, %al 1174; SSE2-NEXT: movb %al, 4(%rdi) 1175; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1176; SSE2-NEXT: andb $1, %al 1177; SSE2-NEXT: movb %al, 2(%rdi) 1178; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1179; SSE2-NEXT: andb $1, %al 1180; SSE2-NEXT: movb %al, (%rdi) 1181; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1182; SSE2-NEXT: andb $1, %al 1183; SSE2-NEXT: movb %al, 6(%rdi) 1184; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1185; SSE2-NEXT: andb $1, %al 1186; SSE2-NEXT: movb %al, 4(%rdi) 1187; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1188; SSE2-NEXT: andb $1, %al 1189; SSE2-NEXT: movb %al, 2(%rdi) 1190; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1191; SSE2-NEXT: andb $1, %al 1192; SSE2-NEXT: movb %al, (%rdi) 1193; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1194; SSE2-NEXT: andb $1, %al 1195; SSE2-NEXT: movb %al, 6(%rdi) 1196; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1197; SSE2-NEXT: andb $1, %al 1198; SSE2-NEXT: movb %al, 4(%rdi) 1199; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1200; SSE2-NEXT: andb $1, %al 1201; SSE2-NEXT: movb %al, 2(%rdi) 1202; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1203; SSE2-NEXT: andb $1, %al 1204; SSE2-NEXT: movb %al, (%rdi) 1205; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1206; SSE2-NEXT: andb $1, %al 1207; SSE2-NEXT: movb %al, 6(%rdi) 1208; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1209; SSE2-NEXT: andb $1, %al 1210; SSE2-NEXT: movb %al, 4(%rdi) 1211; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1212; SSE2-NEXT: andb $1, %al 1213; SSE2-NEXT: movb %al, 2(%rdi) 1214; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1215; SSE2-NEXT: andb $1, %al 1216; SSE2-NEXT: movb %al, (%rdi) 1217; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1218; SSE2-NEXT: andb $1, %al 1219; SSE2-NEXT: movb %al, 6(%rdi) 1220; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1221; SSE2-NEXT: andb $1, %al 1222; SSE2-NEXT: movb %al, 4(%rdi) 1223; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1224; SSE2-NEXT: andb $1, %al 1225; SSE2-NEXT: movb %al, 2(%rdi) 1226; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1227; SSE2-NEXT: andb $1, %al 1228; SSE2-NEXT: movb %al, (%rdi) 1229; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1230; SSE2-NEXT: andb $1, %al 1231; SSE2-NEXT: movb %al, 6(%rdi) 1232; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1233; SSE2-NEXT: andb $1, %al 1234; SSE2-NEXT: movb %al, 4(%rdi) 1235; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1236; SSE2-NEXT: andb $1, %al 1237; SSE2-NEXT: movb %al, 2(%rdi) 1238; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1239; SSE2-NEXT: andb $1, %al 1240; SSE2-NEXT: movb %al, (%rdi) 1241; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1242; SSE2-NEXT: andb $1, %al 1243; SSE2-NEXT: movb %al, 6(%rdi) 1244; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1245; SSE2-NEXT: andb $1, %al 1246; SSE2-NEXT: movb %al, 4(%rdi) 1247; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1248; SSE2-NEXT: andb $1, %al 1249; SSE2-NEXT: movb %al, 2(%rdi) 1250; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1251; SSE2-NEXT: andb $1, %al 1252; SSE2-NEXT: movb %al, (%rdi) 1253; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1254; SSE2-NEXT: andb $1, %al 1255; SSE2-NEXT: movb %al, 6(%rdi) 1256; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1257; SSE2-NEXT: andb $1, %al 1258; SSE2-NEXT: movb %al, 4(%rdi) 1259; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1260; SSE2-NEXT: andb $1, %al 1261; SSE2-NEXT: movb %al, 2(%rdi) 1262; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 1263; SSE2-NEXT: andb $1, %al 1264; SSE2-NEXT: movb %al, (%rdi) 1265; SSE2-NEXT: movq %rdi, %rax 1266; SSE2-NEXT: retq 1267; 1268; SSE42-LABEL: test_cmp_v64i8: 1269; SSE42: # BB#0: 1270; SSE42-NEXT: pcmpgtb %xmm4, %xmm0 1271; SSE42-NEXT: pcmpgtb %xmm5, %xmm1 1272; SSE42-NEXT: pcmpgtb %xmm6, %xmm2 1273; SSE42-NEXT: pcmpgtb %xmm7, %xmm3 1274; SSE42-NEXT: pextrb $15, %xmm3, %eax 1275; SSE42-NEXT: andb $1, %al 1276; SSE42-NEXT: movb %al, 6(%rdi) 1277; SSE42-NEXT: pextrb $14, %xmm3, %eax 1278; SSE42-NEXT: andb $1, %al 1279; SSE42-NEXT: movb %al, 6(%rdi) 1280; SSE42-NEXT: pextrb $13, %xmm3, %eax 1281; SSE42-NEXT: andb $1, %al 1282; SSE42-NEXT: movb %al, 6(%rdi) 1283; SSE42-NEXT: pextrb $12, %xmm3, %eax 1284; SSE42-NEXT: andb $1, %al 1285; SSE42-NEXT: movb %al, 6(%rdi) 1286; SSE42-NEXT: pextrb $11, %xmm3, %eax 1287; SSE42-NEXT: andb $1, %al 1288; SSE42-NEXT: movb %al, 6(%rdi) 1289; SSE42-NEXT: pextrb $10, %xmm3, %eax 1290; SSE42-NEXT: andb $1, %al 1291; SSE42-NEXT: movb %al, 6(%rdi) 1292; SSE42-NEXT: pextrb $9, %xmm3, %eax 1293; SSE42-NEXT: andb $1, %al 1294; SSE42-NEXT: movb %al, 6(%rdi) 1295; SSE42-NEXT: pextrb $8, %xmm3, %eax 1296; SSE42-NEXT: andb $1, %al 1297; SSE42-NEXT: movb %al, 6(%rdi) 1298; SSE42-NEXT: pextrb $7, %xmm3, %eax 1299; SSE42-NEXT: andb $1, %al 1300; SSE42-NEXT: movb %al, 6(%rdi) 1301; SSE42-NEXT: pextrb $6, %xmm3, %eax 1302; SSE42-NEXT: andb $1, %al 1303; SSE42-NEXT: movb %al, 6(%rdi) 1304; SSE42-NEXT: pextrb $5, %xmm3, %eax 1305; SSE42-NEXT: andb $1, %al 1306; SSE42-NEXT: movb %al, 6(%rdi) 1307; SSE42-NEXT: pextrb $4, %xmm3, %eax 1308; SSE42-NEXT: andb $1, %al 1309; SSE42-NEXT: movb %al, 6(%rdi) 1310; SSE42-NEXT: pextrb $3, %xmm3, %eax 1311; SSE42-NEXT: andb $1, %al 1312; SSE42-NEXT: movb %al, 6(%rdi) 1313; SSE42-NEXT: pextrb $2, %xmm3, %eax 1314; SSE42-NEXT: andb $1, %al 1315; SSE42-NEXT: movb %al, 6(%rdi) 1316; SSE42-NEXT: pextrb $1, %xmm3, %eax 1317; SSE42-NEXT: andb $1, %al 1318; SSE42-NEXT: movb %al, 6(%rdi) 1319; SSE42-NEXT: pextrb $0, %xmm3, %eax 1320; SSE42-NEXT: andb $1, %al 1321; SSE42-NEXT: movb %al, 6(%rdi) 1322; SSE42-NEXT: pextrb $15, %xmm2, %eax 1323; SSE42-NEXT: andb $1, %al 1324; SSE42-NEXT: movb %al, 4(%rdi) 1325; SSE42-NEXT: pextrb $14, %xmm2, %eax 1326; SSE42-NEXT: andb $1, %al 1327; SSE42-NEXT: movb %al, 4(%rdi) 1328; SSE42-NEXT: pextrb $13, %xmm2, %eax 1329; SSE42-NEXT: andb $1, %al 1330; SSE42-NEXT: movb %al, 4(%rdi) 1331; SSE42-NEXT: pextrb $12, %xmm2, %eax 1332; SSE42-NEXT: andb $1, %al 1333; SSE42-NEXT: movb %al, 4(%rdi) 1334; SSE42-NEXT: pextrb $11, %xmm2, %eax 1335; SSE42-NEXT: andb $1, %al 1336; SSE42-NEXT: movb %al, 4(%rdi) 1337; SSE42-NEXT: pextrb $10, %xmm2, %eax 1338; SSE42-NEXT: andb $1, %al 1339; SSE42-NEXT: movb %al, 4(%rdi) 1340; SSE42-NEXT: pextrb $9, %xmm2, %eax 1341; SSE42-NEXT: andb $1, %al 1342; SSE42-NEXT: movb %al, 4(%rdi) 1343; SSE42-NEXT: pextrb $8, %xmm2, %eax 1344; SSE42-NEXT: andb $1, %al 1345; SSE42-NEXT: movb %al, 4(%rdi) 1346; SSE42-NEXT: pextrb $7, %xmm2, %eax 1347; SSE42-NEXT: andb $1, %al 1348; SSE42-NEXT: movb %al, 4(%rdi) 1349; SSE42-NEXT: pextrb $6, %xmm2, %eax 1350; SSE42-NEXT: andb $1, %al 1351; SSE42-NEXT: movb %al, 4(%rdi) 1352; SSE42-NEXT: pextrb $5, %xmm2, %eax 1353; SSE42-NEXT: andb $1, %al 1354; SSE42-NEXT: movb %al, 4(%rdi) 1355; SSE42-NEXT: pextrb $4, %xmm2, %eax 1356; SSE42-NEXT: andb $1, %al 1357; SSE42-NEXT: movb %al, 4(%rdi) 1358; SSE42-NEXT: pextrb $3, %xmm2, %eax 1359; SSE42-NEXT: andb $1, %al 1360; SSE42-NEXT: movb %al, 4(%rdi) 1361; SSE42-NEXT: pextrb $2, %xmm2, %eax 1362; SSE42-NEXT: andb $1, %al 1363; SSE42-NEXT: movb %al, 4(%rdi) 1364; SSE42-NEXT: pextrb $1, %xmm2, %eax 1365; SSE42-NEXT: andb $1, %al 1366; SSE42-NEXT: movb %al, 4(%rdi) 1367; SSE42-NEXT: pextrb $0, %xmm2, %eax 1368; SSE42-NEXT: andb $1, %al 1369; SSE42-NEXT: movb %al, 4(%rdi) 1370; SSE42-NEXT: pextrb $15, %xmm1, %eax 1371; SSE42-NEXT: andb $1, %al 1372; SSE42-NEXT: movb %al, 2(%rdi) 1373; SSE42-NEXT: pextrb $14, %xmm1, %eax 1374; SSE42-NEXT: andb $1, %al 1375; SSE42-NEXT: movb %al, 2(%rdi) 1376; SSE42-NEXT: pextrb $13, %xmm1, %eax 1377; SSE42-NEXT: andb $1, %al 1378; SSE42-NEXT: movb %al, 2(%rdi) 1379; SSE42-NEXT: pextrb $12, %xmm1, %eax 1380; SSE42-NEXT: andb $1, %al 1381; SSE42-NEXT: movb %al, 2(%rdi) 1382; SSE42-NEXT: pextrb $11, %xmm1, %eax 1383; SSE42-NEXT: andb $1, %al 1384; SSE42-NEXT: movb %al, 2(%rdi) 1385; SSE42-NEXT: pextrb $10, %xmm1, %eax 1386; SSE42-NEXT: andb $1, %al 1387; SSE42-NEXT: movb %al, 2(%rdi) 1388; SSE42-NEXT: pextrb $9, %xmm1, %eax 1389; SSE42-NEXT: andb $1, %al 1390; SSE42-NEXT: movb %al, 2(%rdi) 1391; SSE42-NEXT: pextrb $8, %xmm1, %eax 1392; SSE42-NEXT: andb $1, %al 1393; SSE42-NEXT: movb %al, 2(%rdi) 1394; SSE42-NEXT: pextrb $7, %xmm1, %eax 1395; SSE42-NEXT: andb $1, %al 1396; SSE42-NEXT: movb %al, 2(%rdi) 1397; SSE42-NEXT: pextrb $6, %xmm1, %eax 1398; SSE42-NEXT: andb $1, %al 1399; SSE42-NEXT: movb %al, 2(%rdi) 1400; SSE42-NEXT: pextrb $5, %xmm1, %eax 1401; SSE42-NEXT: andb $1, %al 1402; SSE42-NEXT: movb %al, 2(%rdi) 1403; SSE42-NEXT: pextrb $4, %xmm1, %eax 1404; SSE42-NEXT: andb $1, %al 1405; SSE42-NEXT: movb %al, 2(%rdi) 1406; SSE42-NEXT: pextrb $3, %xmm1, %eax 1407; SSE42-NEXT: andb $1, %al 1408; SSE42-NEXT: movb %al, 2(%rdi) 1409; SSE42-NEXT: pextrb $2, %xmm1, %eax 1410; SSE42-NEXT: andb $1, %al 1411; SSE42-NEXT: movb %al, 2(%rdi) 1412; SSE42-NEXT: pextrb $1, %xmm1, %eax 1413; SSE42-NEXT: andb $1, %al 1414; SSE42-NEXT: movb %al, 2(%rdi) 1415; SSE42-NEXT: pextrb $0, %xmm1, %eax 1416; SSE42-NEXT: andb $1, %al 1417; SSE42-NEXT: movb %al, 2(%rdi) 1418; SSE42-NEXT: pextrb $15, %xmm0, %eax 1419; SSE42-NEXT: andb $1, %al 1420; SSE42-NEXT: movb %al, (%rdi) 1421; SSE42-NEXT: pextrb $14, %xmm0, %eax 1422; SSE42-NEXT: andb $1, %al 1423; SSE42-NEXT: movb %al, (%rdi) 1424; SSE42-NEXT: pextrb $13, %xmm0, %eax 1425; SSE42-NEXT: andb $1, %al 1426; SSE42-NEXT: movb %al, (%rdi) 1427; SSE42-NEXT: pextrb $12, %xmm0, %eax 1428; SSE42-NEXT: andb $1, %al 1429; SSE42-NEXT: movb %al, (%rdi) 1430; SSE42-NEXT: pextrb $11, %xmm0, %eax 1431; SSE42-NEXT: andb $1, %al 1432; SSE42-NEXT: movb %al, (%rdi) 1433; SSE42-NEXT: pextrb $10, %xmm0, %eax 1434; SSE42-NEXT: andb $1, %al 1435; SSE42-NEXT: movb %al, (%rdi) 1436; SSE42-NEXT: pextrb $9, %xmm0, %eax 1437; SSE42-NEXT: andb $1, %al 1438; SSE42-NEXT: movb %al, (%rdi) 1439; SSE42-NEXT: pextrb $8, %xmm0, %eax 1440; SSE42-NEXT: andb $1, %al 1441; SSE42-NEXT: movb %al, (%rdi) 1442; SSE42-NEXT: pextrb $7, %xmm0, %eax 1443; SSE42-NEXT: andb $1, %al 1444; SSE42-NEXT: movb %al, (%rdi) 1445; SSE42-NEXT: pextrb $6, %xmm0, %eax 1446; SSE42-NEXT: andb $1, %al 1447; SSE42-NEXT: movb %al, (%rdi) 1448; SSE42-NEXT: pextrb $5, %xmm0, %eax 1449; SSE42-NEXT: andb $1, %al 1450; SSE42-NEXT: movb %al, (%rdi) 1451; SSE42-NEXT: pextrb $4, %xmm0, %eax 1452; SSE42-NEXT: andb $1, %al 1453; SSE42-NEXT: movb %al, (%rdi) 1454; SSE42-NEXT: pextrb $3, %xmm0, %eax 1455; SSE42-NEXT: andb $1, %al 1456; SSE42-NEXT: movb %al, (%rdi) 1457; SSE42-NEXT: pextrb $2, %xmm0, %eax 1458; SSE42-NEXT: andb $1, %al 1459; SSE42-NEXT: movb %al, (%rdi) 1460; SSE42-NEXT: pextrb $1, %xmm0, %eax 1461; SSE42-NEXT: andb $1, %al 1462; SSE42-NEXT: movb %al, (%rdi) 1463; SSE42-NEXT: pextrb $0, %xmm0, %eax 1464; SSE42-NEXT: andb $1, %al 1465; SSE42-NEXT: movb %al, (%rdi) 1466; SSE42-NEXT: movq %rdi, %rax 1467; SSE42-NEXT: retq 1468; 1469; AVX1-LABEL: test_cmp_v64i8: 1470; AVX1: # BB#0: 1471; AVX1-NEXT: vpcmpgtb %xmm2, %xmm0, %xmm4 1472; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm2 1473; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 1474; AVX1-NEXT: vpcmpgtb %xmm2, %xmm0, %xmm0 1475; AVX1-NEXT: vpcmpgtb %xmm3, %xmm1, %xmm2 1476; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm3 1477; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1 1478; AVX1-NEXT: vpcmpgtb %xmm3, %xmm1, %xmm1 1479; AVX1-NEXT: vpextrb $15, %xmm1, %eax 1480; AVX1-NEXT: andb $1, %al 1481; AVX1-NEXT: movb %al, 4(%rdi) 1482; AVX1-NEXT: vpextrb $14, %xmm1, %eax 1483; AVX1-NEXT: andb $1, %al 1484; AVX1-NEXT: movb %al, 4(%rdi) 1485; AVX1-NEXT: vpextrb $13, %xmm1, %eax 1486; AVX1-NEXT: andb $1, %al 1487; AVX1-NEXT: movb %al, 4(%rdi) 1488; AVX1-NEXT: vpextrb $12, %xmm1, %eax 1489; AVX1-NEXT: andb $1, %al 1490; AVX1-NEXT: movb %al, 4(%rdi) 1491; AVX1-NEXT: vpextrb $11, %xmm1, %eax 1492; AVX1-NEXT: andb $1, %al 1493; AVX1-NEXT: movb %al, 4(%rdi) 1494; AVX1-NEXT: vpextrb $10, %xmm1, %eax 1495; AVX1-NEXT: andb $1, %al 1496; AVX1-NEXT: movb %al, 4(%rdi) 1497; AVX1-NEXT: vpextrb $9, %xmm1, %eax 1498; AVX1-NEXT: andb $1, %al 1499; AVX1-NEXT: movb %al, 4(%rdi) 1500; AVX1-NEXT: vpextrb $8, %xmm1, %eax 1501; AVX1-NEXT: andb $1, %al 1502; AVX1-NEXT: movb %al, 4(%rdi) 1503; AVX1-NEXT: vpextrb $7, %xmm1, %eax 1504; AVX1-NEXT: andb $1, %al 1505; AVX1-NEXT: movb %al, 4(%rdi) 1506; AVX1-NEXT: vpextrb $6, %xmm1, %eax 1507; AVX1-NEXT: andb $1, %al 1508; AVX1-NEXT: movb %al, 4(%rdi) 1509; AVX1-NEXT: vpextrb $5, %xmm1, %eax 1510; AVX1-NEXT: andb $1, %al 1511; AVX1-NEXT: movb %al, 4(%rdi) 1512; AVX1-NEXT: vpextrb $4, %xmm1, %eax 1513; AVX1-NEXT: andb $1, %al 1514; AVX1-NEXT: movb %al, 4(%rdi) 1515; AVX1-NEXT: vpextrb $3, %xmm1, %eax 1516; AVX1-NEXT: andb $1, %al 1517; AVX1-NEXT: movb %al, 4(%rdi) 1518; AVX1-NEXT: vpextrb $2, %xmm1, %eax 1519; AVX1-NEXT: andb $1, %al 1520; AVX1-NEXT: movb %al, 4(%rdi) 1521; AVX1-NEXT: vpextrb $1, %xmm1, %eax 1522; AVX1-NEXT: andb $1, %al 1523; AVX1-NEXT: movb %al, 4(%rdi) 1524; AVX1-NEXT: vpextrb $0, %xmm1, %eax 1525; AVX1-NEXT: andb $1, %al 1526; AVX1-NEXT: movb %al, 4(%rdi) 1527; AVX1-NEXT: vpextrb $15, %xmm2, %eax 1528; AVX1-NEXT: andb $1, %al 1529; AVX1-NEXT: movb %al, 4(%rdi) 1530; AVX1-NEXT: vpextrb $14, %xmm2, %eax 1531; AVX1-NEXT: andb $1, %al 1532; AVX1-NEXT: movb %al, 4(%rdi) 1533; AVX1-NEXT: vpextrb $13, %xmm2, %eax 1534; AVX1-NEXT: andb $1, %al 1535; AVX1-NEXT: movb %al, 4(%rdi) 1536; AVX1-NEXT: vpextrb $12, %xmm2, %eax 1537; AVX1-NEXT: andb $1, %al 1538; AVX1-NEXT: movb %al, 4(%rdi) 1539; AVX1-NEXT: vpextrb $11, %xmm2, %eax 1540; AVX1-NEXT: andb $1, %al 1541; AVX1-NEXT: movb %al, 4(%rdi) 1542; AVX1-NEXT: vpextrb $10, %xmm2, %eax 1543; AVX1-NEXT: andb $1, %al 1544; AVX1-NEXT: movb %al, 4(%rdi) 1545; AVX1-NEXT: vpextrb $9, %xmm2, %eax 1546; AVX1-NEXT: andb $1, %al 1547; AVX1-NEXT: movb %al, 4(%rdi) 1548; AVX1-NEXT: vpextrb $8, %xmm2, %eax 1549; AVX1-NEXT: andb $1, %al 1550; AVX1-NEXT: movb %al, 4(%rdi) 1551; AVX1-NEXT: vpextrb $7, %xmm2, %eax 1552; AVX1-NEXT: andb $1, %al 1553; AVX1-NEXT: movb %al, 4(%rdi) 1554; AVX1-NEXT: vpextrb $6, %xmm2, %eax 1555; AVX1-NEXT: andb $1, %al 1556; AVX1-NEXT: movb %al, 4(%rdi) 1557; AVX1-NEXT: vpextrb $5, %xmm2, %eax 1558; AVX1-NEXT: andb $1, %al 1559; AVX1-NEXT: movb %al, 4(%rdi) 1560; AVX1-NEXT: vpextrb $4, %xmm2, %eax 1561; AVX1-NEXT: andb $1, %al 1562; AVX1-NEXT: movb %al, 4(%rdi) 1563; AVX1-NEXT: vpextrb $3, %xmm2, %eax 1564; AVX1-NEXT: andb $1, %al 1565; AVX1-NEXT: movb %al, 4(%rdi) 1566; AVX1-NEXT: vpextrb $2, %xmm2, %eax 1567; AVX1-NEXT: andb $1, %al 1568; AVX1-NEXT: movb %al, 4(%rdi) 1569; AVX1-NEXT: vpextrb $1, %xmm2, %eax 1570; AVX1-NEXT: andb $1, %al 1571; AVX1-NEXT: movb %al, 4(%rdi) 1572; AVX1-NEXT: vpextrb $0, %xmm2, %eax 1573; AVX1-NEXT: andb $1, %al 1574; AVX1-NEXT: movb %al, 4(%rdi) 1575; AVX1-NEXT: vpextrb $15, %xmm0, %eax 1576; AVX1-NEXT: andb $1, %al 1577; AVX1-NEXT: movb %al, (%rdi) 1578; AVX1-NEXT: vpextrb $14, %xmm0, %eax 1579; AVX1-NEXT: andb $1, %al 1580; AVX1-NEXT: movb %al, (%rdi) 1581; AVX1-NEXT: vpextrb $13, %xmm0, %eax 1582; AVX1-NEXT: andb $1, %al 1583; AVX1-NEXT: movb %al, (%rdi) 1584; AVX1-NEXT: vpextrb $12, %xmm0, %eax 1585; AVX1-NEXT: andb $1, %al 1586; AVX1-NEXT: movb %al, (%rdi) 1587; AVX1-NEXT: vpextrb $11, %xmm0, %eax 1588; AVX1-NEXT: andb $1, %al 1589; AVX1-NEXT: movb %al, (%rdi) 1590; AVX1-NEXT: vpextrb $10, %xmm0, %eax 1591; AVX1-NEXT: andb $1, %al 1592; AVX1-NEXT: movb %al, (%rdi) 1593; AVX1-NEXT: vpextrb $9, %xmm0, %eax 1594; AVX1-NEXT: andb $1, %al 1595; AVX1-NEXT: movb %al, (%rdi) 1596; AVX1-NEXT: vpextrb $8, %xmm0, %eax 1597; AVX1-NEXT: andb $1, %al 1598; AVX1-NEXT: movb %al, (%rdi) 1599; AVX1-NEXT: vpextrb $7, %xmm0, %eax 1600; AVX1-NEXT: andb $1, %al 1601; AVX1-NEXT: movb %al, (%rdi) 1602; AVX1-NEXT: vpextrb $6, %xmm0, %eax 1603; AVX1-NEXT: andb $1, %al 1604; AVX1-NEXT: movb %al, (%rdi) 1605; AVX1-NEXT: vpextrb $5, %xmm0, %eax 1606; AVX1-NEXT: andb $1, %al 1607; AVX1-NEXT: movb %al, (%rdi) 1608; AVX1-NEXT: vpextrb $4, %xmm0, %eax 1609; AVX1-NEXT: andb $1, %al 1610; AVX1-NEXT: movb %al, (%rdi) 1611; AVX1-NEXT: vpextrb $3, %xmm0, %eax 1612; AVX1-NEXT: andb $1, %al 1613; AVX1-NEXT: movb %al, (%rdi) 1614; AVX1-NEXT: vpextrb $2, %xmm0, %eax 1615; AVX1-NEXT: andb $1, %al 1616; AVX1-NEXT: movb %al, (%rdi) 1617; AVX1-NEXT: vpextrb $1, %xmm0, %eax 1618; AVX1-NEXT: andb $1, %al 1619; AVX1-NEXT: movb %al, (%rdi) 1620; AVX1-NEXT: vpextrb $0, %xmm0, %eax 1621; AVX1-NEXT: andb $1, %al 1622; AVX1-NEXT: movb %al, (%rdi) 1623; AVX1-NEXT: vpextrb $15, %xmm4, %eax 1624; AVX1-NEXT: andb $1, %al 1625; AVX1-NEXT: movb %al, (%rdi) 1626; AVX1-NEXT: vpextrb $14, %xmm4, %eax 1627; AVX1-NEXT: andb $1, %al 1628; AVX1-NEXT: movb %al, (%rdi) 1629; AVX1-NEXT: vpextrb $13, %xmm4, %eax 1630; AVX1-NEXT: andb $1, %al 1631; AVX1-NEXT: movb %al, (%rdi) 1632; AVX1-NEXT: vpextrb $12, %xmm4, %eax 1633; AVX1-NEXT: andb $1, %al 1634; AVX1-NEXT: movb %al, (%rdi) 1635; AVX1-NEXT: vpextrb $11, %xmm4, %eax 1636; AVX1-NEXT: andb $1, %al 1637; AVX1-NEXT: movb %al, (%rdi) 1638; AVX1-NEXT: vpextrb $10, %xmm4, %eax 1639; AVX1-NEXT: andb $1, %al 1640; AVX1-NEXT: movb %al, (%rdi) 1641; AVX1-NEXT: vpextrb $9, %xmm4, %eax 1642; AVX1-NEXT: andb $1, %al 1643; AVX1-NEXT: movb %al, (%rdi) 1644; AVX1-NEXT: vpextrb $8, %xmm4, %eax 1645; AVX1-NEXT: andb $1, %al 1646; AVX1-NEXT: movb %al, (%rdi) 1647; AVX1-NEXT: vpextrb $7, %xmm4, %eax 1648; AVX1-NEXT: andb $1, %al 1649; AVX1-NEXT: movb %al, (%rdi) 1650; AVX1-NEXT: vpextrb $6, %xmm4, %eax 1651; AVX1-NEXT: andb $1, %al 1652; AVX1-NEXT: movb %al, (%rdi) 1653; AVX1-NEXT: vpextrb $5, %xmm4, %eax 1654; AVX1-NEXT: andb $1, %al 1655; AVX1-NEXT: movb %al, (%rdi) 1656; AVX1-NEXT: vpextrb $4, %xmm4, %eax 1657; AVX1-NEXT: andb $1, %al 1658; AVX1-NEXT: movb %al, (%rdi) 1659; AVX1-NEXT: vpextrb $3, %xmm4, %eax 1660; AVX1-NEXT: andb $1, %al 1661; AVX1-NEXT: movb %al, (%rdi) 1662; AVX1-NEXT: vpextrb $2, %xmm4, %eax 1663; AVX1-NEXT: andb $1, %al 1664; AVX1-NEXT: movb %al, (%rdi) 1665; AVX1-NEXT: vpextrb $1, %xmm4, %eax 1666; AVX1-NEXT: andb $1, %al 1667; AVX1-NEXT: movb %al, (%rdi) 1668; AVX1-NEXT: vpextrb $0, %xmm4, %eax 1669; AVX1-NEXT: andb $1, %al 1670; AVX1-NEXT: movb %al, (%rdi) 1671; AVX1-NEXT: movq %rdi, %rax 1672; AVX1-NEXT: vzeroupper 1673; AVX1-NEXT: retq 1674; 1675; AVX2-LABEL: test_cmp_v64i8: 1676; AVX2: # BB#0: 1677; AVX2-NEXT: vpcmpgtb %ymm2, %ymm0, %ymm0 1678; AVX2-NEXT: vpcmpgtb %ymm3, %ymm1, %ymm1 1679; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2 1680; AVX2-NEXT: vpextrb $15, %xmm2, %eax 1681; AVX2-NEXT: andb $1, %al 1682; AVX2-NEXT: movb %al, 4(%rdi) 1683; AVX2-NEXT: vpextrb $14, %xmm2, %eax 1684; AVX2-NEXT: andb $1, %al 1685; AVX2-NEXT: movb %al, 4(%rdi) 1686; AVX2-NEXT: vpextrb $13, %xmm2, %eax 1687; AVX2-NEXT: andb $1, %al 1688; AVX2-NEXT: movb %al, 4(%rdi) 1689; AVX2-NEXT: vpextrb $12, %xmm2, %eax 1690; AVX2-NEXT: andb $1, %al 1691; AVX2-NEXT: movb %al, 4(%rdi) 1692; AVX2-NEXT: vpextrb $11, %xmm2, %eax 1693; AVX2-NEXT: andb $1, %al 1694; AVX2-NEXT: movb %al, 4(%rdi) 1695; AVX2-NEXT: vpextrb $10, %xmm2, %eax 1696; AVX2-NEXT: andb $1, %al 1697; AVX2-NEXT: movb %al, 4(%rdi) 1698; AVX2-NEXT: vpextrb $9, %xmm2, %eax 1699; AVX2-NEXT: andb $1, %al 1700; AVX2-NEXT: movb %al, 4(%rdi) 1701; AVX2-NEXT: vpextrb $8, %xmm2, %eax 1702; AVX2-NEXT: andb $1, %al 1703; AVX2-NEXT: movb %al, 4(%rdi) 1704; AVX2-NEXT: vpextrb $7, %xmm2, %eax 1705; AVX2-NEXT: andb $1, %al 1706; AVX2-NEXT: movb %al, 4(%rdi) 1707; AVX2-NEXT: vpextrb $6, %xmm2, %eax 1708; AVX2-NEXT: andb $1, %al 1709; AVX2-NEXT: movb %al, 4(%rdi) 1710; AVX2-NEXT: vpextrb $5, %xmm2, %eax 1711; AVX2-NEXT: andb $1, %al 1712; AVX2-NEXT: movb %al, 4(%rdi) 1713; AVX2-NEXT: vpextrb $4, %xmm2, %eax 1714; AVX2-NEXT: andb $1, %al 1715; AVX2-NEXT: movb %al, 4(%rdi) 1716; AVX2-NEXT: vpextrb $3, %xmm2, %eax 1717; AVX2-NEXT: andb $1, %al 1718; AVX2-NEXT: movb %al, 4(%rdi) 1719; AVX2-NEXT: vpextrb $2, %xmm2, %eax 1720; AVX2-NEXT: andb $1, %al 1721; AVX2-NEXT: movb %al, 4(%rdi) 1722; AVX2-NEXT: vpextrb $1, %xmm2, %eax 1723; AVX2-NEXT: andb $1, %al 1724; AVX2-NEXT: movb %al, 4(%rdi) 1725; AVX2-NEXT: vpextrb $0, %xmm2, %eax 1726; AVX2-NEXT: andb $1, %al 1727; AVX2-NEXT: movb %al, 4(%rdi) 1728; AVX2-NEXT: vpextrb $15, %xmm1, %eax 1729; AVX2-NEXT: andb $1, %al 1730; AVX2-NEXT: movb %al, 4(%rdi) 1731; AVX2-NEXT: vpextrb $14, %xmm1, %eax 1732; AVX2-NEXT: andb $1, %al 1733; AVX2-NEXT: movb %al, 4(%rdi) 1734; AVX2-NEXT: vpextrb $13, %xmm1, %eax 1735; AVX2-NEXT: andb $1, %al 1736; AVX2-NEXT: movb %al, 4(%rdi) 1737; AVX2-NEXT: vpextrb $12, %xmm1, %eax 1738; AVX2-NEXT: andb $1, %al 1739; AVX2-NEXT: movb %al, 4(%rdi) 1740; AVX2-NEXT: vpextrb $11, %xmm1, %eax 1741; AVX2-NEXT: andb $1, %al 1742; AVX2-NEXT: movb %al, 4(%rdi) 1743; AVX2-NEXT: vpextrb $10, %xmm1, %eax 1744; AVX2-NEXT: andb $1, %al 1745; AVX2-NEXT: movb %al, 4(%rdi) 1746; AVX2-NEXT: vpextrb $9, %xmm1, %eax 1747; AVX2-NEXT: andb $1, %al 1748; AVX2-NEXT: movb %al, 4(%rdi) 1749; AVX2-NEXT: vpextrb $8, %xmm1, %eax 1750; AVX2-NEXT: andb $1, %al 1751; AVX2-NEXT: movb %al, 4(%rdi) 1752; AVX2-NEXT: vpextrb $7, %xmm1, %eax 1753; AVX2-NEXT: andb $1, %al 1754; AVX2-NEXT: movb %al, 4(%rdi) 1755; AVX2-NEXT: vpextrb $6, %xmm1, %eax 1756; AVX2-NEXT: andb $1, %al 1757; AVX2-NEXT: movb %al, 4(%rdi) 1758; AVX2-NEXT: vpextrb $5, %xmm1, %eax 1759; AVX2-NEXT: andb $1, %al 1760; AVX2-NEXT: movb %al, 4(%rdi) 1761; AVX2-NEXT: vpextrb $4, %xmm1, %eax 1762; AVX2-NEXT: andb $1, %al 1763; AVX2-NEXT: movb %al, 4(%rdi) 1764; AVX2-NEXT: vpextrb $3, %xmm1, %eax 1765; AVX2-NEXT: andb $1, %al 1766; AVX2-NEXT: movb %al, 4(%rdi) 1767; AVX2-NEXT: vpextrb $2, %xmm1, %eax 1768; AVX2-NEXT: andb $1, %al 1769; AVX2-NEXT: movb %al, 4(%rdi) 1770; AVX2-NEXT: vpextrb $1, %xmm1, %eax 1771; AVX2-NEXT: andb $1, %al 1772; AVX2-NEXT: movb %al, 4(%rdi) 1773; AVX2-NEXT: vpextrb $0, %xmm1, %eax 1774; AVX2-NEXT: andb $1, %al 1775; AVX2-NEXT: movb %al, 4(%rdi) 1776; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 1777; AVX2-NEXT: vpextrb $15, %xmm1, %eax 1778; AVX2-NEXT: andb $1, %al 1779; AVX2-NEXT: movb %al, (%rdi) 1780; AVX2-NEXT: vpextrb $14, %xmm1, %eax 1781; AVX2-NEXT: andb $1, %al 1782; AVX2-NEXT: movb %al, (%rdi) 1783; AVX2-NEXT: vpextrb $13, %xmm1, %eax 1784; AVX2-NEXT: andb $1, %al 1785; AVX2-NEXT: movb %al, (%rdi) 1786; AVX2-NEXT: vpextrb $12, %xmm1, %eax 1787; AVX2-NEXT: andb $1, %al 1788; AVX2-NEXT: movb %al, (%rdi) 1789; AVX2-NEXT: vpextrb $11, %xmm1, %eax 1790; AVX2-NEXT: andb $1, %al 1791; AVX2-NEXT: movb %al, (%rdi) 1792; AVX2-NEXT: vpextrb $10, %xmm1, %eax 1793; AVX2-NEXT: andb $1, %al 1794; AVX2-NEXT: movb %al, (%rdi) 1795; AVX2-NEXT: vpextrb $9, %xmm1, %eax 1796; AVX2-NEXT: andb $1, %al 1797; AVX2-NEXT: movb %al, (%rdi) 1798; AVX2-NEXT: vpextrb $8, %xmm1, %eax 1799; AVX2-NEXT: andb $1, %al 1800; AVX2-NEXT: movb %al, (%rdi) 1801; AVX2-NEXT: vpextrb $7, %xmm1, %eax 1802; AVX2-NEXT: andb $1, %al 1803; AVX2-NEXT: movb %al, (%rdi) 1804; AVX2-NEXT: vpextrb $6, %xmm1, %eax 1805; AVX2-NEXT: andb $1, %al 1806; AVX2-NEXT: movb %al, (%rdi) 1807; AVX2-NEXT: vpextrb $5, %xmm1, %eax 1808; AVX2-NEXT: andb $1, %al 1809; AVX2-NEXT: movb %al, (%rdi) 1810; AVX2-NEXT: vpextrb $4, %xmm1, %eax 1811; AVX2-NEXT: andb $1, %al 1812; AVX2-NEXT: movb %al, (%rdi) 1813; AVX2-NEXT: vpextrb $3, %xmm1, %eax 1814; AVX2-NEXT: andb $1, %al 1815; AVX2-NEXT: movb %al, (%rdi) 1816; AVX2-NEXT: vpextrb $2, %xmm1, %eax 1817; AVX2-NEXT: andb $1, %al 1818; AVX2-NEXT: movb %al, (%rdi) 1819; AVX2-NEXT: vpextrb $1, %xmm1, %eax 1820; AVX2-NEXT: andb $1, %al 1821; AVX2-NEXT: movb %al, (%rdi) 1822; AVX2-NEXT: vpextrb $0, %xmm1, %eax 1823; AVX2-NEXT: andb $1, %al 1824; AVX2-NEXT: movb %al, (%rdi) 1825; AVX2-NEXT: vpextrb $15, %xmm0, %eax 1826; AVX2-NEXT: andb $1, %al 1827; AVX2-NEXT: movb %al, (%rdi) 1828; AVX2-NEXT: vpextrb $14, %xmm0, %eax 1829; AVX2-NEXT: andb $1, %al 1830; AVX2-NEXT: movb %al, (%rdi) 1831; AVX2-NEXT: vpextrb $13, %xmm0, %eax 1832; AVX2-NEXT: andb $1, %al 1833; AVX2-NEXT: movb %al, (%rdi) 1834; AVX2-NEXT: vpextrb $12, %xmm0, %eax 1835; AVX2-NEXT: andb $1, %al 1836; AVX2-NEXT: movb %al, (%rdi) 1837; AVX2-NEXT: vpextrb $11, %xmm0, %eax 1838; AVX2-NEXT: andb $1, %al 1839; AVX2-NEXT: movb %al, (%rdi) 1840; AVX2-NEXT: vpextrb $10, %xmm0, %eax 1841; AVX2-NEXT: andb $1, %al 1842; AVX2-NEXT: movb %al, (%rdi) 1843; AVX2-NEXT: vpextrb $9, %xmm0, %eax 1844; AVX2-NEXT: andb $1, %al 1845; AVX2-NEXT: movb %al, (%rdi) 1846; AVX2-NEXT: vpextrb $8, %xmm0, %eax 1847; AVX2-NEXT: andb $1, %al 1848; AVX2-NEXT: movb %al, (%rdi) 1849; AVX2-NEXT: vpextrb $7, %xmm0, %eax 1850; AVX2-NEXT: andb $1, %al 1851; AVX2-NEXT: movb %al, (%rdi) 1852; AVX2-NEXT: vpextrb $6, %xmm0, %eax 1853; AVX2-NEXT: andb $1, %al 1854; AVX2-NEXT: movb %al, (%rdi) 1855; AVX2-NEXT: vpextrb $5, %xmm0, %eax 1856; AVX2-NEXT: andb $1, %al 1857; AVX2-NEXT: movb %al, (%rdi) 1858; AVX2-NEXT: vpextrb $4, %xmm0, %eax 1859; AVX2-NEXT: andb $1, %al 1860; AVX2-NEXT: movb %al, (%rdi) 1861; AVX2-NEXT: vpextrb $3, %xmm0, %eax 1862; AVX2-NEXT: andb $1, %al 1863; AVX2-NEXT: movb %al, (%rdi) 1864; AVX2-NEXT: vpextrb $2, %xmm0, %eax 1865; AVX2-NEXT: andb $1, %al 1866; AVX2-NEXT: movb %al, (%rdi) 1867; AVX2-NEXT: vpextrb $1, %xmm0, %eax 1868; AVX2-NEXT: andb $1, %al 1869; AVX2-NEXT: movb %al, (%rdi) 1870; AVX2-NEXT: vpextrb $0, %xmm0, %eax 1871; AVX2-NEXT: andb $1, %al 1872; AVX2-NEXT: movb %al, (%rdi) 1873; AVX2-NEXT: movq %rdi, %rax 1874; AVX2-NEXT: vzeroupper 1875; AVX2-NEXT: retq 1876; 1877; AVX512-LABEL: test_cmp_v64i8: 1878; AVX512: # BB#0: 1879; AVX512-NEXT: vpcmpgtb %ymm3, %ymm1, %ymm4 1880; AVX512-NEXT: vpcmpgtb %ymm2, %ymm0, %ymm0 1881; AVX512-NEXT: vextracti128 $1, %ymm0, %xmm1 1882; AVX512-NEXT: vextracti128 $1, %ymm4, %xmm3 1883; AVX512-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill> 1884; AVX512-NEXT: vmovdqa %xmm4, %xmm2 1885; AVX512-NEXT: retq 1886 %1 = icmp sgt <64 x i8> %a0, %a1 1887 ret <64 x i1> %1 1888} 1889 1890; 1891; 1024-bit vector comparisons 1892; 1893 1894define <16 x i1> @test_cmp_v16f64(<16 x double> %a0, <16 x double> %a1) nounwind { 1895; SSE-LABEL: test_cmp_v16f64: 1896; SSE: # BB#0: 1897; SSE-NEXT: movapd %xmm0, %xmm8 1898; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm0 1899; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm11 1900; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm10 1901; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm12 1902; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm9 1903; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm13 1904; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm14 1905; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm15 1906; SSE-NEXT: cmpltpd %xmm7, %xmm15 1907; SSE-NEXT: cmpltpd %xmm6, %xmm14 1908; SSE-NEXT: packsswb %xmm15, %xmm14 1909; SSE-NEXT: cmpltpd %xmm5, %xmm13 1910; SSE-NEXT: cmpltpd %xmm4, %xmm9 1911; SSE-NEXT: packsswb %xmm13, %xmm9 1912; SSE-NEXT: packsswb %xmm14, %xmm9 1913; SSE-NEXT: cmpltpd %xmm3, %xmm12 1914; SSE-NEXT: cmpltpd %xmm2, %xmm10 1915; SSE-NEXT: packsswb %xmm12, %xmm10 1916; SSE-NEXT: cmpltpd %xmm1, %xmm11 1917; SSE-NEXT: cmpltpd %xmm8, %xmm0 1918; SSE-NEXT: packsswb %xmm11, %xmm0 1919; SSE-NEXT: packsswb %xmm10, %xmm0 1920; SSE-NEXT: packsswb %xmm9, %xmm0 1921; SSE-NEXT: retq 1922; 1923; AVX1-LABEL: test_cmp_v16f64: 1924; AVX1: # BB#0: 1925; AVX1-NEXT: vcmpltpd %ymm3, %ymm7, %ymm3 1926; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm7 1927; AVX1-NEXT: vpacksswb %xmm7, %xmm3, %xmm3 1928; AVX1-NEXT: vcmpltpd %ymm2, %ymm6, %ymm2 1929; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm6 1930; AVX1-NEXT: vpacksswb %xmm6, %xmm2, %xmm2 1931; AVX1-NEXT: vpacksswb %xmm3, %xmm2, %xmm2 1932; AVX1-NEXT: vcmpltpd %ymm1, %ymm5, %ymm1 1933; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 1934; AVX1-NEXT: vpacksswb %xmm3, %xmm1, %xmm1 1935; AVX1-NEXT: vcmpltpd %ymm0, %ymm4, %ymm0 1936; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 1937; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 1938; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 1939; AVX1-NEXT: vpacksswb %xmm2, %xmm0, %xmm0 1940; AVX1-NEXT: vzeroupper 1941; AVX1-NEXT: retq 1942; 1943; AVX2-LABEL: test_cmp_v16f64: 1944; AVX2: # BB#0: 1945; AVX2-NEXT: vcmpltpd %ymm3, %ymm7, %ymm3 1946; AVX2-NEXT: vcmpltpd %ymm2, %ymm6, %ymm2 1947; AVX2-NEXT: vpacksswb %ymm3, %ymm2, %ymm2 1948; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,1,3] 1949; AVX2-NEXT: vcmpltpd %ymm1, %ymm5, %ymm1 1950; AVX2-NEXT: vcmpltpd %ymm0, %ymm4, %ymm0 1951; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 1952; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 1953; AVX2-NEXT: vpacksswb %ymm2, %ymm0, %ymm0 1954; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 1955; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 1956; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 1957; AVX2-NEXT: vzeroupper 1958; AVX2-NEXT: retq 1959; 1960; AVX512-LABEL: test_cmp_v16f64: 1961; AVX512: # BB#0: 1962; AVX512-NEXT: vextractf32x4 $3, %zmm2, %xmm4 1963; AVX512-NEXT: vextractf32x4 $3, %zmm0, %xmm5 1964; AVX512-NEXT: xorl %eax, %eax 1965; AVX512-NEXT: vucomisd %xmm4, %xmm5 1966; AVX512-NEXT: movq $-1, %rcx 1967; AVX512-NEXT: movl $0, %edx 1968; AVX512-NEXT: cmovaq %rcx, %rdx 1969; AVX512-NEXT: vmovq %rdx, %xmm6 1970; AVX512-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 1971; AVX512-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 1972; AVX512-NEXT: vucomisd %xmm4, %xmm5 1973; AVX512-NEXT: movl $0, %edx 1974; AVX512-NEXT: cmovaq %rcx, %rdx 1975; AVX512-NEXT: vmovq %rdx, %xmm4 1976; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0] 1977; AVX512-NEXT: vextractf32x4 $2, %zmm2, %xmm5 1978; AVX512-NEXT: vextractf32x4 $2, %zmm0, %xmm6 1979; AVX512-NEXT: vucomisd %xmm5, %xmm6 1980; AVX512-NEXT: movl $0, %edx 1981; AVX512-NEXT: cmovaq %rcx, %rdx 1982; AVX512-NEXT: vmovq %rdx, %xmm7 1983; AVX512-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 1984; AVX512-NEXT: vpermilpd {{.*#+}} xmm6 = xmm6[1,0] 1985; AVX512-NEXT: vucomisd %xmm5, %xmm6 1986; AVX512-NEXT: movl $0, %edx 1987; AVX512-NEXT: cmovaq %rcx, %rdx 1988; AVX512-NEXT: vmovq %rdx, %xmm5 1989; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm7[0],xmm5[0] 1990; AVX512-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4 1991; AVX512-NEXT: vextractf32x4 $1, %zmm2, %xmm5 1992; AVX512-NEXT: vextractf32x4 $1, %zmm0, %xmm6 1993; AVX512-NEXT: vucomisd %xmm5, %xmm6 1994; AVX512-NEXT: movl $0, %edx 1995; AVX512-NEXT: cmovaq %rcx, %rdx 1996; AVX512-NEXT: vmovq %rdx, %xmm7 1997; AVX512-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 1998; AVX512-NEXT: vpermilpd {{.*#+}} xmm6 = xmm6[1,0] 1999; AVX512-NEXT: vucomisd %xmm5, %xmm6 2000; AVX512-NEXT: movl $0, %edx 2001; AVX512-NEXT: cmovaq %rcx, %rdx 2002; AVX512-NEXT: vmovq %rdx, %xmm5 2003; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm7[0],xmm5[0] 2004; AVX512-NEXT: vucomisd %xmm2, %xmm0 2005; AVX512-NEXT: movl $0, %edx 2006; AVX512-NEXT: cmovaq %rcx, %rdx 2007; AVX512-NEXT: vmovq %rdx, %xmm6 2008; AVX512-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 2009; AVX512-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 2010; AVX512-NEXT: vucomisd %xmm2, %xmm0 2011; AVX512-NEXT: movl $0, %edx 2012; AVX512-NEXT: cmovaq %rcx, %rdx 2013; AVX512-NEXT: vmovq %rdx, %xmm0 2014; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm6[0],xmm0[0] 2015; AVX512-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0 2016; AVX512-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm0 2017; AVX512-NEXT: vpmovqd %zmm0, %ymm0 2018; AVX512-NEXT: vextractf32x4 $3, %zmm3, %xmm2 2019; AVX512-NEXT: vextractf32x4 $3, %zmm1, %xmm4 2020; AVX512-NEXT: vucomisd %xmm2, %xmm4 2021; AVX512-NEXT: movl $0, %edx 2022; AVX512-NEXT: cmovaq %rcx, %rdx 2023; AVX512-NEXT: vmovq %rdx, %xmm5 2024; AVX512-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 2025; AVX512-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2026; AVX512-NEXT: vucomisd %xmm2, %xmm4 2027; AVX512-NEXT: movl $0, %edx 2028; AVX512-NEXT: cmovaq %rcx, %rdx 2029; AVX512-NEXT: vmovq %rdx, %xmm2 2030; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm5[0],xmm2[0] 2031; AVX512-NEXT: vextractf32x4 $2, %zmm3, %xmm4 2032; AVX512-NEXT: vextractf32x4 $2, %zmm1, %xmm5 2033; AVX512-NEXT: vucomisd %xmm4, %xmm5 2034; AVX512-NEXT: movl $0, %edx 2035; AVX512-NEXT: cmovaq %rcx, %rdx 2036; AVX512-NEXT: vmovq %rdx, %xmm6 2037; AVX512-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2038; AVX512-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2039; AVX512-NEXT: vucomisd %xmm4, %xmm5 2040; AVX512-NEXT: movl $0, %edx 2041; AVX512-NEXT: cmovaq %rcx, %rdx 2042; AVX512-NEXT: vmovq %rdx, %xmm4 2043; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0] 2044; AVX512-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2 2045; AVX512-NEXT: vextractf32x4 $1, %zmm3, %xmm4 2046; AVX512-NEXT: vextractf32x4 $1, %zmm1, %xmm5 2047; AVX512-NEXT: vucomisd %xmm4, %xmm5 2048; AVX512-NEXT: movl $0, %edx 2049; AVX512-NEXT: cmovaq %rcx, %rdx 2050; AVX512-NEXT: vmovq %rdx, %xmm6 2051; AVX512-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 2052; AVX512-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 2053; AVX512-NEXT: vucomisd %xmm4, %xmm5 2054; AVX512-NEXT: movl $0, %edx 2055; AVX512-NEXT: cmovaq %rcx, %rdx 2056; AVX512-NEXT: vmovq %rdx, %xmm4 2057; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0] 2058; AVX512-NEXT: vucomisd %xmm3, %xmm1 2059; AVX512-NEXT: movl $0, %edx 2060; AVX512-NEXT: cmovaq %rcx, %rdx 2061; AVX512-NEXT: vmovq %rdx, %xmm5 2062; AVX512-NEXT: vpermilpd {{.*#+}} xmm3 = xmm3[1,0] 2063; AVX512-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 2064; AVX512-NEXT: vucomisd %xmm3, %xmm1 2065; AVX512-NEXT: cmovaq %rcx, %rax 2066; AVX512-NEXT: vmovq %rax, %xmm1 2067; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm5[0],xmm1[0] 2068; AVX512-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1 2069; AVX512-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1 2070; AVX512-NEXT: vpmovqd %zmm1, %ymm1 2071; AVX512-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 2072; AVX512-NEXT: vpmovdb %zmm0, %xmm0 2073; AVX512-NEXT: retq 2074 %1 = fcmp ogt <16 x double> %a0, %a1 2075 ret <16 x i1> %1 2076} 2077 2078define <32 x i1> @test_cmp_v32f32(<32 x float> %a0, <32 x float> %a1) nounwind { 2079; SSE2-LABEL: test_cmp_v32f32: 2080; SSE2: # BB#0: 2081; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm8 2082; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm9 2083; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm10 2084; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm11 2085; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm12 2086; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm13 2087; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm14 2088; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm15 2089; SSE2-NEXT: cmpltps %xmm3, %xmm15 2090; SSE2-NEXT: pshuflw {{.*#+}} xmm3 = xmm15[0,2,2,3,4,5,6,7] 2091; SSE2-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,6,6,7] 2092; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3] 2093; SSE2-NEXT: cmpltps %xmm2, %xmm14 2094; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm14[0,2,2,3,4,5,6,7] 2095; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7] 2096; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] 2097; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0] 2098; SSE2-NEXT: psllw $15, %xmm2 2099; SSE2-NEXT: psraw $15, %xmm2 2100; SSE2-NEXT: movdqa {{.*#+}} xmm3 = [255,255,255,255,255,255,255,255] 2101; SSE2-NEXT: pand %xmm3, %xmm2 2102; SSE2-NEXT: cmpltps %xmm1, %xmm13 2103; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm13[0,2,2,3,4,5,6,7] 2104; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 2105; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 2106; SSE2-NEXT: cmpltps %xmm0, %xmm12 2107; SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm12[0,2,2,3,4,5,6,7] 2108; SSE2-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,6,7] 2109; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3] 2110; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 2111; SSE2-NEXT: psllw $15, %xmm0 2112; SSE2-NEXT: psraw $15, %xmm0 2113; SSE2-NEXT: pand %xmm3, %xmm0 2114; SSE2-NEXT: packuswb %xmm2, %xmm0 2115; SSE2-NEXT: cmpltps %xmm7, %xmm11 2116; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm11[0,2,2,3,4,5,6,7] 2117; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 2118; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 2119; SSE2-NEXT: cmpltps %xmm6, %xmm10 2120; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm10[0,2,2,3,4,5,6,7] 2121; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7] 2122; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] 2123; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm1[0] 2124; SSE2-NEXT: psllw $15, %xmm2 2125; SSE2-NEXT: psraw $15, %xmm2 2126; SSE2-NEXT: pand %xmm3, %xmm2 2127; SSE2-NEXT: cmpltps %xmm5, %xmm9 2128; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm9[0,2,2,3,4,5,6,7] 2129; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 2130; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 2131; SSE2-NEXT: cmpltps %xmm4, %xmm8 2132; SSE2-NEXT: pshuflw {{.*#+}} xmm4 = xmm8[0,2,2,3,4,5,6,7] 2133; SSE2-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,6,6,7] 2134; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3] 2135; SSE2-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm1[0] 2136; SSE2-NEXT: psllw $15, %xmm4 2137; SSE2-NEXT: psraw $15, %xmm4 2138; SSE2-NEXT: pand %xmm3, %xmm4 2139; SSE2-NEXT: packuswb %xmm2, %xmm4 2140; SSE2-NEXT: movdqa %xmm4, -{{[0-9]+}}(%rsp) 2141; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2142; SSE2-NEXT: andb $1, %al 2143; SSE2-NEXT: movb %al, 2(%rdi) 2144; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 2145; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2146; SSE2-NEXT: andb $1, %al 2147; SSE2-NEXT: movb %al, (%rdi) 2148; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2149; SSE2-NEXT: andb $1, %al 2150; SSE2-NEXT: movb %al, 2(%rdi) 2151; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2152; SSE2-NEXT: andb $1, %al 2153; SSE2-NEXT: movb %al, (%rdi) 2154; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2155; SSE2-NEXT: andb $1, %al 2156; SSE2-NEXT: movb %al, 2(%rdi) 2157; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2158; SSE2-NEXT: andb $1, %al 2159; SSE2-NEXT: movb %al, (%rdi) 2160; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2161; SSE2-NEXT: andb $1, %al 2162; SSE2-NEXT: movb %al, 2(%rdi) 2163; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2164; SSE2-NEXT: andb $1, %al 2165; SSE2-NEXT: movb %al, (%rdi) 2166; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2167; SSE2-NEXT: andb $1, %al 2168; SSE2-NEXT: movb %al, 2(%rdi) 2169; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2170; SSE2-NEXT: andb $1, %al 2171; SSE2-NEXT: movb %al, (%rdi) 2172; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2173; SSE2-NEXT: andb $1, %al 2174; SSE2-NEXT: movb %al, 2(%rdi) 2175; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2176; SSE2-NEXT: andb $1, %al 2177; SSE2-NEXT: movb %al, (%rdi) 2178; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2179; SSE2-NEXT: andb $1, %al 2180; SSE2-NEXT: movb %al, 2(%rdi) 2181; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2182; SSE2-NEXT: andb $1, %al 2183; SSE2-NEXT: movb %al, (%rdi) 2184; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2185; SSE2-NEXT: andb $1, %al 2186; SSE2-NEXT: movb %al, 2(%rdi) 2187; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2188; SSE2-NEXT: andb $1, %al 2189; SSE2-NEXT: movb %al, (%rdi) 2190; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2191; SSE2-NEXT: andb $1, %al 2192; SSE2-NEXT: movb %al, 2(%rdi) 2193; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2194; SSE2-NEXT: andb $1, %al 2195; SSE2-NEXT: movb %al, (%rdi) 2196; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2197; SSE2-NEXT: andb $1, %al 2198; SSE2-NEXT: movb %al, 2(%rdi) 2199; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2200; SSE2-NEXT: andb $1, %al 2201; SSE2-NEXT: movb %al, (%rdi) 2202; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2203; SSE2-NEXT: andb $1, %al 2204; SSE2-NEXT: movb %al, 2(%rdi) 2205; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2206; SSE2-NEXT: andb $1, %al 2207; SSE2-NEXT: movb %al, (%rdi) 2208; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2209; SSE2-NEXT: andb $1, %al 2210; SSE2-NEXT: movb %al, 2(%rdi) 2211; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2212; SSE2-NEXT: andb $1, %al 2213; SSE2-NEXT: movb %al, (%rdi) 2214; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2215; SSE2-NEXT: andb $1, %al 2216; SSE2-NEXT: movb %al, 2(%rdi) 2217; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2218; SSE2-NEXT: andb $1, %al 2219; SSE2-NEXT: movb %al, (%rdi) 2220; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2221; SSE2-NEXT: andb $1, %al 2222; SSE2-NEXT: movb %al, 2(%rdi) 2223; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2224; SSE2-NEXT: andb $1, %al 2225; SSE2-NEXT: movb %al, (%rdi) 2226; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2227; SSE2-NEXT: andb $1, %al 2228; SSE2-NEXT: movb %al, 2(%rdi) 2229; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2230; SSE2-NEXT: andb $1, %al 2231; SSE2-NEXT: movb %al, (%rdi) 2232; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2233; SSE2-NEXT: andb $1, %al 2234; SSE2-NEXT: movb %al, 2(%rdi) 2235; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2236; SSE2-NEXT: andb $1, %al 2237; SSE2-NEXT: movb %al, (%rdi) 2238; SSE2-NEXT: movq %rdi, %rax 2239; SSE2-NEXT: retq 2240; 2241; SSE42-LABEL: test_cmp_v32f32: 2242; SSE42: # BB#0: 2243; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm9 2244; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm11 2245; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm10 2246; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm12 2247; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm8 2248; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm14 2249; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm13 2250; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm15 2251; SSE42-NEXT: cmpltps %xmm3, %xmm15 2252; SSE42-NEXT: movdqa {{.*#+}} xmm3 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15] 2253; SSE42-NEXT: pshufb %xmm3, %xmm15 2254; SSE42-NEXT: cmpltps %xmm2, %xmm13 2255; SSE42-NEXT: pshufb %xmm3, %xmm13 2256; SSE42-NEXT: punpcklqdq {{.*#+}} xmm13 = xmm13[0],xmm15[0] 2257; SSE42-NEXT: psllw $15, %xmm13 2258; SSE42-NEXT: psraw $15, %xmm13 2259; SSE42-NEXT: movdqa {{.*#+}} xmm2 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u> 2260; SSE42-NEXT: pshufb %xmm2, %xmm13 2261; SSE42-NEXT: cmpltps %xmm1, %xmm14 2262; SSE42-NEXT: pshufb %xmm3, %xmm14 2263; SSE42-NEXT: cmpltps %xmm0, %xmm8 2264; SSE42-NEXT: pshufb %xmm3, %xmm8 2265; SSE42-NEXT: punpcklqdq {{.*#+}} xmm8 = xmm8[0],xmm14[0] 2266; SSE42-NEXT: psllw $15, %xmm8 2267; SSE42-NEXT: psraw $15, %xmm8 2268; SSE42-NEXT: pshufb %xmm2, %xmm8 2269; SSE42-NEXT: punpcklqdq {{.*#+}} xmm8 = xmm8[0],xmm13[0] 2270; SSE42-NEXT: cmpltps %xmm7, %xmm12 2271; SSE42-NEXT: pshufb %xmm3, %xmm12 2272; SSE42-NEXT: cmpltps %xmm6, %xmm10 2273; SSE42-NEXT: pshufb %xmm3, %xmm10 2274; SSE42-NEXT: punpcklqdq {{.*#+}} xmm10 = xmm10[0],xmm12[0] 2275; SSE42-NEXT: psllw $15, %xmm10 2276; SSE42-NEXT: psraw $15, %xmm10 2277; SSE42-NEXT: pshufb %xmm2, %xmm10 2278; SSE42-NEXT: cmpltps %xmm5, %xmm11 2279; SSE42-NEXT: pshufb %xmm3, %xmm11 2280; SSE42-NEXT: cmpltps %xmm4, %xmm9 2281; SSE42-NEXT: pshufb %xmm3, %xmm9 2282; SSE42-NEXT: punpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm11[0] 2283; SSE42-NEXT: psllw $15, %xmm9 2284; SSE42-NEXT: psraw $15, %xmm9 2285; SSE42-NEXT: pshufb %xmm2, %xmm9 2286; SSE42-NEXT: punpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm10[0] 2287; SSE42-NEXT: pextrb $15, %xmm9, %eax 2288; SSE42-NEXT: andb $1, %al 2289; SSE42-NEXT: movb %al, 2(%rdi) 2290; SSE42-NEXT: pextrb $14, %xmm9, %eax 2291; SSE42-NEXT: andb $1, %al 2292; SSE42-NEXT: movb %al, 2(%rdi) 2293; SSE42-NEXT: pextrb $13, %xmm9, %eax 2294; SSE42-NEXT: andb $1, %al 2295; SSE42-NEXT: movb %al, 2(%rdi) 2296; SSE42-NEXT: pextrb $12, %xmm9, %eax 2297; SSE42-NEXT: andb $1, %al 2298; SSE42-NEXT: movb %al, 2(%rdi) 2299; SSE42-NEXT: pextrb $11, %xmm9, %eax 2300; SSE42-NEXT: andb $1, %al 2301; SSE42-NEXT: movb %al, 2(%rdi) 2302; SSE42-NEXT: pextrb $10, %xmm9, %eax 2303; SSE42-NEXT: andb $1, %al 2304; SSE42-NEXT: movb %al, 2(%rdi) 2305; SSE42-NEXT: pextrb $9, %xmm9, %eax 2306; SSE42-NEXT: andb $1, %al 2307; SSE42-NEXT: movb %al, 2(%rdi) 2308; SSE42-NEXT: pextrb $8, %xmm9, %eax 2309; SSE42-NEXT: andb $1, %al 2310; SSE42-NEXT: movb %al, 2(%rdi) 2311; SSE42-NEXT: pextrb $7, %xmm9, %eax 2312; SSE42-NEXT: andb $1, %al 2313; SSE42-NEXT: movb %al, 2(%rdi) 2314; SSE42-NEXT: pextrb $6, %xmm9, %eax 2315; SSE42-NEXT: andb $1, %al 2316; SSE42-NEXT: movb %al, 2(%rdi) 2317; SSE42-NEXT: pextrb $5, %xmm9, %eax 2318; SSE42-NEXT: andb $1, %al 2319; SSE42-NEXT: movb %al, 2(%rdi) 2320; SSE42-NEXT: pextrb $4, %xmm9, %eax 2321; SSE42-NEXT: andb $1, %al 2322; SSE42-NEXT: movb %al, 2(%rdi) 2323; SSE42-NEXT: pextrb $3, %xmm9, %eax 2324; SSE42-NEXT: andb $1, %al 2325; SSE42-NEXT: movb %al, 2(%rdi) 2326; SSE42-NEXT: pextrb $2, %xmm9, %eax 2327; SSE42-NEXT: andb $1, %al 2328; SSE42-NEXT: movb %al, 2(%rdi) 2329; SSE42-NEXT: pextrb $1, %xmm9, %eax 2330; SSE42-NEXT: andb $1, %al 2331; SSE42-NEXT: movb %al, 2(%rdi) 2332; SSE42-NEXT: pextrb $0, %xmm9, %eax 2333; SSE42-NEXT: andb $1, %al 2334; SSE42-NEXT: movb %al, 2(%rdi) 2335; SSE42-NEXT: pextrb $15, %xmm8, %eax 2336; SSE42-NEXT: andb $1, %al 2337; SSE42-NEXT: movb %al, (%rdi) 2338; SSE42-NEXT: pextrb $14, %xmm8, %eax 2339; SSE42-NEXT: andb $1, %al 2340; SSE42-NEXT: movb %al, (%rdi) 2341; SSE42-NEXT: pextrb $13, %xmm8, %eax 2342; SSE42-NEXT: andb $1, %al 2343; SSE42-NEXT: movb %al, (%rdi) 2344; SSE42-NEXT: pextrb $12, %xmm8, %eax 2345; SSE42-NEXT: andb $1, %al 2346; SSE42-NEXT: movb %al, (%rdi) 2347; SSE42-NEXT: pextrb $11, %xmm8, %eax 2348; SSE42-NEXT: andb $1, %al 2349; SSE42-NEXT: movb %al, (%rdi) 2350; SSE42-NEXT: pextrb $10, %xmm8, %eax 2351; SSE42-NEXT: andb $1, %al 2352; SSE42-NEXT: movb %al, (%rdi) 2353; SSE42-NEXT: pextrb $9, %xmm8, %eax 2354; SSE42-NEXT: andb $1, %al 2355; SSE42-NEXT: movb %al, (%rdi) 2356; SSE42-NEXT: pextrb $8, %xmm8, %eax 2357; SSE42-NEXT: andb $1, %al 2358; SSE42-NEXT: movb %al, (%rdi) 2359; SSE42-NEXT: pextrb $7, %xmm8, %eax 2360; SSE42-NEXT: andb $1, %al 2361; SSE42-NEXT: movb %al, (%rdi) 2362; SSE42-NEXT: pextrb $6, %xmm8, %eax 2363; SSE42-NEXT: andb $1, %al 2364; SSE42-NEXT: movb %al, (%rdi) 2365; SSE42-NEXT: pextrb $5, %xmm8, %eax 2366; SSE42-NEXT: andb $1, %al 2367; SSE42-NEXT: movb %al, (%rdi) 2368; SSE42-NEXT: pextrb $4, %xmm8, %eax 2369; SSE42-NEXT: andb $1, %al 2370; SSE42-NEXT: movb %al, (%rdi) 2371; SSE42-NEXT: pextrb $3, %xmm8, %eax 2372; SSE42-NEXT: andb $1, %al 2373; SSE42-NEXT: movb %al, (%rdi) 2374; SSE42-NEXT: pextrb $2, %xmm8, %eax 2375; SSE42-NEXT: andb $1, %al 2376; SSE42-NEXT: movb %al, (%rdi) 2377; SSE42-NEXT: pextrb $1, %xmm8, %eax 2378; SSE42-NEXT: andb $1, %al 2379; SSE42-NEXT: movb %al, (%rdi) 2380; SSE42-NEXT: pextrb $0, %xmm8, %eax 2381; SSE42-NEXT: andb $1, %al 2382; SSE42-NEXT: movb %al, (%rdi) 2383; SSE42-NEXT: movq %rdi, %rax 2384; SSE42-NEXT: retq 2385; 2386; AVX1-LABEL: test_cmp_v32f32: 2387; AVX1: # BB#0: 2388; AVX1-NEXT: vcmpltps %ymm3, %ymm7, %ymm3 2389; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm7 2390; AVX1-NEXT: vpacksswb %xmm7, %xmm3, %xmm3 2391; AVX1-NEXT: vcmpltps %ymm2, %ymm6, %ymm2 2392; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm6 2393; AVX1-NEXT: vpacksswb %xmm6, %xmm2, %xmm2 2394; AVX1-NEXT: vpacksswb %xmm3, %xmm2, %xmm2 2395; AVX1-NEXT: vcmpltps %ymm1, %ymm5, %ymm1 2396; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 2397; AVX1-NEXT: vpacksswb %xmm3, %xmm1, %xmm1 2398; AVX1-NEXT: vcmpltps %ymm0, %ymm4, %ymm0 2399; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 2400; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 2401; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 2402; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 2403; AVX1-NEXT: retq 2404; 2405; AVX2-LABEL: test_cmp_v32f32: 2406; AVX2: # BB#0: 2407; AVX2-NEXT: vcmpltps %ymm3, %ymm7, %ymm3 2408; AVX2-NEXT: vcmpltps %ymm2, %ymm6, %ymm2 2409; AVX2-NEXT: vpacksswb %ymm3, %ymm2, %ymm2 2410; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,1,3] 2411; AVX2-NEXT: vcmpltps %ymm1, %ymm5, %ymm1 2412; AVX2-NEXT: vcmpltps %ymm0, %ymm4, %ymm0 2413; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 2414; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 2415; AVX2-NEXT: vpacksswb %ymm2, %ymm0, %ymm0 2416; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 2417; AVX2-NEXT: retq 2418; 2419; AVX512-LABEL: test_cmp_v32f32: 2420; AVX512: # BB#0: 2421; AVX512-NEXT: vextractf32x4 $3, %zmm2, %xmm4 2422; AVX512-NEXT: vmovshdup {{.*#+}} xmm5 = xmm4[1,1,3,3] 2423; AVX512-NEXT: vextractf32x4 $3, %zmm0, %xmm6 2424; AVX512-NEXT: vmovshdup {{.*#+}} xmm7 = xmm6[1,1,3,3] 2425; AVX512-NEXT: xorl %eax, %eax 2426; AVX512-NEXT: vucomiss %xmm5, %xmm7 2427; AVX512-NEXT: movl $-1, %ecx 2428; AVX512-NEXT: movl $0, %edx 2429; AVX512-NEXT: cmoval %ecx, %edx 2430; AVX512-NEXT: vucomiss %xmm4, %xmm6 2431; AVX512-NEXT: movl $0, %esi 2432; AVX512-NEXT: cmoval %ecx, %esi 2433; AVX512-NEXT: vmovd %esi, %xmm5 2434; AVX512-NEXT: vpinsrd $1, %edx, %xmm5, %xmm8 2435; AVX512-NEXT: vpermilpd {{.*#+}} xmm7 = xmm4[1,0] 2436; AVX512-NEXT: vpermilpd {{.*#+}} xmm5 = xmm6[1,0] 2437; AVX512-NEXT: vucomiss %xmm7, %xmm5 2438; AVX512-NEXT: movl $0, %edx 2439; AVX512-NEXT: cmoval %ecx, %edx 2440; AVX512-NEXT: vpinsrd $2, %edx, %xmm8, %xmm5 2441; AVX512-NEXT: vpermilps {{.*#+}} xmm4 = xmm4[3,1,2,3] 2442; AVX512-NEXT: vpermilps {{.*#+}} xmm6 = xmm6[3,1,2,3] 2443; AVX512-NEXT: vucomiss %xmm4, %xmm6 2444; AVX512-NEXT: movl $0, %edx 2445; AVX512-NEXT: cmoval %ecx, %edx 2446; AVX512-NEXT: vpinsrd $3, %edx, %xmm5, %xmm8 2447; AVX512-NEXT: vextractf32x4 $2, %zmm2, %xmm5 2448; AVX512-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 2449; AVX512-NEXT: vextractf32x4 $2, %zmm0, %xmm7 2450; AVX512-NEXT: vmovshdup {{.*#+}} xmm4 = xmm7[1,1,3,3] 2451; AVX512-NEXT: vucomiss %xmm6, %xmm4 2452; AVX512-NEXT: movl $0, %edx 2453; AVX512-NEXT: cmoval %ecx, %edx 2454; AVX512-NEXT: vucomiss %xmm5, %xmm7 2455; AVX512-NEXT: movl $0, %esi 2456; AVX512-NEXT: cmoval %ecx, %esi 2457; AVX512-NEXT: vmovd %esi, %xmm4 2458; AVX512-NEXT: vpinsrd $1, %edx, %xmm4, %xmm9 2459; AVX512-NEXT: vpermilpd {{.*#+}} xmm6 = xmm5[1,0] 2460; AVX512-NEXT: vpermilpd {{.*#+}} xmm4 = xmm7[1,0] 2461; AVX512-NEXT: vucomiss %xmm6, %xmm4 2462; AVX512-NEXT: movl $0, %edx 2463; AVX512-NEXT: cmoval %ecx, %edx 2464; AVX512-NEXT: vpinsrd $2, %edx, %xmm9, %xmm4 2465; AVX512-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 2466; AVX512-NEXT: vpermilps {{.*#+}} xmm6 = xmm7[3,1,2,3] 2467; AVX512-NEXT: vucomiss %xmm5, %xmm6 2468; AVX512-NEXT: movl $0, %edx 2469; AVX512-NEXT: cmoval %ecx, %edx 2470; AVX512-NEXT: vpinsrd $3, %edx, %xmm4, %xmm4 2471; AVX512-NEXT: vinserti128 $1, %xmm8, %ymm4, %ymm8 2472; AVX512-NEXT: vextractf32x4 $1, %zmm2, %xmm5 2473; AVX512-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 2474; AVX512-NEXT: vextractf32x4 $1, %zmm0, %xmm7 2475; AVX512-NEXT: vmovshdup {{.*#+}} xmm4 = xmm7[1,1,3,3] 2476; AVX512-NEXT: vucomiss %xmm6, %xmm4 2477; AVX512-NEXT: movl $0, %edx 2478; AVX512-NEXT: cmoval %ecx, %edx 2479; AVX512-NEXT: vucomiss %xmm5, %xmm7 2480; AVX512-NEXT: movl $0, %esi 2481; AVX512-NEXT: cmoval %ecx, %esi 2482; AVX512-NEXT: vmovd %esi, %xmm4 2483; AVX512-NEXT: vpinsrd $1, %edx, %xmm4, %xmm9 2484; AVX512-NEXT: vpermilpd {{.*#+}} xmm6 = xmm5[1,0] 2485; AVX512-NEXT: vpermilpd {{.*#+}} xmm4 = xmm7[1,0] 2486; AVX512-NEXT: vucomiss %xmm6, %xmm4 2487; AVX512-NEXT: movl $0, %edx 2488; AVX512-NEXT: cmoval %ecx, %edx 2489; AVX512-NEXT: vpinsrd $2, %edx, %xmm9, %xmm4 2490; AVX512-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 2491; AVX512-NEXT: vpermilps {{.*#+}} xmm6 = xmm7[3,1,2,3] 2492; AVX512-NEXT: vucomiss %xmm5, %xmm6 2493; AVX512-NEXT: movl $0, %edx 2494; AVX512-NEXT: cmoval %ecx, %edx 2495; AVX512-NEXT: vpinsrd $3, %edx, %xmm4, %xmm4 2496; AVX512-NEXT: vmovshdup {{.*#+}} xmm5 = xmm2[1,1,3,3] 2497; AVX512-NEXT: vmovshdup {{.*#+}} xmm6 = xmm0[1,1,3,3] 2498; AVX512-NEXT: vucomiss %xmm5, %xmm6 2499; AVX512-NEXT: movl $0, %edx 2500; AVX512-NEXT: cmoval %ecx, %edx 2501; AVX512-NEXT: vucomiss %xmm2, %xmm0 2502; AVX512-NEXT: movl $0, %esi 2503; AVX512-NEXT: cmoval %ecx, %esi 2504; AVX512-NEXT: vmovd %esi, %xmm5 2505; AVX512-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 2506; AVX512-NEXT: vpermilpd {{.*#+}} xmm6 = xmm2[1,0] 2507; AVX512-NEXT: vpermilpd {{.*#+}} xmm7 = xmm0[1,0] 2508; AVX512-NEXT: vucomiss %xmm6, %xmm7 2509; AVX512-NEXT: movl $0, %edx 2510; AVX512-NEXT: cmoval %ecx, %edx 2511; AVX512-NEXT: vpinsrd $2, %edx, %xmm5, %xmm5 2512; AVX512-NEXT: vpermilps {{.*#+}} xmm2 = xmm2[3,1,2,3] 2513; AVX512-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,1,2,3] 2514; AVX512-NEXT: vucomiss %xmm2, %xmm0 2515; AVX512-NEXT: movl $0, %edx 2516; AVX512-NEXT: cmoval %ecx, %edx 2517; AVX512-NEXT: vpinsrd $3, %edx, %xmm5, %xmm0 2518; AVX512-NEXT: vinserti128 $1, %xmm4, %ymm0, %ymm0 2519; AVX512-NEXT: vinserti64x4 $1, %ymm8, %zmm0, %zmm0 2520; AVX512-NEXT: vpmovdb %zmm0, %xmm8 2521; AVX512-NEXT: vextractf32x4 $3, %zmm3, %xmm2 2522; AVX512-NEXT: vmovshdup {{.*#+}} xmm4 = xmm2[1,1,3,3] 2523; AVX512-NEXT: vextractf32x4 $3, %zmm1, %xmm5 2524; AVX512-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 2525; AVX512-NEXT: vucomiss %xmm4, %xmm6 2526; AVX512-NEXT: movl $0, %edx 2527; AVX512-NEXT: cmoval %ecx, %edx 2528; AVX512-NEXT: vucomiss %xmm2, %xmm5 2529; AVX512-NEXT: movl $0, %esi 2530; AVX512-NEXT: cmoval %ecx, %esi 2531; AVX512-NEXT: vmovd %esi, %xmm4 2532; AVX512-NEXT: vpinsrd $1, %edx, %xmm4, %xmm4 2533; AVX512-NEXT: vpermilpd {{.*#+}} xmm6 = xmm2[1,0] 2534; AVX512-NEXT: vpermilpd {{.*#+}} xmm7 = xmm5[1,0] 2535; AVX512-NEXT: vucomiss %xmm6, %xmm7 2536; AVX512-NEXT: movl $0, %edx 2537; AVX512-NEXT: cmoval %ecx, %edx 2538; AVX512-NEXT: vpinsrd $2, %edx, %xmm4, %xmm4 2539; AVX512-NEXT: vpermilps {{.*#+}} xmm2 = xmm2[3,1,2,3] 2540; AVX512-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 2541; AVX512-NEXT: vucomiss %xmm2, %xmm5 2542; AVX512-NEXT: movl $0, %edx 2543; AVX512-NEXT: cmoval %ecx, %edx 2544; AVX512-NEXT: vpinsrd $3, %edx, %xmm4, %xmm2 2545; AVX512-NEXT: vextractf32x4 $2, %zmm3, %xmm4 2546; AVX512-NEXT: vmovshdup {{.*#+}} xmm5 = xmm4[1,1,3,3] 2547; AVX512-NEXT: vextractf32x4 $2, %zmm1, %xmm6 2548; AVX512-NEXT: vmovshdup {{.*#+}} xmm7 = xmm6[1,1,3,3] 2549; AVX512-NEXT: vucomiss %xmm5, %xmm7 2550; AVX512-NEXT: movl $0, %edx 2551; AVX512-NEXT: cmoval %ecx, %edx 2552; AVX512-NEXT: vucomiss %xmm4, %xmm6 2553; AVX512-NEXT: movl $0, %esi 2554; AVX512-NEXT: cmoval %ecx, %esi 2555; AVX512-NEXT: vmovd %esi, %xmm5 2556; AVX512-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 2557; AVX512-NEXT: vpermilpd {{.*#+}} xmm7 = xmm4[1,0] 2558; AVX512-NEXT: vpermilpd {{.*#+}} xmm0 = xmm6[1,0] 2559; AVX512-NEXT: vucomiss %xmm7, %xmm0 2560; AVX512-NEXT: movl $0, %edx 2561; AVX512-NEXT: cmoval %ecx, %edx 2562; AVX512-NEXT: vpinsrd $2, %edx, %xmm5, %xmm0 2563; AVX512-NEXT: vpermilps {{.*#+}} xmm4 = xmm4[3,1,2,3] 2564; AVX512-NEXT: vpermilps {{.*#+}} xmm5 = xmm6[3,1,2,3] 2565; AVX512-NEXT: vucomiss %xmm4, %xmm5 2566; AVX512-NEXT: movl $0, %edx 2567; AVX512-NEXT: cmoval %ecx, %edx 2568; AVX512-NEXT: vpinsrd $3, %edx, %xmm0, %xmm0 2569; AVX512-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm2 2570; AVX512-NEXT: vextractf32x4 $1, %zmm3, %xmm0 2571; AVX512-NEXT: vmovshdup {{.*#+}} xmm4 = xmm0[1,1,3,3] 2572; AVX512-NEXT: vextractf32x4 $1, %zmm1, %xmm5 2573; AVX512-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3] 2574; AVX512-NEXT: vucomiss %xmm4, %xmm6 2575; AVX512-NEXT: movl $0, %edx 2576; AVX512-NEXT: cmoval %ecx, %edx 2577; AVX512-NEXT: vucomiss %xmm0, %xmm5 2578; AVX512-NEXT: movl $0, %esi 2579; AVX512-NEXT: cmoval %ecx, %esi 2580; AVX512-NEXT: vmovd %esi, %xmm4 2581; AVX512-NEXT: vpinsrd $1, %edx, %xmm4, %xmm4 2582; AVX512-NEXT: vpermilpd {{.*#+}} xmm6 = xmm0[1,0] 2583; AVX512-NEXT: vpermilpd {{.*#+}} xmm7 = xmm5[1,0] 2584; AVX512-NEXT: vucomiss %xmm6, %xmm7 2585; AVX512-NEXT: movl $0, %edx 2586; AVX512-NEXT: cmoval %ecx, %edx 2587; AVX512-NEXT: vpinsrd $2, %edx, %xmm4, %xmm4 2588; AVX512-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,1,2,3] 2589; AVX512-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3] 2590; AVX512-NEXT: vucomiss %xmm0, %xmm5 2591; AVX512-NEXT: movl $0, %edx 2592; AVX512-NEXT: cmoval %ecx, %edx 2593; AVX512-NEXT: vpinsrd $3, %edx, %xmm4, %xmm0 2594; AVX512-NEXT: vmovshdup {{.*#+}} xmm4 = xmm3[1,1,3,3] 2595; AVX512-NEXT: vmovshdup {{.*#+}} xmm5 = xmm1[1,1,3,3] 2596; AVX512-NEXT: vucomiss %xmm4, %xmm5 2597; AVX512-NEXT: movl $0, %edx 2598; AVX512-NEXT: cmoval %ecx, %edx 2599; AVX512-NEXT: vucomiss %xmm3, %xmm1 2600; AVX512-NEXT: movl $0, %esi 2601; AVX512-NEXT: cmoval %ecx, %esi 2602; AVX512-NEXT: vmovd %esi, %xmm4 2603; AVX512-NEXT: vpinsrd $1, %edx, %xmm4, %xmm4 2604; AVX512-NEXT: vpermilpd {{.*#+}} xmm5 = xmm3[1,0] 2605; AVX512-NEXT: vpermilpd {{.*#+}} xmm6 = xmm1[1,0] 2606; AVX512-NEXT: vucomiss %xmm5, %xmm6 2607; AVX512-NEXT: movl $0, %edx 2608; AVX512-NEXT: cmoval %ecx, %edx 2609; AVX512-NEXT: vpinsrd $2, %edx, %xmm4, %xmm4 2610; AVX512-NEXT: vpermilps {{.*#+}} xmm3 = xmm3[3,1,2,3] 2611; AVX512-NEXT: vpermilps {{.*#+}} xmm1 = xmm1[3,1,2,3] 2612; AVX512-NEXT: vucomiss %xmm3, %xmm1 2613; AVX512-NEXT: cmoval %ecx, %eax 2614; AVX512-NEXT: vpinsrd $3, %eax, %xmm4, %xmm1 2615; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 2616; AVX512-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm0 2617; AVX512-NEXT: vpmovdb %zmm0, %xmm0 2618; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm8, %ymm0 2619; AVX512-NEXT: retq 2620 %1 = fcmp ogt <32 x float> %a0, %a1 2621 ret <32 x i1> %1 2622} 2623 2624define <16 x i1> @test_cmp_v16i64(<16 x i64> %a0, <16 x i64> %a1) nounwind { 2625; SSE2-LABEL: test_cmp_v16i64: 2626; SSE2: # BB#0: 2627; SSE2-NEXT: movdqa {{.*#+}} xmm8 = [2147483648,0,2147483648,0] 2628; SSE2-NEXT: pxor %xmm8, %xmm7 2629; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm9 2630; SSE2-NEXT: pxor %xmm8, %xmm9 2631; SSE2-NEXT: movdqa %xmm7, %xmm10 2632; SSE2-NEXT: pcmpgtd %xmm9, %xmm10 2633; SSE2-NEXT: pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2] 2634; SSE2-NEXT: pcmpeqd %xmm7, %xmm9 2635; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm9[1,1,3,3] 2636; SSE2-NEXT: pand %xmm11, %xmm7 2637; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3] 2638; SSE2-NEXT: por %xmm7, %xmm9 2639; SSE2-NEXT: pxor %xmm8, %xmm6 2640; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm7 2641; SSE2-NEXT: pxor %xmm8, %xmm7 2642; SSE2-NEXT: movdqa %xmm6, %xmm10 2643; SSE2-NEXT: pcmpgtd %xmm7, %xmm10 2644; SSE2-NEXT: pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2] 2645; SSE2-NEXT: pcmpeqd %xmm6, %xmm7 2646; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm7[1,1,3,3] 2647; SSE2-NEXT: pand %xmm11, %xmm7 2648; SSE2-NEXT: pshufd {{.*#+}} xmm10 = xmm10[1,1,3,3] 2649; SSE2-NEXT: por %xmm7, %xmm10 2650; SSE2-NEXT: packsswb %xmm9, %xmm10 2651; SSE2-NEXT: pxor %xmm8, %xmm5 2652; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm7 2653; SSE2-NEXT: pxor %xmm8, %xmm7 2654; SSE2-NEXT: movdqa %xmm5, %xmm6 2655; SSE2-NEXT: pcmpgtd %xmm7, %xmm6 2656; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm6[0,0,2,2] 2657; SSE2-NEXT: pcmpeqd %xmm5, %xmm7 2658; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3] 2659; SSE2-NEXT: pand %xmm9, %xmm5 2660; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3] 2661; SSE2-NEXT: por %xmm5, %xmm6 2662; SSE2-NEXT: pxor %xmm8, %xmm4 2663; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm5 2664; SSE2-NEXT: pxor %xmm8, %xmm5 2665; SSE2-NEXT: movdqa %xmm4, %xmm7 2666; SSE2-NEXT: pcmpgtd %xmm5, %xmm7 2667; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm7[0,0,2,2] 2668; SSE2-NEXT: pcmpeqd %xmm4, %xmm5 2669; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3] 2670; SSE2-NEXT: pand %xmm9, %xmm5 2671; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm7[1,1,3,3] 2672; SSE2-NEXT: por %xmm5, %xmm4 2673; SSE2-NEXT: packsswb %xmm6, %xmm4 2674; SSE2-NEXT: packsswb %xmm10, %xmm4 2675; SSE2-NEXT: pxor %xmm8, %xmm3 2676; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm5 2677; SSE2-NEXT: pxor %xmm8, %xmm5 2678; SSE2-NEXT: movdqa %xmm3, %xmm6 2679; SSE2-NEXT: pcmpgtd %xmm5, %xmm6 2680; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2] 2681; SSE2-NEXT: pcmpeqd %xmm3, %xmm5 2682; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm5[1,1,3,3] 2683; SSE2-NEXT: pand %xmm7, %xmm3 2684; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3] 2685; SSE2-NEXT: por %xmm3, %xmm5 2686; SSE2-NEXT: pxor %xmm8, %xmm2 2687; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 2688; SSE2-NEXT: pxor %xmm8, %xmm3 2689; SSE2-NEXT: movdqa %xmm2, %xmm6 2690; SSE2-NEXT: pcmpgtd %xmm3, %xmm6 2691; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2] 2692; SSE2-NEXT: pcmpeqd %xmm2, %xmm3 2693; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3] 2694; SSE2-NEXT: pand %xmm7, %xmm3 2695; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm6[1,1,3,3] 2696; SSE2-NEXT: por %xmm3, %xmm2 2697; SSE2-NEXT: packsswb %xmm5, %xmm2 2698; SSE2-NEXT: pxor %xmm8, %xmm1 2699; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 2700; SSE2-NEXT: pxor %xmm8, %xmm3 2701; SSE2-NEXT: movdqa %xmm1, %xmm5 2702; SSE2-NEXT: pcmpgtd %xmm3, %xmm5 2703; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2] 2704; SSE2-NEXT: pcmpeqd %xmm1, %xmm3 2705; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm3[1,1,3,3] 2706; SSE2-NEXT: pand %xmm6, %xmm1 2707; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm5[1,1,3,3] 2708; SSE2-NEXT: por %xmm1, %xmm3 2709; SSE2-NEXT: pxor %xmm8, %xmm0 2710; SSE2-NEXT: pxor {{[0-9]+}}(%rsp), %xmm8 2711; SSE2-NEXT: movdqa %xmm0, %xmm1 2712; SSE2-NEXT: pcmpgtd %xmm8, %xmm1 2713; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm1[0,0,2,2] 2714; SSE2-NEXT: pcmpeqd %xmm0, %xmm8 2715; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm8[1,1,3,3] 2716; SSE2-NEXT: pand %xmm5, %xmm6 2717; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3] 2718; SSE2-NEXT: por %xmm6, %xmm0 2719; SSE2-NEXT: packsswb %xmm3, %xmm0 2720; SSE2-NEXT: packsswb %xmm2, %xmm0 2721; SSE2-NEXT: packsswb %xmm4, %xmm0 2722; SSE2-NEXT: retq 2723; 2724; SSE42-LABEL: test_cmp_v16i64: 2725; SSE42: # BB#0: 2726; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm7 2727; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm6 2728; SSE42-NEXT: packsswb %xmm7, %xmm6 2729; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm5 2730; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm4 2731; SSE42-NEXT: packsswb %xmm5, %xmm4 2732; SSE42-NEXT: packsswb %xmm6, %xmm4 2733; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm3 2734; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm2 2735; SSE42-NEXT: packsswb %xmm3, %xmm2 2736; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm1 2737; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm0 2738; SSE42-NEXT: packsswb %xmm1, %xmm0 2739; SSE42-NEXT: packsswb %xmm2, %xmm0 2740; SSE42-NEXT: packsswb %xmm4, %xmm0 2741; SSE42-NEXT: retq 2742; 2743; AVX1-LABEL: test_cmp_v16i64: 2744; AVX1: # BB#0: 2745; AVX1-NEXT: vextractf128 $1, %ymm7, %xmm8 2746; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm9 2747; AVX1-NEXT: vpcmpgtq %xmm8, %xmm9, %xmm8 2748; AVX1-NEXT: vpcmpgtq %xmm7, %xmm3, %xmm3 2749; AVX1-NEXT: vpacksswb %xmm8, %xmm3, %xmm8 2750; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm7 2751; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm3 2752; AVX1-NEXT: vpcmpgtq %xmm7, %xmm3, %xmm3 2753; AVX1-NEXT: vpcmpgtq %xmm6, %xmm2, %xmm2 2754; AVX1-NEXT: vpacksswb %xmm3, %xmm2, %xmm2 2755; AVX1-NEXT: vpacksswb %xmm8, %xmm2, %xmm2 2756; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm3 2757; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm6 2758; AVX1-NEXT: vpcmpgtq %xmm3, %xmm6, %xmm3 2759; AVX1-NEXT: vpcmpgtq %xmm5, %xmm1, %xmm1 2760; AVX1-NEXT: vpacksswb %xmm3, %xmm1, %xmm1 2761; AVX1-NEXT: vextractf128 $1, %ymm4, %xmm3 2762; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5 2763; AVX1-NEXT: vpcmpgtq %xmm3, %xmm5, %xmm3 2764; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm0 2765; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 2766; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 2767; AVX1-NEXT: vpacksswb %xmm2, %xmm0, %xmm0 2768; AVX1-NEXT: vzeroupper 2769; AVX1-NEXT: retq 2770; 2771; AVX2-LABEL: test_cmp_v16i64: 2772; AVX2: # BB#0: 2773; AVX2-NEXT: vpcmpgtq %ymm7, %ymm3, %ymm3 2774; AVX2-NEXT: vpcmpgtq %ymm6, %ymm2, %ymm2 2775; AVX2-NEXT: vpacksswb %ymm3, %ymm2, %ymm2 2776; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,1,3] 2777; AVX2-NEXT: vpcmpgtq %ymm5, %ymm1, %ymm1 2778; AVX2-NEXT: vpcmpgtq %ymm4, %ymm0, %ymm0 2779; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 2780; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 2781; AVX2-NEXT: vpacksswb %ymm2, %ymm0, %ymm0 2782; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 2783; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 2784; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 2785; AVX2-NEXT: vzeroupper 2786; AVX2-NEXT: retq 2787; 2788; AVX512-LABEL: test_cmp_v16i64: 2789; AVX512: # BB#0: 2790; AVX512-NEXT: vextracti32x4 $3, %zmm2, %xmm4 2791; AVX512-NEXT: vpextrq $1, %xmm4, %rcx 2792; AVX512-NEXT: vextracti32x4 $3, %zmm0, %xmm5 2793; AVX512-NEXT: vpextrq $1, %xmm5, %rdx 2794; AVX512-NEXT: xorl %eax, %eax 2795; AVX512-NEXT: cmpq %rcx, %rdx 2796; AVX512-NEXT: movq $-1, %rcx 2797; AVX512-NEXT: movl $0, %edx 2798; AVX512-NEXT: cmovgq %rcx, %rdx 2799; AVX512-NEXT: vmovq %rdx, %xmm6 2800; AVX512-NEXT: vmovq %xmm4, %rdx 2801; AVX512-NEXT: vmovq %xmm5, %rsi 2802; AVX512-NEXT: cmpq %rdx, %rsi 2803; AVX512-NEXT: movl $0, %edx 2804; AVX512-NEXT: cmovgq %rcx, %rdx 2805; AVX512-NEXT: vmovq %rdx, %xmm4 2806; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 2807; AVX512-NEXT: vextracti32x4 $2, %zmm2, %xmm5 2808; AVX512-NEXT: vpextrq $1, %xmm5, %rdx 2809; AVX512-NEXT: vextracti32x4 $2, %zmm0, %xmm6 2810; AVX512-NEXT: vpextrq $1, %xmm6, %rsi 2811; AVX512-NEXT: cmpq %rdx, %rsi 2812; AVX512-NEXT: movl $0, %edx 2813; AVX512-NEXT: cmovgq %rcx, %rdx 2814; AVX512-NEXT: vmovq %rdx, %xmm7 2815; AVX512-NEXT: vmovq %xmm5, %rdx 2816; AVX512-NEXT: vmovq %xmm6, %rsi 2817; AVX512-NEXT: cmpq %rdx, %rsi 2818; AVX512-NEXT: movl $0, %edx 2819; AVX512-NEXT: cmovgq %rcx, %rdx 2820; AVX512-NEXT: vmovq %rdx, %xmm5 2821; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm7[0] 2822; AVX512-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4 2823; AVX512-NEXT: vextracti32x4 $1, %zmm2, %xmm5 2824; AVX512-NEXT: vpextrq $1, %xmm5, %rdx 2825; AVX512-NEXT: vextracti32x4 $1, %zmm0, %xmm6 2826; AVX512-NEXT: vpextrq $1, %xmm6, %rsi 2827; AVX512-NEXT: cmpq %rdx, %rsi 2828; AVX512-NEXT: movl $0, %edx 2829; AVX512-NEXT: cmovgq %rcx, %rdx 2830; AVX512-NEXT: vmovq %rdx, %xmm7 2831; AVX512-NEXT: vmovq %xmm5, %rdx 2832; AVX512-NEXT: vmovq %xmm6, %rsi 2833; AVX512-NEXT: cmpq %rdx, %rsi 2834; AVX512-NEXT: movl $0, %edx 2835; AVX512-NEXT: cmovgq %rcx, %rdx 2836; AVX512-NEXT: vmovq %rdx, %xmm5 2837; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm7[0] 2838; AVX512-NEXT: vpextrq $1, %xmm2, %rdx 2839; AVX512-NEXT: vpextrq $1, %xmm0, %rsi 2840; AVX512-NEXT: cmpq %rdx, %rsi 2841; AVX512-NEXT: movl $0, %edx 2842; AVX512-NEXT: cmovgq %rcx, %rdx 2843; AVX512-NEXT: vmovq %rdx, %xmm6 2844; AVX512-NEXT: vmovq %xmm2, %rdx 2845; AVX512-NEXT: vmovq %xmm0, %rsi 2846; AVX512-NEXT: cmpq %rdx, %rsi 2847; AVX512-NEXT: movl $0, %edx 2848; AVX512-NEXT: cmovgq %rcx, %rdx 2849; AVX512-NEXT: vmovq %rdx, %xmm0 2850; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm6[0] 2851; AVX512-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0 2852; AVX512-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm0 2853; AVX512-NEXT: vpmovqd %zmm0, %ymm0 2854; AVX512-NEXT: vextracti32x4 $3, %zmm3, %xmm2 2855; AVX512-NEXT: vpextrq $1, %xmm2, %rdx 2856; AVX512-NEXT: vextracti32x4 $3, %zmm1, %xmm4 2857; AVX512-NEXT: vpextrq $1, %xmm4, %rsi 2858; AVX512-NEXT: cmpq %rdx, %rsi 2859; AVX512-NEXT: movl $0, %edx 2860; AVX512-NEXT: cmovgq %rcx, %rdx 2861; AVX512-NEXT: vmovq %rdx, %xmm5 2862; AVX512-NEXT: vmovq %xmm2, %rdx 2863; AVX512-NEXT: vmovq %xmm4, %rsi 2864; AVX512-NEXT: cmpq %rdx, %rsi 2865; AVX512-NEXT: movl $0, %edx 2866; AVX512-NEXT: cmovgq %rcx, %rdx 2867; AVX512-NEXT: vmovq %rdx, %xmm2 2868; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm5[0] 2869; AVX512-NEXT: vextracti32x4 $2, %zmm3, %xmm4 2870; AVX512-NEXT: vpextrq $1, %xmm4, %rdx 2871; AVX512-NEXT: vextracti32x4 $2, %zmm1, %xmm5 2872; AVX512-NEXT: vpextrq $1, %xmm5, %rsi 2873; AVX512-NEXT: cmpq %rdx, %rsi 2874; AVX512-NEXT: movl $0, %edx 2875; AVX512-NEXT: cmovgq %rcx, %rdx 2876; AVX512-NEXT: vmovq %rdx, %xmm6 2877; AVX512-NEXT: vmovq %xmm4, %rdx 2878; AVX512-NEXT: vmovq %xmm5, %rsi 2879; AVX512-NEXT: cmpq %rdx, %rsi 2880; AVX512-NEXT: movl $0, %edx 2881; AVX512-NEXT: cmovgq %rcx, %rdx 2882; AVX512-NEXT: vmovq %rdx, %xmm4 2883; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 2884; AVX512-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2 2885; AVX512-NEXT: vextracti32x4 $1, %zmm3, %xmm4 2886; AVX512-NEXT: vpextrq $1, %xmm4, %rdx 2887; AVX512-NEXT: vextracti32x4 $1, %zmm1, %xmm5 2888; AVX512-NEXT: vpextrq $1, %xmm5, %rsi 2889; AVX512-NEXT: cmpq %rdx, %rsi 2890; AVX512-NEXT: movl $0, %edx 2891; AVX512-NEXT: cmovgq %rcx, %rdx 2892; AVX512-NEXT: vmovq %rdx, %xmm6 2893; AVX512-NEXT: vmovq %xmm4, %rdx 2894; AVX512-NEXT: vmovq %xmm5, %rsi 2895; AVX512-NEXT: cmpq %rdx, %rsi 2896; AVX512-NEXT: movl $0, %edx 2897; AVX512-NEXT: cmovgq %rcx, %rdx 2898; AVX512-NEXT: vmovq %rdx, %xmm4 2899; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 2900; AVX512-NEXT: vpextrq $1, %xmm3, %rdx 2901; AVX512-NEXT: vpextrq $1, %xmm1, %rsi 2902; AVX512-NEXT: cmpq %rdx, %rsi 2903; AVX512-NEXT: movl $0, %edx 2904; AVX512-NEXT: cmovgq %rcx, %rdx 2905; AVX512-NEXT: vmovq %rdx, %xmm5 2906; AVX512-NEXT: vmovq %xmm3, %rdx 2907; AVX512-NEXT: vmovq %xmm1, %rsi 2908; AVX512-NEXT: cmpq %rdx, %rsi 2909; AVX512-NEXT: cmovgq %rcx, %rax 2910; AVX512-NEXT: vmovq %rax, %xmm1 2911; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm5[0] 2912; AVX512-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1 2913; AVX512-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1 2914; AVX512-NEXT: vpmovqd %zmm1, %ymm1 2915; AVX512-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 2916; AVX512-NEXT: vpmovdb %zmm0, %xmm0 2917; AVX512-NEXT: retq 2918 %1 = icmp sgt <16 x i64> %a0, %a1 2919 ret <16 x i1> %1 2920} 2921 2922define <32 x i1> @test_cmp_v32i32(<32 x i32> %a0, <32 x i32> %a1) nounwind { 2923; SSE2-LABEL: test_cmp_v32i32: 2924; SSE2: # BB#0: 2925; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm3 2926; SSE2-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[0,2,2,3,4,5,6,7] 2927; SSE2-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,6,6,7] 2928; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3] 2929; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm2 2930; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[0,2,2,3,4,5,6,7] 2931; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7] 2932; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] 2933; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0] 2934; SSE2-NEXT: psllw $15, %xmm2 2935; SSE2-NEXT: psraw $15, %xmm2 2936; SSE2-NEXT: movdqa {{.*#+}} xmm3 = [255,255,255,255,255,255,255,255] 2937; SSE2-NEXT: pand %xmm3, %xmm2 2938; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm1 2939; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,2,2,3,4,5,6,7] 2940; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 2941; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 2942; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm0 2943; SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7] 2944; SSE2-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,6,7] 2945; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3] 2946; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 2947; SSE2-NEXT: psllw $15, %xmm0 2948; SSE2-NEXT: psraw $15, %xmm0 2949; SSE2-NEXT: pand %xmm3, %xmm0 2950; SSE2-NEXT: packuswb %xmm2, %xmm0 2951; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm7 2952; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm7[0,2,2,3,4,5,6,7] 2953; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 2954; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 2955; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm6 2956; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm6[0,2,2,3,4,5,6,7] 2957; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7] 2958; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] 2959; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm1[0] 2960; SSE2-NEXT: psllw $15, %xmm2 2961; SSE2-NEXT: psraw $15, %xmm2 2962; SSE2-NEXT: pand %xmm3, %xmm2 2963; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm5 2964; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm5[0,2,2,3,4,5,6,7] 2965; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 2966; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 2967; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm4 2968; SSE2-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,2,2,3,4,5,6,7] 2969; SSE2-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,6,6,7] 2970; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3] 2971; SSE2-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm1[0] 2972; SSE2-NEXT: psllw $15, %xmm4 2973; SSE2-NEXT: psraw $15, %xmm4 2974; SSE2-NEXT: pand %xmm3, %xmm4 2975; SSE2-NEXT: packuswb %xmm2, %xmm4 2976; SSE2-NEXT: movdqa %xmm4, -{{[0-9]+}}(%rsp) 2977; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2978; SSE2-NEXT: andb $1, %al 2979; SSE2-NEXT: movb %al, 2(%rdi) 2980; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 2981; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2982; SSE2-NEXT: andb $1, %al 2983; SSE2-NEXT: movb %al, (%rdi) 2984; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2985; SSE2-NEXT: andb $1, %al 2986; SSE2-NEXT: movb %al, 2(%rdi) 2987; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2988; SSE2-NEXT: andb $1, %al 2989; SSE2-NEXT: movb %al, (%rdi) 2990; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2991; SSE2-NEXT: andb $1, %al 2992; SSE2-NEXT: movb %al, 2(%rdi) 2993; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2994; SSE2-NEXT: andb $1, %al 2995; SSE2-NEXT: movb %al, (%rdi) 2996; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 2997; SSE2-NEXT: andb $1, %al 2998; SSE2-NEXT: movb %al, 2(%rdi) 2999; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3000; SSE2-NEXT: andb $1, %al 3001; SSE2-NEXT: movb %al, (%rdi) 3002; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3003; SSE2-NEXT: andb $1, %al 3004; SSE2-NEXT: movb %al, 2(%rdi) 3005; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3006; SSE2-NEXT: andb $1, %al 3007; SSE2-NEXT: movb %al, (%rdi) 3008; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3009; SSE2-NEXT: andb $1, %al 3010; SSE2-NEXT: movb %al, 2(%rdi) 3011; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3012; SSE2-NEXT: andb $1, %al 3013; SSE2-NEXT: movb %al, (%rdi) 3014; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3015; SSE2-NEXT: andb $1, %al 3016; SSE2-NEXT: movb %al, 2(%rdi) 3017; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3018; SSE2-NEXT: andb $1, %al 3019; SSE2-NEXT: movb %al, (%rdi) 3020; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3021; SSE2-NEXT: andb $1, %al 3022; SSE2-NEXT: movb %al, 2(%rdi) 3023; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3024; SSE2-NEXT: andb $1, %al 3025; SSE2-NEXT: movb %al, (%rdi) 3026; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3027; SSE2-NEXT: andb $1, %al 3028; SSE2-NEXT: movb %al, 2(%rdi) 3029; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3030; SSE2-NEXT: andb $1, %al 3031; SSE2-NEXT: movb %al, (%rdi) 3032; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3033; SSE2-NEXT: andb $1, %al 3034; SSE2-NEXT: movb %al, 2(%rdi) 3035; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3036; SSE2-NEXT: andb $1, %al 3037; SSE2-NEXT: movb %al, (%rdi) 3038; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3039; SSE2-NEXT: andb $1, %al 3040; SSE2-NEXT: movb %al, 2(%rdi) 3041; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3042; SSE2-NEXT: andb $1, %al 3043; SSE2-NEXT: movb %al, (%rdi) 3044; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3045; SSE2-NEXT: andb $1, %al 3046; SSE2-NEXT: movb %al, 2(%rdi) 3047; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3048; SSE2-NEXT: andb $1, %al 3049; SSE2-NEXT: movb %al, (%rdi) 3050; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3051; SSE2-NEXT: andb $1, %al 3052; SSE2-NEXT: movb %al, 2(%rdi) 3053; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3054; SSE2-NEXT: andb $1, %al 3055; SSE2-NEXT: movb %al, (%rdi) 3056; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3057; SSE2-NEXT: andb $1, %al 3058; SSE2-NEXT: movb %al, 2(%rdi) 3059; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3060; SSE2-NEXT: andb $1, %al 3061; SSE2-NEXT: movb %al, (%rdi) 3062; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3063; SSE2-NEXT: andb $1, %al 3064; SSE2-NEXT: movb %al, 2(%rdi) 3065; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3066; SSE2-NEXT: andb $1, %al 3067; SSE2-NEXT: movb %al, (%rdi) 3068; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3069; SSE2-NEXT: andb $1, %al 3070; SSE2-NEXT: movb %al, 2(%rdi) 3071; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3072; SSE2-NEXT: andb $1, %al 3073; SSE2-NEXT: movb %al, (%rdi) 3074; SSE2-NEXT: movq %rdi, %rax 3075; SSE2-NEXT: retq 3076; 3077; SSE42-LABEL: test_cmp_v32i32: 3078; SSE42: # BB#0: 3079; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm3 3080; SSE42-NEXT: movdqa {{.*#+}} xmm8 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15] 3081; SSE42-NEXT: pshufb %xmm8, %xmm3 3082; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm2 3083; SSE42-NEXT: pshufb %xmm8, %xmm2 3084; SSE42-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0] 3085; SSE42-NEXT: psllw $15, %xmm2 3086; SSE42-NEXT: psraw $15, %xmm2 3087; SSE42-NEXT: movdqa {{.*#+}} xmm3 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u> 3088; SSE42-NEXT: pshufb %xmm3, %xmm2 3089; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm1 3090; SSE42-NEXT: pshufb %xmm8, %xmm1 3091; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm0 3092; SSE42-NEXT: pshufb %xmm8, %xmm0 3093; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 3094; SSE42-NEXT: psllw $15, %xmm0 3095; SSE42-NEXT: psraw $15, %xmm0 3096; SSE42-NEXT: pshufb %xmm3, %xmm0 3097; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0] 3098; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm7 3099; SSE42-NEXT: pshufb %xmm8, %xmm7 3100; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm6 3101; SSE42-NEXT: pshufb %xmm8, %xmm6 3102; SSE42-NEXT: punpcklqdq {{.*#+}} xmm6 = xmm6[0],xmm7[0] 3103; SSE42-NEXT: psllw $15, %xmm6 3104; SSE42-NEXT: psraw $15, %xmm6 3105; SSE42-NEXT: pshufb %xmm3, %xmm6 3106; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm5 3107; SSE42-NEXT: pshufb %xmm8, %xmm5 3108; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm4 3109; SSE42-NEXT: pshufb %xmm8, %xmm4 3110; SSE42-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0] 3111; SSE42-NEXT: psllw $15, %xmm4 3112; SSE42-NEXT: psraw $15, %xmm4 3113; SSE42-NEXT: pshufb %xmm3, %xmm4 3114; SSE42-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 3115; SSE42-NEXT: pextrb $15, %xmm4, %eax 3116; SSE42-NEXT: andb $1, %al 3117; SSE42-NEXT: movb %al, 2(%rdi) 3118; SSE42-NEXT: pextrb $14, %xmm4, %eax 3119; SSE42-NEXT: andb $1, %al 3120; SSE42-NEXT: movb %al, 2(%rdi) 3121; SSE42-NEXT: pextrb $13, %xmm4, %eax 3122; SSE42-NEXT: andb $1, %al 3123; SSE42-NEXT: movb %al, 2(%rdi) 3124; SSE42-NEXT: pextrb $12, %xmm4, %eax 3125; SSE42-NEXT: andb $1, %al 3126; SSE42-NEXT: movb %al, 2(%rdi) 3127; SSE42-NEXT: pextrb $11, %xmm4, %eax 3128; SSE42-NEXT: andb $1, %al 3129; SSE42-NEXT: movb %al, 2(%rdi) 3130; SSE42-NEXT: pextrb $10, %xmm4, %eax 3131; SSE42-NEXT: andb $1, %al 3132; SSE42-NEXT: movb %al, 2(%rdi) 3133; SSE42-NEXT: pextrb $9, %xmm4, %eax 3134; SSE42-NEXT: andb $1, %al 3135; SSE42-NEXT: movb %al, 2(%rdi) 3136; SSE42-NEXT: pextrb $8, %xmm4, %eax 3137; SSE42-NEXT: andb $1, %al 3138; SSE42-NEXT: movb %al, 2(%rdi) 3139; SSE42-NEXT: pextrb $7, %xmm4, %eax 3140; SSE42-NEXT: andb $1, %al 3141; SSE42-NEXT: movb %al, 2(%rdi) 3142; SSE42-NEXT: pextrb $6, %xmm4, %eax 3143; SSE42-NEXT: andb $1, %al 3144; SSE42-NEXT: movb %al, 2(%rdi) 3145; SSE42-NEXT: pextrb $5, %xmm4, %eax 3146; SSE42-NEXT: andb $1, %al 3147; SSE42-NEXT: movb %al, 2(%rdi) 3148; SSE42-NEXT: pextrb $4, %xmm4, %eax 3149; SSE42-NEXT: andb $1, %al 3150; SSE42-NEXT: movb %al, 2(%rdi) 3151; SSE42-NEXT: pextrb $3, %xmm4, %eax 3152; SSE42-NEXT: andb $1, %al 3153; SSE42-NEXT: movb %al, 2(%rdi) 3154; SSE42-NEXT: pextrb $2, %xmm4, %eax 3155; SSE42-NEXT: andb $1, %al 3156; SSE42-NEXT: movb %al, 2(%rdi) 3157; SSE42-NEXT: pextrb $1, %xmm4, %eax 3158; SSE42-NEXT: andb $1, %al 3159; SSE42-NEXT: movb %al, 2(%rdi) 3160; SSE42-NEXT: pextrb $0, %xmm4, %eax 3161; SSE42-NEXT: andb $1, %al 3162; SSE42-NEXT: movb %al, 2(%rdi) 3163; SSE42-NEXT: pextrb $15, %xmm0, %eax 3164; SSE42-NEXT: andb $1, %al 3165; SSE42-NEXT: movb %al, (%rdi) 3166; SSE42-NEXT: pextrb $14, %xmm0, %eax 3167; SSE42-NEXT: andb $1, %al 3168; SSE42-NEXT: movb %al, (%rdi) 3169; SSE42-NEXT: pextrb $13, %xmm0, %eax 3170; SSE42-NEXT: andb $1, %al 3171; SSE42-NEXT: movb %al, (%rdi) 3172; SSE42-NEXT: pextrb $12, %xmm0, %eax 3173; SSE42-NEXT: andb $1, %al 3174; SSE42-NEXT: movb %al, (%rdi) 3175; SSE42-NEXT: pextrb $11, %xmm0, %eax 3176; SSE42-NEXT: andb $1, %al 3177; SSE42-NEXT: movb %al, (%rdi) 3178; SSE42-NEXT: pextrb $10, %xmm0, %eax 3179; SSE42-NEXT: andb $1, %al 3180; SSE42-NEXT: movb %al, (%rdi) 3181; SSE42-NEXT: pextrb $9, %xmm0, %eax 3182; SSE42-NEXT: andb $1, %al 3183; SSE42-NEXT: movb %al, (%rdi) 3184; SSE42-NEXT: pextrb $8, %xmm0, %eax 3185; SSE42-NEXT: andb $1, %al 3186; SSE42-NEXT: movb %al, (%rdi) 3187; SSE42-NEXT: pextrb $7, %xmm0, %eax 3188; SSE42-NEXT: andb $1, %al 3189; SSE42-NEXT: movb %al, (%rdi) 3190; SSE42-NEXT: pextrb $6, %xmm0, %eax 3191; SSE42-NEXT: andb $1, %al 3192; SSE42-NEXT: movb %al, (%rdi) 3193; SSE42-NEXT: pextrb $5, %xmm0, %eax 3194; SSE42-NEXT: andb $1, %al 3195; SSE42-NEXT: movb %al, (%rdi) 3196; SSE42-NEXT: pextrb $4, %xmm0, %eax 3197; SSE42-NEXT: andb $1, %al 3198; SSE42-NEXT: movb %al, (%rdi) 3199; SSE42-NEXT: pextrb $3, %xmm0, %eax 3200; SSE42-NEXT: andb $1, %al 3201; SSE42-NEXT: movb %al, (%rdi) 3202; SSE42-NEXT: pextrb $2, %xmm0, %eax 3203; SSE42-NEXT: andb $1, %al 3204; SSE42-NEXT: movb %al, (%rdi) 3205; SSE42-NEXT: pextrb $1, %xmm0, %eax 3206; SSE42-NEXT: andb $1, %al 3207; SSE42-NEXT: movb %al, (%rdi) 3208; SSE42-NEXT: pextrb $0, %xmm0, %eax 3209; SSE42-NEXT: andb $1, %al 3210; SSE42-NEXT: movb %al, (%rdi) 3211; SSE42-NEXT: movq %rdi, %rax 3212; SSE42-NEXT: retq 3213; 3214; AVX1-LABEL: test_cmp_v32i32: 3215; AVX1: # BB#0: 3216; AVX1-NEXT: vextractf128 $1, %ymm7, %xmm8 3217; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm9 3218; AVX1-NEXT: vpcmpgtd %xmm8, %xmm9, %xmm8 3219; AVX1-NEXT: vpcmpgtd %xmm7, %xmm3, %xmm3 3220; AVX1-NEXT: vpacksswb %xmm8, %xmm3, %xmm8 3221; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm7 3222; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm3 3223; AVX1-NEXT: vpcmpgtd %xmm7, %xmm3, %xmm3 3224; AVX1-NEXT: vpcmpgtd %xmm6, %xmm2, %xmm2 3225; AVX1-NEXT: vpacksswb %xmm3, %xmm2, %xmm2 3226; AVX1-NEXT: vpacksswb %xmm8, %xmm2, %xmm2 3227; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm3 3228; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm6 3229; AVX1-NEXT: vpcmpgtd %xmm3, %xmm6, %xmm3 3230; AVX1-NEXT: vpcmpgtd %xmm5, %xmm1, %xmm1 3231; AVX1-NEXT: vpacksswb %xmm3, %xmm1, %xmm1 3232; AVX1-NEXT: vextractf128 $1, %ymm4, %xmm3 3233; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5 3234; AVX1-NEXT: vpcmpgtd %xmm3, %xmm5, %xmm3 3235; AVX1-NEXT: vpcmpgtd %xmm4, %xmm0, %xmm0 3236; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 3237; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 3238; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 3239; AVX1-NEXT: retq 3240; 3241; AVX2-LABEL: test_cmp_v32i32: 3242; AVX2: # BB#0: 3243; AVX2-NEXT: vpcmpgtd %ymm7, %ymm3, %ymm3 3244; AVX2-NEXT: vpcmpgtd %ymm6, %ymm2, %ymm2 3245; AVX2-NEXT: vpacksswb %ymm3, %ymm2, %ymm2 3246; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,1,3] 3247; AVX2-NEXT: vpcmpgtd %ymm5, %ymm1, %ymm1 3248; AVX2-NEXT: vpcmpgtd %ymm4, %ymm0, %ymm0 3249; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 3250; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 3251; AVX2-NEXT: vpacksswb %ymm2, %ymm0, %ymm0 3252; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 3253; AVX2-NEXT: retq 3254; 3255; AVX512-LABEL: test_cmp_v32i32: 3256; AVX512: # BB#0: 3257; AVX512-NEXT: vextracti32x4 $3, %zmm2, %xmm4 3258; AVX512-NEXT: vpextrd $1, %xmm4, %ecx 3259; AVX512-NEXT: vextracti32x4 $3, %zmm0, %xmm5 3260; AVX512-NEXT: vpextrd $1, %xmm5, %edx 3261; AVX512-NEXT: xorl %eax, %eax 3262; AVX512-NEXT: cmpl %ecx, %edx 3263; AVX512-NEXT: movl $-1, %ecx 3264; AVX512-NEXT: movl $0, %edx 3265; AVX512-NEXT: cmovgl %ecx, %edx 3266; AVX512-NEXT: vmovd %xmm4, %esi 3267; AVX512-NEXT: vmovd %xmm5, %edi 3268; AVX512-NEXT: cmpl %esi, %edi 3269; AVX512-NEXT: movl $0, %esi 3270; AVX512-NEXT: cmovgl %ecx, %esi 3271; AVX512-NEXT: vmovd %esi, %xmm6 3272; AVX512-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 3273; AVX512-NEXT: vpextrd $2, %xmm4, %edx 3274; AVX512-NEXT: vpextrd $2, %xmm5, %esi 3275; AVX512-NEXT: cmpl %edx, %esi 3276; AVX512-NEXT: movl $0, %edx 3277; AVX512-NEXT: cmovgl %ecx, %edx 3278; AVX512-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 3279; AVX512-NEXT: vpextrd $3, %xmm4, %edx 3280; AVX512-NEXT: vpextrd $3, %xmm5, %esi 3281; AVX512-NEXT: cmpl %edx, %esi 3282; AVX512-NEXT: movl $0, %edx 3283; AVX512-NEXT: cmovgl %ecx, %edx 3284; AVX512-NEXT: vpinsrd $3, %edx, %xmm6, %xmm4 3285; AVX512-NEXT: vextracti32x4 $2, %zmm2, %xmm5 3286; AVX512-NEXT: vpextrd $1, %xmm5, %edx 3287; AVX512-NEXT: vextracti32x4 $2, %zmm0, %xmm6 3288; AVX512-NEXT: vpextrd $1, %xmm6, %esi 3289; AVX512-NEXT: cmpl %edx, %esi 3290; AVX512-NEXT: movl $0, %edx 3291; AVX512-NEXT: cmovgl %ecx, %edx 3292; AVX512-NEXT: vmovd %xmm5, %esi 3293; AVX512-NEXT: vmovd %xmm6, %edi 3294; AVX512-NEXT: cmpl %esi, %edi 3295; AVX512-NEXT: movl $0, %esi 3296; AVX512-NEXT: cmovgl %ecx, %esi 3297; AVX512-NEXT: vmovd %esi, %xmm7 3298; AVX512-NEXT: vpinsrd $1, %edx, %xmm7, %xmm7 3299; AVX512-NEXT: vpextrd $2, %xmm5, %edx 3300; AVX512-NEXT: vpextrd $2, %xmm6, %esi 3301; AVX512-NEXT: cmpl %edx, %esi 3302; AVX512-NEXT: movl $0, %edx 3303; AVX512-NEXT: cmovgl %ecx, %edx 3304; AVX512-NEXT: vpinsrd $2, %edx, %xmm7, %xmm7 3305; AVX512-NEXT: vpextrd $3, %xmm5, %edx 3306; AVX512-NEXT: vpextrd $3, %xmm6, %esi 3307; AVX512-NEXT: cmpl %edx, %esi 3308; AVX512-NEXT: movl $0, %edx 3309; AVX512-NEXT: cmovgl %ecx, %edx 3310; AVX512-NEXT: vpinsrd $3, %edx, %xmm7, %xmm5 3311; AVX512-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4 3312; AVX512-NEXT: vextracti32x4 $1, %zmm2, %xmm5 3313; AVX512-NEXT: vpextrd $1, %xmm5, %edx 3314; AVX512-NEXT: vextracti32x4 $1, %zmm0, %xmm6 3315; AVX512-NEXT: vpextrd $1, %xmm6, %esi 3316; AVX512-NEXT: cmpl %edx, %esi 3317; AVX512-NEXT: movl $0, %edx 3318; AVX512-NEXT: cmovgl %ecx, %edx 3319; AVX512-NEXT: vmovd %xmm5, %esi 3320; AVX512-NEXT: vmovd %xmm6, %edi 3321; AVX512-NEXT: cmpl %esi, %edi 3322; AVX512-NEXT: movl $0, %esi 3323; AVX512-NEXT: cmovgl %ecx, %esi 3324; AVX512-NEXT: vmovd %esi, %xmm7 3325; AVX512-NEXT: vpinsrd $1, %edx, %xmm7, %xmm7 3326; AVX512-NEXT: vpextrd $2, %xmm5, %edx 3327; AVX512-NEXT: vpextrd $2, %xmm6, %esi 3328; AVX512-NEXT: cmpl %edx, %esi 3329; AVX512-NEXT: movl $0, %edx 3330; AVX512-NEXT: cmovgl %ecx, %edx 3331; AVX512-NEXT: vpinsrd $2, %edx, %xmm7, %xmm7 3332; AVX512-NEXT: vpextrd $3, %xmm5, %edx 3333; AVX512-NEXT: vpextrd $3, %xmm6, %esi 3334; AVX512-NEXT: cmpl %edx, %esi 3335; AVX512-NEXT: movl $0, %edx 3336; AVX512-NEXT: cmovgl %ecx, %edx 3337; AVX512-NEXT: vpinsrd $3, %edx, %xmm7, %xmm5 3338; AVX512-NEXT: vpextrd $1, %xmm2, %edx 3339; AVX512-NEXT: vpextrd $1, %xmm0, %esi 3340; AVX512-NEXT: cmpl %edx, %esi 3341; AVX512-NEXT: movl $0, %edx 3342; AVX512-NEXT: cmovgl %ecx, %edx 3343; AVX512-NEXT: vmovd %xmm2, %esi 3344; AVX512-NEXT: vmovd %xmm0, %edi 3345; AVX512-NEXT: cmpl %esi, %edi 3346; AVX512-NEXT: movl $0, %esi 3347; AVX512-NEXT: cmovgl %ecx, %esi 3348; AVX512-NEXT: vmovd %esi, %xmm6 3349; AVX512-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 3350; AVX512-NEXT: vpextrd $2, %xmm2, %edx 3351; AVX512-NEXT: vpextrd $2, %xmm0, %esi 3352; AVX512-NEXT: cmpl %edx, %esi 3353; AVX512-NEXT: movl $0, %edx 3354; AVX512-NEXT: cmovgl %ecx, %edx 3355; AVX512-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 3356; AVX512-NEXT: vpextrd $3, %xmm2, %edx 3357; AVX512-NEXT: vpextrd $3, %xmm0, %esi 3358; AVX512-NEXT: cmpl %edx, %esi 3359; AVX512-NEXT: movl $0, %edx 3360; AVX512-NEXT: cmovgl %ecx, %edx 3361; AVX512-NEXT: vpinsrd $3, %edx, %xmm6, %xmm0 3362; AVX512-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0 3363; AVX512-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm0 3364; AVX512-NEXT: vpmovdb %zmm0, %xmm0 3365; AVX512-NEXT: vextracti32x4 $3, %zmm3, %xmm2 3366; AVX512-NEXT: vpextrd $1, %xmm2, %edx 3367; AVX512-NEXT: vextracti32x4 $3, %zmm1, %xmm4 3368; AVX512-NEXT: vpextrd $1, %xmm4, %esi 3369; AVX512-NEXT: cmpl %edx, %esi 3370; AVX512-NEXT: movl $0, %edx 3371; AVX512-NEXT: cmovgl %ecx, %edx 3372; AVX512-NEXT: vmovd %xmm2, %esi 3373; AVX512-NEXT: vmovd %xmm4, %edi 3374; AVX512-NEXT: cmpl %esi, %edi 3375; AVX512-NEXT: movl $0, %esi 3376; AVX512-NEXT: cmovgl %ecx, %esi 3377; AVX512-NEXT: vmovd %esi, %xmm5 3378; AVX512-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 3379; AVX512-NEXT: vpextrd $2, %xmm2, %edx 3380; AVX512-NEXT: vpextrd $2, %xmm4, %esi 3381; AVX512-NEXT: cmpl %edx, %esi 3382; AVX512-NEXT: movl $0, %edx 3383; AVX512-NEXT: cmovgl %ecx, %edx 3384; AVX512-NEXT: vpinsrd $2, %edx, %xmm5, %xmm5 3385; AVX512-NEXT: vpextrd $3, %xmm2, %edx 3386; AVX512-NEXT: vpextrd $3, %xmm4, %esi 3387; AVX512-NEXT: cmpl %edx, %esi 3388; AVX512-NEXT: movl $0, %edx 3389; AVX512-NEXT: cmovgl %ecx, %edx 3390; AVX512-NEXT: vpinsrd $3, %edx, %xmm5, %xmm2 3391; AVX512-NEXT: vextracti32x4 $2, %zmm3, %xmm4 3392; AVX512-NEXT: vpextrd $1, %xmm4, %edx 3393; AVX512-NEXT: vextracti32x4 $2, %zmm1, %xmm5 3394; AVX512-NEXT: vpextrd $1, %xmm5, %esi 3395; AVX512-NEXT: cmpl %edx, %esi 3396; AVX512-NEXT: movl $0, %edx 3397; AVX512-NEXT: cmovgl %ecx, %edx 3398; AVX512-NEXT: vmovd %xmm4, %esi 3399; AVX512-NEXT: vmovd %xmm5, %edi 3400; AVX512-NEXT: cmpl %esi, %edi 3401; AVX512-NEXT: movl $0, %esi 3402; AVX512-NEXT: cmovgl %ecx, %esi 3403; AVX512-NEXT: vmovd %esi, %xmm6 3404; AVX512-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 3405; AVX512-NEXT: vpextrd $2, %xmm4, %edx 3406; AVX512-NEXT: vpextrd $2, %xmm5, %esi 3407; AVX512-NEXT: cmpl %edx, %esi 3408; AVX512-NEXT: movl $0, %edx 3409; AVX512-NEXT: cmovgl %ecx, %edx 3410; AVX512-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 3411; AVX512-NEXT: vpextrd $3, %xmm4, %edx 3412; AVX512-NEXT: vpextrd $3, %xmm5, %esi 3413; AVX512-NEXT: cmpl %edx, %esi 3414; AVX512-NEXT: movl $0, %edx 3415; AVX512-NEXT: cmovgl %ecx, %edx 3416; AVX512-NEXT: vpinsrd $3, %edx, %xmm6, %xmm4 3417; AVX512-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2 3418; AVX512-NEXT: vextracti32x4 $1, %zmm3, %xmm4 3419; AVX512-NEXT: vpextrd $1, %xmm4, %edx 3420; AVX512-NEXT: vextracti32x4 $1, %zmm1, %xmm5 3421; AVX512-NEXT: vpextrd $1, %xmm5, %esi 3422; AVX512-NEXT: cmpl %edx, %esi 3423; AVX512-NEXT: movl $0, %edx 3424; AVX512-NEXT: cmovgl %ecx, %edx 3425; AVX512-NEXT: vmovd %xmm4, %esi 3426; AVX512-NEXT: vmovd %xmm5, %edi 3427; AVX512-NEXT: cmpl %esi, %edi 3428; AVX512-NEXT: movl $0, %esi 3429; AVX512-NEXT: cmovgl %ecx, %esi 3430; AVX512-NEXT: vmovd %esi, %xmm6 3431; AVX512-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6 3432; AVX512-NEXT: vpextrd $2, %xmm4, %edx 3433; AVX512-NEXT: vpextrd $2, %xmm5, %esi 3434; AVX512-NEXT: cmpl %edx, %esi 3435; AVX512-NEXT: movl $0, %edx 3436; AVX512-NEXT: cmovgl %ecx, %edx 3437; AVX512-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6 3438; AVX512-NEXT: vpextrd $3, %xmm4, %edx 3439; AVX512-NEXT: vpextrd $3, %xmm5, %esi 3440; AVX512-NEXT: cmpl %edx, %esi 3441; AVX512-NEXT: movl $0, %edx 3442; AVX512-NEXT: cmovgl %ecx, %edx 3443; AVX512-NEXT: vpinsrd $3, %edx, %xmm6, %xmm4 3444; AVX512-NEXT: vpextrd $1, %xmm3, %edx 3445; AVX512-NEXT: vpextrd $1, %xmm1, %esi 3446; AVX512-NEXT: cmpl %edx, %esi 3447; AVX512-NEXT: movl $0, %edx 3448; AVX512-NEXT: cmovgl %ecx, %edx 3449; AVX512-NEXT: vmovd %xmm3, %esi 3450; AVX512-NEXT: vmovd %xmm1, %edi 3451; AVX512-NEXT: cmpl %esi, %edi 3452; AVX512-NEXT: movl $0, %esi 3453; AVX512-NEXT: cmovgl %ecx, %esi 3454; AVX512-NEXT: vmovd %esi, %xmm5 3455; AVX512-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5 3456; AVX512-NEXT: vpextrd $2, %xmm3, %edx 3457; AVX512-NEXT: vpextrd $2, %xmm1, %esi 3458; AVX512-NEXT: cmpl %edx, %esi 3459; AVX512-NEXT: movl $0, %edx 3460; AVX512-NEXT: cmovgl %ecx, %edx 3461; AVX512-NEXT: vpinsrd $2, %edx, %xmm5, %xmm5 3462; AVX512-NEXT: vpextrd $3, %xmm3, %edx 3463; AVX512-NEXT: vpextrd $3, %xmm1, %esi 3464; AVX512-NEXT: cmpl %edx, %esi 3465; AVX512-NEXT: cmovgl %ecx, %eax 3466; AVX512-NEXT: vpinsrd $3, %eax, %xmm5, %xmm1 3467; AVX512-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1 3468; AVX512-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1 3469; AVX512-NEXT: vpmovdb %zmm1, %xmm1 3470; AVX512-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 3471; AVX512-NEXT: retq 3472 %1 = icmp sgt <32 x i32> %a0, %a1 3473 ret <32 x i1> %1 3474} 3475 3476define <64 x i1> @test_cmp_v64i16(<64 x i16> %a0, <64 x i16> %a1) nounwind { 3477; SSE2-LABEL: test_cmp_v64i16: 3478; SSE2: # BB#0: 3479; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm1 3480; SSE2-NEXT: movdqa {{.*#+}} xmm8 = [255,255,255,255,255,255,255,255] 3481; SSE2-NEXT: pand %xmm8, %xmm1 3482; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm0 3483; SSE2-NEXT: pand %xmm8, %xmm0 3484; SSE2-NEXT: packuswb %xmm1, %xmm0 3485; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm3 3486; SSE2-NEXT: pand %xmm8, %xmm3 3487; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm2 3488; SSE2-NEXT: pand %xmm8, %xmm2 3489; SSE2-NEXT: packuswb %xmm3, %xmm2 3490; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm5 3491; SSE2-NEXT: pand %xmm8, %xmm5 3492; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm4 3493; SSE2-NEXT: pand %xmm8, %xmm4 3494; SSE2-NEXT: packuswb %xmm5, %xmm4 3495; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm7 3496; SSE2-NEXT: pand %xmm8, %xmm7 3497; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm6 3498; SSE2-NEXT: pand %xmm8, %xmm6 3499; SSE2-NEXT: packuswb %xmm7, %xmm6 3500; SSE2-NEXT: movdqa %xmm6, -{{[0-9]+}}(%rsp) 3501; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3502; SSE2-NEXT: andb $1, %al 3503; SSE2-NEXT: movb %al, 6(%rdi) 3504; SSE2-NEXT: movdqa %xmm4, -{{[0-9]+}}(%rsp) 3505; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3506; SSE2-NEXT: andb $1, %al 3507; SSE2-NEXT: movb %al, 4(%rdi) 3508; SSE2-NEXT: movdqa %xmm2, -{{[0-9]+}}(%rsp) 3509; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3510; SSE2-NEXT: andb $1, %al 3511; SSE2-NEXT: movb %al, 2(%rdi) 3512; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 3513; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3514; SSE2-NEXT: andb $1, %al 3515; SSE2-NEXT: movb %al, (%rdi) 3516; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3517; SSE2-NEXT: andb $1, %al 3518; SSE2-NEXT: movb %al, 6(%rdi) 3519; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3520; SSE2-NEXT: andb $1, %al 3521; SSE2-NEXT: movb %al, 4(%rdi) 3522; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3523; SSE2-NEXT: andb $1, %al 3524; SSE2-NEXT: movb %al, 2(%rdi) 3525; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3526; SSE2-NEXT: andb $1, %al 3527; SSE2-NEXT: movb %al, (%rdi) 3528; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3529; SSE2-NEXT: andb $1, %al 3530; SSE2-NEXT: movb %al, 6(%rdi) 3531; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3532; SSE2-NEXT: andb $1, %al 3533; SSE2-NEXT: movb %al, 4(%rdi) 3534; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3535; SSE2-NEXT: andb $1, %al 3536; SSE2-NEXT: movb %al, 2(%rdi) 3537; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3538; SSE2-NEXT: andb $1, %al 3539; SSE2-NEXT: movb %al, (%rdi) 3540; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3541; SSE2-NEXT: andb $1, %al 3542; SSE2-NEXT: movb %al, 6(%rdi) 3543; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3544; SSE2-NEXT: andb $1, %al 3545; SSE2-NEXT: movb %al, 4(%rdi) 3546; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3547; SSE2-NEXT: andb $1, %al 3548; SSE2-NEXT: movb %al, 2(%rdi) 3549; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3550; SSE2-NEXT: andb $1, %al 3551; SSE2-NEXT: movb %al, (%rdi) 3552; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3553; SSE2-NEXT: andb $1, %al 3554; SSE2-NEXT: movb %al, 6(%rdi) 3555; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3556; SSE2-NEXT: andb $1, %al 3557; SSE2-NEXT: movb %al, 4(%rdi) 3558; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3559; SSE2-NEXT: andb $1, %al 3560; SSE2-NEXT: movb %al, 2(%rdi) 3561; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3562; SSE2-NEXT: andb $1, %al 3563; SSE2-NEXT: movb %al, (%rdi) 3564; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3565; SSE2-NEXT: andb $1, %al 3566; SSE2-NEXT: movb %al, 6(%rdi) 3567; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3568; SSE2-NEXT: andb $1, %al 3569; SSE2-NEXT: movb %al, 4(%rdi) 3570; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3571; SSE2-NEXT: andb $1, %al 3572; SSE2-NEXT: movb %al, 2(%rdi) 3573; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3574; SSE2-NEXT: andb $1, %al 3575; SSE2-NEXT: movb %al, (%rdi) 3576; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3577; SSE2-NEXT: andb $1, %al 3578; SSE2-NEXT: movb %al, 6(%rdi) 3579; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3580; SSE2-NEXT: andb $1, %al 3581; SSE2-NEXT: movb %al, 4(%rdi) 3582; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3583; SSE2-NEXT: andb $1, %al 3584; SSE2-NEXT: movb %al, 2(%rdi) 3585; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3586; SSE2-NEXT: andb $1, %al 3587; SSE2-NEXT: movb %al, (%rdi) 3588; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3589; SSE2-NEXT: andb $1, %al 3590; SSE2-NEXT: movb %al, 6(%rdi) 3591; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3592; SSE2-NEXT: andb $1, %al 3593; SSE2-NEXT: movb %al, 4(%rdi) 3594; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3595; SSE2-NEXT: andb $1, %al 3596; SSE2-NEXT: movb %al, 2(%rdi) 3597; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3598; SSE2-NEXT: andb $1, %al 3599; SSE2-NEXT: movb %al, (%rdi) 3600; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3601; SSE2-NEXT: andb $1, %al 3602; SSE2-NEXT: movb %al, 6(%rdi) 3603; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3604; SSE2-NEXT: andb $1, %al 3605; SSE2-NEXT: movb %al, 4(%rdi) 3606; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3607; SSE2-NEXT: andb $1, %al 3608; SSE2-NEXT: movb %al, 2(%rdi) 3609; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3610; SSE2-NEXT: andb $1, %al 3611; SSE2-NEXT: movb %al, (%rdi) 3612; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3613; SSE2-NEXT: andb $1, %al 3614; SSE2-NEXT: movb %al, 6(%rdi) 3615; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3616; SSE2-NEXT: andb $1, %al 3617; SSE2-NEXT: movb %al, 4(%rdi) 3618; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3619; SSE2-NEXT: andb $1, %al 3620; SSE2-NEXT: movb %al, 2(%rdi) 3621; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3622; SSE2-NEXT: andb $1, %al 3623; SSE2-NEXT: movb %al, (%rdi) 3624; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3625; SSE2-NEXT: andb $1, %al 3626; SSE2-NEXT: movb %al, 6(%rdi) 3627; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3628; SSE2-NEXT: andb $1, %al 3629; SSE2-NEXT: movb %al, 4(%rdi) 3630; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3631; SSE2-NEXT: andb $1, %al 3632; SSE2-NEXT: movb %al, 2(%rdi) 3633; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3634; SSE2-NEXT: andb $1, %al 3635; SSE2-NEXT: movb %al, (%rdi) 3636; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3637; SSE2-NEXT: andb $1, %al 3638; SSE2-NEXT: movb %al, 6(%rdi) 3639; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3640; SSE2-NEXT: andb $1, %al 3641; SSE2-NEXT: movb %al, 4(%rdi) 3642; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3643; SSE2-NEXT: andb $1, %al 3644; SSE2-NEXT: movb %al, 2(%rdi) 3645; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3646; SSE2-NEXT: andb $1, %al 3647; SSE2-NEXT: movb %al, (%rdi) 3648; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3649; SSE2-NEXT: andb $1, %al 3650; SSE2-NEXT: movb %al, 6(%rdi) 3651; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3652; SSE2-NEXT: andb $1, %al 3653; SSE2-NEXT: movb %al, 4(%rdi) 3654; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3655; SSE2-NEXT: andb $1, %al 3656; SSE2-NEXT: movb %al, 2(%rdi) 3657; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3658; SSE2-NEXT: andb $1, %al 3659; SSE2-NEXT: movb %al, (%rdi) 3660; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3661; SSE2-NEXT: andb $1, %al 3662; SSE2-NEXT: movb %al, 6(%rdi) 3663; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3664; SSE2-NEXT: andb $1, %al 3665; SSE2-NEXT: movb %al, 4(%rdi) 3666; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3667; SSE2-NEXT: andb $1, %al 3668; SSE2-NEXT: movb %al, 2(%rdi) 3669; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3670; SSE2-NEXT: andb $1, %al 3671; SSE2-NEXT: movb %al, (%rdi) 3672; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3673; SSE2-NEXT: andb $1, %al 3674; SSE2-NEXT: movb %al, 6(%rdi) 3675; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3676; SSE2-NEXT: andb $1, %al 3677; SSE2-NEXT: movb %al, 4(%rdi) 3678; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3679; SSE2-NEXT: andb $1, %al 3680; SSE2-NEXT: movb %al, 2(%rdi) 3681; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3682; SSE2-NEXT: andb $1, %al 3683; SSE2-NEXT: movb %al, (%rdi) 3684; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3685; SSE2-NEXT: andb $1, %al 3686; SSE2-NEXT: movb %al, 6(%rdi) 3687; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3688; SSE2-NEXT: andb $1, %al 3689; SSE2-NEXT: movb %al, 4(%rdi) 3690; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3691; SSE2-NEXT: andb $1, %al 3692; SSE2-NEXT: movb %al, 2(%rdi) 3693; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 3694; SSE2-NEXT: andb $1, %al 3695; SSE2-NEXT: movb %al, (%rdi) 3696; SSE2-NEXT: movq %rdi, %rax 3697; SSE2-NEXT: retq 3698; 3699; SSE42-LABEL: test_cmp_v64i16: 3700; SSE42: # BB#0: 3701; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm1 3702; SSE42-NEXT: movdqa {{.*#+}} xmm8 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u> 3703; SSE42-NEXT: pshufb %xmm8, %xmm1 3704; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm0 3705; SSE42-NEXT: pshufb %xmm8, %xmm0 3706; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 3707; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm3 3708; SSE42-NEXT: pshufb %xmm8, %xmm3 3709; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm2 3710; SSE42-NEXT: pshufb %xmm8, %xmm2 3711; SSE42-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0] 3712; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm5 3713; SSE42-NEXT: pshufb %xmm8, %xmm5 3714; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm4 3715; SSE42-NEXT: pshufb %xmm8, %xmm4 3716; SSE42-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0] 3717; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm7 3718; SSE42-NEXT: pshufb %xmm8, %xmm7 3719; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm6 3720; SSE42-NEXT: pshufb %xmm8, %xmm6 3721; SSE42-NEXT: punpcklqdq {{.*#+}} xmm6 = xmm6[0],xmm7[0] 3722; SSE42-NEXT: pextrb $15, %xmm6, %eax 3723; SSE42-NEXT: andb $1, %al 3724; SSE42-NEXT: movb %al, 6(%rdi) 3725; SSE42-NEXT: pextrb $14, %xmm6, %eax 3726; SSE42-NEXT: andb $1, %al 3727; SSE42-NEXT: movb %al, 6(%rdi) 3728; SSE42-NEXT: pextrb $13, %xmm6, %eax 3729; SSE42-NEXT: andb $1, %al 3730; SSE42-NEXT: movb %al, 6(%rdi) 3731; SSE42-NEXT: pextrb $12, %xmm6, %eax 3732; SSE42-NEXT: andb $1, %al 3733; SSE42-NEXT: movb %al, 6(%rdi) 3734; SSE42-NEXT: pextrb $11, %xmm6, %eax 3735; SSE42-NEXT: andb $1, %al 3736; SSE42-NEXT: movb %al, 6(%rdi) 3737; SSE42-NEXT: pextrb $10, %xmm6, %eax 3738; SSE42-NEXT: andb $1, %al 3739; SSE42-NEXT: movb %al, 6(%rdi) 3740; SSE42-NEXT: pextrb $9, %xmm6, %eax 3741; SSE42-NEXT: andb $1, %al 3742; SSE42-NEXT: movb %al, 6(%rdi) 3743; SSE42-NEXT: pextrb $8, %xmm6, %eax 3744; SSE42-NEXT: andb $1, %al 3745; SSE42-NEXT: movb %al, 6(%rdi) 3746; SSE42-NEXT: pextrb $7, %xmm6, %eax 3747; SSE42-NEXT: andb $1, %al 3748; SSE42-NEXT: movb %al, 6(%rdi) 3749; SSE42-NEXT: pextrb $6, %xmm6, %eax 3750; SSE42-NEXT: andb $1, %al 3751; SSE42-NEXT: movb %al, 6(%rdi) 3752; SSE42-NEXT: pextrb $5, %xmm6, %eax 3753; SSE42-NEXT: andb $1, %al 3754; SSE42-NEXT: movb %al, 6(%rdi) 3755; SSE42-NEXT: pextrb $4, %xmm6, %eax 3756; SSE42-NEXT: andb $1, %al 3757; SSE42-NEXT: movb %al, 6(%rdi) 3758; SSE42-NEXT: pextrb $3, %xmm6, %eax 3759; SSE42-NEXT: andb $1, %al 3760; SSE42-NEXT: movb %al, 6(%rdi) 3761; SSE42-NEXT: pextrb $2, %xmm6, %eax 3762; SSE42-NEXT: andb $1, %al 3763; SSE42-NEXT: movb %al, 6(%rdi) 3764; SSE42-NEXT: pextrb $1, %xmm6, %eax 3765; SSE42-NEXT: andb $1, %al 3766; SSE42-NEXT: movb %al, 6(%rdi) 3767; SSE42-NEXT: pextrb $0, %xmm6, %eax 3768; SSE42-NEXT: andb $1, %al 3769; SSE42-NEXT: movb %al, 6(%rdi) 3770; SSE42-NEXT: pextrb $15, %xmm4, %eax 3771; SSE42-NEXT: andb $1, %al 3772; SSE42-NEXT: movb %al, 4(%rdi) 3773; SSE42-NEXT: pextrb $14, %xmm4, %eax 3774; SSE42-NEXT: andb $1, %al 3775; SSE42-NEXT: movb %al, 4(%rdi) 3776; SSE42-NEXT: pextrb $13, %xmm4, %eax 3777; SSE42-NEXT: andb $1, %al 3778; SSE42-NEXT: movb %al, 4(%rdi) 3779; SSE42-NEXT: pextrb $12, %xmm4, %eax 3780; SSE42-NEXT: andb $1, %al 3781; SSE42-NEXT: movb %al, 4(%rdi) 3782; SSE42-NEXT: pextrb $11, %xmm4, %eax 3783; SSE42-NEXT: andb $1, %al 3784; SSE42-NEXT: movb %al, 4(%rdi) 3785; SSE42-NEXT: pextrb $10, %xmm4, %eax 3786; SSE42-NEXT: andb $1, %al 3787; SSE42-NEXT: movb %al, 4(%rdi) 3788; SSE42-NEXT: pextrb $9, %xmm4, %eax 3789; SSE42-NEXT: andb $1, %al 3790; SSE42-NEXT: movb %al, 4(%rdi) 3791; SSE42-NEXT: pextrb $8, %xmm4, %eax 3792; SSE42-NEXT: andb $1, %al 3793; SSE42-NEXT: movb %al, 4(%rdi) 3794; SSE42-NEXT: pextrb $7, %xmm4, %eax 3795; SSE42-NEXT: andb $1, %al 3796; SSE42-NEXT: movb %al, 4(%rdi) 3797; SSE42-NEXT: pextrb $6, %xmm4, %eax 3798; SSE42-NEXT: andb $1, %al 3799; SSE42-NEXT: movb %al, 4(%rdi) 3800; SSE42-NEXT: pextrb $5, %xmm4, %eax 3801; SSE42-NEXT: andb $1, %al 3802; SSE42-NEXT: movb %al, 4(%rdi) 3803; SSE42-NEXT: pextrb $4, %xmm4, %eax 3804; SSE42-NEXT: andb $1, %al 3805; SSE42-NEXT: movb %al, 4(%rdi) 3806; SSE42-NEXT: pextrb $3, %xmm4, %eax 3807; SSE42-NEXT: andb $1, %al 3808; SSE42-NEXT: movb %al, 4(%rdi) 3809; SSE42-NEXT: pextrb $2, %xmm4, %eax 3810; SSE42-NEXT: andb $1, %al 3811; SSE42-NEXT: movb %al, 4(%rdi) 3812; SSE42-NEXT: pextrb $1, %xmm4, %eax 3813; SSE42-NEXT: andb $1, %al 3814; SSE42-NEXT: movb %al, 4(%rdi) 3815; SSE42-NEXT: pextrb $0, %xmm4, %eax 3816; SSE42-NEXT: andb $1, %al 3817; SSE42-NEXT: movb %al, 4(%rdi) 3818; SSE42-NEXT: pextrb $15, %xmm2, %eax 3819; SSE42-NEXT: andb $1, %al 3820; SSE42-NEXT: movb %al, 2(%rdi) 3821; SSE42-NEXT: pextrb $14, %xmm2, %eax 3822; SSE42-NEXT: andb $1, %al 3823; SSE42-NEXT: movb %al, 2(%rdi) 3824; SSE42-NEXT: pextrb $13, %xmm2, %eax 3825; SSE42-NEXT: andb $1, %al 3826; SSE42-NEXT: movb %al, 2(%rdi) 3827; SSE42-NEXT: pextrb $12, %xmm2, %eax 3828; SSE42-NEXT: andb $1, %al 3829; SSE42-NEXT: movb %al, 2(%rdi) 3830; SSE42-NEXT: pextrb $11, %xmm2, %eax 3831; SSE42-NEXT: andb $1, %al 3832; SSE42-NEXT: movb %al, 2(%rdi) 3833; SSE42-NEXT: pextrb $10, %xmm2, %eax 3834; SSE42-NEXT: andb $1, %al 3835; SSE42-NEXT: movb %al, 2(%rdi) 3836; SSE42-NEXT: pextrb $9, %xmm2, %eax 3837; SSE42-NEXT: andb $1, %al 3838; SSE42-NEXT: movb %al, 2(%rdi) 3839; SSE42-NEXT: pextrb $8, %xmm2, %eax 3840; SSE42-NEXT: andb $1, %al 3841; SSE42-NEXT: movb %al, 2(%rdi) 3842; SSE42-NEXT: pextrb $7, %xmm2, %eax 3843; SSE42-NEXT: andb $1, %al 3844; SSE42-NEXT: movb %al, 2(%rdi) 3845; SSE42-NEXT: pextrb $6, %xmm2, %eax 3846; SSE42-NEXT: andb $1, %al 3847; SSE42-NEXT: movb %al, 2(%rdi) 3848; SSE42-NEXT: pextrb $5, %xmm2, %eax 3849; SSE42-NEXT: andb $1, %al 3850; SSE42-NEXT: movb %al, 2(%rdi) 3851; SSE42-NEXT: pextrb $4, %xmm2, %eax 3852; SSE42-NEXT: andb $1, %al 3853; SSE42-NEXT: movb %al, 2(%rdi) 3854; SSE42-NEXT: pextrb $3, %xmm2, %eax 3855; SSE42-NEXT: andb $1, %al 3856; SSE42-NEXT: movb %al, 2(%rdi) 3857; SSE42-NEXT: pextrb $2, %xmm2, %eax 3858; SSE42-NEXT: andb $1, %al 3859; SSE42-NEXT: movb %al, 2(%rdi) 3860; SSE42-NEXT: pextrb $1, %xmm2, %eax 3861; SSE42-NEXT: andb $1, %al 3862; SSE42-NEXT: movb %al, 2(%rdi) 3863; SSE42-NEXT: pextrb $0, %xmm2, %eax 3864; SSE42-NEXT: andb $1, %al 3865; SSE42-NEXT: movb %al, 2(%rdi) 3866; SSE42-NEXT: pextrb $15, %xmm0, %eax 3867; SSE42-NEXT: andb $1, %al 3868; SSE42-NEXT: movb %al, (%rdi) 3869; SSE42-NEXT: pextrb $14, %xmm0, %eax 3870; SSE42-NEXT: andb $1, %al 3871; SSE42-NEXT: movb %al, (%rdi) 3872; SSE42-NEXT: pextrb $13, %xmm0, %eax 3873; SSE42-NEXT: andb $1, %al 3874; SSE42-NEXT: movb %al, (%rdi) 3875; SSE42-NEXT: pextrb $12, %xmm0, %eax 3876; SSE42-NEXT: andb $1, %al 3877; SSE42-NEXT: movb %al, (%rdi) 3878; SSE42-NEXT: pextrb $11, %xmm0, %eax 3879; SSE42-NEXT: andb $1, %al 3880; SSE42-NEXT: movb %al, (%rdi) 3881; SSE42-NEXT: pextrb $10, %xmm0, %eax 3882; SSE42-NEXT: andb $1, %al 3883; SSE42-NEXT: movb %al, (%rdi) 3884; SSE42-NEXT: pextrb $9, %xmm0, %eax 3885; SSE42-NEXT: andb $1, %al 3886; SSE42-NEXT: movb %al, (%rdi) 3887; SSE42-NEXT: pextrb $8, %xmm0, %eax 3888; SSE42-NEXT: andb $1, %al 3889; SSE42-NEXT: movb %al, (%rdi) 3890; SSE42-NEXT: pextrb $7, %xmm0, %eax 3891; SSE42-NEXT: andb $1, %al 3892; SSE42-NEXT: movb %al, (%rdi) 3893; SSE42-NEXT: pextrb $6, %xmm0, %eax 3894; SSE42-NEXT: andb $1, %al 3895; SSE42-NEXT: movb %al, (%rdi) 3896; SSE42-NEXT: pextrb $5, %xmm0, %eax 3897; SSE42-NEXT: andb $1, %al 3898; SSE42-NEXT: movb %al, (%rdi) 3899; SSE42-NEXT: pextrb $4, %xmm0, %eax 3900; SSE42-NEXT: andb $1, %al 3901; SSE42-NEXT: movb %al, (%rdi) 3902; SSE42-NEXT: pextrb $3, %xmm0, %eax 3903; SSE42-NEXT: andb $1, %al 3904; SSE42-NEXT: movb %al, (%rdi) 3905; SSE42-NEXT: pextrb $2, %xmm0, %eax 3906; SSE42-NEXT: andb $1, %al 3907; SSE42-NEXT: movb %al, (%rdi) 3908; SSE42-NEXT: pextrb $1, %xmm0, %eax 3909; SSE42-NEXT: andb $1, %al 3910; SSE42-NEXT: movb %al, (%rdi) 3911; SSE42-NEXT: pextrb $0, %xmm0, %eax 3912; SSE42-NEXT: andb $1, %al 3913; SSE42-NEXT: movb %al, (%rdi) 3914; SSE42-NEXT: movq %rdi, %rax 3915; SSE42-NEXT: retq 3916; 3917; AVX1-LABEL: test_cmp_v64i16: 3918; AVX1: # BB#0: 3919; AVX1-NEXT: vextractf128 $1, %ymm4, %xmm8 3920; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm9 3921; AVX1-NEXT: vpcmpgtw %xmm8, %xmm9, %xmm8 3922; AVX1-NEXT: vpcmpgtw %xmm4, %xmm0, %xmm0 3923; AVX1-NEXT: vpacksswb %xmm8, %xmm0, %xmm8 3924; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm4 3925; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm0 3926; AVX1-NEXT: vpcmpgtw %xmm4, %xmm0, %xmm0 3927; AVX1-NEXT: vpcmpgtw %xmm5, %xmm1, %xmm1 3928; AVX1-NEXT: vpacksswb %xmm0, %xmm1, %xmm1 3929; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm0 3930; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm4 3931; AVX1-NEXT: vpcmpgtw %xmm0, %xmm4, %xmm0 3932; AVX1-NEXT: vpcmpgtw %xmm6, %xmm2, %xmm2 3933; AVX1-NEXT: vpacksswb %xmm0, %xmm2, %xmm2 3934; AVX1-NEXT: vextractf128 $1, %ymm7, %xmm0 3935; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4 3936; AVX1-NEXT: vpcmpgtw %xmm0, %xmm4, %xmm0 3937; AVX1-NEXT: vpcmpgtw %xmm7, %xmm3, %xmm3 3938; AVX1-NEXT: vpacksswb %xmm0, %xmm3, %xmm3 3939; AVX1-NEXT: vpextrb $15, %xmm3, %eax 3940; AVX1-NEXT: andb $1, %al 3941; AVX1-NEXT: movb %al, 4(%rdi) 3942; AVX1-NEXT: vpextrb $14, %xmm3, %eax 3943; AVX1-NEXT: andb $1, %al 3944; AVX1-NEXT: movb %al, 4(%rdi) 3945; AVX1-NEXT: vpextrb $13, %xmm3, %eax 3946; AVX1-NEXT: andb $1, %al 3947; AVX1-NEXT: movb %al, 4(%rdi) 3948; AVX1-NEXT: vpextrb $12, %xmm3, %eax 3949; AVX1-NEXT: andb $1, %al 3950; AVX1-NEXT: movb %al, 4(%rdi) 3951; AVX1-NEXT: vpextrb $11, %xmm3, %eax 3952; AVX1-NEXT: andb $1, %al 3953; AVX1-NEXT: movb %al, 4(%rdi) 3954; AVX1-NEXT: vpextrb $10, %xmm3, %eax 3955; AVX1-NEXT: andb $1, %al 3956; AVX1-NEXT: movb %al, 4(%rdi) 3957; AVX1-NEXT: vpextrb $9, %xmm3, %eax 3958; AVX1-NEXT: andb $1, %al 3959; AVX1-NEXT: movb %al, 4(%rdi) 3960; AVX1-NEXT: vpextrb $8, %xmm3, %eax 3961; AVX1-NEXT: andb $1, %al 3962; AVX1-NEXT: movb %al, 4(%rdi) 3963; AVX1-NEXT: vpextrb $7, %xmm3, %eax 3964; AVX1-NEXT: andb $1, %al 3965; AVX1-NEXT: movb %al, 4(%rdi) 3966; AVX1-NEXT: vpextrb $6, %xmm3, %eax 3967; AVX1-NEXT: andb $1, %al 3968; AVX1-NEXT: movb %al, 4(%rdi) 3969; AVX1-NEXT: vpextrb $5, %xmm3, %eax 3970; AVX1-NEXT: andb $1, %al 3971; AVX1-NEXT: movb %al, 4(%rdi) 3972; AVX1-NEXT: vpextrb $4, %xmm3, %eax 3973; AVX1-NEXT: andb $1, %al 3974; AVX1-NEXT: movb %al, 4(%rdi) 3975; AVX1-NEXT: vpextrb $3, %xmm3, %eax 3976; AVX1-NEXT: andb $1, %al 3977; AVX1-NEXT: movb %al, 4(%rdi) 3978; AVX1-NEXT: vpextrb $2, %xmm3, %eax 3979; AVX1-NEXT: andb $1, %al 3980; AVX1-NEXT: movb %al, 4(%rdi) 3981; AVX1-NEXT: vpextrb $1, %xmm3, %eax 3982; AVX1-NEXT: andb $1, %al 3983; AVX1-NEXT: movb %al, 4(%rdi) 3984; AVX1-NEXT: vpextrb $0, %xmm3, %eax 3985; AVX1-NEXT: andb $1, %al 3986; AVX1-NEXT: movb %al, 4(%rdi) 3987; AVX1-NEXT: vpextrb $15, %xmm2, %eax 3988; AVX1-NEXT: andb $1, %al 3989; AVX1-NEXT: movb %al, 4(%rdi) 3990; AVX1-NEXT: vpextrb $14, %xmm2, %eax 3991; AVX1-NEXT: andb $1, %al 3992; AVX1-NEXT: movb %al, 4(%rdi) 3993; AVX1-NEXT: vpextrb $13, %xmm2, %eax 3994; AVX1-NEXT: andb $1, %al 3995; AVX1-NEXT: movb %al, 4(%rdi) 3996; AVX1-NEXT: vpextrb $12, %xmm2, %eax 3997; AVX1-NEXT: andb $1, %al 3998; AVX1-NEXT: movb %al, 4(%rdi) 3999; AVX1-NEXT: vpextrb $11, %xmm2, %eax 4000; AVX1-NEXT: andb $1, %al 4001; AVX1-NEXT: movb %al, 4(%rdi) 4002; AVX1-NEXT: vpextrb $10, %xmm2, %eax 4003; AVX1-NEXT: andb $1, %al 4004; AVX1-NEXT: movb %al, 4(%rdi) 4005; AVX1-NEXT: vpextrb $9, %xmm2, %eax 4006; AVX1-NEXT: andb $1, %al 4007; AVX1-NEXT: movb %al, 4(%rdi) 4008; AVX1-NEXT: vpextrb $8, %xmm2, %eax 4009; AVX1-NEXT: andb $1, %al 4010; AVX1-NEXT: movb %al, 4(%rdi) 4011; AVX1-NEXT: vpextrb $7, %xmm2, %eax 4012; AVX1-NEXT: andb $1, %al 4013; AVX1-NEXT: movb %al, 4(%rdi) 4014; AVX1-NEXT: vpextrb $6, %xmm2, %eax 4015; AVX1-NEXT: andb $1, %al 4016; AVX1-NEXT: movb %al, 4(%rdi) 4017; AVX1-NEXT: vpextrb $5, %xmm2, %eax 4018; AVX1-NEXT: andb $1, %al 4019; AVX1-NEXT: movb %al, 4(%rdi) 4020; AVX1-NEXT: vpextrb $4, %xmm2, %eax 4021; AVX1-NEXT: andb $1, %al 4022; AVX1-NEXT: movb %al, 4(%rdi) 4023; AVX1-NEXT: vpextrb $3, %xmm2, %eax 4024; AVX1-NEXT: andb $1, %al 4025; AVX1-NEXT: movb %al, 4(%rdi) 4026; AVX1-NEXT: vpextrb $2, %xmm2, %eax 4027; AVX1-NEXT: andb $1, %al 4028; AVX1-NEXT: movb %al, 4(%rdi) 4029; AVX1-NEXT: vpextrb $1, %xmm2, %eax 4030; AVX1-NEXT: andb $1, %al 4031; AVX1-NEXT: movb %al, 4(%rdi) 4032; AVX1-NEXT: vpextrb $0, %xmm2, %eax 4033; AVX1-NEXT: andb $1, %al 4034; AVX1-NEXT: movb %al, 4(%rdi) 4035; AVX1-NEXT: vpextrb $15, %xmm1, %eax 4036; AVX1-NEXT: andb $1, %al 4037; AVX1-NEXT: movb %al, (%rdi) 4038; AVX1-NEXT: vpextrb $14, %xmm1, %eax 4039; AVX1-NEXT: andb $1, %al 4040; AVX1-NEXT: movb %al, (%rdi) 4041; AVX1-NEXT: vpextrb $13, %xmm1, %eax 4042; AVX1-NEXT: andb $1, %al 4043; AVX1-NEXT: movb %al, (%rdi) 4044; AVX1-NEXT: vpextrb $12, %xmm1, %eax 4045; AVX1-NEXT: andb $1, %al 4046; AVX1-NEXT: movb %al, (%rdi) 4047; AVX1-NEXT: vpextrb $11, %xmm1, %eax 4048; AVX1-NEXT: andb $1, %al 4049; AVX1-NEXT: movb %al, (%rdi) 4050; AVX1-NEXT: vpextrb $10, %xmm1, %eax 4051; AVX1-NEXT: andb $1, %al 4052; AVX1-NEXT: movb %al, (%rdi) 4053; AVX1-NEXT: vpextrb $9, %xmm1, %eax 4054; AVX1-NEXT: andb $1, %al 4055; AVX1-NEXT: movb %al, (%rdi) 4056; AVX1-NEXT: vpextrb $8, %xmm1, %eax 4057; AVX1-NEXT: andb $1, %al 4058; AVX1-NEXT: movb %al, (%rdi) 4059; AVX1-NEXT: vpextrb $7, %xmm1, %eax 4060; AVX1-NEXT: andb $1, %al 4061; AVX1-NEXT: movb %al, (%rdi) 4062; AVX1-NEXT: vpextrb $6, %xmm1, %eax 4063; AVX1-NEXT: andb $1, %al 4064; AVX1-NEXT: movb %al, (%rdi) 4065; AVX1-NEXT: vpextrb $5, %xmm1, %eax 4066; AVX1-NEXT: andb $1, %al 4067; AVX1-NEXT: movb %al, (%rdi) 4068; AVX1-NEXT: vpextrb $4, %xmm1, %eax 4069; AVX1-NEXT: andb $1, %al 4070; AVX1-NEXT: movb %al, (%rdi) 4071; AVX1-NEXT: vpextrb $3, %xmm1, %eax 4072; AVX1-NEXT: andb $1, %al 4073; AVX1-NEXT: movb %al, (%rdi) 4074; AVX1-NEXT: vpextrb $2, %xmm1, %eax 4075; AVX1-NEXT: andb $1, %al 4076; AVX1-NEXT: movb %al, (%rdi) 4077; AVX1-NEXT: vpextrb $1, %xmm1, %eax 4078; AVX1-NEXT: andb $1, %al 4079; AVX1-NEXT: movb %al, (%rdi) 4080; AVX1-NEXT: vpextrb $0, %xmm1, %eax 4081; AVX1-NEXT: andb $1, %al 4082; AVX1-NEXT: movb %al, (%rdi) 4083; AVX1-NEXT: vpextrb $15, %xmm8, %eax 4084; AVX1-NEXT: andb $1, %al 4085; AVX1-NEXT: movb %al, (%rdi) 4086; AVX1-NEXT: vpextrb $14, %xmm8, %eax 4087; AVX1-NEXT: andb $1, %al 4088; AVX1-NEXT: movb %al, (%rdi) 4089; AVX1-NEXT: vpextrb $13, %xmm8, %eax 4090; AVX1-NEXT: andb $1, %al 4091; AVX1-NEXT: movb %al, (%rdi) 4092; AVX1-NEXT: vpextrb $12, %xmm8, %eax 4093; AVX1-NEXT: andb $1, %al 4094; AVX1-NEXT: movb %al, (%rdi) 4095; AVX1-NEXT: vpextrb $11, %xmm8, %eax 4096; AVX1-NEXT: andb $1, %al 4097; AVX1-NEXT: movb %al, (%rdi) 4098; AVX1-NEXT: vpextrb $10, %xmm8, %eax 4099; AVX1-NEXT: andb $1, %al 4100; AVX1-NEXT: movb %al, (%rdi) 4101; AVX1-NEXT: vpextrb $9, %xmm8, %eax 4102; AVX1-NEXT: andb $1, %al 4103; AVX1-NEXT: movb %al, (%rdi) 4104; AVX1-NEXT: vpextrb $8, %xmm8, %eax 4105; AVX1-NEXT: andb $1, %al 4106; AVX1-NEXT: movb %al, (%rdi) 4107; AVX1-NEXT: vpextrb $7, %xmm8, %eax 4108; AVX1-NEXT: andb $1, %al 4109; AVX1-NEXT: movb %al, (%rdi) 4110; AVX1-NEXT: vpextrb $6, %xmm8, %eax 4111; AVX1-NEXT: andb $1, %al 4112; AVX1-NEXT: movb %al, (%rdi) 4113; AVX1-NEXT: vpextrb $5, %xmm8, %eax 4114; AVX1-NEXT: andb $1, %al 4115; AVX1-NEXT: movb %al, (%rdi) 4116; AVX1-NEXT: vpextrb $4, %xmm8, %eax 4117; AVX1-NEXT: andb $1, %al 4118; AVX1-NEXT: movb %al, (%rdi) 4119; AVX1-NEXT: vpextrb $3, %xmm8, %eax 4120; AVX1-NEXT: andb $1, %al 4121; AVX1-NEXT: movb %al, (%rdi) 4122; AVX1-NEXT: vpextrb $2, %xmm8, %eax 4123; AVX1-NEXT: andb $1, %al 4124; AVX1-NEXT: movb %al, (%rdi) 4125; AVX1-NEXT: vpextrb $1, %xmm8, %eax 4126; AVX1-NEXT: andb $1, %al 4127; AVX1-NEXT: movb %al, (%rdi) 4128; AVX1-NEXT: vpextrb $0, %xmm8, %eax 4129; AVX1-NEXT: andb $1, %al 4130; AVX1-NEXT: movb %al, (%rdi) 4131; AVX1-NEXT: movq %rdi, %rax 4132; AVX1-NEXT: vzeroupper 4133; AVX1-NEXT: retq 4134; 4135; AVX2-LABEL: test_cmp_v64i16: 4136; AVX2: # BB#0: 4137; AVX2-NEXT: vpcmpgtw %ymm4, %ymm0, %ymm0 4138; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm4 4139; AVX2-NEXT: vpacksswb %xmm4, %xmm0, %xmm0 4140; AVX2-NEXT: vpcmpgtw %ymm5, %ymm1, %ymm1 4141; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm4 4142; AVX2-NEXT: vpacksswb %xmm4, %xmm1, %xmm1 4143; AVX2-NEXT: vpcmpgtw %ymm6, %ymm2, %ymm2 4144; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm4 4145; AVX2-NEXT: vpacksswb %xmm4, %xmm2, %xmm2 4146; AVX2-NEXT: vpcmpgtw %ymm7, %ymm3, %ymm3 4147; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4 4148; AVX2-NEXT: vpacksswb %xmm4, %xmm3, %xmm3 4149; AVX2-NEXT: vpextrb $15, %xmm3, %eax 4150; AVX2-NEXT: andb $1, %al 4151; AVX2-NEXT: movb %al, 4(%rdi) 4152; AVX2-NEXT: vpextrb $14, %xmm3, %eax 4153; AVX2-NEXT: andb $1, %al 4154; AVX2-NEXT: movb %al, 4(%rdi) 4155; AVX2-NEXT: vpextrb $13, %xmm3, %eax 4156; AVX2-NEXT: andb $1, %al 4157; AVX2-NEXT: movb %al, 4(%rdi) 4158; AVX2-NEXT: vpextrb $12, %xmm3, %eax 4159; AVX2-NEXT: andb $1, %al 4160; AVX2-NEXT: movb %al, 4(%rdi) 4161; AVX2-NEXT: vpextrb $11, %xmm3, %eax 4162; AVX2-NEXT: andb $1, %al 4163; AVX2-NEXT: movb %al, 4(%rdi) 4164; AVX2-NEXT: vpextrb $10, %xmm3, %eax 4165; AVX2-NEXT: andb $1, %al 4166; AVX2-NEXT: movb %al, 4(%rdi) 4167; AVX2-NEXT: vpextrb $9, %xmm3, %eax 4168; AVX2-NEXT: andb $1, %al 4169; AVX2-NEXT: movb %al, 4(%rdi) 4170; AVX2-NEXT: vpextrb $8, %xmm3, %eax 4171; AVX2-NEXT: andb $1, %al 4172; AVX2-NEXT: movb %al, 4(%rdi) 4173; AVX2-NEXT: vpextrb $7, %xmm3, %eax 4174; AVX2-NEXT: andb $1, %al 4175; AVX2-NEXT: movb %al, 4(%rdi) 4176; AVX2-NEXT: vpextrb $6, %xmm3, %eax 4177; AVX2-NEXT: andb $1, %al 4178; AVX2-NEXT: movb %al, 4(%rdi) 4179; AVX2-NEXT: vpextrb $5, %xmm3, %eax 4180; AVX2-NEXT: andb $1, %al 4181; AVX2-NEXT: movb %al, 4(%rdi) 4182; AVX2-NEXT: vpextrb $4, %xmm3, %eax 4183; AVX2-NEXT: andb $1, %al 4184; AVX2-NEXT: movb %al, 4(%rdi) 4185; AVX2-NEXT: vpextrb $3, %xmm3, %eax 4186; AVX2-NEXT: andb $1, %al 4187; AVX2-NEXT: movb %al, 4(%rdi) 4188; AVX2-NEXT: vpextrb $2, %xmm3, %eax 4189; AVX2-NEXT: andb $1, %al 4190; AVX2-NEXT: movb %al, 4(%rdi) 4191; AVX2-NEXT: vpextrb $1, %xmm3, %eax 4192; AVX2-NEXT: andb $1, %al 4193; AVX2-NEXT: movb %al, 4(%rdi) 4194; AVX2-NEXT: vpextrb $0, %xmm3, %eax 4195; AVX2-NEXT: andb $1, %al 4196; AVX2-NEXT: movb %al, 4(%rdi) 4197; AVX2-NEXT: vpextrb $15, %xmm2, %eax 4198; AVX2-NEXT: andb $1, %al 4199; AVX2-NEXT: movb %al, 4(%rdi) 4200; AVX2-NEXT: vpextrb $14, %xmm2, %eax 4201; AVX2-NEXT: andb $1, %al 4202; AVX2-NEXT: movb %al, 4(%rdi) 4203; AVX2-NEXT: vpextrb $13, %xmm2, %eax 4204; AVX2-NEXT: andb $1, %al 4205; AVX2-NEXT: movb %al, 4(%rdi) 4206; AVX2-NEXT: vpextrb $12, %xmm2, %eax 4207; AVX2-NEXT: andb $1, %al 4208; AVX2-NEXT: movb %al, 4(%rdi) 4209; AVX2-NEXT: vpextrb $11, %xmm2, %eax 4210; AVX2-NEXT: andb $1, %al 4211; AVX2-NEXT: movb %al, 4(%rdi) 4212; AVX2-NEXT: vpextrb $10, %xmm2, %eax 4213; AVX2-NEXT: andb $1, %al 4214; AVX2-NEXT: movb %al, 4(%rdi) 4215; AVX2-NEXT: vpextrb $9, %xmm2, %eax 4216; AVX2-NEXT: andb $1, %al 4217; AVX2-NEXT: movb %al, 4(%rdi) 4218; AVX2-NEXT: vpextrb $8, %xmm2, %eax 4219; AVX2-NEXT: andb $1, %al 4220; AVX2-NEXT: movb %al, 4(%rdi) 4221; AVX2-NEXT: vpextrb $7, %xmm2, %eax 4222; AVX2-NEXT: andb $1, %al 4223; AVX2-NEXT: movb %al, 4(%rdi) 4224; AVX2-NEXT: vpextrb $6, %xmm2, %eax 4225; AVX2-NEXT: andb $1, %al 4226; AVX2-NEXT: movb %al, 4(%rdi) 4227; AVX2-NEXT: vpextrb $5, %xmm2, %eax 4228; AVX2-NEXT: andb $1, %al 4229; AVX2-NEXT: movb %al, 4(%rdi) 4230; AVX2-NEXT: vpextrb $4, %xmm2, %eax 4231; AVX2-NEXT: andb $1, %al 4232; AVX2-NEXT: movb %al, 4(%rdi) 4233; AVX2-NEXT: vpextrb $3, %xmm2, %eax 4234; AVX2-NEXT: andb $1, %al 4235; AVX2-NEXT: movb %al, 4(%rdi) 4236; AVX2-NEXT: vpextrb $2, %xmm2, %eax 4237; AVX2-NEXT: andb $1, %al 4238; AVX2-NEXT: movb %al, 4(%rdi) 4239; AVX2-NEXT: vpextrb $1, %xmm2, %eax 4240; AVX2-NEXT: andb $1, %al 4241; AVX2-NEXT: movb %al, 4(%rdi) 4242; AVX2-NEXT: vpextrb $0, %xmm2, %eax 4243; AVX2-NEXT: andb $1, %al 4244; AVX2-NEXT: movb %al, 4(%rdi) 4245; AVX2-NEXT: vpextrb $15, %xmm1, %eax 4246; AVX2-NEXT: andb $1, %al 4247; AVX2-NEXT: movb %al, (%rdi) 4248; AVX2-NEXT: vpextrb $14, %xmm1, %eax 4249; AVX2-NEXT: andb $1, %al 4250; AVX2-NEXT: movb %al, (%rdi) 4251; AVX2-NEXT: vpextrb $13, %xmm1, %eax 4252; AVX2-NEXT: andb $1, %al 4253; AVX2-NEXT: movb %al, (%rdi) 4254; AVX2-NEXT: vpextrb $12, %xmm1, %eax 4255; AVX2-NEXT: andb $1, %al 4256; AVX2-NEXT: movb %al, (%rdi) 4257; AVX2-NEXT: vpextrb $11, %xmm1, %eax 4258; AVX2-NEXT: andb $1, %al 4259; AVX2-NEXT: movb %al, (%rdi) 4260; AVX2-NEXT: vpextrb $10, %xmm1, %eax 4261; AVX2-NEXT: andb $1, %al 4262; AVX2-NEXT: movb %al, (%rdi) 4263; AVX2-NEXT: vpextrb $9, %xmm1, %eax 4264; AVX2-NEXT: andb $1, %al 4265; AVX2-NEXT: movb %al, (%rdi) 4266; AVX2-NEXT: vpextrb $8, %xmm1, %eax 4267; AVX2-NEXT: andb $1, %al 4268; AVX2-NEXT: movb %al, (%rdi) 4269; AVX2-NEXT: vpextrb $7, %xmm1, %eax 4270; AVX2-NEXT: andb $1, %al 4271; AVX2-NEXT: movb %al, (%rdi) 4272; AVX2-NEXT: vpextrb $6, %xmm1, %eax 4273; AVX2-NEXT: andb $1, %al 4274; AVX2-NEXT: movb %al, (%rdi) 4275; AVX2-NEXT: vpextrb $5, %xmm1, %eax 4276; AVX2-NEXT: andb $1, %al 4277; AVX2-NEXT: movb %al, (%rdi) 4278; AVX2-NEXT: vpextrb $4, %xmm1, %eax 4279; AVX2-NEXT: andb $1, %al 4280; AVX2-NEXT: movb %al, (%rdi) 4281; AVX2-NEXT: vpextrb $3, %xmm1, %eax 4282; AVX2-NEXT: andb $1, %al 4283; AVX2-NEXT: movb %al, (%rdi) 4284; AVX2-NEXT: vpextrb $2, %xmm1, %eax 4285; AVX2-NEXT: andb $1, %al 4286; AVX2-NEXT: movb %al, (%rdi) 4287; AVX2-NEXT: vpextrb $1, %xmm1, %eax 4288; AVX2-NEXT: andb $1, %al 4289; AVX2-NEXT: movb %al, (%rdi) 4290; AVX2-NEXT: vpextrb $0, %xmm1, %eax 4291; AVX2-NEXT: andb $1, %al 4292; AVX2-NEXT: movb %al, (%rdi) 4293; AVX2-NEXT: vpextrb $15, %xmm0, %eax 4294; AVX2-NEXT: andb $1, %al 4295; AVX2-NEXT: movb %al, (%rdi) 4296; AVX2-NEXT: vpextrb $14, %xmm0, %eax 4297; AVX2-NEXT: andb $1, %al 4298; AVX2-NEXT: movb %al, (%rdi) 4299; AVX2-NEXT: vpextrb $13, %xmm0, %eax 4300; AVX2-NEXT: andb $1, %al 4301; AVX2-NEXT: movb %al, (%rdi) 4302; AVX2-NEXT: vpextrb $12, %xmm0, %eax 4303; AVX2-NEXT: andb $1, %al 4304; AVX2-NEXT: movb %al, (%rdi) 4305; AVX2-NEXT: vpextrb $11, %xmm0, %eax 4306; AVX2-NEXT: andb $1, %al 4307; AVX2-NEXT: movb %al, (%rdi) 4308; AVX2-NEXT: vpextrb $10, %xmm0, %eax 4309; AVX2-NEXT: andb $1, %al 4310; AVX2-NEXT: movb %al, (%rdi) 4311; AVX2-NEXT: vpextrb $9, %xmm0, %eax 4312; AVX2-NEXT: andb $1, %al 4313; AVX2-NEXT: movb %al, (%rdi) 4314; AVX2-NEXT: vpextrb $8, %xmm0, %eax 4315; AVX2-NEXT: andb $1, %al 4316; AVX2-NEXT: movb %al, (%rdi) 4317; AVX2-NEXT: vpextrb $7, %xmm0, %eax 4318; AVX2-NEXT: andb $1, %al 4319; AVX2-NEXT: movb %al, (%rdi) 4320; AVX2-NEXT: vpextrb $6, %xmm0, %eax 4321; AVX2-NEXT: andb $1, %al 4322; AVX2-NEXT: movb %al, (%rdi) 4323; AVX2-NEXT: vpextrb $5, %xmm0, %eax 4324; AVX2-NEXT: andb $1, %al 4325; AVX2-NEXT: movb %al, (%rdi) 4326; AVX2-NEXT: vpextrb $4, %xmm0, %eax 4327; AVX2-NEXT: andb $1, %al 4328; AVX2-NEXT: movb %al, (%rdi) 4329; AVX2-NEXT: vpextrb $3, %xmm0, %eax 4330; AVX2-NEXT: andb $1, %al 4331; AVX2-NEXT: movb %al, (%rdi) 4332; AVX2-NEXT: vpextrb $2, %xmm0, %eax 4333; AVX2-NEXT: andb $1, %al 4334; AVX2-NEXT: movb %al, (%rdi) 4335; AVX2-NEXT: vpextrb $1, %xmm0, %eax 4336; AVX2-NEXT: andb $1, %al 4337; AVX2-NEXT: movb %al, (%rdi) 4338; AVX2-NEXT: vpextrb $0, %xmm0, %eax 4339; AVX2-NEXT: andb $1, %al 4340; AVX2-NEXT: movb %al, (%rdi) 4341; AVX2-NEXT: movq %rdi, %rax 4342; AVX2-NEXT: vzeroupper 4343; AVX2-NEXT: retq 4344; 4345; AVX512-LABEL: test_cmp_v64i16: 4346; AVX512: # BB#0: 4347; AVX512-NEXT: vpcmpgtw %ymm7, %ymm3, %ymm3 4348; AVX512-NEXT: vpmovsxwd %ymm3, %zmm3 4349; AVX512-NEXT: vpslld $31, %zmm3, %zmm3 4350; AVX512-NEXT: vptestmd %zmm3, %zmm3, %k0 4351; AVX512-NEXT: kshiftlw $14, %k0, %k1 4352; AVX512-NEXT: kshiftrw $15, %k1, %k1 4353; AVX512-NEXT: kmovw %k1, %eax 4354; AVX512-NEXT: kshiftlw $15, %k0, %k1 4355; AVX512-NEXT: kshiftrw $15, %k1, %k1 4356; AVX512-NEXT: kmovw %k1, %ecx 4357; AVX512-NEXT: vmovd %ecx, %xmm3 4358; AVX512-NEXT: vpinsrb $1, %eax, %xmm3, %xmm3 4359; AVX512-NEXT: kshiftlw $13, %k0, %k1 4360; AVX512-NEXT: kshiftrw $15, %k1, %k1 4361; AVX512-NEXT: kmovw %k1, %eax 4362; AVX512-NEXT: vpinsrb $2, %eax, %xmm3, %xmm3 4363; AVX512-NEXT: kshiftlw $12, %k0, %k1 4364; AVX512-NEXT: kshiftrw $15, %k1, %k1 4365; AVX512-NEXT: kmovw %k1, %eax 4366; AVX512-NEXT: vpinsrb $3, %eax, %xmm3, %xmm3 4367; AVX512-NEXT: kshiftlw $11, %k0, %k1 4368; AVX512-NEXT: kshiftrw $15, %k1, %k1 4369; AVX512-NEXT: kmovw %k1, %eax 4370; AVX512-NEXT: vpinsrb $4, %eax, %xmm3, %xmm3 4371; AVX512-NEXT: kshiftlw $10, %k0, %k1 4372; AVX512-NEXT: kshiftrw $15, %k1, %k1 4373; AVX512-NEXT: kmovw %k1, %eax 4374; AVX512-NEXT: vpinsrb $5, %eax, %xmm3, %xmm3 4375; AVX512-NEXT: kshiftlw $9, %k0, %k1 4376; AVX512-NEXT: kshiftrw $15, %k1, %k1 4377; AVX512-NEXT: kmovw %k1, %eax 4378; AVX512-NEXT: vpinsrb $6, %eax, %xmm3, %xmm3 4379; AVX512-NEXT: kshiftlw $8, %k0, %k1 4380; AVX512-NEXT: kshiftrw $15, %k1, %k1 4381; AVX512-NEXT: kmovw %k1, %eax 4382; AVX512-NEXT: vpinsrb $7, %eax, %xmm3, %xmm3 4383; AVX512-NEXT: kshiftlw $7, %k0, %k1 4384; AVX512-NEXT: kshiftrw $15, %k1, %k1 4385; AVX512-NEXT: kmovw %k1, %eax 4386; AVX512-NEXT: vpinsrb $8, %eax, %xmm3, %xmm3 4387; AVX512-NEXT: kshiftlw $6, %k0, %k1 4388; AVX512-NEXT: kshiftrw $15, %k1, %k1 4389; AVX512-NEXT: kmovw %k1, %eax 4390; AVX512-NEXT: vpinsrb $9, %eax, %xmm3, %xmm3 4391; AVX512-NEXT: kshiftlw $5, %k0, %k1 4392; AVX512-NEXT: kshiftrw $15, %k1, %k1 4393; AVX512-NEXT: kmovw %k1, %eax 4394; AVX512-NEXT: vpinsrb $10, %eax, %xmm3, %xmm3 4395; AVX512-NEXT: kshiftlw $4, %k0, %k1 4396; AVX512-NEXT: kshiftrw $15, %k1, %k1 4397; AVX512-NEXT: kmovw %k1, %eax 4398; AVX512-NEXT: vpinsrb $11, %eax, %xmm3, %xmm3 4399; AVX512-NEXT: kshiftlw $3, %k0, %k1 4400; AVX512-NEXT: kshiftrw $15, %k1, %k1 4401; AVX512-NEXT: kmovw %k1, %eax 4402; AVX512-NEXT: vpinsrb $12, %eax, %xmm3, %xmm3 4403; AVX512-NEXT: kshiftlw $2, %k0, %k1 4404; AVX512-NEXT: kshiftrw $15, %k1, %k1 4405; AVX512-NEXT: kmovw %k1, %eax 4406; AVX512-NEXT: vpinsrb $13, %eax, %xmm3, %xmm3 4407; AVX512-NEXT: kshiftlw $1, %k0, %k1 4408; AVX512-NEXT: kshiftrw $15, %k1, %k1 4409; AVX512-NEXT: kmovw %k1, %eax 4410; AVX512-NEXT: vpinsrb $14, %eax, %xmm3, %xmm3 4411; AVX512-NEXT: kshiftrw $15, %k0, %k0 4412; AVX512-NEXT: kmovw %k0, %eax 4413; AVX512-NEXT: vpinsrb $15, %eax, %xmm3, %xmm3 4414; AVX512-NEXT: vpcmpgtw %ymm6, %ymm2, %ymm2 4415; AVX512-NEXT: vpmovsxwd %ymm2, %zmm2 4416; AVX512-NEXT: vpslld $31, %zmm2, %zmm2 4417; AVX512-NEXT: vptestmd %zmm2, %zmm2, %k0 4418; AVX512-NEXT: kshiftlw $14, %k0, %k1 4419; AVX512-NEXT: kshiftrw $15, %k1, %k1 4420; AVX512-NEXT: kmovw %k1, %eax 4421; AVX512-NEXT: kshiftlw $15, %k0, %k1 4422; AVX512-NEXT: kshiftrw $15, %k1, %k1 4423; AVX512-NEXT: kmovw %k1, %ecx 4424; AVX512-NEXT: vmovd %ecx, %xmm2 4425; AVX512-NEXT: vpinsrb $1, %eax, %xmm2, %xmm2 4426; AVX512-NEXT: kshiftlw $13, %k0, %k1 4427; AVX512-NEXT: kshiftrw $15, %k1, %k1 4428; AVX512-NEXT: kmovw %k1, %eax 4429; AVX512-NEXT: vpinsrb $2, %eax, %xmm2, %xmm2 4430; AVX512-NEXT: kshiftlw $12, %k0, %k1 4431; AVX512-NEXT: kshiftrw $15, %k1, %k1 4432; AVX512-NEXT: kmovw %k1, %eax 4433; AVX512-NEXT: vpinsrb $3, %eax, %xmm2, %xmm2 4434; AVX512-NEXT: kshiftlw $11, %k0, %k1 4435; AVX512-NEXT: kshiftrw $15, %k1, %k1 4436; AVX512-NEXT: kmovw %k1, %eax 4437; AVX512-NEXT: vpinsrb $4, %eax, %xmm2, %xmm2 4438; AVX512-NEXT: kshiftlw $10, %k0, %k1 4439; AVX512-NEXT: kshiftrw $15, %k1, %k1 4440; AVX512-NEXT: kmovw %k1, %eax 4441; AVX512-NEXT: vpinsrb $5, %eax, %xmm2, %xmm2 4442; AVX512-NEXT: kshiftlw $9, %k0, %k1 4443; AVX512-NEXT: kshiftrw $15, %k1, %k1 4444; AVX512-NEXT: kmovw %k1, %eax 4445; AVX512-NEXT: vpinsrb $6, %eax, %xmm2, %xmm2 4446; AVX512-NEXT: kshiftlw $8, %k0, %k1 4447; AVX512-NEXT: kshiftrw $15, %k1, %k1 4448; AVX512-NEXT: kmovw %k1, %eax 4449; AVX512-NEXT: vpinsrb $7, %eax, %xmm2, %xmm2 4450; AVX512-NEXT: kshiftlw $7, %k0, %k1 4451; AVX512-NEXT: kshiftrw $15, %k1, %k1 4452; AVX512-NEXT: kmovw %k1, %eax 4453; AVX512-NEXT: vpinsrb $8, %eax, %xmm2, %xmm2 4454; AVX512-NEXT: kshiftlw $6, %k0, %k1 4455; AVX512-NEXT: kshiftrw $15, %k1, %k1 4456; AVX512-NEXT: kmovw %k1, %eax 4457; AVX512-NEXT: vpinsrb $9, %eax, %xmm2, %xmm2 4458; AVX512-NEXT: kshiftlw $5, %k0, %k1 4459; AVX512-NEXT: kshiftrw $15, %k1, %k1 4460; AVX512-NEXT: kmovw %k1, %eax 4461; AVX512-NEXT: vpinsrb $10, %eax, %xmm2, %xmm2 4462; AVX512-NEXT: kshiftlw $4, %k0, %k1 4463; AVX512-NEXT: kshiftrw $15, %k1, %k1 4464; AVX512-NEXT: kmovw %k1, %eax 4465; AVX512-NEXT: vpinsrb $11, %eax, %xmm2, %xmm2 4466; AVX512-NEXT: kshiftlw $3, %k0, %k1 4467; AVX512-NEXT: kshiftrw $15, %k1, %k1 4468; AVX512-NEXT: kmovw %k1, %eax 4469; AVX512-NEXT: vpinsrb $12, %eax, %xmm2, %xmm2 4470; AVX512-NEXT: kshiftlw $2, %k0, %k1 4471; AVX512-NEXT: kshiftrw $15, %k1, %k1 4472; AVX512-NEXT: kmovw %k1, %eax 4473; AVX512-NEXT: vpinsrb $13, %eax, %xmm2, %xmm2 4474; AVX512-NEXT: kshiftlw $1, %k0, %k1 4475; AVX512-NEXT: kshiftrw $15, %k1, %k1 4476; AVX512-NEXT: kmovw %k1, %eax 4477; AVX512-NEXT: vpinsrb $14, %eax, %xmm2, %xmm2 4478; AVX512-NEXT: kshiftrw $15, %k0, %k0 4479; AVX512-NEXT: kmovw %k0, %eax 4480; AVX512-NEXT: vpinsrb $15, %eax, %xmm2, %xmm2 4481; AVX512-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2 4482; AVX512-NEXT: vpsllw $7, %ymm2, %ymm2 4483; AVX512-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] 4484; AVX512-NEXT: vpand %ymm3, %ymm2, %ymm2 4485; AVX512-NEXT: vpxor %ymm6, %ymm6, %ymm6 4486; AVX512-NEXT: vpcmpgtb %ymm2, %ymm6, %ymm2 4487; AVX512-NEXT: vpcmpgtw %ymm5, %ymm1, %ymm1 4488; AVX512-NEXT: vpmovsxwd %ymm1, %zmm1 4489; AVX512-NEXT: vpslld $31, %zmm1, %zmm1 4490; AVX512-NEXT: vptestmd %zmm1, %zmm1, %k0 4491; AVX512-NEXT: kshiftlw $14, %k0, %k1 4492; AVX512-NEXT: kshiftrw $15, %k1, %k1 4493; AVX512-NEXT: kmovw %k1, %eax 4494; AVX512-NEXT: kshiftlw $15, %k0, %k1 4495; AVX512-NEXT: kshiftrw $15, %k1, %k1 4496; AVX512-NEXT: kmovw %k1, %ecx 4497; AVX512-NEXT: vmovd %ecx, %xmm1 4498; AVX512-NEXT: vpinsrb $1, %eax, %xmm1, %xmm1 4499; AVX512-NEXT: kshiftlw $13, %k0, %k1 4500; AVX512-NEXT: kshiftrw $15, %k1, %k1 4501; AVX512-NEXT: kmovw %k1, %eax 4502; AVX512-NEXT: vpinsrb $2, %eax, %xmm1, %xmm1 4503; AVX512-NEXT: kshiftlw $12, %k0, %k1 4504; AVX512-NEXT: kshiftrw $15, %k1, %k1 4505; AVX512-NEXT: kmovw %k1, %eax 4506; AVX512-NEXT: vpinsrb $3, %eax, %xmm1, %xmm1 4507; AVX512-NEXT: kshiftlw $11, %k0, %k1 4508; AVX512-NEXT: kshiftrw $15, %k1, %k1 4509; AVX512-NEXT: kmovw %k1, %eax 4510; AVX512-NEXT: vpinsrb $4, %eax, %xmm1, %xmm1 4511; AVX512-NEXT: kshiftlw $10, %k0, %k1 4512; AVX512-NEXT: kshiftrw $15, %k1, %k1 4513; AVX512-NEXT: kmovw %k1, %eax 4514; AVX512-NEXT: vpinsrb $5, %eax, %xmm1, %xmm1 4515; AVX512-NEXT: kshiftlw $9, %k0, %k1 4516; AVX512-NEXT: kshiftrw $15, %k1, %k1 4517; AVX512-NEXT: kmovw %k1, %eax 4518; AVX512-NEXT: vpinsrb $6, %eax, %xmm1, %xmm1 4519; AVX512-NEXT: kshiftlw $8, %k0, %k1 4520; AVX512-NEXT: kshiftrw $15, %k1, %k1 4521; AVX512-NEXT: kmovw %k1, %eax 4522; AVX512-NEXT: vpinsrb $7, %eax, %xmm1, %xmm1 4523; AVX512-NEXT: kshiftlw $7, %k0, %k1 4524; AVX512-NEXT: kshiftrw $15, %k1, %k1 4525; AVX512-NEXT: kmovw %k1, %eax 4526; AVX512-NEXT: vpinsrb $8, %eax, %xmm1, %xmm1 4527; AVX512-NEXT: kshiftlw $6, %k0, %k1 4528; AVX512-NEXT: kshiftrw $15, %k1, %k1 4529; AVX512-NEXT: kmovw %k1, %eax 4530; AVX512-NEXT: vpinsrb $9, %eax, %xmm1, %xmm1 4531; AVX512-NEXT: kshiftlw $5, %k0, %k1 4532; AVX512-NEXT: kshiftrw $15, %k1, %k1 4533; AVX512-NEXT: kmovw %k1, %eax 4534; AVX512-NEXT: vpinsrb $10, %eax, %xmm1, %xmm1 4535; AVX512-NEXT: kshiftlw $4, %k0, %k1 4536; AVX512-NEXT: kshiftrw $15, %k1, %k1 4537; AVX512-NEXT: kmovw %k1, %eax 4538; AVX512-NEXT: vpinsrb $11, %eax, %xmm1, %xmm1 4539; AVX512-NEXT: kshiftlw $3, %k0, %k1 4540; AVX512-NEXT: kshiftrw $15, %k1, %k1 4541; AVX512-NEXT: kmovw %k1, %eax 4542; AVX512-NEXT: vpinsrb $12, %eax, %xmm1, %xmm1 4543; AVX512-NEXT: kshiftlw $2, %k0, %k1 4544; AVX512-NEXT: kshiftrw $15, %k1, %k1 4545; AVX512-NEXT: kmovw %k1, %eax 4546; AVX512-NEXT: vpinsrb $13, %eax, %xmm1, %xmm1 4547; AVX512-NEXT: kshiftlw $1, %k0, %k1 4548; AVX512-NEXT: kshiftrw $15, %k1, %k1 4549; AVX512-NEXT: kmovw %k1, %eax 4550; AVX512-NEXT: vpinsrb $14, %eax, %xmm1, %xmm1 4551; AVX512-NEXT: kshiftrw $15, %k0, %k0 4552; AVX512-NEXT: kmovw %k0, %eax 4553; AVX512-NEXT: vpinsrb $15, %eax, %xmm1, %xmm1 4554; AVX512-NEXT: vpcmpgtw %ymm4, %ymm0, %ymm0 4555; AVX512-NEXT: vpmovsxwd %ymm0, %zmm0 4556; AVX512-NEXT: vpslld $31, %zmm0, %zmm0 4557; AVX512-NEXT: vptestmd %zmm0, %zmm0, %k0 4558; AVX512-NEXT: kshiftlw $14, %k0, %k1 4559; AVX512-NEXT: kshiftrw $15, %k1, %k1 4560; AVX512-NEXT: kmovw %k1, %eax 4561; AVX512-NEXT: kshiftlw $15, %k0, %k1 4562; AVX512-NEXT: kshiftrw $15, %k1, %k1 4563; AVX512-NEXT: kmovw %k1, %ecx 4564; AVX512-NEXT: vmovd %ecx, %xmm0 4565; AVX512-NEXT: vpinsrb $1, %eax, %xmm0, %xmm0 4566; AVX512-NEXT: kshiftlw $13, %k0, %k1 4567; AVX512-NEXT: kshiftrw $15, %k1, %k1 4568; AVX512-NEXT: kmovw %k1, %eax 4569; AVX512-NEXT: vpinsrb $2, %eax, %xmm0, %xmm0 4570; AVX512-NEXT: kshiftlw $12, %k0, %k1 4571; AVX512-NEXT: kshiftrw $15, %k1, %k1 4572; AVX512-NEXT: kmovw %k1, %eax 4573; AVX512-NEXT: vpinsrb $3, %eax, %xmm0, %xmm0 4574; AVX512-NEXT: kshiftlw $11, %k0, %k1 4575; AVX512-NEXT: kshiftrw $15, %k1, %k1 4576; AVX512-NEXT: kmovw %k1, %eax 4577; AVX512-NEXT: vpinsrb $4, %eax, %xmm0, %xmm0 4578; AVX512-NEXT: kshiftlw $10, %k0, %k1 4579; AVX512-NEXT: kshiftrw $15, %k1, %k1 4580; AVX512-NEXT: kmovw %k1, %eax 4581; AVX512-NEXT: vpinsrb $5, %eax, %xmm0, %xmm0 4582; AVX512-NEXT: kshiftlw $9, %k0, %k1 4583; AVX512-NEXT: kshiftrw $15, %k1, %k1 4584; AVX512-NEXT: kmovw %k1, %eax 4585; AVX512-NEXT: vpinsrb $6, %eax, %xmm0, %xmm0 4586; AVX512-NEXT: kshiftlw $8, %k0, %k1 4587; AVX512-NEXT: kshiftrw $15, %k1, %k1 4588; AVX512-NEXT: kmovw %k1, %eax 4589; AVX512-NEXT: vpinsrb $7, %eax, %xmm0, %xmm0 4590; AVX512-NEXT: kshiftlw $7, %k0, %k1 4591; AVX512-NEXT: kshiftrw $15, %k1, %k1 4592; AVX512-NEXT: kmovw %k1, %eax 4593; AVX512-NEXT: vpinsrb $8, %eax, %xmm0, %xmm0 4594; AVX512-NEXT: kshiftlw $6, %k0, %k1 4595; AVX512-NEXT: kshiftrw $15, %k1, %k1 4596; AVX512-NEXT: kmovw %k1, %eax 4597; AVX512-NEXT: vpinsrb $9, %eax, %xmm0, %xmm0 4598; AVX512-NEXT: kshiftlw $5, %k0, %k1 4599; AVX512-NEXT: kshiftrw $15, %k1, %k1 4600; AVX512-NEXT: kmovw %k1, %eax 4601; AVX512-NEXT: vpinsrb $10, %eax, %xmm0, %xmm0 4602; AVX512-NEXT: kshiftlw $4, %k0, %k1 4603; AVX512-NEXT: kshiftrw $15, %k1, %k1 4604; AVX512-NEXT: kmovw %k1, %eax 4605; AVX512-NEXT: vpinsrb $11, %eax, %xmm0, %xmm0 4606; AVX512-NEXT: kshiftlw $3, %k0, %k1 4607; AVX512-NEXT: kshiftrw $15, %k1, %k1 4608; AVX512-NEXT: kmovw %k1, %eax 4609; AVX512-NEXT: vpinsrb $12, %eax, %xmm0, %xmm0 4610; AVX512-NEXT: kshiftlw $2, %k0, %k1 4611; AVX512-NEXT: kshiftrw $15, %k1, %k1 4612; AVX512-NEXT: kmovw %k1, %eax 4613; AVX512-NEXT: vpinsrb $13, %eax, %xmm0, %xmm0 4614; AVX512-NEXT: kshiftlw $1, %k0, %k1 4615; AVX512-NEXT: kshiftrw $15, %k1, %k1 4616; AVX512-NEXT: kmovw %k1, %eax 4617; AVX512-NEXT: vpinsrb $14, %eax, %xmm0, %xmm0 4618; AVX512-NEXT: kshiftrw $15, %k0, %k0 4619; AVX512-NEXT: kmovw %k0, %eax 4620; AVX512-NEXT: vpinsrb $15, %eax, %xmm0, %xmm0 4621; AVX512-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 4622; AVX512-NEXT: vpsllw $7, %ymm0, %ymm0 4623; AVX512-NEXT: vpand %ymm3, %ymm0, %ymm0 4624; AVX512-NEXT: vpcmpgtb %ymm0, %ymm6, %ymm0 4625; AVX512-NEXT: vextracti128 $1, %ymm0, %xmm1 4626; AVX512-NEXT: vextracti128 $1, %ymm2, %xmm3 4627; AVX512-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill> 4628; AVX512-NEXT: # kill: %XMM2<def> %XMM2<kill> %YMM2<kill> 4629; AVX512-NEXT: retq 4630 %1 = icmp sgt <64 x i16> %a0, %a1 4631 ret <64 x i1> %1 4632} 4633 4634define <128 x i1> @test_cmp_v128i8(<128 x i8> %a0, <128 x i8> %a1) nounwind { 4635; SSE2-LABEL: test_cmp_v128i8: 4636; SSE2: # BB#0: 4637; SSE2-NEXT: pushq %rax 4638; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm0 4639; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm1 4640; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm2 4641; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm3 4642; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm4 4643; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm5 4644; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm6 4645; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm7 4646; SSE2-NEXT: movdqa %xmm7, -{{[0-9]+}}(%rsp) 4647; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4648; SSE2-NEXT: andb $1, %al 4649; SSE2-NEXT: movb %al, 14(%rdi) 4650; SSE2-NEXT: movdqa %xmm6, -{{[0-9]+}}(%rsp) 4651; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4652; SSE2-NEXT: andb $1, %al 4653; SSE2-NEXT: movb %al, 12(%rdi) 4654; SSE2-NEXT: movdqa %xmm5, -{{[0-9]+}}(%rsp) 4655; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4656; SSE2-NEXT: andb $1, %al 4657; SSE2-NEXT: movb %al, 10(%rdi) 4658; SSE2-NEXT: movdqa %xmm4, -{{[0-9]+}}(%rsp) 4659; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4660; SSE2-NEXT: andb $1, %al 4661; SSE2-NEXT: movb %al, 8(%rdi) 4662; SSE2-NEXT: movdqa %xmm3, -{{[0-9]+}}(%rsp) 4663; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4664; SSE2-NEXT: andb $1, %al 4665; SSE2-NEXT: movb %al, 6(%rdi) 4666; SSE2-NEXT: movdqa %xmm2, -{{[0-9]+}}(%rsp) 4667; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4668; SSE2-NEXT: andb $1, %al 4669; SSE2-NEXT: movb %al, 4(%rdi) 4670; SSE2-NEXT: movdqa %xmm1, -{{[0-9]+}}(%rsp) 4671; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4672; SSE2-NEXT: andb $1, %al 4673; SSE2-NEXT: movb %al, 2(%rdi) 4674; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 4675; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4676; SSE2-NEXT: andb $1, %al 4677; SSE2-NEXT: movb %al, (%rdi) 4678; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4679; SSE2-NEXT: andb $1, %al 4680; SSE2-NEXT: movb %al, 14(%rdi) 4681; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4682; SSE2-NEXT: andb $1, %al 4683; SSE2-NEXT: movb %al, 12(%rdi) 4684; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4685; SSE2-NEXT: andb $1, %al 4686; SSE2-NEXT: movb %al, 10(%rdi) 4687; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4688; SSE2-NEXT: andb $1, %al 4689; SSE2-NEXT: movb %al, 8(%rdi) 4690; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4691; SSE2-NEXT: andb $1, %al 4692; SSE2-NEXT: movb %al, 6(%rdi) 4693; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4694; SSE2-NEXT: andb $1, %al 4695; SSE2-NEXT: movb %al, 4(%rdi) 4696; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4697; SSE2-NEXT: andb $1, %al 4698; SSE2-NEXT: movb %al, 2(%rdi) 4699; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4700; SSE2-NEXT: andb $1, %al 4701; SSE2-NEXT: movb %al, (%rdi) 4702; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4703; SSE2-NEXT: andb $1, %al 4704; SSE2-NEXT: movb %al, 14(%rdi) 4705; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4706; SSE2-NEXT: andb $1, %al 4707; SSE2-NEXT: movb %al, 12(%rdi) 4708; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4709; SSE2-NEXT: andb $1, %al 4710; SSE2-NEXT: movb %al, 10(%rdi) 4711; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4712; SSE2-NEXT: andb $1, %al 4713; SSE2-NEXT: movb %al, 8(%rdi) 4714; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4715; SSE2-NEXT: andb $1, %al 4716; SSE2-NEXT: movb %al, 6(%rdi) 4717; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4718; SSE2-NEXT: andb $1, %al 4719; SSE2-NEXT: movb %al, 4(%rdi) 4720; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4721; SSE2-NEXT: andb $1, %al 4722; SSE2-NEXT: movb %al, 2(%rdi) 4723; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4724; SSE2-NEXT: andb $1, %al 4725; SSE2-NEXT: movb %al, (%rdi) 4726; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4727; SSE2-NEXT: andb $1, %al 4728; SSE2-NEXT: movb %al, 14(%rdi) 4729; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4730; SSE2-NEXT: andb $1, %al 4731; SSE2-NEXT: movb %al, 12(%rdi) 4732; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4733; SSE2-NEXT: andb $1, %al 4734; SSE2-NEXT: movb %al, 10(%rdi) 4735; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4736; SSE2-NEXT: andb $1, %al 4737; SSE2-NEXT: movb %al, 8(%rdi) 4738; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4739; SSE2-NEXT: andb $1, %al 4740; SSE2-NEXT: movb %al, 6(%rdi) 4741; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4742; SSE2-NEXT: andb $1, %al 4743; SSE2-NEXT: movb %al, 4(%rdi) 4744; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4745; SSE2-NEXT: andb $1, %al 4746; SSE2-NEXT: movb %al, 2(%rdi) 4747; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4748; SSE2-NEXT: andb $1, %al 4749; SSE2-NEXT: movb %al, (%rdi) 4750; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4751; SSE2-NEXT: andb $1, %al 4752; SSE2-NEXT: movb %al, 14(%rdi) 4753; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4754; SSE2-NEXT: andb $1, %al 4755; SSE2-NEXT: movb %al, 12(%rdi) 4756; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4757; SSE2-NEXT: andb $1, %al 4758; SSE2-NEXT: movb %al, 10(%rdi) 4759; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4760; SSE2-NEXT: andb $1, %al 4761; SSE2-NEXT: movb %al, 8(%rdi) 4762; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4763; SSE2-NEXT: andb $1, %al 4764; SSE2-NEXT: movb %al, 6(%rdi) 4765; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4766; SSE2-NEXT: andb $1, %al 4767; SSE2-NEXT: movb %al, 4(%rdi) 4768; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4769; SSE2-NEXT: andb $1, %al 4770; SSE2-NEXT: movb %al, 2(%rdi) 4771; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4772; SSE2-NEXT: andb $1, %al 4773; SSE2-NEXT: movb %al, (%rdi) 4774; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4775; SSE2-NEXT: andb $1, %al 4776; SSE2-NEXT: movb %al, 14(%rdi) 4777; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4778; SSE2-NEXT: andb $1, %al 4779; SSE2-NEXT: movb %al, 12(%rdi) 4780; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4781; SSE2-NEXT: andb $1, %al 4782; SSE2-NEXT: movb %al, 10(%rdi) 4783; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4784; SSE2-NEXT: andb $1, %al 4785; SSE2-NEXT: movb %al, 8(%rdi) 4786; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4787; SSE2-NEXT: andb $1, %al 4788; SSE2-NEXT: movb %al, 6(%rdi) 4789; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4790; SSE2-NEXT: andb $1, %al 4791; SSE2-NEXT: movb %al, 4(%rdi) 4792; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4793; SSE2-NEXT: andb $1, %al 4794; SSE2-NEXT: movb %al, 2(%rdi) 4795; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4796; SSE2-NEXT: andb $1, %al 4797; SSE2-NEXT: movb %al, (%rdi) 4798; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4799; SSE2-NEXT: andb $1, %al 4800; SSE2-NEXT: movb %al, 14(%rdi) 4801; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4802; SSE2-NEXT: andb $1, %al 4803; SSE2-NEXT: movb %al, 12(%rdi) 4804; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4805; SSE2-NEXT: andb $1, %al 4806; SSE2-NEXT: movb %al, 10(%rdi) 4807; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4808; SSE2-NEXT: andb $1, %al 4809; SSE2-NEXT: movb %al, 8(%rdi) 4810; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4811; SSE2-NEXT: andb $1, %al 4812; SSE2-NEXT: movb %al, 6(%rdi) 4813; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4814; SSE2-NEXT: andb $1, %al 4815; SSE2-NEXT: movb %al, 4(%rdi) 4816; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4817; SSE2-NEXT: andb $1, %al 4818; SSE2-NEXT: movb %al, 2(%rdi) 4819; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4820; SSE2-NEXT: andb $1, %al 4821; SSE2-NEXT: movb %al, (%rdi) 4822; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4823; SSE2-NEXT: andb $1, %al 4824; SSE2-NEXT: movb %al, 14(%rdi) 4825; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4826; SSE2-NEXT: andb $1, %al 4827; SSE2-NEXT: movb %al, 12(%rdi) 4828; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4829; SSE2-NEXT: andb $1, %al 4830; SSE2-NEXT: movb %al, 10(%rdi) 4831; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4832; SSE2-NEXT: andb $1, %al 4833; SSE2-NEXT: movb %al, 8(%rdi) 4834; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4835; SSE2-NEXT: andb $1, %al 4836; SSE2-NEXT: movb %al, 6(%rdi) 4837; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4838; SSE2-NEXT: andb $1, %al 4839; SSE2-NEXT: movb %al, 4(%rdi) 4840; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4841; SSE2-NEXT: andb $1, %al 4842; SSE2-NEXT: movb %al, 2(%rdi) 4843; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4844; SSE2-NEXT: andb $1, %al 4845; SSE2-NEXT: movb %al, (%rdi) 4846; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4847; SSE2-NEXT: andb $1, %al 4848; SSE2-NEXT: movb %al, 14(%rdi) 4849; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4850; SSE2-NEXT: andb $1, %al 4851; SSE2-NEXT: movb %al, 12(%rdi) 4852; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4853; SSE2-NEXT: andb $1, %al 4854; SSE2-NEXT: movb %al, 10(%rdi) 4855; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4856; SSE2-NEXT: andb $1, %al 4857; SSE2-NEXT: movb %al, 8(%rdi) 4858; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4859; SSE2-NEXT: andb $1, %al 4860; SSE2-NEXT: movb %al, 6(%rdi) 4861; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4862; SSE2-NEXT: andb $1, %al 4863; SSE2-NEXT: movb %al, 4(%rdi) 4864; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4865; SSE2-NEXT: andb $1, %al 4866; SSE2-NEXT: movb %al, 2(%rdi) 4867; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4868; SSE2-NEXT: andb $1, %al 4869; SSE2-NEXT: movb %al, (%rdi) 4870; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4871; SSE2-NEXT: andb $1, %al 4872; SSE2-NEXT: movb %al, 14(%rdi) 4873; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4874; SSE2-NEXT: andb $1, %al 4875; SSE2-NEXT: movb %al, 12(%rdi) 4876; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4877; SSE2-NEXT: andb $1, %al 4878; SSE2-NEXT: movb %al, 10(%rdi) 4879; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4880; SSE2-NEXT: andb $1, %al 4881; SSE2-NEXT: movb %al, 8(%rdi) 4882; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4883; SSE2-NEXT: andb $1, %al 4884; SSE2-NEXT: movb %al, 6(%rdi) 4885; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4886; SSE2-NEXT: andb $1, %al 4887; SSE2-NEXT: movb %al, 4(%rdi) 4888; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4889; SSE2-NEXT: andb $1, %al 4890; SSE2-NEXT: movb %al, 2(%rdi) 4891; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4892; SSE2-NEXT: andb $1, %al 4893; SSE2-NEXT: movb %al, (%rdi) 4894; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4895; SSE2-NEXT: andb $1, %al 4896; SSE2-NEXT: movb %al, 14(%rdi) 4897; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4898; SSE2-NEXT: andb $1, %al 4899; SSE2-NEXT: movb %al, 12(%rdi) 4900; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4901; SSE2-NEXT: andb $1, %al 4902; SSE2-NEXT: movb %al, 10(%rdi) 4903; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4904; SSE2-NEXT: andb $1, %al 4905; SSE2-NEXT: movb %al, 8(%rdi) 4906; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4907; SSE2-NEXT: andb $1, %al 4908; SSE2-NEXT: movb %al, 6(%rdi) 4909; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4910; SSE2-NEXT: andb $1, %al 4911; SSE2-NEXT: movb %al, 4(%rdi) 4912; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4913; SSE2-NEXT: andb $1, %al 4914; SSE2-NEXT: movb %al, 2(%rdi) 4915; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4916; SSE2-NEXT: andb $1, %al 4917; SSE2-NEXT: movb %al, (%rdi) 4918; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4919; SSE2-NEXT: andb $1, %al 4920; SSE2-NEXT: movb %al, 14(%rdi) 4921; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4922; SSE2-NEXT: andb $1, %al 4923; SSE2-NEXT: movb %al, 12(%rdi) 4924; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4925; SSE2-NEXT: andb $1, %al 4926; SSE2-NEXT: movb %al, 10(%rdi) 4927; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4928; SSE2-NEXT: andb $1, %al 4929; SSE2-NEXT: movb %al, 8(%rdi) 4930; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4931; SSE2-NEXT: andb $1, %al 4932; SSE2-NEXT: movb %al, 6(%rdi) 4933; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4934; SSE2-NEXT: andb $1, %al 4935; SSE2-NEXT: movb %al, 4(%rdi) 4936; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4937; SSE2-NEXT: andb $1, %al 4938; SSE2-NEXT: movb %al, 2(%rdi) 4939; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4940; SSE2-NEXT: andb $1, %al 4941; SSE2-NEXT: movb %al, (%rdi) 4942; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4943; SSE2-NEXT: andb $1, %al 4944; SSE2-NEXT: movb %al, 14(%rdi) 4945; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4946; SSE2-NEXT: andb $1, %al 4947; SSE2-NEXT: movb %al, 12(%rdi) 4948; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4949; SSE2-NEXT: andb $1, %al 4950; SSE2-NEXT: movb %al, 10(%rdi) 4951; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4952; SSE2-NEXT: andb $1, %al 4953; SSE2-NEXT: movb %al, 8(%rdi) 4954; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4955; SSE2-NEXT: andb $1, %al 4956; SSE2-NEXT: movb %al, 6(%rdi) 4957; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4958; SSE2-NEXT: andb $1, %al 4959; SSE2-NEXT: movb %al, 4(%rdi) 4960; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4961; SSE2-NEXT: andb $1, %al 4962; SSE2-NEXT: movb %al, 2(%rdi) 4963; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4964; SSE2-NEXT: andb $1, %al 4965; SSE2-NEXT: movb %al, (%rdi) 4966; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4967; SSE2-NEXT: andb $1, %al 4968; SSE2-NEXT: movb %al, 14(%rdi) 4969; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4970; SSE2-NEXT: andb $1, %al 4971; SSE2-NEXT: movb %al, 12(%rdi) 4972; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4973; SSE2-NEXT: andb $1, %al 4974; SSE2-NEXT: movb %al, 10(%rdi) 4975; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4976; SSE2-NEXT: andb $1, %al 4977; SSE2-NEXT: movb %al, 8(%rdi) 4978; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4979; SSE2-NEXT: andb $1, %al 4980; SSE2-NEXT: movb %al, 6(%rdi) 4981; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4982; SSE2-NEXT: andb $1, %al 4983; SSE2-NEXT: movb %al, 4(%rdi) 4984; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4985; SSE2-NEXT: andb $1, %al 4986; SSE2-NEXT: movb %al, 2(%rdi) 4987; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4988; SSE2-NEXT: andb $1, %al 4989; SSE2-NEXT: movb %al, (%rdi) 4990; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4991; SSE2-NEXT: andb $1, %al 4992; SSE2-NEXT: movb %al, 14(%rdi) 4993; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4994; SSE2-NEXT: andb $1, %al 4995; SSE2-NEXT: movb %al, 12(%rdi) 4996; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 4997; SSE2-NEXT: andb $1, %al 4998; SSE2-NEXT: movb %al, 10(%rdi) 4999; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5000; SSE2-NEXT: andb $1, %al 5001; SSE2-NEXT: movb %al, 8(%rdi) 5002; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5003; SSE2-NEXT: andb $1, %al 5004; SSE2-NEXT: movb %al, 6(%rdi) 5005; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5006; SSE2-NEXT: andb $1, %al 5007; SSE2-NEXT: movb %al, 4(%rdi) 5008; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5009; SSE2-NEXT: andb $1, %al 5010; SSE2-NEXT: movb %al, 2(%rdi) 5011; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5012; SSE2-NEXT: andb $1, %al 5013; SSE2-NEXT: movb %al, (%rdi) 5014; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5015; SSE2-NEXT: andb $1, %al 5016; SSE2-NEXT: movb %al, 14(%rdi) 5017; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5018; SSE2-NEXT: andb $1, %al 5019; SSE2-NEXT: movb %al, 12(%rdi) 5020; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5021; SSE2-NEXT: andb $1, %al 5022; SSE2-NEXT: movb %al, 10(%rdi) 5023; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5024; SSE2-NEXT: andb $1, %al 5025; SSE2-NEXT: movb %al, 8(%rdi) 5026; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5027; SSE2-NEXT: andb $1, %al 5028; SSE2-NEXT: movb %al, 6(%rdi) 5029; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5030; SSE2-NEXT: andb $1, %al 5031; SSE2-NEXT: movb %al, 4(%rdi) 5032; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5033; SSE2-NEXT: andb $1, %al 5034; SSE2-NEXT: movb %al, 2(%rdi) 5035; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 5036; SSE2-NEXT: andb $1, %al 5037; SSE2-NEXT: movb %al, (%rdi) 5038; SSE2-NEXT: movq %rdi, %rax 5039; SSE2-NEXT: popq %rcx 5040; SSE2-NEXT: retq 5041; 5042; SSE42-LABEL: test_cmp_v128i8: 5043; SSE42: # BB#0: 5044; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm0 5045; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm1 5046; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm2 5047; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm3 5048; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm4 5049; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm5 5050; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm6 5051; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm7 5052; SSE42-NEXT: pextrb $15, %xmm7, %eax 5053; SSE42-NEXT: andb $1, %al 5054; SSE42-NEXT: movb %al, 14(%rdi) 5055; SSE42-NEXT: pextrb $14, %xmm7, %eax 5056; SSE42-NEXT: andb $1, %al 5057; SSE42-NEXT: movb %al, 14(%rdi) 5058; SSE42-NEXT: pextrb $13, %xmm7, %eax 5059; SSE42-NEXT: andb $1, %al 5060; SSE42-NEXT: movb %al, 14(%rdi) 5061; SSE42-NEXT: pextrb $12, %xmm7, %eax 5062; SSE42-NEXT: andb $1, %al 5063; SSE42-NEXT: movb %al, 14(%rdi) 5064; SSE42-NEXT: pextrb $11, %xmm7, %eax 5065; SSE42-NEXT: andb $1, %al 5066; SSE42-NEXT: movb %al, 14(%rdi) 5067; SSE42-NEXT: pextrb $10, %xmm7, %eax 5068; SSE42-NEXT: andb $1, %al 5069; SSE42-NEXT: movb %al, 14(%rdi) 5070; SSE42-NEXT: pextrb $9, %xmm7, %eax 5071; SSE42-NEXT: andb $1, %al 5072; SSE42-NEXT: movb %al, 14(%rdi) 5073; SSE42-NEXT: pextrb $8, %xmm7, %eax 5074; SSE42-NEXT: andb $1, %al 5075; SSE42-NEXT: movb %al, 14(%rdi) 5076; SSE42-NEXT: pextrb $7, %xmm7, %eax 5077; SSE42-NEXT: andb $1, %al 5078; SSE42-NEXT: movb %al, 14(%rdi) 5079; SSE42-NEXT: pextrb $6, %xmm7, %eax 5080; SSE42-NEXT: andb $1, %al 5081; SSE42-NEXT: movb %al, 14(%rdi) 5082; SSE42-NEXT: pextrb $5, %xmm7, %eax 5083; SSE42-NEXT: andb $1, %al 5084; SSE42-NEXT: movb %al, 14(%rdi) 5085; SSE42-NEXT: pextrb $4, %xmm7, %eax 5086; SSE42-NEXT: andb $1, %al 5087; SSE42-NEXT: movb %al, 14(%rdi) 5088; SSE42-NEXT: pextrb $3, %xmm7, %eax 5089; SSE42-NEXT: andb $1, %al 5090; SSE42-NEXT: movb %al, 14(%rdi) 5091; SSE42-NEXT: pextrb $2, %xmm7, %eax 5092; SSE42-NEXT: andb $1, %al 5093; SSE42-NEXT: movb %al, 14(%rdi) 5094; SSE42-NEXT: pextrb $1, %xmm7, %eax 5095; SSE42-NEXT: andb $1, %al 5096; SSE42-NEXT: movb %al, 14(%rdi) 5097; SSE42-NEXT: pextrb $0, %xmm7, %eax 5098; SSE42-NEXT: andb $1, %al 5099; SSE42-NEXT: movb %al, 14(%rdi) 5100; SSE42-NEXT: pextrb $15, %xmm6, %eax 5101; SSE42-NEXT: andb $1, %al 5102; SSE42-NEXT: movb %al, 12(%rdi) 5103; SSE42-NEXT: pextrb $14, %xmm6, %eax 5104; SSE42-NEXT: andb $1, %al 5105; SSE42-NEXT: movb %al, 12(%rdi) 5106; SSE42-NEXT: pextrb $13, %xmm6, %eax 5107; SSE42-NEXT: andb $1, %al 5108; SSE42-NEXT: movb %al, 12(%rdi) 5109; SSE42-NEXT: pextrb $12, %xmm6, %eax 5110; SSE42-NEXT: andb $1, %al 5111; SSE42-NEXT: movb %al, 12(%rdi) 5112; SSE42-NEXT: pextrb $11, %xmm6, %eax 5113; SSE42-NEXT: andb $1, %al 5114; SSE42-NEXT: movb %al, 12(%rdi) 5115; SSE42-NEXT: pextrb $10, %xmm6, %eax 5116; SSE42-NEXT: andb $1, %al 5117; SSE42-NEXT: movb %al, 12(%rdi) 5118; SSE42-NEXT: pextrb $9, %xmm6, %eax 5119; SSE42-NEXT: andb $1, %al 5120; SSE42-NEXT: movb %al, 12(%rdi) 5121; SSE42-NEXT: pextrb $8, %xmm6, %eax 5122; SSE42-NEXT: andb $1, %al 5123; SSE42-NEXT: movb %al, 12(%rdi) 5124; SSE42-NEXT: pextrb $7, %xmm6, %eax 5125; SSE42-NEXT: andb $1, %al 5126; SSE42-NEXT: movb %al, 12(%rdi) 5127; SSE42-NEXT: pextrb $6, %xmm6, %eax 5128; SSE42-NEXT: andb $1, %al 5129; SSE42-NEXT: movb %al, 12(%rdi) 5130; SSE42-NEXT: pextrb $5, %xmm6, %eax 5131; SSE42-NEXT: andb $1, %al 5132; SSE42-NEXT: movb %al, 12(%rdi) 5133; SSE42-NEXT: pextrb $4, %xmm6, %eax 5134; SSE42-NEXT: andb $1, %al 5135; SSE42-NEXT: movb %al, 12(%rdi) 5136; SSE42-NEXT: pextrb $3, %xmm6, %eax 5137; SSE42-NEXT: andb $1, %al 5138; SSE42-NEXT: movb %al, 12(%rdi) 5139; SSE42-NEXT: pextrb $2, %xmm6, %eax 5140; SSE42-NEXT: andb $1, %al 5141; SSE42-NEXT: movb %al, 12(%rdi) 5142; SSE42-NEXT: pextrb $1, %xmm6, %eax 5143; SSE42-NEXT: andb $1, %al 5144; SSE42-NEXT: movb %al, 12(%rdi) 5145; SSE42-NEXT: pextrb $0, %xmm6, %eax 5146; SSE42-NEXT: andb $1, %al 5147; SSE42-NEXT: movb %al, 12(%rdi) 5148; SSE42-NEXT: pextrb $15, %xmm5, %eax 5149; SSE42-NEXT: andb $1, %al 5150; SSE42-NEXT: movb %al, 10(%rdi) 5151; SSE42-NEXT: pextrb $14, %xmm5, %eax 5152; SSE42-NEXT: andb $1, %al 5153; SSE42-NEXT: movb %al, 10(%rdi) 5154; SSE42-NEXT: pextrb $13, %xmm5, %eax 5155; SSE42-NEXT: andb $1, %al 5156; SSE42-NEXT: movb %al, 10(%rdi) 5157; SSE42-NEXT: pextrb $12, %xmm5, %eax 5158; SSE42-NEXT: andb $1, %al 5159; SSE42-NEXT: movb %al, 10(%rdi) 5160; SSE42-NEXT: pextrb $11, %xmm5, %eax 5161; SSE42-NEXT: andb $1, %al 5162; SSE42-NEXT: movb %al, 10(%rdi) 5163; SSE42-NEXT: pextrb $10, %xmm5, %eax 5164; SSE42-NEXT: andb $1, %al 5165; SSE42-NEXT: movb %al, 10(%rdi) 5166; SSE42-NEXT: pextrb $9, %xmm5, %eax 5167; SSE42-NEXT: andb $1, %al 5168; SSE42-NEXT: movb %al, 10(%rdi) 5169; SSE42-NEXT: pextrb $8, %xmm5, %eax 5170; SSE42-NEXT: andb $1, %al 5171; SSE42-NEXT: movb %al, 10(%rdi) 5172; SSE42-NEXT: pextrb $7, %xmm5, %eax 5173; SSE42-NEXT: andb $1, %al 5174; SSE42-NEXT: movb %al, 10(%rdi) 5175; SSE42-NEXT: pextrb $6, %xmm5, %eax 5176; SSE42-NEXT: andb $1, %al 5177; SSE42-NEXT: movb %al, 10(%rdi) 5178; SSE42-NEXT: pextrb $5, %xmm5, %eax 5179; SSE42-NEXT: andb $1, %al 5180; SSE42-NEXT: movb %al, 10(%rdi) 5181; SSE42-NEXT: pextrb $4, %xmm5, %eax 5182; SSE42-NEXT: andb $1, %al 5183; SSE42-NEXT: movb %al, 10(%rdi) 5184; SSE42-NEXT: pextrb $3, %xmm5, %eax 5185; SSE42-NEXT: andb $1, %al 5186; SSE42-NEXT: movb %al, 10(%rdi) 5187; SSE42-NEXT: pextrb $2, %xmm5, %eax 5188; SSE42-NEXT: andb $1, %al 5189; SSE42-NEXT: movb %al, 10(%rdi) 5190; SSE42-NEXT: pextrb $1, %xmm5, %eax 5191; SSE42-NEXT: andb $1, %al 5192; SSE42-NEXT: movb %al, 10(%rdi) 5193; SSE42-NEXT: pextrb $0, %xmm5, %eax 5194; SSE42-NEXT: andb $1, %al 5195; SSE42-NEXT: movb %al, 10(%rdi) 5196; SSE42-NEXT: pextrb $15, %xmm4, %eax 5197; SSE42-NEXT: andb $1, %al 5198; SSE42-NEXT: movb %al, 8(%rdi) 5199; SSE42-NEXT: pextrb $14, %xmm4, %eax 5200; SSE42-NEXT: andb $1, %al 5201; SSE42-NEXT: movb %al, 8(%rdi) 5202; SSE42-NEXT: pextrb $13, %xmm4, %eax 5203; SSE42-NEXT: andb $1, %al 5204; SSE42-NEXT: movb %al, 8(%rdi) 5205; SSE42-NEXT: pextrb $12, %xmm4, %eax 5206; SSE42-NEXT: andb $1, %al 5207; SSE42-NEXT: movb %al, 8(%rdi) 5208; SSE42-NEXT: pextrb $11, %xmm4, %eax 5209; SSE42-NEXT: andb $1, %al 5210; SSE42-NEXT: movb %al, 8(%rdi) 5211; SSE42-NEXT: pextrb $10, %xmm4, %eax 5212; SSE42-NEXT: andb $1, %al 5213; SSE42-NEXT: movb %al, 8(%rdi) 5214; SSE42-NEXT: pextrb $9, %xmm4, %eax 5215; SSE42-NEXT: andb $1, %al 5216; SSE42-NEXT: movb %al, 8(%rdi) 5217; SSE42-NEXT: pextrb $8, %xmm4, %eax 5218; SSE42-NEXT: andb $1, %al 5219; SSE42-NEXT: movb %al, 8(%rdi) 5220; SSE42-NEXT: pextrb $7, %xmm4, %eax 5221; SSE42-NEXT: andb $1, %al 5222; SSE42-NEXT: movb %al, 8(%rdi) 5223; SSE42-NEXT: pextrb $6, %xmm4, %eax 5224; SSE42-NEXT: andb $1, %al 5225; SSE42-NEXT: movb %al, 8(%rdi) 5226; SSE42-NEXT: pextrb $5, %xmm4, %eax 5227; SSE42-NEXT: andb $1, %al 5228; SSE42-NEXT: movb %al, 8(%rdi) 5229; SSE42-NEXT: pextrb $4, %xmm4, %eax 5230; SSE42-NEXT: andb $1, %al 5231; SSE42-NEXT: movb %al, 8(%rdi) 5232; SSE42-NEXT: pextrb $3, %xmm4, %eax 5233; SSE42-NEXT: andb $1, %al 5234; SSE42-NEXT: movb %al, 8(%rdi) 5235; SSE42-NEXT: pextrb $2, %xmm4, %eax 5236; SSE42-NEXT: andb $1, %al 5237; SSE42-NEXT: movb %al, 8(%rdi) 5238; SSE42-NEXT: pextrb $1, %xmm4, %eax 5239; SSE42-NEXT: andb $1, %al 5240; SSE42-NEXT: movb %al, 8(%rdi) 5241; SSE42-NEXT: pextrb $0, %xmm4, %eax 5242; SSE42-NEXT: andb $1, %al 5243; SSE42-NEXT: movb %al, 8(%rdi) 5244; SSE42-NEXT: pextrb $15, %xmm3, %eax 5245; SSE42-NEXT: andb $1, %al 5246; SSE42-NEXT: movb %al, 6(%rdi) 5247; SSE42-NEXT: pextrb $14, %xmm3, %eax 5248; SSE42-NEXT: andb $1, %al 5249; SSE42-NEXT: movb %al, 6(%rdi) 5250; SSE42-NEXT: pextrb $13, %xmm3, %eax 5251; SSE42-NEXT: andb $1, %al 5252; SSE42-NEXT: movb %al, 6(%rdi) 5253; SSE42-NEXT: pextrb $12, %xmm3, %eax 5254; SSE42-NEXT: andb $1, %al 5255; SSE42-NEXT: movb %al, 6(%rdi) 5256; SSE42-NEXT: pextrb $11, %xmm3, %eax 5257; SSE42-NEXT: andb $1, %al 5258; SSE42-NEXT: movb %al, 6(%rdi) 5259; SSE42-NEXT: pextrb $10, %xmm3, %eax 5260; SSE42-NEXT: andb $1, %al 5261; SSE42-NEXT: movb %al, 6(%rdi) 5262; SSE42-NEXT: pextrb $9, %xmm3, %eax 5263; SSE42-NEXT: andb $1, %al 5264; SSE42-NEXT: movb %al, 6(%rdi) 5265; SSE42-NEXT: pextrb $8, %xmm3, %eax 5266; SSE42-NEXT: andb $1, %al 5267; SSE42-NEXT: movb %al, 6(%rdi) 5268; SSE42-NEXT: pextrb $7, %xmm3, %eax 5269; SSE42-NEXT: andb $1, %al 5270; SSE42-NEXT: movb %al, 6(%rdi) 5271; SSE42-NEXT: pextrb $6, %xmm3, %eax 5272; SSE42-NEXT: andb $1, %al 5273; SSE42-NEXT: movb %al, 6(%rdi) 5274; SSE42-NEXT: pextrb $5, %xmm3, %eax 5275; SSE42-NEXT: andb $1, %al 5276; SSE42-NEXT: movb %al, 6(%rdi) 5277; SSE42-NEXT: pextrb $4, %xmm3, %eax 5278; SSE42-NEXT: andb $1, %al 5279; SSE42-NEXT: movb %al, 6(%rdi) 5280; SSE42-NEXT: pextrb $3, %xmm3, %eax 5281; SSE42-NEXT: andb $1, %al 5282; SSE42-NEXT: movb %al, 6(%rdi) 5283; SSE42-NEXT: pextrb $2, %xmm3, %eax 5284; SSE42-NEXT: andb $1, %al 5285; SSE42-NEXT: movb %al, 6(%rdi) 5286; SSE42-NEXT: pextrb $1, %xmm3, %eax 5287; SSE42-NEXT: andb $1, %al 5288; SSE42-NEXT: movb %al, 6(%rdi) 5289; SSE42-NEXT: pextrb $0, %xmm3, %eax 5290; SSE42-NEXT: andb $1, %al 5291; SSE42-NEXT: movb %al, 6(%rdi) 5292; SSE42-NEXT: pextrb $15, %xmm2, %eax 5293; SSE42-NEXT: andb $1, %al 5294; SSE42-NEXT: movb %al, 4(%rdi) 5295; SSE42-NEXT: pextrb $14, %xmm2, %eax 5296; SSE42-NEXT: andb $1, %al 5297; SSE42-NEXT: movb %al, 4(%rdi) 5298; SSE42-NEXT: pextrb $13, %xmm2, %eax 5299; SSE42-NEXT: andb $1, %al 5300; SSE42-NEXT: movb %al, 4(%rdi) 5301; SSE42-NEXT: pextrb $12, %xmm2, %eax 5302; SSE42-NEXT: andb $1, %al 5303; SSE42-NEXT: movb %al, 4(%rdi) 5304; SSE42-NEXT: pextrb $11, %xmm2, %eax 5305; SSE42-NEXT: andb $1, %al 5306; SSE42-NEXT: movb %al, 4(%rdi) 5307; SSE42-NEXT: pextrb $10, %xmm2, %eax 5308; SSE42-NEXT: andb $1, %al 5309; SSE42-NEXT: movb %al, 4(%rdi) 5310; SSE42-NEXT: pextrb $9, %xmm2, %eax 5311; SSE42-NEXT: andb $1, %al 5312; SSE42-NEXT: movb %al, 4(%rdi) 5313; SSE42-NEXT: pextrb $8, %xmm2, %eax 5314; SSE42-NEXT: andb $1, %al 5315; SSE42-NEXT: movb %al, 4(%rdi) 5316; SSE42-NEXT: pextrb $7, %xmm2, %eax 5317; SSE42-NEXT: andb $1, %al 5318; SSE42-NEXT: movb %al, 4(%rdi) 5319; SSE42-NEXT: pextrb $6, %xmm2, %eax 5320; SSE42-NEXT: andb $1, %al 5321; SSE42-NEXT: movb %al, 4(%rdi) 5322; SSE42-NEXT: pextrb $5, %xmm2, %eax 5323; SSE42-NEXT: andb $1, %al 5324; SSE42-NEXT: movb %al, 4(%rdi) 5325; SSE42-NEXT: pextrb $4, %xmm2, %eax 5326; SSE42-NEXT: andb $1, %al 5327; SSE42-NEXT: movb %al, 4(%rdi) 5328; SSE42-NEXT: pextrb $3, %xmm2, %eax 5329; SSE42-NEXT: andb $1, %al 5330; SSE42-NEXT: movb %al, 4(%rdi) 5331; SSE42-NEXT: pextrb $2, %xmm2, %eax 5332; SSE42-NEXT: andb $1, %al 5333; SSE42-NEXT: movb %al, 4(%rdi) 5334; SSE42-NEXT: pextrb $1, %xmm2, %eax 5335; SSE42-NEXT: andb $1, %al 5336; SSE42-NEXT: movb %al, 4(%rdi) 5337; SSE42-NEXT: pextrb $0, %xmm2, %eax 5338; SSE42-NEXT: andb $1, %al 5339; SSE42-NEXT: movb %al, 4(%rdi) 5340; SSE42-NEXT: pextrb $15, %xmm1, %eax 5341; SSE42-NEXT: andb $1, %al 5342; SSE42-NEXT: movb %al, 2(%rdi) 5343; SSE42-NEXT: pextrb $14, %xmm1, %eax 5344; SSE42-NEXT: andb $1, %al 5345; SSE42-NEXT: movb %al, 2(%rdi) 5346; SSE42-NEXT: pextrb $13, %xmm1, %eax 5347; SSE42-NEXT: andb $1, %al 5348; SSE42-NEXT: movb %al, 2(%rdi) 5349; SSE42-NEXT: pextrb $12, %xmm1, %eax 5350; SSE42-NEXT: andb $1, %al 5351; SSE42-NEXT: movb %al, 2(%rdi) 5352; SSE42-NEXT: pextrb $11, %xmm1, %eax 5353; SSE42-NEXT: andb $1, %al 5354; SSE42-NEXT: movb %al, 2(%rdi) 5355; SSE42-NEXT: pextrb $10, %xmm1, %eax 5356; SSE42-NEXT: andb $1, %al 5357; SSE42-NEXT: movb %al, 2(%rdi) 5358; SSE42-NEXT: pextrb $9, %xmm1, %eax 5359; SSE42-NEXT: andb $1, %al 5360; SSE42-NEXT: movb %al, 2(%rdi) 5361; SSE42-NEXT: pextrb $8, %xmm1, %eax 5362; SSE42-NEXT: andb $1, %al 5363; SSE42-NEXT: movb %al, 2(%rdi) 5364; SSE42-NEXT: pextrb $7, %xmm1, %eax 5365; SSE42-NEXT: andb $1, %al 5366; SSE42-NEXT: movb %al, 2(%rdi) 5367; SSE42-NEXT: pextrb $6, %xmm1, %eax 5368; SSE42-NEXT: andb $1, %al 5369; SSE42-NEXT: movb %al, 2(%rdi) 5370; SSE42-NEXT: pextrb $5, %xmm1, %eax 5371; SSE42-NEXT: andb $1, %al 5372; SSE42-NEXT: movb %al, 2(%rdi) 5373; SSE42-NEXT: pextrb $4, %xmm1, %eax 5374; SSE42-NEXT: andb $1, %al 5375; SSE42-NEXT: movb %al, 2(%rdi) 5376; SSE42-NEXT: pextrb $3, %xmm1, %eax 5377; SSE42-NEXT: andb $1, %al 5378; SSE42-NEXT: movb %al, 2(%rdi) 5379; SSE42-NEXT: pextrb $2, %xmm1, %eax 5380; SSE42-NEXT: andb $1, %al 5381; SSE42-NEXT: movb %al, 2(%rdi) 5382; SSE42-NEXT: pextrb $1, %xmm1, %eax 5383; SSE42-NEXT: andb $1, %al 5384; SSE42-NEXT: movb %al, 2(%rdi) 5385; SSE42-NEXT: pextrb $0, %xmm1, %eax 5386; SSE42-NEXT: andb $1, %al 5387; SSE42-NEXT: movb %al, 2(%rdi) 5388; SSE42-NEXT: pextrb $15, %xmm0, %eax 5389; SSE42-NEXT: andb $1, %al 5390; SSE42-NEXT: movb %al, (%rdi) 5391; SSE42-NEXT: pextrb $14, %xmm0, %eax 5392; SSE42-NEXT: andb $1, %al 5393; SSE42-NEXT: movb %al, (%rdi) 5394; SSE42-NEXT: pextrb $13, %xmm0, %eax 5395; SSE42-NEXT: andb $1, %al 5396; SSE42-NEXT: movb %al, (%rdi) 5397; SSE42-NEXT: pextrb $12, %xmm0, %eax 5398; SSE42-NEXT: andb $1, %al 5399; SSE42-NEXT: movb %al, (%rdi) 5400; SSE42-NEXT: pextrb $11, %xmm0, %eax 5401; SSE42-NEXT: andb $1, %al 5402; SSE42-NEXT: movb %al, (%rdi) 5403; SSE42-NEXT: pextrb $10, %xmm0, %eax 5404; SSE42-NEXT: andb $1, %al 5405; SSE42-NEXT: movb %al, (%rdi) 5406; SSE42-NEXT: pextrb $9, %xmm0, %eax 5407; SSE42-NEXT: andb $1, %al 5408; SSE42-NEXT: movb %al, (%rdi) 5409; SSE42-NEXT: pextrb $8, %xmm0, %eax 5410; SSE42-NEXT: andb $1, %al 5411; SSE42-NEXT: movb %al, (%rdi) 5412; SSE42-NEXT: pextrb $7, %xmm0, %eax 5413; SSE42-NEXT: andb $1, %al 5414; SSE42-NEXT: movb %al, (%rdi) 5415; SSE42-NEXT: pextrb $6, %xmm0, %eax 5416; SSE42-NEXT: andb $1, %al 5417; SSE42-NEXT: movb %al, (%rdi) 5418; SSE42-NEXT: pextrb $5, %xmm0, %eax 5419; SSE42-NEXT: andb $1, %al 5420; SSE42-NEXT: movb %al, (%rdi) 5421; SSE42-NEXT: pextrb $4, %xmm0, %eax 5422; SSE42-NEXT: andb $1, %al 5423; SSE42-NEXT: movb %al, (%rdi) 5424; SSE42-NEXT: pextrb $3, %xmm0, %eax 5425; SSE42-NEXT: andb $1, %al 5426; SSE42-NEXT: movb %al, (%rdi) 5427; SSE42-NEXT: pextrb $2, %xmm0, %eax 5428; SSE42-NEXT: andb $1, %al 5429; SSE42-NEXT: movb %al, (%rdi) 5430; SSE42-NEXT: pextrb $1, %xmm0, %eax 5431; SSE42-NEXT: andb $1, %al 5432; SSE42-NEXT: movb %al, (%rdi) 5433; SSE42-NEXT: pextrb $0, %xmm0, %eax 5434; SSE42-NEXT: andb $1, %al 5435; SSE42-NEXT: movb %al, (%rdi) 5436; SSE42-NEXT: movq %rdi, %rax 5437; SSE42-NEXT: retq 5438; 5439; AVX1-LABEL: test_cmp_v128i8: 5440; AVX1: # BB#0: 5441; AVX1-NEXT: vpcmpgtb %xmm4, %xmm0, %xmm8 5442; AVX1-NEXT: vextractf128 $1, %ymm4, %xmm4 5443; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 5444; AVX1-NEXT: vpcmpgtb %xmm4, %xmm0, %xmm0 5445; AVX1-NEXT: vpcmpgtb %xmm5, %xmm1, %xmm4 5446; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm5 5447; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1 5448; AVX1-NEXT: vpcmpgtb %xmm5, %xmm1, %xmm1 5449; AVX1-NEXT: vpcmpgtb %xmm6, %xmm2, %xmm5 5450; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm6 5451; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm2 5452; AVX1-NEXT: vpcmpgtb %xmm6, %xmm2, %xmm2 5453; AVX1-NEXT: vpcmpgtb %xmm7, %xmm3, %xmm6 5454; AVX1-NEXT: vextractf128 $1, %ymm7, %xmm7 5455; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm3 5456; AVX1-NEXT: vpcmpgtb %xmm7, %xmm3, %xmm3 5457; AVX1-NEXT: vpextrb $15, %xmm3, %eax 5458; AVX1-NEXT: andb $1, %al 5459; AVX1-NEXT: movb %al, 12(%rdi) 5460; AVX1-NEXT: vpextrb $14, %xmm3, %eax 5461; AVX1-NEXT: andb $1, %al 5462; AVX1-NEXT: movb %al, 12(%rdi) 5463; AVX1-NEXT: vpextrb $13, %xmm3, %eax 5464; AVX1-NEXT: andb $1, %al 5465; AVX1-NEXT: movb %al, 12(%rdi) 5466; AVX1-NEXT: vpextrb $12, %xmm3, %eax 5467; AVX1-NEXT: andb $1, %al 5468; AVX1-NEXT: movb %al, 12(%rdi) 5469; AVX1-NEXT: vpextrb $11, %xmm3, %eax 5470; AVX1-NEXT: andb $1, %al 5471; AVX1-NEXT: movb %al, 12(%rdi) 5472; AVX1-NEXT: vpextrb $10, %xmm3, %eax 5473; AVX1-NEXT: andb $1, %al 5474; AVX1-NEXT: movb %al, 12(%rdi) 5475; AVX1-NEXT: vpextrb $9, %xmm3, %eax 5476; AVX1-NEXT: andb $1, %al 5477; AVX1-NEXT: movb %al, 12(%rdi) 5478; AVX1-NEXT: vpextrb $8, %xmm3, %eax 5479; AVX1-NEXT: andb $1, %al 5480; AVX1-NEXT: movb %al, 12(%rdi) 5481; AVX1-NEXT: vpextrb $7, %xmm3, %eax 5482; AVX1-NEXT: andb $1, %al 5483; AVX1-NEXT: movb %al, 12(%rdi) 5484; AVX1-NEXT: vpextrb $6, %xmm3, %eax 5485; AVX1-NEXT: andb $1, %al 5486; AVX1-NEXT: movb %al, 12(%rdi) 5487; AVX1-NEXT: vpextrb $5, %xmm3, %eax 5488; AVX1-NEXT: andb $1, %al 5489; AVX1-NEXT: movb %al, 12(%rdi) 5490; AVX1-NEXT: vpextrb $4, %xmm3, %eax 5491; AVX1-NEXT: andb $1, %al 5492; AVX1-NEXT: movb %al, 12(%rdi) 5493; AVX1-NEXT: vpextrb $3, %xmm3, %eax 5494; AVX1-NEXT: andb $1, %al 5495; AVX1-NEXT: movb %al, 12(%rdi) 5496; AVX1-NEXT: vpextrb $2, %xmm3, %eax 5497; AVX1-NEXT: andb $1, %al 5498; AVX1-NEXT: movb %al, 12(%rdi) 5499; AVX1-NEXT: vpextrb $1, %xmm3, %eax 5500; AVX1-NEXT: andb $1, %al 5501; AVX1-NEXT: movb %al, 12(%rdi) 5502; AVX1-NEXT: vpextrb $0, %xmm3, %eax 5503; AVX1-NEXT: andb $1, %al 5504; AVX1-NEXT: movb %al, 12(%rdi) 5505; AVX1-NEXT: vpextrb $15, %xmm6, %eax 5506; AVX1-NEXT: andb $1, %al 5507; AVX1-NEXT: movb %al, 12(%rdi) 5508; AVX1-NEXT: vpextrb $14, %xmm6, %eax 5509; AVX1-NEXT: andb $1, %al 5510; AVX1-NEXT: movb %al, 12(%rdi) 5511; AVX1-NEXT: vpextrb $13, %xmm6, %eax 5512; AVX1-NEXT: andb $1, %al 5513; AVX1-NEXT: movb %al, 12(%rdi) 5514; AVX1-NEXT: vpextrb $12, %xmm6, %eax 5515; AVX1-NEXT: andb $1, %al 5516; AVX1-NEXT: movb %al, 12(%rdi) 5517; AVX1-NEXT: vpextrb $11, %xmm6, %eax 5518; AVX1-NEXT: andb $1, %al 5519; AVX1-NEXT: movb %al, 12(%rdi) 5520; AVX1-NEXT: vpextrb $10, %xmm6, %eax 5521; AVX1-NEXT: andb $1, %al 5522; AVX1-NEXT: movb %al, 12(%rdi) 5523; AVX1-NEXT: vpextrb $9, %xmm6, %eax 5524; AVX1-NEXT: andb $1, %al 5525; AVX1-NEXT: movb %al, 12(%rdi) 5526; AVX1-NEXT: vpextrb $8, %xmm6, %eax 5527; AVX1-NEXT: andb $1, %al 5528; AVX1-NEXT: movb %al, 12(%rdi) 5529; AVX1-NEXT: vpextrb $7, %xmm6, %eax 5530; AVX1-NEXT: andb $1, %al 5531; AVX1-NEXT: movb %al, 12(%rdi) 5532; AVX1-NEXT: vpextrb $6, %xmm6, %eax 5533; AVX1-NEXT: andb $1, %al 5534; AVX1-NEXT: movb %al, 12(%rdi) 5535; AVX1-NEXT: vpextrb $5, %xmm6, %eax 5536; AVX1-NEXT: andb $1, %al 5537; AVX1-NEXT: movb %al, 12(%rdi) 5538; AVX1-NEXT: vpextrb $4, %xmm6, %eax 5539; AVX1-NEXT: andb $1, %al 5540; AVX1-NEXT: movb %al, 12(%rdi) 5541; AVX1-NEXT: vpextrb $3, %xmm6, %eax 5542; AVX1-NEXT: andb $1, %al 5543; AVX1-NEXT: movb %al, 12(%rdi) 5544; AVX1-NEXT: vpextrb $2, %xmm6, %eax 5545; AVX1-NEXT: andb $1, %al 5546; AVX1-NEXT: movb %al, 12(%rdi) 5547; AVX1-NEXT: vpextrb $1, %xmm6, %eax 5548; AVX1-NEXT: andb $1, %al 5549; AVX1-NEXT: movb %al, 12(%rdi) 5550; AVX1-NEXT: vpextrb $0, %xmm6, %eax 5551; AVX1-NEXT: andb $1, %al 5552; AVX1-NEXT: movb %al, 12(%rdi) 5553; AVX1-NEXT: vpextrb $15, %xmm2, %eax 5554; AVX1-NEXT: andb $1, %al 5555; AVX1-NEXT: movb %al, 8(%rdi) 5556; AVX1-NEXT: vpextrb $14, %xmm2, %eax 5557; AVX1-NEXT: andb $1, %al 5558; AVX1-NEXT: movb %al, 8(%rdi) 5559; AVX1-NEXT: vpextrb $13, %xmm2, %eax 5560; AVX1-NEXT: andb $1, %al 5561; AVX1-NEXT: movb %al, 8(%rdi) 5562; AVX1-NEXT: vpextrb $12, %xmm2, %eax 5563; AVX1-NEXT: andb $1, %al 5564; AVX1-NEXT: movb %al, 8(%rdi) 5565; AVX1-NEXT: vpextrb $11, %xmm2, %eax 5566; AVX1-NEXT: andb $1, %al 5567; AVX1-NEXT: movb %al, 8(%rdi) 5568; AVX1-NEXT: vpextrb $10, %xmm2, %eax 5569; AVX1-NEXT: andb $1, %al 5570; AVX1-NEXT: movb %al, 8(%rdi) 5571; AVX1-NEXT: vpextrb $9, %xmm2, %eax 5572; AVX1-NEXT: andb $1, %al 5573; AVX1-NEXT: movb %al, 8(%rdi) 5574; AVX1-NEXT: vpextrb $8, %xmm2, %eax 5575; AVX1-NEXT: andb $1, %al 5576; AVX1-NEXT: movb %al, 8(%rdi) 5577; AVX1-NEXT: vpextrb $7, %xmm2, %eax 5578; AVX1-NEXT: andb $1, %al 5579; AVX1-NEXT: movb %al, 8(%rdi) 5580; AVX1-NEXT: vpextrb $6, %xmm2, %eax 5581; AVX1-NEXT: andb $1, %al 5582; AVX1-NEXT: movb %al, 8(%rdi) 5583; AVX1-NEXT: vpextrb $5, %xmm2, %eax 5584; AVX1-NEXT: andb $1, %al 5585; AVX1-NEXT: movb %al, 8(%rdi) 5586; AVX1-NEXT: vpextrb $4, %xmm2, %eax 5587; AVX1-NEXT: andb $1, %al 5588; AVX1-NEXT: movb %al, 8(%rdi) 5589; AVX1-NEXT: vpextrb $3, %xmm2, %eax 5590; AVX1-NEXT: andb $1, %al 5591; AVX1-NEXT: movb %al, 8(%rdi) 5592; AVX1-NEXT: vpextrb $2, %xmm2, %eax 5593; AVX1-NEXT: andb $1, %al 5594; AVX1-NEXT: movb %al, 8(%rdi) 5595; AVX1-NEXT: vpextrb $1, %xmm2, %eax 5596; AVX1-NEXT: andb $1, %al 5597; AVX1-NEXT: movb %al, 8(%rdi) 5598; AVX1-NEXT: vpextrb $0, %xmm2, %eax 5599; AVX1-NEXT: andb $1, %al 5600; AVX1-NEXT: movb %al, 8(%rdi) 5601; AVX1-NEXT: vpextrb $15, %xmm5, %eax 5602; AVX1-NEXT: andb $1, %al 5603; AVX1-NEXT: movb %al, 8(%rdi) 5604; AVX1-NEXT: vpextrb $14, %xmm5, %eax 5605; AVX1-NEXT: andb $1, %al 5606; AVX1-NEXT: movb %al, 8(%rdi) 5607; AVX1-NEXT: vpextrb $13, %xmm5, %eax 5608; AVX1-NEXT: andb $1, %al 5609; AVX1-NEXT: movb %al, 8(%rdi) 5610; AVX1-NEXT: vpextrb $12, %xmm5, %eax 5611; AVX1-NEXT: andb $1, %al 5612; AVX1-NEXT: movb %al, 8(%rdi) 5613; AVX1-NEXT: vpextrb $11, %xmm5, %eax 5614; AVX1-NEXT: andb $1, %al 5615; AVX1-NEXT: movb %al, 8(%rdi) 5616; AVX1-NEXT: vpextrb $10, %xmm5, %eax 5617; AVX1-NEXT: andb $1, %al 5618; AVX1-NEXT: movb %al, 8(%rdi) 5619; AVX1-NEXT: vpextrb $9, %xmm5, %eax 5620; AVX1-NEXT: andb $1, %al 5621; AVX1-NEXT: movb %al, 8(%rdi) 5622; AVX1-NEXT: vpextrb $8, %xmm5, %eax 5623; AVX1-NEXT: andb $1, %al 5624; AVX1-NEXT: movb %al, 8(%rdi) 5625; AVX1-NEXT: vpextrb $7, %xmm5, %eax 5626; AVX1-NEXT: andb $1, %al 5627; AVX1-NEXT: movb %al, 8(%rdi) 5628; AVX1-NEXT: vpextrb $6, %xmm5, %eax 5629; AVX1-NEXT: andb $1, %al 5630; AVX1-NEXT: movb %al, 8(%rdi) 5631; AVX1-NEXT: vpextrb $5, %xmm5, %eax 5632; AVX1-NEXT: andb $1, %al 5633; AVX1-NEXT: movb %al, 8(%rdi) 5634; AVX1-NEXT: vpextrb $4, %xmm5, %eax 5635; AVX1-NEXT: andb $1, %al 5636; AVX1-NEXT: movb %al, 8(%rdi) 5637; AVX1-NEXT: vpextrb $3, %xmm5, %eax 5638; AVX1-NEXT: andb $1, %al 5639; AVX1-NEXT: movb %al, 8(%rdi) 5640; AVX1-NEXT: vpextrb $2, %xmm5, %eax 5641; AVX1-NEXT: andb $1, %al 5642; AVX1-NEXT: movb %al, 8(%rdi) 5643; AVX1-NEXT: vpextrb $1, %xmm5, %eax 5644; AVX1-NEXT: andb $1, %al 5645; AVX1-NEXT: movb %al, 8(%rdi) 5646; AVX1-NEXT: vpextrb $0, %xmm5, %eax 5647; AVX1-NEXT: andb $1, %al 5648; AVX1-NEXT: movb %al, 8(%rdi) 5649; AVX1-NEXT: vpextrb $15, %xmm1, %eax 5650; AVX1-NEXT: andb $1, %al 5651; AVX1-NEXT: movb %al, 4(%rdi) 5652; AVX1-NEXT: vpextrb $14, %xmm1, %eax 5653; AVX1-NEXT: andb $1, %al 5654; AVX1-NEXT: movb %al, 4(%rdi) 5655; AVX1-NEXT: vpextrb $13, %xmm1, %eax 5656; AVX1-NEXT: andb $1, %al 5657; AVX1-NEXT: movb %al, 4(%rdi) 5658; AVX1-NEXT: vpextrb $12, %xmm1, %eax 5659; AVX1-NEXT: andb $1, %al 5660; AVX1-NEXT: movb %al, 4(%rdi) 5661; AVX1-NEXT: vpextrb $11, %xmm1, %eax 5662; AVX1-NEXT: andb $1, %al 5663; AVX1-NEXT: movb %al, 4(%rdi) 5664; AVX1-NEXT: vpextrb $10, %xmm1, %eax 5665; AVX1-NEXT: andb $1, %al 5666; AVX1-NEXT: movb %al, 4(%rdi) 5667; AVX1-NEXT: vpextrb $9, %xmm1, %eax 5668; AVX1-NEXT: andb $1, %al 5669; AVX1-NEXT: movb %al, 4(%rdi) 5670; AVX1-NEXT: vpextrb $8, %xmm1, %eax 5671; AVX1-NEXT: andb $1, %al 5672; AVX1-NEXT: movb %al, 4(%rdi) 5673; AVX1-NEXT: vpextrb $7, %xmm1, %eax 5674; AVX1-NEXT: andb $1, %al 5675; AVX1-NEXT: movb %al, 4(%rdi) 5676; AVX1-NEXT: vpextrb $6, %xmm1, %eax 5677; AVX1-NEXT: andb $1, %al 5678; AVX1-NEXT: movb %al, 4(%rdi) 5679; AVX1-NEXT: vpextrb $5, %xmm1, %eax 5680; AVX1-NEXT: andb $1, %al 5681; AVX1-NEXT: movb %al, 4(%rdi) 5682; AVX1-NEXT: vpextrb $4, %xmm1, %eax 5683; AVX1-NEXT: andb $1, %al 5684; AVX1-NEXT: movb %al, 4(%rdi) 5685; AVX1-NEXT: vpextrb $3, %xmm1, %eax 5686; AVX1-NEXT: andb $1, %al 5687; AVX1-NEXT: movb %al, 4(%rdi) 5688; AVX1-NEXT: vpextrb $2, %xmm1, %eax 5689; AVX1-NEXT: andb $1, %al 5690; AVX1-NEXT: movb %al, 4(%rdi) 5691; AVX1-NEXT: vpextrb $1, %xmm1, %eax 5692; AVX1-NEXT: andb $1, %al 5693; AVX1-NEXT: movb %al, 4(%rdi) 5694; AVX1-NEXT: vpextrb $0, %xmm1, %eax 5695; AVX1-NEXT: andb $1, %al 5696; AVX1-NEXT: movb %al, 4(%rdi) 5697; AVX1-NEXT: vpextrb $15, %xmm4, %eax 5698; AVX1-NEXT: andb $1, %al 5699; AVX1-NEXT: movb %al, 4(%rdi) 5700; AVX1-NEXT: vpextrb $14, %xmm4, %eax 5701; AVX1-NEXT: andb $1, %al 5702; AVX1-NEXT: movb %al, 4(%rdi) 5703; AVX1-NEXT: vpextrb $13, %xmm4, %eax 5704; AVX1-NEXT: andb $1, %al 5705; AVX1-NEXT: movb %al, 4(%rdi) 5706; AVX1-NEXT: vpextrb $12, %xmm4, %eax 5707; AVX1-NEXT: andb $1, %al 5708; AVX1-NEXT: movb %al, 4(%rdi) 5709; AVX1-NEXT: vpextrb $11, %xmm4, %eax 5710; AVX1-NEXT: andb $1, %al 5711; AVX1-NEXT: movb %al, 4(%rdi) 5712; AVX1-NEXT: vpextrb $10, %xmm4, %eax 5713; AVX1-NEXT: andb $1, %al 5714; AVX1-NEXT: movb %al, 4(%rdi) 5715; AVX1-NEXT: vpextrb $9, %xmm4, %eax 5716; AVX1-NEXT: andb $1, %al 5717; AVX1-NEXT: movb %al, 4(%rdi) 5718; AVX1-NEXT: vpextrb $8, %xmm4, %eax 5719; AVX1-NEXT: andb $1, %al 5720; AVX1-NEXT: movb %al, 4(%rdi) 5721; AVX1-NEXT: vpextrb $7, %xmm4, %eax 5722; AVX1-NEXT: andb $1, %al 5723; AVX1-NEXT: movb %al, 4(%rdi) 5724; AVX1-NEXT: vpextrb $6, %xmm4, %eax 5725; AVX1-NEXT: andb $1, %al 5726; AVX1-NEXT: movb %al, 4(%rdi) 5727; AVX1-NEXT: vpextrb $5, %xmm4, %eax 5728; AVX1-NEXT: andb $1, %al 5729; AVX1-NEXT: movb %al, 4(%rdi) 5730; AVX1-NEXT: vpextrb $4, %xmm4, %eax 5731; AVX1-NEXT: andb $1, %al 5732; AVX1-NEXT: movb %al, 4(%rdi) 5733; AVX1-NEXT: vpextrb $3, %xmm4, %eax 5734; AVX1-NEXT: andb $1, %al 5735; AVX1-NEXT: movb %al, 4(%rdi) 5736; AVX1-NEXT: vpextrb $2, %xmm4, %eax 5737; AVX1-NEXT: andb $1, %al 5738; AVX1-NEXT: movb %al, 4(%rdi) 5739; AVX1-NEXT: vpextrb $1, %xmm4, %eax 5740; AVX1-NEXT: andb $1, %al 5741; AVX1-NEXT: movb %al, 4(%rdi) 5742; AVX1-NEXT: vpextrb $0, %xmm4, %eax 5743; AVX1-NEXT: andb $1, %al 5744; AVX1-NEXT: movb %al, 4(%rdi) 5745; AVX1-NEXT: vpextrb $15, %xmm0, %eax 5746; AVX1-NEXT: andb $1, %al 5747; AVX1-NEXT: movb %al, (%rdi) 5748; AVX1-NEXT: vpextrb $14, %xmm0, %eax 5749; AVX1-NEXT: andb $1, %al 5750; AVX1-NEXT: movb %al, (%rdi) 5751; AVX1-NEXT: vpextrb $13, %xmm0, %eax 5752; AVX1-NEXT: andb $1, %al 5753; AVX1-NEXT: movb %al, (%rdi) 5754; AVX1-NEXT: vpextrb $12, %xmm0, %eax 5755; AVX1-NEXT: andb $1, %al 5756; AVX1-NEXT: movb %al, (%rdi) 5757; AVX1-NEXT: vpextrb $11, %xmm0, %eax 5758; AVX1-NEXT: andb $1, %al 5759; AVX1-NEXT: movb %al, (%rdi) 5760; AVX1-NEXT: vpextrb $10, %xmm0, %eax 5761; AVX1-NEXT: andb $1, %al 5762; AVX1-NEXT: movb %al, (%rdi) 5763; AVX1-NEXT: vpextrb $9, %xmm0, %eax 5764; AVX1-NEXT: andb $1, %al 5765; AVX1-NEXT: movb %al, (%rdi) 5766; AVX1-NEXT: vpextrb $8, %xmm0, %eax 5767; AVX1-NEXT: andb $1, %al 5768; AVX1-NEXT: movb %al, (%rdi) 5769; AVX1-NEXT: vpextrb $7, %xmm0, %eax 5770; AVX1-NEXT: andb $1, %al 5771; AVX1-NEXT: movb %al, (%rdi) 5772; AVX1-NEXT: vpextrb $6, %xmm0, %eax 5773; AVX1-NEXT: andb $1, %al 5774; AVX1-NEXT: movb %al, (%rdi) 5775; AVX1-NEXT: vpextrb $5, %xmm0, %eax 5776; AVX1-NEXT: andb $1, %al 5777; AVX1-NEXT: movb %al, (%rdi) 5778; AVX1-NEXT: vpextrb $4, %xmm0, %eax 5779; AVX1-NEXT: andb $1, %al 5780; AVX1-NEXT: movb %al, (%rdi) 5781; AVX1-NEXT: vpextrb $3, %xmm0, %eax 5782; AVX1-NEXT: andb $1, %al 5783; AVX1-NEXT: movb %al, (%rdi) 5784; AVX1-NEXT: vpextrb $2, %xmm0, %eax 5785; AVX1-NEXT: andb $1, %al 5786; AVX1-NEXT: movb %al, (%rdi) 5787; AVX1-NEXT: vpextrb $1, %xmm0, %eax 5788; AVX1-NEXT: andb $1, %al 5789; AVX1-NEXT: movb %al, (%rdi) 5790; AVX1-NEXT: vpextrb $0, %xmm0, %eax 5791; AVX1-NEXT: andb $1, %al 5792; AVX1-NEXT: movb %al, (%rdi) 5793; AVX1-NEXT: vpextrb $15, %xmm8, %eax 5794; AVX1-NEXT: andb $1, %al 5795; AVX1-NEXT: movb %al, (%rdi) 5796; AVX1-NEXT: vpextrb $14, %xmm8, %eax 5797; AVX1-NEXT: andb $1, %al 5798; AVX1-NEXT: movb %al, (%rdi) 5799; AVX1-NEXT: vpextrb $13, %xmm8, %eax 5800; AVX1-NEXT: andb $1, %al 5801; AVX1-NEXT: movb %al, (%rdi) 5802; AVX1-NEXT: vpextrb $12, %xmm8, %eax 5803; AVX1-NEXT: andb $1, %al 5804; AVX1-NEXT: movb %al, (%rdi) 5805; AVX1-NEXT: vpextrb $11, %xmm8, %eax 5806; AVX1-NEXT: andb $1, %al 5807; AVX1-NEXT: movb %al, (%rdi) 5808; AVX1-NEXT: vpextrb $10, %xmm8, %eax 5809; AVX1-NEXT: andb $1, %al 5810; AVX1-NEXT: movb %al, (%rdi) 5811; AVX1-NEXT: vpextrb $9, %xmm8, %eax 5812; AVX1-NEXT: andb $1, %al 5813; AVX1-NEXT: movb %al, (%rdi) 5814; AVX1-NEXT: vpextrb $8, %xmm8, %eax 5815; AVX1-NEXT: andb $1, %al 5816; AVX1-NEXT: movb %al, (%rdi) 5817; AVX1-NEXT: vpextrb $7, %xmm8, %eax 5818; AVX1-NEXT: andb $1, %al 5819; AVX1-NEXT: movb %al, (%rdi) 5820; AVX1-NEXT: vpextrb $6, %xmm8, %eax 5821; AVX1-NEXT: andb $1, %al 5822; AVX1-NEXT: movb %al, (%rdi) 5823; AVX1-NEXT: vpextrb $5, %xmm8, %eax 5824; AVX1-NEXT: andb $1, %al 5825; AVX1-NEXT: movb %al, (%rdi) 5826; AVX1-NEXT: vpextrb $4, %xmm8, %eax 5827; AVX1-NEXT: andb $1, %al 5828; AVX1-NEXT: movb %al, (%rdi) 5829; AVX1-NEXT: vpextrb $3, %xmm8, %eax 5830; AVX1-NEXT: andb $1, %al 5831; AVX1-NEXT: movb %al, (%rdi) 5832; AVX1-NEXT: vpextrb $2, %xmm8, %eax 5833; AVX1-NEXT: andb $1, %al 5834; AVX1-NEXT: movb %al, (%rdi) 5835; AVX1-NEXT: vpextrb $1, %xmm8, %eax 5836; AVX1-NEXT: andb $1, %al 5837; AVX1-NEXT: movb %al, (%rdi) 5838; AVX1-NEXT: vpextrb $0, %xmm8, %eax 5839; AVX1-NEXT: andb $1, %al 5840; AVX1-NEXT: movb %al, (%rdi) 5841; AVX1-NEXT: movq %rdi, %rax 5842; AVX1-NEXT: vzeroupper 5843; AVX1-NEXT: retq 5844; 5845; AVX2-LABEL: test_cmp_v128i8: 5846; AVX2: # BB#0: 5847; AVX2-NEXT: vpcmpgtb %ymm4, %ymm0, %ymm0 5848; AVX2-NEXT: vpcmpgtb %ymm5, %ymm1, %ymm1 5849; AVX2-NEXT: vpcmpgtb %ymm6, %ymm2, %ymm2 5850; AVX2-NEXT: vpcmpgtb %ymm7, %ymm3, %ymm3 5851; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4 5852; AVX2-NEXT: vpextrb $15, %xmm4, %eax 5853; AVX2-NEXT: andb $1, %al 5854; AVX2-NEXT: movb %al, 12(%rdi) 5855; AVX2-NEXT: vpextrb $14, %xmm4, %eax 5856; AVX2-NEXT: andb $1, %al 5857; AVX2-NEXT: movb %al, 12(%rdi) 5858; AVX2-NEXT: vpextrb $13, %xmm4, %eax 5859; AVX2-NEXT: andb $1, %al 5860; AVX2-NEXT: movb %al, 12(%rdi) 5861; AVX2-NEXT: vpextrb $12, %xmm4, %eax 5862; AVX2-NEXT: andb $1, %al 5863; AVX2-NEXT: movb %al, 12(%rdi) 5864; AVX2-NEXT: vpextrb $11, %xmm4, %eax 5865; AVX2-NEXT: andb $1, %al 5866; AVX2-NEXT: movb %al, 12(%rdi) 5867; AVX2-NEXT: vpextrb $10, %xmm4, %eax 5868; AVX2-NEXT: andb $1, %al 5869; AVX2-NEXT: movb %al, 12(%rdi) 5870; AVX2-NEXT: vpextrb $9, %xmm4, %eax 5871; AVX2-NEXT: andb $1, %al 5872; AVX2-NEXT: movb %al, 12(%rdi) 5873; AVX2-NEXT: vpextrb $8, %xmm4, %eax 5874; AVX2-NEXT: andb $1, %al 5875; AVX2-NEXT: movb %al, 12(%rdi) 5876; AVX2-NEXT: vpextrb $7, %xmm4, %eax 5877; AVX2-NEXT: andb $1, %al 5878; AVX2-NEXT: movb %al, 12(%rdi) 5879; AVX2-NEXT: vpextrb $6, %xmm4, %eax 5880; AVX2-NEXT: andb $1, %al 5881; AVX2-NEXT: movb %al, 12(%rdi) 5882; AVX2-NEXT: vpextrb $5, %xmm4, %eax 5883; AVX2-NEXT: andb $1, %al 5884; AVX2-NEXT: movb %al, 12(%rdi) 5885; AVX2-NEXT: vpextrb $4, %xmm4, %eax 5886; AVX2-NEXT: andb $1, %al 5887; AVX2-NEXT: movb %al, 12(%rdi) 5888; AVX2-NEXT: vpextrb $3, %xmm4, %eax 5889; AVX2-NEXT: andb $1, %al 5890; AVX2-NEXT: movb %al, 12(%rdi) 5891; AVX2-NEXT: vpextrb $2, %xmm4, %eax 5892; AVX2-NEXT: andb $1, %al 5893; AVX2-NEXT: movb %al, 12(%rdi) 5894; AVX2-NEXT: vpextrb $1, %xmm4, %eax 5895; AVX2-NEXT: andb $1, %al 5896; AVX2-NEXT: movb %al, 12(%rdi) 5897; AVX2-NEXT: vpextrb $0, %xmm4, %eax 5898; AVX2-NEXT: andb $1, %al 5899; AVX2-NEXT: movb %al, 12(%rdi) 5900; AVX2-NEXT: vpextrb $15, %xmm3, %eax 5901; AVX2-NEXT: andb $1, %al 5902; AVX2-NEXT: movb %al, 12(%rdi) 5903; AVX2-NEXT: vpextrb $14, %xmm3, %eax 5904; AVX2-NEXT: andb $1, %al 5905; AVX2-NEXT: movb %al, 12(%rdi) 5906; AVX2-NEXT: vpextrb $13, %xmm3, %eax 5907; AVX2-NEXT: andb $1, %al 5908; AVX2-NEXT: movb %al, 12(%rdi) 5909; AVX2-NEXT: vpextrb $12, %xmm3, %eax 5910; AVX2-NEXT: andb $1, %al 5911; AVX2-NEXT: movb %al, 12(%rdi) 5912; AVX2-NEXT: vpextrb $11, %xmm3, %eax 5913; AVX2-NEXT: andb $1, %al 5914; AVX2-NEXT: movb %al, 12(%rdi) 5915; AVX2-NEXT: vpextrb $10, %xmm3, %eax 5916; AVX2-NEXT: andb $1, %al 5917; AVX2-NEXT: movb %al, 12(%rdi) 5918; AVX2-NEXT: vpextrb $9, %xmm3, %eax 5919; AVX2-NEXT: andb $1, %al 5920; AVX2-NEXT: movb %al, 12(%rdi) 5921; AVX2-NEXT: vpextrb $8, %xmm3, %eax 5922; AVX2-NEXT: andb $1, %al 5923; AVX2-NEXT: movb %al, 12(%rdi) 5924; AVX2-NEXT: vpextrb $7, %xmm3, %eax 5925; AVX2-NEXT: andb $1, %al 5926; AVX2-NEXT: movb %al, 12(%rdi) 5927; AVX2-NEXT: vpextrb $6, %xmm3, %eax 5928; AVX2-NEXT: andb $1, %al 5929; AVX2-NEXT: movb %al, 12(%rdi) 5930; AVX2-NEXT: vpextrb $5, %xmm3, %eax 5931; AVX2-NEXT: andb $1, %al 5932; AVX2-NEXT: movb %al, 12(%rdi) 5933; AVX2-NEXT: vpextrb $4, %xmm3, %eax 5934; AVX2-NEXT: andb $1, %al 5935; AVX2-NEXT: movb %al, 12(%rdi) 5936; AVX2-NEXT: vpextrb $3, %xmm3, %eax 5937; AVX2-NEXT: andb $1, %al 5938; AVX2-NEXT: movb %al, 12(%rdi) 5939; AVX2-NEXT: vpextrb $2, %xmm3, %eax 5940; AVX2-NEXT: andb $1, %al 5941; AVX2-NEXT: movb %al, 12(%rdi) 5942; AVX2-NEXT: vpextrb $1, %xmm3, %eax 5943; AVX2-NEXT: andb $1, %al 5944; AVX2-NEXT: movb %al, 12(%rdi) 5945; AVX2-NEXT: vpextrb $0, %xmm3, %eax 5946; AVX2-NEXT: andb $1, %al 5947; AVX2-NEXT: movb %al, 12(%rdi) 5948; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm3 5949; AVX2-NEXT: vpextrb $15, %xmm3, %eax 5950; AVX2-NEXT: andb $1, %al 5951; AVX2-NEXT: movb %al, 8(%rdi) 5952; AVX2-NEXT: vpextrb $14, %xmm3, %eax 5953; AVX2-NEXT: andb $1, %al 5954; AVX2-NEXT: movb %al, 8(%rdi) 5955; AVX2-NEXT: vpextrb $13, %xmm3, %eax 5956; AVX2-NEXT: andb $1, %al 5957; AVX2-NEXT: movb %al, 8(%rdi) 5958; AVX2-NEXT: vpextrb $12, %xmm3, %eax 5959; AVX2-NEXT: andb $1, %al 5960; AVX2-NEXT: movb %al, 8(%rdi) 5961; AVX2-NEXT: vpextrb $11, %xmm3, %eax 5962; AVX2-NEXT: andb $1, %al 5963; AVX2-NEXT: movb %al, 8(%rdi) 5964; AVX2-NEXT: vpextrb $10, %xmm3, %eax 5965; AVX2-NEXT: andb $1, %al 5966; AVX2-NEXT: movb %al, 8(%rdi) 5967; AVX2-NEXT: vpextrb $9, %xmm3, %eax 5968; AVX2-NEXT: andb $1, %al 5969; AVX2-NEXT: movb %al, 8(%rdi) 5970; AVX2-NEXT: vpextrb $8, %xmm3, %eax 5971; AVX2-NEXT: andb $1, %al 5972; AVX2-NEXT: movb %al, 8(%rdi) 5973; AVX2-NEXT: vpextrb $7, %xmm3, %eax 5974; AVX2-NEXT: andb $1, %al 5975; AVX2-NEXT: movb %al, 8(%rdi) 5976; AVX2-NEXT: vpextrb $6, %xmm3, %eax 5977; AVX2-NEXT: andb $1, %al 5978; AVX2-NEXT: movb %al, 8(%rdi) 5979; AVX2-NEXT: vpextrb $5, %xmm3, %eax 5980; AVX2-NEXT: andb $1, %al 5981; AVX2-NEXT: movb %al, 8(%rdi) 5982; AVX2-NEXT: vpextrb $4, %xmm3, %eax 5983; AVX2-NEXT: andb $1, %al 5984; AVX2-NEXT: movb %al, 8(%rdi) 5985; AVX2-NEXT: vpextrb $3, %xmm3, %eax 5986; AVX2-NEXT: andb $1, %al 5987; AVX2-NEXT: movb %al, 8(%rdi) 5988; AVX2-NEXT: vpextrb $2, %xmm3, %eax 5989; AVX2-NEXT: andb $1, %al 5990; AVX2-NEXT: movb %al, 8(%rdi) 5991; AVX2-NEXT: vpextrb $1, %xmm3, %eax 5992; AVX2-NEXT: andb $1, %al 5993; AVX2-NEXT: movb %al, 8(%rdi) 5994; AVX2-NEXT: vpextrb $0, %xmm3, %eax 5995; AVX2-NEXT: andb $1, %al 5996; AVX2-NEXT: movb %al, 8(%rdi) 5997; AVX2-NEXT: vpextrb $15, %xmm2, %eax 5998; AVX2-NEXT: andb $1, %al 5999; AVX2-NEXT: movb %al, 8(%rdi) 6000; AVX2-NEXT: vpextrb $14, %xmm2, %eax 6001; AVX2-NEXT: andb $1, %al 6002; AVX2-NEXT: movb %al, 8(%rdi) 6003; AVX2-NEXT: vpextrb $13, %xmm2, %eax 6004; AVX2-NEXT: andb $1, %al 6005; AVX2-NEXT: movb %al, 8(%rdi) 6006; AVX2-NEXT: vpextrb $12, %xmm2, %eax 6007; AVX2-NEXT: andb $1, %al 6008; AVX2-NEXT: movb %al, 8(%rdi) 6009; AVX2-NEXT: vpextrb $11, %xmm2, %eax 6010; AVX2-NEXT: andb $1, %al 6011; AVX2-NEXT: movb %al, 8(%rdi) 6012; AVX2-NEXT: vpextrb $10, %xmm2, %eax 6013; AVX2-NEXT: andb $1, %al 6014; AVX2-NEXT: movb %al, 8(%rdi) 6015; AVX2-NEXT: vpextrb $9, %xmm2, %eax 6016; AVX2-NEXT: andb $1, %al 6017; AVX2-NEXT: movb %al, 8(%rdi) 6018; AVX2-NEXT: vpextrb $8, %xmm2, %eax 6019; AVX2-NEXT: andb $1, %al 6020; AVX2-NEXT: movb %al, 8(%rdi) 6021; AVX2-NEXT: vpextrb $7, %xmm2, %eax 6022; AVX2-NEXT: andb $1, %al 6023; AVX2-NEXT: movb %al, 8(%rdi) 6024; AVX2-NEXT: vpextrb $6, %xmm2, %eax 6025; AVX2-NEXT: andb $1, %al 6026; AVX2-NEXT: movb %al, 8(%rdi) 6027; AVX2-NEXT: vpextrb $5, %xmm2, %eax 6028; AVX2-NEXT: andb $1, %al 6029; AVX2-NEXT: movb %al, 8(%rdi) 6030; AVX2-NEXT: vpextrb $4, %xmm2, %eax 6031; AVX2-NEXT: andb $1, %al 6032; AVX2-NEXT: movb %al, 8(%rdi) 6033; AVX2-NEXT: vpextrb $3, %xmm2, %eax 6034; AVX2-NEXT: andb $1, %al 6035; AVX2-NEXT: movb %al, 8(%rdi) 6036; AVX2-NEXT: vpextrb $2, %xmm2, %eax 6037; AVX2-NEXT: andb $1, %al 6038; AVX2-NEXT: movb %al, 8(%rdi) 6039; AVX2-NEXT: vpextrb $1, %xmm2, %eax 6040; AVX2-NEXT: andb $1, %al 6041; AVX2-NEXT: movb %al, 8(%rdi) 6042; AVX2-NEXT: vpextrb $0, %xmm2, %eax 6043; AVX2-NEXT: andb $1, %al 6044; AVX2-NEXT: movb %al, 8(%rdi) 6045; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2 6046; AVX2-NEXT: vpextrb $15, %xmm2, %eax 6047; AVX2-NEXT: andb $1, %al 6048; AVX2-NEXT: movb %al, 4(%rdi) 6049; AVX2-NEXT: vpextrb $14, %xmm2, %eax 6050; AVX2-NEXT: andb $1, %al 6051; AVX2-NEXT: movb %al, 4(%rdi) 6052; AVX2-NEXT: vpextrb $13, %xmm2, %eax 6053; AVX2-NEXT: andb $1, %al 6054; AVX2-NEXT: movb %al, 4(%rdi) 6055; AVX2-NEXT: vpextrb $12, %xmm2, %eax 6056; AVX2-NEXT: andb $1, %al 6057; AVX2-NEXT: movb %al, 4(%rdi) 6058; AVX2-NEXT: vpextrb $11, %xmm2, %eax 6059; AVX2-NEXT: andb $1, %al 6060; AVX2-NEXT: movb %al, 4(%rdi) 6061; AVX2-NEXT: vpextrb $10, %xmm2, %eax 6062; AVX2-NEXT: andb $1, %al 6063; AVX2-NEXT: movb %al, 4(%rdi) 6064; AVX2-NEXT: vpextrb $9, %xmm2, %eax 6065; AVX2-NEXT: andb $1, %al 6066; AVX2-NEXT: movb %al, 4(%rdi) 6067; AVX2-NEXT: vpextrb $8, %xmm2, %eax 6068; AVX2-NEXT: andb $1, %al 6069; AVX2-NEXT: movb %al, 4(%rdi) 6070; AVX2-NEXT: vpextrb $7, %xmm2, %eax 6071; AVX2-NEXT: andb $1, %al 6072; AVX2-NEXT: movb %al, 4(%rdi) 6073; AVX2-NEXT: vpextrb $6, %xmm2, %eax 6074; AVX2-NEXT: andb $1, %al 6075; AVX2-NEXT: movb %al, 4(%rdi) 6076; AVX2-NEXT: vpextrb $5, %xmm2, %eax 6077; AVX2-NEXT: andb $1, %al 6078; AVX2-NEXT: movb %al, 4(%rdi) 6079; AVX2-NEXT: vpextrb $4, %xmm2, %eax 6080; AVX2-NEXT: andb $1, %al 6081; AVX2-NEXT: movb %al, 4(%rdi) 6082; AVX2-NEXT: vpextrb $3, %xmm2, %eax 6083; AVX2-NEXT: andb $1, %al 6084; AVX2-NEXT: movb %al, 4(%rdi) 6085; AVX2-NEXT: vpextrb $2, %xmm2, %eax 6086; AVX2-NEXT: andb $1, %al 6087; AVX2-NEXT: movb %al, 4(%rdi) 6088; AVX2-NEXT: vpextrb $1, %xmm2, %eax 6089; AVX2-NEXT: andb $1, %al 6090; AVX2-NEXT: movb %al, 4(%rdi) 6091; AVX2-NEXT: vpextrb $0, %xmm2, %eax 6092; AVX2-NEXT: andb $1, %al 6093; AVX2-NEXT: movb %al, 4(%rdi) 6094; AVX2-NEXT: vpextrb $15, %xmm1, %eax 6095; AVX2-NEXT: andb $1, %al 6096; AVX2-NEXT: movb %al, 4(%rdi) 6097; AVX2-NEXT: vpextrb $14, %xmm1, %eax 6098; AVX2-NEXT: andb $1, %al 6099; AVX2-NEXT: movb %al, 4(%rdi) 6100; AVX2-NEXT: vpextrb $13, %xmm1, %eax 6101; AVX2-NEXT: andb $1, %al 6102; AVX2-NEXT: movb %al, 4(%rdi) 6103; AVX2-NEXT: vpextrb $12, %xmm1, %eax 6104; AVX2-NEXT: andb $1, %al 6105; AVX2-NEXT: movb %al, 4(%rdi) 6106; AVX2-NEXT: vpextrb $11, %xmm1, %eax 6107; AVX2-NEXT: andb $1, %al 6108; AVX2-NEXT: movb %al, 4(%rdi) 6109; AVX2-NEXT: vpextrb $10, %xmm1, %eax 6110; AVX2-NEXT: andb $1, %al 6111; AVX2-NEXT: movb %al, 4(%rdi) 6112; AVX2-NEXT: vpextrb $9, %xmm1, %eax 6113; AVX2-NEXT: andb $1, %al 6114; AVX2-NEXT: movb %al, 4(%rdi) 6115; AVX2-NEXT: vpextrb $8, %xmm1, %eax 6116; AVX2-NEXT: andb $1, %al 6117; AVX2-NEXT: movb %al, 4(%rdi) 6118; AVX2-NEXT: vpextrb $7, %xmm1, %eax 6119; AVX2-NEXT: andb $1, %al 6120; AVX2-NEXT: movb %al, 4(%rdi) 6121; AVX2-NEXT: vpextrb $6, %xmm1, %eax 6122; AVX2-NEXT: andb $1, %al 6123; AVX2-NEXT: movb %al, 4(%rdi) 6124; AVX2-NEXT: vpextrb $5, %xmm1, %eax 6125; AVX2-NEXT: andb $1, %al 6126; AVX2-NEXT: movb %al, 4(%rdi) 6127; AVX2-NEXT: vpextrb $4, %xmm1, %eax 6128; AVX2-NEXT: andb $1, %al 6129; AVX2-NEXT: movb %al, 4(%rdi) 6130; AVX2-NEXT: vpextrb $3, %xmm1, %eax 6131; AVX2-NEXT: andb $1, %al 6132; AVX2-NEXT: movb %al, 4(%rdi) 6133; AVX2-NEXT: vpextrb $2, %xmm1, %eax 6134; AVX2-NEXT: andb $1, %al 6135; AVX2-NEXT: movb %al, 4(%rdi) 6136; AVX2-NEXT: vpextrb $1, %xmm1, %eax 6137; AVX2-NEXT: andb $1, %al 6138; AVX2-NEXT: movb %al, 4(%rdi) 6139; AVX2-NEXT: vpextrb $0, %xmm1, %eax 6140; AVX2-NEXT: andb $1, %al 6141; AVX2-NEXT: movb %al, 4(%rdi) 6142; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 6143; AVX2-NEXT: vpextrb $15, %xmm1, %eax 6144; AVX2-NEXT: andb $1, %al 6145; AVX2-NEXT: movb %al, (%rdi) 6146; AVX2-NEXT: vpextrb $14, %xmm1, %eax 6147; AVX2-NEXT: andb $1, %al 6148; AVX2-NEXT: movb %al, (%rdi) 6149; AVX2-NEXT: vpextrb $13, %xmm1, %eax 6150; AVX2-NEXT: andb $1, %al 6151; AVX2-NEXT: movb %al, (%rdi) 6152; AVX2-NEXT: vpextrb $12, %xmm1, %eax 6153; AVX2-NEXT: andb $1, %al 6154; AVX2-NEXT: movb %al, (%rdi) 6155; AVX2-NEXT: vpextrb $11, %xmm1, %eax 6156; AVX2-NEXT: andb $1, %al 6157; AVX2-NEXT: movb %al, (%rdi) 6158; AVX2-NEXT: vpextrb $10, %xmm1, %eax 6159; AVX2-NEXT: andb $1, %al 6160; AVX2-NEXT: movb %al, (%rdi) 6161; AVX2-NEXT: vpextrb $9, %xmm1, %eax 6162; AVX2-NEXT: andb $1, %al 6163; AVX2-NEXT: movb %al, (%rdi) 6164; AVX2-NEXT: vpextrb $8, %xmm1, %eax 6165; AVX2-NEXT: andb $1, %al 6166; AVX2-NEXT: movb %al, (%rdi) 6167; AVX2-NEXT: vpextrb $7, %xmm1, %eax 6168; AVX2-NEXT: andb $1, %al 6169; AVX2-NEXT: movb %al, (%rdi) 6170; AVX2-NEXT: vpextrb $6, %xmm1, %eax 6171; AVX2-NEXT: andb $1, %al 6172; AVX2-NEXT: movb %al, (%rdi) 6173; AVX2-NEXT: vpextrb $5, %xmm1, %eax 6174; AVX2-NEXT: andb $1, %al 6175; AVX2-NEXT: movb %al, (%rdi) 6176; AVX2-NEXT: vpextrb $4, %xmm1, %eax 6177; AVX2-NEXT: andb $1, %al 6178; AVX2-NEXT: movb %al, (%rdi) 6179; AVX2-NEXT: vpextrb $3, %xmm1, %eax 6180; AVX2-NEXT: andb $1, %al 6181; AVX2-NEXT: movb %al, (%rdi) 6182; AVX2-NEXT: vpextrb $2, %xmm1, %eax 6183; AVX2-NEXT: andb $1, %al 6184; AVX2-NEXT: movb %al, (%rdi) 6185; AVX2-NEXT: vpextrb $1, %xmm1, %eax 6186; AVX2-NEXT: andb $1, %al 6187; AVX2-NEXT: movb %al, (%rdi) 6188; AVX2-NEXT: vpextrb $0, %xmm1, %eax 6189; AVX2-NEXT: andb $1, %al 6190; AVX2-NEXT: movb %al, (%rdi) 6191; AVX2-NEXT: vpextrb $15, %xmm0, %eax 6192; AVX2-NEXT: andb $1, %al 6193; AVX2-NEXT: movb %al, (%rdi) 6194; AVX2-NEXT: vpextrb $14, %xmm0, %eax 6195; AVX2-NEXT: andb $1, %al 6196; AVX2-NEXT: movb %al, (%rdi) 6197; AVX2-NEXT: vpextrb $13, %xmm0, %eax 6198; AVX2-NEXT: andb $1, %al 6199; AVX2-NEXT: movb %al, (%rdi) 6200; AVX2-NEXT: vpextrb $12, %xmm0, %eax 6201; AVX2-NEXT: andb $1, %al 6202; AVX2-NEXT: movb %al, (%rdi) 6203; AVX2-NEXT: vpextrb $11, %xmm0, %eax 6204; AVX2-NEXT: andb $1, %al 6205; AVX2-NEXT: movb %al, (%rdi) 6206; AVX2-NEXT: vpextrb $10, %xmm0, %eax 6207; AVX2-NEXT: andb $1, %al 6208; AVX2-NEXT: movb %al, (%rdi) 6209; AVX2-NEXT: vpextrb $9, %xmm0, %eax 6210; AVX2-NEXT: andb $1, %al 6211; AVX2-NEXT: movb %al, (%rdi) 6212; AVX2-NEXT: vpextrb $8, %xmm0, %eax 6213; AVX2-NEXT: andb $1, %al 6214; AVX2-NEXT: movb %al, (%rdi) 6215; AVX2-NEXT: vpextrb $7, %xmm0, %eax 6216; AVX2-NEXT: andb $1, %al 6217; AVX2-NEXT: movb %al, (%rdi) 6218; AVX2-NEXT: vpextrb $6, %xmm0, %eax 6219; AVX2-NEXT: andb $1, %al 6220; AVX2-NEXT: movb %al, (%rdi) 6221; AVX2-NEXT: vpextrb $5, %xmm0, %eax 6222; AVX2-NEXT: andb $1, %al 6223; AVX2-NEXT: movb %al, (%rdi) 6224; AVX2-NEXT: vpextrb $4, %xmm0, %eax 6225; AVX2-NEXT: andb $1, %al 6226; AVX2-NEXT: movb %al, (%rdi) 6227; AVX2-NEXT: vpextrb $3, %xmm0, %eax 6228; AVX2-NEXT: andb $1, %al 6229; AVX2-NEXT: movb %al, (%rdi) 6230; AVX2-NEXT: vpextrb $2, %xmm0, %eax 6231; AVX2-NEXT: andb $1, %al 6232; AVX2-NEXT: movb %al, (%rdi) 6233; AVX2-NEXT: vpextrb $1, %xmm0, %eax 6234; AVX2-NEXT: andb $1, %al 6235; AVX2-NEXT: movb %al, (%rdi) 6236; AVX2-NEXT: vpextrb $0, %xmm0, %eax 6237; AVX2-NEXT: andb $1, %al 6238; AVX2-NEXT: movb %al, (%rdi) 6239; AVX2-NEXT: movq %rdi, %rax 6240; AVX2-NEXT: vzeroupper 6241; AVX2-NEXT: retq 6242; 6243; AVX512-LABEL: test_cmp_v128i8: 6244; AVX512: # BB#0: 6245; AVX512-NEXT: vpcmpgtb %ymm4, %ymm0, %ymm0 6246; AVX512-NEXT: vpcmpgtb %ymm5, %ymm1, %ymm1 6247; AVX512-NEXT: vpcmpgtb %ymm6, %ymm2, %ymm2 6248; AVX512-NEXT: vpcmpgtb %ymm7, %ymm3, %ymm3 6249; AVX512-NEXT: vextracti128 $1, %ymm3, %xmm4 6250; AVX512-NEXT: vpmovsxbd %xmm4, %zmm4 6251; AVX512-NEXT: vpslld $31, %zmm4, %zmm4 6252; AVX512-NEXT: vptestmd %zmm4, %zmm4, %k0 6253; AVX512-NEXT: kmovw %k0, 14(%rdi) 6254; AVX512-NEXT: vpmovsxbd %xmm3, %zmm3 6255; AVX512-NEXT: vpslld $31, %zmm3, %zmm3 6256; AVX512-NEXT: vptestmd %zmm3, %zmm3, %k0 6257; AVX512-NEXT: kmovw %k0, 12(%rdi) 6258; AVX512-NEXT: vextracti128 $1, %ymm2, %xmm3 6259; AVX512-NEXT: vpmovsxbd %xmm3, %zmm3 6260; AVX512-NEXT: vpslld $31, %zmm3, %zmm3 6261; AVX512-NEXT: vptestmd %zmm3, %zmm3, %k0 6262; AVX512-NEXT: kmovw %k0, 10(%rdi) 6263; AVX512-NEXT: vpmovsxbd %xmm2, %zmm2 6264; AVX512-NEXT: vpslld $31, %zmm2, %zmm2 6265; AVX512-NEXT: vptestmd %zmm2, %zmm2, %k0 6266; AVX512-NEXT: kmovw %k0, 8(%rdi) 6267; AVX512-NEXT: vextracti128 $1, %ymm1, %xmm2 6268; AVX512-NEXT: vpmovsxbd %xmm2, %zmm2 6269; AVX512-NEXT: vpslld $31, %zmm2, %zmm2 6270; AVX512-NEXT: vptestmd %zmm2, %zmm2, %k0 6271; AVX512-NEXT: kmovw %k0, 6(%rdi) 6272; AVX512-NEXT: vpmovsxbd %xmm1, %zmm1 6273; AVX512-NEXT: vpslld $31, %zmm1, %zmm1 6274; AVX512-NEXT: vptestmd %zmm1, %zmm1, %k0 6275; AVX512-NEXT: kmovw %k0, 4(%rdi) 6276; AVX512-NEXT: vextracti128 $1, %ymm0, %xmm1 6277; AVX512-NEXT: vpmovsxbd %xmm1, %zmm1 6278; AVX512-NEXT: vpslld $31, %zmm1, %zmm1 6279; AVX512-NEXT: vptestmd %zmm1, %zmm1, %k0 6280; AVX512-NEXT: kmovw %k0, 2(%rdi) 6281; AVX512-NEXT: vpmovsxbd %xmm0, %zmm0 6282; AVX512-NEXT: vpslld $31, %zmm0, %zmm0 6283; AVX512-NEXT: vptestmd %zmm0, %zmm0, %k0 6284; AVX512-NEXT: kmovw %k0, (%rdi) 6285; AVX512-NEXT: movq %rdi, %rax 6286; AVX512-NEXT: retq 6287 %1 = icmp sgt <128 x i8> %a0, %a1 6288 ret <128 x i1> %1 6289} 6290 6291; 6292; 2048-bit vector comparisons 6293; 6294 6295define <32 x i1> @test_cmp_v32f64(<32 x double> %a0, <32 x double> %a1) nounwind { 6296; SSE2-LABEL: test_cmp_v32f64: 6297; SSE2: # BB#0: 6298; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm8 6299; SSE2-NEXT: cmpltpd %xmm7, %xmm8 6300; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm7 6301; SSE2-NEXT: cmpltpd %xmm6, %xmm7 6302; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm8[0,2,2,3] 6303; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm7[0,2,2,3] 6304; SSE2-NEXT: punpcklqdq {{.*#+}} xmm7 = xmm7[0],xmm6[0] 6305; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm6 6306; SSE2-NEXT: cmpltpd %xmm5, %xmm6 6307; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 6308; SSE2-NEXT: cmpltpd %xmm4, %xmm5 6309; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm6[0,2,2,3] 6310; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,2,2,3] 6311; SSE2-NEXT: punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm4[0] 6312; SSE2-NEXT: pslld $31, %xmm7 6313; SSE2-NEXT: psrad $31, %xmm7 6314; SSE2-NEXT: pshuflw {{.*#+}} xmm4 = xmm7[0,2,2,3,4,5,6,7] 6315; SSE2-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,6,6,7] 6316; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,2,2,3] 6317; SSE2-NEXT: pslld $31, %xmm5 6318; SSE2-NEXT: psrad $31, %xmm5 6319; SSE2-NEXT: pshuflw {{.*#+}} xmm4 = xmm5[0,2,2,3,4,5,6,7] 6320; SSE2-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,6,6,7] 6321; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3] 6322; SSE2-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0] 6323; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 6324; SSE2-NEXT: cmpltpd %xmm3, %xmm5 6325; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm3 6326; SSE2-NEXT: cmpltpd %xmm2, %xmm3 6327; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm2 6328; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,2,2,3] 6329; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm3[0,2,2,3] 6330; SSE2-NEXT: punpcklqdq {{.*#+}} xmm6 = xmm6[0],xmm5[0] 6331; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 6332; SSE2-NEXT: cmpltpd %xmm1, %xmm5 6333; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm1 6334; SSE2-NEXT: cmpltpd %xmm0, %xmm1 6335; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm3 6336; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,2,2,3] 6337; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 6338; SSE2-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0] 6339; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 6340; SSE2-NEXT: psllw $15, %xmm4 6341; SSE2-NEXT: psraw $15, %xmm4 6342; SSE2-NEXT: pslld $31, %xmm6 6343; SSE2-NEXT: psrad $31, %xmm6 6344; SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm6[0,2,2,3,4,5,6,7] 6345; SSE2-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,6,7] 6346; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm0[0,2,2,3] 6347; SSE2-NEXT: pslld $31, %xmm1 6348; SSE2-NEXT: psrad $31, %xmm1 6349; SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm1[0,2,2,3,4,5,6,7] 6350; SSE2-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,6,7] 6351; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3] 6352; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm6[0] 6353; SSE2-NEXT: movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,255] 6354; SSE2-NEXT: pand %xmm1, %xmm4 6355; SSE2-NEXT: psllw $15, %xmm0 6356; SSE2-NEXT: psraw $15, %xmm0 6357; SSE2-NEXT: pand %xmm1, %xmm0 6358; SSE2-NEXT: packuswb %xmm4, %xmm0 6359; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm4 6360; SSE2-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm4 6361; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3] 6362; SSE2-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm5 6363; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,2,2,3] 6364; SSE2-NEXT: punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm4[0] 6365; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm4 6366; SSE2-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm4 6367; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3] 6368; SSE2-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm3 6369; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3] 6370; SSE2-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm4[0] 6371; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm4 6372; SSE2-NEXT: pslld $31, %xmm5 6373; SSE2-NEXT: psrad $31, %xmm5 6374; SSE2-NEXT: pshuflw {{.*#+}} xmm5 = xmm5[0,2,2,3,4,5,6,7] 6375; SSE2-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,6,6,7] 6376; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,2,2,3] 6377; SSE2-NEXT: pslld $31, %xmm3 6378; SSE2-NEXT: psrad $31, %xmm3 6379; SSE2-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[0,2,2,3,4,5,6,7] 6380; SSE2-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,6,6,7] 6381; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3] 6382; SSE2-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm5[0] 6383; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 6384; SSE2-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm5 6385; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,2,2,3] 6386; SSE2-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm4 6387; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3] 6388; SSE2-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0] 6389; SSE2-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 6390; SSE2-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm5 6391; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,2,2,3] 6392; SSE2-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm2 6393; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] 6394; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm5[0] 6395; SSE2-NEXT: pslld $31, %xmm4 6396; SSE2-NEXT: psrad $31, %xmm4 6397; SSE2-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,2,2,3,4,5,6,7] 6398; SSE2-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,6,6,7] 6399; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3] 6400; SSE2-NEXT: pslld $31, %xmm2 6401; SSE2-NEXT: psrad $31, %xmm2 6402; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[0,2,2,3,4,5,6,7] 6403; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7] 6404; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] 6405; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm4[0] 6406; SSE2-NEXT: psllw $15, %xmm3 6407; SSE2-NEXT: psraw $15, %xmm3 6408; SSE2-NEXT: pand %xmm1, %xmm3 6409; SSE2-NEXT: psllw $15, %xmm2 6410; SSE2-NEXT: psraw $15, %xmm2 6411; SSE2-NEXT: pand %xmm1, %xmm2 6412; SSE2-NEXT: packuswb %xmm3, %xmm2 6413; SSE2-NEXT: movdqa %xmm2, -{{[0-9]+}}(%rsp) 6414; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6415; SSE2-NEXT: andb $1, %al 6416; SSE2-NEXT: movb %al, 2(%rdi) 6417; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 6418; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6419; SSE2-NEXT: andb $1, %al 6420; SSE2-NEXT: movb %al, (%rdi) 6421; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6422; SSE2-NEXT: andb $1, %al 6423; SSE2-NEXT: movb %al, 2(%rdi) 6424; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6425; SSE2-NEXT: andb $1, %al 6426; SSE2-NEXT: movb %al, (%rdi) 6427; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6428; SSE2-NEXT: andb $1, %al 6429; SSE2-NEXT: movb %al, 2(%rdi) 6430; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6431; SSE2-NEXT: andb $1, %al 6432; SSE2-NEXT: movb %al, (%rdi) 6433; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6434; SSE2-NEXT: andb $1, %al 6435; SSE2-NEXT: movb %al, 2(%rdi) 6436; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6437; SSE2-NEXT: andb $1, %al 6438; SSE2-NEXT: movb %al, (%rdi) 6439; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6440; SSE2-NEXT: andb $1, %al 6441; SSE2-NEXT: movb %al, 2(%rdi) 6442; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6443; SSE2-NEXT: andb $1, %al 6444; SSE2-NEXT: movb %al, (%rdi) 6445; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6446; SSE2-NEXT: andb $1, %al 6447; SSE2-NEXT: movb %al, 2(%rdi) 6448; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6449; SSE2-NEXT: andb $1, %al 6450; SSE2-NEXT: movb %al, (%rdi) 6451; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6452; SSE2-NEXT: andb $1, %al 6453; SSE2-NEXT: movb %al, 2(%rdi) 6454; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6455; SSE2-NEXT: andb $1, %al 6456; SSE2-NEXT: movb %al, (%rdi) 6457; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6458; SSE2-NEXT: andb $1, %al 6459; SSE2-NEXT: movb %al, 2(%rdi) 6460; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6461; SSE2-NEXT: andb $1, %al 6462; SSE2-NEXT: movb %al, (%rdi) 6463; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6464; SSE2-NEXT: andb $1, %al 6465; SSE2-NEXT: movb %al, 2(%rdi) 6466; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6467; SSE2-NEXT: andb $1, %al 6468; SSE2-NEXT: movb %al, (%rdi) 6469; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6470; SSE2-NEXT: andb $1, %al 6471; SSE2-NEXT: movb %al, 2(%rdi) 6472; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6473; SSE2-NEXT: andb $1, %al 6474; SSE2-NEXT: movb %al, (%rdi) 6475; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6476; SSE2-NEXT: andb $1, %al 6477; SSE2-NEXT: movb %al, 2(%rdi) 6478; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6479; SSE2-NEXT: andb $1, %al 6480; SSE2-NEXT: movb %al, (%rdi) 6481; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6482; SSE2-NEXT: andb $1, %al 6483; SSE2-NEXT: movb %al, 2(%rdi) 6484; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6485; SSE2-NEXT: andb $1, %al 6486; SSE2-NEXT: movb %al, (%rdi) 6487; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6488; SSE2-NEXT: andb $1, %al 6489; SSE2-NEXT: movb %al, 2(%rdi) 6490; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6491; SSE2-NEXT: andb $1, %al 6492; SSE2-NEXT: movb %al, (%rdi) 6493; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6494; SSE2-NEXT: andb $1, %al 6495; SSE2-NEXT: movb %al, 2(%rdi) 6496; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6497; SSE2-NEXT: andb $1, %al 6498; SSE2-NEXT: movb %al, (%rdi) 6499; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6500; SSE2-NEXT: andb $1, %al 6501; SSE2-NEXT: movb %al, 2(%rdi) 6502; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6503; SSE2-NEXT: andb $1, %al 6504; SSE2-NEXT: movb %al, (%rdi) 6505; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6506; SSE2-NEXT: andb $1, %al 6507; SSE2-NEXT: movb %al, 2(%rdi) 6508; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 6509; SSE2-NEXT: andb $1, %al 6510; SSE2-NEXT: movb %al, (%rdi) 6511; SSE2-NEXT: movq %rdi, %rax 6512; SSE2-NEXT: retq 6513; 6514; SSE42-LABEL: test_cmp_v32f64: 6515; SSE42: # BB#0: 6516; SSE42-NEXT: pushq %rbp 6517; SSE42-NEXT: pushq %r15 6518; SSE42-NEXT: pushq %r14 6519; SSE42-NEXT: pushq %r13 6520; SSE42-NEXT: pushq %r12 6521; SSE42-NEXT: pushq %rbx 6522; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm8 6523; SSE42-NEXT: cmpltpd %xmm7, %xmm8 6524; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm7 6525; SSE42-NEXT: cmpltpd %xmm6, %xmm7 6526; SSE42-NEXT: pshufd {{.*#+}} xmm6 = xmm8[0,1,0,2] 6527; SSE42-NEXT: pshufd {{.*#+}} xmm7 = xmm7[0,2,2,3] 6528; SSE42-NEXT: pblendw {{.*#+}} xmm7 = xmm7[0,1,2,3],xmm6[4,5,6,7] 6529; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm6 6530; SSE42-NEXT: cmpltpd %xmm5, %xmm6 6531; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 6532; SSE42-NEXT: cmpltpd %xmm4, %xmm5 6533; SSE42-NEXT: pslld $31, %xmm7 6534; SSE42-NEXT: psrad $31, %xmm7 6535; SSE42-NEXT: pshufd {{.*#+}} xmm4 = xmm6[0,1,0,2] 6536; SSE42-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,2,2,3] 6537; SSE42-NEXT: pblendw {{.*#+}} xmm5 = xmm5[0,1,2,3],xmm4[4,5,6,7] 6538; SSE42-NEXT: movdqa {{.*#+}} xmm4 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15] 6539; SSE42-NEXT: pshufb %xmm4, %xmm7 6540; SSE42-NEXT: pslld $31, %xmm5 6541; SSE42-NEXT: psrad $31, %xmm5 6542; SSE42-NEXT: pshufb %xmm4, %xmm5 6543; SSE42-NEXT: punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm7[0] 6544; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm6 6545; SSE42-NEXT: cmpltpd %xmm3, %xmm6 6546; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm3 6547; SSE42-NEXT: cmpltpd %xmm2, %xmm3 6548; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm2 6549; SSE42-NEXT: pshufd {{.*#+}} xmm6 = xmm6[0,1,0,2] 6550; SSE42-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3] 6551; SSE42-NEXT: pblendw {{.*#+}} xmm3 = xmm3[0,1,2,3],xmm6[4,5,6,7] 6552; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm6 6553; SSE42-NEXT: cmpltpd %xmm1, %xmm6 6554; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm7 6555; SSE42-NEXT: cmpltpd %xmm0, %xmm7 6556; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm1 6557; SSE42-NEXT: pshufd {{.*#+}} xmm6 = xmm6[0,1,0,2] 6558; SSE42-NEXT: pshufd {{.*#+}} xmm0 = xmm7[0,2,2,3] 6559; SSE42-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm6[4,5,6,7] 6560; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm6 6561; SSE42-NEXT: psllw $15, %xmm5 6562; SSE42-NEXT: psraw $15, %xmm5 6563; SSE42-NEXT: pslld $31, %xmm3 6564; SSE42-NEXT: psrad $31, %xmm3 6565; SSE42-NEXT: pshufb %xmm4, %xmm3 6566; SSE42-NEXT: pslld $31, %xmm0 6567; SSE42-NEXT: psrad $31, %xmm0 6568; SSE42-NEXT: pshufb %xmm4, %xmm0 6569; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm3[0] 6570; SSE42-NEXT: movdqa {{.*#+}} xmm3 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u> 6571; SSE42-NEXT: pshufb %xmm3, %xmm5 6572; SSE42-NEXT: psllw $15, %xmm0 6573; SSE42-NEXT: psraw $15, %xmm0 6574; SSE42-NEXT: pshufb %xmm3, %xmm0 6575; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm5[0] 6576; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 6577; SSE42-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm5 6578; SSE42-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,1,0,2] 6579; SSE42-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm6 6580; SSE42-NEXT: pshufd {{.*#+}} xmm6 = xmm6[0,2,2,3] 6581; SSE42-NEXT: pblendw {{.*#+}} xmm6 = xmm6[0,1,2,3],xmm5[4,5,6,7] 6582; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm5 6583; SSE42-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm5 6584; SSE42-NEXT: pshufd {{.*#+}} xmm7 = xmm5[0,1,0,2] 6585; SSE42-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm1 6586; SSE42-NEXT: pshufd {{.*#+}} xmm5 = xmm1[0,2,2,3] 6587; SSE42-NEXT: pblendw {{.*#+}} xmm5 = xmm5[0,1,2,3],xmm7[4,5,6,7] 6588; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm1 6589; SSE42-NEXT: pslld $31, %xmm6 6590; SSE42-NEXT: psrad $31, %xmm6 6591; SSE42-NEXT: pshufb %xmm4, %xmm6 6592; SSE42-NEXT: pslld $31, %xmm5 6593; SSE42-NEXT: psrad $31, %xmm5 6594; SSE42-NEXT: pshufb %xmm4, %xmm5 6595; SSE42-NEXT: punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm6[0] 6596; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm6 6597; SSE42-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm6 6598; SSE42-NEXT: pshufd {{.*#+}} xmm6 = xmm6[0,1,0,2] 6599; SSE42-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm1 6600; SSE42-NEXT: pshufd {{.*#+}} xmm7 = xmm1[0,2,2,3] 6601; SSE42-NEXT: pblendw {{.*#+}} xmm7 = xmm7[0,1,2,3],xmm6[4,5,6,7] 6602; SSE42-NEXT: movapd {{[0-9]+}}(%rsp), %xmm1 6603; SSE42-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm1 6604; SSE42-NEXT: pshufd {{.*#+}} xmm6 = xmm1[0,1,0,2] 6605; SSE42-NEXT: cmpltpd {{[0-9]+}}(%rsp), %xmm2 6606; SSE42-NEXT: pshufd {{.*#+}} xmm1 = xmm2[0,2,2,3] 6607; SSE42-NEXT: pblendw {{.*#+}} xmm1 = xmm1[0,1,2,3],xmm6[4,5,6,7] 6608; SSE42-NEXT: pslld $31, %xmm7 6609; SSE42-NEXT: psrad $31, %xmm7 6610; SSE42-NEXT: pshufb %xmm4, %xmm7 6611; SSE42-NEXT: pslld $31, %xmm1 6612; SSE42-NEXT: psrad $31, %xmm1 6613; SSE42-NEXT: pshufb %xmm4, %xmm1 6614; SSE42-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm7[0] 6615; SSE42-NEXT: psllw $15, %xmm5 6616; SSE42-NEXT: psraw $15, %xmm5 6617; SSE42-NEXT: pshufb %xmm3, %xmm5 6618; SSE42-NEXT: psllw $15, %xmm1 6619; SSE42-NEXT: psraw $15, %xmm1 6620; SSE42-NEXT: pshufb %xmm3, %xmm1 6621; SSE42-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm5[0] 6622; SSE42-NEXT: pextrb $15, %xmm1, %eax 6623; SSE42-NEXT: andb $1, %al 6624; SSE42-NEXT: movb %al, 2(%rdi) 6625; SSE42-NEXT: pextrb $14, %xmm1, %eax 6626; SSE42-NEXT: andb $1, %al 6627; SSE42-NEXT: movb %al, 2(%rdi) 6628; SSE42-NEXT: pextrb $13, %xmm1, %r8d 6629; SSE42-NEXT: pextrb $12, %xmm1, %r9d 6630; SSE42-NEXT: pextrb $11, %xmm1, %r10d 6631; SSE42-NEXT: pextrb $10, %xmm1, %r11d 6632; SSE42-NEXT: pextrb $9, %xmm1, %r14d 6633; SSE42-NEXT: pextrb $8, %xmm1, %r15d 6634; SSE42-NEXT: pextrb $7, %xmm1, %r12d 6635; SSE42-NEXT: pextrb $6, %xmm1, %r13d 6636; SSE42-NEXT: pextrb $5, %xmm1, %ebx 6637; SSE42-NEXT: pextrb $4, %xmm1, %ebp 6638; SSE42-NEXT: pextrb $3, %xmm1, %eax 6639; SSE42-NEXT: pextrb $2, %xmm1, %ecx 6640; SSE42-NEXT: pextrb $1, %xmm1, %edx 6641; SSE42-NEXT: pextrb $0, %xmm1, %esi 6642; SSE42-NEXT: andb $1, %r8b 6643; SSE42-NEXT: movb %r8b, 2(%rdi) 6644; SSE42-NEXT: andb $1, %r9b 6645; SSE42-NEXT: movb %r9b, 2(%rdi) 6646; SSE42-NEXT: andb $1, %r10b 6647; SSE42-NEXT: movb %r10b, 2(%rdi) 6648; SSE42-NEXT: andb $1, %r11b 6649; SSE42-NEXT: movb %r11b, 2(%rdi) 6650; SSE42-NEXT: andb $1, %r14b 6651; SSE42-NEXT: movb %r14b, 2(%rdi) 6652; SSE42-NEXT: andb $1, %r15b 6653; SSE42-NEXT: movb %r15b, 2(%rdi) 6654; SSE42-NEXT: andb $1, %r12b 6655; SSE42-NEXT: movb %r12b, 2(%rdi) 6656; SSE42-NEXT: andb $1, %r13b 6657; SSE42-NEXT: movb %r13b, 2(%rdi) 6658; SSE42-NEXT: andb $1, %bl 6659; SSE42-NEXT: movb %bl, 2(%rdi) 6660; SSE42-NEXT: andb $1, %bpl 6661; SSE42-NEXT: movb %bpl, 2(%rdi) 6662; SSE42-NEXT: andb $1, %al 6663; SSE42-NEXT: movb %al, 2(%rdi) 6664; SSE42-NEXT: andb $1, %cl 6665; SSE42-NEXT: movb %cl, 2(%rdi) 6666; SSE42-NEXT: andb $1, %dl 6667; SSE42-NEXT: movb %dl, 2(%rdi) 6668; SSE42-NEXT: andb $1, %sil 6669; SSE42-NEXT: movb %sil, 2(%rdi) 6670; SSE42-NEXT: pextrb $15, %xmm0, %eax 6671; SSE42-NEXT: andb $1, %al 6672; SSE42-NEXT: movb %al, (%rdi) 6673; SSE42-NEXT: pextrb $14, %xmm0, %eax 6674; SSE42-NEXT: andb $1, %al 6675; SSE42-NEXT: movb %al, (%rdi) 6676; SSE42-NEXT: pextrb $13, %xmm0, %r8d 6677; SSE42-NEXT: pextrb $12, %xmm0, %r9d 6678; SSE42-NEXT: pextrb $11, %xmm0, %r10d 6679; SSE42-NEXT: pextrb $10, %xmm0, %r11d 6680; SSE42-NEXT: pextrb $9, %xmm0, %r14d 6681; SSE42-NEXT: pextrb $8, %xmm0, %r15d 6682; SSE42-NEXT: pextrb $7, %xmm0, %r12d 6683; SSE42-NEXT: pextrb $6, %xmm0, %r13d 6684; SSE42-NEXT: pextrb $5, %xmm0, %ebx 6685; SSE42-NEXT: pextrb $4, %xmm0, %ebp 6686; SSE42-NEXT: pextrb $3, %xmm0, %eax 6687; SSE42-NEXT: pextrb $2, %xmm0, %ecx 6688; SSE42-NEXT: pextrb $1, %xmm0, %edx 6689; SSE42-NEXT: pextrb $0, %xmm0, %esi 6690; SSE42-NEXT: andb $1, %r8b 6691; SSE42-NEXT: movb %r8b, (%rdi) 6692; SSE42-NEXT: andb $1, %r9b 6693; SSE42-NEXT: movb %r9b, (%rdi) 6694; SSE42-NEXT: andb $1, %r10b 6695; SSE42-NEXT: movb %r10b, (%rdi) 6696; SSE42-NEXT: andb $1, %r11b 6697; SSE42-NEXT: movb %r11b, (%rdi) 6698; SSE42-NEXT: andb $1, %r14b 6699; SSE42-NEXT: movb %r14b, (%rdi) 6700; SSE42-NEXT: andb $1, %r15b 6701; SSE42-NEXT: movb %r15b, (%rdi) 6702; SSE42-NEXT: andb $1, %r12b 6703; SSE42-NEXT: movb %r12b, (%rdi) 6704; SSE42-NEXT: andb $1, %r13b 6705; SSE42-NEXT: movb %r13b, (%rdi) 6706; SSE42-NEXT: andb $1, %bl 6707; SSE42-NEXT: movb %bl, (%rdi) 6708; SSE42-NEXT: andb $1, %bpl 6709; SSE42-NEXT: movb %bpl, (%rdi) 6710; SSE42-NEXT: andb $1, %al 6711; SSE42-NEXT: movb %al, (%rdi) 6712; SSE42-NEXT: andb $1, %cl 6713; SSE42-NEXT: movb %cl, (%rdi) 6714; SSE42-NEXT: andb $1, %dl 6715; SSE42-NEXT: movb %dl, (%rdi) 6716; SSE42-NEXT: andb $1, %sil 6717; SSE42-NEXT: movb %sil, (%rdi) 6718; SSE42-NEXT: movq %rdi, %rax 6719; SSE42-NEXT: popq %rbx 6720; SSE42-NEXT: popq %r12 6721; SSE42-NEXT: popq %r13 6722; SSE42-NEXT: popq %r14 6723; SSE42-NEXT: popq %r15 6724; SSE42-NEXT: popq %rbp 6725; SSE42-NEXT: retq 6726; 6727; AVX1-LABEL: test_cmp_v32f64: 6728; AVX1: # BB#0: 6729; AVX1-NEXT: pushq %rbp 6730; AVX1-NEXT: movq %rsp, %rbp 6731; AVX1-NEXT: andq $-32, %rsp 6732; AVX1-NEXT: subq $32, %rsp 6733; AVX1-NEXT: vmovapd 16(%rbp), %ymm8 6734; AVX1-NEXT: vmovapd 48(%rbp), %ymm9 6735; AVX1-NEXT: vmovapd 80(%rbp), %ymm10 6736; AVX1-NEXT: vmovapd 112(%rbp), %ymm11 6737; AVX1-NEXT: vmovapd 144(%rbp), %ymm12 6738; AVX1-NEXT: vmovapd 176(%rbp), %ymm13 6739; AVX1-NEXT: vmovapd 208(%rbp), %ymm14 6740; AVX1-NEXT: vmovapd 240(%rbp), %ymm15 6741; AVX1-NEXT: vcmpltpd %ymm7, %ymm15, %ymm15 6742; AVX1-NEXT: vextractf128 $1, %ymm15, %xmm7 6743; AVX1-NEXT: vpacksswb %xmm7, %xmm15, %xmm15 6744; AVX1-NEXT: vcmpltpd %ymm6, %ymm14, %ymm6 6745; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm7 6746; AVX1-NEXT: vpacksswb %xmm7, %xmm6, %xmm6 6747; AVX1-NEXT: vpacksswb %xmm15, %xmm6, %xmm6 6748; AVX1-NEXT: vcmpltpd %ymm5, %ymm13, %ymm5 6749; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm7 6750; AVX1-NEXT: vpacksswb %xmm7, %xmm5, %xmm5 6751; AVX1-NEXT: vcmpltpd %ymm4, %ymm12, %ymm4 6752; AVX1-NEXT: vextractf128 $1, %ymm4, %xmm7 6753; AVX1-NEXT: vpacksswb %xmm7, %xmm4, %xmm4 6754; AVX1-NEXT: vpacksswb %xmm5, %xmm4, %xmm4 6755; AVX1-NEXT: vpacksswb %xmm6, %xmm4, %xmm4 6756; AVX1-NEXT: vcmpltpd %ymm3, %ymm11, %ymm3 6757; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm5 6758; AVX1-NEXT: vpacksswb %xmm5, %xmm3, %xmm3 6759; AVX1-NEXT: vcmpltpd %ymm2, %ymm10, %ymm2 6760; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm5 6761; AVX1-NEXT: vpacksswb %xmm5, %xmm2, %xmm2 6762; AVX1-NEXT: vpacksswb %xmm3, %xmm2, %xmm2 6763; AVX1-NEXT: vcmpltpd %ymm1, %ymm9, %ymm1 6764; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 6765; AVX1-NEXT: vpacksswb %xmm3, %xmm1, %xmm1 6766; AVX1-NEXT: vcmpltpd %ymm0, %ymm8, %ymm0 6767; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 6768; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 6769; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 6770; AVX1-NEXT: vpacksswb %xmm2, %xmm0, %xmm0 6771; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm0 6772; AVX1-NEXT: movq %rbp, %rsp 6773; AVX1-NEXT: popq %rbp 6774; AVX1-NEXT: retq 6775; 6776; AVX2-LABEL: test_cmp_v32f64: 6777; AVX2: # BB#0: 6778; AVX2-NEXT: pushq %rbp 6779; AVX2-NEXT: movq %rsp, %rbp 6780; AVX2-NEXT: andq $-32, %rsp 6781; AVX2-NEXT: subq $32, %rsp 6782; AVX2-NEXT: vmovapd 16(%rbp), %ymm8 6783; AVX2-NEXT: vmovapd 48(%rbp), %ymm9 6784; AVX2-NEXT: vmovapd 80(%rbp), %ymm10 6785; AVX2-NEXT: vmovapd 112(%rbp), %ymm11 6786; AVX2-NEXT: vmovapd 144(%rbp), %ymm12 6787; AVX2-NEXT: vmovapd 176(%rbp), %ymm13 6788; AVX2-NEXT: vmovapd 208(%rbp), %ymm14 6789; AVX2-NEXT: vmovapd 240(%rbp), %ymm15 6790; AVX2-NEXT: vcmpltpd %ymm7, %ymm15, %ymm7 6791; AVX2-NEXT: vcmpltpd %ymm6, %ymm14, %ymm6 6792; AVX2-NEXT: vpacksswb %ymm7, %ymm6, %ymm6 6793; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,2,1,3] 6794; AVX2-NEXT: vcmpltpd %ymm5, %ymm13, %ymm5 6795; AVX2-NEXT: vcmpltpd %ymm4, %ymm12, %ymm4 6796; AVX2-NEXT: vpacksswb %ymm5, %ymm4, %ymm4 6797; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,2,1,3] 6798; AVX2-NEXT: vpacksswb %ymm6, %ymm4, %ymm4 6799; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,2,1,3] 6800; AVX2-NEXT: vcmpltpd %ymm3, %ymm11, %ymm3 6801; AVX2-NEXT: vcmpltpd %ymm2, %ymm10, %ymm2 6802; AVX2-NEXT: vpacksswb %ymm3, %ymm2, %ymm2 6803; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,1,3] 6804; AVX2-NEXT: vcmpltpd %ymm1, %ymm9, %ymm1 6805; AVX2-NEXT: vcmpltpd %ymm0, %ymm8, %ymm0 6806; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 6807; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 6808; AVX2-NEXT: vpacksswb %ymm2, %ymm0, %ymm0 6809; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 6810; AVX2-NEXT: vpacksswb %ymm4, %ymm0, %ymm0 6811; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 6812; AVX2-NEXT: movq %rbp, %rsp 6813; AVX2-NEXT: popq %rbp 6814; AVX2-NEXT: retq 6815; 6816; AVX512-LABEL: test_cmp_v32f64: 6817; AVX512: # BB#0: 6818; AVX512-NEXT: vextractf32x4 $3, %zmm4, %xmm8 6819; AVX512-NEXT: vextractf32x4 $3, %zmm0, %xmm9 6820; AVX512-NEXT: xorl %eax, %eax 6821; AVX512-NEXT: vucomisd %xmm8, %xmm9 6822; AVX512-NEXT: movq $-1, %rcx 6823; AVX512-NEXT: movl $0, %edx 6824; AVX512-NEXT: cmovaq %rcx, %rdx 6825; AVX512-NEXT: vmovq %rdx, %xmm10 6826; AVX512-NEXT: vpermilpd {{.*#+}} xmm8 = xmm8[1,0] 6827; AVX512-NEXT: vpermilpd {{.*#+}} xmm9 = xmm9[1,0] 6828; AVX512-NEXT: vucomisd %xmm8, %xmm9 6829; AVX512-NEXT: movl $0, %edx 6830; AVX512-NEXT: cmovaq %rcx, %rdx 6831; AVX512-NEXT: vmovq %rdx, %xmm8 6832; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm8 = xmm10[0],xmm8[0] 6833; AVX512-NEXT: vextractf32x4 $2, %zmm4, %xmm9 6834; AVX512-NEXT: vextractf32x4 $2, %zmm0, %xmm10 6835; AVX512-NEXT: vucomisd %xmm9, %xmm10 6836; AVX512-NEXT: movl $0, %edx 6837; AVX512-NEXT: cmovaq %rcx, %rdx 6838; AVX512-NEXT: vmovq %rdx, %xmm11 6839; AVX512-NEXT: vpermilpd {{.*#+}} xmm9 = xmm9[1,0] 6840; AVX512-NEXT: vpermilpd {{.*#+}} xmm10 = xmm10[1,0] 6841; AVX512-NEXT: vucomisd %xmm9, %xmm10 6842; AVX512-NEXT: movl $0, %edx 6843; AVX512-NEXT: cmovaq %rcx, %rdx 6844; AVX512-NEXT: vmovq %rdx, %xmm9 6845; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm11[0],xmm9[0] 6846; AVX512-NEXT: vinserti128 $1, %xmm8, %ymm9, %ymm8 6847; AVX512-NEXT: vextractf32x4 $1, %zmm4, %xmm9 6848; AVX512-NEXT: vextractf32x4 $1, %zmm0, %xmm10 6849; AVX512-NEXT: vucomisd %xmm9, %xmm10 6850; AVX512-NEXT: movl $0, %edx 6851; AVX512-NEXT: cmovaq %rcx, %rdx 6852; AVX512-NEXT: vmovq %rdx, %xmm11 6853; AVX512-NEXT: vpermilpd {{.*#+}} xmm9 = xmm9[1,0] 6854; AVX512-NEXT: vpermilpd {{.*#+}} xmm10 = xmm10[1,0] 6855; AVX512-NEXT: vucomisd %xmm9, %xmm10 6856; AVX512-NEXT: movl $0, %edx 6857; AVX512-NEXT: cmovaq %rcx, %rdx 6858; AVX512-NEXT: vmovq %rdx, %xmm9 6859; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm11[0],xmm9[0] 6860; AVX512-NEXT: vucomisd %xmm4, %xmm0 6861; AVX512-NEXT: movl $0, %edx 6862; AVX512-NEXT: cmovaq %rcx, %rdx 6863; AVX512-NEXT: vmovq %rdx, %xmm10 6864; AVX512-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 6865; AVX512-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 6866; AVX512-NEXT: vucomisd %xmm4, %xmm0 6867; AVX512-NEXT: movl $0, %edx 6868; AVX512-NEXT: cmovaq %rcx, %rdx 6869; AVX512-NEXT: vmovq %rdx, %xmm0 6870; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm10[0],xmm0[0] 6871; AVX512-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm0 6872; AVX512-NEXT: vinserti64x4 $1, %ymm8, %zmm0, %zmm0 6873; AVX512-NEXT: vpmovqd %zmm0, %ymm8 6874; AVX512-NEXT: vextractf32x4 $3, %zmm5, %xmm4 6875; AVX512-NEXT: vextractf32x4 $3, %zmm1, %xmm0 6876; AVX512-NEXT: vucomisd %xmm4, %xmm0 6877; AVX512-NEXT: movl $0, %edx 6878; AVX512-NEXT: cmovaq %rcx, %rdx 6879; AVX512-NEXT: vmovq %rdx, %xmm9 6880; AVX512-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 6881; AVX512-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 6882; AVX512-NEXT: vucomisd %xmm4, %xmm0 6883; AVX512-NEXT: movl $0, %edx 6884; AVX512-NEXT: cmovaq %rcx, %rdx 6885; AVX512-NEXT: vmovq %rdx, %xmm0 6886; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm0[0] 6887; AVX512-NEXT: vextractf32x4 $2, %zmm5, %xmm4 6888; AVX512-NEXT: vextractf32x4 $2, %zmm1, %xmm0 6889; AVX512-NEXT: vucomisd %xmm4, %xmm0 6890; AVX512-NEXT: movl $0, %edx 6891; AVX512-NEXT: cmovaq %rcx, %rdx 6892; AVX512-NEXT: vmovq %rdx, %xmm10 6893; AVX512-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 6894; AVX512-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 6895; AVX512-NEXT: vucomisd %xmm4, %xmm0 6896; AVX512-NEXT: movl $0, %edx 6897; AVX512-NEXT: cmovaq %rcx, %rdx 6898; AVX512-NEXT: vmovq %rdx, %xmm0 6899; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm10[0],xmm0[0] 6900; AVX512-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm9 6901; AVX512-NEXT: vextractf32x4 $1, %zmm5, %xmm4 6902; AVX512-NEXT: vextractf32x4 $1, %zmm1, %xmm0 6903; AVX512-NEXT: vucomisd %xmm4, %xmm0 6904; AVX512-NEXT: movl $0, %edx 6905; AVX512-NEXT: cmovaq %rcx, %rdx 6906; AVX512-NEXT: vmovq %rdx, %xmm10 6907; AVX512-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 6908; AVX512-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0] 6909; AVX512-NEXT: vucomisd %xmm4, %xmm0 6910; AVX512-NEXT: movl $0, %edx 6911; AVX512-NEXT: cmovaq %rcx, %rdx 6912; AVX512-NEXT: vmovq %rdx, %xmm0 6913; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm10[0],xmm0[0] 6914; AVX512-NEXT: vucomisd %xmm5, %xmm1 6915; AVX512-NEXT: movl $0, %edx 6916; AVX512-NEXT: cmovaq %rcx, %rdx 6917; AVX512-NEXT: vmovq %rdx, %xmm4 6918; AVX512-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 6919; AVX512-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 6920; AVX512-NEXT: vucomisd %xmm5, %xmm1 6921; AVX512-NEXT: movl $0, %edx 6922; AVX512-NEXT: cmovaq %rcx, %rdx 6923; AVX512-NEXT: vmovq %rdx, %xmm1 6924; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm4[0],xmm1[0] 6925; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 6926; AVX512-NEXT: vinserti64x4 $1, %ymm9, %zmm0, %zmm0 6927; AVX512-NEXT: vpmovqd %zmm0, %ymm0 6928; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm8, %zmm0 6929; AVX512-NEXT: vpmovdb %zmm0, %xmm8 6930; AVX512-NEXT: vextractf32x4 $3, %zmm6, %xmm1 6931; AVX512-NEXT: vextractf32x4 $3, %zmm2, %xmm4 6932; AVX512-NEXT: vucomisd %xmm1, %xmm4 6933; AVX512-NEXT: movl $0, %edx 6934; AVX512-NEXT: cmovaq %rcx, %rdx 6935; AVX512-NEXT: vmovq %rdx, %xmm5 6936; AVX512-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 6937; AVX512-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 6938; AVX512-NEXT: vucomisd %xmm1, %xmm4 6939; AVX512-NEXT: movl $0, %edx 6940; AVX512-NEXT: cmovaq %rcx, %rdx 6941; AVX512-NEXT: vmovq %rdx, %xmm1 6942; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm5[0],xmm1[0] 6943; AVX512-NEXT: vextractf32x4 $2, %zmm6, %xmm4 6944; AVX512-NEXT: vextractf32x4 $2, %zmm2, %xmm5 6945; AVX512-NEXT: vucomisd %xmm4, %xmm5 6946; AVX512-NEXT: movl $0, %edx 6947; AVX512-NEXT: cmovaq %rcx, %rdx 6948; AVX512-NEXT: vmovq %rdx, %xmm0 6949; AVX512-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 6950; AVX512-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0] 6951; AVX512-NEXT: vucomisd %xmm4, %xmm5 6952; AVX512-NEXT: movl $0, %edx 6953; AVX512-NEXT: cmovaq %rcx, %rdx 6954; AVX512-NEXT: vmovq %rdx, %xmm4 6955; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm4[0] 6956; AVX512-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 6957; AVX512-NEXT: vextractf32x4 $1, %zmm6, %xmm1 6958; AVX512-NEXT: vextractf32x4 $1, %zmm2, %xmm4 6959; AVX512-NEXT: vucomisd %xmm1, %xmm4 6960; AVX512-NEXT: movl $0, %edx 6961; AVX512-NEXT: cmovaq %rcx, %rdx 6962; AVX512-NEXT: vmovq %rdx, %xmm5 6963; AVX512-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 6964; AVX512-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 6965; AVX512-NEXT: vucomisd %xmm1, %xmm4 6966; AVX512-NEXT: movl $0, %edx 6967; AVX512-NEXT: cmovaq %rcx, %rdx 6968; AVX512-NEXT: vmovq %rdx, %xmm1 6969; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm5[0],xmm1[0] 6970; AVX512-NEXT: vucomisd %xmm6, %xmm2 6971; AVX512-NEXT: movl $0, %edx 6972; AVX512-NEXT: cmovaq %rcx, %rdx 6973; AVX512-NEXT: vmovq %rdx, %xmm4 6974; AVX512-NEXT: vpermilpd {{.*#+}} xmm5 = xmm6[1,0] 6975; AVX512-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 6976; AVX512-NEXT: vucomisd %xmm5, %xmm2 6977; AVX512-NEXT: movl $0, %edx 6978; AVX512-NEXT: cmovaq %rcx, %rdx 6979; AVX512-NEXT: vmovq %rdx, %xmm2 6980; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm4[0],xmm2[0] 6981; AVX512-NEXT: vinserti128 $1, %xmm1, %ymm2, %ymm1 6982; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm0 6983; AVX512-NEXT: vpmovqd %zmm0, %ymm0 6984; AVX512-NEXT: vextractf32x4 $3, %zmm7, %xmm1 6985; AVX512-NEXT: vextractf32x4 $3, %zmm3, %xmm2 6986; AVX512-NEXT: vucomisd %xmm1, %xmm2 6987; AVX512-NEXT: movl $0, %edx 6988; AVX512-NEXT: cmovaq %rcx, %rdx 6989; AVX512-NEXT: vmovq %rdx, %xmm4 6990; AVX512-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0] 6991; AVX512-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 6992; AVX512-NEXT: vucomisd %xmm1, %xmm2 6993; AVX512-NEXT: movl $0, %edx 6994; AVX512-NEXT: cmovaq %rcx, %rdx 6995; AVX512-NEXT: vmovq %rdx, %xmm1 6996; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm4[0],xmm1[0] 6997; AVX512-NEXT: vextractf32x4 $2, %zmm7, %xmm2 6998; AVX512-NEXT: vextractf32x4 $2, %zmm3, %xmm4 6999; AVX512-NEXT: vucomisd %xmm2, %xmm4 7000; AVX512-NEXT: movl $0, %edx 7001; AVX512-NEXT: cmovaq %rcx, %rdx 7002; AVX512-NEXT: vmovq %rdx, %xmm5 7003; AVX512-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 7004; AVX512-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 7005; AVX512-NEXT: vucomisd %xmm2, %xmm4 7006; AVX512-NEXT: movl $0, %edx 7007; AVX512-NEXT: cmovaq %rcx, %rdx 7008; AVX512-NEXT: vmovq %rdx, %xmm2 7009; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm5[0],xmm2[0] 7010; AVX512-NEXT: vinserti128 $1, %xmm1, %ymm2, %ymm1 7011; AVX512-NEXT: vextractf32x4 $1, %zmm7, %xmm2 7012; AVX512-NEXT: vextractf32x4 $1, %zmm3, %xmm4 7013; AVX512-NEXT: vucomisd %xmm2, %xmm4 7014; AVX512-NEXT: movl $0, %edx 7015; AVX512-NEXT: cmovaq %rcx, %rdx 7016; AVX512-NEXT: vmovq %rdx, %xmm5 7017; AVX512-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0] 7018; AVX512-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0] 7019; AVX512-NEXT: vucomisd %xmm2, %xmm4 7020; AVX512-NEXT: movl $0, %edx 7021; AVX512-NEXT: cmovaq %rcx, %rdx 7022; AVX512-NEXT: vmovq %rdx, %xmm2 7023; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm5[0],xmm2[0] 7024; AVX512-NEXT: vucomisd %xmm7, %xmm3 7025; AVX512-NEXT: movl $0, %edx 7026; AVX512-NEXT: cmovaq %rcx, %rdx 7027; AVX512-NEXT: vmovq %rdx, %xmm4 7028; AVX512-NEXT: vpermilpd {{.*#+}} xmm5 = xmm7[1,0] 7029; AVX512-NEXT: vpermilpd {{.*#+}} xmm3 = xmm3[1,0] 7030; AVX512-NEXT: vucomisd %xmm5, %xmm3 7031; AVX512-NEXT: cmovaq %rcx, %rax 7032; AVX512-NEXT: vmovq %rax, %xmm3 7033; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm4[0],xmm3[0] 7034; AVX512-NEXT: vinserti128 $1, %xmm2, %ymm3, %ymm2 7035; AVX512-NEXT: vinserti64x4 $1, %ymm1, %zmm2, %zmm1 7036; AVX512-NEXT: vpmovqd %zmm1, %ymm1 7037; AVX512-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 7038; AVX512-NEXT: vpmovdb %zmm0, %xmm0 7039; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm8, %ymm0 7040; AVX512-NEXT: retq 7041 %1 = fcmp ogt <32 x double> %a0, %a1 7042 ret <32 x i1> %1 7043} 7044 7045define <32 x i1> @test_cmp_v32i64(<32 x i64> %a0, <32 x i64> %a1) nounwind { 7046; SSE2-LABEL: test_cmp_v32i64: 7047; SSE2: # BB#0: 7048; SSE2-NEXT: movdqa {{.*#+}} xmm8 = [2147483648,0,2147483648,0] 7049; SSE2-NEXT: pxor %xmm8, %xmm7 7050; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm9 7051; SSE2-NEXT: pxor %xmm8, %xmm9 7052; SSE2-NEXT: movdqa %xmm7, %xmm10 7053; SSE2-NEXT: pcmpgtd %xmm9, %xmm10 7054; SSE2-NEXT: pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2] 7055; SSE2-NEXT: pcmpeqd %xmm7, %xmm9 7056; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm9[1,1,3,3] 7057; SSE2-NEXT: pand %xmm11, %xmm9 7058; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm10[1,1,3,3] 7059; SSE2-NEXT: por %xmm9, %xmm7 7060; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm7[0,2,2,3] 7061; SSE2-NEXT: pxor %xmm8, %xmm6 7062; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm7 7063; SSE2-NEXT: pxor %xmm8, %xmm7 7064; SSE2-NEXT: movdqa %xmm6, %xmm10 7065; SSE2-NEXT: pcmpgtd %xmm7, %xmm10 7066; SSE2-NEXT: pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2] 7067; SSE2-NEXT: pcmpeqd %xmm6, %xmm7 7068; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm7[1,1,3,3] 7069; SSE2-NEXT: pand %xmm11, %xmm6 7070; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm10[1,1,3,3] 7071; SSE2-NEXT: por %xmm6, %xmm7 7072; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm7[0,2,2,3] 7073; SSE2-NEXT: punpcklqdq {{.*#+}} xmm6 = xmm6[0],xmm9[0] 7074; SSE2-NEXT: pslld $31, %xmm6 7075; SSE2-NEXT: psrad $31, %xmm6 7076; SSE2-NEXT: pshuflw {{.*#+}} xmm6 = xmm6[0,2,2,3,4,5,6,7] 7077; SSE2-NEXT: pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,6,6,7] 7078; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm6[0,2,2,3] 7079; SSE2-NEXT: pxor %xmm8, %xmm5 7080; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm7 7081; SSE2-NEXT: pxor %xmm8, %xmm7 7082; SSE2-NEXT: movdqa %xmm5, %xmm6 7083; SSE2-NEXT: pcmpgtd %xmm7, %xmm6 7084; SSE2-NEXT: pshufd {{.*#+}} xmm10 = xmm6[0,0,2,2] 7085; SSE2-NEXT: pcmpeqd %xmm5, %xmm7 7086; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3] 7087; SSE2-NEXT: pand %xmm10, %xmm5 7088; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3] 7089; SSE2-NEXT: por %xmm5, %xmm6 7090; SSE2-NEXT: pshufd {{.*#+}} xmm10 = xmm6[0,2,2,3] 7091; SSE2-NEXT: pxor %xmm8, %xmm4 7092; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm6 7093; SSE2-NEXT: pxor %xmm8, %xmm6 7094; SSE2-NEXT: movdqa %xmm4, %xmm7 7095; SSE2-NEXT: pcmpgtd %xmm6, %xmm7 7096; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm7[0,0,2,2] 7097; SSE2-NEXT: pcmpeqd %xmm4, %xmm6 7098; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm6[1,1,3,3] 7099; SSE2-NEXT: pand %xmm5, %xmm4 7100; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3] 7101; SSE2-NEXT: por %xmm4, %xmm5 7102; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm5[0,2,2,3] 7103; SSE2-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm10[0] 7104; SSE2-NEXT: pslld $31, %xmm4 7105; SSE2-NEXT: psrad $31, %xmm4 7106; SSE2-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,2,2,3,4,5,6,7] 7107; SSE2-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,6,6,7] 7108; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,2,2,3] 7109; SSE2-NEXT: punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm9[0] 7110; SSE2-NEXT: psllw $15, %xmm5 7111; SSE2-NEXT: psraw $15, %xmm5 7112; SSE2-NEXT: movdqa {{.*#+}} xmm9 = [255,255,255,255,255,255,255,255] 7113; SSE2-NEXT: pand %xmm9, %xmm5 7114; SSE2-NEXT: pxor %xmm8, %xmm3 7115; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm6 7116; SSE2-NEXT: pxor %xmm8, %xmm6 7117; SSE2-NEXT: movdqa %xmm3, %xmm7 7118; SSE2-NEXT: pcmpgtd %xmm6, %xmm7 7119; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2] 7120; SSE2-NEXT: pcmpeqd %xmm3, %xmm6 7121; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm6[1,1,3,3] 7122; SSE2-NEXT: pand %xmm4, %xmm3 7123; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm7[1,1,3,3] 7124; SSE2-NEXT: por %xmm3, %xmm4 7125; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[0,2,2,3] 7126; SSE2-NEXT: pxor %xmm8, %xmm2 7127; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm4 7128; SSE2-NEXT: pxor %xmm8, %xmm4 7129; SSE2-NEXT: movdqa %xmm2, %xmm6 7130; SSE2-NEXT: pcmpgtd %xmm4, %xmm6 7131; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2] 7132; SSE2-NEXT: pcmpeqd %xmm2, %xmm4 7133; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3] 7134; SSE2-NEXT: pand %xmm7, %xmm2 7135; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm6[1,1,3,3] 7136; SSE2-NEXT: por %xmm2, %xmm4 7137; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm4[0,2,2,3] 7138; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0] 7139; SSE2-NEXT: pslld $31, %xmm2 7140; SSE2-NEXT: psrad $31, %xmm2 7141; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[0,2,2,3,4,5,6,7] 7142; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7] 7143; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] 7144; SSE2-NEXT: pxor %xmm8, %xmm1 7145; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 7146; SSE2-NEXT: pxor %xmm8, %xmm3 7147; SSE2-NEXT: movdqa %xmm1, %xmm4 7148; SSE2-NEXT: pcmpgtd %xmm3, %xmm4 7149; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,0,2,2] 7150; SSE2-NEXT: pcmpeqd %xmm1, %xmm3 7151; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm3[1,1,3,3] 7152; SSE2-NEXT: pand %xmm6, %xmm1 7153; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3] 7154; SSE2-NEXT: por %xmm1, %xmm3 7155; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm3[0,2,2,3] 7156; SSE2-NEXT: pxor %xmm8, %xmm0 7157; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 7158; SSE2-NEXT: pxor %xmm8, %xmm3 7159; SSE2-NEXT: movdqa %xmm0, %xmm4 7160; SSE2-NEXT: pcmpgtd %xmm3, %xmm4 7161; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,0,2,2] 7162; SSE2-NEXT: pcmpeqd %xmm0, %xmm3 7163; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm3[1,1,3,3] 7164; SSE2-NEXT: pand %xmm6, %xmm0 7165; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3] 7166; SSE2-NEXT: por %xmm0, %xmm3 7167; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,2,2,3] 7168; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 7169; SSE2-NEXT: pslld $31, %xmm0 7170; SSE2-NEXT: psrad $31, %xmm0 7171; SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7] 7172; SSE2-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,6,7] 7173; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3] 7174; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0] 7175; SSE2-NEXT: psllw $15, %xmm0 7176; SSE2-NEXT: psraw $15, %xmm0 7177; SSE2-NEXT: pand %xmm9, %xmm0 7178; SSE2-NEXT: packuswb %xmm5, %xmm0 7179; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm1 7180; SSE2-NEXT: pxor %xmm8, %xmm1 7181; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm2 7182; SSE2-NEXT: pxor %xmm8, %xmm2 7183; SSE2-NEXT: movdqa %xmm2, %xmm3 7184; SSE2-NEXT: pcmpgtd %xmm1, %xmm3 7185; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm3[0,0,2,2] 7186; SSE2-NEXT: pcmpeqd %xmm1, %xmm2 7187; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,1,3,3] 7188; SSE2-NEXT: pand %xmm4, %xmm1 7189; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm3[1,1,3,3] 7190; SSE2-NEXT: por %xmm1, %xmm2 7191; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm2[0,2,2,3] 7192; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm2 7193; SSE2-NEXT: pxor %xmm8, %xmm2 7194; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 7195; SSE2-NEXT: pxor %xmm8, %xmm3 7196; SSE2-NEXT: movdqa %xmm3, %xmm4 7197; SSE2-NEXT: pcmpgtd %xmm2, %xmm4 7198; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2] 7199; SSE2-NEXT: pcmpeqd %xmm2, %xmm3 7200; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm3[1,1,3,3] 7201; SSE2-NEXT: pand %xmm5, %xmm2 7202; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3] 7203; SSE2-NEXT: por %xmm2, %xmm3 7204; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm3[0,2,2,3] 7205; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm1[0] 7206; SSE2-NEXT: pslld $31, %xmm2 7207; SSE2-NEXT: psrad $31, %xmm2 7208; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm2[0,2,2,3,4,5,6,7] 7209; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 7210; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm1[0,2,2,3] 7211; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm1 7212; SSE2-NEXT: pxor %xmm8, %xmm1 7213; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 7214; SSE2-NEXT: pxor %xmm8, %xmm3 7215; SSE2-NEXT: movdqa %xmm3, %xmm4 7216; SSE2-NEXT: pcmpgtd %xmm1, %xmm4 7217; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2] 7218; SSE2-NEXT: pcmpeqd %xmm1, %xmm3 7219; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm3[1,1,3,3] 7220; SSE2-NEXT: pand %xmm5, %xmm1 7221; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3] 7222; SSE2-NEXT: por %xmm1, %xmm3 7223; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm3[0,2,2,3] 7224; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 7225; SSE2-NEXT: pxor %xmm8, %xmm3 7226; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm4 7227; SSE2-NEXT: pxor %xmm8, %xmm4 7228; SSE2-NEXT: movdqa %xmm4, %xmm5 7229; SSE2-NEXT: pcmpgtd %xmm3, %xmm5 7230; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2] 7231; SSE2-NEXT: pcmpeqd %xmm3, %xmm4 7232; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3] 7233; SSE2-NEXT: pand %xmm6, %xmm3 7234; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3] 7235; SSE2-NEXT: por %xmm3, %xmm4 7236; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[0,2,2,3] 7237; SSE2-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm1[0] 7238; SSE2-NEXT: pslld $31, %xmm3 7239; SSE2-NEXT: psrad $31, %xmm3 7240; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm3[0,2,2,3,4,5,6,7] 7241; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7] 7242; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 7243; SSE2-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0] 7244; SSE2-NEXT: psllw $15, %xmm1 7245; SSE2-NEXT: psraw $15, %xmm1 7246; SSE2-NEXT: pand %xmm9, %xmm1 7247; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm2 7248; SSE2-NEXT: pxor %xmm8, %xmm2 7249; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 7250; SSE2-NEXT: pxor %xmm8, %xmm3 7251; SSE2-NEXT: movdqa %xmm3, %xmm4 7252; SSE2-NEXT: pcmpgtd %xmm2, %xmm4 7253; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2] 7254; SSE2-NEXT: pcmpeqd %xmm2, %xmm3 7255; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm3[1,1,3,3] 7256; SSE2-NEXT: pand %xmm5, %xmm2 7257; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3] 7258; SSE2-NEXT: por %xmm2, %xmm3 7259; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm3[0,2,2,3] 7260; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 7261; SSE2-NEXT: pxor %xmm8, %xmm3 7262; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm4 7263; SSE2-NEXT: pxor %xmm8, %xmm4 7264; SSE2-NEXT: movdqa %xmm4, %xmm5 7265; SSE2-NEXT: pcmpgtd %xmm3, %xmm5 7266; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2] 7267; SSE2-NEXT: pcmpeqd %xmm3, %xmm4 7268; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3] 7269; SSE2-NEXT: pand %xmm6, %xmm3 7270; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3] 7271; SSE2-NEXT: por %xmm3, %xmm4 7272; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[0,2,2,3] 7273; SSE2-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm2[0] 7274; SSE2-NEXT: pslld $31, %xmm3 7275; SSE2-NEXT: psrad $31, %xmm3 7276; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm3[0,2,2,3,4,5,6,7] 7277; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7] 7278; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] 7279; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 7280; SSE2-NEXT: pxor %xmm8, %xmm3 7281; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm4 7282; SSE2-NEXT: pxor %xmm8, %xmm4 7283; SSE2-NEXT: movdqa %xmm4, %xmm5 7284; SSE2-NEXT: pcmpgtd %xmm3, %xmm5 7285; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2] 7286; SSE2-NEXT: pcmpeqd %xmm3, %xmm4 7287; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3] 7288; SSE2-NEXT: pand %xmm6, %xmm3 7289; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3] 7290; SSE2-NEXT: por %xmm3, %xmm4 7291; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm4[0,2,2,3] 7292; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm4 7293; SSE2-NEXT: pxor %xmm8, %xmm4 7294; SSE2-NEXT: pxor {{[0-9]+}}(%rsp), %xmm8 7295; SSE2-NEXT: movdqa %xmm8, %xmm5 7296; SSE2-NEXT: pcmpgtd %xmm4, %xmm5 7297; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2] 7298; SSE2-NEXT: pcmpeqd %xmm4, %xmm8 7299; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm8[1,1,3,3] 7300; SSE2-NEXT: pand %xmm6, %xmm4 7301; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3] 7302; SSE2-NEXT: por %xmm4, %xmm5 7303; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm5[0,2,2,3] 7304; SSE2-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm3[0] 7305; SSE2-NEXT: pslld $31, %xmm4 7306; SSE2-NEXT: psrad $31, %xmm4 7307; SSE2-NEXT: pshuflw {{.*#+}} xmm3 = xmm4[0,2,2,3,4,5,6,7] 7308; SSE2-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,6,6,7] 7309; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3] 7310; SSE2-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm2[0] 7311; SSE2-NEXT: psllw $15, %xmm3 7312; SSE2-NEXT: psraw $15, %xmm3 7313; SSE2-NEXT: pand %xmm9, %xmm3 7314; SSE2-NEXT: packuswb %xmm1, %xmm3 7315; SSE2-NEXT: movdqa %xmm3, -{{[0-9]+}}(%rsp) 7316; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7317; SSE2-NEXT: andb $1, %al 7318; SSE2-NEXT: movb %al, 2(%rdi) 7319; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) 7320; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7321; SSE2-NEXT: andb $1, %al 7322; SSE2-NEXT: movb %al, (%rdi) 7323; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7324; SSE2-NEXT: andb $1, %al 7325; SSE2-NEXT: movb %al, 2(%rdi) 7326; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7327; SSE2-NEXT: andb $1, %al 7328; SSE2-NEXT: movb %al, (%rdi) 7329; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7330; SSE2-NEXT: andb $1, %al 7331; SSE2-NEXT: movb %al, 2(%rdi) 7332; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7333; SSE2-NEXT: andb $1, %al 7334; SSE2-NEXT: movb %al, (%rdi) 7335; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7336; SSE2-NEXT: andb $1, %al 7337; SSE2-NEXT: movb %al, 2(%rdi) 7338; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7339; SSE2-NEXT: andb $1, %al 7340; SSE2-NEXT: movb %al, (%rdi) 7341; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7342; SSE2-NEXT: andb $1, %al 7343; SSE2-NEXT: movb %al, 2(%rdi) 7344; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7345; SSE2-NEXT: andb $1, %al 7346; SSE2-NEXT: movb %al, (%rdi) 7347; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7348; SSE2-NEXT: andb $1, %al 7349; SSE2-NEXT: movb %al, 2(%rdi) 7350; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7351; SSE2-NEXT: andb $1, %al 7352; SSE2-NEXT: movb %al, (%rdi) 7353; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7354; SSE2-NEXT: andb $1, %al 7355; SSE2-NEXT: movb %al, 2(%rdi) 7356; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7357; SSE2-NEXT: andb $1, %al 7358; SSE2-NEXT: movb %al, (%rdi) 7359; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7360; SSE2-NEXT: andb $1, %al 7361; SSE2-NEXT: movb %al, 2(%rdi) 7362; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7363; SSE2-NEXT: andb $1, %al 7364; SSE2-NEXT: movb %al, (%rdi) 7365; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7366; SSE2-NEXT: andb $1, %al 7367; SSE2-NEXT: movb %al, 2(%rdi) 7368; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7369; SSE2-NEXT: andb $1, %al 7370; SSE2-NEXT: movb %al, (%rdi) 7371; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7372; SSE2-NEXT: andb $1, %al 7373; SSE2-NEXT: movb %al, 2(%rdi) 7374; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7375; SSE2-NEXT: andb $1, %al 7376; SSE2-NEXT: movb %al, (%rdi) 7377; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7378; SSE2-NEXT: andb $1, %al 7379; SSE2-NEXT: movb %al, 2(%rdi) 7380; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7381; SSE2-NEXT: andb $1, %al 7382; SSE2-NEXT: movb %al, (%rdi) 7383; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7384; SSE2-NEXT: andb $1, %al 7385; SSE2-NEXT: movb %al, 2(%rdi) 7386; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7387; SSE2-NEXT: andb $1, %al 7388; SSE2-NEXT: movb %al, (%rdi) 7389; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7390; SSE2-NEXT: andb $1, %al 7391; SSE2-NEXT: movb %al, 2(%rdi) 7392; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7393; SSE2-NEXT: andb $1, %al 7394; SSE2-NEXT: movb %al, (%rdi) 7395; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7396; SSE2-NEXT: andb $1, %al 7397; SSE2-NEXT: movb %al, 2(%rdi) 7398; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7399; SSE2-NEXT: andb $1, %al 7400; SSE2-NEXT: movb %al, (%rdi) 7401; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7402; SSE2-NEXT: andb $1, %al 7403; SSE2-NEXT: movb %al, 2(%rdi) 7404; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7405; SSE2-NEXT: andb $1, %al 7406; SSE2-NEXT: movb %al, (%rdi) 7407; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7408; SSE2-NEXT: andb $1, %al 7409; SSE2-NEXT: movb %al, 2(%rdi) 7410; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al 7411; SSE2-NEXT: andb $1, %al 7412; SSE2-NEXT: movb %al, (%rdi) 7413; SSE2-NEXT: movq %rdi, %rax 7414; SSE2-NEXT: retq 7415; 7416; SSE42-LABEL: test_cmp_v32i64: 7417; SSE42: # BB#0: 7418; SSE42-NEXT: movdqa %xmm0, %xmm8 7419; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm9 7420; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm10 7421; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm11 7422; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm12 7423; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm13 7424; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm14 7425; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm15 7426; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm7 7427; SSE42-NEXT: pshufd {{.*#+}} xmm7 = xmm7[0,1,0,2] 7428; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm6 7429; SSE42-NEXT: pshufd {{.*#+}} xmm6 = xmm6[0,2,2,3] 7430; SSE42-NEXT: pblendw {{.*#+}} xmm6 = xmm6[0,1,2,3],xmm7[4,5,6,7] 7431; SSE42-NEXT: pslld $31, %xmm6 7432; SSE42-NEXT: psrad $31, %xmm6 7433; SSE42-NEXT: movdqa {{.*#+}} xmm7 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15] 7434; SSE42-NEXT: pshufb %xmm7, %xmm6 7435; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm5 7436; SSE42-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,1,0,2] 7437; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm4 7438; SSE42-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,2,2,3] 7439; SSE42-NEXT: pblendw {{.*#+}} xmm5 = xmm5[0,1,2,3],xmm0[4,5,6,7] 7440; SSE42-NEXT: pslld $31, %xmm5 7441; SSE42-NEXT: psrad $31, %xmm5 7442; SSE42-NEXT: pshufb %xmm7, %xmm5 7443; SSE42-NEXT: punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm6[0] 7444; SSE42-NEXT: psllw $15, %xmm5 7445; SSE42-NEXT: psraw $15, %xmm5 7446; SSE42-NEXT: movdqa {{.*#+}} xmm4 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u> 7447; SSE42-NEXT: pshufb %xmm4, %xmm5 7448; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm3 7449; SSE42-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,1,0,2] 7450; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm2 7451; SSE42-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] 7452; SSE42-NEXT: pblendw {{.*#+}} xmm2 = xmm2[0,1,2,3],xmm0[4,5,6,7] 7453; SSE42-NEXT: pslld $31, %xmm2 7454; SSE42-NEXT: psrad $31, %xmm2 7455; SSE42-NEXT: pshufb %xmm7, %xmm2 7456; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm1 7457; SSE42-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,0,2] 7458; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm8 7459; SSE42-NEXT: pshufd {{.*#+}} xmm0 = xmm8[0,2,2,3] 7460; SSE42-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5,6,7] 7461; SSE42-NEXT: pslld $31, %xmm0 7462; SSE42-NEXT: psrad $31, %xmm0 7463; SSE42-NEXT: pshufb %xmm7, %xmm0 7464; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0] 7465; SSE42-NEXT: psllw $15, %xmm0 7466; SSE42-NEXT: psraw $15, %xmm0 7467; SSE42-NEXT: pshufb %xmm4, %xmm0 7468; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm5[0] 7469; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm15 7470; SSE42-NEXT: pshufd {{.*#+}} xmm1 = xmm15[0,1,0,2] 7471; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm14 7472; SSE42-NEXT: pshufd {{.*#+}} xmm3 = xmm14[0,2,2,3] 7473; SSE42-NEXT: pblendw {{.*#+}} xmm3 = xmm3[0,1,2,3],xmm1[4,5,6,7] 7474; SSE42-NEXT: pslld $31, %xmm3 7475; SSE42-NEXT: psrad $31, %xmm3 7476; SSE42-NEXT: pshufb %xmm7, %xmm3 7477; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm13 7478; SSE42-NEXT: pshufd {{.*#+}} xmm1 = xmm13[0,1,0,2] 7479; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm12 7480; SSE42-NEXT: pshufd {{.*#+}} xmm2 = xmm12[0,2,2,3] 7481; SSE42-NEXT: pblendw {{.*#+}} xmm2 = xmm2[0,1,2,3],xmm1[4,5,6,7] 7482; SSE42-NEXT: pslld $31, %xmm2 7483; SSE42-NEXT: psrad $31, %xmm2 7484; SSE42-NEXT: pshufb %xmm7, %xmm2 7485; SSE42-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0] 7486; SSE42-NEXT: psllw $15, %xmm2 7487; SSE42-NEXT: psraw $15, %xmm2 7488; SSE42-NEXT: pshufb %xmm4, %xmm2 7489; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm11 7490; SSE42-NEXT: pshufd {{.*#+}} xmm1 = xmm11[0,1,0,2] 7491; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm10 7492; SSE42-NEXT: pshufd {{.*#+}} xmm3 = xmm10[0,2,2,3] 7493; SSE42-NEXT: pblendw {{.*#+}} xmm3 = xmm3[0,1,2,3],xmm1[4,5,6,7] 7494; SSE42-NEXT: pslld $31, %xmm3 7495; SSE42-NEXT: psrad $31, %xmm3 7496; SSE42-NEXT: pshufb %xmm7, %xmm3 7497; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm9 7498; SSE42-NEXT: pshufd {{.*#+}} xmm5 = xmm9[0,1,0,2] 7499; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm1 7500; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm1 7501; SSE42-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] 7502; SSE42-NEXT: pblendw {{.*#+}} xmm1 = xmm1[0,1,2,3],xmm5[4,5,6,7] 7503; SSE42-NEXT: pslld $31, %xmm1 7504; SSE42-NEXT: psrad $31, %xmm1 7505; SSE42-NEXT: pshufb %xmm7, %xmm1 7506; SSE42-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm3[0] 7507; SSE42-NEXT: psllw $15, %xmm1 7508; SSE42-NEXT: psraw $15, %xmm1 7509; SSE42-NEXT: pshufb %xmm4, %xmm1 7510; SSE42-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0] 7511; SSE42-NEXT: pextrb $15, %xmm1, %eax 7512; SSE42-NEXT: andb $1, %al 7513; SSE42-NEXT: movb %al, 2(%rdi) 7514; SSE42-NEXT: pextrb $14, %xmm1, %eax 7515; SSE42-NEXT: andb $1, %al 7516; SSE42-NEXT: movb %al, 2(%rdi) 7517; SSE42-NEXT: pextrb $13, %xmm1, %eax 7518; SSE42-NEXT: andb $1, %al 7519; SSE42-NEXT: movb %al, 2(%rdi) 7520; SSE42-NEXT: pextrb $12, %xmm1, %eax 7521; SSE42-NEXT: andb $1, %al 7522; SSE42-NEXT: movb %al, 2(%rdi) 7523; SSE42-NEXT: pextrb $11, %xmm1, %eax 7524; SSE42-NEXT: andb $1, %al 7525; SSE42-NEXT: movb %al, 2(%rdi) 7526; SSE42-NEXT: pextrb $10, %xmm1, %eax 7527; SSE42-NEXT: andb $1, %al 7528; SSE42-NEXT: movb %al, 2(%rdi) 7529; SSE42-NEXT: pextrb $9, %xmm1, %eax 7530; SSE42-NEXT: andb $1, %al 7531; SSE42-NEXT: movb %al, 2(%rdi) 7532; SSE42-NEXT: pextrb $8, %xmm1, %eax 7533; SSE42-NEXT: andb $1, %al 7534; SSE42-NEXT: movb %al, 2(%rdi) 7535; SSE42-NEXT: pextrb $7, %xmm1, %eax 7536; SSE42-NEXT: andb $1, %al 7537; SSE42-NEXT: movb %al, 2(%rdi) 7538; SSE42-NEXT: pextrb $6, %xmm1, %eax 7539; SSE42-NEXT: andb $1, %al 7540; SSE42-NEXT: movb %al, 2(%rdi) 7541; SSE42-NEXT: pextrb $5, %xmm1, %eax 7542; SSE42-NEXT: andb $1, %al 7543; SSE42-NEXT: movb %al, 2(%rdi) 7544; SSE42-NEXT: pextrb $4, %xmm1, %eax 7545; SSE42-NEXT: andb $1, %al 7546; SSE42-NEXT: movb %al, 2(%rdi) 7547; SSE42-NEXT: pextrb $3, %xmm1, %eax 7548; SSE42-NEXT: andb $1, %al 7549; SSE42-NEXT: movb %al, 2(%rdi) 7550; SSE42-NEXT: pextrb $2, %xmm1, %eax 7551; SSE42-NEXT: andb $1, %al 7552; SSE42-NEXT: movb %al, 2(%rdi) 7553; SSE42-NEXT: pextrb $1, %xmm1, %eax 7554; SSE42-NEXT: andb $1, %al 7555; SSE42-NEXT: movb %al, 2(%rdi) 7556; SSE42-NEXT: pextrb $0, %xmm1, %eax 7557; SSE42-NEXT: andb $1, %al 7558; SSE42-NEXT: movb %al, 2(%rdi) 7559; SSE42-NEXT: pextrb $15, %xmm0, %eax 7560; SSE42-NEXT: andb $1, %al 7561; SSE42-NEXT: movb %al, (%rdi) 7562; SSE42-NEXT: pextrb $14, %xmm0, %eax 7563; SSE42-NEXT: andb $1, %al 7564; SSE42-NEXT: movb %al, (%rdi) 7565; SSE42-NEXT: pextrb $13, %xmm0, %eax 7566; SSE42-NEXT: andb $1, %al 7567; SSE42-NEXT: movb %al, (%rdi) 7568; SSE42-NEXT: pextrb $12, %xmm0, %eax 7569; SSE42-NEXT: andb $1, %al 7570; SSE42-NEXT: movb %al, (%rdi) 7571; SSE42-NEXT: pextrb $11, %xmm0, %eax 7572; SSE42-NEXT: andb $1, %al 7573; SSE42-NEXT: movb %al, (%rdi) 7574; SSE42-NEXT: pextrb $10, %xmm0, %eax 7575; SSE42-NEXT: andb $1, %al 7576; SSE42-NEXT: movb %al, (%rdi) 7577; SSE42-NEXT: pextrb $9, %xmm0, %eax 7578; SSE42-NEXT: andb $1, %al 7579; SSE42-NEXT: movb %al, (%rdi) 7580; SSE42-NEXT: pextrb $8, %xmm0, %eax 7581; SSE42-NEXT: andb $1, %al 7582; SSE42-NEXT: movb %al, (%rdi) 7583; SSE42-NEXT: pextrb $7, %xmm0, %eax 7584; SSE42-NEXT: andb $1, %al 7585; SSE42-NEXT: movb %al, (%rdi) 7586; SSE42-NEXT: pextrb $6, %xmm0, %eax 7587; SSE42-NEXT: andb $1, %al 7588; SSE42-NEXT: movb %al, (%rdi) 7589; SSE42-NEXT: pextrb $5, %xmm0, %eax 7590; SSE42-NEXT: andb $1, %al 7591; SSE42-NEXT: movb %al, (%rdi) 7592; SSE42-NEXT: pextrb $4, %xmm0, %eax 7593; SSE42-NEXT: andb $1, %al 7594; SSE42-NEXT: movb %al, (%rdi) 7595; SSE42-NEXT: pextrb $3, %xmm0, %eax 7596; SSE42-NEXT: andb $1, %al 7597; SSE42-NEXT: movb %al, (%rdi) 7598; SSE42-NEXT: pextrb $2, %xmm0, %eax 7599; SSE42-NEXT: andb $1, %al 7600; SSE42-NEXT: movb %al, (%rdi) 7601; SSE42-NEXT: pextrb $1, %xmm0, %eax 7602; SSE42-NEXT: andb $1, %al 7603; SSE42-NEXT: movb %al, (%rdi) 7604; SSE42-NEXT: pextrb $0, %xmm0, %eax 7605; SSE42-NEXT: andb $1, %al 7606; SSE42-NEXT: movb %al, (%rdi) 7607; SSE42-NEXT: movq %rdi, %rax 7608; SSE42-NEXT: retq 7609; 7610; AVX1-LABEL: test_cmp_v32i64: 7611; AVX1: # BB#0: 7612; AVX1-NEXT: pushq %rbp 7613; AVX1-NEXT: movq %rsp, %rbp 7614; AVX1-NEXT: andq $-32, %rsp 7615; AVX1-NEXT: subq $32, %rsp 7616; AVX1-NEXT: vmovaps 240(%rbp), %ymm8 7617; AVX1-NEXT: vextractf128 $1, %ymm8, %xmm9 7618; AVX1-NEXT: vextractf128 $1, %ymm7, %xmm10 7619; AVX1-NEXT: vpcmpgtq %xmm9, %xmm10, %xmm9 7620; AVX1-NEXT: vmovaps 208(%rbp), %ymm10 7621; AVX1-NEXT: vpcmpgtq %xmm8, %xmm7, %xmm7 7622; AVX1-NEXT: vpacksswb %xmm9, %xmm7, %xmm8 7623; AVX1-NEXT: vextractf128 $1, %ymm10, %xmm9 7624; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm7 7625; AVX1-NEXT: vpcmpgtq %xmm9, %xmm7, %xmm7 7626; AVX1-NEXT: vpcmpgtq %xmm10, %xmm6, %xmm6 7627; AVX1-NEXT: vmovaps 176(%rbp), %ymm9 7628; AVX1-NEXT: vpacksswb %xmm7, %xmm6, %xmm6 7629; AVX1-NEXT: vpacksswb %xmm8, %xmm6, %xmm8 7630; AVX1-NEXT: vextractf128 $1, %ymm9, %xmm7 7631; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm6 7632; AVX1-NEXT: vpcmpgtq %xmm7, %xmm6, %xmm6 7633; AVX1-NEXT: vmovaps 144(%rbp), %ymm10 7634; AVX1-NEXT: vpcmpgtq %xmm9, %xmm5, %xmm5 7635; AVX1-NEXT: vpacksswb %xmm6, %xmm5, %xmm5 7636; AVX1-NEXT: vextractf128 $1, %ymm10, %xmm6 7637; AVX1-NEXT: vextractf128 $1, %ymm4, %xmm7 7638; AVX1-NEXT: vpcmpgtq %xmm6, %xmm7, %xmm6 7639; AVX1-NEXT: vpcmpgtq %xmm10, %xmm4, %xmm4 7640; AVX1-NEXT: vpacksswb %xmm6, %xmm4, %xmm4 7641; AVX1-NEXT: vmovaps 112(%rbp), %ymm6 7642; AVX1-NEXT: vpacksswb %xmm5, %xmm4, %xmm4 7643; AVX1-NEXT: vpacksswb %xmm8, %xmm4, %xmm4 7644; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm5 7645; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm7 7646; AVX1-NEXT: vpcmpgtq %xmm5, %xmm7, %xmm5 7647; AVX1-NEXT: vmovaps 80(%rbp), %ymm7 7648; AVX1-NEXT: vpcmpgtq %xmm6, %xmm3, %xmm3 7649; AVX1-NEXT: vpacksswb %xmm5, %xmm3, %xmm3 7650; AVX1-NEXT: vextractf128 $1, %ymm7, %xmm5 7651; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm6 7652; AVX1-NEXT: vpcmpgtq %xmm5, %xmm6, %xmm5 7653; AVX1-NEXT: vpcmpgtq %xmm7, %xmm2, %xmm2 7654; AVX1-NEXT: vmovaps 48(%rbp), %ymm6 7655; AVX1-NEXT: vpacksswb %xmm5, %xmm2, %xmm2 7656; AVX1-NEXT: vpacksswb %xmm3, %xmm2, %xmm2 7657; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm3 7658; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5 7659; AVX1-NEXT: vpcmpgtq %xmm3, %xmm5, %xmm3 7660; AVX1-NEXT: vmovaps 16(%rbp), %ymm5 7661; AVX1-NEXT: vpcmpgtq %xmm6, %xmm1, %xmm1 7662; AVX1-NEXT: vpacksswb %xmm3, %xmm1, %xmm1 7663; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm3 7664; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm6 7665; AVX1-NEXT: vpcmpgtq %xmm3, %xmm6, %xmm3 7666; AVX1-NEXT: vpcmpgtq %xmm5, %xmm0, %xmm0 7667; AVX1-NEXT: vpacksswb %xmm3, %xmm0, %xmm0 7668; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 7669; AVX1-NEXT: vpacksswb %xmm2, %xmm0, %xmm0 7670; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm0 7671; AVX1-NEXT: movq %rbp, %rsp 7672; AVX1-NEXT: popq %rbp 7673; AVX1-NEXT: retq 7674; 7675; AVX2-LABEL: test_cmp_v32i64: 7676; AVX2: # BB#0: 7677; AVX2-NEXT: pushq %rbp 7678; AVX2-NEXT: movq %rsp, %rbp 7679; AVX2-NEXT: andq $-32, %rsp 7680; AVX2-NEXT: subq $32, %rsp 7681; AVX2-NEXT: vpcmpgtq 240(%rbp), %ymm7, %ymm7 7682; AVX2-NEXT: vpcmpgtq 208(%rbp), %ymm6, %ymm6 7683; AVX2-NEXT: vpacksswb %ymm7, %ymm6, %ymm6 7684; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,2,1,3] 7685; AVX2-NEXT: vpcmpgtq 176(%rbp), %ymm5, %ymm5 7686; AVX2-NEXT: vpcmpgtq 144(%rbp), %ymm4, %ymm4 7687; AVX2-NEXT: vpacksswb %ymm5, %ymm4, %ymm4 7688; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,2,1,3] 7689; AVX2-NEXT: vpacksswb %ymm6, %ymm4, %ymm4 7690; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,2,1,3] 7691; AVX2-NEXT: vpcmpgtq 112(%rbp), %ymm3, %ymm3 7692; AVX2-NEXT: vpcmpgtq 80(%rbp), %ymm2, %ymm2 7693; AVX2-NEXT: vpacksswb %ymm3, %ymm2, %ymm2 7694; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,1,3] 7695; AVX2-NEXT: vpcmpgtq 48(%rbp), %ymm1, %ymm1 7696; AVX2-NEXT: vpcmpgtq 16(%rbp), %ymm0, %ymm0 7697; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 7698; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 7699; AVX2-NEXT: vpacksswb %ymm2, %ymm0, %ymm0 7700; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 7701; AVX2-NEXT: vpacksswb %ymm4, %ymm0, %ymm0 7702; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 7703; AVX2-NEXT: movq %rbp, %rsp 7704; AVX2-NEXT: popq %rbp 7705; AVX2-NEXT: retq 7706; 7707; AVX512-LABEL: test_cmp_v32i64: 7708; AVX512: # BB#0: 7709; AVX512-NEXT: vextracti32x4 $3, %zmm4, %xmm8 7710; AVX512-NEXT: vpextrq $1, %xmm8, %rcx 7711; AVX512-NEXT: vextracti32x4 $3, %zmm0, %xmm9 7712; AVX512-NEXT: vpextrq $1, %xmm9, %rdx 7713; AVX512-NEXT: xorl %eax, %eax 7714; AVX512-NEXT: cmpq %rcx, %rdx 7715; AVX512-NEXT: movq $-1, %rcx 7716; AVX512-NEXT: movl $0, %edx 7717; AVX512-NEXT: cmovgq %rcx, %rdx 7718; AVX512-NEXT: vmovq %rdx, %xmm10 7719; AVX512-NEXT: vmovq %xmm8, %rdx 7720; AVX512-NEXT: vmovq %xmm9, %rsi 7721; AVX512-NEXT: cmpq %rdx, %rsi 7722; AVX512-NEXT: movl $0, %edx 7723; AVX512-NEXT: cmovgq %rcx, %rdx 7724; AVX512-NEXT: vmovq %rdx, %xmm8 7725; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm8 = xmm8[0],xmm10[0] 7726; AVX512-NEXT: vextracti32x4 $2, %zmm4, %xmm9 7727; AVX512-NEXT: vpextrq $1, %xmm9, %rdx 7728; AVX512-NEXT: vextracti32x4 $2, %zmm0, %xmm10 7729; AVX512-NEXT: vpextrq $1, %xmm10, %rsi 7730; AVX512-NEXT: cmpq %rdx, %rsi 7731; AVX512-NEXT: movl $0, %edx 7732; AVX512-NEXT: cmovgq %rcx, %rdx 7733; AVX512-NEXT: vmovq %rdx, %xmm11 7734; AVX512-NEXT: vmovq %xmm9, %rdx 7735; AVX512-NEXT: vmovq %xmm10, %rsi 7736; AVX512-NEXT: cmpq %rdx, %rsi 7737; AVX512-NEXT: movl $0, %edx 7738; AVX512-NEXT: cmovgq %rcx, %rdx 7739; AVX512-NEXT: vmovq %rdx, %xmm9 7740; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm11[0] 7741; AVX512-NEXT: vinserti128 $1, %xmm8, %ymm9, %ymm8 7742; AVX512-NEXT: vextracti32x4 $1, %zmm4, %xmm9 7743; AVX512-NEXT: vpextrq $1, %xmm9, %rdx 7744; AVX512-NEXT: vextracti32x4 $1, %zmm0, %xmm10 7745; AVX512-NEXT: vpextrq $1, %xmm10, %rsi 7746; AVX512-NEXT: cmpq %rdx, %rsi 7747; AVX512-NEXT: movl $0, %edx 7748; AVX512-NEXT: cmovgq %rcx, %rdx 7749; AVX512-NEXT: vmovq %rdx, %xmm11 7750; AVX512-NEXT: vmovq %xmm9, %rdx 7751; AVX512-NEXT: vmovq %xmm10, %rsi 7752; AVX512-NEXT: cmpq %rdx, %rsi 7753; AVX512-NEXT: movl $0, %edx 7754; AVX512-NEXT: cmovgq %rcx, %rdx 7755; AVX512-NEXT: vmovq %rdx, %xmm9 7756; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm11[0] 7757; AVX512-NEXT: vpextrq $1, %xmm4, %rdx 7758; AVX512-NEXT: vpextrq $1, %xmm0, %rsi 7759; AVX512-NEXT: cmpq %rdx, %rsi 7760; AVX512-NEXT: movl $0, %edx 7761; AVX512-NEXT: cmovgq %rcx, %rdx 7762; AVX512-NEXT: vmovq %rdx, %xmm10 7763; AVX512-NEXT: vmovq %xmm4, %rdx 7764; AVX512-NEXT: vmovq %xmm0, %rsi 7765; AVX512-NEXT: cmpq %rdx, %rsi 7766; AVX512-NEXT: movl $0, %edx 7767; AVX512-NEXT: cmovgq %rcx, %rdx 7768; AVX512-NEXT: vmovq %rdx, %xmm0 7769; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm10[0] 7770; AVX512-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm0 7771; AVX512-NEXT: vinserti64x4 $1, %ymm8, %zmm0, %zmm0 7772; AVX512-NEXT: vpmovqd %zmm0, %ymm8 7773; AVX512-NEXT: vextracti32x4 $3, %zmm5, %xmm4 7774; AVX512-NEXT: vpextrq $1, %xmm4, %rdx 7775; AVX512-NEXT: vextracti32x4 $3, %zmm1, %xmm0 7776; AVX512-NEXT: vpextrq $1, %xmm0, %rsi 7777; AVX512-NEXT: cmpq %rdx, %rsi 7778; AVX512-NEXT: movl $0, %edx 7779; AVX512-NEXT: cmovgq %rcx, %rdx 7780; AVX512-NEXT: vmovq %rdx, %xmm9 7781; AVX512-NEXT: vmovq %xmm4, %rdx 7782; AVX512-NEXT: vmovq %xmm0, %rsi 7783; AVX512-NEXT: cmpq %rdx, %rsi 7784; AVX512-NEXT: movl $0, %edx 7785; AVX512-NEXT: cmovgq %rcx, %rdx 7786; AVX512-NEXT: vmovq %rdx, %xmm0 7787; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm9 = xmm0[0],xmm9[0] 7788; AVX512-NEXT: vextracti32x4 $2, %zmm5, %xmm4 7789; AVX512-NEXT: vpextrq $1, %xmm4, %rdx 7790; AVX512-NEXT: vextracti32x4 $2, %zmm1, %xmm0 7791; AVX512-NEXT: vpextrq $1, %xmm0, %rsi 7792; AVX512-NEXT: cmpq %rdx, %rsi 7793; AVX512-NEXT: movl $0, %edx 7794; AVX512-NEXT: cmovgq %rcx, %rdx 7795; AVX512-NEXT: vmovq %rdx, %xmm10 7796; AVX512-NEXT: vmovq %xmm4, %rdx 7797; AVX512-NEXT: vmovq %xmm0, %rsi 7798; AVX512-NEXT: cmpq %rdx, %rsi 7799; AVX512-NEXT: movl $0, %edx 7800; AVX512-NEXT: cmovgq %rcx, %rdx 7801; AVX512-NEXT: vmovq %rdx, %xmm0 7802; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm10[0] 7803; AVX512-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm9 7804; AVX512-NEXT: vextracti32x4 $1, %zmm5, %xmm0 7805; AVX512-NEXT: vpextrq $1, %xmm0, %rdx 7806; AVX512-NEXT: vextracti32x4 $1, %zmm1, %xmm4 7807; AVX512-NEXT: vpextrq $1, %xmm4, %rsi 7808; AVX512-NEXT: cmpq %rdx, %rsi 7809; AVX512-NEXT: movl $0, %edx 7810; AVX512-NEXT: cmovgq %rcx, %rdx 7811; AVX512-NEXT: vmovq %rdx, %xmm10 7812; AVX512-NEXT: vmovq %xmm0, %rdx 7813; AVX512-NEXT: vmovq %xmm4, %rsi 7814; AVX512-NEXT: cmpq %rdx, %rsi 7815; AVX512-NEXT: movl $0, %edx 7816; AVX512-NEXT: cmovgq %rcx, %rdx 7817; AVX512-NEXT: vmovq %rdx, %xmm0 7818; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm10[0] 7819; AVX512-NEXT: vpextrq $1, %xmm5, %rdx 7820; AVX512-NEXT: vpextrq $1, %xmm1, %rsi 7821; AVX512-NEXT: cmpq %rdx, %rsi 7822; AVX512-NEXT: movl $0, %edx 7823; AVX512-NEXT: cmovgq %rcx, %rdx 7824; AVX512-NEXT: vmovq %rdx, %xmm4 7825; AVX512-NEXT: vmovq %xmm5, %rdx 7826; AVX512-NEXT: vmovq %xmm1, %rsi 7827; AVX512-NEXT: cmpq %rdx, %rsi 7828; AVX512-NEXT: movl $0, %edx 7829; AVX512-NEXT: cmovgq %rcx, %rdx 7830; AVX512-NEXT: vmovq %rdx, %xmm1 7831; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm4[0] 7832; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0 7833; AVX512-NEXT: vinserti64x4 $1, %ymm9, %zmm0, %zmm0 7834; AVX512-NEXT: vpmovqd %zmm0, %ymm0 7835; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm8, %zmm0 7836; AVX512-NEXT: vpmovdb %zmm0, %xmm8 7837; AVX512-NEXT: vextracti32x4 $3, %zmm6, %xmm1 7838; AVX512-NEXT: vpextrq $1, %xmm1, %rdx 7839; AVX512-NEXT: vextracti32x4 $3, %zmm2, %xmm4 7840; AVX512-NEXT: vpextrq $1, %xmm4, %rsi 7841; AVX512-NEXT: cmpq %rdx, %rsi 7842; AVX512-NEXT: movl $0, %edx 7843; AVX512-NEXT: cmovgq %rcx, %rdx 7844; AVX512-NEXT: vmovq %rdx, %xmm5 7845; AVX512-NEXT: vmovq %xmm1, %rdx 7846; AVX512-NEXT: vmovq %xmm4, %rsi 7847; AVX512-NEXT: cmpq %rdx, %rsi 7848; AVX512-NEXT: movl $0, %edx 7849; AVX512-NEXT: cmovgq %rcx, %rdx 7850; AVX512-NEXT: vmovq %rdx, %xmm1 7851; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm5[0] 7852; AVX512-NEXT: vextracti32x4 $2, %zmm6, %xmm4 7853; AVX512-NEXT: vpextrq $1, %xmm4, %rdx 7854; AVX512-NEXT: vextracti32x4 $2, %zmm2, %xmm5 7855; AVX512-NEXT: vpextrq $1, %xmm5, %rsi 7856; AVX512-NEXT: cmpq %rdx, %rsi 7857; AVX512-NEXT: movl $0, %edx 7858; AVX512-NEXT: cmovgq %rcx, %rdx 7859; AVX512-NEXT: vmovq %rdx, %xmm0 7860; AVX512-NEXT: vmovq %xmm4, %rdx 7861; AVX512-NEXT: vmovq %xmm5, %rsi 7862; AVX512-NEXT: cmpq %rdx, %rsi 7863; AVX512-NEXT: movl $0, %edx 7864; AVX512-NEXT: cmovgq %rcx, %rdx 7865; AVX512-NEXT: vmovq %rdx, %xmm4 7866; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm4[0],xmm0[0] 7867; AVX512-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm1 7868; AVX512-NEXT: vextracti32x4 $1, %zmm6, %xmm0 7869; AVX512-NEXT: vpextrq $1, %xmm0, %rdx 7870; AVX512-NEXT: vextracti32x4 $1, %zmm2, %xmm4 7871; AVX512-NEXT: vpextrq $1, %xmm4, %rsi 7872; AVX512-NEXT: cmpq %rdx, %rsi 7873; AVX512-NEXT: movl $0, %edx 7874; AVX512-NEXT: cmovgq %rcx, %rdx 7875; AVX512-NEXT: vmovq %rdx, %xmm5 7876; AVX512-NEXT: vmovq %xmm0, %rdx 7877; AVX512-NEXT: vmovq %xmm4, %rsi 7878; AVX512-NEXT: cmpq %rdx, %rsi 7879; AVX512-NEXT: movl $0, %edx 7880; AVX512-NEXT: cmovgq %rcx, %rdx 7881; AVX512-NEXT: vmovq %rdx, %xmm0 7882; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm5[0] 7883; AVX512-NEXT: vpextrq $1, %xmm6, %rdx 7884; AVX512-NEXT: vpextrq $1, %xmm2, %rsi 7885; AVX512-NEXT: cmpq %rdx, %rsi 7886; AVX512-NEXT: movl $0, %edx 7887; AVX512-NEXT: cmovgq %rcx, %rdx 7888; AVX512-NEXT: vmovq %rdx, %xmm4 7889; AVX512-NEXT: vmovq %xmm6, %rdx 7890; AVX512-NEXT: vmovq %xmm2, %rsi 7891; AVX512-NEXT: cmpq %rdx, %rsi 7892; AVX512-NEXT: movl $0, %edx 7893; AVX512-NEXT: cmovgq %rcx, %rdx 7894; AVX512-NEXT: vmovq %rdx, %xmm2 7895; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm4[0] 7896; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm2, %ymm0 7897; AVX512-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 7898; AVX512-NEXT: vpmovqd %zmm0, %ymm1 7899; AVX512-NEXT: vextracti32x4 $3, %zmm7, %xmm0 7900; AVX512-NEXT: vpextrq $1, %xmm0, %rdx 7901; AVX512-NEXT: vextracti32x4 $3, %zmm3, %xmm2 7902; AVX512-NEXT: vpextrq $1, %xmm2, %rsi 7903; AVX512-NEXT: cmpq %rdx, %rsi 7904; AVX512-NEXT: movl $0, %edx 7905; AVX512-NEXT: cmovgq %rcx, %rdx 7906; AVX512-NEXT: vmovq %rdx, %xmm4 7907; AVX512-NEXT: vmovq %xmm0, %rdx 7908; AVX512-NEXT: vmovq %xmm2, %rsi 7909; AVX512-NEXT: cmpq %rdx, %rsi 7910; AVX512-NEXT: movl $0, %edx 7911; AVX512-NEXT: cmovgq %rcx, %rdx 7912; AVX512-NEXT: vmovq %rdx, %xmm0 7913; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm4[0] 7914; AVX512-NEXT: vextracti32x4 $2, %zmm7, %xmm2 7915; AVX512-NEXT: vpextrq $1, %xmm2, %rdx 7916; AVX512-NEXT: vextracti32x4 $2, %zmm3, %xmm4 7917; AVX512-NEXT: vpextrq $1, %xmm4, %rsi 7918; AVX512-NEXT: cmpq %rdx, %rsi 7919; AVX512-NEXT: movl $0, %edx 7920; AVX512-NEXT: cmovgq %rcx, %rdx 7921; AVX512-NEXT: vmovq %rdx, %xmm5 7922; AVX512-NEXT: vmovq %xmm2, %rdx 7923; AVX512-NEXT: vmovq %xmm4, %rsi 7924; AVX512-NEXT: cmpq %rdx, %rsi 7925; AVX512-NEXT: movl $0, %edx 7926; AVX512-NEXT: cmovgq %rcx, %rdx 7927; AVX512-NEXT: vmovq %rdx, %xmm2 7928; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm5[0] 7929; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm2, %ymm2 7930; AVX512-NEXT: vextracti32x4 $1, %zmm7, %xmm0 7931; AVX512-NEXT: vpextrq $1, %xmm0, %rdx 7932; AVX512-NEXT: vextracti32x4 $1, %zmm3, %xmm4 7933; AVX512-NEXT: vpextrq $1, %xmm4, %rsi 7934; AVX512-NEXT: cmpq %rdx, %rsi 7935; AVX512-NEXT: movl $0, %edx 7936; AVX512-NEXT: cmovgq %rcx, %rdx 7937; AVX512-NEXT: vmovq %rdx, %xmm5 7938; AVX512-NEXT: vmovq %xmm0, %rdx 7939; AVX512-NEXT: vmovq %xmm4, %rsi 7940; AVX512-NEXT: cmpq %rdx, %rsi 7941; AVX512-NEXT: movl $0, %edx 7942; AVX512-NEXT: cmovgq %rcx, %rdx 7943; AVX512-NEXT: vmovq %rdx, %xmm0 7944; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm5[0] 7945; AVX512-NEXT: vpextrq $1, %xmm7, %rdx 7946; AVX512-NEXT: vpextrq $1, %xmm3, %rsi 7947; AVX512-NEXT: cmpq %rdx, %rsi 7948; AVX512-NEXT: movl $0, %edx 7949; AVX512-NEXT: cmovgq %rcx, %rdx 7950; AVX512-NEXT: vmovq %rdx, %xmm4 7951; AVX512-NEXT: vmovq %xmm7, %rdx 7952; AVX512-NEXT: vmovq %xmm3, %rsi 7953; AVX512-NEXT: cmpq %rdx, %rsi 7954; AVX512-NEXT: cmovgq %rcx, %rax 7955; AVX512-NEXT: vmovq %rax, %xmm3 7956; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm4[0] 7957; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm3, %ymm0 7958; AVX512-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm0 7959; AVX512-NEXT: vpmovqd %zmm0, %ymm0 7960; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm0 7961; AVX512-NEXT: vpmovdb %zmm0, %xmm0 7962; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm8, %ymm0 7963; AVX512-NEXT: retq 7964 %1 = icmp sgt <32 x i64> %a0, %a1 7965 ret <32 x i1> %1 7966} 7967