1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=i386-unknown -mattr=+sse2 | FileCheck %s --check-prefix=X32-SSE 3; RUN: llc < %s -mtriple=i386-unknown -mattr=+avx | FileCheck %s --check-prefix=X32-AVX --check-prefix=X32-AVX1 4; RUN: llc < %s -mtriple=i386-unknown -mattr=+avx2 | FileCheck %s --check-prefix=X32-AVX --check-prefix=X32-AVX256 --check-prefix=X32-AVX2 5; RUN: llc < %s -mtriple=i386-unknown -mcpu=knl | FileCheck %s --check-prefix=X32-AVX --check-prefix=X32-AVX256 --check-prefix=X32-AVX512 --check-prefix=X32-KNL 6; RUN: llc < %s -mtriple=i386-unknown -mcpu=skx | FileCheck %s --check-prefix=X32-AVX --check-prefix=X32-AVX256 --check-prefix=X32-AVX512 --check-prefix=X32-SKX 7; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+sse2 | FileCheck %s --check-prefix=X64-SSE 8; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx | FileCheck %s --check-prefix=X64-AVX --check-prefix=X64-AVX1 9; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx2 | FileCheck %s --check-prefix=X64-AVX --check-prefix=X64-AVX256 --check-prefix=X64-AVX2 10; RUN: llc < %s -mtriple=x86_64-unknown -mcpu=knl | FileCheck %s --check-prefix=X64-AVX --check-prefix=X64-AVX256 --check-prefix=X64-AVX512 --check-prefix=X64-KNL 11; RUN: llc < %s -mtriple=x86_64-unknown -mcpu=skx | FileCheck %s --check-prefix=X64-AVX --check-prefix=X64-AVX256 --check-prefix=X64-AVX512 --check-prefix=X64-SKX 12 13define <16 x i8> @coo() nounwind { 14; X32-SSE-LABEL: coo: 15; X32-SSE: # BB#0: 16; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0 17; X32-SSE-NEXT: retl 18; 19; X32-AVX-LABEL: coo: 20; X32-AVX: # BB#0: 21; X32-AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 22; X32-AVX-NEXT: retl 23; 24; X64-SSE-LABEL: coo: 25; X64-SSE: # BB#0: 26; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0 27; X64-SSE-NEXT: retq 28; 29; X64-AVX-LABEL: coo: 30; X64-AVX: # BB#0: 31; X64-AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 32; X64-AVX-NEXT: retq 33 ret <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1> 34} 35 36define <8 x i16> @soo() nounwind { 37; X32-SSE-LABEL: soo: 38; X32-SSE: # BB#0: 39; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0 40; X32-SSE-NEXT: retl 41; 42; X32-AVX-LABEL: soo: 43; X32-AVX: # BB#0: 44; X32-AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 45; X32-AVX-NEXT: retl 46; 47; X64-SSE-LABEL: soo: 48; X64-SSE: # BB#0: 49; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0 50; X64-SSE-NEXT: retq 51; 52; X64-AVX-LABEL: soo: 53; X64-AVX: # BB#0: 54; X64-AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 55; X64-AVX-NEXT: retq 56 ret <8 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1> 57} 58 59define <4 x i32> @ioo() nounwind { 60; X32-SSE-LABEL: ioo: 61; X32-SSE: # BB#0: 62; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0 63; X32-SSE-NEXT: retl 64; 65; X32-AVX-LABEL: ioo: 66; X32-AVX: # BB#0: 67; X32-AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 68; X32-AVX-NEXT: retl 69; 70; X64-SSE-LABEL: ioo: 71; X64-SSE: # BB#0: 72; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0 73; X64-SSE-NEXT: retq 74; 75; X64-AVX-LABEL: ioo: 76; X64-AVX: # BB#0: 77; X64-AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 78; X64-AVX-NEXT: retq 79 ret <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1> 80} 81 82define <2 x i64> @loo() nounwind { 83; X32-SSE-LABEL: loo: 84; X32-SSE: # BB#0: 85; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0 86; X32-SSE-NEXT: retl 87; 88; X32-AVX-LABEL: loo: 89; X32-AVX: # BB#0: 90; X32-AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 91; X32-AVX-NEXT: retl 92; 93; X64-SSE-LABEL: loo: 94; X64-SSE: # BB#0: 95; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0 96; X64-SSE-NEXT: retq 97; 98; X64-AVX-LABEL: loo: 99; X64-AVX: # BB#0: 100; X64-AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 101; X64-AVX-NEXT: retq 102 ret <2 x i64> <i64 -1, i64 -1> 103} 104 105define <2 x double> @doo() nounwind { 106; X32-SSE-LABEL: doo: 107; X32-SSE: # BB#0: 108; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0 109; X32-SSE-NEXT: retl 110; 111; X32-AVX-LABEL: doo: 112; X32-AVX: # BB#0: 113; X32-AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 114; X32-AVX-NEXT: retl 115; 116; X64-SSE-LABEL: doo: 117; X64-SSE: # BB#0: 118; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0 119; X64-SSE-NEXT: retq 120; 121; X64-AVX-LABEL: doo: 122; X64-AVX: # BB#0: 123; X64-AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 124; X64-AVX-NEXT: retq 125 ret <2 x double> <double 0xffffffffffffffff, double 0xffffffffffffffff> 126} 127 128define <4 x float> @foo() nounwind { 129; X32-SSE-LABEL: foo: 130; X32-SSE: # BB#0: 131; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0 132; X32-SSE-NEXT: retl 133; 134; X32-AVX-LABEL: foo: 135; X32-AVX: # BB#0: 136; X32-AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 137; X32-AVX-NEXT: retl 138; 139; X64-SSE-LABEL: foo: 140; X64-SSE: # BB#0: 141; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0 142; X64-SSE-NEXT: retq 143; 144; X64-AVX-LABEL: foo: 145; X64-AVX: # BB#0: 146; X64-AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 147; X64-AVX-NEXT: retq 148 ret <4 x float> <float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000> 149} 150 151define <32 x i8> @coo256() nounwind { 152; X32-SSE-LABEL: coo256: 153; X32-SSE: # BB#0: 154; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0 155; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1 156; X32-SSE-NEXT: retl 157; 158; X32-AVX1-LABEL: coo256: 159; X32-AVX1: # BB#0: 160; X32-AVX1-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 161; X32-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 162; X32-AVX1-NEXT: retl 163; 164; X32-AVX256-LABEL: coo256: 165; X32-AVX256: # BB#0: 166; X32-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 167; X32-AVX256-NEXT: retl 168; 169; X64-SSE-LABEL: coo256: 170; X64-SSE: # BB#0: 171; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0 172; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1 173; X64-SSE-NEXT: retq 174; 175; X64-AVX1-LABEL: coo256: 176; X64-AVX1: # BB#0: 177; X64-AVX1-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 178; X64-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 179; X64-AVX1-NEXT: retq 180; 181; X64-AVX256-LABEL: coo256: 182; X64-AVX256: # BB#0: 183; X64-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 184; X64-AVX256-NEXT: retq 185 ret <32 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1> 186} 187 188define <16 x i16> @soo256() nounwind { 189; X32-SSE-LABEL: soo256: 190; X32-SSE: # BB#0: 191; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0 192; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1 193; X32-SSE-NEXT: retl 194; 195; X32-AVX1-LABEL: soo256: 196; X32-AVX1: # BB#0: 197; X32-AVX1-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 198; X32-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 199; X32-AVX1-NEXT: retl 200; 201; X32-AVX256-LABEL: soo256: 202; X32-AVX256: # BB#0: 203; X32-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 204; X32-AVX256-NEXT: retl 205; 206; X64-SSE-LABEL: soo256: 207; X64-SSE: # BB#0: 208; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0 209; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1 210; X64-SSE-NEXT: retq 211; 212; X64-AVX1-LABEL: soo256: 213; X64-AVX1: # BB#0: 214; X64-AVX1-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 215; X64-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 216; X64-AVX1-NEXT: retq 217; 218; X64-AVX256-LABEL: soo256: 219; X64-AVX256: # BB#0: 220; X64-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 221; X64-AVX256-NEXT: retq 222 ret <16 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1> 223} 224 225define <8 x i32> @ioo256() nounwind { 226; X32-SSE-LABEL: ioo256: 227; X32-SSE: # BB#0: 228; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0 229; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1 230; X32-SSE-NEXT: retl 231; 232; X32-AVX1-LABEL: ioo256: 233; X32-AVX1: # BB#0: 234; X32-AVX1-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 235; X32-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 236; X32-AVX1-NEXT: retl 237; 238; X32-AVX256-LABEL: ioo256: 239; X32-AVX256: # BB#0: 240; X32-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 241; X32-AVX256-NEXT: retl 242; 243; X64-SSE-LABEL: ioo256: 244; X64-SSE: # BB#0: 245; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0 246; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1 247; X64-SSE-NEXT: retq 248; 249; X64-AVX1-LABEL: ioo256: 250; X64-AVX1: # BB#0: 251; X64-AVX1-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 252; X64-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 253; X64-AVX1-NEXT: retq 254; 255; X64-AVX256-LABEL: ioo256: 256; X64-AVX256: # BB#0: 257; X64-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 258; X64-AVX256-NEXT: retq 259 ret <8 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1> 260} 261 262define <4 x i64> @loo256() nounwind { 263; X32-SSE-LABEL: loo256: 264; X32-SSE: # BB#0: 265; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0 266; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1 267; X32-SSE-NEXT: retl 268; 269; X32-AVX1-LABEL: loo256: 270; X32-AVX1: # BB#0: 271; X32-AVX1-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 272; X32-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 273; X32-AVX1-NEXT: retl 274; 275; X32-AVX256-LABEL: loo256: 276; X32-AVX256: # BB#0: 277; X32-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 278; X32-AVX256-NEXT: retl 279; 280; X64-SSE-LABEL: loo256: 281; X64-SSE: # BB#0: 282; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0 283; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1 284; X64-SSE-NEXT: retq 285; 286; X64-AVX1-LABEL: loo256: 287; X64-AVX1: # BB#0: 288; X64-AVX1-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 289; X64-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 290; X64-AVX1-NEXT: retq 291; 292; X64-AVX256-LABEL: loo256: 293; X64-AVX256: # BB#0: 294; X64-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 295; X64-AVX256-NEXT: retq 296 ret <4 x i64> <i64 -1, i64 -1, i64 -1, i64 -1> 297} 298 299define <4 x double> @doo256() nounwind { 300; X32-SSE-LABEL: doo256: 301; X32-SSE: # BB#0: 302; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0 303; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1 304; X32-SSE-NEXT: retl 305; 306; X32-AVX1-LABEL: doo256: 307; X32-AVX1: # BB#0: 308; X32-AVX1-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 309; X32-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 310; X32-AVX1-NEXT: retl 311; 312; X32-AVX256-LABEL: doo256: 313; X32-AVX256: # BB#0: 314; X32-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 315; X32-AVX256-NEXT: retl 316; 317; X64-SSE-LABEL: doo256: 318; X64-SSE: # BB#0: 319; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0 320; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1 321; X64-SSE-NEXT: retq 322; 323; X64-AVX1-LABEL: doo256: 324; X64-AVX1: # BB#0: 325; X64-AVX1-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 326; X64-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 327; X64-AVX1-NEXT: retq 328; 329; X64-AVX256-LABEL: doo256: 330; X64-AVX256: # BB#0: 331; X64-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 332; X64-AVX256-NEXT: retq 333 ret <4 x double> <double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff> 334} 335 336define <8 x float> @foo256() nounwind { 337; X32-SSE-LABEL: foo256: 338; X32-SSE: # BB#0: 339; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0 340; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1 341; X32-SSE-NEXT: retl 342; 343; X32-AVX1-LABEL: foo256: 344; X32-AVX1: # BB#0: 345; X32-AVX1-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 346; X32-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 347; X32-AVX1-NEXT: retl 348; 349; X32-AVX256-LABEL: foo256: 350; X32-AVX256: # BB#0: 351; X32-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 352; X32-AVX256-NEXT: retl 353; 354; X64-SSE-LABEL: foo256: 355; X64-SSE: # BB#0: 356; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0 357; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1 358; X64-SSE-NEXT: retq 359; 360; X64-AVX1-LABEL: foo256: 361; X64-AVX1: # BB#0: 362; X64-AVX1-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 363; X64-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 364; X64-AVX1-NEXT: retq 365; 366; X64-AVX256-LABEL: foo256: 367; X64-AVX256: # BB#0: 368; X64-AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 369; X64-AVX256-NEXT: retq 370 ret <8 x float> <float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000> 371} 372 373define <64 x i8> @coo512() nounwind { 374; X32-SSE-LABEL: coo512: 375; X32-SSE: # BB#0: 376; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0 377; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1 378; X32-SSE-NEXT: pcmpeqd %xmm2, %xmm2 379; X32-SSE-NEXT: pcmpeqd %xmm3, %xmm3 380; X32-SSE-NEXT: retl 381; 382; X32-AVX1-LABEL: coo512: 383; X32-AVX1: # BB#0: 384; X32-AVX1-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 385; X32-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 386; X32-AVX1-NEXT: vmovaps %ymm0, %ymm1 387; X32-AVX1-NEXT: retl 388; 389; X32-AVX2-LABEL: coo512: 390; X32-AVX2: # BB#0: 391; X32-AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 392; X32-AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 393; X32-AVX2-NEXT: retl 394; 395; X32-KNL-LABEL: coo512: 396; X32-KNL: # BB#0: 397; X32-KNL-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 398; X32-KNL-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 399; X32-KNL-NEXT: retl 400; 401; X32-SKX-LABEL: coo512: 402; X32-SKX: # BB#0: 403; X32-SKX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 404; X32-SKX-NEXT: retl 405; 406; X64-SSE-LABEL: coo512: 407; X64-SSE: # BB#0: 408; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0 409; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1 410; X64-SSE-NEXT: pcmpeqd %xmm2, %xmm2 411; X64-SSE-NEXT: pcmpeqd %xmm3, %xmm3 412; X64-SSE-NEXT: retq 413; 414; X64-AVX1-LABEL: coo512: 415; X64-AVX1: # BB#0: 416; X64-AVX1-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 417; X64-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 418; X64-AVX1-NEXT: vmovaps %ymm0, %ymm1 419; X64-AVX1-NEXT: retq 420; 421; X64-AVX2-LABEL: coo512: 422; X64-AVX2: # BB#0: 423; X64-AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 424; X64-AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 425; X64-AVX2-NEXT: retq 426; 427; X64-KNL-LABEL: coo512: 428; X64-KNL: # BB#0: 429; X64-KNL-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 430; X64-KNL-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 431; X64-KNL-NEXT: retq 432; 433; X64-SKX-LABEL: coo512: 434; X64-SKX: # BB#0: 435; X64-SKX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 436; X64-SKX-NEXT: retq 437 ret <64 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1> 438} 439 440define <32 x i16> @soo512() nounwind { 441; X32-SSE-LABEL: soo512: 442; X32-SSE: # BB#0: 443; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0 444; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1 445; X32-SSE-NEXT: pcmpeqd %xmm2, %xmm2 446; X32-SSE-NEXT: pcmpeqd %xmm3, %xmm3 447; X32-SSE-NEXT: retl 448; 449; X32-AVX1-LABEL: soo512: 450; X32-AVX1: # BB#0: 451; X32-AVX1-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 452; X32-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 453; X32-AVX1-NEXT: vmovaps %ymm0, %ymm1 454; X32-AVX1-NEXT: retl 455; 456; X32-AVX2-LABEL: soo512: 457; X32-AVX2: # BB#0: 458; X32-AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 459; X32-AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 460; X32-AVX2-NEXT: retl 461; 462; X32-KNL-LABEL: soo512: 463; X32-KNL: # BB#0: 464; X32-KNL-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 465; X32-KNL-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 466; X32-KNL-NEXT: retl 467; 468; X32-SKX-LABEL: soo512: 469; X32-SKX: # BB#0: 470; X32-SKX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 471; X32-SKX-NEXT: retl 472; 473; X64-SSE-LABEL: soo512: 474; X64-SSE: # BB#0: 475; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0 476; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1 477; X64-SSE-NEXT: pcmpeqd %xmm2, %xmm2 478; X64-SSE-NEXT: pcmpeqd %xmm3, %xmm3 479; X64-SSE-NEXT: retq 480; 481; X64-AVX1-LABEL: soo512: 482; X64-AVX1: # BB#0: 483; X64-AVX1-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 484; X64-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 485; X64-AVX1-NEXT: vmovaps %ymm0, %ymm1 486; X64-AVX1-NEXT: retq 487; 488; X64-AVX2-LABEL: soo512: 489; X64-AVX2: # BB#0: 490; X64-AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 491; X64-AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 492; X64-AVX2-NEXT: retq 493; 494; X64-KNL-LABEL: soo512: 495; X64-KNL: # BB#0: 496; X64-KNL-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 497; X64-KNL-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 498; X64-KNL-NEXT: retq 499; 500; X64-SKX-LABEL: soo512: 501; X64-SKX: # BB#0: 502; X64-SKX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 503; X64-SKX-NEXT: retq 504 ret <32 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1> 505} 506 507define <16 x i32> @ioo512() nounwind { 508; X32-SSE-LABEL: ioo512: 509; X32-SSE: # BB#0: 510; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0 511; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1 512; X32-SSE-NEXT: pcmpeqd %xmm2, %xmm2 513; X32-SSE-NEXT: pcmpeqd %xmm3, %xmm3 514; X32-SSE-NEXT: retl 515; 516; X32-AVX1-LABEL: ioo512: 517; X32-AVX1: # BB#0: 518; X32-AVX1-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 519; X32-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 520; X32-AVX1-NEXT: vmovaps %ymm0, %ymm1 521; X32-AVX1-NEXT: retl 522; 523; X32-AVX2-LABEL: ioo512: 524; X32-AVX2: # BB#0: 525; X32-AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 526; X32-AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 527; X32-AVX2-NEXT: retl 528; 529; X32-AVX512-LABEL: ioo512: 530; X32-AVX512: # BB#0: 531; X32-AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 532; X32-AVX512-NEXT: retl 533; 534; X64-SSE-LABEL: ioo512: 535; X64-SSE: # BB#0: 536; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0 537; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1 538; X64-SSE-NEXT: pcmpeqd %xmm2, %xmm2 539; X64-SSE-NEXT: pcmpeqd %xmm3, %xmm3 540; X64-SSE-NEXT: retq 541; 542; X64-AVX1-LABEL: ioo512: 543; X64-AVX1: # BB#0: 544; X64-AVX1-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 545; X64-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 546; X64-AVX1-NEXT: vmovaps %ymm0, %ymm1 547; X64-AVX1-NEXT: retq 548; 549; X64-AVX2-LABEL: ioo512: 550; X64-AVX2: # BB#0: 551; X64-AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 552; X64-AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 553; X64-AVX2-NEXT: retq 554; 555; X64-AVX512-LABEL: ioo512: 556; X64-AVX512: # BB#0: 557; X64-AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 558; X64-AVX512-NEXT: retq 559 ret <16 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1> 560} 561 562define <8 x i64> @loo512() nounwind { 563; X32-SSE-LABEL: loo512: 564; X32-SSE: # BB#0: 565; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0 566; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1 567; X32-SSE-NEXT: pcmpeqd %xmm2, %xmm2 568; X32-SSE-NEXT: pcmpeqd %xmm3, %xmm3 569; X32-SSE-NEXT: retl 570; 571; X32-AVX1-LABEL: loo512: 572; X32-AVX1: # BB#0: 573; X32-AVX1-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 574; X32-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 575; X32-AVX1-NEXT: vmovaps %ymm0, %ymm1 576; X32-AVX1-NEXT: retl 577; 578; X32-AVX2-LABEL: loo512: 579; X32-AVX2: # BB#0: 580; X32-AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 581; X32-AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 582; X32-AVX2-NEXT: retl 583; 584; X32-AVX512-LABEL: loo512: 585; X32-AVX512: # BB#0: 586; X32-AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 587; X32-AVX512-NEXT: retl 588; 589; X64-SSE-LABEL: loo512: 590; X64-SSE: # BB#0: 591; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0 592; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1 593; X64-SSE-NEXT: pcmpeqd %xmm2, %xmm2 594; X64-SSE-NEXT: pcmpeqd %xmm3, %xmm3 595; X64-SSE-NEXT: retq 596; 597; X64-AVX1-LABEL: loo512: 598; X64-AVX1: # BB#0: 599; X64-AVX1-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 600; X64-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 601; X64-AVX1-NEXT: vmovaps %ymm0, %ymm1 602; X64-AVX1-NEXT: retq 603; 604; X64-AVX2-LABEL: loo512: 605; X64-AVX2: # BB#0: 606; X64-AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 607; X64-AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 608; X64-AVX2-NEXT: retq 609; 610; X64-AVX512-LABEL: loo512: 611; X64-AVX512: # BB#0: 612; X64-AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 613; X64-AVX512-NEXT: retq 614 ret <8 x i64> <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1> 615} 616 617define <8 x double> @doo512() nounwind { 618; X32-SSE-LABEL: doo512: 619; X32-SSE: # BB#0: 620; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0 621; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1 622; X32-SSE-NEXT: pcmpeqd %xmm2, %xmm2 623; X32-SSE-NEXT: pcmpeqd %xmm3, %xmm3 624; X32-SSE-NEXT: retl 625; 626; X32-AVX1-LABEL: doo512: 627; X32-AVX1: # BB#0: 628; X32-AVX1-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 629; X32-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 630; X32-AVX1-NEXT: vmovaps %ymm0, %ymm1 631; X32-AVX1-NEXT: retl 632; 633; X32-AVX2-LABEL: doo512: 634; X32-AVX2: # BB#0: 635; X32-AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 636; X32-AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 637; X32-AVX2-NEXT: retl 638; 639; X32-AVX512-LABEL: doo512: 640; X32-AVX512: # BB#0: 641; X32-AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 642; X32-AVX512-NEXT: retl 643; 644; X64-SSE-LABEL: doo512: 645; X64-SSE: # BB#0: 646; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0 647; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1 648; X64-SSE-NEXT: pcmpeqd %xmm2, %xmm2 649; X64-SSE-NEXT: pcmpeqd %xmm3, %xmm3 650; X64-SSE-NEXT: retq 651; 652; X64-AVX1-LABEL: doo512: 653; X64-AVX1: # BB#0: 654; X64-AVX1-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 655; X64-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 656; X64-AVX1-NEXT: vmovaps %ymm0, %ymm1 657; X64-AVX1-NEXT: retq 658; 659; X64-AVX2-LABEL: doo512: 660; X64-AVX2: # BB#0: 661; X64-AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 662; X64-AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 663; X64-AVX2-NEXT: retq 664; 665; X64-AVX512-LABEL: doo512: 666; X64-AVX512: # BB#0: 667; X64-AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 668; X64-AVX512-NEXT: retq 669 ret <8 x double> <double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff> 670} 671 672define <16 x float> @foo512() nounwind { 673; X32-SSE-LABEL: foo512: 674; X32-SSE: # BB#0: 675; X32-SSE-NEXT: pcmpeqd %xmm0, %xmm0 676; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1 677; X32-SSE-NEXT: pcmpeqd %xmm2, %xmm2 678; X32-SSE-NEXT: pcmpeqd %xmm3, %xmm3 679; X32-SSE-NEXT: retl 680; 681; X32-AVX1-LABEL: foo512: 682; X32-AVX1: # BB#0: 683; X32-AVX1-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 684; X32-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 685; X32-AVX1-NEXT: vmovaps %ymm0, %ymm1 686; X32-AVX1-NEXT: retl 687; 688; X32-AVX2-LABEL: foo512: 689; X32-AVX2: # BB#0: 690; X32-AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 691; X32-AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 692; X32-AVX2-NEXT: retl 693; 694; X32-AVX512-LABEL: foo512: 695; X32-AVX512: # BB#0: 696; X32-AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 697; X32-AVX512-NEXT: retl 698; 699; X64-SSE-LABEL: foo512: 700; X64-SSE: # BB#0: 701; X64-SSE-NEXT: pcmpeqd %xmm0, %xmm0 702; X64-SSE-NEXT: pcmpeqd %xmm1, %xmm1 703; X64-SSE-NEXT: pcmpeqd %xmm2, %xmm2 704; X64-SSE-NEXT: pcmpeqd %xmm3, %xmm3 705; X64-SSE-NEXT: retq 706; 707; X64-AVX1-LABEL: foo512: 708; X64-AVX1: # BB#0: 709; X64-AVX1-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 710; X64-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 711; X64-AVX1-NEXT: vmovaps %ymm0, %ymm1 712; X64-AVX1-NEXT: retq 713; 714; X64-AVX2-LABEL: foo512: 715; X64-AVX2: # BB#0: 716; X64-AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 717; X64-AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 718; X64-AVX2-NEXT: retq 719; 720; X64-AVX512-LABEL: foo512: 721; X64-AVX512: # BB#0: 722; X64-AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 723; X64-AVX512-NEXT: retq 724 ret <16 x float> <float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000> 725} 726