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=SSE 3; RUN: llc < %s -mtriple=i386-unknown -mattr=+avx | FileCheck %s --check-prefixes=AVX,AVX1 4; RUN: llc < %s -mtriple=i386-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVX256,AVX2 5; RUN: llc < %s -mtriple=i386-unknown -mcpu=knl | FileCheck %s --check-prefixes=AVX,AVX256,AVX512 6; RUN: llc < %s -mtriple=i386-unknown -mcpu=skx | FileCheck %s --check-prefixes=AVX,AVX256,AVX512 7; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+sse2 | FileCheck %s --check-prefix=SSE 8; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx | FileCheck %s --check-prefixes=AVX,AVX1 9; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVX256,AVX2 10; RUN: llc < %s -mtriple=x86_64-unknown -mcpu=knl | FileCheck %s --check-prefixes=AVX,AVX256,AVX512 11; RUN: llc < %s -mtriple=x86_64-unknown -mcpu=skx | FileCheck %s --check-prefixes=AVX,AVX256,AVX512 12 13define <16 x i8> @allones_v16i8() nounwind { 14; SSE-LABEL: allones_v16i8: 15; SSE: # %bb.0: 16; SSE-NEXT: pcmpeqd %xmm0, %xmm0 17; SSE-NEXT: ret{{[l|q]}} 18; 19; AVX-LABEL: allones_v16i8: 20; AVX: # %bb.0: 21; AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 22; AVX-NEXT: ret{{[l|q]}} 23 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> 24} 25 26define <8 x i16> @allones_v8i16() nounwind { 27; SSE-LABEL: allones_v8i16: 28; SSE: # %bb.0: 29; SSE-NEXT: pcmpeqd %xmm0, %xmm0 30; SSE-NEXT: ret{{[l|q]}} 31; 32; AVX-LABEL: allones_v8i16: 33; AVX: # %bb.0: 34; AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 35; AVX-NEXT: ret{{[l|q]}} 36 ret <8 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1> 37} 38 39define <4 x i32> @allones_v4i32() nounwind { 40; SSE-LABEL: allones_v4i32: 41; SSE: # %bb.0: 42; SSE-NEXT: pcmpeqd %xmm0, %xmm0 43; SSE-NEXT: ret{{[l|q]}} 44; 45; AVX-LABEL: allones_v4i32: 46; AVX: # %bb.0: 47; AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 48; AVX-NEXT: ret{{[l|q]}} 49 ret <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1> 50} 51 52define <2 x i64> @allones_v2i64() nounwind { 53; SSE-LABEL: allones_v2i64: 54; SSE: # %bb.0: 55; SSE-NEXT: pcmpeqd %xmm0, %xmm0 56; SSE-NEXT: ret{{[l|q]}} 57; 58; AVX-LABEL: allones_v2i64: 59; AVX: # %bb.0: 60; AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 61; AVX-NEXT: ret{{[l|q]}} 62 ret <2 x i64> <i64 -1, i64 -1> 63} 64 65define <2 x double> @allones_v2f64() nounwind { 66; SSE-LABEL: allones_v2f64: 67; SSE: # %bb.0: 68; SSE-NEXT: pcmpeqd %xmm0, %xmm0 69; SSE-NEXT: ret{{[l|q]}} 70; 71; AVX-LABEL: allones_v2f64: 72; AVX: # %bb.0: 73; AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 74; AVX-NEXT: ret{{[l|q]}} 75 ret <2 x double> <double 0xffffffffffffffff, double 0xffffffffffffffff> 76} 77 78define <4 x float> @allones_v4f32() nounwind { 79; SSE-LABEL: allones_v4f32: 80; SSE: # %bb.0: 81; SSE-NEXT: pcmpeqd %xmm0, %xmm0 82; SSE-NEXT: ret{{[l|q]}} 83; 84; AVX-LABEL: allones_v4f32: 85; AVX: # %bb.0: 86; AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 87; AVX-NEXT: ret{{[l|q]}} 88 ret <4 x float> <float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000> 89} 90 91define <32 x i8> @allones_v32i8() nounwind { 92; SSE-LABEL: allones_v32i8: 93; SSE: # %bb.0: 94; SSE-NEXT: pcmpeqd %xmm0, %xmm0 95; SSE-NEXT: pcmpeqd %xmm1, %xmm1 96; SSE-NEXT: ret{{[l|q]}} 97; 98; AVX1-LABEL: allones_v32i8: 99; AVX1: # %bb.0: 100; AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0 101; AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0 102; AVX1-NEXT: ret{{[l|q]}} 103; 104; AVX256-LABEL: allones_v32i8: 105; AVX256: # %bb.0: 106; AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 107; AVX256-NEXT: ret{{[l|q]}} 108 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> 109} 110 111define <16 x i16> @allones_v16i16() nounwind { 112; SSE-LABEL: allones_v16i16: 113; SSE: # %bb.0: 114; SSE-NEXT: pcmpeqd %xmm0, %xmm0 115; SSE-NEXT: pcmpeqd %xmm1, %xmm1 116; SSE-NEXT: ret{{[l|q]}} 117; 118; AVX1-LABEL: allones_v16i16: 119; AVX1: # %bb.0: 120; AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0 121; AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0 122; AVX1-NEXT: ret{{[l|q]}} 123; 124; AVX256-LABEL: allones_v16i16: 125; AVX256: # %bb.0: 126; AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 127; AVX256-NEXT: ret{{[l|q]}} 128 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> 129} 130 131define <8 x i32> @allones_v8i32() nounwind { 132; SSE-LABEL: allones_v8i32: 133; SSE: # %bb.0: 134; SSE-NEXT: pcmpeqd %xmm0, %xmm0 135; SSE-NEXT: pcmpeqd %xmm1, %xmm1 136; SSE-NEXT: ret{{[l|q]}} 137; 138; AVX1-LABEL: allones_v8i32: 139; AVX1: # %bb.0: 140; AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0 141; AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0 142; AVX1-NEXT: ret{{[l|q]}} 143; 144; AVX256-LABEL: allones_v8i32: 145; AVX256: # %bb.0: 146; AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 147; AVX256-NEXT: ret{{[l|q]}} 148 ret <8 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1> 149} 150 151define <4 x i64> @allones_v4i64() nounwind { 152; SSE-LABEL: allones_v4i64: 153; SSE: # %bb.0: 154; SSE-NEXT: pcmpeqd %xmm0, %xmm0 155; SSE-NEXT: pcmpeqd %xmm1, %xmm1 156; SSE-NEXT: ret{{[l|q]}} 157; 158; AVX1-LABEL: allones_v4i64: 159; AVX1: # %bb.0: 160; AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0 161; AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0 162; AVX1-NEXT: ret{{[l|q]}} 163; 164; AVX256-LABEL: allones_v4i64: 165; AVX256: # %bb.0: 166; AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 167; AVX256-NEXT: ret{{[l|q]}} 168 ret <4 x i64> <i64 -1, i64 -1, i64 -1, i64 -1> 169} 170 171define <4 x double> @allones_v4f64() nounwind { 172; SSE-LABEL: allones_v4f64: 173; SSE: # %bb.0: 174; SSE-NEXT: pcmpeqd %xmm0, %xmm0 175; SSE-NEXT: pcmpeqd %xmm1, %xmm1 176; SSE-NEXT: ret{{[l|q]}} 177; 178; AVX1-LABEL: allones_v4f64: 179; AVX1: # %bb.0: 180; AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0 181; AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0 182; AVX1-NEXT: ret{{[l|q]}} 183; 184; AVX256-LABEL: allones_v4f64: 185; AVX256: # %bb.0: 186; AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 187; AVX256-NEXT: ret{{[l|q]}} 188 ret <4 x double> <double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff> 189} 190 191define <4 x double> @allones_v4f64_optsize() nounwind optsize { 192; SSE-LABEL: allones_v4f64_optsize: 193; SSE: # %bb.0: 194; SSE-NEXT: pcmpeqd %xmm0, %xmm0 195; SSE-NEXT: pcmpeqd %xmm1, %xmm1 196; SSE-NEXT: ret{{[l|q]}} 197; 198; AVX1-LABEL: allones_v4f64_optsize: 199; AVX1: # %bb.0: 200; AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0 201; AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0 202; AVX1-NEXT: ret{{[l|q]}} 203; 204; AVX256-LABEL: allones_v4f64_optsize: 205; AVX256: # %bb.0: 206; AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 207; AVX256-NEXT: ret{{[l|q]}} 208 ret <4 x double> <double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff> 209} 210 211define <8 x float> @allones_v8f32() nounwind { 212; SSE-LABEL: allones_v8f32: 213; SSE: # %bb.0: 214; SSE-NEXT: pcmpeqd %xmm0, %xmm0 215; SSE-NEXT: pcmpeqd %xmm1, %xmm1 216; SSE-NEXT: ret{{[l|q]}} 217; 218; AVX1-LABEL: allones_v8f32: 219; AVX1: # %bb.0: 220; AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0 221; AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0 222; AVX1-NEXT: ret{{[l|q]}} 223; 224; AVX256-LABEL: allones_v8f32: 225; AVX256: # %bb.0: 226; AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 227; AVX256-NEXT: ret{{[l|q]}} 228 ret <8 x float> <float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000> 229} 230 231define <8 x float> @allones_v8f32_optsize() nounwind optsize { 232; SSE-LABEL: allones_v8f32_optsize: 233; SSE: # %bb.0: 234; SSE-NEXT: pcmpeqd %xmm0, %xmm0 235; SSE-NEXT: pcmpeqd %xmm1, %xmm1 236; SSE-NEXT: ret{{[l|q]}} 237; 238; AVX1-LABEL: allones_v8f32_optsize: 239; AVX1: # %bb.0: 240; AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0 241; AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0 242; AVX1-NEXT: ret{{[l|q]}} 243; 244; AVX256-LABEL: allones_v8f32_optsize: 245; AVX256: # %bb.0: 246; AVX256-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 247; AVX256-NEXT: ret{{[l|q]}} 248 ret <8 x float> <float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000> 249} 250 251define <64 x i8> @allones_v64i8() nounwind { 252; SSE-LABEL: allones_v64i8: 253; SSE: # %bb.0: 254; SSE-NEXT: pcmpeqd %xmm0, %xmm0 255; SSE-NEXT: pcmpeqd %xmm1, %xmm1 256; SSE-NEXT: pcmpeqd %xmm2, %xmm2 257; SSE-NEXT: pcmpeqd %xmm3, %xmm3 258; SSE-NEXT: ret{{[l|q]}} 259; 260; AVX1-LABEL: allones_v64i8: 261; AVX1: # %bb.0: 262; AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0 263; AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0 264; AVX1-NEXT: vmovaps %ymm0, %ymm1 265; AVX1-NEXT: ret{{[l|q]}} 266; 267; AVX2-LABEL: allones_v64i8: 268; AVX2: # %bb.0: 269; AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 270; AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 271; AVX2-NEXT: ret{{[l|q]}} 272; 273; AVX512-LABEL: allones_v64i8: 274; AVX512: # %bb.0: 275; AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 276; AVX512-NEXT: ret{{[l|q]}} 277 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> 278} 279 280define <32 x i16> @allones_v32i16() nounwind { 281; SSE-LABEL: allones_v32i16: 282; SSE: # %bb.0: 283; SSE-NEXT: pcmpeqd %xmm0, %xmm0 284; SSE-NEXT: pcmpeqd %xmm1, %xmm1 285; SSE-NEXT: pcmpeqd %xmm2, %xmm2 286; SSE-NEXT: pcmpeqd %xmm3, %xmm3 287; SSE-NEXT: ret{{[l|q]}} 288; 289; AVX1-LABEL: allones_v32i16: 290; AVX1: # %bb.0: 291; AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0 292; AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0 293; AVX1-NEXT: vmovaps %ymm0, %ymm1 294; AVX1-NEXT: ret{{[l|q]}} 295; 296; AVX2-LABEL: allones_v32i16: 297; AVX2: # %bb.0: 298; AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 299; AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 300; AVX2-NEXT: ret{{[l|q]}} 301; 302; AVX512-LABEL: allones_v32i16: 303; AVX512: # %bb.0: 304; AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 305; AVX512-NEXT: ret{{[l|q]}} 306 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> 307} 308 309define <16 x i32> @allones_v16i32() nounwind { 310; SSE-LABEL: allones_v16i32: 311; SSE: # %bb.0: 312; SSE-NEXT: pcmpeqd %xmm0, %xmm0 313; SSE-NEXT: pcmpeqd %xmm1, %xmm1 314; SSE-NEXT: pcmpeqd %xmm2, %xmm2 315; SSE-NEXT: pcmpeqd %xmm3, %xmm3 316; SSE-NEXT: ret{{[l|q]}} 317; 318; AVX1-LABEL: allones_v16i32: 319; AVX1: # %bb.0: 320; AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0 321; AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0 322; AVX1-NEXT: vmovaps %ymm0, %ymm1 323; AVX1-NEXT: ret{{[l|q]}} 324; 325; AVX2-LABEL: allones_v16i32: 326; AVX2: # %bb.0: 327; AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 328; AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 329; AVX2-NEXT: ret{{[l|q]}} 330; 331; AVX512-LABEL: allones_v16i32: 332; AVX512: # %bb.0: 333; AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 334; AVX512-NEXT: ret{{[l|q]}} 335 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> 336} 337 338define <8 x i64> @allones_v8i64() nounwind { 339; SSE-LABEL: allones_v8i64: 340; SSE: # %bb.0: 341; SSE-NEXT: pcmpeqd %xmm0, %xmm0 342; SSE-NEXT: pcmpeqd %xmm1, %xmm1 343; SSE-NEXT: pcmpeqd %xmm2, %xmm2 344; SSE-NEXT: pcmpeqd %xmm3, %xmm3 345; SSE-NEXT: ret{{[l|q]}} 346; 347; AVX1-LABEL: allones_v8i64: 348; AVX1: # %bb.0: 349; AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0 350; AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0 351; AVX1-NEXT: vmovaps %ymm0, %ymm1 352; AVX1-NEXT: ret{{[l|q]}} 353; 354; AVX2-LABEL: allones_v8i64: 355; AVX2: # %bb.0: 356; AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 357; AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 358; AVX2-NEXT: ret{{[l|q]}} 359; 360; AVX512-LABEL: allones_v8i64: 361; AVX512: # %bb.0: 362; AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 363; AVX512-NEXT: ret{{[l|q]}} 364 ret <8 x i64> <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1> 365} 366 367define <8 x double> @allones_v8f64() nounwind { 368; SSE-LABEL: allones_v8f64: 369; SSE: # %bb.0: 370; SSE-NEXT: pcmpeqd %xmm0, %xmm0 371; SSE-NEXT: pcmpeqd %xmm1, %xmm1 372; SSE-NEXT: pcmpeqd %xmm2, %xmm2 373; SSE-NEXT: pcmpeqd %xmm3, %xmm3 374; SSE-NEXT: ret{{[l|q]}} 375; 376; AVX1-LABEL: allones_v8f64: 377; AVX1: # %bb.0: 378; AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0 379; AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0 380; AVX1-NEXT: vmovaps %ymm0, %ymm1 381; AVX1-NEXT: ret{{[l|q]}} 382; 383; AVX2-LABEL: allones_v8f64: 384; AVX2: # %bb.0: 385; AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 386; AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 387; AVX2-NEXT: ret{{[l|q]}} 388; 389; AVX512-LABEL: allones_v8f64: 390; AVX512: # %bb.0: 391; AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 392; AVX512-NEXT: ret{{[l|q]}} 393 ret <8 x double> <double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff> 394} 395 396define <16 x float> @allones_v16f32() nounwind { 397; SSE-LABEL: allones_v16f32: 398; SSE: # %bb.0: 399; SSE-NEXT: pcmpeqd %xmm0, %xmm0 400; SSE-NEXT: pcmpeqd %xmm1, %xmm1 401; SSE-NEXT: pcmpeqd %xmm2, %xmm2 402; SSE-NEXT: pcmpeqd %xmm3, %xmm3 403; SSE-NEXT: ret{{[l|q]}} 404; 405; AVX1-LABEL: allones_v16f32: 406; AVX1: # %bb.0: 407; AVX1-NEXT: vxorps %xmm0, %xmm0, %xmm0 408; AVX1-NEXT: vcmptrueps %ymm0, %ymm0, %ymm0 409; AVX1-NEXT: vmovaps %ymm0, %ymm1 410; AVX1-NEXT: ret{{[l|q]}} 411; 412; AVX2-LABEL: allones_v16f32: 413; AVX2: # %bb.0: 414; AVX2-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0 415; AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 416; AVX2-NEXT: ret{{[l|q]}} 417; 418; AVX512-LABEL: allones_v16f32: 419; AVX512: # %bb.0: 420; AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 421; AVX512-NEXT: ret{{[l|q]}} 422 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> 423} 424