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